[PATCH] libbb: '--help' handling in standalone shell mode

Ron Yorston rmy at pobox.com
Thu Feb 18 07:44:15 UTC 2021

Most BusyBox applets respond to the '--help' option by printing
a usage message.  This is normally handled by busybox_main() so
applet main routines don't have support for '--help'.

In standalone shell mode with FEATURE_SH_NOFORK enabled nofork
applets are invoked directly, bypassing busybox_main().  This
results in inconsistent handling of '--help':

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

- realpath says "--help: No such file or directory" and doesn't
  print help;

- usleep says "invalid number '--help'" and doesn't print help.

Avoid inconsistency by checking for '--help' in run_nofork_applet().

Signed-off-by: Ron Yorston <rmy at pobox.com>
 libbb/vfork_daemon_rexec.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/libbb/vfork_daemon_rexec.c b/libbb/vfork_daemon_rexec.c
index 65271e84f..a9ce280dd 100644
--- a/libbb/vfork_daemon_rexec.c
+++ b/libbb/vfork_daemon_rexec.c
@@ -109,6 +109,8 @@ int FAST_FUNC run_nofork_applet(int applet_no, char **argv)
 		char *tmp_argv[argc+1];
 		memcpy(tmp_argv, argv, (argc+1) * sizeof(tmp_argv[0]));
 		applet_name = tmp_argv[0];
+		if (argc == 2 && strcmp(argv[1], "--help") == 0)
+			bb_show_usage();
 		/* Finally we can call NOFORK applet's main() */
 		rc = applet_main[applet_no](argc, tmp_argv);
 		/* Important for shells: `which CMD` was failing */

More information about the busybox mailing list