about summary refs log tree commit diff
path: root/libio/fseeko.c
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2018-07-06 16:53:48 +0200
committerFlorian Weimer <fweimer@redhat.com>2018-07-06 17:52:54 +0200
commit3f5e3f5d066dcffb80af48ae2cf35a01a85a8f10 (patch)
tree2eb99509fbdfb5f61ee40bdf634c63f092b85ae2 /libio/fseeko.c
parent397c54c1afa531242602fe3ac7bb47eff0e909f9 (diff)
downloadglibc-3f5e3f5d066dcffb80af48ae2cf35a01a85a8f10.tar.gz
glibc-3f5e3f5d066dcffb80af48ae2cf35a01a85a8f10.tar.xz
glibc-3f5e3f5d066dcffb80af48ae2cf35a01a85a8f10.zip
libio: Implement internal function __libc_readline_unlocked
This is a variant of fgets which fails with ERANGE if the
buffer is too small, and the buffer length is given as an
argument of type size_t.

This function will be useful for implementing NSS file reading
operations.  Compared to a direct implementation using the public API,
it avoids an lseek system call in case the line terminator can be
found in the internal read buffer.
Diffstat (limited to 'libio/fseeko.c')
-rw-r--r--libio/fseeko.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/libio/fseeko.c b/libio/fseeko.c
index 2df0453d35..4d086c15d8 100644
--- a/libio/fseeko.c
+++ b/libio/fseeko.c
@@ -24,11 +24,15 @@
    This exception applies to code released by its copyright holders
    in files containing the exception.  */
 
+/* We need to disable the redirect for __fseeko64 for the alias
+   definitions below to work.  */
+#define __fseeko64 __fseeko64_disable
+
 #include "libioP.h"
 #include "stdio.h"
 
 int
-fseeko (FILE *fp, off_t offset, int whence)
+__fseeko (FILE *fp, off_t offset, int whence)
 {
   int result;
   CHECK_FILE (fp, -1);
@@ -37,7 +41,11 @@ fseeko (FILE *fp, off_t offset, int whence)
   _IO_release_lock (fp);
   return result;
 }
+weak_alias (__fseeko, fseeko)
 
 #ifdef __OFF_T_MATCHES_OFF64_T
-weak_alias (fseeko, fseeko64)
+weak_alias (__fseeko, fseeko64)
+# undef __fseeko64
+strong_alias (__fseeko, __fseeko64)
+libc_hidden_ver (__fseeko, __fseeko64)
 #endif