summaryrefslogtreecommitdiffstats
path: root/utils/exportfs
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2013-11-05 14:03:53 -0500
committerSteve Dickson <steved@redhat.com>2013-11-05 14:03:53 -0500
commitd4a408776d611cd62235232d65d488d02fca78e4 (patch)
tree47e2d232cad7f277746e1e1cdbf66a1bf75fb5af /utils/exportfs
parentda88f28656da305ed319867211753baac32c4242 (diff)
downloadnfs-utils-d4a408776d611cd62235232d65d488d02fca78e4.tar.gz
nfs-utils-d4a408776d611cd62235232d65d488d02fca78e4.tar.xz
nfs-utils-d4a408776d611cd62235232d65d488d02fca78e4.zip
exportfs: exit with error code if there was any error (take 2).
exportfs currently exits with a non-zero error for some errors, but not for others. It does this by having various support routines set the global variable "export_errno". Change this to have 'xlog' set export_errno if an ERROR is reported. That way all errors will be caught. Note that the exit error code is changed from 22 (EINVAL) to the more traditional '1'. Signed-off-by: NeilBrown <neilb@suse.de> Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'utils/exportfs')
-rw-r--r--utils/exportfs/exportfs.c43
1 files changed, 13 insertions, 30 deletions
diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c
index 6962444..da5fe21 100644
--- a/utils/exportfs/exportfs.c
+++ b/utils/exportfs/exportfs.c
@@ -35,8 +35,8 @@
#include "xlog.h"
static void export_all(int verbose);
-static int exportfs(char *arg, char *options, int verbose);
-static int unexportfs(char *arg, int verbose);
+static void exportfs(char *arg, char *options, int verbose);
+static void unexportfs(char *arg, int verbose);
static void exports_update(int verbose);
static void dump(int verbose, int export_format);
static void error(nfs_export *exp, int err);
@@ -104,8 +104,6 @@ main(int argc, char **argv)
xlog_stderr(1);
xlog_syslog(0);
- export_errno = 0;
-
while ((c = getopt(argc, argv, "afhio:ruvs")) != EOF) {
switch(c) {
case 'a':
@@ -187,12 +185,8 @@ main(int argc, char **argv)
if (f_all)
export_all(f_verbose);
else
- for (i = optind; i < argc ; i++) {
- if(!exportfs(argv[i], options, f_verbose)) {
- /* Only flag a generic EINVAL if no errno is set */
- export_errno = (export_errno) ? export_errno : EINVAL;
- }
- }
+ for (i = optind; i < argc ; i++)
+ exportfs(argv[i], options, f_verbose);
}
/* If we are unexporting everything, then
* don't care about what should be exported, as that
@@ -205,12 +199,8 @@ main(int argc, char **argv)
if (!f_reexport)
xtab_export_read();
if (!f_export)
- for (i = optind ; i < argc ; i++) {
- if (!unexportfs(argv[i], f_verbose)) {
- /* Only flag a generic EINVAL if no errno is set */
- export_errno = (export_errno) ? export_errno : EINVAL;
- }
- }
+ for (i = optind ; i < argc ; i++)
+ unexportfs(argv[i], f_verbose);
if (!new_cache)
rmtab_read();
}
@@ -304,10 +294,9 @@ export_all(int verbose)
}
-static int
+static void
exportfs(char *arg, char *options, int verbose)
{
- int rc = 0;
struct exportent *eep;
nfs_export *exp = NULL;
struct addrinfo *ai = NULL;
@@ -320,8 +309,7 @@ exportfs(char *arg, char *options, int verbose)
if (!path || *path != '/') {
xlog(L_ERROR, "Invalid exporting option: %s", arg);
- export_errno = EINVAL;
- return rc;
+ return;
}
if ((htype = client_gettype(hname)) == MCL_FQDN) {
@@ -349,29 +337,26 @@ exportfs(char *arg, char *options, int verbose)
exp->m_warned = 0;
validate_export(exp);
- rc = 1;
out:
freeaddrinfo(ai);
- return rc;
}
-static int
+static void
unexportfs(char *arg, int verbose)
{
- int rc = 0;
nfs_export *exp;
struct addrinfo *ai = NULL;
char *path;
char *hname = arg;
int htype;
+ int success = 0;
if ((path = strchr(arg, ':')) != NULL)
*path++ = '\0';
if (!path || *path != '/') {
xlog(L_ERROR, "Invalid unexporting option: %s", arg);
- export_errno = EINVAL;
- return rc;
+ return;
}
if ((htype = client_gettype(hname)) == MCL_FQDN) {
@@ -411,13 +396,12 @@ unexportfs(char *arg, int verbose)
#endif
exp->m_xtabent = 0;
exp->m_mayexport = 0;
- rc = 1;
+ success = 1;
}
- if (!rc && verbose)
+ if (!success)
xlog(L_ERROR, "Could not find '%s:%s' to unexport.", arg, path);
freeaddrinfo(ai);
- return rc;
}
static int can_test(void)
@@ -746,7 +730,6 @@ error(nfs_export *exp, int err)
{
xlog(L_ERROR, "%s:%s: %s", exp->m_client->m_hostname,
exp->m_export.e_path, strerror(err));
- export_errno = (export_errno) ? export_errno : err;
}
static void