Using strtok_r for the string parsing. - st - Simple Terminal
       
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 7cb0d95509d1b2837e4fa7d131f497800b20d22c
 (DIR) parent 37863356b00cd41c24e10243121649473b98824f
 (HTM) Author: Christoph Lohmann <20h@r-36.net>
       Date:   Mon, 25 Feb 2013 13:36:40 +0100
       
       Using strtok_r for the string parsing.
       
       Diffstat:
         st.c                                |      32 ++++++++++++++-----------------
       
       1 file changed, 14 insertions(+), 18 deletions(-)
       ---
 (DIR) diff --git a/st.c b/st.c
       @@ -1300,8 +1300,10 @@ csiparse(void) {
                long int v;
        
                csiescseq.narg = 0;
       -        if(*p == '?')
       -                csiescseq.priv = 1, p++;
       +        if(*p == '?') {
       +                csiescseq.priv = 1;
       +                p++;
       +        }
        
                while(p < csiescseq.buf+csiescseq.len) {
                        np = NULL;
       @@ -1928,23 +1930,17 @@ strhandle(void) {
        
        void
        strparse(void) {
       -        /*
       -         * TODO: Implement parsing like for CSI when required.
       -         * Format: ESC type cmd ';' arg0 [';' argn] ESC \
       -         */
       -        int narg = 0;
       -        char *start = strescseq.buf, *end = start + strescseq.len;
       -        strescseq.args[0] = start;
       -        while(start < end && narg < LEN(strescseq.args)) {
       -                start = memchr(start, ';', end - start);
       -                if(!start)
       -                        break;
       -                *start++ = '\0';
       -                if(start < end) {
       -                        strescseq.args[++narg] = start;
       -                }
       +        char *p = strescseq.buf, *np, *sp;
       +
       +        strescseq.narg = 0;
       +        np = strtok_r(strescseq.buf, ";", &sp);
       +        while(p < strescseq.buf+strescseq.len && np != NULL) {
       +                strescseq.args[strescseq.narg++] = p;
       +
       +                np = strtok_r(NULL, ";", &sp);
       +                if(np != NULL)
       +                        p = np;
                }
       -        strescseq.narg = narg + 1;
        }
        
        void