3 #if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS != 64
4 #undef _FILE_OFFSET_BITS
5 #define _FILE_OFFSET_BITS 64
7 #ifndef __USE_LARGEFILE64
8 # define __USE_LARGEFILE64 1
10 /* We absolutely do _NOT_ want interfaces silently
11 * renamed under us or very bad things will happen... */
12 #ifdef __USE_FILE_OFFSET64
13 # undef __USE_FILE_OFFSET64
20 #include "dirstream.h"
22 libc_hidden_proto(memcpy)
24 int readdir64_r(DIR *dir, struct dirent64 *entry, struct dirent64 **result)
36 __pthread_mutex_lock(&(dir->dd_lock));
39 if (dir->dd_size <= dir->dd_nextloc) {
40 /* read dir->dd_max bytes of directory entries. */
41 bytes = __getdents64(dir->dd_fd, dir->dd_buf, dir->dd_max);
51 de = (struct dirent64 *) (((char *) dir->dd_buf) + dir->dd_nextloc);
53 /* Am I right? H.J. */
54 dir->dd_nextloc += de->d_reclen;
56 /* We have to save the next offset here. */
57 dir->dd_nextoff = de->d_off;
58 /* Skip deleted files. */
59 } while (de->d_ino == 0);
64 *result = memcpy (entry, de, de->d_reclen);
70 __pthread_mutex_unlock(&(dir->dd_lock));
71 return((de != NULL)? 0 : ret);