diff options
-rw-r--r-- | source3/configure.in | 1 | ||||
-rw-r--r-- | source3/include/proto.h | 1 | ||||
-rw-r--r-- | source3/lib/system.c | 16 |
3 files changed, 18 insertions, 0 deletions
diff --git a/source3/configure.in b/source3/configure.in index f0d8de7ddb..363fbac352 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -1099,6 +1099,7 @@ AC_CHECK_FUNCS(lstat64 fopen64 atexit grantpt lseek64 ftruncate64 posix_fallocat AC_CHECK_FUNCS(fallocate fallocate64) AC_CHECK_FUNCS(fseek64 fseeko64 ftell64 ftello64 setluid getpwanam) AC_CHECK_FUNCS(opendir64 readdir64 seekdir64 telldir64 rewinddir64 closedir64) +AC_CHECK_FUNCS(fdopendir fdopendir64) AC_CHECK_FUNCS(getpwent_r) AC_CHECK_FUNCS(getdents64) AC_CHECK_FUNCS(setenv strcasecmp fcvt fcvtl) diff --git a/source3/include/proto.h b/source3/include/proto.h index 2f2c62747d..77a7a4055a 100644 --- a/source3/include/proto.h +++ b/source3/include/proto.h @@ -890,6 +890,7 @@ int sys_open(const char *path, int oflag, mode_t mode); FILE *sys_fopen(const char *path, const char *type); void kernel_flock(int fd, uint32 share_mode, uint32 access_mask); SMB_STRUCT_DIR *sys_opendir(const char *name); +SMB_STRUCT_DIR *sys_fdopendir(int fd); SMB_STRUCT_DIRENT *sys_readdir(SMB_STRUCT_DIR *dirp); void sys_seekdir(SMB_STRUCT_DIR *dirp, long offset); long sys_telldir(SMB_STRUCT_DIR *dirp); diff --git a/source3/lib/system.c b/source3/lib/system.c index 4cf6a299da..57434f2d42 100644 --- a/source3/lib/system.c +++ b/source3/lib/system.c @@ -867,6 +867,22 @@ SMB_STRUCT_DIR *sys_opendir(const char *name) } /******************************************************************* + An fdopendir wrapper that will deal with 64 bit filesizes. +********************************************************************/ + +SMB_STRUCT_DIR *sys_fdopendir(int fd) +{ +#if defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(HAVE_FDOPENDIR64) + return fdopendir64(fd); +#elif defined(HAVE_FDOPENDIR) + return fdopendir(fd); +#else + errno = ENOSYS; + return NULL; +#endif +} + +/******************************************************************* A readdir wrapper that will deal with 64 bit filesizes. ********************************************************************/ |