dup: Simplify autoconf test.
authorBruno Haible <bruno@clisp.org>
Sat, 24 Sep 2011 15:42:03 +0000 (17:42 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 24 Sep 2011 15:42:03 +0000 (17:42 +0200)
* m4/dup.m4 (gl_FUNC_DUP): Don't run a test program. Instead, just rely
on gl_MSVC_INVAL's result.

ChangeLog
m4/dup.m4

index a044b4e..3aca033 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2011-09-24  Bruno Haible  <bruno@clisp.org>
 
+       dup: Simplify autoconf test.
+       * m4/dup.m4 (gl_FUNC_DUP): Don't run a test program. Instead, just rely
+       on gl_MSVC_INVAL's result.
+
+2011-09-24  Bruno Haible  <bruno@clisp.org>
+
        Tests for function fwrite().
        * modules/fwrite-tests: New file.
        * tests/test-fwrite.c: New file.
index 8f2ec8f..83d4ecb 100644 (file)
--- a/m4/dup.m4
+++ b/m4/dup.m4
@@ -1,4 +1,4 @@
-# dup.m4 serial 1
+# dup.m4 serial 2
 dnl Copyright (C) 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,
@@ -7,35 +7,10 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_FUNC_DUP],
 [
   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_CHECK_HEADERS_ONCE([unistd.h])
-  AC_CACHE_CHECK([whether dup supports bad arguments], [gl_cv_func_dup_works],
-    [AC_RUN_IFELSE(
-       [AC_LANG_PROGRAM([[
-#if HAVE_UNISTD_H
-# include <unistd.h>
-#else
-# include <io.h>
-#endif
-#include <errno.h>
-]],
-          [[if (dup (-1) != -1)
-              return 1;
-            if (errno != EBADF)
-              return 2;
-            return 0;
-          ]])],
-       [gl_cv_func_dup_works=yes],
-       [gl_cv_func_dup_works=no],
-       [case "$host_os" in
-          mingw*) gl_cv_func_dup_works="guessing no" ;;
-          *)      gl_cv_func_dup_works="guessing yes" ;;
-        esac
-       ])
-    ])
-  case "$gl_cv_func_dup_works" in
-    *no) REPLACE_DUP=1 ;;
-  esac
+  AC_REQUIRE([gl_MSVC_INVAL])
+  if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+    REPLACE_DUP=1
+  fi
   dnl Replace dup() for supporting the gnulib-defined fchdir() function,
   dnl to keep fchdir's bookkeeping up-to-date.
   m4_ifdef([gl_FUNC_FCHDIR], [