* src/system.h (write_error): Also call fpurge(), which was seen to
be needed on FreeBSD 13.1 to avoid duplicated write errors.
* src/head.c (xwrite_stdout): Likewise.
* bootstrap.conf: Depend on fpurge.
Reported by Bruno Haible.
fnmatch-gnu
fopen-safer
fprintftime
+ fpurge
free-posix
freopen
freopen-safer
if (n_bytes > 0 && fwrite (buffer, 1, n_bytes, stdout) < n_bytes)
{
clearerr (stdout); /* To avoid redundant close_stdout diagnostic. */
+ fpurge (stdout);
error (EXIT_FAILURE, errno, _("error writing %s"),
quoteaf ("standard output"));
}
write_error (void)
{
int saved_errno = errno;
- fflush (stdout); /* Ensure nothing buffered that might induce an error. */
- clearerr (stdout); /* To avoid extraneous diagnostic from close_stdout. */
+ fflush (stdout); /* Last attempt to write any buffered data. */
+ fpurge (stdout); /* Ensure nothing buffered that might induce an error. */
+ clearerr (stdout); /* Avoid extraneous diagnostic from close_stdout. */
error (EXIT_FAILURE, saved_errno, _("write error"));
}