https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=4b5dcf27c7f0eb15e8092f9e7fdc901c370cdea8
commit 4b5dcf27c7f0eb15e8092f9e7fdc901c370cdea8 Author: Takashi Yano <takashi.y...@nifty.ne.jp> Date: Tue Apr 8 12:38:31 2025 +0900 Cygwin: console: Fix tcsetattr which was broken sinse cygwin 3.5.5 After the commit 84d77e5918e1 ("Cygwin: console: Disable cons_master_thread in win32-input-mode") tcsetattr() no longer takes effect for the console. This occurs because set_input_mode() and set_output_mode() are now called in bg_check() only when the current mode is not tty::cygwin. Before this commit, these functions were always invoked in bg_check(), regardless of whether the current mode was already tty::cygwin. As a result, the console mode was updated every time read() or write() was called. With this patch, set_input_mode() and set_output_mode() are called in tcsetattr() to make it take effect. Fixes: 84d77e5918e1 ("Cygwin: console: Disable cons_master_thread in win32-input-mode") Signed-off-by: Takashi Yano <takashi.y...@nifty.ne.jp> Diff: --- winsup/cygwin/fhandler/console.cc | 2 ++ winsup/cygwin/release/3.6.1 | 2 ++ 2 files changed, 4 insertions(+) diff --git a/winsup/cygwin/fhandler/console.cc b/winsup/cygwin/fhandler/console.cc index f162698a8..a38487f9b 100644 --- a/winsup/cygwin/fhandler/console.cc +++ b/winsup/cygwin/fhandler/console.cc @@ -2215,6 +2215,8 @@ int fhandler_console::tcsetattr (int a, struct termios const *t) { get_ttyp ()->ti = *t; + set_input_mode (tty::cygwin, t, &handle_set); + set_output_mode (tty::cygwin, t, &handle_set); return 0; } diff --git a/winsup/cygwin/release/3.6.1 b/winsup/cygwin/release/3.6.1 index 280952c91..e1bdd1727 100644 --- a/winsup/cygwin/release/3.6.1 +++ b/winsup/cygwin/release/3.6.1 @@ -39,3 +39,5 @@ Fixes: - Don't increment DLL reference count in dladdr. Addresses: https://cygwin.com/pipermail/cygwin/2025-April/257862.html + +- Fix tcsetattr() for console which has been broken sinse cygwin 3.5.5.