From f6f16a30433d481e93fba5c15e08761f5159b2c5 Mon Sep 17 00:00:00 2001 From: rodrigc Date: Fri, 2 Jun 2006 17:53:46 +0000 Subject: Fix "mount -u -o ro". Requested by: maxim --- sbin/mount/mount.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'sbin') diff --git a/sbin/mount/mount.c b/sbin/mount/mount.c index fc03a8b..e1c4e8a 100644 --- a/sbin/mount/mount.c +++ b/sbin/mount/mount.c @@ -184,6 +184,26 @@ 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[]) { @@ -215,8 +235,11 @@ main(int argc, char *argv[]) init_flags |= MNT_FORCE; break; case 'o': - if (*optarg) + if (*optarg) { options = catopt(options, optarg); + if (specified_ro(optarg)) + ro = 1; + } break; case 'p': fstab_style = 1; -- cgit v1.1