aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/toyflags.h3
-rw-r--r--main.c4
-rw-r--r--toys/posix/false.c2
-rw-r--r--toys/posix/true.c4
4 files changed, 9 insertions, 4 deletions
diff --git a/lib/toyflags.h b/lib/toyflags.h
index 963295cc..e809901d 100644
--- a/lib/toyflags.h
+++ b/lib/toyflags.h
@@ -25,3 +25,6 @@
// Call setlocale to listen to environment variables.
// This invalidates sprintf("%.*s", size, string) as a valid length constraint.
#define TOYFLAG_LOCALE (1<<8)
+
+// Suppress default --help processing
+#define TOYFLAG_NOHELP (1<<9)
diff --git a/main.c b/main.c
index 31e51b17..c0c1b824 100644
--- a/main.c
+++ b/main.c
@@ -75,7 +75,9 @@ static void toy_singleinit(struct toy_list *which, char *argv[])
if (CFG_TOYBOX_I18N) setlocale(LC_ALL, "C"+!!(which->flags & TOYFLAG_LOCALE));
- if (CFG_TOYBOX_HELP_DASHDASH && argv[1] && !strcmp(argv[1], "--help")) {
+ if (CFG_TOYBOX_HELP_DASHDASH && !(which->flags & TOYFLAG_NOHELP)
+ && argv[1] && !strcmp(argv[1], "--help"))
+ {
if (CFG_TOYBOX && toys.which == toy_list && toys.argv[2])
if (!(toys.which = toy_find(toys.argv[2]))) return;
show_help(stdout);
diff --git a/toys/posix/false.c b/toys/posix/false.c
index 73458bea..0853b010 100644
--- a/toys/posix/false.c
+++ b/toys/posix/false.c
@@ -4,7 +4,7 @@
*
* See http://opengroup.org/onlinepubs/9699919799/utilities/false.html
-USE_FALSE(NEWTOY(false, NULL, TOYFLAG_BIN))
+USE_FALSE(NEWTOY(false, NULL, TOYFLAG_BIN|TOYFLAG_NOHELP))
config FALSE
bool "false"
diff --git a/toys/posix/true.c b/toys/posix/true.c
index 0fbb1786..2543b821 100644
--- a/toys/posix/true.c
+++ b/toys/posix/true.c
@@ -4,8 +4,8 @@
*
* See http://opengroup.org/onlinepubs/9699919799/utilities/true.html
-USE_TRUE(NEWTOY(true, NULL, TOYFLAG_BIN))
-USE_TRUE(OLDTOY(:, true, TOYFLAG_NOFORK))
+USE_TRUE(NEWTOY(true, NULL, TOYFLAG_BIN|TOYFLAG_NOHELP))
+USE_TRUE(OLDTOY(:, true, TOYFLAG_NOFORK|TOYFLAG_NOHELP))
config TRUE
bool "true"