From 9d03566ee4df2bd2db3be0ca9d9340c6e613a894 Mon Sep 17 00:00:00 2001 From: Christoph Reiter Date: Sun, 30 Mar 2025 19:39:14 +0200 Subject: [PATCH] Revert "msys2-runtime: console: tty::restore really restores the previous mode" This reverts commit 04202bd7172105ca79a86731a86b34b4b48f69e9. --- ...ty-restore-really-restores-the-previ.patch | 180 ------------------ msys2-runtime/PKGBUILD | 13 +- msys2-runtime/msys2-runtime.commit | 2 +- 3 files changed, 6 insertions(+), 189 deletions(-) delete mode 100644 msys2-runtime/0041-Cygwin-console-tty-restore-really-restores-the-previ.patch diff --git a/msys2-runtime/0041-Cygwin-console-tty-restore-really-restores-the-previ.patch b/msys2-runtime/0041-Cygwin-console-tty-restore-really-restores-the-previ.patch deleted file mode 100644 index caf1b35e..00000000 --- a/msys2-runtime/0041-Cygwin-console-tty-restore-really-restores-the-previ.patch +++ /dev/null @@ -1,180 +0,0 @@ -From c1770e171505eb674626c2b7abf3403e6b4b7b79 Mon Sep 17 00:00:00 2001 -From: Takashi Yano -Date: Fri, 21 Mar 2025 13:58:23 +0900 -Subject: [PATCH 41/N] Cygwin: console: tty::restore really restores the - previous mode - -Previously, tty::restore sets the console mode to a predetermined -console mode that is widely common for many non-cygwin console apps. -So, if a non-cygwin app that is started from cygwin process changes -the console mode and executes cygwin sub-process, the console mode -is changed to the predetermined mode rather than being restored the -original mode that is set by the non-cygwin app. -With this patch, the console mode is stored when a cygwin process is -started from non-cygwin app, then tty::restore restores the previous -console mode that is used by the previous non-cygwin app when the -cygwin app exits. - -Addresses: https://github.com/msys2/msys2-runtime/issues/268 -Fixes: 3312f2d21f13 ("Cygwin: console: Redesign mode set strategy on close().") -Reported-by: Eu Pin Tien, Jeremy Drake -Signed-off-by: Takashi Yano -Signed-off-by: Eu-Pin Tien -Signed-off-by: Johannes Schindelin ---- - winsup/cygwin/fhandler/console.cc | 49 ++++++++++++------------- - winsup/cygwin/local_includes/fhandler.h | 4 +- - winsup/cygwin/release/3.6.1 | 5 +++ - 3 files changed, 32 insertions(+), 26 deletions(-) - create mode 100644 winsup/cygwin/release/3.6.1 - -diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc -index da335b3..f162698 100644 ---- a/winsup/cygwin/fhandler/console.cc -+++ b/winsup/cygwin/fhandler/console.cc -@@ -804,6 +804,9 @@ fhandler_console::rabuflen () - return con_ra.rabuflen; - } - -+static DWORD prev_input_mode_backup; -+static DWORD prev_output_mode_backup; -+ - /* The function set_{in,out}put_mode() should be static so that they - can be called even after the fhandler_console instance is deleted. */ - void -@@ -818,11 +821,11 @@ fhandler_console::set_input_mode (tty::cons_mode m, const termios *t, - GetConsoleMode (p->input_handle, &oflags); - DWORD flags = oflags - & (ENABLE_EXTENDED_FLAGS | ENABLE_INSERT_MODE | ENABLE_QUICK_EDIT_MODE); -- con.curr_input_mode = m; - switch (m) - { - case tty::restore: -- flags |= ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT; -+ flags = con.prev_input_mode; -+ con.prev_input_mode = prev_input_mode_backup; - break; - case tty::cygwin: - flags |= ENABLE_WINDOW_INPUT; -@@ -846,6 +849,12 @@ fhandler_console::set_input_mode (tty::cons_mode m, const termios *t, - flags |= ENABLE_PROCESSED_INPUT; - break; - } -+ if (con.curr_input_mode != tty::cygwin && m == tty::cygwin) -+ { -+ prev_input_mode_backup = con.prev_input_mode; -+ con.prev_input_mode = oflags; -+ } -+ con.curr_input_mode = m; - SetConsoleMode (p->input_handle, flags); - if (!(oflags & ENABLE_VIRTUAL_TERMINAL_INPUT) - && (flags & ENABLE_VIRTUAL_TERMINAL_INPUT) -@@ -868,10 +877,11 @@ fhandler_console::set_output_mode (tty::cons_mode m, const termios *t, - if (con.orig_virtual_terminal_processing_mode) - flags |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; - WaitForSingleObject (p->output_mutex, mutex_timeout); -- con.curr_output_mode = m; - switch (m) - { - case tty::restore: -+ flags = con.prev_output_mode; -+ con.prev_output_mode = prev_output_mode_backup; - break; - case tty::cygwin: - if (wincap.has_con_24bit_colors () && !con_is_legacy) -@@ -883,6 +893,12 @@ fhandler_console::set_output_mode (tty::cons_mode m, const termios *t, - flags |= DISABLE_NEWLINE_AUTO_RETURN; - break; - } -+ if (con.curr_output_mode != tty::cygwin && m == tty::cygwin) -+ { -+ prev_output_mode_backup = con.prev_output_mode; -+ GetConsoleMode (p->output_handle, &con.prev_output_mode); -+ } -+ con.curr_output_mode = m; - acquire_attach_mutex (mutex_timeout); - DWORD resume_pid = attach_console (con.owner); - SetConsoleMode (p->output_handle, flags); -@@ -916,7 +932,7 @@ fhandler_console::cleanup_for_non_cygwin_app (handle_set_t *p) - /* Cleaning-up console mode for non-cygwin app. */ - /* conmode can be tty::restore when non-cygwin app is - exec'ed from login shell. */ -- tty::cons_mode conmode = cons_mode_on_close (p); -+ tty::cons_mode conmode = cons_mode_on_close (); - set_output_mode (conmode, ti, p); - set_input_mode (conmode, ti, p); - set_disable_master_thread (con.owner == GetCurrentProcessId ()); -@@ -1978,9 +1994,8 @@ fhandler_console::close (int flag) - if (shared_console_info[unit] && myself->ppid == 1 - && (dev_t) myself->ctty == get_device ()) - { -- tty::cons_mode conmode = cons_mode_on_close (&handle_set); -- set_output_mode (conmode, &get_ttyp ()->ti, &handle_set); -- set_input_mode (conmode, &get_ttyp ()->ti, &handle_set); -+ set_output_mode (tty::restore, &get_ttyp ()->ti, &handle_set); -+ set_input_mode (tty::restore, &get_ttyp ()->ti, &handle_set); - set_disable_master_thread (true, this); - } - -@@ -4687,26 +4702,10 @@ fhandler_console::fstat (struct stat *st) - } - - tty::cons_mode --fhandler_console::cons_mode_on_close (handle_set_t *p) -+fhandler_console::cons_mode_on_close () - { -- const _minor_t unit = p->unit; -- - if (myself->ppid != 1) /* Execed from normal cygwin process. */ - return tty::cygwin; - -- if (!process_alive (con.owner)) /* The Master process already died. */ -- return tty::restore; -- if (con.owner == GetCurrentProcessId ()) /* Master process */ -- return tty::restore; -- -- PROCESS_BASIC_INFORMATION pbi; -- NTSTATUS status = -- NtQueryInformationProcess (GetCurrentProcess (), ProcessBasicInformation, -- &pbi, sizeof (pbi), NULL); -- if (NT_SUCCESS (status) -- && con.owner == (DWORD) pbi.InheritedFromUniqueProcessId) -- /* The parent is the stub process. */ -- return tty::restore; -- -- return tty::native; /* Otherwise */ -+ return tty::restore; /* otherwise, restore */ - } -diff --git a/winsup/cygwin/local_includes/fhandler.h b/winsup/cygwin/local_includes/fhandler.h -index b00a1a1..8c71d84 100644 ---- a/winsup/cygwin/local_includes/fhandler.h -+++ b/winsup/cygwin/local_includes/fhandler.h -@@ -2146,6 +2146,8 @@ class dev_console - bool disable_master_thread; - tty::cons_mode curr_input_mode; - tty::cons_mode curr_output_mode; -+ DWORD prev_input_mode; -+ DWORD prev_output_mode; - bool master_thread_suspended; - int num_processed; /* Number of input events in the current input buffer - already processed by cons_master_thread(). */ -@@ -2366,7 +2368,7 @@ private: - - void setup_pcon_hand_over (); - static void pcon_hand_over_proc (); -- static tty::cons_mode cons_mode_on_close (handle_set_t *); -+ static tty::cons_mode cons_mode_on_close (); - - friend tty_min * tty_list::get_cttyp (); - }; -diff --git a/winsup/cygwin/release/3.6.1 b/winsup/cygwin/release/3.6.1 -new file mode 100644 -index 0000000..0b54b5f ---- /dev/null -+++ b/winsup/cygwin/release/3.6.1 -@@ -0,0 +1,5 @@ -+Fixes: -+------ -+ -+- Console mode is really restored to the previous mode. -+ Addresses: https://github.com/msys2/msys2-runtime/issues/268 diff --git a/msys2-runtime/PKGBUILD b/msys2-runtime/PKGBUILD index d73e8006..ddf2c5ae 100644 --- a/msys2-runtime/PKGBUILD +++ b/msys2-runtime/PKGBUILD @@ -4,7 +4,7 @@ pkgbase=msys2-runtime pkgname=('msys2-runtime' 'msys2-runtime-devel') pkgver=3.6.0 -pkgrel=2 +pkgrel=1 pkgdesc="Cygwin POSIX emulation engine" arch=('x86_64') url="https://www.cygwin.com/" @@ -69,10 +69,9 @@ source=('msys2-runtime'::git://sourceware.org/git/newlib-cygwin.git#tag=cygwin-$ 0037-Avoid-sharing-cygheaps-across-Cygwin-versions.patch 0038-uname-report-msys2-runtime-commit-hash-too.patch 0039-fixup-Instead-of-creating-Cygwin-symlinks-use-deep-c.patch - 0040-Cygwin-Adjust-CWD-magic-to-accommodate-for-the-lates.patch - 0041-Cygwin-console-tty-restore-really-restores-the-previ.patch) + 0040-Cygwin-Adjust-CWD-magic-to-accommodate-for-the-lates.patch) sha256sums=('89d856fbf9f8d753a644651f95ccd769a43135d93b1bc322582f6fb87ebf4cea' - '564998f09ca51148aba183e52ac8e78169c98d3e1a92e163f56a00cd7c840a68' + 'fd9705555296df0bb56be1976b29f3f244829d17face92f9d1a9b04edd227dbd' '5945b95c6b3caf18cc8356802e9af1770746a76c27d0931b897d48d072603fcf' '8f2def0add5397487e2470fd7219bd80233e4d43e9f78d92d042907fede0570a' '0cebee2ed462579029512e46e4bd3c7bddd4d92823ef69803a938007c66d2843' @@ -112,8 +111,7 @@ sha256sums=('89d856fbf9f8d753a644651f95ccd769a43135d93b1bc322582f6fb87ebf4cea' '4850fd4c82bc090726f57d1a1c562cb5a5e654172444ee4eba6abe3021880abb' 'eafc8a892ad6cd89b2d0c2ae6e788ede27c42501b82650d569a95671b0046fa3' '384001ba02f597aad992624aed9d63cc7f1c70af842b09eac6ea628aa24947ad' - '278461f45bf55fa054a7f59feb87bf6a4ed251b03bf91edc12c088c85418f4e3' - 'ff3c524f8802b79d268ad94ba7d0c2684741dc047c1ef5781081b02218333252') + '278461f45bf55fa054a7f59feb87bf6a4ed251b03bf91edc12c088c85418f4e3') # Helper macros to help make tasks easier # apply_patch_with_msg() { @@ -190,8 +188,7 @@ prepare() { 0037-Avoid-sharing-cygheaps-across-Cygwin-versions.patch \ 0038-uname-report-msys2-runtime-commit-hash-too.patch \ 0039-fixup-Instead-of-creating-Cygwin-symlinks-use-deep-c.patch \ - 0040-Cygwin-Adjust-CWD-magic-to-accommodate-for-the-lates.patch \ - 0041-Cygwin-console-tty-restore-really-restores-the-previ.patch + 0040-Cygwin-Adjust-CWD-magic-to-accommodate-for-the-lates.patch } build() { diff --git a/msys2-runtime/msys2-runtime.commit b/msys2-runtime/msys2-runtime.commit index bdcafbb4..a81691d4 100644 --- a/msys2-runtime/msys2-runtime.commit +++ b/msys2-runtime/msys2-runtime.commit @@ -1 +1 @@ -c1770e171505eb674626c2b7abf3403e6b4b7b79 +7878787624144cd3b9cbd8a41b25d7d266b7173c