vt: handle up to two private characters

This commit is contained in:
Daniel Eklöf 2019-07-19 09:56:59 +02:00
parent a5737a63b8
commit 24e9477174
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
3 changed files with 24 additions and 13 deletions

12
csi.c
View file

@ -121,8 +121,11 @@ csi_as_string(struct terminal *term, uint8_t final)
static char msg[1024];
int c = snprintf(msg, sizeof(msg), "CSI: ");
if (term->vt.private != 0)
c += snprintf(&msg[c], sizeof(msg) - c, "%c", term->vt.private);
for (size_t i = 0; i < sizeof(term->vt.private) / sizeof(term->vt.private[0]); i++) {
if (term->vt.private[i] == 0)
break;
c += snprintf(&msg[c], sizeof(msg) - c, "%c", term->vt.private[i]);
}
for (size_t i = 0; i < term->vt.params.idx; i++){
c += snprintf(&msg[c], sizeof(msg) - c, "%d",
@ -339,7 +342,7 @@ csi_dispatch(struct terminal *term, uint8_t final)
{
LOG_DBG("%s", csi_as_string(term, final));
switch (term->vt.private) {
switch (term->vt.private[0]) {
case 0: {
switch (final) {
case 'c':
@ -845,8 +848,9 @@ csi_dispatch(struct terminal *term, uint8_t final)
break;
default:
LOG_ERR("unimplemented: CSI %s", csi_as_string(term, final));
LOG_ERR("unimplemented: %s", csi_as_string(term, final));
abort();
break;
}
}
break;