From 5256cc2152c45eab5419bed56db5a9d5e09e7543 Mon Sep 17 00:00:00 2001 From: Juli Mallett Date: Sat, 10 Jun 2006 01:37:00 +0000 Subject: [PATCH] Rather than using specified_ro to parse the options list an extra time, and keeping a flag to check whether we actually wanted to mount the filesystem readonly, setup the options list so that we start off by assuming rw is what's desired and let later flags change that. --- sbin/mount/mount.c | 38 ++++++-------------------------------- 1 file changed, 6 insertions(+), 32 deletions(-) diff --git a/sbin/mount/mount.c b/sbin/mount/mount.c index e1c4e8a759c1..254d4e81b146 100644 --- a/sbin/mount/mount.c +++ b/sbin/mount/mount.c @@ -184,26 +184,6 @@ exec_mountprog(const char *name, const char *execname, return (0); } -static -int specified_ro(const char *arg) -{ - char *optbuf, *opt; - int ret = 0; - - optbuf = strdup(arg); - if (optbuf == NULL) - err(1, NULL); - - for (opt = optbuf; (opt = strtok(opt, ",")) != NULL; opt = NULL) { - if (strcmp(opt, "ro") == 0) { - ret = 1; - break; - } - } - free(optbuf); - return (ret); -} - int main(int argc, char *argv[]) { @@ -212,12 +192,14 @@ main(int argc, char *argv[]) struct statfs *mntbuf; FILE *mountdfp; pid_t pid; - int all, ch, i, init_flags, mntsize, rval, have_fstab, ro; + int all, ch, i, init_flags, mntsize, rval, have_fstab; char *cp, *ep, *options; + options = strdup("noro"); + if (options == NULL) + errx(1, "malloc failed"); + all = init_flags = 0; - ro = 0; - options = NULL; vfslist = NULL; vfstype = "ufs"; while ((ch = getopt(argc, argv, "adF:fo:prwt:uv")) != -1) @@ -235,11 +217,7 @@ main(int argc, char *argv[]) init_flags |= MNT_FORCE; break; case 'o': - if (*optarg) { - options = catopt(options, optarg); - if (specified_ro(optarg)) - ro = 1; - } + options = catopt(options, optarg); break; case 'p': fstab_style = 1; @@ -247,7 +225,6 @@ main(int argc, char *argv[]) break; case 'r': options = catopt(options, "ro"); - ro = 1; break; case 't': if (vfslist != NULL) @@ -276,9 +253,6 @@ main(int argc, char *argv[]) (strcmp(type, FSTAB_RO) && \ strcmp(type, FSTAB_RW) && strcmp(type, FSTAB_RQ)) - if ((init_flags & MNT_UPDATE) && (ro == 0)) - options = catopt(options, "noro"); - rval = 0; switch (argc) { case 0: