mount, umount: Implement the '-F' option to specify an alternate fstab file.
authorYONETANI Tomokazu <y0netan1@dragonflybsd.org>
Sat, 16 Apr 2011 08:02:49 +0000 (17:02 +0900)
committerYONETANI Tomokazu <y0netan1@dragonflybsd.org>
Sat, 16 Apr 2011 08:44:06 +0000 (17:44 +0900)
This also fixes jail_${jail}_fstab option in /etc/rc.d/jail .

Taken-from: FreeBSD (r113220 by mdodd@freebsd.org)

sbin/mount/mount.8
sbin/mount/mount.c
sbin/umount/umount.8
sbin/umount/umount.c

index db89e4d..438fc77 100644 (file)
@@ -42,6 +42,7 @@
 .Sh SYNOPSIS
 .Nm
 .Op Fl adfpruvw
+.Op Fl F Ar fstab
 .Op Fl o Ar options
 .Op Fl t Ar type
 .Nm
@@ -95,6 +96,10 @@ flag to
 determine what the
 .Nm
 command is trying to do.
+.It Fl F Ar fstab
+Specify the
+.Pa fstab
+file to use.
 .It Fl f
 Forces the revocation of write access when trying to downgrade
 a filesystem mount status from read-write to read-only.
@@ -358,6 +363,13 @@ Verbose mode.
 .It Fl w
 The file system object is to be read and write.
 .El
+.Sh ENVIRONMENT
+.Bl -tag -width PATH_FSTAB
+.It Pa PATH_FSTAB
+If the environment variable
+.Pa PATH_FSTAB
+is set all operations are performed against the specified file.
+.El
 .Sh FILES
 .Bl -tag -width /etc/fstab -compact
 .It Pa /etc/fstab
index f606d6e..62764a2 100644 (file)
@@ -106,7 +106,7 @@ main(int argc, char **argv)
        options = NULL;
        vfslist = NULL;
        vfstype = "ufs";
-       while ((ch = getopt(argc, argv, "adfo:prwt:uv")) != -1)
+       while ((ch = getopt(argc, argv, "adF:fo:prwt:uv")) != -1)
                switch (ch) {
                case 'a':
                        all = 1;
@@ -114,6 +114,9 @@ main(int argc, char **argv)
                case 'd':
                        debug = 1;
                        break;
+               case 'F':
+                       setfstab(optarg);
+                       break;
                case 'f':
                        init_flags |= MNT_FORCE;
                        break;
@@ -651,7 +654,7 @@ usage(void)
 {
 
        fprintf(stderr, "%s\n%s\n%s\n",
-"usage: mount [-adfpruvw] [-o options] [-t type]",
+"usage: mount [-adfpruvw] [ -F fstab] [-o options] [-t type]",
 "       mount [-dfpruvw] {special | node}",
 "       mount [-dfpruvw] [-o options] [-t type] special node");
        exit(1);
index 3fee748..d853472 100644 (file)
@@ -45,6 +45,7 @@
 .Ar special \&| node
 .Nm
 .Fl a | A
+.Op Fl F Ar fstab
 .Op Fl fv
 .Op Fl h Ar host
 .Op Fl t Ar type
@@ -75,6 +76,10 @@ are unmounted.
 .It Fl A
 All the currently mounted filesystems except
 the root are unmounted.
+.It Fl F Ar fstab
+Specify the
+.Pa fstab
+file to use.
 .It Fl f
 The filesystem is forcibly unmounted.
 Active special devices continue to work,
@@ -117,6 +122,13 @@ file.
 Verbose, additional information is printed out as each filesystem
 is unmounted.
 .El
+.Sh ENVIRONMENT
+.Bl -tag -width PATH_FSTAB
+.It Pa PATH_FSTAB
+If the environment variable
+.Pa PATH_FSTAB
+is set all operations are performed against the specified file.
+.El
 .Sh FILES
 .Bl -tag -width /etc/fstab -compact
 .It Pa /etc/fstab
index b2d8e5e..9dc3bc7 100644 (file)
@@ -88,7 +88,7 @@ main(int argc, char *argv[])
        struct addrinfo hints;
 
        all = errs = 0;
-       while ((ch = getopt(argc, argv, "Aafh:t:v")) != -1) {
+       while ((ch = getopt(argc, argv, "AaF:fh:t:v")) != -1) {
                switch (ch) {
                case 'A':
                        all = 2;
@@ -96,6 +96,9 @@ main(int argc, char *argv[])
                case 'a':
                        all = 1;
                        break;
+               case 'F':
+                       setfstab(optarg);
+                       break;
                case 'f':
                        fflag = MNT_FORCE;
                        break;
@@ -173,7 +176,7 @@ main(int argc, char *argv[])
                break;
        case 1:
                if (setfsent() == 0)
-                       err(1, "%s", _PATH_FSTAB);
+                       err(1, "%s", getfstab());
                errs = umountall(typelist);
                break;
        case 0:
@@ -746,6 +749,6 @@ usage(void)
 
        fprintf(stderr, "%s\n%s\n",
            "usage: umount [-fv] special | node",
-           "       umount -a | -A [-fv] [-h host] [-t type]");
+           "       umount -a | -A [ -F fstab] [-fv] [-h host] [-t type]");
        exit(1);
 }