aboutsummaryrefslogtreecommitdiff
path: root/std/stdlib.c
diff options
context:
space:
mode:
Diffstat (limited to 'std/stdlib.c')
-rw-r--r--std/stdlib.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/std/stdlib.c b/std/stdlib.c
index b70f5b7..dcb7ec3 100644
--- a/std/stdlib.c
+++ b/std/stdlib.c
@@ -1,9 +1,26 @@
-#include <unistd.h>
+#include <errno.h>
#include <stdlib.h>
#include <string.h>
+#include <time.h>
-void wait(float x) {
- sleep(x);
+int wait(int msec) {
+ struct timespec ts;
+ int res;
+
+ if (msec < 0)
+ {
+ errno = EINVAL;
+ return -1;
+ }
+
+ ts.tv_sec = msec / 1000;
+ ts.tv_nsec = (msec % 1000) * 1000000;
+
+ do {
+ res = nanosleep(&ts, &ts);
+ } while (res && errno == EINTR);
+
+ return res;
}
int slen(char *str) {