1 #ifndef _DIRENT_H 2 # ifndef _ISOMAC 3 # include <dirstream.h> 4 # endif 5 # include <dirent/dirent.h> 6 # ifndef _ISOMAC 7 # include <sys/stat.h> 8 # include <stdbool.h> 9 10 struct scandir_cancel_struct 11 { 12 DIR *dp; 13 void *v; 14 size_t cnt; 15 }; 16 17 /* Now define the internal interfaces. */ 18 extern DIR *__opendir (const char *__name) attribute_hidden; 19 extern DIR *__opendirat (int dfd, const char *__name) attribute_hidden; 20 extern DIR *__fdopendir (int __fd) attribute_hidden; 21 extern int __closedir (DIR *__dirp) attribute_hidden; 22 extern struct dirent *__readdir (DIR *__dirp) attribute_hidden; 23 extern struct dirent *__readdir_unlocked (DIR *__dirp) attribute_hidden; 24 extern struct dirent64 *__readdir64 (DIR *__dirp); 25 libc_hidden_proto (__readdir64) 26 extern int __readdir_r (DIR *__dirp, struct dirent *__entry, 27 struct dirent **__result); 28 extern int __readdir64_r (DIR *__dirp, struct dirent64 *__entry, 29 struct dirent64 **__result); 30 extern int __scandir64 (const char * __dir, 31 struct dirent64 *** __namelist, 32 int (*__selector) (const struct dirent64 *), 33 int (*__cmp) (const struct dirent64 **, 34 const struct dirent64 **)); 35 extern __ssize_t __getdirentries (int __fd, char *__restrict __buf, 36 size_t __nbytes, 37 __off_t *__restrict __basep) 38 __THROW __nonnull ((2, 4)); 39 40 /* These functions are only implemented on Linux. */ 41 extern __ssize_t __getdents (int __fd, void *__buf, size_t __nbytes) 42 attribute_hidden; 43 extern __ssize_t __getdents64 (int __fd, void *__buf, size_t __nbytes); 44 libc_hidden_proto (__getdents64) 45 46 extern int __alphasort64 (const struct dirent64 **a, const struct dirent64 **b) 47 __attribute_pure__; 48 extern int __versionsort64 (const struct dirent64 **a, 49 const struct dirent64 **b) 50 __attribute_pure__; 51 extern DIR *__alloc_dir (int fd, bool close_fd, int flags, 52 const struct __stat64_t64 *statp) 53 __nonnull (4) attribute_hidden; 54 extern __typeof (rewinddir) __rewinddir; 55 extern __typeof (seekdir) __seekdir; 56 extern __typeof (dirfd) __dirfd; 57 libc_hidden_proto (dirfd); 58 59 extern void __scandir_cancel_handler (void *arg) attribute_hidden; 60 extern int __scandir_tail (DIR *dp, 61 struct dirent ***namelist, 62 int (*select) (const struct dirent *), 63 int (*cmp) (const struct dirent **, 64 const struct dirent **)) 65 attribute_hidden; 66 # if !_DIRENT_MATCHES_DIRENT64 67 extern int __scandir_tail (DIR *dp, 68 struct dirent ***namelist, 69 int (*select) (const struct dirent *), 70 int (*cmp) (const struct dirent **, 71 const struct dirent **)) 72 attribute_hidden; 73 # endif 74 extern int __scandir64_tail (DIR *dp, 75 struct dirent64 ***namelist, 76 int (*select) (const struct dirent64 *), 77 int (*cmp) (const struct dirent64 **, 78 const struct dirent64 **)) 79 attribute_hidden; 80 81 libc_hidden_proto (__rewinddir) 82 extern __typeof (scandirat) __scandirat; 83 84 # if IS_IN (rtld) 85 extern __typeof (__rewinddir) __rewinddir attribute_hidden; 86 # endif 87 # endif 88 89 #endif 90