-#serial 21
+#serial 23
dnl From Jim Meyering.
dnl Check for the nanosleep function.
dnl Persuade glibc and Solaris <time.h> to declare nanosleep.
AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ AC_REQUIRE([gl_HEADER_TIME_H_DEFAULTS])
AC_REQUIRE([gl_CLOCK_TIME])
AC_CHECK_HEADERS_ONCE(sys/time.h)
static struct timespec ts_sleep;
static struct timespec ts_remaining;
static struct sigaction act;
+ if (! nanosleep)
+ return 1;
act.sa_handler = check_for_SIGALRM;
- sigemptyset (&act.sa_mask);
+ sigemptyset (&act.sa_mask);
sigaction (SIGALRM, &act, NULL);
+ ts_sleep.tv_sec = 0;
+ ts_sleep.tv_nsec = 1;
+ alarm (1);
+ if (nanosleep (&ts_sleep, NULL) != 0)
+ return 1;
ts_sleep.tv_sec = TYPE_MAXIMUM (time_t);
ts_sleep.tv_nsec = 999999999;
alarm (1);
if (nanosleep (&ts_sleep, &ts_remaining) == -1 && errno == EINTR
- && nanosleep
&& TYPE_MAXIMUM (time_t) - 10 < ts_remaining.tv_sec)
return 0;
return 119;
REPLACE_NANOSLEEP=1
if test "$gl_cv_func_nanosleep" = 'no (mishandles large arguments)'; then
AC_DEFINE([HAVE_BUG_BIG_NANOSLEEP], 1,
- [Define to 1 if nanosleep mishandle large arguments.])
+ [Define to 1 if nanosleep mishandles large arguments.])
for ac_lib in $LIB_CLOCK_GETTIME; do
case " $LIB_NANOSLEEP " in
*" $ac_lib "*) ;;