]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - utils/exportfs/exportfs.c
exportfs: Use xlog() for error reporting
[nfs-utils.git] / utils / exportfs / exportfs.c
index 93bad32241fae7d5d0c4f7276e75f3290da5ffdf..8496d825cd28bd3a1932535e6b847086e3d9fb68 100644 (file)
@@ -37,7 +37,7 @@ static void   unexportfs(char *arg, int verbose);
 static void    exports_update(int verbose);
 static void    dump(int verbose);
 static void    error(nfs_export *exp, int err);
-static void    usage(void);
+static void    usage(const char *progname);
 static void    validate_export(nfs_export *exp);
 static int     matchhostname(const char *hostname1, const char *hostname2);
 
@@ -45,6 +45,7 @@ int
 main(int argc, char **argv)
 {
        char    *options = NULL;
+       char    *progname = NULL;
        int     f_export = 1;
        int     f_all = 0;
        int     f_verbose = 0;
@@ -54,7 +55,14 @@ main(int argc, char **argv)
        int     new_cache = 0;
        int     force_flush = 0;
 
-       xlog_open("exportfs");
+       if ((progname = strrchr(argv[0], '/')) != NULL)
+               progname++;
+       else
+               progname = argv[0];
+
+       xlog_open(progname);
+       xlog_stderr(1);
+       xlog_syslog(0);
 
        export_errno = 0;
 
@@ -83,21 +91,21 @@ main(int argc, char **argv)
                        force_flush = 1;
                        break;
                default:
-                       usage();
+                       usage(progname);
                        break;
                }
        }
 
        if (optind != argc && f_all) {
-               fprintf(stderr,"exportfs: extra arguments are not permitted with -a or -r.\n");
+               xlog(L_ERROR, "extra arguments are not permitted with -a or -r");
                return 1;
        }
        if (f_ignore && (f_all || ! f_export)) {
-               fprintf(stderr,"exportfs: -i not meaningful with -a, -r or -u.\n");
+               xlog(L_ERROR, "-i not meaningful with -a, -r or -u");
                return 1;
        }
        if (f_reexport && ! f_export) {
-               fprintf(stderr, "exportfs: -r and -u are incompatible.\n");
+               xlog(L_ERROR, "-r and -u are incompatible");
                return 1;
        }
        new_cache = check_new_cache();
@@ -106,8 +114,10 @@ main(int argc, char **argv)
                        if (new_cache)
                                cache_flush(1);
                        else {
-                               fprintf(stderr, "exportfs: -f: only available with new cache controls: mount /proc/fs/nfsd first\n");
-                               exit(1);
+                               xlog(L_ERROR, "-f is available only "
+                                       "with new cache controls. "
+                                       "Mount /proc/fs/nfsd first");
+                               return 1;
                        }
                        return 0;
                } else {
@@ -245,7 +255,7 @@ exportfs(char *arg, char *options, int verbose)
                *path++ = '\0';
 
        if (!path || *path != '/') {
-               fprintf(stderr, "Invalid exporting option: %s\n", arg);
+               xlog(L_ERROR, "Invalid exporting option: %s", arg);
                return;
        }
 
@@ -291,8 +301,7 @@ unexportfs(char *arg, int verbose)
                *path++ = '\0';
 
        if (!path || *path != '/') {
-               fprintf(stderr, "Invalid unexporting option: %s\n",
-                       arg);
+               xlog(L_ERROR, "Invalid unexporting option: %s", arg);
                return;
        }
 
@@ -387,14 +396,12 @@ validate_export(nfs_export *exp)
        int fs_has_fsid = 0;
 
        if (stat(path, &stb) < 0) {
-               fprintf(stderr, "exportfs: Warning: %s does not exist\n",
-                       path);
+               xlog(L_ERROR, "Failed to stat %s: %m \n", path);
                return;
        }
        if (!S_ISDIR(stb.st_mode) && !S_ISREG(stb.st_mode)) {
-               fprintf(stderr, "exportfs: Warning: %s is neither "
-                       "a directory nor a file.\n"
-                       "     remote access will fail\n", path);
+               xlog(L_ERROR, "%s is neither a directory nor a file. "
+                       "Remote access will fail", path);
                return;
        }
        if (!can_test())
@@ -407,19 +414,14 @@ validate_export(nfs_export *exp)
        if ((exp->m_export.e_flags & NFSEXP_FSID) || exp->m_export.e_uuid ||
            fs_has_fsid) {
                if ( !test_export(path, 1)) {
-                       fprintf(stderr, "exportfs: Warning: %s does not "
-                               "support NFS export.\n",
-                               path);
+                       xlog(L_ERROR, "%s does not support NFS export", path);
                        return;
                }
        } else if ( ! test_export(path, 0)) {
                if (test_export(path, 1))
-                       fprintf(stderr, "exportfs: Warning: %s requires fsid= "
-                               "for NFS export\n", path);
+                       xlog(L_ERROR, "%s requires fsid= for NFS export", path);
                else
-                       fprintf(stderr, "exportfs: Warning: %s does not "
-                               "support NFS export.\n",
-                               path);
+                       xlog(L_ERROR, "%s does not support NFS export", path);
                return;
 
        }
@@ -602,13 +604,13 @@ dump(int verbose)
 static void
 error(nfs_export *exp, int err)
 {
-       fprintf(stderr, "%s:%s: %s\n", exp->m_client->m_hostname, 
+       xlog(L_ERROR, "%s:%s: %s\n", exp->m_client->m_hostname,
                exp->m_export.e_path, strerror(err));
 }
 
 static void
-usage(void)
+usage(const char *progname)
 {
-       fprintf(stderr, "usage: exportfs [-aruv] [host:/path]\n");
+       fprintf(stderr, "usage: %s [-aruv] [host:/path]\n", progname);
        exit(1);
 }