From 5c62002cc864b92f9c1517449e197c55adb9ff44 Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Tue, 30 Dec 2003 10:45:45 +0000 Subject: Make sleep behave itself properly inthe presence of SIGCHLD --- libc/unistd/sleep.c | 9 +++------ libc/unistd/usleep.c | 10 +++++----- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/libc/unistd/sleep.c b/libc/unistd/sleep.c index 2b3187ebc..20689da0e 100644 --- a/libc/unistd/sleep.c +++ b/libc/unistd/sleep.c @@ -23,17 +23,14 @@ #include #include -#if 1 +#if 0 /* This is a quick and dirty, but not 100% compliant with * the stupid SysV SIGCHLD vs. SIG_IGN behaviour. It is * fine unless you are messing with SIGCHLD... */ unsigned int sleep (unsigned int sec) { unsigned int res; - struct timespec ts = { - tv_sec: (long int) sec, - tv_nsec: 0 - }; + struct timespec ts = { .tv_sec = (long int) seconds, .tv_nsec = 0 }; res = nanosleep(&ts, &ts); if (res) res = (unsigned int) ts.tv_sec + (ts.tv_nsec >= 500000000L); return res; @@ -46,7 +43,7 @@ unsigned int sleep (unsigned int sec) behaviour for this syscall. Therefore we have to emulate it here. */ unsigned int sleep (unsigned int seconds) { - struct timespec ts = { tv_sec: (long int) seconds, tv_nsec: 0 }; + struct timespec ts = { .tv_sec = (long int) seconds, .tv_nsec = 0 }; sigset_t set, oset; unsigned int result; diff --git a/libc/unistd/usleep.c b/libc/unistd/usleep.c index 25979681d..55e8f3fb7 100644 --- a/libc/unistd/usleep.c +++ b/libc/unistd/usleep.c @@ -5,9 +5,9 @@ int usleep (__useconds_t usec) { - const struct timespec ts = { - tv_sec: (long int)(usec / 1000000), - tv_nsec: (long int) (usec % 1000000) * 1000ul }; - return(nanosleep(&ts, NULL)); + const struct timespec ts = { + .tv_sec = (long int) (usec / 1000000), + .tv_nsec = (long int) (usec % 1000000) * 1000ul + }; + return(nanosleep(&ts, NULL)); } - -- cgit v1.2.3