umount.nfs: Make do_nfs_mount use conventional EX_ style return codes
Subsystems (2)
PATCH 11/23 umount.nfs: Make do_nfs_mount use conventional EX_ style return codes
do_nfs_mount() should return EX_ style return codes and not 1 or 0 in order to distinguish between usage errors and other problems (such as EX_FILEIO or RPC errors).
Signed-off-by Chuck Lever <[email protected]>
---
utils/mount/nfsumount.c | 38 ++++++++++++++++++++++++++------------ 1 files changed, 26 insertions(+), 12 deletions(-)
utils/mount/nfsumount.c +26 -12
@@ -121,9 +121,6 @@ static int del_mtab(const char *spec, const char *node)return EX_FILEIO ; } -/* -* Returns 1 if everything went well, else 0. -*/ static int do_nfs_umount (const char *spec,char *opts) {char *hostname;
@@ -133,10 +130,20 @@ static int do_nfs_umount(const char *spec, char *opts)struct pmap *pmap = &mnt_server.pmap;char *p; -if (spec ==NULL || (p =strchr (spec,':' )) ==NULL ) - goto out_bad; - hostname =xstrndup (spec, p-spec); - dirname =xstrdup (p+1 ); +if (spec ==NULL ) { +nfs_error (_ ("%s: No NFS export name was provided" ), + progname); +return EX_USAGE ; + } + + p =strchr (spec,':' ); +if (p ==NULL ) { +nfs_error (_ ("%s: '%s' is not a legal NFS export name" ), + progname, spec); +return EX_USAGE ; + } + hostname =xstrndup (spec, p - spec); + dirname =xstrdup (p +1 );#ifdef NFS_MOUNT_DEBUG printf (_ ("host: %s, directory: %s\n" ), hostname, dirname);#endif
@@ -180,11 +187,18 @@ static int do_nfs_umount(const char *spec, char *opts)if (opts && (hasmntopt (&mnt,"udp" ) ||hasmntopt (&mnt,"proto=udp" ))) pmap->pm_prot =IPPROTO_UDP ; -if (!nfs_gethostbyname (hostname, &mnt_server.saddr)) - goto out_bad; -return nfs_call_umount (&mnt_server, &dirname); - out_bad: -nfs_error (_ ("%s: %s: not found or not mounted" ), progname, spec); +if (!nfs_gethostbyname (hostname, &mnt_server.saddr)) { +nfs_error (_ ("%s: '%s' does not contain a recognized hostname" ), + progname, spec); +return EX_USAGE ; + } + +if (!nfs_call_umount (&mnt_server, &dirname)) { +nfs_error (_ ("%s: Server failed to unmount '%s'" ), + progname, spec); +return EX_USAGE ; + } +return 0 ; }
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
NFS maillist - [email protected]
https://lists.sourceforge.net/lists/listinfo/nfs