exportfs already invokes xlog_open() because libexport.a uses xlog()
exclusively for error reporting and debugging messages. If we can
use xlog() throughout exportfs itself, that enables xlog debugging
messages everywhere in the code path.
In addition, use xlog() instead of fprintf(stderr) for reporting
errors in exportfs.c, to be consistent with libexport.a and other
components of nfs-utils.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
static void exports_update(int verbose);
static void dump(int verbose);
static void error(nfs_export *exp, int err);
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);
static void validate_export(nfs_export *exp);
static int matchhostname(const char *hostname1, const char *hostname2);
main(int argc, char **argv)
{
char *options = NULL;
main(int argc, char **argv)
{
char *options = NULL;
int f_export = 1;
int f_all = 0;
int f_verbose = 0;
int f_export = 1;
int f_all = 0;
int f_verbose = 0;
int new_cache = 0;
int force_flush = 0;
int new_cache = 0;
int force_flush = 0;
+ if ((progname = strrchr(argv[0], '/')) != NULL)
+ progname++;
+ else
+ progname = argv[0];
+
+ xlog_open(progname);
+ xlog_stderr(1);
+ xlog_syslog(0);
force_flush = 1;
break;
default:
force_flush = 1;
break;
default:
break;
}
}
if (optind != argc && f_all) {
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)) {
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) {
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();
return 1;
}
new_cache = check_new_cache();
if (new_cache)
cache_flush(1);
else {
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;
*path++ = '\0';
if (!path || *path != '/') {
*path++ = '\0';
if (!path || *path != '/') {
- fprintf(stderr, "Invalid exporting option: %s\n", arg);
+ xlog(L_ERROR, "Invalid exporting option: %s", arg);
*path++ = '\0';
if (!path || *path != '/') {
*path++ = '\0';
if (!path || *path != '/') {
- fprintf(stderr, "Invalid unexporting option: %s\n",
- arg);
+ xlog(L_ERROR, "Invalid unexporting option: %s", arg);
int fs_has_fsid = 0;
if (stat(path, &stb) < 0) {
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)) {
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())
return;
}
if (!can_test())
if ((exp->m_export.e_flags & NFSEXP_FSID) || exp->m_export.e_uuid ||
fs_has_fsid) {
if ( !test_export(path, 1)) {
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))
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);
- fprintf(stderr, "exportfs: Warning: %s does not "
- "support NFS export.\n",
- path);
+ xlog(L_ERROR, "%s does not support NFS export", path);
static void
error(nfs_export *exp, int err)
{
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
exp->m_export.e_path, strerror(err));
}
static void
+usage(const char *progname)
- fprintf(stderr, "usage: exportfs [-aruv] [host:/path]\n");
+ fprintf(stderr, "usage: %s [-aruv] [host:/path]\n", progname);