aboutsummaryrefslogtreecommitdiff
path: root/st.c
diff options
context:
space:
mode:
authorsasha <sasha.code@posteo.mx>2025-07-27 05:43:47 +0000
committerHiltjo Posthuma <hiltjo@codemadness.org>2025-07-27 20:06:54 +0200
commitf114bcedd113017d907aad32031db92c050f4bf3 (patch)
tree4cbd1eca84396af81b36ba1740b1aecc81e3ddc7 /st.c
parent98610fcd37f655d44586323dc86c1d013c2798ce (diff)
downloadst-f114bcedd113017d907aad32031db92c050f4bf3.tar.xz
st-f114bcedd113017d907aad32031db92c050f4bf3.zip
Eat up "CSI 58" sequences
This is used in the wild by systemd systemctl for example and st misinterpreted it as "blink", because it didn't know "58", then saw "5" as "blink", and then didn't know "245". This should print "foo" as normal text: printf '\e[58:5:245mfoo\n' printf '\e[58:2:50:100:200mfoo\n'
Diffstat (limited to 'st.c')
-rw-r--r--st.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/st.c b/st.c
index 03b9bc8..37f38c5 100644
--- a/st.c
+++ b/st.c
@@ -1430,6 +1430,12 @@ tsetattr(const int *attr, int l)
case 49:
term.c.attr.bg = defaultbg;
break;
+ case 58:
+ /* This starts a sequence to change the color of
+ * "underline" pixels. We don't support that and
+ * instead eat up a following "5;n" or "2;r;g;b". */
+ tdefcolor(attr, &i, l);
+ break;
default:
if (BETWEEN(attr[i], 30, 37)) {
term.c.attr.fg = attr[i] - 30;