Browse Source

Make sleep behave itself properly inthe presence of SIGCHLD

Eric Andersen 20 years ago
parent
commit
5c62002cc8
2 changed files with 8 additions and 11 deletions
  1. 3 6
      libc/unistd/sleep.c
  2. 5 5
      libc/unistd/usleep.c

+ 3 - 6
libc/unistd/sleep.c

@@ -23,17 +23,14 @@
 #include <signal.h>
 #include <unistd.h>
 
-#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;
 

+ 5 - 5
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));
 }
-