#include <stdlib.h> #include <dirent.h> #include <unistd.h> #include <errno.h> #include <syscall.h> static inline _syscall1(int,close,int,fd) int closedir(DIR * dir) { int fd; if (!dir) { errno = EBADF; return -1; } fd = dir->dd_fd; free(dir->dd_buf); free(dir); return close(fd); }