Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sbin/mount Make command line arguments -r and -w actually ov...



details:   https://anonhg.NetBSD.org/src/rev/7c4b206817b1
branches:  trunk
changeset: 955968:7c4b206817b1
user:      mlelstv <mlelstv%NetBSD.org@localhost>
date:      Sun Oct 18 10:57:30 2020 +0000

description:
Make command line arguments -r and -w actually override defaults from fstab,
previously -w would only cancel a preceeding -r.

No longer strip -o rw.

diffstat:

 sbin/mount/mount.c |  32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diffs (109 lines):

diff -r f06fb82ab2fa -r 7c4b206817b1 sbin/mount/mount.c
--- a/sbin/mount/mount.c        Sun Oct 18 10:44:25 2020 +0000
+++ b/sbin/mount/mount.c        Sun Oct 18 10:57:30 2020 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: mount.c,v 1.102 2016/10/09 21:03:43 christos Exp $     */
+/*     $NetBSD: mount.c,v 1.103 2020/10/18 10:57:30 mlelstv Exp $      */
 
 /*
  * Copyright (c) 1980, 1989, 1993, 1994
@@ -39,7 +39,7 @@
 #if 0
 static char sccsid[] = "@(#)mount.c    8.25 (Berkeley) 5/8/95";
 #else
-__RCSID("$NetBSD: mount.c,v 1.102 2016/10/09 21:03:43 christos Exp $");
+__RCSID("$NetBSD: mount.c,v 1.103 2020/10/18 10:57:30 mlelstv Exp $");
 #endif
 #endif /* not lint */
 
@@ -94,6 +94,11 @@
        __MNT_FLAGS
 };
 
+#define FLG_UPDATE     1
+#define FLG_RDONLY     2
+#define FLG_RDWRITE    4
+#define FLG_FORCE      8
+
 static const char ffs_fstype[] = "ffs";
 
 int
@@ -128,14 +133,14 @@
                        debug = 1;
                        break;
                case 'f':
-                       init_flags |= MNT_FORCE;
+                       init_flags |= FLG_FORCE;
                        break;
                case 'o':
                        if (*optarg)
                                catopt(&options, optarg);
                        break;
                case 'r':
-                       init_flags |= MNT_RDONLY;
+                       init_flags |= FLG_RDONLY;
                        break;
                case 't':
                        if (vfslist != NULL)
@@ -145,13 +150,13 @@
                        vfstype = optarg;
                        break;
                case 'u':
-                       init_flags |= MNT_UPDATE;
+                       init_flags |= FLG_UPDATE;
                        break;
                case 'v':
                        verbose++;
                        break;
                case 'w':
-                       init_flags &= ~MNT_RDONLY;
+                       init_flags |= FLG_RDWRITE;
                        break;
                case '?':
                default:
@@ -218,7 +223,7 @@
                 */
                canonical_path = realpath(*argv, canonical_path_buf);
 
-               if (init_flags & MNT_UPDATE) {
+               if (init_flags & FLG_UPDATE) {
                        /*
                         * Try looking up the canonical path first,
                         * then try exactly what the user entered.
@@ -395,7 +400,7 @@
                catopt(&optbuf, "rw");
 
        if (getargs == 0 && strcmp(name, "/") == 0 && !hasopt(optbuf, "union"))
-               flags |= MNT_UPDATE;
+               flags |= FLG_UPDATE;
        else if (skipmounted) {
                if ((numfs = getmntinfo(&sfp, MNT_WAIT)) == 0) {
                        warn("getmntinfo");
@@ -431,12 +436,15 @@
                        }
                }
        }
-       if (flags & MNT_FORCE)
+       if (flags & FLG_FORCE)
                catopt(&optbuf, "force");
-       if (flags & MNT_RDONLY)
+       if (flags & FLG_RDONLY)
                catopt(&optbuf, "ro");
+       /* make -w override -r */
+       if (flags & FLG_RDWRITE)
+               catopt(&optbuf, "rw");
 
-       if (flags & MNT_UPDATE) {
+       if (flags & FLG_UPDATE) {
                catopt(&optbuf, "update");
                /* Figure out the fstype only if we defaulted to ffs */
                if (vfstype == ffs_fstype && statvfs(name, &sf) != -1)
@@ -690,7 +698,7 @@
                                        *p = '\0';
                                        argv[argc++] = p+1;
                                }
-                       } else if (strcmp(p, "rw") != 0) {
+                       } else {
                                argv[argc++] = "-o";
                                argv[argc++] = p;
                        }



Home | Main Index | Thread Index | Old Index