diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/alpha')
-rw-r--r-- | sysdeps/unix/sysv/linux/alpha/fxstat64.c (renamed from sysdeps/unix/sysv/linux/alpha/fxstat.c) | 48 |
1 files changed, 19 insertions, 29 deletions
diff --git a/sysdeps/unix/sysv/linux/alpha/fxstat.c b/sysdeps/unix/sysv/linux/alpha/fxstat64.c index 0978610bf0..286a2f0a6c 100644 --- a/sysdeps/unix/sysv/linux/alpha/fxstat.c +++ b/sysdeps/unix/sysv/linux/alpha/fxstat64.c @@ -1,4 +1,4 @@ -/* fxstat using old-style Unix stat system call. +/* fxstat64 using old-style Unix stat system call. Copyright (C) 2004-2020 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -16,42 +16,32 @@ License along with the GNU C Library. If not, see <https://www.gnu.org/licenses/>. */ -#define __fxstat64 __fxstat64_disable - -#include <errno.h> -#include <stddef.h> +#define __fxstat __redirect___fxstat64 #include <sys/stat.h> +#undef __fxstat #include <kernel_stat.h> #include <sysdep.h> -#include <sys/syscall.h> #include <xstatconv.h> -#undef __fxstat64 - - /* Get information about the file NAME in BUF. */ int -__fxstat (int vers, int fd, struct stat *buf) +__fxstat64 (int vers, int fd, struct stat64 *buf) { - int result; - struct kernel_stat kbuf; - - if (vers == _STAT_VER_KERNEL64) + switch (vers) { - result = INTERNAL_SYSCALL_CALL (fstat64, fd, buf); - if (__glibc_likely (!INTERNAL_SYSCALL_ERROR_P (result))) - return result; - __set_errno (INTERNAL_SYSCALL_ERRNO (result)); - return -1; + case _STAT_VER_KERNEL64: + return INLINE_SYSCALL_CALL (fstat64, fd, buf); + + default: + { + struct kernel_stat kbuf; + int r = INTERNAL_SYSCALL_CALL (fstat, fd, &kbuf); + if (r == 0) + return __xstat_conv (vers, &kbuf, buf); + return INLINE_SYSCALL_ERROR_RETURN_VALUE (-r); + } } - - result = INTERNAL_SYSCALL_CALL (fstat, fd, &kbuf); - if (__glibc_likely (!INTERNAL_SYSCALL_ERROR_P (result))) - return __xstat_conv (vers, &kbuf, buf); - __set_errno (INTERNAL_SYSCALL_ERRNO (result)); - return -1; } -hidden_def (__fxstat) -weak_alias (__fxstat, _fxstat); -strong_alias (__fxstat, __fxstat64); -hidden_ver (__fxstat, __fxstat64) +hidden_def (__fxstat64) +strong_alias (__fxstat64, __fxstat); +hidden_ver (__fxstat64, __fxstat) |