瀏覽代碼

Fix displaying control code

Control code are never displayed. It is not important if graphic
charset is displayed or not.
Roberto E. Vargas Caballero 11 年之前
父節點
當前提交
870f961c49
共有 1 個文件被更改,包括 9 次插入13 次删除
  1. 9 13
      st.c

+ 9 - 13
st.c

@@ -392,7 +392,7 @@ static void tsetdirtattr(int);
 static void tsetmode(bool, bool, int *, int);
 static void tsetmode(bool, bool, int *, int);
 static void tfulldirt(void);
 static void tfulldirt(void);
 static void techo(char *, int);
 static void techo(char *, int);
-static bool tcontrolcode(uchar );
+static void tcontrolcode(uchar );
 static void tdectest(char );
 static void tdectest(char );
 static int32_t tdefcolor(int *, int *, int);
 static int32_t tdefcolor(int *, int *, int);
 static void tdeftran(char);
 static void tdeftran(char);
@@ -2328,7 +2328,7 @@ tdeftran(char ascii) {
 		term.trantbl[term.icharset] = (*bp)[1];
 		term.trantbl[term.icharset] = (*bp)[1];
 }
 }
 
 
-bool
+void
 tcontrolcode(uchar ascii) {
 tcontrolcode(uchar ascii) {
 	static char question[UTF_SIZ] = "?";
 	static char question[UTF_SIZ] = "?";
 
 
@@ -2363,7 +2363,7 @@ tcontrolcode(uchar ascii) {
 		csireset();
 		csireset();
 		term.esc &= ~(ESC_CSI|ESC_ALTCHARSET|ESC_TEST);
 		term.esc &= ~(ESC_CSI|ESC_ALTCHARSET|ESC_TEST);
 		term.esc |= ESC_START;
 		term.esc |= ESC_START;
-		return 1;
+		return;
 	case '\016': /* SO */
 	case '\016': /* SO */
 		term.charset = 0;
 		term.charset = 0;
 		break;
 		break;
@@ -2395,11 +2395,9 @@ tcontrolcode(uchar ascii) {
 	case 0x9e:   /* TODO: PM */
 	case 0x9e:   /* TODO: PM */
 	case 0x9f:   /* TODO: APC */
 	case 0x9f:   /* TODO: APC */
 		break;
 		break;
-	default:
-		return 0;
 	}
 	}
 	term.esc &= ~(ESC_STR_END|ESC_STR);
 	term.esc &= ~(ESC_STR_END|ESC_STR);
-	return 1;
+	return;
 }
 }
 
 
 void
 void
@@ -2478,8 +2476,11 @@ tputc(char *c, int len) {
 	 * they must not cause conflicts with sequences.
 	 * they must not cause conflicts with sequences.
 	 */
 	 */
 	if(control) {
 	if(control) {
-		if (tcontrolcode(ascii))
-			return;
+		tcontrolcode(ascii);
+		/*
+		 * control codes are not shown ever
+		 */
+		return;
 	} else if(term.esc & ESC_START) {
 	} else if(term.esc & ESC_START) {
 		if(term.esc & ESC_CSI) {
 		if(term.esc & ESC_CSI) {
 			csiescseq.buf[csiescseq.len++] = ascii;
 			csiescseq.buf[csiescseq.len++] = ascii;
@@ -2576,11 +2577,6 @@ tputc(char *c, int len) {
 		 */
 		 */
 		return;
 		return;
 	}
 	}
-	/*
-	 * Display control codes only if we are in graphic mode
-	 */
-	if(control && term.trantbl[term.charset] != CS_GRAPHIC0)
-		return;
 	if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y))
 	if(sel.ob.x != -1 && BETWEEN(term.c.y, sel.ob.y, sel.oe.y))
 		selclear(NULL);
 		selclear(NULL);