aboutsummaryrefslogtreecommitdiff
path: root/libbb/bb_do_delay.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/bb_do_delay.c')
-rw-r--r--libbb/bb_do_delay.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/libbb/bb_do_delay.c b/libbb/bb_do_delay.c
index 3a86dc2ae..3dbf032db 100644
--- a/libbb/bb_do_delay.c
+++ b/libbb/bb_do_delay.c
@@ -8,7 +8,7 @@
8 */ 8 */
9#include "libbb.h" 9#include "libbb.h"
10 10
11/* void FAST_FUNC bb_do_delay(int seconds) { ... } - no users yet */ 11/* void FAST_FUNC bb_do_delay(unsigned seconds) { ... } - no users yet */
12 12
13#ifndef LOGIN_FAIL_DELAY 13#ifndef LOGIN_FAIL_DELAY
14#define LOGIN_FAIL_DELAY 3 14#define LOGIN_FAIL_DELAY 3
@@ -34,3 +34,16 @@ void FAST_FUNC sleep1(void)
34 sleep(1); 34 sleep(1);
35} 35}
36 36
37void FAST_FUNC msleep(unsigned ms)
38{
39 /* 1. usleep(n) is not guaranteed by standards to accept n >= 1000000
40 * 2. multiplication in usleep(ms * 1000) can overflow if ms > 4294967
41 * (sleep of ~71.5 minutes)
42 * Let's play safe and loop:
43 */
44 while (ms > 500) {
45 usleep(500000);
46 ms -= 500;
47 }
48 usleep(ms * 1000);
49}