Make sleep work on older versions of mingw.
authorBruno Haible <bruno@clisp.org>
Sat, 11 Oct 2008 21:39:55 +0000 (23:39 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 11 Oct 2008 21:39:55 +0000 (23:39 +0200)
ChangeLog
doc/posix-functions/sleep.texi
m4/sleep.m4

index 9793c42e1edae1e6d8384c0f6fe0ddc6c754d8ed..49d6258e05a995063223eec005ef226f852842e9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-10-11  Bruno Haible  <bruno@clisp.org>
+
+       Make sleep work on older versions of mingw.
+       * m4/sleep.m4 (gl_FUNC_SLEEP): Test whether 'sleep' is declared, not
+       only whether it exists.
+       * doc/posix-functions/sleep.texi: Mention the problem with older
+       versions of mingw.
+
 2008-10-11  Bruno Haible  <bruno@clisp.org>
 
        New module 'shutdown'.
index eaf2196f95a2ad89919595da556e073f7345d492..092f875c219f2c46344235155a84f372a416680f 100644 (file)
@@ -11,6 +11,10 @@ Portability problems fixed by Gnulib:
 @item
 This function is missing on some platforms:
 mingw (2005 or newer).
+@item
+This function takes milliseconds as argument and returns @code{void} on some
+platforms:
+mingw (2005 and older).
 @end itemize
 
 Portability problems not fixed by Gnulib:
index 2c9d75cd6f140b103f7aa10fdffa028cc8e3706a..474ba07ba9814e952a07d31370130d5502fefd5e 100644 (file)
@@ -1,5 +1,5 @@
-# sleep.m4 serial 1
-dnl Copyright (C) 2007 Free Software Foundation, Inc.
+# sleep.m4 serial 2
+dnl Copyright (C) 2007-2008 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.
@@ -7,8 +7,13 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_FUNC_SLEEP],
 [
   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  AC_CHECK_FUNCS_ONCE([sleep])
-  if test $ac_cv_func_sleep = no; then
+  dnl We expect to see the declaration of sleep() in a header file.
+  dnl Older versions of mingw have a sleep() function that is an alias to
+  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 <unistd.h>])
+  if test $ac_cv_have_decl_sleep != yes; then
     HAVE_SLEEP=0
     AC_LIBOBJ([sleep])
     gl_PREREQ_SLEEP