Remove duplicated code in strhandle - st - Simple Terminal
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit a8d5870073af14aa08032ab8520c5fe17bb8a1e8
 (DIR) parent 21d905c076735783b41eec55f31d933129fd9f22
 (HTM) Author: Roberto E. Vargas Caballero <k0ga@shike2.com>
       Date:   Fri, 31 Jan 2014 17:04:18 +0100
       
       Remove duplicated code in strhandle
       
       The error condition was duplicated in two different switches.
       This new version centralized the error handling in only one place.
       
       Diffstat:
         st.c                                |      24 ++++++++++--------------
       
       1 file changed, 10 insertions(+), 14 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -2152,20 +2152,21 @@ csireset(void) {
        void
        strhandle(void) {
                char *p = NULL;
       -        int i, j, narg;
       +        int j, narg, par;
        
                strparse();
                narg = strescseq.narg;
       +        par = atoi(strescseq.args[0]);
        
                switch(strescseq.type) {
                case ']': /* OSC -- Operating System Command */
       -                switch(i = atoi(strescseq.args[0])) {
       +                switch(par) {
                        case 0:
                        case 1:
                        case 2:
                                if(narg > 1)
                                        xsettitle(strescseq.args[1]);
       -                        break;
       +                        return;
                        case 4: /* color set */
                                if(narg < 3)
                                        break;
       @@ -2182,25 +2183,20 @@ strhandle(void) {
                                         */
                                        redraw(0);
                                }
       -                        break;
       -                default:
       -                        fprintf(stderr, "erresc: unknown str ");
       -                        strdump();
       -                        break;
       +                        return;
                        }
                        break;
                case 'k': /* old title set compatibility */
                        xsettitle(strescseq.args[0]);
       -                break;
       +                return;
                case 'P': /* DSC -- Device Control String */
                case '_': /* APC -- Application Program Command */
                case '^': /* PM -- Privacy Message */
       -        default:
       -                fprintf(stderr, "erresc: unknown str ");
       -                strdump();
       -                /* die(""); */
       -                break;
       +                return;
                }
       +
       +        fprintf(stderr, "erresc: unknown str ");
       +        strdump();
        }
        
        void