| From 13136162a073c90b24b61ac9919c785bb9ea65e2 Mon Sep 17 00:00:00 2001 |
| From: Mike Frysinger <vapier@gentoo.org> |
| Date: Wed, 8 May 2013 16:56:35 -0400 |
| Subject: [PATCH [mtd-utils] 09/12] nand{dump,test,write}: clean up --help |
| handling |
| |
| We should send the output to stdout when the user passes -h/--help |
| and then exit(0), but otherwise the output should go to stderr and |
| then exit(1). |
| |
| Signed-off-by: Mike Frysinger <vapier@gentoo.org> |
| --- |
| nanddump.c | 24 ++++++++++++------------ |
| nandtest.c | 16 ++++++++++------ |
| nandwrite.c | 26 +++++++++++++------------- |
| 3 files changed, 35 insertions(+), 31 deletions(-) |
| |
| diff --git a/nanddump.c b/nanddump.c |
| index 85ccd5d..c72d12b 100644 |
| --- a/nanddump.c |
| +++ b/nanddump.c |
| @@ -33,13 +33,13 @@ |
| #include "common.h" |
| #include <libmtd.h> |
| |
| -static void display_help(void) |
| +static void display_help(int status) |
| { |
| - printf( |
| + fprintf(status == EXIT_SUCCESS ? stdout : stderr, |
| "Usage: %s [OPTIONS] MTD-device\n" |
| "Dumps the contents of a nand mtd partition.\n" |
| "\n" |
| -" --help Display this help and exit\n" |
| +"-h --help Display this help and exit\n" |
| " --version Output version information and exit\n" |
| " --bb=METHOD Choose bad block handling method (see below).\n" |
| "-a --forcebinary Force printing of binary data to tty\n" |
| @@ -58,7 +58,7 @@ static void display_help(void) |
| " dumpbad: dump flash data, including any bad blocks\n" |
| " skipbad: dump good data, completely skipping any bad blocks (default)\n", |
| PROGRAM_NAME); |
| - exit(EXIT_SUCCESS); |
| + exit(status); |
| } |
| |
| static void display_version(void) |
| @@ -101,12 +101,12 @@ static void process_options(int argc, char * const argv[]) |
| |
| for (;;) { |
| int option_index = 0; |
| - static const char *short_options = "s:f:l:opqnca"; |
| + static const char short_options[] = "hs:f:l:opqnca"; |
| static const struct option long_options[] = { |
| - {"help", no_argument, 0, 0}, |
| {"version", no_argument, 0, 0}, |
| {"bb", required_argument, 0, 0}, |
| {"omitoob", no_argument, 0, 0}, |
| + {"help", no_argument, 0, 'h'}, |
| {"forcebinary", no_argument, 0, 'a'}, |
| {"canonicalprint", no_argument, 0, 'c'}, |
| {"file", required_argument, 0, 'f'}, |
| @@ -129,12 +129,9 @@ static void process_options(int argc, char * const argv[]) |
| case 0: |
| switch (option_index) { |
| case 0: |
| - display_help(); |
| - break; |
| - case 1: |
| display_version(); |
| break; |
| - case 2: |
| + case 1: |
| /* Handle --bb=METHOD */ |
| if (!strcmp(optarg, "padbad")) |
| bb_method = padbad; |
| @@ -145,7 +142,7 @@ static void process_options(int argc, char * const argv[]) |
| else |
| error++; |
| break; |
| - case 3: /* --omitoob */ |
| + case 2: /* --omitoob */ |
| if (oob_default) { |
| oob_default = false; |
| omitoob = true; |
| @@ -189,6 +186,9 @@ static void process_options(int argc, char * const argv[]) |
| case 'n': |
| noecc = true; |
| break; |
| + case 'h': |
| + display_help(EXIT_SUCCESS); |
| + break; |
| case '?': |
| error++; |
| break; |
| @@ -216,7 +216,7 @@ static void process_options(int argc, char * const argv[]) |
| } |
| |
| if ((argc - optind) != 1 || error) |
| - display_help(); |
| + display_help(EXIT_FAILURE); |
| |
| mtddev = argv[optind]; |
| } |
| diff --git a/nandtest.c b/nandtest.c |
| index 3437b57..1876bb2 100644 |
| --- a/nandtest.c |
| +++ b/nandtest.c |
| @@ -16,9 +16,10 @@ |
| #include <asm/types.h> |
| #include "mtd/mtd-user.h" |
| |
| -void usage(void) |
| +void usage(int status) |
| { |
| - fprintf(stderr, "usage: %s [OPTIONS] <device>\n\n" |
| + fprintf(status ? stderr : stdout, |
| + "usage: %s [OPTIONS] <device>\n\n" |
| " -h, --help Display this help output\n" |
| " -m, --markbad Mark blocks bad if they appear so\n" |
| " -s, --seed Supply random seed\n" |
| @@ -27,7 +28,7 @@ void usage(void) |
| " -l, --length Length of flash to test\n" |
| " -k, --keep Restore existing contents after test\n", |
| PROGRAM_NAME); |
| - exit(1); |
| + exit(status); |
| } |
| |
| struct mtd_info_user meminfo; |
| @@ -142,7 +143,7 @@ int main(int argc, char **argv) |
| seed = time(NULL); |
| |
| for (;;) { |
| - static const char *short_options="hkl:mo:p:s:"; |
| + static const char short_options[] = "hkl:mo:p:s:"; |
| static const struct option long_options[] = { |
| { "help", no_argument, 0, 'h' }, |
| { "markbad", no_argument, 0, 'm' }, |
| @@ -160,8 +161,11 @@ int main(int argc, char **argv) |
| |
| switch (c) { |
| case 'h': |
| + usage(0); |
| + break; |
| + |
| case '?': |
| - usage(); |
| + usage(1); |
| break; |
| |
| case 'm': |
| @@ -191,7 +195,7 @@ int main(int argc, char **argv) |
| } |
| } |
| if (argc - optind != 1) |
| - usage(); |
| + usage(1); |
| |
| fd = open(argv[optind], O_RDWR); |
| if (fd < 0) { |
| diff --git a/nandwrite.c b/nandwrite.c |
| index a6b6581..edf9f83 100644 |
| --- a/nandwrite.c |
| +++ b/nandwrite.c |
| @@ -42,9 +42,9 @@ |
| #include "common.h" |
| #include <libmtd.h> |
| |
| -static void display_help(void) |
| +static void display_help(int status) |
| { |
| - printf( |
| + fprintf(status == EXIT_SUCCESS ? stdout : stderr, |
| "Usage: nandwrite [OPTION] MTD_DEVICE [INPUTFILE|-]\n" |
| "Writes to the specified MTD device.\n" |
| "\n" |
| @@ -58,10 +58,10 @@ static void display_help(void) |
| " -p, --pad Pad to page size\n" |
| " -b, --blockalign=1|2|4 Set multiple of eraseblocks to align to\n" |
| " -q, --quiet Don't display progress messages\n" |
| -" --help Display this help and exit\n" |
| +" -h, --help Display this help and exit\n" |
| " --version Output version information and exit\n" |
| ); |
| - exit(EXIT_SUCCESS); |
| + exit(status); |
| } |
| |
| static void display_version(void) |
| @@ -99,10 +99,10 @@ static void process_options(int argc, char * const argv[]) |
| |
| for (;;) { |
| int option_index = 0; |
| - static const char *short_options = "b:mnNoOpqs:a"; |
| + static const char short_options[] = "hb:mnNoOpqs:a"; |
| static const struct option long_options[] = { |
| - {"help", no_argument, 0, 0}, |
| {"version", no_argument, 0, 0}, |
| + {"help", no_argument, 0, 'h'}, |
| {"blockalign", required_argument, 0, 'b'}, |
| {"markbad", no_argument, 0, 'm'}, |
| {"noecc", no_argument, 0, 'n'}, |
| @@ -124,12 +124,9 @@ static void process_options(int argc, char * const argv[]) |
| switch (c) { |
| case 0: |
| switch (option_index) { |
| - case 0: |
| - display_help(); |
| - break; |
| - case 1: |
| - display_version(); |
| - break; |
| + case 0: /* --version */ |
| + display_version(); |
| + break; |
| } |
| break; |
| case 'q': |
| @@ -163,6 +160,9 @@ static void process_options(int argc, char * const argv[]) |
| case 'a': |
| autoplace = true; |
| break; |
| + case 'h': |
| + display_help(EXIT_SUCCESS); |
| + break; |
| case '?': |
| error++; |
| break; |
| @@ -192,7 +192,7 @@ static void process_options(int argc, char * const argv[]) |
| */ |
| |
| if (argc < 1 || argc > 2 || error) |
| - display_help(); |
| + display_help(EXIT_FAILURE); |
| |
| mtd_device = argv[0]; |
| |
| -- |
| 1.8.2.1 |
| |