Add some workarounds for cases where readdir_r fails due to large
integers in struct dirent's d_ino or d_off fields in LFS builds (seen
in some peculiar NFS environments):
* configure.in: Check for readdir64_r for LFS builds.
* include/arch/unix/apr_arch_file_io.h (struct apr_dir_t): Use struct
dirent64 for entry field if readdir64_r is present.
* file_io/unix/dir.c (apr_dir_open): Use size of the entry field.
(apr_dir_read): Use readdir64_r if available; check for d_ino
overflow.
* file_io/unix/filestat.c (fill_out_finfo): Check for inode number
overflow.
|