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 9793c42..49d6258 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
 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'.
        * modules/shutdown: New file.
        * lib/sys_socket.in.h (shutdown): New declaration.
index eaf2196..092f875 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 2c9d75c..474ba07 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