|
|
@ -1296,17 +1296,22 @@ tnewline(int first_col) { |
|
|
|
void |
|
|
|
void |
|
|
|
csiparse(void) { |
|
|
|
csiparse(void) { |
|
|
|
/* int noarg = 1; */ |
|
|
|
/* int noarg = 1; */ |
|
|
|
char *p = csiescseq.buf; |
|
|
|
char *p = csiescseq.buf, *np; |
|
|
|
|
|
|
|
long int v; |
|
|
|
|
|
|
|
|
|
|
|
csiescseq.narg = 0; |
|
|
|
csiescseq.narg = 0; |
|
|
|
if(*p == '?') |
|
|
|
if(*p == '?') |
|
|
|
csiescseq.priv = 1, p++; |
|
|
|
csiescseq.priv = 1, p++; |
|
|
|
|
|
|
|
|
|
|
|
while(p < csiescseq.buf+csiescseq.len) { |
|
|
|
while(p < csiescseq.buf+csiescseq.len) { |
|
|
|
while(isdigit(*p)) { |
|
|
|
np = NULL; |
|
|
|
csiescseq.arg[csiescseq.narg] *= 10; |
|
|
|
v = strtol(p, &np, 10); |
|
|
|
csiescseq.arg[csiescseq.narg] += *p++ - '0'/*, noarg = 0 */; |
|
|
|
if(v == LONG_MAX || v == LONG_MIN) |
|
|
|
} |
|
|
|
v = -1; |
|
|
|
|
|
|
|
csiescseq.arg[csiescseq.narg] = v; |
|
|
|
|
|
|
|
if(np != NULL) |
|
|
|
|
|
|
|
p = np; |
|
|
|
|
|
|
|
|
|
|
|
if(*p == ';' && csiescseq.narg+1 < ESC_ARG_SIZ) { |
|
|
|
if(*p == ';' && csiescseq.narg+1 < ESC_ARG_SIZ) { |
|
|
|
csiescseq.narg++, p++; |
|
|
|
csiescseq.narg++, p++; |
|
|
|
} else { |
|
|
|
} else { |
|
|
@ -2116,7 +2121,8 @@ tputc(char *c, int len) { |
|
|
|
if(BETWEEN(ascii, 0x40, 0x7E) |
|
|
|
if(BETWEEN(ascii, 0x40, 0x7E) |
|
|
|
|| csiescseq.len >= ESC_BUF_SIZ) { |
|
|
|
|| csiescseq.len >= ESC_BUF_SIZ) { |
|
|
|
term.esc = 0; |
|
|
|
term.esc = 0; |
|
|
|
csiparse(), csihandle(); |
|
|
|
csiparse(); |
|
|
|
|
|
|
|
csihandle(); |
|
|
|
} |
|
|
|
} |
|
|
|
} else if(term.esc & ESC_STR_END) { |
|
|
|
} else if(term.esc & ESC_STR_END) { |
|
|
|
term.esc = 0; |
|
|
|
term.esc = 0; |
|
|
|