From: lace <> Date: Mon, 26 Dec 2005 07:54:00 +0000 (+0000) Subject: Provide automatic "/dev/fuse" mknod(2)ding for ENOENT entries. X-Git-Tag: captive-1_1_6~33 X-Git-Url: http://git.jankratochvil.net/?p=captive.git;a=commitdiff_plain;h=a72a0fe8d111c9fa2b45fb288d363c99c72e7fb5 Provide automatic "/dev/fuse" mknod(2)ding for ENOENT entries. --- 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) {