瀏覽代碼

Remove repeated initialisation of term.esc

Once a sequence is completed term.esc must return to 0, so
instead of repeating this expression in all the cases is
better put it at the end of the block.
Roberto E. Vargas Caballero 11 年之前
父節點
當前提交
53105cf74f
共有 1 個文件被更改,包括 6 次插入18 次删除
  1. 6 18
      st.c

+ 6 - 18
st.c

@@ -2503,10 +2503,10 @@ tputc(char *c, int len) {
 				csiparse();
 				csiparse();
 				csihandle();
 				csihandle();
 			}
 			}
+			return;
 		} else if(term.esc & ESC_ALTCHARSET) {
 		} else if(term.esc & ESC_ALTCHARSET) {
 			tdeftran(ascii);
 			tdeftran(ascii);
 			tselcs();
 			tselcs();
-			term.esc = 0;
 		} else if(term.esc & ESC_TEST) {
 		} else if(term.esc & ESC_TEST) {
 			if(ascii == '8') { /* DEC screen alignment test. */
 			if(ascii == '8') { /* DEC screen alignment test. */
 				char E[UTF_SIZ] = "E";
 				char E[UTF_SIZ] = "E";
@@ -2517,15 +2517,14 @@ tputc(char *c, int len) {
 						tsetchar(E, &term.c.attr, x, y);
 						tsetchar(E, &term.c.attr, x, y);
 				}
 				}
 			}
 			}
-			term.esc = 0;
 		} else {
 		} else {
 			switch(ascii) {
 			switch(ascii) {
 			case '[':
 			case '[':
 				term.esc |= ESC_CSI;
 				term.esc |= ESC_CSI;
-				break;
+				return;
 			case '#':
 			case '#':
 				term.esc |= ESC_TEST;
 				term.esc |= ESC_TEST;
-				break;
+				return;
 			case 'P': /* DCS -- Device Control String */
 			case 'P': /* DCS -- Device Control String */
 			case '_': /* APC -- Application Program Command */
 			case '_': /* APC -- Application Program Command */
 			case '^': /* PM -- Privacy Message */
 			case '^': /* PM -- Privacy Message */
@@ -2534,29 +2533,26 @@ tputc(char *c, int len) {
 				strreset();
 				strreset();
 				strescseq.type = ascii;
 				strescseq.type = ascii;
 				term.esc |= ESC_STR;
 				term.esc |= ESC_STR;
-				break;
+				return;
 			case '(': /* set primary charset G0 */
 			case '(': /* set primary charset G0 */
 			case ')': /* set secondary charset G1 */
 			case ')': /* set secondary charset G1 */
 			case '*': /* set tertiary charset G2 */
 			case '*': /* set tertiary charset G2 */
 			case '+': /* set quaternary charset G3 */
 			case '+': /* set quaternary charset G3 */
 				term.icharset = ascii - '(';
 				term.icharset = ascii - '(';
 				term.esc |= ESC_ALTCHARSET;
 				term.esc |= ESC_ALTCHARSET;
-				break;
+				return;
 			case 'D': /* IND -- Linefeed */
 			case 'D': /* IND -- Linefeed */
 				if(term.c.y == term.bot) {
 				if(term.c.y == term.bot) {
 					tscrollup(term.top, 1);
 					tscrollup(term.top, 1);
 				} else {
 				} else {
 					tmoveto(term.c.x, term.c.y+1);
 					tmoveto(term.c.x, term.c.y+1);
 				}
 				}
-				term.esc = 0;
 				break;
 				break;
 			case 'E': /* NEL -- Next line */
 			case 'E': /* NEL -- Next line */
 				tnewline(1); /* always go to first col */
 				tnewline(1); /* always go to first col */
-				term.esc = 0;
 				break;
 				break;
 			case 'H': /* HTS -- Horizontal tab stop */
 			case 'H': /* HTS -- Horizontal tab stop */
 				term.tabs[term.c.x] = 1;
 				term.tabs[term.c.x] = 1;
-				term.esc = 0;
 				break;
 				break;
 			case 'M': /* RI -- Reverse index */
 			case 'M': /* RI -- Reverse index */
 				if(term.c.y == term.top) {
 				if(term.c.y == term.top) {
@@ -2564,46 +2560,38 @@ tputc(char *c, int len) {
 				} else {
 				} else {
 					tmoveto(term.c.x, term.c.y-1);
 					tmoveto(term.c.x, term.c.y-1);
 				}
 				}
-				term.esc = 0;
 				break;
 				break;
 			case 'Z': /* DECID -- Identify Terminal */
 			case 'Z': /* DECID -- Identify Terminal */
 				ttywrite(VT102ID, sizeof(VT102ID) - 1);
 				ttywrite(VT102ID, sizeof(VT102ID) - 1);
-				term.esc = 0;
 				break;
 				break;
 			case 'c': /* RIS -- Reset to inital state */
 			case 'c': /* RIS -- Reset to inital state */
 				treset();
 				treset();
-				term.esc = 0;
 				xresettitle();
 				xresettitle();
 				xloadcols();
 				xloadcols();
 				break;
 				break;
 			case '=': /* DECPAM -- Application keypad */
 			case '=': /* DECPAM -- Application keypad */
 				term.mode |= MODE_APPKEYPAD;
 				term.mode |= MODE_APPKEYPAD;
-				term.esc = 0;
 				break;
 				break;
 			case '>': /* DECPNM -- Normal keypad */
 			case '>': /* DECPNM -- Normal keypad */
 				term.mode &= ~MODE_APPKEYPAD;
 				term.mode &= ~MODE_APPKEYPAD;
-				term.esc = 0;
 				break;
 				break;
 			case '7': /* DECSC -- Save Cursor */
 			case '7': /* DECSC -- Save Cursor */
 				tcursor(CURSOR_SAVE);
 				tcursor(CURSOR_SAVE);
-				term.esc = 0;
 				break;
 				break;
 			case '8': /* DECRC -- Restore Cursor */
 			case '8': /* DECRC -- Restore Cursor */
 				tcursor(CURSOR_LOAD);
 				tcursor(CURSOR_LOAD);
-				term.esc = 0;
 				break;
 				break;
 			case '\\': /* ST -- String Terminator */
 			case '\\': /* ST -- String Terminator */
 				if(term.esc & ESC_STR_END)
 				if(term.esc & ESC_STR_END)
 					strhandle();
 					strhandle();
-				term.esc = 0;
 				break;
 				break;
 			default:
 			default:
 				fprintf(stderr, "erresc: unknown sequence ESC 0x%02X '%c'\n",
 				fprintf(stderr, "erresc: unknown sequence ESC 0x%02X '%c'\n",
 					(uchar) ascii, isprint(ascii)? ascii:'.');
 					(uchar) ascii, isprint(ascii)? ascii:'.');
-				term.esc = 0;
 				break;
 				break;
 			}
 			}
 		}
 		}
+		term.esc = 0;
 		/*
 		/*
 		 * All characters which form part of a sequence are not
 		 * All characters which form part of a sequence are not
 		 * printed
 		 * printed