1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-28 00:21:52 +03:00

Remove __ASSUME_STAT64_SYSCALL.

This commit is contained in:
Joseph Myers
2012-08-27 19:36:04 +00:00
parent 5dbf56af7e
commit ad845c0be9
22 changed files with 81 additions and 402 deletions

View File

@ -1,5 +1,5 @@
/* fxstat64 using old-style Unix fstat system call.
Copyright (C) 1997-2002, 2003, 2006 Free Software Foundation, Inc.
/* fxstat64 using Linux fstat64 system call.
Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -27,57 +27,18 @@
#include <kernel-features.h>
#if __ASSUME_STAT64_SYSCALL == 0
# include <xstatconv.h>
#endif
#ifdef __NR_fstat64
# if __ASSUME_STAT64_SYSCALL == 0
/* The variable is shared between all wrappers around *stat64 calls. */
extern int __have_no_stat64;
# endif
#endif
/* Get information about the file FD in BUF. */
int
___fxstat64 (int vers, int fd, struct stat64 *buf)
{
int result;
#if __ASSUME_STAT64_SYSCALL > 0
result = INLINE_SYSCALL (fstat64, 2, fd, CHECK_1 (buf));
# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
#if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
if (__builtin_expect (!result, 1) && buf->__st_ino != (__ino_t) buf->st_ino)
buf->st_ino = buf->__st_ino;
# endif
return result;
#else
struct kernel_stat kbuf;
# if defined __NR_fstat64
if (! __have_no_stat64)
{
int saved_errno = errno;
result = INLINE_SYSCALL (fstat64, 2, fd, CHECK_1 (buf));
if (result != -1 || errno != ENOSYS)
{
# if defined _HAVE_STAT64___ST_INO && __ASSUME_ST_INO_64_BIT == 0
if (!result && buf->__st_ino != (__ino_t)buf->st_ino)
buf->st_ino = buf->__st_ino;
# endif
return result;
}
__set_errno (saved_errno);
__have_no_stat64 = 1;
}
# endif
result = INLINE_SYSCALL (fstat, 2, fd, __ptrvalue (&kbuf));
if (result == 0)
result = __xstat64_conv (vers, &kbuf, buf);
return result;
#endif
return result;
}
#include <shlib-compat.h>