diff options
author | Eli Zaretskii <eliz@gnu.org> | 2017-04-08 14:37:13 +0300 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2017-04-08 14:37:13 +0300 |
commit | bd6dc293e35fdeac05bd1577593e111fd09d22b7 (patch) | |
tree | 1a93402b4c86e03d69c431b5af315c3fcc6aaa5a /io.c | |
parent | 947dfae8571472b6e78aecad8da024f1f65e5bf5 (diff) | |
download | egawk-bd6dc293e35fdeac05bd1577593e111fd09d22b7.tar.gz egawk-bd6dc293e35fdeac05bd1577593e111fd09d22b7.tar.bz2 egawk-bd6dc293e35fdeac05bd1577593e111fd09d22b7.zip |
Fix EPIPE handling in the MinGW build.
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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++; |