aboutsummaryrefslogtreecommitdiffstats
path: root/pc
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2021-12-01 22:46:18 +0200
committerArnold D. Robbins <arnold@skeeve.com>2021-12-01 22:46:18 +0200
commit0521e672efdbfdaedabfacca03c7a535b4f8526c (patch)
tree96c5db398195d2b81d66a891fae0848b97bfe87d /pc
parenta22095c81a677b82accccb53cab91052cdc0cbfe (diff)
parentf77e1318c515d495ac9c08bdfdf2dadf79a9649f (diff)
downloadegawk-0521e672efdbfdaedabfacca03c7a535b4f8526c.tar.gz
egawk-0521e672efdbfdaedabfacca03c7a535b4f8526c.tar.bz2
egawk-0521e672efdbfdaedabfacca03c7a535b4f8526c.zip
Merge branch 'gawk-5.1-stable'
Diffstat (limited to 'pc')
-rw-r--r--pc/ChangeLog5
-rw-r--r--pc/gawkmisc.pc38
2 files changed, 25 insertions, 18 deletions
diff --git a/pc/ChangeLog b/pc/ChangeLog
index c0027c38..d1acbf50 100644
--- a/pc/ChangeLog
+++ b/pc/ChangeLog
@@ -1,3 +1,8 @@
+2021-12-01 Arnold D. Robbins <arnold@skeeve.com>
+
+ * gawkmisc.pc (os_maybe_set_errno): Renamed from
+ w32_maybe_set_errno. Add check for errno values.
+
2021-11-21 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.tst: Regenerated.
diff --git a/pc/gawkmisc.pc b/pc/gawkmisc.pc
index 1843a168..149ea62c 100644
--- a/pc/gawkmisc.pc
+++ b/pc/gawkmisc.pc
@@ -1066,25 +1066,27 @@ w32_status_to_termsig (unsigned status)
}
void
-w32_maybe_set_errno (void)
+os_maybe_set_errno (void)
{
- DWORD w32err = GetLastError ();
-
- switch (w32err)
- {
- /* When stdout is redirected to a pipe, and the program that
- reads the pipe (e.g., a pager) exits, Windows doesn't set
- errno to a useful value. Help it DTRT. */
- case ERROR_BAD_PIPE:
- case ERROR_PIPE_BUSY:
- case ERROR_NO_DATA:
- case ERROR_PIPE_NOT_CONNECTED:
- errno = EPIPE;
- break;
- default:
- errno = EINVAL;
- break;
- }
+ if (errno == 0 || errno == EINVAL) {
+ DWORD w32err = GetLastError ();
+
+ switch (w32err)
+ {
+ /* When stdout is redirected to a pipe, and the program that
+ reads the pipe (e.g., a pager) exits, Windows doesn't set
+ errno to a useful value. Help it DTRT. */
+ case ERROR_BAD_PIPE:
+ case ERROR_PIPE_BUSY:
+ case ERROR_NO_DATA:
+ case ERROR_PIPE_NOT_CONNECTED:
+ errno = EPIPE;
+ break;
+ default:
+ errno = EINVAL;
+ break;
+ }
+ }
}
#endif /* __MINGW32__ */