summaryrefslogtreecommitdiff
path: root/utils/mount.c
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2013-06-28 18:46:05 +0200
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2013-08-28 23:08:37 +0200
commit7cf9f75795a4e08519808db380cfffb535127d8c (patch)
treece1bc7449c47704b05c0fdf1ab0df9da89d55f85 /utils/mount.c
parent0d3903e8d44b5441b3606e2540e79c5cb1651145 (diff)
mount: fix mount -oremount with one parameter
This fixes mount -oremount when just given the mountpoint, e. g.: % mount -oremount,ro /tmp * util/mount.c (main): Add a one-argument form for remount.
Diffstat (limited to 'utils/mount.c')
-rw-r--r--utils/mount.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/utils/mount.c b/utils/mount.c
index ea30f7af..f1d5750d 100644
--- a/utils/mount.c
+++ b/utils/mount.c
@@ -526,6 +526,12 @@ main (int argc, char **argv)
fstab = fstab_argp_create (&fstab_params, SEARCH_FMTS, sizeof SEARCH_FMTS);
+ /* This is a convenient way of checking for any `remount' options. */
+ remount = 0;
+ err = argz_replace (&options, &options_len, "remount", "update", &remount);
+ if (err)
+ error (3, ENOMEM, "collecting mount options");
+
if (device) /* two-argument form */
{
struct mntent m =
@@ -548,6 +554,23 @@ main (int argc, char **argv)
if (err)
error (2, err, "%s", mountpoint);
}
+ else if (mountpoint && remount) /* one-argument remount */
+ {
+ struct mntent m =
+ {
+ mnt_fsname: mountpoint, /* since we cannot know the device,
+ using mountpoint here leads to more
+ helpful error messages */
+ mnt_dir: mountpoint,
+ mnt_type: fstype,
+ mnt_opts: 0,
+ mnt_freq: 0, mnt_passno: 0
+ };
+
+ err = fstab_add_mntent (fstab, &m, &fs);
+ if (err)
+ error (2, err, "%s", mountpoint);
+ }
else if (mountpoint) /* one-argument form */
{
fs = fstab_find (fstab, mountpoint);
@@ -557,12 +580,6 @@ main (int argc, char **argv)
else
fs = 0;
- /* This is a convenient way of checking for any `remount' options. */
- remount = 0;
- err = argz_replace (&options, &options_len, "remount", "update", &remount);
- if (err)
- error (3, ENOMEM, "collecting mount options");
-
if (fs != 0)
err = do_mount (fs, remount);
else