From a4b93f0bef877d6e996037696ecb1779bfe46074 Mon Sep 17 00:00:00 2001 From: "Peter S. Mazinger" Date: Sat, 16 Apr 2011 01:04:29 +0200 Subject: openat*: use a static function with the different type and strong_alias_untyped No need for hidden openat64 _lfs_64.h does not allow to compile *64.c if LFS is not enabled, remove guard Signed-off-by: Peter S. Mazinger Signed-off-by: Bernhard Reutner-Fischer --- include/fcntl.h | 1 - libc/sysdeps/linux/common/openat.c | 12 +++--------- libc/sysdeps/linux/common/openat64.c | 17 +++-------------- 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/include/fcntl.h b/include/fcntl.h index fc7136862..f2b46290c 100644 --- a/include/fcntl.h +++ b/include/fcntl.h @@ -135,7 +135,6 @@ extern int __REDIRECT (openat, (int __fd, __const char *__file, int __oflag, extern int openat64 (int __fd, __const char *__file, int __oflag, ...) __nonnull ((2)); -libc_hidden_proto(openat64) #endif /* Create and open FILE, with mode MODE. This takes an `int' MODE diff --git a/libc/sysdeps/linux/common/openat.c b/libc/sysdeps/linux/common/openat.c index 8380ec687..f6032da2c 100644 --- a/libc/sysdeps/linux/common/openat.c +++ b/libc/sysdeps/linux/common/openat.c @@ -6,19 +6,13 @@ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ -#define openat __xx_openat #include #include -#undef openat #ifdef __NR_openat -/* The openat() prototype is varargs based, but we don't care about that - * here, so need to provide our own dedicated signature. - */ -extern int openat(int fd, const char *file, int oflag, mode_t mode); -libc_hidden_proto(openat) - -_syscall4(int, openat, int, fd, const char *, file, int, oflag, mode_t, mode) +# define __NR___syscall_openat __NR_openat +static __inline__ _syscall4(int, __syscall_openat, int, fd, const char *, file, int, oflag, mode_t, mode) +strong_alias_untyped(__syscall_openat,openat) libc_hidden_def(openat) #else /* should add emulation with open() and /proc/self/fd/ ... */ diff --git a/libc/sysdeps/linux/common/openat64.c b/libc/sysdeps/linux/common/openat64.c index 06a5819d7..eda3e7db1 100644 --- a/libc/sysdeps/linux/common/openat64.c +++ b/libc/sysdeps/linux/common/openat64.c @@ -6,27 +6,16 @@ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ -#define openat64 __xx_openat +#include <_lfs_64.h> #include #include -#undef openat64 - -#ifdef __UCLIBC_HAS_LFS__ #ifdef __NR_openat -/* The openat() prototype is varargs based, but we don't care about that - * here, so need to provide our own dedicated signature. - */ -extern int openat64(int fd, const char *file, int oflag, mode_t mode); -libc_hidden_proto(openat64) - -int openat64(int fd, const char *file, int oflag, mode_t mode) +static int __openat64(int fd, const char *file, int oflag, mode_t mode) { return openat(fd, file, oflag | O_LARGEFILE, mode); } -libc_hidden_def(openat64) +strong_alias_untyped(__openat64,openat64) #else /* should add emulation with open() and /proc/self/fd/ ... */ #endif - -#endif -- cgit v1.2.3