You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.7 KiB
48 lines
1.7 KiB
6 years ago
|
commit 701138a380fac06023e5915448af92ba13614cb9
|
||
|
Author: aszlig <aszlig@redmoonstudios.org>
|
||
|
Date: Thu Feb 11 03:14:07 2016 +0100
|
||
|
|
||
|
vterm: Fix handling of NUL characters
|
||
|
|
||
|
According to the VT100 programmers manual, the NUL character has to be
|
||
|
ignored (at least on our side, because we are not a printer):
|
||
|
|
||
|
http://vt100.net/docs/tp83/appendixb.html
|
||
|
|
||
|
According to the bug reporter the VMS console driver inserts NUL
|
||
|
characters after line feeds and our implementation prints those as "?".
|
||
|
|
||
|
Tested against Python 2.7, 3.2, 3.3, 3.4 and 3.5.
|
||
|
|
||
|
Signed-off-by: aszlig <aszlig@redmoonstudios.org>
|
||
|
Reported-by: Robert Urban <urban@unix-beratung.de>
|
||
|
|
||
|
diff --git a/urwid/tests/test_vterm.py b/urwid/tests/test_vterm.py
|
||
|
index 59fe166..4dadfcc 100644
|
||
|
--- a/urwid/tests/test_vterm.py
|
||
|
+++ b/urwid/tests/test_vterm.py
|
||
|
@@ -143,6 +143,10 @@ class TermTest(unittest.TestCase):
|
||
|
self.write('1\n2\n3\n4\e[2;1f\e[2M')
|
||
|
self.expect('1\n4')
|
||
|
|
||
|
+ def test_nul(self):
|
||
|
+ self.write('a\0b')
|
||
|
+ self.expect('ab')
|
||
|
+
|
||
|
def test_movement(self):
|
||
|
self.write('\e[10;20H11\e[10;0f\e[20C\e[K')
|
||
|
self.expect('\n' * 9 + ' ' * 19 + '1')
|
||
|
diff --git a/urwid/vterm.py b/urwid/vterm.py
|
||
|
index cc4eb7f..0f091ea 100644
|
||
|
--- a/urwid/vterm.py
|
||
|
+++ b/urwid/vterm.py
|
||
|
@@ -671,7 +671,7 @@ class TermCanvas(Canvas):
|
||
|
self.widget.beep()
|
||
|
elif not dc and char in B("\x18\x1a"): # CAN/SUB
|
||
|
self.leave_escape()
|
||
|
- elif not dc and char == B("\x7f"): # DEL
|
||
|
+ elif not dc and char in B("\x00\x7f"): # NUL/DEL
|
||
|
pass # this is ignored
|
||
|
elif self.within_escape:
|
||
|
self.parse_escape(char)
|