Move terminal echo logic into st.c The only thing differentiating ttywrite and ttysend was the potential for echo; make this a parameter and remove ttysend. Signed-off-by: Devin J. Pohly <djpohly@gmail.com>
Devin J. Pohly djpohly@gmail.com
M
st.c
→
st.c
@@ -784,11 +784,14 @@ return ret;
} void -ttywrite(const char *s, size_t n) +ttywrite(const char *s, size_t n, int may_echo) { fd_set wfd, rfd; ssize_t r; size_t lim = 256; + + if (may_echo && IS_SET(MODE_ECHO)) + twrite(s, n, 1); /* * Remember that we are using a pty, which might be a modem line.@@ -838,14 +841,6 @@ return;
write_error: die("write error on tty: %s\n", strerror(errno)); -} - -void -ttysend(char *s, size_t n) -{ - ttywrite(s, n); - if (IS_SET(MODE_ECHO)) - twrite(s, n, 1); } void@@ -1570,7 +1565,7 @@ }
break; case 'c': /* DA -- Device Attributes */ if (csiescseq.arg[0] == 0) - ttywrite(vtiden, strlen(vtiden)); + ttywrite(vtiden, strlen(vtiden), 0); break; case 'C': /* CUF -- Cursor <n> Forward */ case 'a': /* HPR -- Cursor <n> Forward */@@ -1698,7 +1693,7 @@ case 'n': /* DSR – Device Status Report (cursor position) */
if (csiescseq.arg[0] == 6) { len = snprintf(buf, sizeof(buf),"\033[%i;%iR", term.c.y+1, term.c.x+1); - ttywrite(buf, len); + ttywrite(buf, len, 0); } break; case 'r': /* DECSTBM -- Set Scrolling Region */@@ -1916,7 +1911,7 @@ if ((utf32 = strtoul(us, &e, 16)) == ULONG_MAX ||
(*e != '\n' && *e != '\0')) return; - ttysend(uc, utf8encode(utf32, uc)); + ttywrite(uc, utf8encode(utf32, uc), 1); } void@@ -2129,7 +2124,7 @@ case 0x98: /* TODO: SOS */
case 0x99: /* TODO: SGCI */ break; case 0x9a: /* DECID -- Identify Terminal */ - ttywrite(vtiden, strlen(vtiden)); + ttywrite(vtiden, strlen(vtiden), 0); break; case 0x9b: /* TODO: CSI */ case 0x9c: /* TODO: ST */@@ -2201,7 +2196,7 @@ tmoveto(term.c.x, term.c.y-1);
} break; case 'Z': /* DECID -- Identify Terminal */ - ttywrite(vtiden, strlen(vtiden)); + ttywrite(vtiden, strlen(vtiden), 0); break; case 'c': /* RIS -- Reset to inital state */ treset();
M
x.c
→
x.c
@@ -390,7 +390,7 @@ } else {
return; } - ttywrite(buf, len); + ttywrite(buf, len, 0); } void@@ -408,7 +408,7 @@
for (ms = mshortcuts; ms < mshortcuts + LEN(mshortcuts); ms++) { if (e->xbutton.button == ms->b && match(ms->mask, e->xbutton.state)) { - ttysend(ms->s, strlen(ms->s)); + ttywrite(ms->s, strlen(ms->s), 1); return; } }@@ -520,10 +520,10 @@ *repl++ = '\r';
} if (IS_SET(MODE_BRCKTPASTE) && ofs == 0) - ttywrite("\033[200~", 6); - ttysend((char *)data, nitems * format / 8); + ttywrite("\033[200~", 6, 0); + ttywrite((char *)data, nitems * format / 8, 1); if (IS_SET(MODE_BRCKTPASTE) && rem == 0) - ttywrite("\033[201~", 6); + ttywrite("\033[201~", 6, 0); XFree(data); /* number of 32-bit chunks returned */ ofs += nitems * format / 32;@@ -1634,12 +1634,12 @@ XSetICFocus(xw.xic);
win.state |= WIN_FOCUSED; xseturgency(0); if (IS_SET(MODE_FOCUS)) - ttywrite("\033[I", 3); + ttywrite("\033[I", 3, 0); } else { XUnsetICFocus(xw.xic); win.state &= ~WIN_FOCUSED; if (IS_SET(MODE_FOCUS)) - ttywrite("\033[O", 3); + ttywrite("\033[O", 3, 0); } }@@ -1714,7 +1714,7 @@ }
/* 2. custom keys from config.h */ if ((customkey = kmap(ksym, e->state))) { - ttysend(customkey, strlen(customkey)); + ttywrite(customkey, strlen(customkey), 1); return; }@@ -1733,7 +1733,7 @@ buf[0] = '\033';
len = 2; } } - ttysend(buf, len); + ttywrite(buf, len, 1); }