X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;f=st.c;h=49df79204dc1cc570e2d13475fdd1c444f542b64;hb=704d12442e85ded011f71c95e90534ebacc81692;hp=f91eb8d1c8cae82677dcc4639798afd648f1595a;hpb=84f6dbffa5a26e1a2f94f844844d76f80dd6c5a0;p=st.git diff --git a/st.c b/st.c index f91eb8d..49df792 100644 --- a/st.c +++ b/st.c @@ -149,7 +149,7 @@ enum charset { enum escape_state { ESC_START = 1, ESC_CSI = 2, - ESC_STR = 4, /* DSC, OSC, PM, APC */ + ESC_STR = 4, /* DCS, OSC, PM, APC */ ESC_ALTCHARSET = 8, ESC_STR_END = 16, /* a final string was encountered */ ESC_TEST = 32, /* Enter in test mode */ @@ -1228,6 +1228,7 @@ ttynew(void) { opt_io, strerror(errno)); } } + break; } } @@ -1673,6 +1674,7 @@ tdefcolor(int *attr, int *npar, int l) { default: fprintf(stderr, "erresc(38): gfx attr %d unknown\n", attr[*npar]); + break; } return idx; @@ -2169,7 +2171,7 @@ strhandle(void) { case 'k': /* old title set compatibility */ xsettitle(strescseq.args[0]); return; - case 'P': /* DSC -- Device Control String */ + case 'P': /* DCS -- Device Control String */ case '_': /* APC -- Application Program Command */ case '^': /* PM -- Privacy Message */ return; @@ -2298,7 +2300,7 @@ techo(char *buf, int len) { for(; len > 0; buf++, len--) { char c = *buf; - if(c < 0x20 || c == 0177) { /* control code */ + if(BETWEEN(c, 0x00, 0x1f) || c == 0x7f) { /* control code */ if(c != '\n' && c != '\r' && c != '\t') { c ^= '\x40'; tputc("^", 1); @@ -2387,6 +2389,7 @@ tputc(char *c, int len) { * strhandle(); */ } + break; } return; } @@ -2452,10 +2455,6 @@ tputc(char *c, int len) { csiparse(); csihandle(); } - } else if(term.esc & ESC_STR_END) { - term.esc = 0; - if(ascii == '\\') - strhandle(); } else if(term.esc & ESC_ALTCHARSET) { tdeftran(ascii); tselcs(); @@ -2545,13 +2544,16 @@ tputc(char *c, int len) { tcursor(CURSOR_LOAD); term.esc = 0; break; - case '\\': /* ST -- Stop */ + case '\\': /* ST -- String Terminator */ + if(term.esc & ESC_STR_END) + strhandle(); term.esc = 0; break; default: fprintf(stderr, "erresc: unknown sequence ESC 0x%02X '%c'\n", (uchar) ascii, isprint(ascii)? ascii:'.'); term.esc = 0; + break; } } /*