summaryrefslogtreecommitdiffstats
path: root/utils/mount/mount.c
diff options
context:
space:
mode:
authorChuck Lever <chuck.lever@oracle.com>2007-07-16 16:29:22 -0400
committerNeil Brown <neilb@suse.de>2007-07-20 16:19:21 +1000
commit01a13cd0f4acb7375c16a10965d2cff765d9647a (patch)
tree0bb6002d0082f8be5f7c42626b5d6fa5d2b176fb /utils/mount/mount.c
parent8d85f209d0343cf8fef35ea0c94ba9c93af6ffa6 (diff)
downloadnfs-utils-01a13cd0f4acb7375c16a10965d2cff765d9647a.tar.gz
nfs-utils-01a13cd0f4acb7375c16a10965d2cff765d9647a.tar.xz
nfs-utils-01a13cd0f4acb7375c16a10965d2cff765d9647a.zip
mount.nfs: Error handling clean-up
o Use nfs_error( _() ) instead of fprintf(stderr, o Use the mount return code macros instead of bare integers o Free mount_point after it has been canonicalized Signed-off-by: Chuck Lever <chuck.lever@oracle.com> Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'utils/mount/mount.c')
-rw-r--r--utils/mount/mount.c51
1 files changed, 30 insertions, 21 deletions
diff --git a/utils/mount/mount.c b/utils/mount/mount.c
index dde4562..d5e5cea 100644
--- a/utils/mount/mount.c
+++ b/utils/mount/mount.c
@@ -367,22 +367,22 @@ int main(int argc, char *argv[])
if(!strncmp(progname, "umount", strlen("umount"))) {
if(argc < 2) {
umount_usage();
- exit(1);
+ exit(EX_USAGE);
}
exit(nfsumount(argc, argv));
}
- if(argv[1] && argv[1][0] == '-') {
+ if (argv[1] && argv[1][0] == '-') {
if(argv[1][1] == 'V')
printf("%s ("PACKAGE_STRING")\n", progname);
else
mount_usage();
- return 0;
+ exit(0);
}
if ((argc < 3)) {
mount_usage();
- exit(1);
+ exit(EX_USAGE);
}
spec = argv[1];
@@ -422,13 +422,13 @@ int main(int argc, char *argv[])
case 'h':
default:
mount_usage();
- exit(1);
+ exit(EX_USAGE);
}
}
if (optind != argc-2) {
/* Extra non-option words at the end... */
mount_usage();
- exit(1);
+ exit(EX_USAGE);
}
if (strcmp(progname, "mount.nfs4") == 0)
@@ -445,9 +445,9 @@ int main(int argc, char *argv[])
if ((mc = getfsfile(mount_point)) == NULL ||
strcmp(mc->m.mnt_fsname, spec) != 0 ||
strcmp(mc->m.mnt_type, fs_type) != 0) {
- fprintf(stderr, "%s: permission denied: no match for %s "
- "found in /etc/fstab\n", progname, mount_point);
- exit(1);
+ nfs_error(_("%s: permission denied: no match for %s "
+ "found in /etc/fstab"), progname, mount_point);
+ exit(EX_USAGE);
}
/*
@@ -460,24 +460,31 @@ int main(int argc, char *argv[])
}
mount_point = canonicalize(mount_point);
- if (mount_point == NULL ||
- mount_point[0] != '/') {
- fprintf(stderr, "%s: unknown mount point %s\n",
- progname, mount_point ? : "");
- exit(1);
+ if (!mount_point) {
+ nfs_error(_("%s: no mount point provided"), progname);
+ exit(EX_USAGE);
}
-
+ if (mount_point[0] != '/') {
+ nfs_error(_("%s: unrecognized mount point %s"),
+ progname, mount_point);
+ mnt_err = EX_USAGE;
+ goto out;
+ }
+
parse_opts(mount_opts, &flags, &extra_opts);
if (uid != 0) {
- if (! (flags & (MS_USERS | MS_USER))) {
- fprintf(stderr, "%s: permission denied\n", progname);
- exit(1);
- }
+ if (!(flags & (MS_USERS|MS_USER))) {
+ nfs_error(_("%s: permission denied"), progname);
+ mnt_err = EX_USAGE;
+ goto out;
+ }
}
- if (chk_mountpoint(mount_point))
- exit(EX_FAIL);
+ if (chk_mountpoint(mount_point)) {
+ mnt_err = EX_USAGE;
+ goto out;
+ }
if (strcmp(fs_type, "nfs4") == 0)
mnt_err = nfs4mount(spec, mount_point, flags, &extra_opts, fake);
@@ -494,6 +501,8 @@ int main(int argc, char *argv[])
mnt_err = add_mtab(spec, mount_point, fs_type, flags, extra_opts,
0, 0 /* these are always zero for NFS */ );
+out:
+ free(mount_point);
exit(mnt_err);
}