summaryrefslogtreecommitdiffstats
path: root/utils/mountd/mountd.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/mountd/mountd.c')
-rw-r--r--utils/mountd/mountd.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/utils/mountd/mountd.c b/utils/mountd/mountd.c
index 9cf2a1f..43606dd 100644
--- a/utils/mountd/mountd.c
+++ b/utils/mountd/mountd.c
@@ -56,6 +56,7 @@ static struct option longopts[] =
{ "port", 1, 0, 'p' },
{ "no-tcp", 0, 0, 'n' },
{ "ha-callout", 1, 0, 'H' },
+ { "state-directory-path", 1, 0, 's' },
{ NULL, 0, 0, 0 }
};
@@ -457,6 +458,7 @@ int
main(int argc, char **argv)
{
char *export_file = _PATH_EXPORTS;
+ char *state_dir = NFS_STATEDIR;
int foreground = 0;
int port = 0;
int descriptors = 0;
@@ -466,7 +468,7 @@ main(int argc, char **argv)
/* Parse the command line options and arguments. */
opterr = 0;
- while ((c = getopt_long(argc, argv, "o:n:Fd:f:p:P:hH:N:V:v", longopts, NULL)) != EOF)
+ while ((c = getopt_long(argc, argv, "o:n:Fd:f:p:P:hH:N:V:vs:", longopts, NULL)) != EOF)
switch (c) {
case 'o':
descriptors = atoi(optarg);
@@ -506,6 +508,13 @@ main(int argc, char **argv)
case 'n':
_rpcfdtype = SOCK_DGRAM;
break;
+ case 's':
+ if ((state_dir = xstrdup(optarg)) == NULL) {
+ fprintf(stderr, "%s: xstrdup(%s) failed!\n",
+ argv[0], optarg);
+ exit(1);
+ }
+ break;
case 'V':
nfs_version |= 1 << (atoi (optarg) - 1);
break;
@@ -523,9 +532,9 @@ main(int argc, char **argv)
if (optind != argc || !(nfs_version & 0x7))
usage(argv [0], 1);
- if (chdir(NFS_STATEDIR)) {
+ if (chdir(state_dir)) {
fprintf(stderr, "%s: chdir(%s) failed: %s\n",
- argv [0], NFS_STATEDIR, strerror(errno));
+ argv [0], state_dir, strerror(errno));
exit(1);
}
@@ -620,6 +629,6 @@ usage(const char *prog, int n)
" [-o num|--descriptors num] [-f exports-file|--exports-file=file]\n"
" [-p|--port port] [-V version|--nfs-version version]\n"
" [-N version|--no-nfs-version version] [-n|--no-tcp]\n"
-" [-H ha-callout-prog]\n", prog);
+" [-H ha-callout-prog] [-s|--state-directory-path path]\n", prog);
exit(n);
}