#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; | |
} |