summaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorShawn Landden2022-08-27 19:56:21 +0200
committerDenys Vlasenko2022-08-27 19:56:21 +0200
commit58598eb7093561d914a6254697e137b815f1fdfc (patch)
treea1e15b99eb2deaebefa01a504498494a95c80f32 /libbb
parentd432049f288c9acdc4a7caa729c68ceba3c5dca1 (diff)
downloadbusybox-58598eb7093561d914a6254697e137b815f1fdfc.zip
busybox-58598eb7093561d914a6254697e137b815f1fdfc.tar.gz
ash: optional sleep builtin
function old new delta sleepcmd - 10 +10 builtintab 352 360 +8 .rodata 105264 105271 +7 ------------------------------------------------------------------------------ (add/remove: 1/0 grow/shrink: 2/0 up/down: 25/0) Total: 25 bytes Signed-off-by: Shawn Landden <shawnlandden@tutanota.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'libbb')
-rw-r--r--libbb/duration.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libbb/duration.c b/libbb/duration.c
index a6a29dd..793d02f 100644
--- a/libbb/duration.c
+++ b/libbb/duration.c
@@ -76,6 +76,12 @@ void FAST_FUNC sleep_for_duration(duration_t duration)
ts.tv_sec = duration;
ts.tv_nsec = (duration - ts.tv_sec) * 1000000000;
}
+ /* NB: if ENABLE_ASH_SLEEP, we end up here if "sleep N"
+ * is run in ash. ^C will still work, because ash's signal handler
+ * does not return (it longjumps), the below loop
+ * will not continue looping.
+ * (This wouldn't work in hush)
+ */
do {
errno = 0;
nanosleep(&ts, &ts);