aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiklos Szeredi <miklos@szeredi.hu>2006-08-18 19:26:23 +0000
committerMiklos Szeredi <miklos@szeredi.hu>2006-08-18 19:26:23 +0000
commit543087d48121b8628e875108aaa190af88dc4496 (patch)
tree0b7ca6f0cca2e9771ecb0e87f8dff87e188e3a94
parent3ded1a3176bb803e016e79d0e6db5e1f3ea30473 (diff)
downloadlibfuse-543087d48121b8628e875108aaa190af88dc4496.tar.gz
fusermount improvement
-rw-r--r--ChangeLog5
-rw-r--r--util/fusermount.c21
2 files changed, 20 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ddf026..a549ab2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,11 @@
the kernel tree) the statfs method will receive the path within
the filesystem on which the stat(v)fs syscall was called.
+ * fusermount: try to modprobe fuse module if invoked by root and
+ unable to open device. This is needed with udev, since the device
+ node will be created only when the module is inserted, hence
+ module autoloading won't work. Reported by Szakacsits Szabolcs
+
2006-07-30 Miklos Szeredi <miklos@szeredi.hu>
* fusermount: if selinux is active, restore the original file's
diff --git a/util/fusermount.c b/util/fusermount.c
index 6d3ef97..89ecb2c 100644
--- a/util/fusermount.c
+++ b/util/fusermount.c
@@ -841,14 +841,23 @@ static int try_open_fuse_device(char **devp)
static int open_fuse_device(char **devp)
{
- int fd = try_open_fuse_device(devp);
- if (fd >= 0)
+ int fd;
+
+ if (getuid() == 0) {
+ fd = try_open_fuse_device(devp);
+ if (fd >= -1)
+ return fd;
+
+ system("modprobe fuse");
+ }
+
+ fd = try_open_fuse_device(devp);
+ if (fd >= -1)
return fd;
- if (fd == -2)
- fprintf(stderr,
- "%s: fuse device not found, try 'modprobe fuse' first\n",
- progname);
+ fprintf(stderr, "%s: fuse device not found, try 'modprobe fuse' first\n",
+ progname);
+
return -1;
}