after ferror discovers an output error. We don't know the proper
errno value, since it might have been caused by any of a whole
bunch of calls, and it might have been trashed in the meantime.
Fixing this problem will require much more extensive changes;
in the meantime just say "write error".
{
if (output_stream)
{
- if (ferror (output_stream) || fclose (output_stream) == EOF)
+ if (ferror (output_stream))
{
- error (0, errno, _("write error for `%s'"), output_filename);
+ error (0, 0, _("write error for `%s'"), output_filename);
+ output_stream = NULL;
+ cleanup_fatal ();
+ }
+ if (fclose (output_stream) != 0)
+ {
+ error (0, errno, "%s", output_filename);
output_stream = NULL;
cleanup_fatal ();
}