diff options
Diffstat (limited to 'src/stat/fstat.c')
-rw-r--r-- | src/stat/fstat.c | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/src/stat/fstat.c b/src/stat/fstat.c index 4f13f4f0..fd28b8ac 100644 --- a/src/stat/fstat.c +++ b/src/stat/fstat.c @@ -1,21 +1,13 @@ +#define _BSD_SOURCE #include <sys/stat.h> #include <errno.h> #include <fcntl.h> #include "syscall.h" -int fstat(int fd, struct stat *st) +int __fstat(int fd, struct stat *st) { - int ret = __syscall(SYS_fstat, fd, st); - if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0) - return __syscall_ret(ret); - - char buf[15+3*sizeof(int)]; - __procfdname(buf, fd); -#ifdef SYS_stat - return syscall(SYS_stat, buf, st); -#else - return syscall(SYS_fstatat, AT_FDCWD, buf, st, 0); -#endif + if (fd<0) return __syscall_ret(-EBADF); + return __fstatat(fd, "", st, AT_EMPTY_PATH); } -weak_alias(fstat, fstat64); +weak_alias(__fstat, fstat); |