aboutsummaryrefslogtreecommitdiff
path: root/sbin/mount/mount.c
diff options
context:
space:
mode:
authorCraig Rodrigues <rodrigc@FreeBSD.org>2006-06-02 17:53:46 +0000
committerCraig Rodrigues <rodrigc@FreeBSD.org>2006-06-02 17:53:46 +0000
commit19996233cced5b5a697167e9bfecb5731e93ef7f (patch)
treeb386f643810066e9b92eacc11056ddf774290f1b /sbin/mount/mount.c
parent51e37c7f37e8dbe0fcd3c4180191b1f8a23a67a8 (diff)
downloadsrc-19996233cced5b5a697167e9bfecb5731e93ef7f.tar.gz
src-19996233cced5b5a697167e9bfecb5731e93ef7f.zip
Fix "mount -u -o ro".
Requested by: maxim
Notes
Notes: svn path=/head/; revision=159177
Diffstat (limited to 'sbin/mount/mount.c')
-rw-r--r--sbin/mount/mount.c25
1 files changed, 24 insertions, 1 deletions
diff --git a/sbin/mount/mount.c b/sbin/mount/mount.c
index fc03a8b67acc..e1c4e8a759c1 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;