From: Jeremy Allison Date: Tue, 8 Feb 2011 22:43:07 +0000 (-0800) Subject: Add fdopendir(). X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=1911d483e552a6ec73b2c107b968268e7e9111e5;p=metze%2Fsamba%2Fwip.git Add fdopendir(). --- diff --git a/source3/configure.in b/source3/configure.in index f0d8de7ddb64..363fbac352d8 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 2f2c62747dd6..77a7a4055a04 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 4cf6a299daa1..57434f2d4210 100644 --- a/source3/lib/system.c +++ b/source3/lib/system.c @@ -866,6 +866,22 @@ SMB_STRUCT_DIR *sys_opendir(const char *name) #endif } +/******************************************************************* + 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. ********************************************************************/