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, ...
*
# define selinux_warning(_x, _y)
#endif
-
/*
* rc = 0 success
* <0 error (usually -errno or -1)
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);
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, ...
*
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;
}