diff options
Diffstat (limited to '05/musl-0.6.0/src/stdio/__stdio_seek.c')
-rw-r--r-- | 05/musl-0.6.0/src/stdio/__stdio_seek.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/05/musl-0.6.0/src/stdio/__stdio_seek.c b/05/musl-0.6.0/src/stdio/__stdio_seek.c new file mode 100644 index 0000000..c7a5b73 --- /dev/null +++ b/05/musl-0.6.0/src/stdio/__stdio_seek.c @@ -0,0 +1,21 @@ +#include "stdio_impl.h" + +static off_t retneg1(FILE *f, off_t off, int whence) +{ + return -1; +} + +off_t __stdio_seek(FILE *f, off_t off, int 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; + return ret; +} |