changeset 30317:996e2b9e227f

Make sleep work on older versions of mingw.
author Bruno Haible <bruno@clisp.org>
date Sat, 11 Oct 2008 23:39:55 +0200
parents e7c783077a65
children 0e995b5e2a32
files ChangeLog doc/posix-functions/sleep.texi m4/sleep.m4
diffstat 3 files changed, 21 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Oct 11 10:20:58 2008 -0700
+++ b/ChangeLog	Sat Oct 11 23:39:55 2008 +0200
@@ -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'.
--- a/doc/posix-functions/sleep.texi	Sat Oct 11 10:20:58 2008 -0700
+++ b/doc/posix-functions/sleep.texi	Sat Oct 11 23:39:55 2008 +0200
@@ -11,6 +11,10 @@
 @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:
--- a/m4/sleep.m4	Sat Oct 11 10:20:58 2008 -0700
+++ b/m4/sleep.m4	Sat Oct 11 23:39:55 2008 +0200
@@ -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 @@
 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