#ifndef ISO
type DIR

type {struct dirent}

# if !defined POSIX && !defined POSIX2008
element {struct dirent} ino_t d_ino
# endif
element {struct dirent} char d_name []

# if !defined POSIX && !defined POSIX2008
type ino_t
#endif

function int closedir (DIR*)
function {DIR*} opendir (const char*)
function {struct dirent*} readdir (DIR*)
function int readdir_r (DIR*, struct dirent*, struct dirent**)
function void rewinddir (DIR*)
# if !defined POSIX && !defined POSIX2008
function void seekdir (DIR*, long int)
function {long int} telldir (DIR*)
# endif

allow d_*
allow *_t

# if defined XOPEN2K8 || defined POSIX2008
function int alphasort (const struct dirent**, const struct dirent**)
function int dirfd (DIR*)
function int scandir (const char*, struct dirent***, int(*)(const struct dirent*), int(*)(const struct dirent**,const struct dirent **))
function {DIR*} fdopendir (int)
# endif
#endif
