tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
patch for fusermount: Not enough command line arguments
Trying to unmount a filesystem...
$ mount | grep puffs
/dev/puffs on /home/reed/hammer/fusehammer/mnt type puffs|refuse:hammerdisk.raw
(nosuid, nodev, mounted by reed)
$ fusermount -u /home/reed/hammer/fusehammer/mnt
fusermount: Not enough command line arguments
Usage: fusermount [-c] [-d name] [-h] [-p] [-u] [-x] mountpoint...
-c use kernel cache
-d name use name in mount information
-h print help information
-p check file permissions
-u unmount mount point(s)
-x allow access to mortal (non-root) users
Even man page suggests is correct syntax:
SYNOPSIS
fusermount [-chpVx] [-d name] refuseoptions
fusermount -u mountpoint(s)
So I looked at code and added debugging:
if (optind >= argc - 2) {
printf("optind = %d, argc = %d\n", optind, argc);
warnx("Not enough command line arguments");
usage(*argv);
exit(EXIT_FAILURE);
}
optind = 2, argc = 3
optind is the index for next argument.
So my workaround is to add two more junk arguments to the command line:
$ fusermount -u /home/reed/hammer/fusehammer/mnt JUNK1 JUNK2
fusermount: can't unmount `JUNK1': No such file or directory
fusermount: can't unmount `JUNK2': No such file or directory
Okay if I commit the following?
Index: fusermount.c
===================================================================
RCS file: /cvsroot/src/usr.sbin/fusermount/fusermount.c,v
retrieving revision 1.3
diff -u -r1.3 fusermount.c
--- fusermount.c 21 Jul 2008 13:36:58 -0000 1.3
+++ fusermount.c 16 Apr 2009 14:48:39 -0000
@@ -134,7 +134,7 @@
exit(EXIT_FAILURE);
}
}
- if (optind >= argc - 2) {
+ if (action != ActionUnmount && optind >= argc - 2) {
warnx("Not enough command line arguments");
usage(*argv);
exit(EXIT_FAILURE);
(By the way if you attempt to unmount something already unmounted you get
"Operation not permitted".)
Home |
Main Index |
Thread Index |
Old Index