Browse Source

use namespace-safe __lseek for __stdio_seek instead of direct syscall

this probably saves a few bytes, avoids duplicating the clunky
lseek/_llseek syscall convention in two places, and sets the stage for
fixing broken seeks on x32 and mipsn32.
master
Rich Felker 7 years ago
parent
commit
03919b26ed
  1. 1
      src/include/unistd.h
  2. 10
      src/stdio/__stdio_seek.c
  3. 5
      src/unistd/lseek.c

1
src/include/unistd.h

@ -9,5 +9,6 @@ hidden int __dup3(int, int, int);
hidden int __mkostemps(char *, int, int);
hidden int __execvpe(const char *, char *const *, char *const *);
hidden int __aio_close(int);
hidden off_t __lseek(int, off_t, int);
#endif

10
src/stdio/__stdio_seek.c

@ -1,13 +1,7 @@
#include "stdio_impl.h"
#include <unistd.h>
off_t __stdio_seek(FILE *f, off_t off, int whence)
{
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;
return __lseek(f->fd, off, whence);
}

5
src/unistd/lseek.c

@ -1,7 +1,7 @@
#include <unistd.h>
#include "syscall.h"
off_t lseek(int fd, off_t offset, int whence)
off_t __lseek(int fd, off_t offset, int whence)
{
#ifdef SYS__llseek
off_t result;
@ -11,4 +11,5 @@ off_t lseek(int fd, off_t offset, int whence)
#endif
}
weak_alias(lseek, lseek64);
weak_alias(__lseek, lseek);
weak_alias(__lseek, lseek64);

Loading…
Cancel
Save