diff options
author | Florian Weimer <fweimer@redhat.com> | 2018-07-06 16:53:48 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2018-07-06 17:52:54 +0200 |
commit | 3f5e3f5d066dcffb80af48ae2cf35a01a85a8f10 (patch) | |
tree | 2eb99509fbdfb5f61ee40bdf634c63f092b85ae2 /libio/fseeko.c | |
parent | 397c54c1afa531242602fe3ac7bb47eff0e909f9 (diff) | |
download | glibc-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.c | 12 |
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 |