diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2023-10-14 05:50:41 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-14 05:50:41 (GMT) |
commit | 84e2096fbdea880799f2fdb3f0992a8961106bed (patch) | |
tree | f1fb8bef511c750493f781a7a19d009ef4e5991c /Lib | |
parent | 7284e0ef84e53f80b2e60c3f51e3467d67a275f3 (diff) | |
download | cpython-84e2096fbdea880799f2fdb3f0992a8961106bed.zip cpython-84e2096fbdea880799f2fdb3f0992a8961106bed.tar.gz cpython-84e2096fbdea880799f2fdb3f0992a8961106bed.tar.bz2 |
gh-110392: Fix tty functions (GH-110642)
* tty.setraw() and tty.setcbreak() previously returned partially modified
list of the original tty attributes. Now they return the correct list of
the original tty attributes
* tty.cfmakeraw() and tty.cfmakecbreak() now make a copy of the list of
special characters before modifying it.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_tty.py | 8 | ||||
-rw-r--r-- | Lib/tty.py | 2 |
2 files changed, 8 insertions, 2 deletions
diff --git a/Lib/test/test_tty.py b/Lib/test/test_tty.py index 6993047..af20864 100644 --- a/Lib/test/test_tty.py +++ b/Lib/test/test_tty.py @@ -58,7 +58,9 @@ class TestTty(unittest.TestCase): self.assertEqual(mode[5], self.mode[5]) def test_setraw(self): - mode = tty.setraw(self.fd) + mode0 = termios.tcgetattr(self.fd) + mode1 = tty.setraw(self.fd) + self.assertEqual(mode1, mode0) mode2 = termios.tcgetattr(self.fd) self.check_raw(mode2) mode3 = tty.setraw(self.fd, termios.TCSANOW) @@ -67,7 +69,9 @@ class TestTty(unittest.TestCase): tty.setraw(fd=self.fd, when=termios.TCSANOW) def test_setcbreak(self): - mode = tty.setcbreak(self.fd) + mode0 = termios.tcgetattr(self.fd) + mode1 = tty.setcbreak(self.fd) + self.assertEqual(mode1, mode0) mode2 = termios.tcgetattr(self.fd) self.check_cbreak(mode2) mode3 = tty.setcbreak(self.fd, termios.TCSANOW) @@ -39,6 +39,7 @@ def cfmakeraw(mode): # Case B: MIN>0, TIME=0 # A pending read shall block until MIN (here 1) bytes are received, # or a signal is received. + mode[CC] = list(mode[CC]) mode[CC][VMIN] = 1 mode[CC][VTIME] = 0 @@ -54,6 +55,7 @@ def cfmakecbreak(mode): # Case B: MIN>0, TIME=0 # A pending read shall block until MIN (here 1) bytes are received, # or a signal is received. + mode[CC] = list(mode[CC]) mode[CC][VMIN] = 1 mode[CC][VTIME] = 0 |