busybox/libbb
Denys Vlasenko 6bdfbc4cb5 libbb: fix '--help' handling in FEATURE_SH_NOFORK=y
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().

Bug found by Ron Yorston.

function                                             old     new   delta
show_usage_if_dash_dash_help                           -      70     +70
run_nofork_applet                                    347     362     +15
run_applet_no_and_exit                               432     365     -67
------------------------------------------------------------------------------
(add/remove: 1/0 grow/shrink: 1/1 up/down: 85/-67)             Total: 18 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
2021-02-18 23:30:24 +01:00
..
appletlib.c libbb: fix '--help' handling in FEATURE_SH_NOFORK=y 2021-02-18 23:30:24 +01:00
ask_confirmation.c
auto_string.c
bb_askpass.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
bb_bswap_64.c
bb_cat.c
bb_do_delay.c libbb: make msleep() result in only one syscall instead of looping 2020-12-11 16:48:47 +01:00
bb_getgroups.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
bb_getsockname.c
bb_pwd.c
bb_qsort.c
bb_strtod.c
bb_strtonum.c
bbunit.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
capability.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
change_identity.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
chomp.c
common_bufsiz.c
compare_string_array.c libbb: code shrink and speed up index_in_strings() 2021-02-02 14:37:37 +01:00
concat_path_file.c
concat_subpath_file.c
Config.src build system: drop PLATFORM_LINUX 2020-08-13 17:12:56 +02:00
copy_file.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
copyfd.c libbb: create and use mmap() helpers 2020-12-14 18:25:28 +01:00
correct_password.c
crc32.c
default_error_retval.c
device_open.c
die_if_bad_username.c Fixes for Hurd build 2020-12-17 11:22:44 +01:00
dump.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
duration.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
endofname.c
executable.c libbb: rename run_shell() to exec_shell() 2020-12-02 21:28:47 +01:00
fclose_nonstdin.c
fflush_stdout_and_exit.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
fgets_str.c libbb: code shrink fgets_str 2021-02-03 20:43:07 +01:00
find_mount_point.c libbbb: find_mount_point() too eager to stat mounted devices 2019-04-29 17:59:08 +02:00
find_pid_by_name.c pidof: support "pidof /path/to/binary" case 2019-06-15 18:35:39 +02:00
find_root_device.c
full_write.c dd: fix handling of short result of full_write(), closes 11711 2019-05-14 17:49:14 +02:00
get_console.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
get_cpu_count.c
get_last_path_component.c
get_line_from_file.c
get_shell_name.c
get_volsize.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
getopt32.c
getopt_allopts.c
getpty.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
hash_md5_sha.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
hash_md5prime.c
herror_msg.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
human_readable.c
in_ether.c
inet_cksum.c gcc-9.x warning fixes 2020-10-01 03:07:22 +02:00
inet_common.c
inode_hash.c du: don't count duplicate arguments. Closes 5288 2019-02-19 17:08:39 +01:00
isdirectory.c
isqrt.c
Kbuild.src build system: drop PLATFORM_LINUX 2020-08-13 17:12:56 +02:00
kernel_version.c avoid using strok - eliminates use of hidden global variable 2020-10-06 02:36:47 +02:00
last_char_is.c libbb: shrink last_char_is(), no longer allow NULL string argument 2020-07-19 20:49:22 +02:00
lineedit_ptr_hack.c
lineedit.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
llist.c
logenv.c
login.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
loop.c mount: if we race with other loop mount, we forget to close loop dev 2020-12-17 23:38:06 +01:00
make_directory.c
makedev.c
match_fstype.c
messages.c
missing_syscalls.c Remove stime() function calls 2019-11-19 13:08:25 +01:00
mode_string.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
mtab.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
nuke_str.c
obscure.c
parse_config.c
parse_mode.c
percent_decode.c
perror_msg.c
perror_nomsg_and_die.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
perror_nomsg.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
pidfile.c do not duplicate CONFIG_PID_FILE_PATH and ".pid" strings 2019-03-17 19:48:39 +01:00
platform.c ash: placate -Werror=format-security 2021-02-18 13:45:49 +01:00
print_flags.c
print_numbered_lines.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
printable_string.c
printable.c
process_escape_sequence.c libbb: do not misinterpret 0x10-0x19 chars in "\xNNN" too 2018-11-29 13:16:15 +01:00
procps.c libbb/procps: smaller global data for username/groupname cache 2020-12-30 01:04:56 +01:00
progress.c wget: print the final newline only for non-tty output 2018-11-23 19:14:52 +01:00
ptr_to_globals.c libbb: extend "errno pointer" trick to other than __GLIBC__ 2020-10-01 00:34:44 +02:00
pw_encrypt_des.c libbb: make pw_encrypt() die if supplied salt is bad (e.g. emply) 2020-12-15 23:19:22 +01:00
pw_encrypt_md5.c
pw_encrypt_sha.c
pw_encrypt.c Fix missing "crypt.h" compilation error on the FreeBSD 2021-01-04 13:28:28 +01:00
read_key.c read_key(): placate "warning: shifting a negative signed value is undefined" 2019-10-25 17:40:57 +02:00
read_printf.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
read.c libbb: Converted safe_read to safe_write format 2019-10-09 14:35:55 +02:00
README
recursive_action.c libbb: shrink recursive_action() by reducing memory pressure 2020-10-01 21:52:16 +02:00
remove_file.c
replace.c replace: count_strstr - Handle an edge case where sub is empty 2019-10-09 14:39:41 +02:00
rtc.c move ADJTIME_PATH define to header files 2020-12-17 20:53:43 +01:00
run_shell.c libbb: exec_login_shell() - new function 2020-12-02 21:51:08 +01:00
safe_gethostname.c
safe_poll.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
safe_strncpy.c
safe_write.c
securetty.c
selinux_common.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
setup_environment.c
signals.c inetd: suppress aliasing warning 2018-12-08 15:35:24 +01:00
simplify_path.c
single_argv.c
skip_whitespace.c
speed_table.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
str_tolower.c
strrstr.c
sysconf.c
time.c libbb: introduce and use xgettimeofday(), do not truncate 64-bit time_t in shells 2020-12-30 23:48:01 +01:00
trim.c
u_signal_names.c
ubi.c
udp_io.c
unicode.c unicode: relax array alignment for tables 2020-11-30 11:30:17 +01:00
update_passwd.c update_passwd: fix context variable 2021-01-14 17:03:25 +01:00
utmp.c
uuencode.c base32/64: "truncated base64 input" -> "truncated input" 2020-11-28 13:43:54 +01:00
verror_msg.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
vfork_daemon_rexec.c libbb: fix '--help' handling in FEATURE_SH_NOFORK=y 2021-02-18 23:30:24 +01:00
warn_ignoring_args.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
wfopen_input.c
wfopen.c
write.c
xatonum_template.c
xatonum.c decrease paddign: gcc-9.3.1 slaps 32-byte alignment on arrays willy-nilly 2020-11-30 13:03:03 +01:00
xconnect.c libbb: set netlink socket revbuf size before binding 2020-11-22 13:12:51 +01:00
xfunc_die.c
xfuncs_printf.c libbb: introduce and use fputs_stdout 2021-02-03 20:52:40 +01:00
xfuncs.c libbb: introduce and use xsettimeofday() 2020-12-16 21:36:36 +01:00
xgetcwd.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
xgethostbyname.c libbb: reduce the overhead of single parameter bb_error_msg() calls 2019-07-02 11:35:03 +02:00
xreadlink.c libbb: deal with "declaration of 'link' shadows a global declaration" warning 2019-06-25 18:51:00 +02:00
xrealloc_vector.c
xregcomp.c

Please see the LICENSE file for copyright information (GPLv2)

libbb is BusyBox's utility library.  All of this stuff used to be stuffed into
a single file named utility.c.  When I split utility.c to create libbb, some of
the very oldest stuff ended up without their original copyright and licensing
information (which is now lost in the mists of time).  If you see something
that you wrote that is mis-attributed, do let me know so we can fix that up.

	Erik Andersen
	<andersen@codepoet.org>