* m4/nanosleep.m4 (gl_FUNC_NANOSLEEP): Fix typo in comment.
[gnulib.git] / m4 / nanosleep.m4
index af346b6..1d832a3 100644 (file)
@@ -1,4 +1,4 @@
-#serial 21
+#serial 23
 
 dnl From Jim Meyering.
 dnl Check for the nanosleep function.
@@ -17,6 +17,7 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
  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)
 
@@ -60,14 +61,20 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
          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;
@@ -85,7 +92,7 @@ AC_DEFUN([gl_FUNC_NANOSLEEP],
     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 "*) ;;