additional fixes for linux kernel apis with old syscalls removed
[musl] / src / stat / fstat.c
1 #include <sys/stat.h>
2 #include <errno.h>
3 #include <fcntl.h>
4 #include "syscall.h"
5 #include "libc.h"
6
7 void __procfdname(char *, unsigned);
8
9 int fstat(int fd, struct stat *st)
10 {
11         int ret = __syscall(SYS_fstat, fd, st);
12         if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
13                 return __syscall_ret(ret);
14
15         char buf[15+3*sizeof(int)];
16         __procfdname(buf, fd);
17 #ifdef SYS_stat
18         return syscall(SYS_stat, buf, st);
19 #else
20         return syscall(SYS_fstatat, AT_FDCWD, buf, st);
21 #endif
22 }
23
24 LFS64(fstat);