[hackers] [st] Ignore all control characters not handled || "Roberto E. Vargas Caballero"

From: <hg_AT_suckless.org>
Date: Wed, 26 Sep 2012 20:58:50 +0200 (CEST)

changeset: 337:585c4d175633
user: "Roberto E. Vargas Caballero" <k0ga_AT_shike2.com>
date: Wed Sep 26 20:53:46 2012 +0200
files: st.c
description:
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(-)
diff -r 95a8b38e7ac6 -r 585c4d175633 st.c
--- a/st.c	Wed Sep 26 20:21:59 2012 +0200
+++ b/st.c	Wed Sep 26 20:53:46 2012 +0200
_AT_@ -1663,7 +1663,7 @@
 
 void
 tputc(char *c, int len) {
-	char ascii = *c;
+	uchar ascii = *c;
 
 	if(iofd != -1)
 		write(iofd, c, len);
_AT_@ -1792,8 +1792,6 @@
 		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;
_AT_@ -1818,13 +1816,15 @@
 			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;
+			}
 		}
 	}
 }
Received on Wed Sep 26 2012 - 20:58:50 CEST

This archive was generated by hypermail 2.3.0 : Wed Sep 26 2012 - 21:00:18 CEST