diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-12-19 00:04:05 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-12-19 00:04:05 +0000 |
commit | 63a34b0f0196ec397b79cecd8bac4b1612981ad0 (patch) | |
tree | 0799c3cd8f2cdf73f76662ff4fdf1ec99180a298 /sysdeps/unix/sysv/linux/lxstat64.c | |
parent | b85697f61d8aeeaeb8b91d50ab2c668b7fcbbd8a (diff) | |
download | glibc-63a34b0f0196ec397b79cecd8bac4b1612981ad0.tar glibc-63a34b0f0196ec397b79cecd8bac4b1612981ad0.tar.gz glibc-63a34b0f0196ec397b79cecd8bac4b1612981ad0.tar.bz2 glibc-63a34b0f0196ec397b79cecd8bac4b1612981ad0.zip |
Update.
1999-12-18 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/i386/setrlimit.c: Declare local variable
result if necessary.
* sysdeps/unix/sysv/linux/i386/bits/resource.h: Don't depend on the
unreliable kernel headers.
* sysdeps/unix/sysv/linux/bits/resource.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/resource.h: Likewise.
* sysdeps/unix/sysv/linux/alpha/bits/resource.h: New file.
* sysdeps/unix/sysv/linux/mips/bits/resource.h: New file.
1999-12-18 Andreas Jaeger <aj@suse.de>
* config.make.in (datadir): Added.
Closes PR libc/1491. Patch by dervishd@jazzfree.com.
1999-12-18 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/ftruncate64.c (ftruncate64): Save and
set errno.
* sysdeps/unix/sysv/linux/truncate64.c (truncate64): Likewise.
1999-12-18 Andreas Jaeger <aj@suse.de>
* sysdeps/unix/sysv/linux/fxstat64.c: Rewrite to use fstat64
syscall if available.
* sysdeps/unix/sysv/linux/lxstat64.c: Likewise for lstat64.
* sysdeps/unix/sysv/linux/xstat64.c: Likewise for stat64.
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_STAT64_SYSCALL): New.
1999-12-17 Scott Bambrough <scottb@netwinder.org>
* sysdeps/arm/dl-machine.h (CLEAR_CACHE): New macro to force a
cache flush.
* elf/dl-reloc.c (_dl_relocate_object): Add call to flush cache
after .text segment fixups.
1999-12-16 Andreas Jaeger <aj@suse.de>
* rt/aio.h: Remove erroneous __restrict declarations.
1999-12-18 Ulrich Drepper <drepper@cygnus.com>
* scripts/rellns-sh: Find pwd program also in /usr/bin and let shell
do the job if it is there neither.
Patch by David R. Conrad <drc@adni.net> (PR libc/1485).
1999-12-16 Andreas Jaeger <aj@suse.de>
* sysdeps/ieee754/bits/nan.h (NAN): Rename union to avoid
duplicate definition with function __nan.
Closes PR libc/1487 reported by <diana@kai.com>.
* string/bits/string2.h (__strsep): Help gcc optimizing string access.
Diffstat (limited to 'sysdeps/unix/sysv/linux/lxstat64.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/lxstat64.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/sysdeps/unix/sysv/linux/lxstat64.c b/sysdeps/unix/sysv/linux/lxstat64.c index 60280804db..9db8fcf455 100644 --- a/sysdeps/unix/sysv/linux/lxstat64.c +++ b/sysdeps/unix/sysv/linux/lxstat64.c @@ -1,5 +1,5 @@ /* lxstat64 using old-style Unix lstat system call. - Copyright (C) 1997, 1998 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999 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 @@ -25,20 +25,46 @@ #include <sysdep.h> #include <sys/syscall.h> -#include <xstatconv.c> +#if __ASSUME_STAT64_SYSCALL == 0 +# include <xstatconv.c> +#endif extern int __syscall_lstat (const char *, struct kernel_stat *); +#ifdef __NR_lstat64 +extern int __syscall_lstat64 (const char *, struct stat64 *); +# 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 NAME in BUF. */ int __lxstat64 (int vers, const char *name, struct stat64 *buf) { +#ifdef __ASSUME_STAT64_SYSCALL + return INLINE_SYSCALL (lstat64, 2, name, &buf); +#else struct kernel_stat kbuf; int result; +# ifdef __NR_lstat64 + if (! have_no_stat64) + { + int saved_errno = errno; + result = INLINE_SYSCALL (lstat64, 2, name, &kbuf); + + if (result != -1 || errno != ENOSYS) + return result; + __set_errno (saved_errno); + have_no_stat64 = 1; + } +# endif result = INLINE_SYSCALL (lstat, 2, name, &kbuf); if (result == 0) result = xstat64_conv (vers, &kbuf, buf); return result; +#endif } |