X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=m4%2Fsleep.m4;h=74362e49b53be84b908aea16c0e178238810d5fe;hb=9723bfe9bb9af8309314ad6230f7661000ba03b1;hp=474ba07ba9814e952a07d31370130d5502fefd5e;hpb=f3c6a2280ea9aa73e8976c5bb3bc8dea2164b682;p=gnulib.git diff --git a/m4/sleep.m4 b/m4/sleep.m4 index 474ba07ba..74362e49b 100644 --- a/m4/sleep.m4 +++ b/m4/sleep.m4 @@ -1,5 +1,5 @@ -# sleep.m4 serial 2 -dnl Copyright (C) 2007-2008 Free Software Foundation, Inc. +# sleep.m4 serial 6 +dnl Copyright (C) 2007-2011 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. @@ -12,13 +12,41 @@ AC_DEFUN([gl_FUNC_SLEEP], dnl _sleep() in MSVCRT. It has a different signature than POSIX sleep(): dnl it takes the number of milliseconds as argument and returns void. dnl mingw does not declare this function. - AC_CHECK_DECLS([sleep], , , [#include ]) + AC_CHECK_DECLS([sleep], , , [[#include ]]) + AC_CHECK_FUNCS_ONCE([sleep]) if test $ac_cv_have_decl_sleep != yes; then HAVE_SLEEP=0 - AC_LIBOBJ([sleep]) - gl_PREREQ_SLEEP + else + dnl Cygwin 1.5.x has a bug where sleep can't exceed 49.7 days. + AC_CACHE_CHECK([for working sleep], [gl_cv_func_sleep_works], + [AC_RUN_IFELSE([AC_LANG_PROGRAM([[ +#include +#include +#include +static void +handle_alarm (int sig) +{ + if (sig != SIGALRM) + _exit (2); +} +]], [[ + /* Failure to compile this test due to missing alarm is okay, + since all such platforms (mingw) also lack sleep. */ + unsigned int pentecost = 50 * 24 * 60 * 60; /* 50 days. */ + unsigned int remaining; + signal (SIGALRM, handle_alarm); + alarm (1); + remaining = sleep (pentecost); + if (remaining > pentecost) + return 3; + if (remaining <= pentecost - 10) + return 4; + return 0; + ]])], + [gl_cv_func_sleep_works=yes], [gl_cv_func_sleep_works=no], + [gl_cv_func_sleep_works="guessing no"])]) + if test "$gl_cv_func_sleep_works" != yes; then + REPLACE_SLEEP=1 + fi fi ]) - -# Prerequisites of lib/sleep.c. -AC_DEFUN([gl_PREREQ_SLEEP], [:])