diff options
author | Denys Vlasenko | 2023-07-10 10:52:41 +0200 |
---|---|---|
committer | Denys Vlasenko | 2023-07-10 10:53:23 +0200 |
commit | 5e0411a7fb510b9aecda0a850c76bdd62c50efa4 (patch) | |
tree | d3698f53c76998c940131e18aca0cf5e025c6605 /include | |
parent | 6ce1dc2e91398145633ceaff7a6fecc786826277 (diff) | |
download | busybox-5e0411a7fb510b9aecda0a850c76bdd62c50efa4.zip busybox-5e0411a7fb510b9aecda0a850c76bdd62c50efa4.tar.gz |
ash: disable sleep as builtin, closes 15619
Has a few annoying problems:
* sleepcmd() -> sleep_main(), the parsing of bad arguments exits the shell.
* sleep_for_duration() in sleep_main() has to be interruptible for
^C traps to work, which may be a problem for other users
of sleep_for_duration().
* BUT, if sleep_for_duration() is interruptible, then SIGCHLD interrupts it
as well (try "/bin/sleep 1 & sleep 10").
* sleep_main() must not allocate anything as ^C in ash longjmp's.
(currently, allocations are only on error paths, in message printing).
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/libbb.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/libbb.h b/include/libbb.h index 18336da..640fa39 100644 --- a/include/libbb.h +++ b/include/libbb.h @@ -1513,6 +1513,8 @@ int hush_main(int argc, char** argv) IF_SHELL_HUSH(MAIN_EXTERNALLY_VISIBLE); /* If shell needs them, they exist even if not enabled as applets */ int echo_main(int argc, char** argv) IF_ECHO(MAIN_EXTERNALLY_VISIBLE); int sleep_main(int argc, char **argv) IF_SLEEP(MAIN_EXTERNALLY_VISIBLE); +/* See disabled "config ASH_SLEEP" in ash.c */ +#define ENABLE_ASH_SLEEP 0 int printf_main(int argc, char **argv) IF_PRINTF(MAIN_EXTERNALLY_VISIBLE); int test_main(int argc, char **argv) #if ENABLE_TEST || ENABLE_TEST1 || ENABLE_TEST2 |