X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=m4%2Fsleep.m4;h=a5ec655201ebbddd8353e70df6564576dbc4f197;hb=22f1eb8bc17e5be72dd23d42d6aaa60196ac22e6;hp=474ba07ba9814e952a07d31370130d5502fefd5e;hpb=00fa13ff3f2d5b6e2a94c5e948c38616ff7ad37a;p=debian%2Ftar diff --git a/m4/sleep.m4 b/m4/sleep.m4 index 474ba07b..a5ec6552 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 3 +dnl Copyright (C) 2007-2010 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. @@ -13,12 +13,37 @@ AC_DEFUN([gl_FUNC_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_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); + return !(pentecost - 10 < remaining && remaining <= pentecost);]])], + [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 + AC_LIBOBJ([sleep]) + fi fi ]) - -# Prerequisites of lib/sleep.c. -AC_DEFUN([gl_PREREQ_SLEEP], [:])