From a72a0fe8d111c9fa2b45fb288d363c99c72e7fb5 Mon Sep 17 00:00:00 2001 From: lace <> Date: Mon, 26 Dec 2005 07:54:00 +0000 Subject: [PATCH] Provide automatic "/dev/fuse" mknod(2)ding for ENOENT entries. --- src/client/fuse/fusermount.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/client/fuse/fusermount.c b/src/client/fuse/fusermount.c index d7dee7e..c7e45f9 100644 --- a/src/client/fuse/fusermount.c +++ b/src/client/fuse/fusermount.c @@ -41,6 +41,9 @@ /* Captive */ #include +#include +#include +#include #define FUSE_COMMFD_ENV "_FUSE_COMMFD" @@ -779,6 +782,15 @@ static int check_perm(const char **mntp, struct stat *stbuf, int *currdir_fd, static int try_open(const char *dev, char **devp, int silent) { int fd = open(dev, O_RDWR); + /* Captive */ + if (fd == -1 && errno == ENOENT && !strcmp(dev, FUSE_DEV_NEW) + && !mknod(dev, 0660 | S_IFCHR, MKDEV(MISC_MAJOR, 229))) { + struct group *group; + + fprintf(stderr, "%s: Notice: Created FUSE device: %s\n", progname, dev); + if ((group = getgrnam("fuse")) && !chown(dev, 0, group->gr_gid)) + fd = open(dev, O_RDWR); + } if (fd != -1) { *devp = strdup(dev); if (*devp == NULL) { -- 1.8.3.1