Hi Paul, > This one affects many modules, so I haven't pushed it yet. > The basic idea is that code that uses 'stat (...)' etc. > should always use AC_SYS_LARGEFILE, so that it doesn't > mess up with large files. Plus, the code should use the > up-to-date AC_SYS_LARGEFILE.
I agree with the reasoning and approach. But 1) The patch is missing documentation changes. 2) I don't see the reasoning for adding the dependency to modules like 'acl', 'javacomp' and 'same'. If you are adding a dependency to these modules, it sounds like every piece of application code that somehow deads with files via <unistd.h> or <sys/stat.h> would need a dependency to 'largefile'? This is not comforting, because this "somehow" is impossible to document. So, the first question is: What C library symbols are affected? On a glibc system, I get this list: $ nm /lib/libc.so.6 | grep ' [A-Z] .*64' | awk '{ print $3 }' | sed -e 's/@.*//' | uniq _IO_fgetpos64 _IO_fsetpos64 __fxstat64 __fxstatat64 __lxstat64 __open64 __open64_2 __openat64_2 __pread64 __pread64_chk __pwrite64 __xstat64 a64l alphasort64 creat64 fallocate64 fgetpos64 fopen64 freopen64 fseeko64 fsetpos64 fstatfs64 fstatvfs64 ftello64 ftruncate64 ftw64 getdirentries64 getrlimit64 glob64 globfree64 l64a lockf64 lseek64 mkostemp64 mkostemps64 mkstemp64 mkstemps64 mmap64 nftw64 open64 openat64 posix_fadvise64 posix_fallocate64 pread64 preadv64 pwrite64 pwritev64 readdir64 readdir64_r scandir64 sendfile64 setrlimit64 statfs64 statvfs64 tmpfile64 truncate64 versionsort64 xdr_int64_t xdr_uint64_t On a Solaris 11 2010-11 system, I get this list: $ nm /lib/libc.so.1 | grep ' [A-Z] .*64' | awk '{ print $3 }' __aio_fsync_bar64 __cerror64 __div64 __divrem64 __lockf64 __mul64 __open64 __openat64 __pread64 __pwrite64 __rem64 __udiv64 __udivrem64 __urem64 _aio_rw64 _aio_sigev_thread64 _alphasort64 _attropen64 _creat64 _fseeko64 _fstat64 _fstatat64 _fstatvfs64 _ftello64 _ftruncate64 _ftw64 _getdents64 _getrlimit64 _lockf64 _lseek64 _lstat64 _mkstemp64 _mmap64 _nftw64 _open64 _openat64 _pread64 _pwrite64 _readdir64 _readdir64_r _scandir64 _seekdir64 _semctl64 _setrlimit64 _shmctl64 _stat64 _statvfs64 _tell64 _telldir64 _truncate64 _xftw64 a64l aio_cancel64 aio_error64 aio_fsync64 aio_read64 aio_return64 aio_suspend64 aio_waitn64 aio_write64 aioread64 aiowrite64 alphasort64 atomic_add_64 atomic_add_64_nv atomic_and_64 atomic_and_64_nv atomic_cas_64 atomic_dec_64 atomic_dec_64_nv atomic_inc_64 atomic_inc_64_nv atomic_or_64 atomic_or_64_nv atomic_swap_64 attropen64 clear_lockbyte64 creat64 fgetpos64 fopen64 freopen64 fseeko64 fsetpos64 fstat64 fstatat64 fstatvfs64 ftello64 ftruncate64 ftw64 getdents64 getrlimit64 l64a libc_mkstemps64 libc_nvlist_lookup_uint64 lio_listio64 lockf64 lseek64 lstat64 mkstemp64 mkstemps64 mmap64 msgctl64 nftw64 nvlookupint64 open64 openat64 posix_fadvise64 posix_fallocate64 pread64 pwrite64 readdir64 readdir64_r scandir64 seekdir64 semctl64 set_lock_byte64 setrlimit64 shmctl64 stat64 statvfs64 swapp64 tell64 telldir64 tmpfile64 truncate64 And on MacOS X 10.5: $ nm /usr/lib/libc.dylib | grep ' [A-Z] .*64' | sed -e 's/.* .* _//' OSAtomicAdd64 OSAtomicAdd64Barrier OSAtomicCompareAndSwap64 OSAtomicCompareAndSwap64Barrier __opendir2$INODE64$UNIX2003 _readdir_unlocked$INODE64 _seekdir$INODE64$UNIX2003 _time64_to_time _time_to_time64 a64l alphasort$INODE64 fstat$INODE64 fstat64 fstatfs$INODE64 fstatfs64 fstatx64_np fstatx_np$INODE64 fts_children$INODE64 fts_close$INODE64 fts_open$INODE64 fts_read$INODE64 fts_set$INODE64 ftw$INODE64$UNIX2003 getfsstat$INODE64 getfsstat64 getmntinfo$INODE64 getmntinfo64 getsectbynamefromheader_64 getsectdatafromheader_64 glob$INODE64 l64a lstat$INODE64 lstat64 lstatx64_np lstatx_np$INODE64 mach_make_memory_entry_64 mach_memory_object_memory_entry_64 mach_vm_region_info_64 nftw$INODE64$UNIX2003 opendir$INODE64$UNIX2003 readdir$INODE64 readdir_r$INODE64 rewinddir$INODE64$UNIX2003 scandir$INODE64 seekdir$INODE64$UNIX2003 stat$INODE64 stat64 statfs$INODE64 statfs64 statx64_np statx_np$INODE64 swap_dylib_module_64 swap_mach_header_64 swap_nlist_64 swap_routines_command_64 swap_section_64 swap_segment_command_64 swap_x86_debug_state64 swap_x86_exception_state64 swap_x86_float_state64 swap_x86_thread_state64 telldir$INODE64$UNIX2003 vm_map_64 vm_region_64 vm_region_recurse_64 xdr_int64_t xdr_u_int64_t So I think the list of POSIX or glibc system functions affected by AC_SYS_LARGEFILE is: doc/posix-functions/aio_cancel.texi doc/posix-functions/aio_error.texi doc/posix-functions/aio_fsync.texi doc/posix-functions/aio_read.texi doc/posix-functions/aio_return.texi doc/posix-functions/aio_suspend.texi doc/posix-functions/aio_write.texi doc/posix-functions/alphasort.texi doc/posix-functions/creat.texi doc/posix-functions/fgetpos.texi doc/posix-functions/fopen.texi doc/posix-functions/freopen.texi doc/posix-functions/fseek.texi doc/posix-functions/fseeko.texi doc/posix-functions/fsetpos.texi doc/posix-functions/fstat.texi doc/posix-functions/fstatat.texi doc/posix-functions/fstatvfs.texi doc/posix-functions/ftell.texi doc/posix-functions/ftello.texi doc/posix-functions/ftruncate.texi doc/posix-functions/ftw.texi doc/posix-functions/getrlimit.texi doc/posix-functions/glob.texi doc/posix-functions/globfree.texi doc/posix-functions/lio_listio.texi doc/posix-functions/lockf.texi doc/posix-functions/lseek.texi doc/posix-functions/lstat.texi doc/posix-functions/mkstemp.texi doc/posix-functions/mmap.texi doc/posix-functions/nftw.texi doc/posix-functions/open.texi doc/posix-functions/openat.texi doc/posix-functions/opendir.texi doc/posix-functions/posix_fadvise.texi doc/posix-functions/posix_fallocate.texi doc/posix-functions/pread.texi doc/posix-functions/pwrite.texi doc/posix-functions/readdir.texi doc/posix-functions/readdir_r.texi doc/posix-functions/rewinddir.texi doc/posix-functions/scandir.texi doc/posix-functions/seekdir.texi doc/posix-functions/setrlimit.texi doc/posix-functions/stat.texi doc/posix-functions/statvfs.texi doc/posix-functions/telldir.texi doc/posix-functions/tmpfile.texi doc/posix-functions/truncate.texi doc/glibc-functions/fallocate.texi doc/glibc-functions/fstatfs.texi doc/glibc-functions/fts_children.texi doc/glibc-functions/fts_close.texi doc/glibc-functions/fts_open.texi doc/glibc-functions/fts_read.texi doc/glibc-functions/fts_set.texi doc/glibc-functions/getdirentries.texi doc/glibc-functions/mkostemp.texi doc/glibc-functions/mkostemps.texi doc/glibc-functions/mkstemps.texi doc/glibc-functions/preadv.texi doc/glibc-functions/pwritev.texi doc/glibc-functions/sendfile.texi doc/glibc-functions/statfs.texi doc/glibc-functions/versionsort.texi For not all of them it's documented. I'm applying the doc patch below. It documents the current state (before any change in module dependencies). For alphasort, globfree, fts_close, fts_open, fts_set, versionsort, there is nothing to document because these function don't change their behaviour through AC_SYS_LARGEFILE. Among these affected system functions, those that have a gnulib module are: doc/posix-functions/alphasort.texi alphasort doc/posix-functions/fopen.texi fopen doc/posix-functions/freopen.texi freopen doc/posix-functions/fseek.texi fseek doc/posix-functions/fseeko.texi fseeko doc/posix-functions/fstatat.texi openat doc/posix-functions/ftell.texi ftell doc/posix-functions/ftello.texi ftello doc/posix-functions/glob.texi glob doc/posix-functions/globfree.texi glob doc/posix-functions/lseek.texi lseek doc/posix-functions/lstat.texi lstat doc/posix-functions/mkstemp.texi mkstemp doc/posix-functions/open.texi open doc/posix-functions/openat.texi openat doc/posix-functions/pread.texi pread doc/posix-functions/pwrite.texi pwrite doc/posix-functions/scandir.texi scandir doc/posix-functions/stat.texi stat doc/posix-functions/tmpfile.texi tmpfile doc/glibc-functions/mkostemp.texi mkostemp doc/glibc-functions/mkostemps.texi mkostemps doc/glibc-functions/mkstemps.texi mkstemps Would it not be sufficient to add 'largefile' as a dependency of these modules? Then, for example, the 'javacomp' module would automatically indirectly depend on 'largefile': javacomp -> clean-temp -> open -> largefile And gnulib users would not have to think about large files specially: they just look in the documentation for modules that correspond to POSIX functions. Bruno 2011-07-24 Bruno Haible <br...@clisp.org> doc: Mention the effects of AC_SYS_LARGEFILE. * doc/posix-functions/aio_cancel.texi: Mention the effects of AC_SYS_LARGEFILE on this function. * doc/posix-functions/aio_error.texi: Likewise. * doc/posix-functions/aio_fsync.texi: Likewise. * doc/posix-functions/aio_read.texi: Likewise. * doc/posix-functions/aio_return.texi: Likewise. * doc/posix-functions/aio_suspend.texi: Likewise. * doc/posix-functions/aio_write.texi: Likewise. * doc/posix-functions/fgetpos.texi: Likewise. * doc/posix-functions/fopen.texi: Likewise. * doc/posix-functions/freopen.texi: Likewise. * doc/posix-functions/fsetpos.texi: Likewise. * doc/posix-functions/fstatvfs.texi: Likewise. * doc/posix-functions/ftruncate.texi: Likewise. * doc/posix-functions/ftw.texi: Likewise. * doc/posix-functions/getrlimit.texi: Likewise. * doc/posix-functions/glob.texi: Likewise. * doc/posix-functions/lio_listio.texi: Likewise. * doc/posix-functions/lockf.texi: Likewise. * doc/posix-functions/mkstemp.texi: Likewise. * doc/posix-functions/mmap.texi: Likewise. * doc/posix-functions/nftw.texi: Likewise. * doc/posix-functions/openat.texi: Likewise. * doc/posix-functions/opendir.texi: Likewise. * doc/posix-functions/posix_fadvise.texi: Likewise. * doc/posix-functions/posix_fallocate.texi: Likewise. * doc/posix-functions/pread.texi: Likewise. * doc/posix-functions/pwrite.texi: Likewise. * doc/posix-functions/readdir.texi: Likewise. * doc/posix-functions/readdir_r.texi: Likewise. * doc/posix-functions/rewinddir.texi: Likewise. * doc/posix-functions/scandir.texi: Likewise. * doc/posix-functions/seekdir.texi: Likewise. * doc/posix-functions/setrlimit.texi: Likewise. * doc/posix-functions/statvfs.texi: Likewise. * doc/posix-functions/telldir.texi: Likewise. * doc/posix-functions/tmpfile.texi: Likewise. * doc/posix-functions/truncate.texi: Likewise. * doc/glibc-functions/fallocate.texi: Likewise. * doc/glibc-functions/fstatfs.texi: Likewise. * doc/glibc-functions/fts_children.texi: Likewise. * doc/glibc-functions/fts_read.texi: Likewise. * doc/glibc-functions/getdirentries.texi: Likewise. * doc/glibc-functions/mkostemp.texi: Likewise. * doc/glibc-functions/mkostemps.texi: Likewise. * doc/glibc-functions/mkstemps.texi: Likewise. * doc/glibc-functions/preadv.texi: Likewise. * doc/glibc-functions/pwritev.texi: Likewise. * doc/glibc-functions/sendfile.texi: Likewise. * doc/glibc-functions/statfs.texi: Likewise. --- doc/posix-functions/aio_cancel.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/aio_cancel.texi Sun Jul 24 21:25:26 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/aio_error.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/aio_error.texi Sun Jul 24 21:25:28 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/aio_fsync.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/aio_fsync.texi Sun Jul 24 21:25:29 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/aio_read.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/aio_read.texi Sun Jul 24 21:25:30 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/aio_return.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/aio_return.texi Sun Jul 24 21:25:30 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, AIX 5.1, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/aio_suspend.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/aio_suspend.texi Sun Jul 24 21:25:31 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/aio_write.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/aio_write.texi Sun Jul 24 21:25:31 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/fgetpos.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/fgetpos.texi Sun Jul 24 20:46:16 2011 @@ -17,6 +17,10 @@ on input streams that are opened in @code{O_TEXT} mode and whose contents contains Unix line terminators (LF), on some platforms: mingw. @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. +@item On platforms where @code{off_t} is a 64-bit type, but @code{fseeko} is not present, stream operations on files larger than 2 GB silently do the wrong thing. This affects BSD/OS, which is mostly obsolete. --- doc/posix-functions/fopen.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/fopen.texi Sun Jul 24 21:14:47 2011 @@ -28,6 +28,10 @@ this means that it translates @code{'\n'} to CR/LF by default. Use the @code{"b"} flag if you need reliable binary I/O. @item +On platforms where @code{off_t} is a 32-bit type, @code{fopen} may not work +correctly with files larger than 2 GB. The fix is to use the +@code{AC_SYS_LARGEFILE} macro. +@item On Windows platforms (excluding Cygwin), this function fails to open directories for reading. Such streams have implementation-defined semantics on other platforms. To avoid directory streams with a --- doc/posix-functions/freopen.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/freopen.texi Sun Jul 24 21:15:39 2011 @@ -24,6 +24,10 @@ directory, on some platforms: HP-UX 11.00, Solaris 9, Irix 5.3. @item +On platforms where @code{off_t} is a 32-bit type, @code{freopen} may not work +correctly with files larger than 2 GB. The fix is to use the +@code{AC_SYS_LARGEFILE} macro. +@item Applications should not assume that @code{fileno(f)} will be the same before and after a call to @code{freopen(name,mode,f)}. However, the module freopen-safer can at least protect @code{stdin}, @code{stdout}, --- doc/posix-functions/fsetpos.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/fsetpos.texi Sun Jul 24 20:46:19 2011 @@ -12,4 +12,8 @@ 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 --- doc/posix-functions/fstatvfs.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/posix-functions/fstatvfs.texi Sun Jul 24 20:47:07 2011 @@ -15,4 +15,9 @@ @item This function is missing on some platforms: MacOS X 10.3, OpenBSD 3.8, mingw. +@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 --- doc/posix-functions/ftruncate.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/ftruncate.texi Sun Jul 24 20:47:18 2011 @@ -12,4 +12,8 @@ Portability problems not fixed by Gnulib: @itemize +@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. @end itemize --- doc/posix-functions/ftw.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/ftw.texi Sun Jul 24 20:47:27 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: MacOS X 10.3, FreeBSD 5.2.1, NetBSD 3.0, mingw, BeOS. +@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 --- doc/posix-functions/getrlimit.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/getrlimit.texi Sun Jul 24 20:52:31 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: mingw, BeOS. +@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 --- doc/posix-functions/glob.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/glob.texi Sun Jul 24 21:24:15 2011 @@ -19,5 +19,9 @@ 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 huge directories larger than 2 GB. The fix is to use +the @code{AC_SYS_LARGEFILE} macro. +@item Some platforms may store additional flags in the @code{gl_flags} field. @end itemize --- doc/posix-functions/lio_listio.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/lio_listio.texi Sun Jul 24 21:25:32 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: NetBSD 3.0, OpenBSD 3.8, OSF/1 5.1, Solaris 2.4, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/lockf.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/lockf.texi Sun Jul 24 20:47:47 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: Cygwin 1.5.x, mingw, BeOS. +@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 --- doc/posix-functions/mkstemp.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/mkstemp.texi Sun Jul 24 21:18:04 2011 @@ -27,6 +27,10 @@ Portability problems not fixed by Gnulib: @itemize +@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. The fix is to use the +@code{AC_SYS_LARGEFILE} macro. @end itemize The gnulib module @code{clean-temp} can create temporary files that will not --- doc/posix-functions/mmap.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/mmap.texi Sun Jul 24 20:48:09 2011 @@ -16,6 +16,10 @@ This function is missing on some platforms: mingw, BeOS. @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}. --- doc/posix-functions/nftw.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/nftw.texi Sun Jul 24 20:48:17 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: MacOS X 10.3, FreeBSD 5.2.1, NetBSD 3.0, mingw, BeOS. +@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 --- doc/posix-functions/openat.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/openat.texi Sun Jul 24 21:17:06 2011 @@ -22,4 +22,8 @@ Portability problems not fixed by Gnulib: @itemize +@item +On platforms where @code{off_t} is a 32-bit type, @code{open} may not work +correctly with files larger than 2 GB. The fix is to use the +@code{AC_SYS_LARGEFILE} macro. @end itemize --- doc/posix-functions/opendir.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/opendir.texi Sun Jul 24 21:10:03 2011 @@ -12,4 +12,9 @@ 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 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. The fix is to use the @code{AC_SYS_LARGEFILE} macro. @end itemize --- doc/posix-functions/posix_fadvise.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/posix_fadvise.texi Sun Jul 24 20:48:27 2011 @@ -16,4 +16,8 @@ This function is missing on some platforms: MacOS X 10.5, FreeBSD 6.0, NetBSD 3.0, OpenBSD 3.8, AIX 5.1, HP-UX 11.23, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/posix_fallocate.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/posix_fallocate.texi Sun Jul 24 20:48:30 2011 @@ -16,4 +16,8 @@ This function is missing on some platforms: MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 10, Cygwin 1.5.x, mingw, Interix 3.5, BeOS. +@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 --- doc/posix-functions/pread.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/pread.texi Sun Jul 24 21:16:38 2011 @@ -22,4 +22,8 @@ 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 --- doc/posix-functions/pwrite.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/pwrite.texi Sun Jul 24 21:16:37 2011 @@ -23,4 +23,8 @@ 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 --- doc/posix-functions/readdir.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/readdir.texi Sun Jul 24 21:09:55 2011 @@ -12,4 +12,9 @@ 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 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. The fix is to use the @code{AC_SYS_LARGEFILE} macro. @end itemize --- doc/posix-functions/readdir_r.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/readdir_r.texi Sun Jul 24 21:10:12 2011 @@ -18,4 +18,9 @@ @item This function is missing on some platforms: mingw, BeOS. +@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. The fix is to use the @code{AC_SYS_LARGEFILE} macro. @end itemize --- doc/posix-functions/rewinddir.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/rewinddir.texi Sun Jul 24 21:55:46 2011 @@ -12,4 +12,8 @@ Portability problems not 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 larger than 2 GB. The fix is to use +the @code{AC_SYS_LARGEFILE} macro (only on MacOS X systems). @end itemize --- doc/posix-functions/scandir.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/scandir.texi Sun Jul 24 21:21:47 2011 @@ -21,4 +21,9 @@ @item The fourth parameter of this function is declared as @code{int (*) (void *, void *)} on some platforms: AIX 5.1. +@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. The fix is to use the @code{AC_SYS_LARGEFILE} macro. @end itemize --- doc/posix-functions/seekdir.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/seekdir.texi Sun Jul 24 21:43:57 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: BeOS. +@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 MacOS X systems). @end itemize --- doc/posix-functions/setrlimit.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/setrlimit.texi Sun Jul 24 20:52:50 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: mingw, BeOS. +@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 --- doc/posix-functions/statvfs.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/statvfs.texi Sun Jul 24 20:49:14 2011 @@ -15,6 +15,11 @@ @item This function is missing on some platforms: MacOS X 10.3, OpenBSD 3.8, mingw. +@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 --- doc/posix-functions/telldir.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/telldir.texi Sun Jul 24 21:43:57 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: BeOS. +@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 MacOS X systems). @end itemize --- doc/posix-functions/tmpfile.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/tmpfile.texi Sun Jul 24 21:19:41 2011 @@ -15,4 +15,8 @@ Portability problems not fixed by Gnulib: @itemize +@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. The fix is to use the +@code{AC_SYS_LARGEFILE} macro. @end itemize --- doc/posix-functions/truncate.texi.orig Sun Jul 24 22:09:11 2011 +++ doc/posix-functions/truncate.texi Sun Jul 24 20:49:53 2011 @@ -15,4 +15,8 @@ @item This function is missing on some platforms: mingw. +@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. @end itemize --- doc/glibc-functions/fallocate.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/fallocate.texi Sun Jul 24 20:45:50 2011 @@ -13,4 +13,8 @@ @item This function is missing on older glibc versions and all non-glibc platforms: MacOS X 10.5, FreeBSD 6.0, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/glibc-functions/fstatfs.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/fstatfs.texi Sun Jul 24 20:46:54 2011 @@ -13,4 +13,9 @@ @item This function is missing on some platforms: AIX 5.1, mingw, Interix 3.5, BeOS. +@item +On platforms where @code{f_blocks} in @samp{struct statfs} 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 +MacOS X. @end itemize --- doc/glibc-functions/fts_children.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/fts_children.texi Sun Jul 24 22:03:20 2011 @@ -13,4 +13,11 @@ @item This function is missing on some platforms: AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, BeOS. +@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 and +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. The fix is to use the @code{AC_SYS_LARGEFILE} +macro (only on MacOS X systems). @end itemize --- doc/glibc-functions/fts_read.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/fts_read.texi Sun Jul 24 22:03:21 2011 @@ -13,4 +13,11 @@ @item This function is missing on some platforms: AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, mingw, BeOS. +@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 and +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. The fix is to use the @code{AC_SYS_LARGEFILE} +macro (only on MacOS X systems). @end itemize --- doc/glibc-functions/getdirentries.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/getdirentries.texi Sun Jul 24 20:52:00 2011 @@ -13,4 +13,8 @@ @item This function is missing on some platforms: AIX 4.3.2, IRIX 6.5, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS. +@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. The fix is to use +the @code{AC_SYS_LARGEFILE} macro. @end itemize --- doc/glibc-functions/mkostemp.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/mkostemp.texi Sun Jul 24 21:18:23 2011 @@ -14,6 +14,10 @@ Portability problems not fixed by Gnulib: @itemize +@item +On platforms where @code{off_t} is a 32-bit type, @code{mkostemp} may not work +correctly to create files larger than 2 GB. The fix is to use the +@code{AC_SYS_LARGEFILE} macro. @end itemize The gnulib module @code{clean-temp} can create temporary files that will not --- doc/glibc-functions/mkostemps.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/mkostemps.texi Sun Jul 24 21:18:33 2011 @@ -14,6 +14,10 @@ Portability problems not fixed by Gnulib: @itemize +@item +On platforms where @code{off_t} is a 32-bit type, @code{mkostemps} may not work +correctly to create files larger than 2 GB. The fix is to use the +@code{AC_SYS_LARGEFILE} macro. @end itemize The gnulib module @code{clean-temp} can create temporary files that will not --- doc/glibc-functions/mkstemps.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/mkstemps.texi Sun Jul 24 21:18:11 2011 @@ -18,6 +18,10 @@ Portability problems not fixed by Gnulib: @itemize +@item +On platforms where @code{off_t} is a 32-bit type, @code{mkstemps} may not work +correctly to create files larger than 2 GB. The fix is to use the +@code{AC_SYS_LARGEFILE} macro. @end itemize The gnulib module @code{clean-temp} can create temporary files that will not --- doc/glibc-functions/preadv.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/preadv.texi Sun Jul 24 20:48:41 2011 @@ -13,4 +13,8 @@ @item This function is missing on some platforms: glibc 2.9, MacOS X 10.5, FreeBSD 5.2.1, AIX 5.2, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/glibc-functions/pwritev.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/pwritev.texi Sun Jul 24 20:48:43 2011 @@ -13,4 +13,8 @@ @item This function is missing on some platforms: glibc 2.9, MacOS X 10.5, FreeBSD 5.2.1, AIX 5.2, HP-UX 11.31, IRIX 6.5, OSF/1 5.1, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/glibc-functions/sendfile.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/sendfile.texi Sun Jul 24 20:48:54 2011 @@ -13,4 +13,8 @@ @item This function is missing on some platforms: MacOS X 10.4, NetBSD 5.0, OpenBSD 3.8, AIX 5.1, IRIX 6.5, OSF/1 4.0, Solaris 11 2010-11, Cygwin, mingw, Interix 3.5, BeOS. +@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 --- doc/glibc-functions/statfs.texi.orig Sun Jul 24 22:09:10 2011 +++ doc/glibc-functions/statfs.texi Sun Jul 24 20:49:09 2011 @@ -13,4 +13,9 @@ @item This function is missing on some platforms: AIX 5.1, mingw, Interix 3.5, BeOS. +@item +On platforms where @code{f_blocks} in @samp{struct statfs} 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 +MacOS X. @end itemize -- In memoriam Ezechiele Ramin <http://en.wikipedia.org/wiki/Ezechiele_Ramin>