summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2011-02-08 14:43:07 -0800
committerJeremy Allison <jra@samba.org>2011-02-08 15:05:59 -0800
commit1911d483e552a6ec73b2c107b968268e7e9111e5 (patch)
tree622f4d840ff9f054814cfab0460a50671b44d58b
parent5a0ee95b95d22f8eee7cc86d350fb0e60ab54b69 (diff)
downloadsamba-1911d483e552a6ec73b2c107b968268e7e9111e5.tar.gz
samba-1911d483e552a6ec73b2c107b968268e7e9111e5.tar.bz2
samba-1911d483e552a6ec73b2c107b968268e7e9111e5.zip
Add fdopendir().
-rw-r--r--source3/configure.in1
-rw-r--r--source3/include/proto.h1
-rw-r--r--source3/lib/system.c16
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.
********************************************************************/