summaryrefslogtreecommitdiff
path: root/m4/fdopen.m4
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2011-09-24 18:08:50 +0200
committerBruno Haible <bruno@clisp.org>2011-09-24 18:08:50 +0200
commit09001dfb3ec39d237f8e248ff347cf1be3e6f0c1 (patch)
tree6b4a6b865cc1cd2201918fa77bd182abfd424fa9 /m4/fdopen.m4
parenteab930966c2c1f42916fd775f4466a29192bbaa3 (diff)
downloadgnulib-09001dfb3ec39d237f8e248ff347cf1be3e6f0c1.tar.gz
fdopen: Support for MSVC 9.
* m4/fdopen.m4 (gl_FUNC_FDOPEN): Set REPLACE_FDOPEN also if HAVE_MSVC_INVALID_PARAMETER_HANDLER is 1. * lib/fdopen.c: Include msvc-inval.h. (fdopen_nothrow): New function. (rpl_fdopen): Use it. * modules/fdopen (Depends-on): Add msvc-inval. * modules/fclose-tests (Depends-on): Add fdopen. * modules/fflush-tests (Depends-on): Likewise. * modules/fgetc-tests (Depends-on): Likewise. * modules/fputc-tests (Depends-on): Likewise. * modules/fread-tests (Depends-on): Likewise. * modules/freopen-tests (Depends-on): Likewise. * modules/fseeko-tests (Depends-on): Likewise. * modules/ftello-tests (Depends-on): Likewise. * modules/fwrite-tests (Depends-on): Likewise. * doc/posix-functions/fdopen.texi: Mention the problem on MSVC.
Diffstat (limited to 'm4/fdopen.m4')
-rw-r--r--m4/fdopen.m440
1 files changed, 22 insertions, 18 deletions
diff --git a/m4/fdopen.m4 b/m4/fdopen.m4
index dd2cf264d6..8cae2fc273 100644
--- a/m4/fdopen.m4
+++ b/m4/fdopen.m4
@@ -1,4 +1,4 @@
-# fdopen.m4 serial 1
+# fdopen.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,
@@ -8,12 +8,15 @@ AC_DEFUN([gl_FUNC_FDOPEN],
[
AC_REQUIRE([gl_STDIO_H_DEFAULTS])
AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-
- dnl Test whether fdopen() sets errno when it fails due to a bad fd argument.
- AC_CACHE_CHECK([whether fdopen sets errno], [gl_cv_func_fdopen_works],
- [
- AC_RUN_IFELSE(
- [AC_LANG_SOURCE([[
+ AC_REQUIRE([gl_MSVC_INVAL])
+ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+ REPLACE_FDOPEN=1
+ else
+ dnl Test whether fdopen() sets errno when it fails due to a bad fd argument.
+ AC_CACHE_CHECK([whether fdopen sets errno], [gl_cv_func_fdopen_works],
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
#include <stdio.h>
#include <errno.h>
int
@@ -28,17 +31,18 @@ main (void)
return 2;
return 0;
}]])],
- [gl_cv_func_fdopen_works=yes],
- [gl_cv_func_fdopen_works=no],
- [case "$host_os" in
- mingw*) gl_cv_func_fdopen_works="guessing no" ;;
- *) gl_cv_func_fdopen_works="guessing yes" ;;
- esac
- ])
- ])
- case "$gl_cv_func_fdopen_works" in
- *no) REPLACE_FDOPEN=1 ;;
- esac
+ [gl_cv_func_fdopen_works=yes],
+ [gl_cv_func_fdopen_works=no],
+ [case "$host_os" in
+ mingw*) gl_cv_func_fdopen_works="guessing no" ;;
+ *) gl_cv_func_fdopen_works="guessing yes" ;;
+ esac
+ ])
+ ])
+ case "$gl_cv_func_fdopen_works" in
+ *no) REPLACE_FDOPEN=1 ;;
+ esac
+ fi
])
dnl Prerequisites of lib/fdopen.c.