diff options
author | Markos Chandras <markos.chandras@imgtec.com> | 2012-10-11 11:08:28 +0100 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2013-02-20 13:45:12 +0100 |
commit | bad1b218da611bfe521a12130077e70a9c484b7b (patch) | |
tree | c959a831a42297d430d4eb472e6d8a6e313b51b5 /libc/sysdeps | |
parent | 11372c665a2db1ec81fb6128fe535c39bcca7b6c (diff) |
ftruncate: Use ftruncate64 if arch does not have the ftruncate syscall
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps')
-rw-r--r-- | libc/sysdeps/linux/common/ftruncate.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/common/ftruncate.c b/libc/sysdeps/linux/common/ftruncate.c index ea4dfc0f6..96076e449 100644 --- a/libc/sysdeps/linux/common/ftruncate.c +++ b/libc/sysdeps/linux/common/ftruncate.c @@ -10,5 +10,20 @@ #include <sys/syscall.h> #include <unistd.h> +#if defined __NR_ftruncate64 && !defined __NR_ftruncate +# include <endian.h> +# include <stdint.h> +int ftruncate(int fd, __off_t length) +{ +# if defined __UCLIBC_HAS_LFS__ + return ftruncate64(fd, length); +# elif __WORDSIZE == 32 + return INLINE_SYSCALL(ftruncate64, 3, fd, OFF_HI_LO(length)); +# endif +} +libc_hidden_def(ftruncate); + +#else _syscall2(int, ftruncate, int, fd, __off_t, length) libc_hidden_def(ftruncate) +#endif |