summaryrefslogtreecommitdiffstats
path: root/sbin/mount
diff options
context:
space:
mode:
authorjh <jh@FreeBSD.org>2010-09-30 13:31:35 +0000
committerjh <jh@FreeBSD.org>2010-09-30 13:31:35 +0000
commita02f9edef384f097b928bdd31973bd76829e48bf (patch)
tree5d0a83b5449a5268883909b06741920bfc785c7a /sbin/mount
parent86d9958ce8f3148607cb06c3ea3f691f6f292dbe (diff)
downloadFreeBSD-src-a02f9edef384f097b928bdd31973bd76829e48bf.zip
FreeBSD-src-a02f9edef384f097b928bdd31973bd76829e48bf.tar.gz
Fix printing of the "rw" mount option in fstab(5) format (-p option).
fstab(5) format requires that one of "rw", "rq" or "ro" is always specified. PR: bin/123021 Reviewed by: keramida, rodrigc MFC after: 2 weeks
Diffstat (limited to 'sbin/mount')
-rw-r--r--sbin/mount/mount.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/sbin/mount/mount.c b/sbin/mount/mount.c
index b39a7d1..d0d0faa 100644
--- a/sbin/mount/mount.c
+++ b/sbin/mount/mount.c
@@ -850,10 +850,18 @@ void
putfsent(struct statfs *ent)
{
struct fstab *fst;
- char *opts;
+ char *opts, *rw;
int l;
+ opts = NULL;
+ /* flags2opts() doesn't return the "rw" option. */
+ if ((ent->f_flags & MNT_RDONLY) != 0)
+ rw = NULL;
+ else
+ rw = catopt(NULL, "rw");
+
opts = flags2opts(ent->f_flags);
+ opts = catopt(rw, opts);
if (strncmp(ent->f_mntfromname, "<below>", 7) == 0 ||
strncmp(ent->f_mntfromname, "<above>", 7) == 0) {
@@ -861,10 +869,6 @@ putfsent(struct statfs *ent)
+1));
}
- /*
- * "rw" is not a real mount option; this is why we print NULL as "rw"
- * if opts is still NULL here.
- */
l = strlen(ent->f_mntfromname);
printf("%s%s%s%s", ent->f_mntfromname,
l < 8 ? "\t" : "",
@@ -876,13 +880,9 @@ putfsent(struct statfs *ent)
l < 16 ? "\t" : "",
l < 24 ? "\t" : " ");
printf("%s\t", ent->f_fstypename);
- if (opts == NULL) {
- printf("%s\t", "rw");
- } else {
- l = strlen(opts);
- printf("%s%s", opts,
- l < 8 ? "\t" : " ");
- }
+ l = strlen(opts);
+ printf("%s%s", opts,
+ l < 8 ? "\t" : " ");
free(opts);
if ((fst = getfsspec(ent->f_mntfromname)))
OpenPOWER on IntegriCloud