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
27 lines
726 B
Text
27 lines
726 B
Text
|
|
|
|
|
|
|
|
|
|
|
|
rrrrrrrrrrrrrrrrrrrrrrrrrrJJ
|
|
rrrrrrrrrrrrrrrrrrrrrrrrrrJJJ
|
|
rrrrrrrrrrrrrrrrrrrrrrrrrrYJJ
|
|
rrrrrrrrrrrrrrrrrrrrrrrrrrXJJ
|
|
zzzzzzzzzzzzzzzzzzzzzzzzzzJC
|
|
JYYYYYYYYYYYYYYYYYYYYYYYYYJ
|
|
YYYYYYYYYYYYYYYYYYYYYYYYYJmm
|
|
YYYYYYYYYYYYYYYYYYYYYYYYYYmmm
|
|
YYYYYYYYYYYYYYYYYYYYYYYYYYmmm
|
|
00000000000000000000000000Zmm
|
|
00000000000000000000000000Zp
|
|
wmmmmmmmmmmmmmmmmmmmmmmmmmph
|
|
wmmmmmmmmmmmmmmmmmmmmmmmmmwkkh
|
|
mmmmmmmmmmmmmmmmmmmmmmmmmmkkh
|
|
mmmmmmmmmmmmmmmmmmmmmmmmmmkkh
|
|
ddddddddddddddddddddddddddkk
|
|
bbbbbbbbbbbbbbbbbbbbbbbbbb
|
|
|
|
|
|
|
|
|