mirror of
https://github.com/python/cpython.git
synced 2026-01-03 14:02:21 +00:00
[3.12] gh-110392: Fix tty functions (GH-110642) (GH-110853)
* 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.
(cherry picked from commit 84e2096fbd)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
0102faf0ca
commit
0164832db5
3 changed files with 12 additions and 2 deletions
|
|
@ -58,7 +58,9 @@ def test_cfmakecbreak(self):
|
|||
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 @@ def test_setraw(self):
|
|||
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
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
Fix :func:`tty.setraw` and :func:`tty.setcbreak`: previously they returned
|
||||
partially modified list of the original tty attributes.
|
||||
:func:`tty.cfmakeraw` and :func:`tty.cfmakecbreak` now make a copy of the
|
||||
list of special characters before modifying it.
|
||||
Loading…
Add table
Add a link
Reference in a new issue