summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/common')
-rw-r--r--libc/sysdeps/linux/common/sendfile.c8
-rw-r--r--libc/sysdeps/linux/common/sendfile64.c26
2 files changed, 10 insertions, 24 deletions
diff --git a/libc/sysdeps/linux/common/sendfile.c b/libc/sysdeps/linux/common/sendfile.c
index ba3734f09..fe0629ca3 100644
--- a/libc/sysdeps/linux/common/sendfile.c
+++ b/libc/sysdeps/linux/common/sendfile.c
@@ -10,5 +10,13 @@
#include "syscalls.h"
#include <unistd.h>
#include <sys/sendfile.h>
+
_syscall4(ssize_t, sendfile, int, out_fd, int, in_fd, __off_t *, offset,
size_t, count);
+
+#if ! defined __NR_sendfile64 && defined __UCLIBC_HAS_LFS__
+extern __typeof(sendfile) sendfile64;
+libc_hidden_proto(sendfile64)
+strong_alias(sendfile,sendfile64)
+libc_hidden_def(sendfile64)
+#endif
diff --git a/libc/sysdeps/linux/common/sendfile64.c b/libc/sysdeps/linux/common/sendfile64.c
index 3e704770f..ccaa8d202 100644
--- a/libc/sysdeps/linux/common/sendfile64.c
+++ b/libc/sysdeps/linux/common/sendfile64.c
@@ -17,30 +17,8 @@
#include <stdint.h>
#include <sys/sendfile.h>
#include <sys/syscall.h>
+#include <bits/wordsize.h>
-#if defined __NR_sendfile64
-
-# if __WORDSIZE == 64 || (defined(__powerpc__) && defined (__UCLIBC_HAS_LFS__))
-/* For a 64 bit machine, life is simple... */
+#if defined __UCLIBC_HAS_LFS__ && defined __NR_sendfile64
_syscall4(ssize_t,sendfile64, int, out_fd, int, in_fd, __off64_t *, offset, size_t, count);
-
-# elif __WORDSIZE == 32
-
-# if defined __UCLIBC_HAS_LFS__
-_syscall4(ssize_t,sendfile64, int, out_fd, int, in_fd, __off64_t *, offset, size_t, count);
-# endif /* __UCLIBC_HAS_LFS__ */
-
-# else /* __WORDSIZE */
-# error Your machine is not 64 bit or 32 bit, I am dazed and confused.
-# endif /* __WORDSIZE */
-
-
-#else /* ! defined __NR_sendfile64 */
-
-ssize_t sendfile64 (int out_fd, int in_fd, __off64_t *offset, size_t count)
-{
- __set_errno (ENOSYS);
- return -1;
-}
-
#endif