OLD | NEW |
1 #include <sys/stat.h> | 1 #include <sys/stat.h> |
2 #include <errno.h> | 2 #include <errno.h> |
3 #include <fcntl.h> | 3 #include <fcntl.h> |
4 #include "syscall.h" | 4 #include "syscall.h" |
5 | 5 |
6 void __procfdname(char *, unsigned); | 6 void __procfdname(char*, unsigned); |
7 | 7 |
8 int fchmod(int fd, mode_t mode) | 8 int fchmod(int fd, mode_t mode) { |
9 { | 9 int ret = __syscall(SYS_fchmod, fd, mode); |
10 » int ret = __syscall(SYS_fchmod, fd, mode); | 10 if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0) |
11 » if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0) | 11 return __syscall_ret(ret); |
12 » » return __syscall_ret(ret); | |
13 | 12 |
14 » char buf[15+3*sizeof(int)]; | 13 char buf[15 + 3 * sizeof(int)]; |
15 » __procfdname(buf, fd); | 14 __procfdname(buf, fd); |
16 #ifdef SYS_chmod | 15 #ifdef SYS_chmod |
17 » return syscall(SYS_chmod, buf, mode); | 16 return syscall(SYS_chmod, buf, mode); |
18 #else | 17 #else |
19 » return syscall(SYS_fchmodat, AT_FDCWD, buf, mode); | 18 return syscall(SYS_fchmodat, AT_FDCWD, buf, mode); |
20 #endif | 19 #endif |
21 } | 20 } |
OLD | NEW |