2023-04-09 Paul Eggert <eggert@cs.ucla.edu>
largefile: sync from Autoconf master
- * m4/largefile.m4 (_AC_SYS_LARGEFILE_TEST_INCLUDES):
- Now an alias for _AC_SYS_LARGEFILE_TEST_CODE.
+ * modules/largefile-required, modules/year2038-required: New modules.
+ * MODULES.html.sh, doc/largefile.texi, doc/posix-headers/time.texi:
+ * doc/year2038.texi: Document this.
+ * m4/largefile.m4: Sync from Autoconf master.
+ Conditionalize the workaround on AC_SYS_LARGEFILE_REQUIRED rather
+ than on AC_SYS_YEAR2038 so that we replace older but still
+ unreleased Autoconf.
(AC_SYS_LARGEFILE_REQUIRED, AC_SYS_YEAR2038_REQUIRED): New macros.
year2038: configure earlier
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, @code{creat} may not work
-correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly with files 2 GiB and larger. @xref{Large File Support}.
@item
This function does not fail when the file name argument ends in a slash
and (without the slash) names a nonexistent file, on some platforms:
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@code{fflush}, @code{ftell}, @code{ftello}, @code{fgetpos} behave incorrectly
on input streams that are opened in @code{O_TEXT} mode and whose contents
contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
HP-UX 11.00, AIX 7.1, Solaris 9.
@item
On platforms where @code{off_t} is a 32-bit type, @code{fopen} may not work
-correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly with files 2 GiB and larger. @xref{Large File Support}.
@item
On Windows platforms (excluding Cygwin), this function does usually not
recognize the @file{/dev/null} filename.
the file: glibc 2.24.
@item
On platforms where @code{off_t} is a 32-bit type, @code{freopen} may not work
-correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly with files 2 GiB and larger. @xref{Large File Support}.
@item
On Windows platforms (excluding Cygwin), this function does usually not
recognize the @file{/dev/null} filename.
upon failure.
@item
On platforms where @code{long} is a 32-bit type, @code{fseek} does not work
-correctly with files larger than 2 GB, even when the @code{AC_SYS_LARGEFILE}
+correctly with files 2 GiB and larger, even when the @code{AC_SYS_LARGEFILE}
macro is used. The fix is to use @code{fseeko} instead.
@end itemize
This function fails on seekable stdin, stdout, and stderr: cygwin <= 1.5.24.
@item
On platforms where @code{off_t} is a 32-bit type, @code{fseeko} does not work
-correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly with files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@itemize
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, @code{fstat} may not correctly
-report the size of files or block devices larger than 2 GB.
-(Cf. @code{AC_SYS_LARGEFILE}.)
+report the size of files or block devices 2 GiB and larger..
+@xref{Large File Support}.
@item
On Linux/x86 and Linux/x86_64, applications compiled in 32-bit mode cannot
access files that happen to have a 64-bit inode number. This can occur with
file systems such as XFS (typically on large disks) and NFS.
-(Cf. @code{AC_SYS_LARGEFILE}.)
+@xref{Large File Support}.
@item
On Solaris 11.4, when this function yields a timestamp with a
nonpositive @code{tv_sec} value, @code{tv_nsec} might be in the range
@item
On platforms where @code{off_t} is a 32-bit type, @code{fstatat} may
not correctly report the size of files or block devices larger than 2
-GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+GB@. @xref{Large File Support}.
@item
On some platforms, @code{fstatat(fd,"file/",buf,flag)} succeeds instead of
failing with @code{ENOTDIR}.
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{f_blocks} in @samp{struct statvfs} is a 32-bit
+value, this function may not work correctly on files systems larger than
+4 TiB@. @xref{Large File Support}. This affects
+glibc/Hurd, HP-UX 11, Solaris.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
OpenBSD 3.8, mingw, MSVC 14, Android 4.3.
-@item
-On platforms where @code{f_blocks} in @samp{struct statvfs} is a 32-bit
-value, this function may not work correctly on files systems larger than
-4 TiB@. The fix is to use the @code{AC_SYS_LARGEFILE} macro. This affects
-glibc/Hurd, HP-UX 11, Solaris.
@end itemize
contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.
@item
On platforms where @code{long} is a 32-bit type, @code{ftell} does not work
-correctly with files larger than 2 GB, even when the @code{AC_SYS_LARGEFILE}
+correctly with files 2 GiB and larger, even when the @code{AC_SYS_LARGEFILE}
macro is used. The fix is to use @code{ftello} instead.
@end itemize
This function fails on seekable stdin, stdout, and stderr: cygwin <= 1.5.24.
@item
On platforms where @code{off_t} is a 32-bit type, @code{ftello} does not work
-correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly with files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
This function is missing on some platforms:
MSVC 14.
@item
-On platforms where @code{off_t} is a 32-bit type, this function is not
-applicable to arbitrary lengths for files larger than 2 GB@. The fix is to
-use the @code{AC_SYS_LARGEFILE} macro.
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14, Android 4.1.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-correctly report the size of files or block devices larger than 2 GB.
-The fix is to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{rlim_t} is a 32-bit type, this function does not
+allow to retrieve limits larger than 4 GiB and larger,
+such as for RLIMIT_FSIZE@. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
mingw, MSVC 14.
-@item
-On platforms where @code{rlim_t} is a 32-bit type, this function does not
-allow to retrieve limits larger than 4 GB, such as for RLIMIT_FSIZE@. The
-fix is to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
glibc 2.26, AIX 7.2, HP-UX 11, Solaris 11.4.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on huge directories larger than 2 GB.
-(Cf. @code{AC_SYS_LARGEFILE}.)
+work correctly on huge directories 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, Cygwin 2.9, mingw, MSVC 14, Android 9.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. The fix is to use the
-@code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly across the entire data range of files 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
Minix 3.1.8, Cygwin 1.5.x, mingw, MSVC 14, Android 6.0.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly across the entire data range of files larger than 2 GB.
-The fix is to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, @code{lseek} does not work
-correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly with files 2 GiB and larger. @xref{Large File Support}.
@item
This function mistakenly succeeds on pipes on some platforms: mingw, MSVC 14.
@end itemize
@itemize
@item
On platforms where @code{off_t} is a 32-bit type, @code{lstat} may not
-correctly report the size of files or block devices larger than 2 GB.
-(Cf. @code{AC_SYS_LARGEFILE}.)
+correctly report the size of files or block devices 2 GiB and larger.
+@xref{Large File Support}.
@item
On Linux/x86 and Linux/x86_64, applications compiled in 32-bit mode cannot
access files that happen to have a 64-bit inode number. This can occur with
file systems such as XFS (typically on large disks) and NFS.
-(Cf. @code{AC_SYS_LARGEFILE}.)
+@xref{Large File Support}.
@item
For symlinks, when the argument ends in a slash, some platforms don't
dereference the argument:
mingw, MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, @code{mkstemp} may not work
-correctly to create files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly to create files 2 GiB and larger. @xref{Large File Support}.
@item
On some older platforms, @code{mkstemp} can create a world or group
writable or readable file, if you haven't set the process umask to
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly across the entire data range of files 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
This function is missing on some platforms:
mingw, MSVC 14.
@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly across the entire data range of files larger than 2 GB.
-The fix is to use the @code{AC_SYS_LARGEFILE} macro.
-@item
To get anonymous memory, on some platforms, you can use the flags
@code{MAP_ANONYMOUS | MAP_PRIVATE} and @code{-1} instead of a file descriptor;
on others you have to use a read-only file descriptor of @file{/dev/zero}.
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+correctly report the size of files or block devices 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
FreeBSD 5.2.1, NetBSD 3.0, Minix 3.1.8, mingw, MSVC 14, Android 4.1.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-correctly report the size of files or block devices larger than 2 GB.
-The fix is to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
Mac OS X 10.6, FreeBSD 8.4, NetBSD 5.1, OpenBSD 4.9, Minix 3.1.8, AIX 7.1, HP-UX 11, IRIX 6.5, Solaris 10, Cygwin 1.7.x, mingw, MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, @code{open} may not work
-correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly with files 2 GiB and larger. @xref{Large File Support}.
@item
This function does not fail when the file name argument ends in a slash
and (without the slash) names a nonexistent file or a file that is not a
AIX 7.1, Solaris 10.
@item
On platforms where @code{off_t} is a 32-bit type, @code{open} may not work
-correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly with files 2 GiB and larger. @xref{Large File Support}.
@item
This function does not fail when the file name argument ends in a slash
and (without the slash) names a nonexistent file or a file that is not a
MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on huge directories larger than 2 GB@. Also, on platforms
+work correctly on huge directories 2 GiB and larger. Also, on platforms
where @code{ino_t} is a 32-bit type, this function may report inode numbers
-incorrectly. (Cf. @code{AC_SYS_LARGEFILE}.)
+incorrectly. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly across the entire data range of files 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
macOS 11.1, FreeBSD 6.0, NetBSD 3.0, OpenBSD 6.7, Minix 3.1.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, Solaris 10, Cygwin 1.5.x, mingw, MSVC 14, Android 4.4.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly across the entire data range of files larger than 2 GB.
-The fix is to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly across the entire data range of files 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
allocation with writes where unsupported, and apps have depended on
that long term implementation. This is both inefficient, and as of
glibc 2.21 at least, buggy on certain NFS setups.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly across the entire data range of files larger than 2 GB.
-The fix is to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
mingw, MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@item
This function returns zero instead of positive values when large file support
is enabled on some platforms:
mingw, MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+work correctly on files 2 GiB and larger. @xref{Large File Support}.
@item
This function does not fail when an invalid (negative) offset is passed when
large file support is enabled on some platforms:
MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on huge directories larger than 2 GB@. Also, on platforms
+work correctly on huge directories 2 GiB and larger. Also, on platforms
where @code{ino_t} is a 32-bit type, this function may report inode numbers
incorrectly. This can occur with file systems such as XFS (typically on
-large disks) and NFS@. (Cf. @code{AC_SYS_LARGEFILE}.)
+large disks) and NFS@. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function has an incompatible declaration on some platforms:
Solaris 11.4 (when @code{_POSIX_PTHREAD_SEMANTICS} is not defined).
+@item
+On platforms where @code{off_t} is a 32-bit type, this function may not
+work correctly on huge directories 2 GiB and larger. Also, on platforms
+where @code{ino_t} is a 32-bit type, this function may report inode numbers
+incorrectly. This can occur with file systems such as XFS (typically on
+large disks) and NFS@. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
Minix 3.1.8, mingw, MSVC 14.
-@item
-On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on huge directories larger than 2 GB@. Also, on platforms
-where @code{ino_t} is a 32-bit type, this function may report inode numbers
-incorrectly. This can occur with file systems such as XFS (typically on
-large disks) and NFS@. The fix is to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
MSVC 14.
@item
On Mac OS X platforms where @code{long int} is a 32-bit type, this function may
-not work correctly on huge directories larger than 2 GB.
-(Cf. @code{AC_SYS_LARGEFILE}.)
+not work correctly on huge directories 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
Minix 3.1.8, Solaris 9, mingw, MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, this function may not
-work correctly on huge directories larger than 2 GB@. Also, on platforms
+work correctly on huge directories 2 GiB and larger. Also, on platforms
where @code{ino_t} is a 32-bit type, this function may report inode numbers
-incorrectly. (Cf. @code{AC_SYS_LARGEFILE}.)
+incorrectly. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{long int} is a 32-bit type, this function may not
+work correctly on huge directories 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
MSVC 14, Android 5.1.
-@item
-On platforms where @code{long int} is a 32-bit type, this function may not
-work correctly on huge directories larger than 2 GB@. The fix is to use
-the @code{AC_SYS_LARGEFILE} macro (only on Mac OS X systems).
@end itemize
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{rlim_t} is a 32-bit type, this function does not
+allow to set limits 4 GiB and larger, such as for RLIMIT_FSIZE@.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
Minix 3.1.8, mingw, MSVC 14.
-@item
-On platforms where @code{rlim_t} is a 32-bit type, this function does not
-allow to set limits larger than 4 GB, such as for RLIMIT_FSIZE@. The fix is
-to use the @code{AC_SYS_LARGEFILE} macro.
@end itemize
@itemize
@item
On platforms where @code{off_t} is a 32-bit type, @code{stat} may not correctly
-report the size of files or block devices larger than 2 GB.
-(Cf. @code{AC_SYS_LARGEFILE}.)
+report the size of files or block devices 2 GiB and larger.
+@xref{Large File Support}.
@item
On Linux/x86 and Linux/x86_64, applications compiled in 32-bit mode cannot
access files that happen to have a 64-bit inode number. This can occur with
file systems such as XFS (typically on large disks) and NFS.
-(Cf. @code{AC_SYS_LARGEFILE}.)
+@xref{Large File Support}.
@item
The @code{st_atime}, @code{st_ctime}, @code{st_mtime} fields are affected by
the current time zone and by the DST flag of the current time zone on some
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{f_blocks} in @samp{struct statvfs} is a 32-bit
+value, this function may not work correctly on files systems larger than
+4 TiB@. @xref{Large File Support}. This affects
+glibc/Hurd, HP-UX 11, Solaris.
@end itemize
Portability problems not fixed by Gnulib:
entries in /proc/mounts, and any of those file systems
are hard-mounted and not available. This affects
Linux < 2.6.36.
-@item
-On platforms where @code{f_blocks} in @samp{struct statvfs} is a 32-bit
-value, this function may not work correctly on files systems larger than
-4 TiB@. The fix is to use the @code{AC_SYS_LARGEFILE} macro. This affects
-glibc/Hurd, HP-UX 11, Solaris.
@end itemize
Gnulib provides a module @code{fsusage} that provides similar information
Portability problems fixed by Gnulib:
@itemize
+@item
+On platforms where @code{long int} is a 32-bit type, this function may not
+work correctly on huge directories 2 GiB and larger.
+@xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
@item
This function is missing on some platforms:
MSVC 14, Android 5.1.
-@item
-On platforms where @code{long int} is a 32-bit type, this function may not
-work correctly on huge directories larger than 2 GB@. The fix is to use
-the @code{AC_SYS_LARGEFILE} macro (only on Mac OS X systems).
@end itemize
mingw, MSVC 14.
@item
On platforms where @code{off_t} is a 32-bit type, @code{tmpfile} may not work
-correctly to create files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
+correctly to create files 2 GiB and larger. @xref{Large File Support}.
@end itemize
Portability problems not fixed by Gnulib:
mingw, MSVC 14, Android 4.4 with @code{AC_SYS_LARGEFILE} in effect.
@item
On platforms where @code{off_t} is a 32-bit type, this function is not
-applicable to arbitrary lengths for files larger than 2 GB@. The fix is to
-use the @code{AC_SYS_LARGEFILE} macro.
+applicable to arbitrary lengths for files 2 GiB and larger.
+@xref{Large File Support}.
@item
This function does not fail when the file name argument ends in a slash
and (without the slash) names a non-directory, on some platforms:
On Windows platforms (excluding Cygwin), @code{st_ino} is always 0.
@end itemize
+@xref{Avoiding the year 2038 problem}, for portability issues with the
+@code{time_t} components of @code{struct stat}.
+
Portability problems not fixed by Gnulib:
@itemize
@item
-@xref{time.h}, for general portability problems with the
-@code{time_t} components of @code{struct stat}.
-@item
The macro @code{S_IFBLK} is missing on some platforms:
MSVC 14.
@item
MSVC 14 in 32-bit mode when @code{_USE_32BIT_TIME_T} is not defined.
@end itemize
+@xref{Avoiding the year 2038 problem}, for portability issues with
+@code{time_t} and the @code{time_t} component of @code{struct timeval}.
+
Portability problems not fixed by Gnulib:
@itemize
@item
glibc 2.25.
@end itemize
+@xref{Avoiding the year 2038 problem}, for portability issues with
+@code{time_t}.
+
Portability problems not fixed by Gnulib:
@itemize
@item
glibc x32
@end itemize
-This module, together with the module @code{largefile}, also defines the type
+This module, together with the modules @code{largefile-required}
+or @code{largefile}, also defines the type
@code{off_t} to a 64-bit integer type on some platforms:
mingw, MSVC 14.