From d5229f821160c9e9875c4b662f5be097b7cf6d18 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Sun, 31 Jul 2022 17:42:00 +0900 Subject: [PATCH] Cygwin: pty: Treat *.bat and *.cmd as a non-cygwin console app. - If *.bat or *.cmd is executed directly from cygwin shell, pty failed to switch I/O pipe to that for native apps. This patch fixes the issue. --- winsup/cygwin/release/3.3.6 | 5 +++++ winsup/cygwin/spawn.cc | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/release/3.3.6 b/winsup/cygwin/release/3.3.6 index 44a7bcf9d..5fb59bf7d 100644 --- a/winsup/cygwin/release/3.3.6 +++ b/winsup/cygwin/release/3.3.6 @@ -26,3 +26,8 @@ Bug Fixes - Fix a console problem that the text longer than 1024 bytes cannot be pasted correctly. Addresses: https://cygwin.com/pipermail/cygwin/2022-June/251764.html + +- Fix a pty problem that pty failed to switch I/O pipe to that for + native apps if *.bat or *.cmd is executed directly from cygwin + shell. + Addresses: https://cygwin.com/pipermail/cygwin/2022-July/251993.html diff --git a/winsup/cygwin/spawn.cc b/winsup/cygwin/spawn.cc index 2f745e14a..7de96827c 100644 --- a/winsup/cygwin/spawn.cc +++ b/winsup/cygwin/spawn.cc @@ -227,7 +227,12 @@ is_console_app (WCHAR *filename) if (p && p + id_offset <= buf + n) return p[id_offset] == '\003'; /* 02: GUI, 03: console */ else - return false; + { + wchar_t *e = wcsrchr (filename, L'.'); + if (e && (wcscasecmp (e, L".bat") == 0 || wcscasecmp (e, L".cmd") == 0)) + return true; + } + return false; } int