X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fnanosleep.c;h=902fd2dfe0f258e90656538ead77e7526f383d53;hb=ad90f263a4e49f9906dd87e59cf1b928d93a77df;hp=1f17c09cf51eb11404e6c8d2e1a2fea6ca7fd337;hpb=c22596ddde51626c839f6128623f0f5eb3483603;p=gnulib.git diff --git a/lib/nanosleep.c b/lib/nanosleep.c index 1f17c09cf..902fd2dfe 100644 --- a/lib/nanosleep.c +++ b/lib/nanosleep.c @@ -1,5 +1,5 @@ /* Provide a replacement for the POSIX nanosleep function. - Copyright (C) 1999, 2000 Free Software Foundation, Inc. + Copyright (C) 1999, 2000, 2002 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,11 @@ /* written by Jim Meyering */ #include + +/* Undefine nanosleep here so any prototype is not redefined to be a + prototype for rpl_nanosleep. (they'd conflict e.g., on alpha-dec-osf3.2) */ +#undef nanosleep + #include #include #include @@ -31,7 +36,14 @@ extern int errno; # include #endif -#include "nanosleep.h" +/* Some systems (MSDOS) don't have SIGCONT. + Using SIGTERM here turns the signal-handling code below + into a no-op on such systems. */ +#ifndef SIGCONT +# define SIGCONT SIGTERM +#endif + +#include "timespec.h" static int suspended; int first_call = 1; @@ -58,10 +70,10 @@ my_usleep (const struct timespec *ts_delay) /* FIXME: comment */ int -nanosleep (const struct timespec *requested_delay, - struct timespec *remaining_delay) +rpl_nanosleep (const struct timespec *requested_delay, + struct timespec *remaining_delay) { -#ifdef SA_INTERRUPT +#ifdef SA_NOCLDSTOP struct sigaction oldact, newact; #endif @@ -70,7 +82,7 @@ nanosleep (const struct timespec *requested_delay, /* set up sig handler */ if (first_call) { -#ifdef SA_INTERRUPT +#ifdef SA_NOCLDSTOP newact.sa_handler = sighandler; sigemptyset (&newact.sa_mask); newact.sa_flags = 0;