[git commit] libbb: make '--help' handling more consistent
Denys Vlasenko
vda.linux at googlemail.com
Mon Aug 22 12:05:01 UTC 2022
commit: https://git.busybox.net/busybox/commit/?id=5a9d2b6e024e6c20d4d7b8c170985554c0df043d
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
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 <rmy at pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
libbb/appletlib.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/libbb/appletlib.c b/libbb/appletlib.c
index d8ab2a450..9b9d7dbd6 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();
}
More information about the busybox-cvs
mailing list