#include "dir.h" #include #include #include #include #include #include struct dirent *readdir(struct __opaque_dir *dirp) { int result = __libc_dir_move_next(dirp); if (result < 0) { dirp->d_flags |= DIR_ERR; __set_errno(-result); return NULL; } if (result > 0) { return &dirp->d_current; } result = __libc_dir_refill(dirp); if (result < 0) { dirp->d_flags |= DIR_ERR; __set_errno(-result); return NULL; } if (!dirp->d_buf_datalen) { return NULL; } return &dirp->d_current; }