]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
mount: add verbose messages
authorKarel Zak <kzak@redhat.com>
Tue, 9 Oct 2012 09:56:35 +0000 (11:56 +0200)
committerKarel Zak <kzak@redhat.com>
Tue, 9 Oct 2012 09:56:35 +0000 (11:56 +0200)
Addresses: https://bugzilla.redhat.com/show_bug.cgi?id=864227
Signed-off-by: Karel Zak <kzak@redhat.com>
sys-utils/mount.c
sys-utils/umount.c

index 0ac3d90834976f238d7cf71dddb6854af0d9159b..a6d046ba617faea311c601882c876a1d2406d59c 100644 (file)
@@ -230,6 +230,29 @@ static int mount_all(struct libmnt_context *cxt)
        return rc;
 }
 
+static void success_message(struct libmnt_context *cxt)
+{
+       unsigned long mflags = 0;
+       const char *tgt, *src;
+
+       if (mnt_context_helper_executed(cxt)
+           || mnt_context_get_status(cxt) != 1)
+               return;
+
+       mnt_context_get_mflags(cxt, &mflags);
+       tgt = mnt_context_get_target(cxt);
+       src = mnt_context_get_source(cxt);
+
+       if (mflags & MS_MOVE)
+               warnx(_("%s moved to %s"), src, tgt);
+       else if (mflags & MS_BIND)
+               warnx(_("%s binded on %s"), src, tgt);
+       else if (mflags & MS_PROPAGATION)
+               warnx(_("%s propagation flags changed"), tgt);
+       else
+               warnx(_("%s mounted on %s"), src, tgt);
+}
+
 /*
  * Handles generic errors like ENOMEM, ...
  *
@@ -294,7 +317,6 @@ static void selinux_warning(struct libmnt_context *cxt, const char *tgt)
 # define selinux_warning(_x, _y)
 #endif
 
-
 /*
  * rc = 0 success
  *     <0 error (usually -errno or -1)
@@ -949,6 +971,8 @@ int main(int argc, char **argv)
        rc = mnt_context_mount(cxt);
        rc = mk_exit_code(cxt, rc);
 
+       if (rc == MOUNT_EX_SUCCESS && mnt_context_is_verbose(cxt))
+               success_message(cxt);
 done:
        mnt_free_context(cxt);
        mnt_free_table(fstab);
index 97b2f443b4eb88cb6cc99981b3324c00acfbd966..38a2fc8f2e594c8650ee95609167562a8137bdc7 100644 (file)
@@ -120,6 +120,25 @@ static void __attribute__((__noreturn__)) exit_non_root(const char *option)
        errx(MOUNT_EX_USAGE, _("only root can do that"));
 }
 
+static void success_message(struct libmnt_context *cxt)
+{
+       const char *tgt, *src;
+
+       if (mnt_context_helper_executed(cxt)
+           || mnt_context_get_status(cxt) != 1)
+               return;
+
+       tgt = mnt_context_get_target(cxt);
+       if (!tgt)
+               return;
+
+       src = mnt_context_get_source(cxt);
+       if (src)
+               warnx(_("%s (%s) unmounted"), tgt, src);
+       else
+               warnx(_("%s unmounted"), tgt);
+}
+
 /*
  * Handles generic errors like ENOMEM, ...
  *
@@ -274,6 +293,9 @@ static int umount_one(struct libmnt_context *cxt, const char *spec)
        rc = mnt_context_umount(cxt);
        rc = mk_exit_code(cxt, rc);
 
+       if (rc == MOUNT_EX_SUCCESS && mnt_context_is_verbose(cxt))
+               success_message(cxt);
+
        mnt_reset_context(cxt);
        return rc;
 }