correct locking in stdio functions that tried to be lock-free
[musl] / src / stdio / __stdio_seek.c
index fdb9fe7..13e06a6 100644 (file)
@@ -1,15 +1,13 @@
 #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 = __syscall_lseek(f->fd, off, whence);
-       /* Detect unseekable files and optimize future failures out */
-       if (ret < 0 && off == 0 && whence == SEEK_CUR)
-               f->seek = retneg1;
+       off_t ret;
+#ifdef SYS__llseek
+       if (syscall(SYS__llseek, f->fd, off>>32, off, &ret, whence)<0)
+               ret = -1;
+#else
+       ret = syscall(SYS_lseek, f->fd, off, whence);
+#endif
        return ret;
 }