library: for atexit() support, fix fileutils for EPIPE
When fileutils with stream error checking was borrowed
from GNU lib, an omission was also propagated where an
errno of EPIPE wouldn't be preserved in close_stream()
making a test for EPIPE in close_stdout() meaningless.
This patch corrects such oversight so that an errno of
EPIPE no longer produces 'write error' at program end.
( gnulib provides for optionally ignoring EPIPE, but )
( if a program chooses to ignore it, then their code )
( appears to suffer from this close_stream oversight )
Reference(s):
. original fileutilis addition
commit c7cf98b0e0
. bugzilla report
https://bugzilla.redhat.com/show_bug.cgi?id=976199
This commit is contained in:
parent
b79b927f97
commit
ce5e995921
@ -24,7 +24,7 @@ int close_stream(FILE * stream)
|
|||||||
const int prev_fail = (ferror(stream) != 0);
|
const int prev_fail = (ferror(stream) != 0);
|
||||||
const int fclose_fail = (fclose(stream) != 0);
|
const int fclose_fail = (fclose(stream) != 0);
|
||||||
if (prev_fail || (fclose_fail && (some_pending || errno != EBADF))) {
|
if (prev_fail || (fclose_fail && (some_pending || errno != EBADF))) {
|
||||||
if (!fclose_fail)
|
if (!fclose_fail && errno != EPIPE)
|
||||||
errno = 0;
|
errno = 0;
|
||||||
return EOF;
|
return EOF;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user