Two ANSI bugs, both found by running fastfetch rather than by reading the parser, and both invisible to anything that spells its escapes out in full. ESC[m with no parameters means ESC[0m. ECMA-48 is explicit that an omitted parameter takes its default and SGR's default is 0, and sgr() iterated its parameter list -- which is empty in exactly that case, so the loop body never ran and the reset was silently dropped. Programs emit the bare form constantly. fastfetch writes "\x1b[32m1%\x1b[m", so everything after the first coloured character stayed green forever. With a background colour it is much worse: its palette swatch sets a white background and resets, the reset did nothing, and the console went white-on-white and stayed there -- filling the screen with white rectangles as it scrolled, which looks like a corrupted framebuffer rather than one missing branch. OSC sequences were not a state at all, so ESC ] fell through and the payload printed as text: a hyperlinked path arrived as "Disk (]8;;file:///\]8;;\)". Nothing here acts on an operating-system command -- there is no window title and no hyperlink to follow -- but *discarding* one is not optional, because the alternative is printing somebody's URL into the middle of their output. ESC \ ends it, and an ESC followed by anything else is handed back to the escape state rather than eaten, so a malformed OSC does not swallow the sequence after it. Verified by screendumping the framebuffer after two consecutive fastfetch runs: identical output both times, near-white coverage down from most of the screen to 2% (the palette swatch's own white cell), and the disk line reading "Disk (/)". Also installs docs/branding/Ascii/ascii_50.txt as /usr/share/schos/logo.txt -- Shift as characters, at the width that leaves room for an info block on an 80-column console. Installed from the branding directory rather than copied into sysroot by hand, so there is one source. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VQ7Qx8E1q1M1bbCq8QLHS2
37 lines
1.3 KiB
Text
37 lines
1.3 KiB
Text
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrnJ
|
|
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrxJJJ
|
|
jrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrJJJJ
|
|
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrYJJJ
|
|
rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrYJJJ
|
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzJJJC
|
|
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzJJ
|
|
JYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYQ
|
|
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYmm
|
|
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYmmmm
|
|
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYOmmmw
|
|
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY0mmmw
|
|
YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYJmmmm
|
|
000000000000000000000000000000000000mmw
|
|
000000000000000000000000000000000000m
|
|
wmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmb
|
|
wmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmdkk
|
|
wmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmpkkkh
|
|
mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmwkkkh
|
|
wmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmwkkkh
|
|
wmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmkkkh
|
|
dddddddddddddddddddddddddddddddddddbkk
|
|
dddddddddddddddddddddddddddddddddddbh
|
|
|
|
|
|
|
|
|
|
|
|
|