| 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 |