]> Savannah Git Hosting - gnulib.git/commitdiff
largefile: Improve and document.
authorBruno Haible <bruno@clisp.org>
Sat, 13 May 2017 01:03:07 +0000 (03:03 +0200)
committerBruno Haible <bruno@clisp.org>
Sat, 13 May 2017 01:03:07 +0000 (03:03 +0200)
* m4/largefile.m4 (gl_LARGEFILE): Set WINDOWS_64_BIT_ST_SIZE to 0 if
the mingw headers already define 'stat' appropriately.
* modules/largefile (Description): Clarify.
* doc/largefile.texi: New file.
* doc/gnulib.texi: Include it.
* doc/posix-headers/sys_types.texi: Update.

ChangeLog
doc/gnulib.texi
doc/largefile.texi [new file with mode: 0644]
doc/posix-headers/sys_types.texi
m4/largefile.m4
modules/largefile

index a9564f27cc4cfce4aada6be9c372f2a7453a4727..3107081f7daaacf58a3e6cc604a7b13739530889 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2017-05-13  Bruno Haible  <bruno@clisp.org>
+
+       largefile: Improve and document.
+       * m4/largefile.m4 (gl_LARGEFILE): Set WINDOWS_64_BIT_ST_SIZE to 0 if
+       the mingw headers already define 'stat' appropriately.
+       * modules/largefile (Description): Clarify.
+       * doc/largefile.texi: New file.
+       * doc/gnulib.texi: Include it.
+       * doc/posix-headers/sys_types.texi: Update.
+
 2017-05-13  Bruno Haible  <bruno@clisp.org>
 
        truncate: New module.
index 094a98c42c4af251d2ec5f1fcf0195b71919b16a..9a255531a34f58cc45c8d49828e38ebae6832467 100644 (file)
@@ -6323,6 +6323,7 @@ to POSIX that it can be treated like any other Unix-like platform.
 
 @menu
 * Libtool and Windows::
+* Large File Support::
 * Precise file timestamps on Windows::
 * Windows sockets::
 * Native Windows Support without MSVC Support::
@@ -6330,6 +6331,8 @@ to POSIX that it can be treated like any other Unix-like platform.
 
 @include windows-libtool.texi
 
+@include largefile.texi
+
 @include windows-stat-timespec.texi
 
 @include windows-sockets.texi
diff --git a/doc/largefile.texi b/doc/largefile.texi
new file mode 100644 (file)
index 0000000..61e110d
--- /dev/null
@@ -0,0 +1,8 @@
+@node Large File Support
+@section Large File Support
+
+The module provides support for files larger than 2 GB.
+To this effect, it ensures that @code{off_t} is a 64-bit integer type
+at least on the following platforms:
+glibc, Mac OS X, FreeBSD, NetBSD, OpenBSD, AIX, HP-UX, IRIX, OSF/1, Solaris,
+Cygwin, mingw, MSVC.
index cf44beaf33d55da5f03d29a6293c3ca19aa6ff5b..0f018b728b754477779d625b996bc412e4d55ef0 100644 (file)
@@ -37,4 +37,4 @@ glibc x32
 
 This module, together with the module @code{largefile}, also defines the type
 @code{off_t} to a 64-bit integer type on some platforms:
-mingw (except mingw64), MSVC 9.
+mingw, MSVC 9.
index 790f7c0ad39a989128e84689b81abede45709a62..edc1a9b41baa15d244ead651d8c04de3c05afc17 100644 (file)
@@ -126,9 +126,24 @@ AC_DEFUN([gl_LARGEFILE],
       else
         WINDOWS_64_BIT_OFF_T=0
       fi
-      dnl But all native Windows platforms (including mingw64) have a 32-bit
-      dnl st_size member in 'struct stat'.
-      WINDOWS_64_BIT_ST_SIZE=1
+      dnl Some mingw versions define, if _FILE_OFFSET_BITS=64, 'struct stat'
+      dnl to 'struct _stat32i64' or 'struct _stat64' (depending on
+      dnl _USE_32BIT_TIME_T), which has a 32-bit st_size member.
+      AC_CACHE_CHECK([for 64-bit st_size], [gl_cv_member_st_size_64],
+        [AC_COMPILE_IFELSE(
+           [AC_LANG_PROGRAM(
+              [[#include <sys/types.h>
+                struct stat buf;
+                int verify_st_size_size[sizeof (buf.st_size) >= 8 ? 1 : -1];
+              ]],
+              [[]])],
+           [gl_cv_member_st_size_64=yes], [gl_cv_member_st_size_64=no])
+        ])
+      if test $gl_cv_member_st_size_64 = no; then
+        WINDOWS_64_BIT_ST_SIZE=1
+      else
+        WINDOWS_64_BIT_ST_SIZE=0
+      fi
       ;;
     *)
       dnl Nothing to do on gnulib's side.
index 4700bef2502fd79f4e6aff377e05f548b3792138..fcae113dbe4199c8c3f365a83689f2f15d91035d 100644 (file)
@@ -1,5 +1,5 @@
 Description:
-Use large files.
+Support for files larger than 2 GB.
 
 Files:
 m4/largefile.m4