#define _GNU_SOURCE | |
#include <dirent.h> | |
#include <fcntl.h> | |
#include <stdlib.h> | |
#include "__dirent.h" | |
#include "syscall.h" | |
DIR *opendir(const char *name) | |
{ | |
int fd; | |
DIR *dir; | |
if ((fd = open(name, O_RDONLY|O_DIRECTORY|O_CLOEXEC)) < 0) | |
return 0; | |
if (!(dir = calloc(1, sizeof *dir))) { | |
__syscall(SYS_close, fd); | |
return 0; | |
} | |
dir->fd = fd; | |
return dir; | |
} |