summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoberto E. Vargas Caballero2014-04-29 09:58:55 +0200
committerRoberto E. Vargas Caballero2014-04-30 08:35:53 +0200
commit870f961c49d3f9dfea8d78666e73fcdd0f90cc57 (patch)
tree8ea64d88d93d1fc6d8e13fc7834ee319b7007164
parent1629363f2d009a0c0d61209e4126ff09fa0e11a4 (diff)
downloadst-870f961c49d3f9dfea8d78666e73fcdd0f90cc57.tar.gz
st-870f961c49d3f9dfea8d78666e73fcdd0f90cc57.tar.xz
st-870f961c49d3f9dfea8d78666e73fcdd0f90cc57.zip
Fix displaying control code
Control code are never displayed. It is not important if graphic charset is displayed or not.
-rw-r--r--st.c22
1 files changed, 9 insertions, 13 deletions
diff --git a/st.c b/st.c
index 3ed77e1..7474256 100644
--- a/st.c
+++ b/st.c
@@ -392,7 +392,7 @@ static void tsetdirtattr(int);
static void tsetmode(bool, bool, int *, int);
static void tfulldirt(void);
static void techo(char *, int);
-static bool tcontrolcode(uchar );
+static void tcontrolcode(uchar );
static void tdectest(char );
static int32_t tdefcolor(int *, int *, int);
static void tdeftran(char);
@@ -2328,7 +2328,7 @@ tdeftran(char ascii) {
term.trantbl[term.icharset] = (*bp)[1];
}
-bool
+void
tcontrolcode(uchar ascii) {
static char question[UTF_SIZ] = "?";
@@ -2363,7 +2363,7 @@ tcontrolcode(uchar ascii) {
csireset();
term.esc &= ~(ESC_CSI|ESC_ALTCHARSET|ESC_TEST);
term.esc |= ESC_START;
- return 1;
+ return;
case '\016': /* SO */
term.charset = 0;
break;
@@ -2395,11 +2395,9 @@ tcontrolcode(uchar ascii) {
case 0x9e: /* TODO: PM */
case 0x9f: /* TODO: APC */
break;
- default:
- return 0;
}
term.esc &= ~(ESC_STR_END|ESC_STR);
- return 1;
+ return;
}
void
@@ -2478,8 +2476,11 @@ tputc(char *c, int len) {
* they must not cause conflicts with sequences.
*/
if(control) {
- if (tcontrolcode(ascii))
- return;
+ tcontrolcode(ascii);
+ /*
+ * control codes are not shown ever
+ */
+ return;
} else if(term.esc & ESC_START) {
if(term.esc & ESC_CSI) {
csiescseq.buf[csiescseq.len++] = ascii;
@@ -2576,11 +2577,6 @@ tputc(char *c, int len) {
*/
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))
selclear(NULL);