Fix displaying control code - st - Personal fork of st
 (HTM) git clone git://git.drkhsh.at/st.git
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 870f961c49d3f9dfea8d78666e73fcdd0f90cc57
 (DIR) parent 1629363f2d009a0c0d61209e4126ff09fa0e11a4
 (HTM) Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
       Date:   Tue, 29 Apr 2014 09:58:55 +0200
       
       Fix displaying control code
       
       Control code are never displayed. It is not important if graphic
       charset is displayed or not.
       
       Diffstat:
         M st.c                                |      22 +++++++++-------------
       
       1 file changed, 9 insertions(+), 13 deletions(-)
       ---
 (DIR) diff --git 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);