diff options
author | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2012-09-26 20:53:46 +0200 |
---|---|---|
committer | Roberto E. Vargas Caballero <k0ga@shike2.com> | 2012-09-26 20:53:46 +0200 |
commit | a7d7e29300acade90f2025f0b85fa5eae06edb24 (patch) | |
tree | c56b0e83628bd0d98eab9c7dfc3d998cb7e095f3 | |
parent | 375b6e5b175ce0a01d47288e94e9c4a8acc3939a (diff) | |
download | st-a7d7e29300acade90f2025f0b85fa5eae06edb24.tar.gz |
Ignore all control characters not handled
Taken from vt100 programmer manual:
Control characters have values of \000 - \037, and \177. The control
characters recognized by the VT100 are shown in Table 3-10. All
other control codes cause no action to be taken.
We have to take attention when we are using alternate charset, because in
this cases they are not used as control characters.
---
st.c | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)
-rw-r--r-- | st.c | 20 |
1 files changed, 10 insertions, 10 deletions
@@ -1663,7 +1663,7 @@ tputtab(bool forward) { void tputc(char *c, int len) { - char ascii = *c; + uchar ascii = *c; if(iofd != -1) write(iofd, c, len); @@ -1792,8 +1792,6 @@ tputc(char *c, int len) { if(sel.bx != -1 && BETWEEN(term.c.y, sel.by, sel.ey)) sel.bx = -1; switch(ascii) { - case '\0': /* padding character, do nothing */ - break; case '\t': tputtab(1); break; @@ -1818,13 +1816,15 @@ tputc(char *c, int len) { term.esc = ESC_START; break; default: - if(IS_SET(MODE_WRAP) && term.c.state & CURSOR_WRAPNEXT) - tnewline(1); /* always go to first col */ - tsetchar(c); - if(term.c.x+1 < term.col) - tmoveto(term.c.x+1, term.c.y); - else - term.c.state |= CURSOR_WRAPNEXT; + if(ascii >= '\020' || term.c.attr.mode & ATTR_GFX) { + if(IS_SET(MODE_WRAP) && term.c.state & CURSOR_WRAPNEXT) + tnewline(1); /* always go to first col */ + tsetchar(c); + if(term.c.x+1 < term.col) + tmoveto(term.c.x+1, term.c.y); + else + term.c.state |= CURSOR_WRAPNEXT; + } } } } |