JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
Fix displaying control code
authorRoberto E. Vargas Caballero <k0ga@shike2.com>
Tue, 29 Apr 2014 07:58:55 +0000 (09:58 +0200)
committerRoberto E. Vargas Caballero <k0ga@shike2.com>
Wed, 30 Apr 2014 06:35:53 +0000 (08:35 +0200)
Control code are never displayed. It is not important if graphic
charset is displayed or not.

st.c

diff --git a/st.c b/st.c
index 3ed77e1..7474256 100644 (file)
--- a/st.c
+++ b/st.c
@@ -392,7 +392,7 @@ static void tsetdirtattr(int);
 static void tsetmode(bool, bool, int *, int);
 static void tfulldirt(void);
 static void techo(char *, int);
-static bool tcontrolcode(uchar );
+static void tcontrolcode(uchar );
 static void tdectest(char );
 static int32_t tdefcolor(int *, int *, int);
 static void tdeftran(char);
@@ -2328,7 +2328,7 @@ tdeftran(char ascii) {
                term.trantbl[term.icharset] = (*bp)[1];
 }
 
-bool
+void
 tcontrolcode(uchar ascii) {
        static char question[UTF_SIZ] = "?";
 
@@ -2363,7 +2363,7 @@ tcontrolcode(uchar ascii) {
                csireset();
                term.esc &= ~(ESC_CSI|ESC_ALTCHARSET|ESC_TEST);
                term.esc |= ESC_START;
-               return 1;
+               return;
        case '\016': /* SO */
                term.charset = 0;
                break;
@@ -2395,11 +2395,9 @@ tcontrolcode(uchar ascii) {
        case 0x9e:   /* TODO: PM */
        case 0x9f:   /* TODO: APC */
                break;
-       default:
-               return 0;
        }
        term.esc &= ~(ESC_STR_END|ESC_STR);
-       return 1;
+       return;
 }
 
 void
@@ -2478,8 +2476,11 @@ tputc(char *c, int len) {
         * they must not cause conflicts with sequences.
         */
        if(control) {
-               if (tcontrolcode(ascii))
-                       return;
+               tcontrolcode(ascii);
+               /*
+                * control codes are not shown ever
+                */
+               return;
        } else if(term.esc & ESC_START) {
                if(term.esc & ESC_CSI) {
                        csiescseq.buf[csiescseq.len++] = ascii;
@@ -2576,11 +2577,6 @@ tputc(char *c, int len) {
                 */
                return;
        }
-       /*
-        * Display control codes only if we are in graphic mode
-        */
-       if(control && term.trantbl[term.charset] != CS_GRAPHIC0)
-               return;
        if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y))
                selclear(NULL);