#ifndef _DIRENT_H_
#define _DIRENT_H_
#include <sys/cdefs.h>
#include <sys/_types.h>
#include <sys/dirent.h>
#if __BSD_VISIBLE
#ifndef _SIZE_T_DECLARED
typedef __size_t size_t;
#define _SIZE_T_DECLARED
#endif
#ifndef _SSIZE_T_DECLARED
typedef __ssize_t ssize_t;
#define _SSIZE_T_DECLARED
#endif
#ifndef _OFF_T_DECLARED
typedef __off_t off_t;
#define _OFF_T_DECLARED
#endif
#endif
#if __XSI_VISIBLE
#ifndef _INO_T_DECLARED
typedef __ino_t ino_t;
#define _INO_T_DECLARED
#endif
#define d_ino d_fileno
#endif
#if __BSD_VISIBLE
#include <sys/_null.h>
#define DIRBLKSIZ 1024
struct _dirdesc;
typedef struct _dirdesc DIR;
#define DTF_HIDEW 0x0001
#define DTF_NODUP 0x0002
#define DTF_REWIND 0x0004
#define __DTF_READALL 0x0008
#define __DTF_SKIPREAD 0x0010
#else
typedef void * DIR;
#endif
#ifndef _KERNEL
__BEGIN_DECLS
#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 700
int alphasort(const struct dirent **, const struct dirent **);
int dirfd(DIR *);
#endif
#if __BSD_VISIBLE
int versionsort(const struct dirent **, const struct dirent **);
DIR *__opendir2(const char *, int);
int fdclosedir(DIR *);
ssize_t getdents(int, char *, size_t);
ssize_t getdirentries(int, char *, size_t, off_t *);
#endif
DIR *opendir(const char *);
DIR *fdopendir(int);
struct dirent *
readdir(DIR *);
#if __POSIX_VISIBLE >= 199506 || __XSI_VISIBLE >= 500
int readdir_r(DIR *, struct dirent *, struct dirent **)
__deprecated1("Does not take variable {NAME_MAX} into account");
#endif
void rewinddir(DIR *);
#if __POSIX_VISIBLE >= 200809 || __XSI_VISIBLE >= 700
int scandir(const char *, struct dirent ***,
int (*)(const struct dirent *), int (*)(const struct dirent **,
const struct dirent **));
#ifdef __BLOCKS__
int scandir_b(const char *, struct dirent ***,
int (^)(const struct dirent *),
int (^)(const struct dirent **, const struct dirent **));
#endif
#endif
#if __BSD_VISIBLE
int fdscandir(int, struct dirent ***,
int (*)(const struct dirent *), int (*)(const struct dirent **,
const struct dirent **));
#ifdef __BLOCKS__
int fdscandir_b(int, struct dirent ***,
int (^)(const struct dirent *),
int (^)(const struct dirent **, const struct dirent **));
#endif
int scandirat(int, const char *, struct dirent ***,
int (*)(const struct dirent *), int (*)(const struct dirent **,
const struct dirent **));
#ifdef __BLOCKS__
int scandirat_b(int, const char *, struct dirent ***,
int (^)(const struct dirent *),
int (^)(const struct dirent **, const struct dirent **));
#endif
#endif
#if __XSI_VISIBLE
void seekdir(DIR *, long);
long telldir(DIR *);
#endif
int closedir(DIR *);
__END_DECLS
#endif
#endif