changeset 15759:4583838a5587

getdtablesize: Support for MSVC 9. * lib/getdtablesize.c: Include msvc-inval.h. (_setmaxstdio_nothrow): New function. (_setmaxstdio): Redefine it. * m4/getdtablesize.m4 (gl_PREREQ_GETDTABLESIZE): New macro. * modules/getdtablesize (Depends-on): Add msvc-inval. (configure.ac): Invoke gl_PREREQ_GETDTABLESIZE.
author Bruno Haible <bruno@clisp.org>
date Sat, 24 Sep 2011 01:48:27 +0200
parents 51a803e5cfdc
children 45b9be95a543
files ChangeLog lib/getdtablesize.c m4/getdtablesize.m4 modules/getdtablesize
diffstat 4 files changed, 41 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2011-09-23  Bruno Haible  <bruno@clisp.org>
+
+	getdtablesize: Support for MSVC 9.
+	* lib/getdtablesize.c: Include msvc-inval.h.
+	(_setmaxstdio_nothrow): New function.
+	(_setmaxstdio): Redefine it.
+	* m4/getdtablesize.m4 (gl_PREREQ_GETDTABLESIZE): New macro.
+	* modules/getdtablesize (Depends-on): Add msvc-inval.
+	(configure.ac): Invoke gl_PREREQ_GETDTABLESIZE.
+
 2011-09-23  Bruno Haible  <bruno@clisp.org>
 
 	signal-h: Rename from signal.
--- a/lib/getdtablesize.c
+++ b/lib/getdtablesize.c
@@ -24,6 +24,29 @@
 
 #include <stdio.h>
 
+#include "msvc-inval.h"
+
+#if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+static inline int
+_setmaxstdio_nothrow (int newmax)
+{
+  int result;
+
+  TRY_MSVC_INVAL
+    {
+      result = _setmaxstdio (newmax);
+    }
+  CATCH_MSVC_INVAL
+    {
+      result = -1;
+    }
+  DONE_MSVC_INVAL;
+
+  return result;
+}
+# define _setmaxstdio _setmaxstdio_nothrow
+#endif
+
 /* Cache for the previous getdtablesize () result.  */
 static int dtablesize;
 
--- a/m4/getdtablesize.m4
+++ b/m4/getdtablesize.m4
@@ -1,4 +1,4 @@
-# getdtablesize.m4 serial 2
+# getdtablesize.m4 serial 3
 dnl Copyright (C) 2008-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,
@@ -12,3 +12,8 @@
     HAVE_GETDTABLESIZE=0
   fi
 ])
+
+# Prerequisites of lib/getdtablesize.c.
+AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [
+  AC_REQUIRE([AC_C_INLINE])
+])
--- a/modules/getdtablesize
+++ b/modules/getdtablesize
@@ -7,11 +7,13 @@
 
 Depends-on:
 unistd
+msvc-inval      [test $HAVE_GETDTABLESIZE = 0]
 
 configure.ac:
 gl_FUNC_GETDTABLESIZE
 if test $HAVE_GETDTABLESIZE = 0; then
   AC_LIBOBJ([getdtablesize])
+  gl_PREREQ_GETDTABLESIZE
 fi
 gl_UNISTD_MODULE_INDICATOR([getdtablesize])