mirror of
https://git.freebsd.org/ports.git
synced 2025-06-17 02:30:44 -04:00
- Pass maintainership to submitter The SourceForge mirror has gone due to the project migrating to GitHub. The only changes made to the port were to build the package from the sources now provided from the GitHub releases. Due to slight changes to the build process (adding missing dependency declarations, generating a configure script ourselves, new master site), and due to the fact there are many packages dependent on this port, the PORTREVISION has been incremented just in case there are any incompatibilities even though the version has allegedly not been changed. PR: 205620 Submitted by: Brendan Molloy
154 lines
3.1 KiB
C
154 lines
3.1 KiB
C
--- 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 <sys/param.h>
|
|
+#include <sys/mount.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/wait.h>
|
|
#include <sys/sysctl.h>
|
|
@@ -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 <sys/param.h>
|
|
+#include <sys/mount.h>
|
|
#include <sys/stat.h>
|
|
#include <sys/wait.h>
|
|
#include <sys/sysctl.h>
|
|
@@ -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);
|
|
}
|
|
|