Message ID | 1380734389-8202-1-git-send-email-tasleson@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Wed, Oct 02, 2013 at 12:19:49PM -0500, Tony Asleson wrote: > Adds '-s' option which outputs the current exports in a format > suitable for /etc/exports. Sounds like a good idea.... Is there any difference between this and what's written to /var/lib/nfs/etab? OK looks like the latter is more verbose--it doesn't skip default options. Still can't help thinking there must be some needlessly duplicated code here. --b. > > Signed-off-by: Tony Asleson <tasleson@redhat.com> > --- > utils/exportfs/exportfs.c | 23 ++++++++++++++--------- > utils/exportfs/exportfs.man | 5 ++++- > 2 files changed, 18 insertions(+), 10 deletions(-) > > diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c > index 4331697..52fc03d 100644 > --- a/utils/exportfs/exportfs.c > +++ b/utils/exportfs/exportfs.c > @@ -38,7 +38,7 @@ static void export_all(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); > +static void dump(int verbose, int export_format); > static void error(nfs_export *exp, int err); > static void usage(const char *progname, int n); > static void validate_export(nfs_export *exp); > @@ -88,6 +88,7 @@ main(int argc, char **argv) > int f_export = 1; > int f_all = 0; > int f_verbose = 0; > + int f_export_format = 0; > int f_reexport = 0; > int f_ignore = 0; > int i, c; > @@ -105,7 +106,7 @@ main(int argc, char **argv) > > export_errno = 0; > > - while ((c = getopt(argc, argv, "afhio:ruv")) != EOF) { > + while ((c = getopt(argc, argv, "afhio:ruvs")) != EOF) { > switch(c) { > case 'a': > f_all = 1; > @@ -132,6 +133,9 @@ main(int argc, char **argv) > case 'v': > f_verbose = 1; > break; > + case 's': > + f_export_format = 1; > + break; > default: > usage(progname, 1); > break; > @@ -164,7 +168,7 @@ main(int argc, char **argv) > return 0; > } else { > xtab_export_read(); > - dump(f_verbose); > + dump(f_verbose, f_export_format); > return 0; > } > } > @@ -634,7 +638,7 @@ dumpopt(char c, char *fmt, ...) > } > > static void > -dump(int verbose) > +dump(int verbose, int export_format) > { > nfs_export *exp; > struct exportent *ep; > @@ -647,14 +651,15 @@ dump(int verbose) > if (!exp->m_xtabent) > continue; /* neilb */ > if (htype == MCL_ANONYMOUS) > - hname = "<world>"; > + hname = (export_format) ? "*" : "<world>"; > else > hname = ep->e_hostname; > - if (strlen(ep->e_path) > 14) > + if (strlen(ep->e_path) > 14 && !export_format) > printf("%-14s\n\t\t%s", ep->e_path, hname); > else > - printf("%-14s\t%s", ep->e_path, hname); > - if (!verbose) { > + printf(((export_format)? "%s %s" : "%-14s\t%s"), ep->e_path, hname); > + > + if (!verbose && !export_format) { > printf("\n"); > continue; > } > @@ -728,6 +733,6 @@ error(nfs_export *exp, int err) > static void > usage(const char *progname, int n) > { > - fprintf(stderr, "usage: %s [-afhioruv] [host:/path]\n", progname); > + fprintf(stderr, "usage: %s [-afhioruvs] [host:/path]\n", progname); > exit(n); > } > diff --git a/utils/exportfs/exportfs.man b/utils/exportfs/exportfs.man > index 8853486..590f9cf 100644 > --- a/utils/exportfs/exportfs.man > +++ b/utils/exportfs/exportfs.man > @@ -3,7 +3,7 @@ > .\" Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de> > .\" Modifications 1999-2003 Neil Brown <neilb@cse.unsw.edu.au> > .\" > -.TH exportfs 8 "31 December 2009" > +.TH exportfs 8 "30 September 2013" > .SH NAME > exportfs \- maintain table of exported NFS file systems > .SH SYNOPSIS > @@ -133,6 +133,9 @@ when they make their next NFS mount request. > Be verbose. When exporting or unexporting, show what's going on. When > displaying the current export list, also display the list of export > options. > +.TP > +.B -s > +Display the current export list suitable for /etc/exports. > .SH DISCUSSION > .SS Exporting Directories > The first synopsis shows how to invoke > -- > 1.8.2.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 02/10/13 17:40, J. Bruce Fields wrote: > On Wed, Oct 02, 2013 at 12:19:49PM -0500, Tony Asleson wrote: >> Adds '-s' option which outputs the current exports in a format >> suitable for /etc/exports. > > Sounds like a good idea.... > > Is there any difference between this and what's written to > /var/lib/nfs/etab? Yes... The following options are in the etab but not in the -s output... sync,hide,nocrossmnt,secure,no_all_squash,secure_locks,acl,anonuid=65534,anongid=65534 > > OK looks like the latter is more verbose--it doesn't skip default > options. The only real difference between -v and -s is -v uses the string "<world>" in for MCL_ANONYMOUS and -s uses "*" I guess we could change -v to used what the -s is proposing, but that could break someone's existing configuration... > > Still can't help thinking there must be some needlessly duplicated code > here. There is... but I stilling adding the -s makes sense.... steved. > > --b. > >> >> Signed-off-by: Tony Asleson <tasleson@redhat.com> >> --- >> utils/exportfs/exportfs.c | 23 ++++++++++++++--------- >> utils/exportfs/exportfs.man | 5 ++++- >> 2 files changed, 18 insertions(+), 10 deletions(-) >> >> diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c >> index 4331697..52fc03d 100644 >> --- a/utils/exportfs/exportfs.c >> +++ b/utils/exportfs/exportfs.c >> @@ -38,7 +38,7 @@ static void export_all(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); >> +static void dump(int verbose, int export_format); >> static void error(nfs_export *exp, int err); >> static void usage(const char *progname, int n); >> static void validate_export(nfs_export *exp); >> @@ -88,6 +88,7 @@ main(int argc, char **argv) >> int f_export = 1; >> int f_all = 0; >> int f_verbose = 0; >> + int f_export_format = 0; >> int f_reexport = 0; >> int f_ignore = 0; >> int i, c; >> @@ -105,7 +106,7 @@ main(int argc, char **argv) >> >> export_errno = 0; >> >> - while ((c = getopt(argc, argv, "afhio:ruv")) != EOF) { >> + while ((c = getopt(argc, argv, "afhio:ruvs")) != EOF) { >> switch(c) { >> case 'a': >> f_all = 1; >> @@ -132,6 +133,9 @@ main(int argc, char **argv) >> case 'v': >> f_verbose = 1; >> break; >> + case 's': >> + f_export_format = 1; >> + break; >> default: >> usage(progname, 1); >> break; >> @@ -164,7 +168,7 @@ main(int argc, char **argv) >> return 0; >> } else { >> xtab_export_read(); >> - dump(f_verbose); >> + dump(f_verbose, f_export_format); >> return 0; >> } >> } >> @@ -634,7 +638,7 @@ dumpopt(char c, char *fmt, ...) >> } >> >> static void >> -dump(int verbose) >> +dump(int verbose, int export_format) >> { >> nfs_export *exp; >> struct exportent *ep; >> @@ -647,14 +651,15 @@ dump(int verbose) >> if (!exp->m_xtabent) >> continue; /* neilb */ >> if (htype == MCL_ANONYMOUS) >> - hname = "<world>"; >> + hname = (export_format) ? "*" : "<world>"; >> else >> hname = ep->e_hostname; >> - if (strlen(ep->e_path) > 14) >> + if (strlen(ep->e_path) > 14 && !export_format) >> printf("%-14s\n\t\t%s", ep->e_path, hname); >> else >> - printf("%-14s\t%s", ep->e_path, hname); >> - if (!verbose) { >> + printf(((export_format)? "%s %s" : "%-14s\t%s"), ep->e_path, hname); >> + >> + if (!verbose && !export_format) { >> printf("\n"); >> continue; >> } >> @@ -728,6 +733,6 @@ error(nfs_export *exp, int err) >> static void >> usage(const char *progname, int n) >> { >> - fprintf(stderr, "usage: %s [-afhioruv] [host:/path]\n", progname); >> + fprintf(stderr, "usage: %s [-afhioruvs] [host:/path]\n", progname); >> exit(n); >> } >> diff --git a/utils/exportfs/exportfs.man b/utils/exportfs/exportfs.man >> index 8853486..590f9cf 100644 >> --- a/utils/exportfs/exportfs.man >> +++ b/utils/exportfs/exportfs.man >> @@ -3,7 +3,7 @@ >> .\" Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de> >> .\" Modifications 1999-2003 Neil Brown <neilb@cse.unsw.edu.au> >> .\" >> -.TH exportfs 8 "31 December 2009" >> +.TH exportfs 8 "30 September 2013" >> .SH NAME >> exportfs \- maintain table of exported NFS file systems >> .SH SYNOPSIS >> @@ -133,6 +133,9 @@ when they make their next NFS mount request. >> Be verbose. When exporting or unexporting, show what's going on. When >> displaying the current export list, also display the list of export >> options. >> +.TP >> +.B -s >> +Display the current export list suitable for /etc/exports. >> .SH DISCUSSION >> .SS Exporting Directories >> The first synopsis shows how to invoke >> -- >> 1.8.2.1 >> >> -- >> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > -- > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Mon, Oct 21, 2013 at 09:51:25AM -0400, Steve Dickson wrote: > On 02/10/13 17:40, J. Bruce Fields wrote: > > On Wed, Oct 02, 2013 at 12:19:49PM -0500, Tony Asleson wrote: > >> Adds '-s' option which outputs the current exports in a format > >> suitable for /etc/exports. > > > > Sounds like a good idea.... > > > > Is there any difference between this and what's written to > > /var/lib/nfs/etab? > Yes... The following options are in the etab but not in > the -s output... > > sync,hide,nocrossmnt,secure,no_all_squash,secure_locks,acl,anonuid=65534,anongid=65534 > > > > > OK looks like the latter is more verbose--it doesn't skip default > > options. > The only real difference between -v and -s is -v uses the > string "<world>" in for MCL_ANONYMOUS and -s uses "*" > > I guess we could change -v to used what the -s is proposing, > but that could break someone's existing configuration... Also, looking at my home server.... It would be annoying to get: /export *(rw,sync,wdelay,hide,nocrossmnt,insecure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534) when all you need is: /export <world>(rw,wdelay,insecure,no_root_squash,no_subtree_check) (Actually I wonder why it's even showing wdelay and no_subtree_check when those are both defaults? But this is on F16, maybe it's different now. I should really update that machine.) > > Still can't help thinking there must be some needlessly duplicated code > > here. > There is... but I stilling adding the -s makes sense.... Fine by me. --b. > > steved. > > > > > --b. > > > >> > >> Signed-off-by: Tony Asleson <tasleson@redhat.com> > >> --- > >> utils/exportfs/exportfs.c | 23 ++++++++++++++--------- > >> utils/exportfs/exportfs.man | 5 ++++- > >> 2 files changed, 18 insertions(+), 10 deletions(-) > >> > >> diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c > >> index 4331697..52fc03d 100644 > >> --- a/utils/exportfs/exportfs.c > >> +++ b/utils/exportfs/exportfs.c > >> @@ -38,7 +38,7 @@ static void export_all(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); > >> +static void dump(int verbose, int export_format); > >> static void error(nfs_export *exp, int err); > >> static void usage(const char *progname, int n); > >> static void validate_export(nfs_export *exp); > >> @@ -88,6 +88,7 @@ main(int argc, char **argv) > >> int f_export = 1; > >> int f_all = 0; > >> int f_verbose = 0; > >> + int f_export_format = 0; > >> int f_reexport = 0; > >> int f_ignore = 0; > >> int i, c; > >> @@ -105,7 +106,7 @@ main(int argc, char **argv) > >> > >> export_errno = 0; > >> > >> - while ((c = getopt(argc, argv, "afhio:ruv")) != EOF) { > >> + while ((c = getopt(argc, argv, "afhio:ruvs")) != EOF) { > >> switch(c) { > >> case 'a': > >> f_all = 1; > >> @@ -132,6 +133,9 @@ main(int argc, char **argv) > >> case 'v': > >> f_verbose = 1; > >> break; > >> + case 's': > >> + f_export_format = 1; > >> + break; > >> default: > >> usage(progname, 1); > >> break; > >> @@ -164,7 +168,7 @@ main(int argc, char **argv) > >> return 0; > >> } else { > >> xtab_export_read(); > >> - dump(f_verbose); > >> + dump(f_verbose, f_export_format); > >> return 0; > >> } > >> } > >> @@ -634,7 +638,7 @@ dumpopt(char c, char *fmt, ...) > >> } > >> > >> static void > >> -dump(int verbose) > >> +dump(int verbose, int export_format) > >> { > >> nfs_export *exp; > >> struct exportent *ep; > >> @@ -647,14 +651,15 @@ dump(int verbose) > >> if (!exp->m_xtabent) > >> continue; /* neilb */ > >> if (htype == MCL_ANONYMOUS) > >> - hname = "<world>"; > >> + hname = (export_format) ? "*" : "<world>"; > >> else > >> hname = ep->e_hostname; > >> - if (strlen(ep->e_path) > 14) > >> + if (strlen(ep->e_path) > 14 && !export_format) > >> printf("%-14s\n\t\t%s", ep->e_path, hname); > >> else > >> - printf("%-14s\t%s", ep->e_path, hname); > >> - if (!verbose) { > >> + printf(((export_format)? "%s %s" : "%-14s\t%s"), ep->e_path, hname); > >> + > >> + if (!verbose && !export_format) { > >> printf("\n"); > >> continue; > >> } > >> @@ -728,6 +733,6 @@ error(nfs_export *exp, int err) > >> static void > >> usage(const char *progname, int n) > >> { > >> - fprintf(stderr, "usage: %s [-afhioruv] [host:/path]\n", progname); > >> + fprintf(stderr, "usage: %s [-afhioruvs] [host:/path]\n", progname); > >> exit(n); > >> } > >> diff --git a/utils/exportfs/exportfs.man b/utils/exportfs/exportfs.man > >> index 8853486..590f9cf 100644 > >> --- a/utils/exportfs/exportfs.man > >> +++ b/utils/exportfs/exportfs.man > >> @@ -3,7 +3,7 @@ > >> .\" Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de> > >> .\" Modifications 1999-2003 Neil Brown <neilb@cse.unsw.edu.au> > >> .\" > >> -.TH exportfs 8 "31 December 2009" > >> +.TH exportfs 8 "30 September 2013" > >> .SH NAME > >> exportfs \- maintain table of exported NFS file systems > >> .SH SYNOPSIS > >> @@ -133,6 +133,9 @@ when they make their next NFS mount request. > >> Be verbose. When exporting or unexporting, show what's going on. When > >> displaying the current export list, also display the list of export > >> options. > >> +.TP > >> +.B -s > >> +Display the current export list suitable for /etc/exports. > >> .SH DISCUSSION > >> .SS Exporting Directories > >> The first synopsis shows how to invoke > >> -- > >> 1.8.2.1 > >> > >> -- > >> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > >> the body of a message to majordomo@vger.kernel.org > >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- > > To unsubscribe from this list: send the line "unsubscribe linux-nfs" in > > the body of a message to majordomo@vger.kernel.org > > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 21/10/13 10:01, J. Bruce Fields wrote: > On Mon, Oct 21, 2013 at 09:51:25AM -0400, Steve Dickson wrote: >> I guess we could change -v to used what the -s is proposing, >> but that could break someone's existing configuration... > > Also, looking at my home server.... It would be annoying to get: > > /export *(rw,sync,wdelay,hide,nocrossmnt,insecure,no_root_squash,no_all_squash,no_subtree_check,secure_locks,acl,anonuid=65534,anongid=65534) > > when all you need is: > > /export <world>(rw,wdelay,insecure,no_root_squash,no_subtree_check) > > (Actually I wonder why it's even showing wdelay and no_subtree_check > when those are both defaults? But this is on F16, maybe it's different > now. I should really update that machine.) No, the defaults have not changed for (quite) a while... The defaults are: ro, root_squash, wdelay, no_subtree_check Now it turns out wdelay (aka NFSEXP_GATHERED_WRITES) is a v2 only thing... So do we really need to have that on by default, now that we are slowly moving away from v2 support? steved. -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 02/10/13 13:19, Tony Asleson wrote: > Adds '-s' option which outputs the current exports in a format > suitable for /etc/exports. > > Signed-off-by: Tony Asleson <tasleson@redhat.com> > --- > utils/exportfs/exportfs.c | 23 ++++++++++++++--------- > utils/exportfs/exportfs.man | 5 ++++- > 2 files changed, 18 insertions(+), 10 deletions(-) Committed... steved. > > diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c > index 4331697..52fc03d 100644 > --- a/utils/exportfs/exportfs.c > +++ b/utils/exportfs/exportfs.c > @@ -38,7 +38,7 @@ static void export_all(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); > +static void dump(int verbose, int export_format); > static void error(nfs_export *exp, int err); > static void usage(const char *progname, int n); > static void validate_export(nfs_export *exp); > @@ -88,6 +88,7 @@ main(int argc, char **argv) > int f_export = 1; > int f_all = 0; > int f_verbose = 0; > + int f_export_format = 0; > int f_reexport = 0; > int f_ignore = 0; > int i, c; > @@ -105,7 +106,7 @@ main(int argc, char **argv) > > export_errno = 0; > > - while ((c = getopt(argc, argv, "afhio:ruv")) != EOF) { > + while ((c = getopt(argc, argv, "afhio:ruvs")) != EOF) { > switch(c) { > case 'a': > f_all = 1; > @@ -132,6 +133,9 @@ main(int argc, char **argv) > case 'v': > f_verbose = 1; > break; > + case 's': > + f_export_format = 1; > + break; > default: > usage(progname, 1); > break; > @@ -164,7 +168,7 @@ main(int argc, char **argv) > return 0; > } else { > xtab_export_read(); > - dump(f_verbose); > + dump(f_verbose, f_export_format); > return 0; > } > } > @@ -634,7 +638,7 @@ dumpopt(char c, char *fmt, ...) > } > > static void > -dump(int verbose) > +dump(int verbose, int export_format) > { > nfs_export *exp; > struct exportent *ep; > @@ -647,14 +651,15 @@ dump(int verbose) > if (!exp->m_xtabent) > continue; /* neilb */ > if (htype == MCL_ANONYMOUS) > - hname = "<world>"; > + hname = (export_format) ? "*" : "<world>"; > else > hname = ep->e_hostname; > - if (strlen(ep->e_path) > 14) > + if (strlen(ep->e_path) > 14 && !export_format) > printf("%-14s\n\t\t%s", ep->e_path, hname); > else > - printf("%-14s\t%s", ep->e_path, hname); > - if (!verbose) { > + printf(((export_format)? "%s %s" : "%-14s\t%s"), ep->e_path, hname); > + > + if (!verbose && !export_format) { > printf("\n"); > continue; > } > @@ -728,6 +733,6 @@ error(nfs_export *exp, int err) > static void > usage(const char *progname, int n) > { > - fprintf(stderr, "usage: %s [-afhioruv] [host:/path]\n", progname); > + fprintf(stderr, "usage: %s [-afhioruvs] [host:/path]\n", progname); > exit(n); > } > diff --git a/utils/exportfs/exportfs.man b/utils/exportfs/exportfs.man > index 8853486..590f9cf 100644 > --- a/utils/exportfs/exportfs.man > +++ b/utils/exportfs/exportfs.man > @@ -3,7 +3,7 @@ > .\" Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de> > .\" Modifications 1999-2003 Neil Brown <neilb@cse.unsw.edu.au> > .\" > -.TH exportfs 8 "31 December 2009" > +.TH exportfs 8 "30 September 2013" > .SH NAME > exportfs \- maintain table of exported NFS file systems > .SH SYNOPSIS > @@ -133,6 +133,9 @@ when they make their next NFS mount request. > Be verbose. When exporting or unexporting, show what's going on. When > displaying the current export list, also display the list of export > options. > +.TP > +.B -s > +Display the current export list suitable for /etc/exports. > .SH DISCUSSION > .SS Exporting Directories > The first synopsis shows how to invoke > -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/utils/exportfs/exportfs.c b/utils/exportfs/exportfs.c index 4331697..52fc03d 100644 --- a/utils/exportfs/exportfs.c +++ b/utils/exportfs/exportfs.c @@ -38,7 +38,7 @@ static void export_all(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); +static void dump(int verbose, int export_format); static void error(nfs_export *exp, int err); static void usage(const char *progname, int n); static void validate_export(nfs_export *exp); @@ -88,6 +88,7 @@ main(int argc, char **argv) int f_export = 1; int f_all = 0; int f_verbose = 0; + int f_export_format = 0; int f_reexport = 0; int f_ignore = 0; int i, c; @@ -105,7 +106,7 @@ main(int argc, char **argv) export_errno = 0; - while ((c = getopt(argc, argv, "afhio:ruv")) != EOF) { + while ((c = getopt(argc, argv, "afhio:ruvs")) != EOF) { switch(c) { case 'a': f_all = 1; @@ -132,6 +133,9 @@ main(int argc, char **argv) case 'v': f_verbose = 1; break; + case 's': + f_export_format = 1; + break; default: usage(progname, 1); break; @@ -164,7 +168,7 @@ main(int argc, char **argv) return 0; } else { xtab_export_read(); - dump(f_verbose); + dump(f_verbose, f_export_format); return 0; } } @@ -634,7 +638,7 @@ dumpopt(char c, char *fmt, ...) } static void -dump(int verbose) +dump(int verbose, int export_format) { nfs_export *exp; struct exportent *ep; @@ -647,14 +651,15 @@ dump(int verbose) if (!exp->m_xtabent) continue; /* neilb */ if (htype == MCL_ANONYMOUS) - hname = "<world>"; + hname = (export_format) ? "*" : "<world>"; else hname = ep->e_hostname; - if (strlen(ep->e_path) > 14) + if (strlen(ep->e_path) > 14 && !export_format) printf("%-14s\n\t\t%s", ep->e_path, hname); else - printf("%-14s\t%s", ep->e_path, hname); - if (!verbose) { + printf(((export_format)? "%s %s" : "%-14s\t%s"), ep->e_path, hname); + + if (!verbose && !export_format) { printf("\n"); continue; } @@ -728,6 +733,6 @@ error(nfs_export *exp, int err) static void usage(const char *progname, int n) { - fprintf(stderr, "usage: %s [-afhioruv] [host:/path]\n", progname); + fprintf(stderr, "usage: %s [-afhioruvs] [host:/path]\n", progname); exit(n); } diff --git a/utils/exportfs/exportfs.man b/utils/exportfs/exportfs.man index 8853486..590f9cf 100644 --- a/utils/exportfs/exportfs.man +++ b/utils/exportfs/exportfs.man @@ -3,7 +3,7 @@ .\" Copyright (C) 1995 Olaf Kirch <okir@monad.swb.de> .\" Modifications 1999-2003 Neil Brown <neilb@cse.unsw.edu.au> .\" -.TH exportfs 8 "31 December 2009" +.TH exportfs 8 "30 September 2013" .SH NAME exportfs \- maintain table of exported NFS file systems .SH SYNOPSIS @@ -133,6 +133,9 @@ when they make their next NFS mount request. Be verbose. When exporting or unexporting, show what's going on. When displaying the current export list, also display the list of export options. +.TP +.B -s +Display the current export list suitable for /etc/exports. .SH DISCUSSION .SS Exporting Directories The first synopsis shows how to invoke
Adds '-s' option which outputs the current exports in a format suitable for /etc/exports. Signed-off-by: Tony Asleson <tasleson@redhat.com> --- utils/exportfs/exportfs.c | 23 ++++++++++++++--------- utils/exportfs/exportfs.man | 5 ++++- 2 files changed, 18 insertions(+), 10 deletions(-)