OLD | NEW |
1 #include <dirent.h> | 1 #include <dirent.h> |
2 #include <fcntl.h> | 2 #include <fcntl.h> |
3 #include <sys/stat.h> | 3 #include <sys/stat.h> |
4 #include <errno.h> | 4 #include <errno.h> |
5 #include <stdlib.h> | 5 #include <stdlib.h> |
6 #include "__dirent.h" | 6 #include "__dirent.h" |
7 | 7 |
8 DIR *fdopendir(int fd) | 8 DIR* fdopendir(int fd) { |
9 { | 9 DIR* dir; |
10 » DIR *dir; | 10 struct stat st; |
11 » struct stat st; | |
12 | 11 |
13 » if (fstat(fd, &st) < 0) { | 12 if (fstat(fd, &st) < 0) { |
14 » » return 0; | 13 return 0; |
15 » } | 14 } |
16 » if (!S_ISDIR(st.st_mode)) { | 15 if (!S_ISDIR(st.st_mode)) { |
17 » » errno = ENOTDIR; | 16 errno = ENOTDIR; |
18 » » return 0; | 17 return 0; |
19 » } | 18 } |
20 » if (!(dir = calloc(1, sizeof *dir))) { | 19 if (!(dir = calloc(1, sizeof *dir))) { |
21 » » return 0; | 20 return 0; |
22 » } | 21 } |
23 | 22 |
24 » fcntl(fd, F_SETFD, FD_CLOEXEC); | 23 fcntl(fd, F_SETFD, FD_CLOEXEC); |
25 » dir->fd = fd; | 24 dir->fd = fd; |
26 » return dir; | 25 return dir; |
27 } | 26 } |
OLD | NEW |