diff options
author | Miklos Szeredi <miklos@szeredi.hu> | 2001-11-06 15:07:17 +0000 |
---|---|---|
committer | Miklos Szeredi <miklos@szeredi.hu> | 2001-11-06 15:07:17 +0000 |
commit | 2df1c04f30802df9a23a19e22042884430c429d2 (patch) | |
tree | b1175acab6d7d4673b5d59f9d3b6e7c49532f195 /lib/mount.c | |
parent | 21ed360572b816a11e7a37824907105882686446 (diff) | |
download | libfuse-2df1c04f30802df9a23a19e22042884430c429d2.tar.gz |
cleanups
Diffstat (limited to 'lib/mount.c')
-rw-r--r-- | lib/mount.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/lib/mount.c b/lib/mount.c index 48d9d45..98d9e59 100644 --- a/lib/mount.c +++ b/lib/mount.c @@ -16,13 +16,15 @@ #include <sys/mount.h> #include <mntent.h> -static int do_mount(const char *dev, const char *dir, const char *type, int fd) +static int do_mount(const char *dev, const char *dir, const char *type, + mode_t rootmode, int fd) { int res; struct fuse_mount_data data; - data.version = FUSE_MOUNT_VERSION; + data.version = FUSE_KERNEL_VERSION; data.fd = fd; + data.rootmode = rootmode; res = mount(dev, dir, type, MS_MGC_VAL | MS_NOSUID | MS_NODEV, &data); if(res == -1) { @@ -100,7 +102,7 @@ int fuse_mount(struct fuse *f, const char *dir) const char *dev = FUSE_DEV; const char *type = "fuse"; - if(f->dir != NULL) + if(f->mnt != NULL) return 0; f->fd = open(dev, O_RDWR); @@ -109,12 +111,12 @@ int fuse_mount(struct fuse *f, const char *dir) return -1; } - res = do_mount(dev, dir, type, f->fd); + res = do_mount(dev, dir, type, f->rootmode, f->fd); if(res == -1) return -1; add_mntent(dev, dir, type); - f->dir = g_strdup(dir); + f->mnt = g_strdup(dir); return 0; } @@ -123,20 +125,20 @@ int fuse_unmount(struct fuse *f) { int res; - if(f->dir == NULL) + if(f->mnt == NULL) return 0; close(f->fd); f->fd = -1; - res = umount(f->dir); + res = umount(f->mnt); if(res == -1) perror("umount failed"); else - remove_mntent(f->dir); + remove_mntent(f->mnt); - g_free(f->dir); - f->dir = NULL; + g_free(f->mnt); + f->mnt = NULL; return res; } |