Index: head/sysutils/fusefs-libs/files/patch-configure.ac =================================================================== --- head/sysutils/fusefs-libs/files/patch-configure.ac (revision 404906) +++ head/sysutils/fusefs-libs/files/patch-configure.ac (revision 404907) @@ -1,22 +1,10 @@ --- configure.ac.orig 2015-05-22 09:24:02 UTC +++ configure.ac @@ -3,7 +3,7 @@ AC_INIT(fuse, 2.9.4) AC_PREREQ(2.59d) AC_CONFIG_MACRO_DIR([m4]) AC_CANONICAL_TARGET -AM_INIT_AUTOMAKE +AM_INIT_AUTOMAKE([subdir-objects]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) AC_CONFIG_HEADERS(include/config.h) - ---- configure.ac.orig 2015-05-22 09:24:02 UTC -+++ configure.ac -@@ -3,7 +3,7 @@ AC_INIT(fuse, 2.9.4) - AC_PREREQ(2.59d) - AC_CONFIG_MACRO_DIR([m4]) - AC_CANONICAL_TARGET --AM_INIT_AUTOMAKE -+AM_INIT_AUTOMAKE([subdir-objects]) - m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES(yes)]) - AC_CONFIG_HEADERS(include/config.h) - Index: head/sysutils/fusefs-libs/files/patch-lib_mount__bsd.c =================================================================== --- head/sysutils/fusefs-libs/files/patch-lib_mount__bsd.c (revision 404906) +++ head/sysutils/fusefs-libs/files/patch-lib_mount__bsd.c (revision 404907) @@ -1,154 +1,77 @@ --- lib/mount_bsd.c.orig 2015-05-22 09:24:02 UTC +++ lib/mount_bsd.c @@ -10,6 +10,8 @@ #include "fuse_misc.h" #include "fuse_opt.h" +#include +#include #include #include #include @@ -78,6 +80,7 @@ static const struct fuse_opt fuse_mount_ FUSE_DUAL_OPT_KEY("ro", KEY_KERN), FUSE_DUAL_OPT_KEY("rw", KEY_KERN), FUSE_DUAL_OPT_KEY("auto", KEY_KERN), + FUSE_DUAL_OPT_KEY("automounted", KEY_KERN), /* options supported under both Linux and FBSD */ FUSE_DUAL_OPT_KEY("allow_other", KEY_KERN), FUSE_DUAL_OPT_KEY("default_permissions",KEY_KERN), @@ -192,56 +195,12 @@ void fuse_unmount_compat22(const char *m free(umount_cmd); } -static void do_unmount(char *dev, int fd) -{ - char device_path[SPECNAMELEN + 12]; - const char *argv[4]; - const char umount_cmd[] = "/sbin/umount"; - pid_t pid; - - snprintf(device_path, SPECNAMELEN + 12, _PATH_DEV "%s", dev); - - argv[0] = umount_cmd; - argv[1] = "-f"; - argv[2] = device_path; - argv[3] = NULL; - - pid = fork(); - - if (pid == -1) - return; - - if (pid == 0) { - close(fd); - execvp(umount_cmd, (char **)argv); - exit(1); - } - - waitpid(pid, NULL, 0); -} - void fuse_kern_unmount(const char *mountpoint, int fd) { char *ep, dev[128]; struct stat sbuf; - (void)mountpoint; - - if (fstat(fd, &sbuf) == -1) - goto out; - - devname_r(sbuf.st_rdev, S_IFCHR, dev, 128); - - if (strncmp(dev, "fuse", 4)) - goto out; - - strtol(dev + 4, &ep, 10); - if (*ep != '\0') - goto out; - - do_unmount(dev, fd); - -out: + unmount(mountpoint, MNT_FORCE); close(fd); } ---- lib/mount_bsd.c.orig 2015-05-22 09:24:02 UTC -+++ lib/mount_bsd.c -@@ -10,6 +10,8 @@ - #include "fuse_misc.h" - #include "fuse_opt.h" - -+#include -+#include - #include - #include - #include -@@ -78,6 +80,7 @@ static const struct fuse_opt fuse_mount_ - FUSE_DUAL_OPT_KEY("ro", KEY_KERN), - FUSE_DUAL_OPT_KEY("rw", KEY_KERN), - FUSE_DUAL_OPT_KEY("auto", KEY_KERN), -+ FUSE_DUAL_OPT_KEY("automounted", KEY_KERN), - /* options supported under both Linux and FBSD */ - FUSE_DUAL_OPT_KEY("allow_other", KEY_KERN), - FUSE_DUAL_OPT_KEY("default_permissions",KEY_KERN), -@@ -192,56 +195,12 @@ void fuse_unmount_compat22(const char *m - free(umount_cmd); - } - --static void do_unmount(char *dev, int fd) --{ -- char device_path[SPECNAMELEN + 12]; -- const char *argv[4]; -- const char umount_cmd[] = "/sbin/umount"; -- pid_t pid; -- -- snprintf(device_path, SPECNAMELEN + 12, _PATH_DEV "%s", dev); -- -- argv[0] = umount_cmd; -- argv[1] = "-f"; -- argv[2] = device_path; -- argv[3] = NULL; -- -- pid = fork(); -- -- if (pid == -1) -- return; -- -- if (pid == 0) { -- close(fd); -- execvp(umount_cmd, (char **)argv); -- exit(1); -- } -- -- waitpid(pid, NULL, 0); --} -- - void fuse_kern_unmount(const char *mountpoint, int fd) - { - char *ep, dev[128]; - struct stat sbuf; - -- (void)mountpoint; -- -- if (fstat(fd, &sbuf) == -1) -- goto out; -- -- devname_r(sbuf.st_rdev, S_IFCHR, dev, 128); -- -- if (strncmp(dev, "fuse", 4)) -- goto out; -- -- strtol(dev + 4, &ep, 10); -- if (*ep != '\0') -- goto out; -- -- do_unmount(dev, fd); -- --out: -+ unmount(mountpoint, MNT_FORCE); - close(fd); - } - Index: head/sysutils/fusefs-libs/files/patch-lib_mount__util.c =================================================================== --- head/sysutils/fusefs-libs/files/patch-lib_mount__util.c (revision 404906) +++ head/sysutils/fusefs-libs/files/patch-lib_mount__util.c (revision 404907) @@ -1,46 +1,23 @@ --- lib/mount_util.c.orig 2015-05-22 09:24:02 UTC +++ lib/mount_util.c @@ -344,20 +344,3 @@ int fuse_mnt_check_empty(const char *pro } return 0; } - -int fuse_mnt_check_fuseblk(void) -{ - char buf[256]; - FILE *f = fopen("/proc/filesystems", "r"); - if (!f) - return 1; - - while (fgets(buf, sizeof(buf), f)) - if (strstr(buf, "fuseblk\n")) { - fclose(f); - return 1; - } - - fclose(f); - return 0; -} ---- lib/mount_util.c.orig 2015-05-22 09:24:02 UTC -+++ lib/mount_util.c -@@ -344,20 +344,3 @@ int fuse_mnt_check_empty(const char *pro - } - return 0; - } -- --int fuse_mnt_check_fuseblk(void) --{ -- char buf[256]; -- FILE *f = fopen("/proc/filesystems", "r"); -- if (!f) -- return 1; -- -- while (fgets(buf, sizeof(buf), f)) -- if (strstr(buf, "fuseblk\n")) { -- fclose(f); -- return 1; -- } -- -- fclose(f); -- return 0; --} Index: head/sysutils/fusefs-libs/files/patch-lib_mount__util.h =================================================================== --- head/sysutils/fusefs-libs/files/patch-lib_mount__util.h (revision 404906) +++ head/sysutils/fusefs-libs/files/patch-lib_mount__util.h (revision 404907) @@ -1,14 +1,7 @@ --- lib/mount_util.h.orig 2015-05-22 09:24:02 UTC +++ lib/mount_util.h @@ -16,4 +16,3 @@ int fuse_mnt_umount(const char *progname char *fuse_mnt_resolve_path(const char *progname, const char *orig); int fuse_mnt_check_empty(const char *progname, const char *mnt, mode_t rootmode, off_t rootsize); -int fuse_mnt_check_fuseblk(void); ---- lib/mount_util.h.orig 2015-05-22 09:24:02 UTC -+++ lib/mount_util.h -@@ -16,4 +16,3 @@ int fuse_mnt_umount(const char *progname - char *fuse_mnt_resolve_path(const char *progname, const char *orig); - int fuse_mnt_check_empty(const char *progname, const char *mnt, - mode_t rootmode, off_t rootsize); --int fuse_mnt_check_fuseblk(void);