123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403 |
- #ifndef _DIRENT_H
- #define _DIRENT_H 1
- #include <features.h>
- __BEGIN_DECLS
- #include <bits/types.h>
- #ifdef __USE_XOPEN
- # ifndef __ino_t_defined
- # ifndef __USE_FILE_OFFSET64
- typedef __ino_t ino_t;
- # else
- typedef __ino64_t ino_t;
- # endif
- # define __ino_t_defined
- # endif
- # if defined __USE_LARGEFILE64 && !defined __ino64_t_defined
- typedef __ino64_t ino64_t;
- # define __ino64_t_defined
- # endif
- #endif
- #include <bits/dirent.h>
- #if defined __USE_MISC && !defined d_fileno
- # define d_ino d_fileno
- #endif
- #ifdef _DIRENT_HAVE_D_NAMLEN
- # define _D_EXACT_NAMLEN(d) ((d)->d_namlen)
- # define _D_ALLOC_NAMLEN(d) (_D_EXACT_NAMLEN (d) + 1)
- #else
- # define _D_EXACT_NAMLEN(d) (strlen ((d)->d_name))
- # ifdef _DIRENT_HAVE_D_RECLEN
- # define _D_ALLOC_NAMLEN(d) (((char *) (d) + (d)->d_reclen) - &(d)->d_name[0])
- # else
- # define _D_ALLOC_NAMLEN(d) (sizeof (d)->d_name > 1 ? sizeof (d)->d_name : \
- _D_EXACT_NAMLEN (d) + 1)
- # endif
- #endif
- #ifdef __USE_MISC
- enum
- {
- DT_UNKNOWN = 0,
- # define DT_UNKNOWN DT_UNKNOWN
- DT_FIFO = 1,
- # define DT_FIFO DT_FIFO
- DT_CHR = 2,
- # define DT_CHR DT_CHR
- DT_DIR = 4,
- # define DT_DIR DT_DIR
- DT_BLK = 6,
- # define DT_BLK DT_BLK
- DT_REG = 8,
- # define DT_REG DT_REG
- DT_LNK = 10,
- # define DT_LNK DT_LNK
- DT_SOCK = 12,
- # define DT_SOCK DT_SOCK
- DT_WHT = 14
- # define DT_WHT DT_WHT
- };
- # define IFTODT(mode) (((mode) & 0170000) >> 12)
- # define DTTOIF(dirtype) ((dirtype) << 12)
- #endif
- typedef struct __dirstream DIR;
- extern DIR *opendir (const char *__name) __nonnull ((1));
- #ifdef __USE_XOPEN2K8
- extern DIR *fdopendir (int __fd);
- #endif
- extern int closedir (DIR *__dirp) __nonnull ((1));
- #ifndef __USE_FILE_OFFSET64
- extern struct dirent *readdir (DIR *__dirp) __nonnull ((1));
- #else
- # ifdef __REDIRECT
- extern struct dirent *__REDIRECT (readdir, (DIR *__dirp), readdir64)
- __nonnull ((1));
- # else
- # define readdir readdir64
- # endif
- #endif
- #ifdef __USE_LARGEFILE64
- extern struct dirent64 *readdir64 (DIR *__dirp) __nonnull ((1));
- #endif
- #ifdef __USE_POSIX
- # ifndef __USE_FILE_OFFSET64
- extern int readdir_r (DIR *__restrict __dirp,
- struct dirent *__restrict __entry,
- struct dirent **__restrict __result)
- __nonnull ((1, 2, 3));
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (readdir_r,
- (DIR *__restrict __dirp,
- struct dirent *__restrict __entry,
- struct dirent **__restrict __result),
- readdir64_r) __nonnull ((1, 2, 3));
- # else
- # define readdir_r readdir64_r
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
- extern int readdir64_r (DIR *__restrict __dirp,
- struct dirent64 *__restrict __entry,
- struct dirent64 **__restrict __result)
- __nonnull ((1, 2, 3));
- # endif
- #endif
- extern void rewinddir (DIR *__dirp) __THROW __nonnull ((1));
- #if defined __USE_MISC || defined __USE_XOPEN
- # include <bits/types.h>
- extern void seekdir (DIR *__dirp, long int __pos) __THROW __nonnull ((1));
- extern long int telldir (DIR *__dirp) __THROW __nonnull ((1));
- #endif
- #ifdef __USE_XOPEN2K8
- extern int dirfd (DIR *__dirp) __THROW __nonnull ((1));
- # if defined __OPTIMIZE__ && defined _DIR_dirfd
- # define dirfd(dirp) _DIR_dirfd (dirp)
- # endif
- # ifdef __USE_MISC
- # ifndef MAXNAMLEN
- # include <bits/posix1_lim.h>
- # ifdef NAME_MAX
- # define MAXNAMLEN NAME_MAX
- # else
- # define MAXNAMLEN 255
- # endif
- # endif
- # endif
- # define __need_size_t
- # include <stddef.h>
- # ifndef __USE_FILE_OFFSET64
- extern int scandir (const char *__restrict __dir,
- struct dirent ***__restrict __namelist,
- int (*__selector) (const struct dirent *),
- int (*__cmp) (const struct dirent **,
- const struct dirent **))
- __nonnull ((1, 2));
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (scandir,
- (const char *__restrict __dir,
- struct dirent ***__restrict __namelist,
- int (*__selector) (const struct dirent *),
- int (*__cmp) (const struct dirent **,
- const struct dirent **)),
- scandir64) __nonnull ((1, 2));
- # else
- # define scandir scandir64
- # endif
- # endif
- # if defined __USE_GNU && defined __USE_LARGEFILE64
- extern int scandir64 (const char *__restrict __dir,
- struct dirent64 ***__restrict __namelist,
- int (*__selector) (const struct dirent64 *),
- int (*__cmp) (const struct dirent64 **,
- const struct dirent64 **))
- __nonnull ((1, 2));
- # endif
- # ifdef __USE_GNU
- # ifndef __USE_FILE_OFFSET64
- extern int scandirat (int __dfd, const char *__restrict __dir,
- struct dirent ***__restrict __namelist,
- int (*__selector) (const struct dirent *),
- int (*__cmp) (const struct dirent **,
- const struct dirent **))
- __nonnull ((2, 3));
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT (scandirat,
- (int __dfd, const char *__restrict __dir,
- struct dirent ***__restrict __namelist,
- int (*__selector) (const struct dirent *),
- int (*__cmp) (const struct dirent **,
- const struct dirent **)),
- scandirat64) __nonnull ((2, 3));
- # else
- # define scandirat scandirat64
- # endif
- # endif
- extern int scandirat64 (int __dfd, const char *__restrict __dir,
- struct dirent64 ***__restrict __namelist,
- int (*__selector) (const struct dirent64 *),
- int (*__cmp) (const struct dirent64 **,
- const struct dirent64 **))
- __nonnull ((2, 3));
- # endif
- # ifndef __USE_FILE_OFFSET64
- extern int alphasort (const struct dirent **__e1,
- const struct dirent **__e2)
- __THROW __attribute_pure__ __nonnull ((1, 2));
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT_NTH (alphasort,
- (const struct dirent **__e1,
- const struct dirent **__e2),
- alphasort64) __attribute_pure__ __nonnull ((1, 2));
- # else
- # define alphasort alphasort64
- # endif
- # endif
- # if defined __USE_GNU && defined __USE_LARGEFILE64
- extern int alphasort64 (const struct dirent64 **__e1,
- const struct dirent64 **__e2)
- __THROW __attribute_pure__ __nonnull ((1, 2));
- # endif
- #endif
- #ifdef __USE_MISC
- # ifndef __USE_FILE_OFFSET64
- extern __ssize_t getdirentries (int __fd, char *__restrict __buf,
- size_t __nbytes,
- __off_t *__restrict __basep)
- __THROW __nonnull ((2, 4));
- # else
- # ifdef __REDIRECT
- extern __ssize_t __REDIRECT_NTH (getdirentries,
- (int __fd, char *__restrict __buf,
- size_t __nbytes,
- __off64_t *__restrict __basep),
- getdirentries64) __nonnull ((2, 4));
- # else
- # define getdirentries getdirentries64
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
- extern __ssize_t getdirentries64 (int __fd, char *__restrict __buf,
- size_t __nbytes,
- __off64_t *__restrict __basep)
- __THROW __nonnull ((2, 4));
- # endif
- #endif
- #ifdef __USE_GNU
- # ifndef __USE_FILE_OFFSET64
- extern int versionsort (const struct dirent **__e1,
- const struct dirent **__e2)
- __THROW __attribute_pure__ __nonnull ((1, 2));
- # else
- # ifdef __REDIRECT
- extern int __REDIRECT_NTH (versionsort,
- (const struct dirent **__e1,
- const struct dirent **__e2),
- versionsort64)
- __attribute_pure__ __nonnull ((1, 2));
- # else
- # define versionsort versionsort64
- # endif
- # endif
- # ifdef __USE_LARGEFILE64
- extern int versionsort64 (const struct dirent64 **__e1,
- const struct dirent64 **__e2)
- __THROW __attribute_pure__ __nonnull ((1, 2));
- # endif
- #endif
- __END_DECLS
- #endif
|