From bd6dc293e35fdeac05bd1577593e111fd09d22b7 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 8 Apr 2017 14:37:13 +0300 Subject: Fix EPIPE handling in the MinGW build. --- io.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'io.c') diff --git a/io.c b/io.c index b00f4db4..f854ec5a 100644 --- a/io.c +++ b/io.c @@ -1399,6 +1399,10 @@ non_fatal_flush_std_file(FILE *fp) bool is_fatal = ! is_non_fatal_std(fp); if (is_fatal) { +#ifdef __MINGW32__ + if (errno == 0 || errno == EINVAL) + w32_maybe_set_errno(); +#endif if (errno == EPIPE) die_via_sigpipe(); else @@ -1494,12 +1498,20 @@ close_io(bool *stdio_problem) *stdio_problem = false; /* we don't warn about stdout/stderr if EPIPE, but we do error exit */ if (fflush(stdout) != 0) { +#ifdef __MINGW32__ + if (errno == 0 || errno == EINVAL) + w32_maybe_set_errno(); +#endif if (errno != EPIPE) warning(_("error writing standard output (%s)"), strerror(errno)); status++; *stdio_problem = true; } if (fflush(stderr) != 0) { +#ifdef __MINGW32__ + if (errno == 0 || errno == EINVAL) + w32_maybe_set_errno(); +#endif if (errno != EPIPE) warning(_("error writing standard error (%s)"), strerror(errno)); status++; -- cgit v1.2.3