diff options
author | Rob Landley <rob@landley.net> | 2007-10-11 15:36:36 -0500 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2007-10-11 15:36:36 -0500 |
commit | d06c58df5c723594c4f214dd5d1842a178d2a5e1 (patch) | |
tree | 82d61cb9ff7de99de7702e6f8d7cf5d4ecca7bed | |
parent | 103b7e031c4de0f9753e02d2217aa81819242278 (diff) | |
download | toybox-d06c58df5c723594c4f214dd5d1842a178d2a5e1.tar.gz |
Promote help to global config option, teach error_exit() to output usage message when called
from get_optflags().
-rw-r--r-- | Config.in | 16 | ||||
-rw-r--r-- | lib/args.c | 2 | ||||
-rw-r--r-- | lib/lib.c | 12 | ||||
-rw-r--r-- | lib/lib.h | 1 | ||||
-rw-r--r-- | toys/Config.in | 16 | ||||
-rw-r--r-- | toys/help.c | 2 |
6 files changed, 25 insertions, 24 deletions
@@ -2,6 +2,22 @@ mainmenu "ToyBox Configuration" menu "Global settings" +config HELP + bool "help" + default y + help + usage: help [command] + + Show usage information for toybox commands. + +config HELP_LONG + bool "Verbose help text" + default y + depends on HELP + help + Show more than one line of help information per command. + + config TOYBOX_FREE bool "Free memory unnecessarily" default n @@ -133,6 +133,7 @@ void get_optflags(void) long *nextarg = (long *)&toy; char *options = toys.which->options; + if (CFG_HELP) toys.exithelp++; // Allocate memory for optargs maxargs = 0; while (toys.argv[maxargs++]); @@ -300,6 +301,7 @@ notflag: error_exit("Need %d argument%s", minargs, minargs ? "s" : ""); if (optarg>maxargs) error_exit("Max %d argument%s", maxargs, maxargs ? "s" : ""); + if (CFG_HELP) toys.exithelp = 0; } // Loop through files listed on the command line @@ -55,6 +55,12 @@ void error_exit(char *msg, ...) { va_list va; + if (CFG_HELP && toys.exithelp) { + *toys.optargs=*toys.argv; + help_main(); + fprintf(stderr,"\n"); + } + va_start(va, msg); verror_msg(msg, 0, va); va_end(va); @@ -75,12 +81,6 @@ void perror_exit(char *msg, ...) exit(toys.exitval); } -// Stub until the online help system goes in. -void usage_exit(void) -{ - exit(1); -} - // Die unless we can allocate memory. void *xmalloc(size_t size) { @@ -45,7 +45,6 @@ void error_msg(char *msg, ...); void perror_msg(char *msg, ...); void error_exit(char *msg, ...); void perror_exit(char *msg, ...); -void usage_exit(void); void *xmalloc(size_t size); void *xzalloc(size_t size); void *xrealloc(void *ptr, size_t size); diff --git a/toys/Config.in b/toys/Config.in index 8c3017cd..e0454229 100644 --- a/toys/Config.in +++ b/toys/Config.in @@ -101,22 +101,6 @@ config HELLO help A hello world program. You don't need this. -config HELP - bool "help" - default y - help - usage: help [command] - - Show usage information for toybox commands. - -config HELP_LONG - bool "Verbose help text" - default y - depends on HELP - help - Show more than one line of help information per command. - - config MDEV bool "mdev" default n diff --git a/toys/help.c b/toys/help.c index 6af743fc..4687d0ec 100644 --- a/toys/help.c +++ b/toys/help.c @@ -28,6 +28,6 @@ int help_main(void) s = help_data; } - printf("%s", s); + fprintf(toys.exithelp ? stderr : stdout, "%s", s); return 0; } |