aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorGravatar Miklos Szeredi <miklos@szeredi.hu>2004-11-29 16:53:44 +0000
committerGravatar Miklos Szeredi <miklos@szeredi.hu>2004-11-29 16:53:44 +0000
commit2defe5eadb46dd64ee40ced067e9da235218e2db (patch)
treea77314456e4ce5713983153e8f4087893eab9f65 /util
parentfb28c5ebe1efdc3e3b125aad1a19f1a240519345 (diff)
fixes
Diffstat (limited to 'util')
-rw-r--r--util/fusermount.c23
1 files changed, 12 insertions, 11 deletions
diff --git a/util/fusermount.c b/util/fusermount.c
index a7d26ed..e3d5b29 100644
--- a/util/fusermount.c
+++ b/util/fusermount.c
@@ -614,7 +614,9 @@ static int try_open(const char *dev, char **devp, int silent)
close(fd);
fd = -1;
}
- } else if (!silent) {
+ } else if (errno == ENODEV)
+ return -2;
+ else if (!silent) {
fprintf(stderr, "%s: failed to open %s: %s\n", progname, dev,
strerror(errno));
}
@@ -624,7 +626,7 @@ static int try_open(const char *dev, char **devp, int silent)
#define FUSE_TMP_DIRNAME "/tmp/.fuse_devXXXXXX"
#define FUSE_TMP_DEVNAME "/fuse"
-static int try_open_new_temp(unsigned devnum, char **devp)
+static int try_open_new_temp(unsigned devnum, char **devp, int silent)
{
int res;
int fd;
@@ -643,7 +645,7 @@ static int try_open_new_temp(unsigned devnum, char **devp)
rmdir(dirname);
return -1;
}
- fd = try_open(filename, devp, 0);
+ fd = try_open(filename, devp, silent);
unlink(filename);
rmdir(dirname);
return fd;
@@ -662,14 +664,13 @@ static int try_open_new(char **devp, int final)
if (fd == -1) {
if (!final)
return -2;
- fd = try_open(FUSE_DEV, devp, 0);
- if (fd != -1)
- return fd;
- if (errno == ENODEV)
+ fd = try_open(FUSE_DEV, devp, 1);
+ if (fd == -2)
return -2;
- fprintf(stderr, "%s: failed to open %s: %s\n", progname,
- FUSE_DEV, strerror(errno));
- return -1;
+ fd = try_open_new_temp(FUSE_MAJOR << 8 | FUSE_MINOR, devp, 1);
+ if (fd == -2)
+ return -2;
+ return try_open(FUSE_DEV, devp, 0);
}
res = read(fd, buf, sizeof(buf)-1);
@@ -692,7 +693,7 @@ static int try_open_new(char **devp, int final)
res = stat(dev, &stbuf);
if (res == -1) {
if (major == FUSE_MAJOR && minor == FUSE_MINOR)
- return try_open_new_temp(devnum, devp);
+ return try_open_new_temp(devnum, devp, 0);
else {
fprintf(stderr, "%s: failed to open %s: %s\n", progname,
dev, strerror(errno));