Commit: ee916f134c6c34eb080b89ece95aba84d48d58f3
Parent: 78d8a7d85407d7efc803a8e2598424ae6e76b37c
Author: Randy Palamar
Date: Wed, 22 Jan 2025 22:08:24 -0700
terminal: convert dump_csi to a more generic stream_push_csi
Diffstat:
M | terminal.c | | | 68 | +++++++++++++++++++++++++++++++++++++++----------------------------- |
1 file changed, 39 insertions(+), 29 deletions(-)
diff --git a/terminal.c b/terminal.c
@@ -438,42 +438,40 @@ term_reset(Term *t)
}
static void
-dump_csi(CSI *csi, Stream *err)
+stream_push_csi(Stream *s, CSI *csi)
{
- stream_push_s8(err, s8("raw: ESC["));
+ stream_push_s8(s, s8("ESC ["));
for (size i = 0; i < csi->raw.len; i++) {
u8 c = csi->raw.data[i];
if (ISPRINT(c)) {
- stream_push_byte(err, csi->raw.data[i]);
+ stream_push_byte(s, csi->raw.data[i]);
} else if (c == '\n') {
- stream_push_s8(err, s8("\\n"));
+ stream_push_s8(s, s8("\\n"));
} else if (c == '\r') {
- stream_push_s8(err, s8("\\r"));
+ stream_push_s8(s, s8("\\r"));
} else {
- stream_push_s8(err, s8("\\x"));
- stream_push_hex_u64(err, c);
+ stream_push_s8(s, s8("\\x"));
+ stream_push_hex_u64(s, c);
}
}
- stream_push_s8(err, s8("\n\tparsed = { .priv = "));
- stream_push_u64(err, csi->priv);
- stream_push_s8(err, s8(" .mode = "));
+ stream_push_s8(s, s8("\n\t{ .priv = "));
+ stream_push_u64(s, csi->priv);
+ stream_push_s8(s, s8(" .mode = "));
if (ISPRINT(csi->mode)) {
- stream_push_byte(err, csi->mode);
+ stream_push_byte(s, csi->mode);
} else {
- stream_push_s8(err, s8("\\x"));
- stream_push_hex_u64(err, csi->mode);
+ stream_push_s8(s, s8("\\x"));
+ stream_push_hex_u64(s, csi->mode);
}
- stream_push_s8(err, s8(", .argc = "));
- stream_push_u64(err, csi->argc);
- stream_push_s8(err, s8(", .argv = {"));
+
+ stream_push_s8(s, s8(", .argc = "));
+ stream_push_u64(s, csi->argc);
+ stream_push_s8(s, s8(", .argv = {"));
for (i32 i = 0; i < csi->argc; i++) {
- stream_push_byte(err, ' ');
- stream_push_i64(err, csi->argv[i]);
+ stream_push_byte(s, ' ');
+ stream_push_i64(s, csi->argv[i]);
}
-
- stream_push_s8(err, s8(" } }\n"));
- os_write_err_msg(stream_to_s8(err));
- err->widx = 0;
+ stream_push_s8(s, s8(" } }\n"));
}
/* ED/DECSED: Erase in Display */
@@ -656,8 +654,10 @@ set_mode(Term *t, CSI *csi, b32 set, ModeState src, ModeState *dest)
* fast enough */
break;
default:
- os_write_err_msg(s8("set_mode: unhandled mode: "));
- dump_csi(csi, &t->error_stream);
+ stream_push_s8(&t->error_stream, s8("set_mode: unhandled mode: "));
+ stream_push_csi(&t->error_stream, csi);
+ os_write_err_msg(stream_to_s8(&t->error_stream));
+ t->error_stream.widx = 0;
}
}
#undef PRIV
@@ -777,7 +777,9 @@ set_colours(Term *t, CSI *csi)
cs->fg = dcr.colour;
} else {
stream_push_s8(&t->error_stream, s8("set_colours: "));
- dump_csi(csi, &t->error_stream);
+ stream_push_csi(&t->error_stream, csi);
+ os_write_err_msg(stream_to_s8(&t->error_stream));
+ t->error_stream.widx = 0;
}
break;
@@ -789,7 +791,9 @@ set_colours(Term *t, CSI *csi)
cs->bg = dcr.colour;
} else {
stream_push_s8(&t->error_stream, s8("set_colours: "));
- dump_csi(csi, &t->error_stream);
+ stream_push_csi(&t->error_stream, csi);
+ os_write_err_msg(stream_to_s8(&t->error_stream));
+ t->error_stream.widx = 0;
}
break;
@@ -808,7 +812,9 @@ set_colours(Term *t, CSI *csi)
stream_push_s8(&t->error_stream, s8("unhandled colour arg: "));
stream_push_i64(&t->error_stream, csi->argv[i]);
stream_push_byte(&t->error_stream, '\n');
- dump_csi(csi, &t->error_stream);
+ stream_push_csi(&t->error_stream, csi);
+ os_write_err_msg(stream_to_s8(&t->error_stream));
+ t->error_stream.widx = 0;
}
}
}
@@ -839,7 +845,9 @@ window_manipulation(Term *t, CSI *csi)
stream_push_s8(&t->error_stream, s8("unhandled xtwinops: "));
stream_push_i64(&t->error_stream, csi->argv[0]);
stream_push_byte(&t->error_stream, '\n');
- dump_csi(csi, &t->error_stream);
+ stream_push_csi(&t->error_stream, csi);
+ os_write_err_msg(stream_to_s8(&t->error_stream));
+ t->error_stream.widx = 0;
}
}
@@ -972,7 +980,9 @@ handle_csi(Term *t, CSI *csi)
default:
unknown:
stream_push_s8(&t->error_stream, s8("unknown csi: "));
- dump_csi(csi, &t->error_stream);
+ stream_push_csi(&t->error_stream, csi);
+ os_write_err_msg(stream_to_s8(&t->error_stream));
+ t->error_stream.widx = 0;
}
END_TIMED_BLOCK();
}