[PATCH [mtd-utils] 1/3] nand{dump, test, write}: clean up --help handling
Mike Frysinger
vapier at gentoo.org
Wed May 8 19:02:03 EDT 2013
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 at 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 4b3e14d..4ee7ed4 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;
@@ -186,6 +183,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;
@@ -213,7 +213,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
More information about the linux-mtd
mailing list