* lib/ftruncate.c: Include errno.h, msvc-inval.h.
(chsize_nothrow): New function.
(chsize): Redefine as a macro.
* m4/ftruncate.m4 (gl_PREREQ_FTRUNCATE): Require AC_C_INLINE.
* modules/ftruncate (Depends-on): Add msvc-inval.
+2011-09-25 Bruno Haible <bruno@clisp.org>
+
+ ftruncate: Support for MSVC 9.
+ * lib/ftruncate.c: Include errno.h, msvc-inval.h.
+ (chsize_nothrow): New function.
+ (chsize): Redefine as a macro.
+ * m4/ftruncate.m4 (gl_PREREQ_FTRUNCATE): Require AC_C_INLINE.
+ * modules/ftruncate (Depends-on): Add msvc-inval.
+
2011-09-25 Bruno Haible <bruno@clisp.org>
New module 'fstat'.
#if HAVE_CHSIZE
+# include <errno.h>
# include <io.h>
+# if HAVE_MSVC_INVALID_PARAMETER_HANDLER
+# include "msvc-inval.h"
+static inline int
+chsize_nothrow (int fd, long length)
+{
+ int result;
+
+ TRY_MSVC_INVAL
+ {
+ result = chsize (fd, length);
+ }
+ CATCH_MSVC_INVAL
+ {
+ result = -1;
+ errno = EBADF;
+ }
+ DONE_MSVC_INVAL;
+
+ return result;
+}
+# define chsize chsize_nothrow
+# endif
+
int
ftruncate (int fd, off_t length)
{
-# serial 17
+# serial 18
# See if we need to emulate a missing ftruncate function using chsize.
# Prerequisites of lib/ftruncate.c.
AC_DEFUN([gl_PREREQ_FTRUNCATE],
[
+ AC_REQUIRE([AC_C_INLINE])
AC_CHECK_FUNCS([chsize])
])
Depends-on:
unistd
largefile
+msvc-inval [test $HAVE_FTRUNCATE = 0]
configure.ac:
gl_FUNC_FTRUNCATE