[PATCH] exportfs: Add -s option.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Adds '-s' option which outputs the current exports in a format
suitable for /etc/exports.

Signed-off-by: Tony Asleson <tasleson@xxxxxxxxxx>
---
 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@xxxxxxxxxxxx>
 .\" Modifications 1999-2003 Neil Brown <neilb@xxxxxxxxxxxxxxx>
 .\"
-.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@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux