getdtablesize: Support for MSVC 9.
authorBruno Haible <bruno@clisp.org>
Fri, 23 Sep 2011 23:48:27 +0000 (01:48 +0200)
committerBruno Haible <bruno@clisp.org>
Fri, 23 Sep 2011 23:48:27 +0000 (01:48 +0200)
* 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.

ChangeLog
lib/getdtablesize.c
m4/getdtablesize.m4
modules/getdtablesize

index ef8dc92..ae72da7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 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.
        * modules/signal-h: Renamed from modules/signal.
        * modules/pthread_sigmask (Depends-on): Update.
index 60e7f5a..a07c4a2 100644 (file)
 
 #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;
 
index 40a598b..5f0fbf2 100644 (file)
@@ -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 @@ AC_DEFUN([gl_FUNC_GETDTABLESIZE],
     HAVE_GETDTABLESIZE=0
   fi
 ])
+
+# Prerequisites of lib/getdtablesize.c.
+AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [
+  AC_REQUIRE([AC_C_INLINE])
+])
index 3b195c0..109be1f 100644 (file)
@@ -7,11 +7,13 @@ m4/getdtablesize.m4
 
 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])