[newlib-cygwin] Cygwin: console: Fix tcsetattr which was broken sinse cygwin 3.5.5

Takashi Yano via Cygwin-cvs <[email protected]>
Newsgroups gmane.os.cygwin.cvs
Message-ID <[email protected]>
https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=4b5dcf27c7f0eb15e8092f9e7fdc901c370cdea8

commit 4b5dcf27c7f0eb15e8092f9e7fdc901c370cdea8
Author: Takashi Yano <[email protected]>
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 <[email protected]>

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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.