summaryrefslogtreecommitdiff
path: root/src/stdio/__stdio_seek.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/stdio/__stdio_seek.c')
-rw-r--r--src/stdio/__stdio_seek.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/stdio/__stdio_seek.c b/src/stdio/__stdio_seek.c
index fdb9fe7f..c7a5b730 100644
--- a/src/stdio/__stdio_seek.c
+++ b/src/stdio/__stdio_seek.c
@@ -7,7 +7,13 @@ static off_t retneg1(FILE *f, off_t off, int whence)
off_t __stdio_seek(FILE *f, off_t off, int whence)
{
- off_t ret = __syscall_lseek(f->fd, off, whence);
+ off_t ret;
+#ifdef __NR__llseek
+ if (syscall5(__NR__llseek, f->fd, off>>32, off, (long)&ret, whence)<0)
+ ret = -1;
+#else
+ ret = syscall3(__NR_lseek, f->fd, off, whence);
+#endif
/* Detect unseekable files and optimize future failures out */
if (ret < 0 && off == 0 && whence == SEEK_CUR)
f->seek = retneg1;