@node fflush
@section @code{fflush}
@findex fflush

POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9699919799/functions/fflush.html}

Gnulib module: fflush

Portability problems fixed by Gnulib:
@itemize
@item
@code{fflush} followed by @code{fseek} or @code{fseeko}, applied to an input
stream, should have the effect of positioning the underlying file descriptor.
It doesn't do this on some platforms:
glibc 2.34, FreeBSD 13.0, and others.
@item
@code{fflush} on an input stream changes the position of the stream to the
end of the previous buffer, on some platforms: mingw, MSVC 14.
@item
@code{fflush} on an input stream right after @code{ungetc} does not discard
the @code{ungetc} buffer, on some platforms:
macOS 11.1, FreeBSD 6.0, NetBSD 9.0, OpenBSD 6.7, Cygwin 1.5.25-10.
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@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.
@item
On Windows platforms (excluding Cygwin), this function does not set @code{errno}
upon failure.
@item
This function crashes if the stream's file descriptor has already been
closed, if @code{MSVC_INVALID_PARAMETER_HANDLING} is
@code{HAIRY_LIBRARY_HANDLING} or @code{SANE_LIBRARY_HANDLING},
on some platforms:
MSVC 14.
@item
@code{fflush} on an input stream right after @code{ungetc} does not discard
the @code{ungetc} buffer, on some platforms:
AIX 5.1, HP-UX 11, IRIX 6.5, Solaris 11 2010-11, mingw, MSVC 14.
@end itemize
