diff options
Diffstat (limited to 'libc/sysdeps/linux/common/fstat.c')
-rw-r--r-- | libc/sysdeps/linux/common/fstat.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/libc/sysdeps/linux/common/fstat.c b/libc/sysdeps/linux/common/fstat.c index eae3c8006..ac77eb295 100644 --- a/libc/sysdeps/linux/common/fstat.c +++ b/libc/sysdeps/linux/common/fstat.c @@ -7,25 +7,26 @@ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ -#include <sys/syscall.h> +#include <features.h> #include <unistd.h> #include <sys/stat.h> +#include <sys/syscall.h> + #include "xstatconv.h" #if defined __NR_fstat64 && !defined __NR_fstat int fstat(int fd, struct stat *buf) { - int result = INLINE_SYSCALL(fstat64, 2, fd, buf); - if (result == 0) { - /* Did we overflow? */ - if (buf->__pad1 || buf->__pad2 || buf->__pad3 - || buf->__pad4 || buf->__pad5 - || buf->__pad6 || buf->__pad7) { - __set_errno(EOVERFLOW); - return -1; - } - } - return result; + return INLINE_SYSCALL(fstat64, 2, fd, buf); +} +libc_hidden_def(fstat) + +#elif __WORDSIZE == 64 && defined __NR_newfstatat +#include <fcntl.h> + +int fstat(int fd, struct stat *buf) +{ + return INLINE_SYSCALL(fstat, 2, fd, buf); } libc_hidden_def(fstat) @@ -55,10 +56,9 @@ int fstat(int fd, struct stat *buf) return result; } libc_hidden_def(fstat) +#endif # if ! defined __NR_fstat64 strong_alias_untyped(fstat,fstat64) libc_hidden_def(fstat64) -# endif - #endif |