Running an applet with '--help' as its only argument is treated
as a special case.  If additional arguments follow '--help' the
behaviour is inconsistent:

- applets which call single_argv() print help and do nothing else;

- applets which call getopt() report "unrecognized option '--help'"
  and print help anyway;

- expr says "expr: syntax error" and doesn't print help;

- printenv silently ignores '--help', prints any other variables
  and doesn't print help;

- realpath says "--help: No such file or directory", prints the path
  of any other files and doesn't print help.

If the first argument is '--help' ignore any other arguments and print
help.  This is more consistent and most likely what the user wanted.

See also commit 6bdfbc4cb (libbb: fix '--help' handling in
FEATURE_SH_NOFORK=y).

function                                             old     new   delta
show_usage_if_dash_dash_help                          75      69      -6
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-6)               Total: -6 bytes

Signed-off-by: Ron Yorston <r...@pobox.com>
---
 libbb/appletlib.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index 841b3b873..d56b5b409 100644
--- a/libbb/appletlib.c
+++ b/libbb/appletlib.c
@@ -258,7 +258,6 @@ void lbb_prepare(const char *applet
        /* Redundant for busybox (run_applet_and_exit covers that case)
         * but needed for "individual applet" mode */
        if (argv[1]
-        && !argv[2]
         && strcmp(argv[1], "--help") == 0
         && !is_prefixed_with(applet, "busybox")
        ) {
@@ -940,8 +939,8 @@ void FAST_FUNC show_usage_if_dash_dash_help(int applet_no, 
char **argv)
         && applet_no != APPLET_NO_echo
 #  endif
        ) {
-               if (argv[1] && !argv[2] && strcmp(argv[1], "--help") == 0) {
-                       /* Make "foo --help" exit with 0: */
+               if (argv[1] && strcmp(argv[1], "--help") == 0) {
+                       /* Make "foo --help [...]" exit with 0: */
                        xfunc_error_retval = 0;
                        bb_show_usage();
                }
-- 
2.35.1

_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to