1#define _GNU_SOURCE 2#include <dirent.h> 3#include <fcntl.h> 4#include <stdlib.h> 5#include "__dirent.h" 6#include "syscall.h" 7 8DIR *opendir(const char *name) 9{ 10 int fd; 11 DIR *dir; 12 13 if ((fd = open(name, O_RDONLY|O_DIRECTORY|O_CLOEXEC)) < 0) 14 return 0; 15 if (!(dir = calloc(1, sizeof *dir))) { 16 __syscall(SYS_close, fd); 17 return 0; 18 } 19 dir->fd = fd; 20 return dir; 21} 22