summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/lseek.c
diff options
context:
space:
mode:
authorPeter S. Mazinger <ps.m@gmx.net>2011-04-15 23:06:40 +0200
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2012-06-15 14:00:37 +0200
commit29a778aa191e819b9a8f0a0e4c591588fe50e446 (patch)
tree480e82d1c87e8c2a25de215253e248ace8a3ef36 /libc/sysdeps/linux/common/lseek.c
parent5415f7aa53462a84b43a6f4024724179c7182dd5 (diff)
avoid circular dependency in lseek and llseek, providing a stub lseek
Signed-off-by: Peter S. Mazinger <ps.m@gmx.net> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux/common/lseek.c')
-rw-r--r--libc/sysdeps/linux/common/lseek.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/libc/sysdeps/linux/common/lseek.c b/libc/sysdeps/linux/common/lseek.c
index 9ff424048..1ed956e84 100644
--- a/libc/sysdeps/linux/common/lseek.c
+++ b/libc/sysdeps/linux/common/lseek.c
@@ -12,12 +12,33 @@
#ifdef __NR_lseek
_syscall3(__off_t, lseek, int, fildes, __off_t, offset, int, whence)
-#else
-
+#elif defined __UCLIBC_HAS_LFS__ && defined __NR__llseek /* avoid circular dependency */
__off_t lseek(int fildes, __off_t offset, int whence)
{
return lseek64(fildes, offset, whence);
}
+#else
+# include <errno.h>
+__off_t lseek(int fildes, __off_t offset attribute_unused, int whence)
+{
+ if (fildes < 0) {
+ __set_errno(EBADF);
+ return -1;
+ }
+
+ switch(whence) {
+ case SEEK_SET:
+ case SEEK_CUR:
+ case SEEK_END:
+ break;
+ default:
+ __set_errno(EINVAL);
+ return -1;
+ }
+
+ __set_errno(ENOSYS);
+ return -1;
+}
#endif
#ifndef __LINUXTHREADS_OLD__
libc_hidden_def(lseek)