summaryrefslogtreecommitdiffstats
path: root/sys-utils/mount.c
diff options
context:
space:
mode:
authorKarel Zak2012-01-20 14:17:08 +0100
committerKarel Zak2012-01-20 14:17:08 +0100
commit2e86597f8392d0e8e66f26f26284c1a60c31495d (patch)
tree77a1722dadafe0f4ea6b0e34231c6c4abb3c9b17 /sys-utils/mount.c
parentmount: (new) improve mount -a exist codes and erroer messages (diff)
downloadkernel-qcow2-util-linux-2e86597f8392d0e8e66f26f26284c1a60c31495d.tar.gz
kernel-qcow2-util-linux-2e86597f8392d0e8e66f26f26284c1a60c31495d.tar.xz
kernel-qcow2-util-linux-2e86597f8392d0e8e66f26f26284c1a60c31495d.zip
mount: (new) add source/target to error messages
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'sys-utils/mount.c')
-rw-r--r--sys-utils/mount.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/sys-utils/mount.c b/sys-utils/mount.c
index 9fd0a240f..79b291656 100644
--- a/sys-utils/mount.c
+++ b/sys-utils/mount.c
@@ -28,7 +28,7 @@
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/stat.h>
-
+#include <stdarg.h>
#include <libmount.h>
#include "nls.h"
@@ -232,24 +232,30 @@ static int mount_all(struct libmnt_context *cxt)
*
* Returns exit status (EX_*) and prints error message.
*/
-static int handle_generic_errors(int rc, const char *msg)
+static int handle_generic_errors(int rc, const char *msg, ...)
{
+ va_list va;
+
+ va_start(va, msg);
errno = -rc;
switch(errno) {
case EINVAL:
case EPERM:
- warn(msg);
- return EX_USAGE;
+ vwarn(msg, va);
+ rc = EX_USAGE;
+ break;
case ENOMEM:
- warn(msg);
- return EX_SYSERR;
+ vwarn(msg, va);
+ rc = EX_SYSERR;
+ break;
default:
+ vwarn(msg, va);
+ rc = EX_FAIL;
break;
}
-
- warn(msg);
- return EX_FAIL;
+ va_end(va);
+ return rc;
}
#if defined(HAVE_LIBSELINUX) && defined(HAVE_SECURITY_GET_INITIAL_CONTEXT)
@@ -300,7 +306,6 @@ static int mk_exit_code(struct libmnt_context *cxt, int rc)
const char *src = mnt_context_get_source(cxt);
try_readonly:
-
if (mnt_context_helper_executed(cxt))
/*
* /sbin/mount.<type> called, return status
@@ -346,7 +351,8 @@ try_readonly:
warnx(_("you must specify the filesystem type"));
return EX_USAGE;
}
- return handle_generic_errors(rc, _("mount failed"));
+ return handle_generic_errors(rc, _("%s: mount failed"),
+ tgt ? tgt : src);
} else if (mnt_context_get_syscall_errno(cxt) == 0) {
/*
@@ -355,7 +361,8 @@ try_readonly:
*/
if (rc < 0)
return handle_generic_errors(rc,
- _("filesystem mounted, but mount(8) failed"));
+ _("%s: filesystem mounted, but mount(8) failed"),
+ tgt ? tgt : src);
return EX_SOFTWARE; /* internal error */