all repos — st @ 7cb0d95509d1b2837e4fa7d131f497800b20d22c

st (suckless terminal) config

Using strtok_r for the string parsing.
Christoph Lohmann 20h@r-36.net
commit

7cb0d95509d1b2837e4fa7d131f497800b20d22c

parent

37863356b00cd41c24e10243121649473b98824f

1 files changed, 14 insertions(+), 18 deletions(-)

jump to
M st.cst.c

@@ -1300,8 +1300,10 @@ char *p = csiescseq.buf, *np;

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 @@ }

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