Add config option for --help support in all commands.
authorRob Landley <rob@landley.net>
Sun, 30 Jun 2013 20:58:24 +0000 (15:58 -0500)
committerRob Landley <rob@landley.net>
Sun, 30 Jun 2013 20:58:24 +0000 (15:58 -0500)
Config.in
main.c

index ae050b7..b96d584 100644 (file)
--- a/Config.in
+++ b/Config.in
@@ -41,6 +41,14 @@ config TOYBOX_HELP
        help
          Include help text for each command.
 
+config TOYBOX_HELP_DASHDASH
+       bool "--help"
+       default y
+       depends on TOYBOX_HELP
+       help
+         Support --help argument in all commands, even ones with a NULL
+         optstring. Produces the same output as "help command".
+
 config TOYBOX_I18N
        bool "Internationalization support"
        default y
diff --git a/main.c b/main.c
index b0b2bb2..ee16e64 100644 (file)
--- a/main.c
+++ b/main.c
@@ -84,6 +84,12 @@ void toy_init(struct toy_list *which, char *argv[])
 
   toys.which = which;
   toys.argv = argv;
+
+  if (CFG_TOYBOX_HELP_DASHDASH && argv[1] && !strcmp(argv[1], "--help")) {
+    show_help();
+    xexit();
+  }
+
   if (NEED_OPTIONS && which->options) get_optflags();
   else {
     toys.optargs = argv+1;
@@ -103,7 +109,7 @@ void toy_exec(char *argv[])
   toy_init(which, argv);
   toys.which->toy_main();
   if (fflush(NULL) || ferror(stdout)) perror_exit("write");
-  exit(toys.exitval);
+  xexit();
 }
 
 // Multiplexer command, first argument is command to run, rest are args to that.
@@ -116,7 +122,7 @@ void toybox_main(void)
 
   toys.which = toy_list;
   if (toys.argv[1]) {
-    if (CFG_TOYBOX_HELP && !strcmp(toys.argv[1], "--help")) {
+    if (CFG_TOYBOX_HELP_DASHDASH && !strcmp(toys.argv[1], "--help")) {
       if (toys.argv[2]) toys.which = toy_find(toys.argv[2]);
       if (toys.which) {
         show_help();