[lvm-devel] [PATCH 2/2] Add --help dmsetup option as the synonym for help command.

Milan Broz mbroz at redhat.com
Sun Mar 7 10:32:44 UTC 2010


Many people (including myself) are repeatedly confused
that dmsetup doesn't understand usual --help option...
---
 WHATS_NEW_DM     |    1 +
 man/dmsetup.8.in |    4 ++++
 tools/dmsetup.c  |   14 ++++++++++++--
 3 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/WHATS_NEW_DM b/WHATS_NEW_DM
index 425ab88..1dc4904 100644
--- a/WHATS_NEW_DM
+++ b/WHATS_NEW_DM
@@ -1,6 +1,7 @@
 Version 1.02.45 -
 ====================================
   Add --showkeys parameter description into dmsetup man page.
+  Add --help option as the synonym for help command.
 
 Version 1.02.44 - 15th February 2010
 ====================================
diff --git a/man/dmsetup.8.in b/man/dmsetup.8.in
index 8a5eca8..9d2dcf2 100644
--- a/man/dmsetup.8.in
+++ b/man/dmsetup.8.in
@@ -112,6 +112,10 @@ Invoking the command as \fBdevmap_name\fP is equivalent to
 .IP \fB-c|-C|--columns
 .br
 Display output in columns rather than as Field: Value lines.
+.IP \fB-h|--help
+.br
+Outputs a summary of the commands available, optionally including
+the list of report fields (synonym with \fBhelp\fP command).
 .IP \fB--inactive
 .br
 When returning any table information from the kernel report on the 
diff --git a/tools/dmsetup.c b/tools/dmsetup.c
index 74af6f1..69fa128 100644
--- a/tools/dmsetup.c
+++ b/tools/dmsetup.c
@@ -124,6 +124,7 @@ enum {
 	EXEC_ARG,
 	FORCE_ARG,
 	GID_ARG,
+	HELP_ARG,
 	INACTIVE_ARG,
 	MAJOR_ARG,
 	MINOR_ARG,
@@ -2720,7 +2721,8 @@ static void _usage(FILE *out)
 	int i;
 
 	fprintf(out, "Usage:\n\n");
-	fprintf(out, "dmsetup [--version] [-v|--verbose [-v|--verbose ...]]\n"
+	fprintf(out, "dmsetup [--version] [-h|--help [-c|-C|--columns]]\n"
+		"        [-v|--verbose [-v|--verbose ...]]\n"
 		"        [-r|--readonly] [--noopencount] [--nolockfs] [--inactive]\n"
 		"        [--udevcookie] [--noudevrules] [--noudevsync] [-y|--yes]\n"
 		"        [--readahead [+]<sectors>|auto|none]\n"
@@ -3083,6 +3085,7 @@ static int _process_switches(int *argc, char ***argv, const char *dev_dir)
 		{"exec", 1, &ind, EXEC_ARG},
 		{"force", 0, &ind, FORCE_ARG},
 		{"gid", 1, &ind, GID_ARG},
+		{"help", 0, &ind, HELP_ARG},
 		{"inactive", 0, &ind, INACTIVE_ARG},
 		{"major", 1, &ind, MAJOR_ARG},
 		{"minor", 1, &ind, MINOR_ARG},
@@ -3167,10 +3170,12 @@ static int _process_switches(int *argc, char ***argv, const char *dev_dir)
 
 	optarg = 0;
 	optind = OPTIND_INIT;
-	while ((ind = -1, c = GETOPTLONG_FN(*argc, *argv, "cCfG:j:m:M:no:O:ru:U:vy",
+	while ((ind = -1, c = GETOPTLONG_FN(*argc, *argv, "cCfG:hj:m:M:no:O:ru:U:vy",
 					    long_options, NULL)) != -1) {
 		if (c == ':' || c == '?')
 			return 0;
+		if (c == 'h' || ind == HELP_ARG)
+			_switches[HELP_ARG]++;
 		if (c == 'c' || c == 'C' || ind == COLS_ARG)
 			_switches[COLS_ARG]++;
 		if (c == 'f' || ind == FORCE_ARG)
@@ -3329,6 +3334,11 @@ int main(int argc, char **argv)
 		goto out;
 	}
 
+	if (_switches[HELP_ARG]) {
+		c = _find_command("help");
+		goto doit;
+	}
+
 	if (_switches[VERSION_ARG]) {
 		c = _find_command("version");
 		goto doit;
-- 
1.7.0




More information about the lvm-devel mailing list