Viet-Trung Luu | 96b05c1 | 2016-01-11 11:26:36 -0800 | [diff] [blame] | 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 | |||||
8 | DIR *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 | } |