Hash :
a646e362
Author :
Date :
2021-03-21T03:46:05
ftello: Work around bug in macOS >= 10.15. Reported by Martin Storsjö <martin@martin.st> in <https://lists.gnu.org/archive/html/bug-gnulib/2020-12/msg00002.html>. * m4/ungetc.m4 (gl_FUNC_UNGETC_WORKS): On macOS, don't define FUNC_UNGETC_BROKEN. Instead, set gl_ftello_broken_after_ungetc to yes. * m4/ftello.m4 (gl_FUNC_FTELLO): Invoke gl_FUNC_UNGETC_WORKS, and arrange to provide the workaround if ftello is broken after ungetc. * lib/ftello.c: Include <errno.h>, intprops.h. (ftello) [FTELLO_BROKEN_AFTER_UNGETC]: Implement from scratch. * modules/ftello (Files): Add m4/ungetc.m4. (Depends-on): Add intprops. * doc/posix-functions/ftello.texi: Mention the macOS bug.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
@node ftello
@section @code{ftello}
@findex ftello
POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/ftello.html}
Gnulib module: ftello
Portability problems fixed by Gnulib:
@itemize
@item
This function is missing on some platforms:
mingw, MSVC 14.
@item
The declaration of @code{ftello} in @code{<stdio.h>} is not enabled by default
on some platforms:
glibc 2.3.6.
@item
This function produces incorrect results after @code{putc} that followed a
@code{getc} call that reached EOF on some platforms:
Solaris 11 2010-11.
@item
This function, when invoked after @code{ungetc}, throws away the @code{ungetc}
buffer, changes the stream's file position, and returns the wrong position on
some platforms:
macOS 10.15 and newer.
@item
This function fails on seekable stdin, stdout, and stderr: cygwin <= 1.5.24.
@item
On platforms where @code{off_t} is a 32-bit type, @code{ftello} does not work
correctly with files larger than 2 GB@. (Cf. @code{AC_SYS_LARGEFILE}.)
@end itemize
Portability problems not fixed by Gnulib:
@itemize
@item
This function produces incorrect results immediately after @code{fseek} on some
platforms:
HP-UX 11.
@item
@code{fflush}, @code{ftell}, @code{ftello}, @code{fgetpos} behave incorrectly
on input streams that are opened in @code{O_TEXT} mode and whose contents
contains Unix line terminators (LF), on some platforms: mingw, MSVC 14.
@end itemize