aboutsummaryrefslogtreecommitdiff
path: root/lib/helper.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/helper.c')
-rw-r--r--lib/helper.c44
1 files changed, 21 insertions, 23 deletions
diff --git a/lib/helper.c b/lib/helper.c
index cd1a54b..7ee767b 100644
--- a/lib/helper.c
+++ b/lib/helper.c
@@ -227,30 +227,32 @@ int fuse_daemonize(int foreground)
return 0;
}
+
static struct fuse *fuse_setup(int argc, char *argv[],
- const struct fuse_operations *op, size_t op_size,
- char **mountpoint, int *multithreaded, void *user_data)
+ const struct fuse_operations *op, size_t op_size,
+ int *multithreaded, void *user_data)
{
struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
- struct fuse_chan *ch;
struct fuse *fuse;
+ char *mountpoint;
int foreground;
int res;
- res = fuse_parse_cmdline(&args, mountpoint, multithreaded, &foreground);
+ res = fuse_parse_cmdline(&args, &mountpoint, multithreaded, &foreground);
if (res == -1)
return NULL;
- ch = fuse_mount(*mountpoint, &args);
- if (!ch) {
+ fuse = fuse_new(&args, op, op_size, user_data);
+ if (fuse == NULL) {
fuse_opt_free_args(&args);
- goto err_free;
+ free(mountpoint);
+ return NULL;
}
- fuse = fuse_new(ch, &args, op, op_size, user_data);
- fuse_opt_free_args(&args);
- if (fuse == NULL)
- goto err_unmount;
+ res = fuse_mount(fuse, mountpoint);
+ free(mountpoint);
+ if (res != 0)
+ goto err_out1;
res = fuse_daemonize(foreground);
if (res == -1)
@@ -263,33 +265,29 @@ static struct fuse *fuse_setup(int argc, char *argv[],
return fuse;
err_unmount:
- fuse_unmount(*mountpoint, ch);
- if (fuse)
- fuse_destroy(fuse);
-err_free:
- free(*mountpoint);
+ fuse_unmount(fuse);
+err_out1:
+ fuse_destroy(fuse);
+ fuse_opt_free_args(&args);
return NULL;
}
-static void fuse_teardown(struct fuse *fuse, char *mountpoint)
+static void fuse_teardown(struct fuse *fuse)
{
struct fuse_session *se = fuse_get_session(fuse);
- struct fuse_chan *ch = fuse_session_chan(se);
fuse_remove_signal_handlers(se);
- fuse_unmount(mountpoint, ch);
+ fuse_unmount(fuse);
fuse_destroy(fuse);
- free(mountpoint);
}
int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
size_t op_size, void *user_data)
{
struct fuse *fuse;
- char *mountpoint;
int multithreaded;
int res;
- fuse = fuse_setup(argc, argv, op, op_size, &mountpoint,
+ fuse = fuse_setup(argc, argv, op, op_size,
&multithreaded, user_data);
if (fuse == NULL)
return 1;
@@ -299,7 +297,7 @@ int fuse_main_real(int argc, char *argv[], const struct fuse_operations *op,
else
res = fuse_loop(fuse);
- fuse_teardown(fuse, mountpoint);
+ fuse_teardown(fuse);
if (res == -1)
return 1;