Open bcoles opened 3 years ago
The question here is what we should do? We could:
1) Cut output at the first CR or LF and add ...
.
2) Replace them with escape codes (e.g. CR with \r
). This seems very programmer-ish, so probably doesn't fit with what we want to achieve with the GUI.
3) Replace them characters with ?
. That's what GNU ls
does when you have file names containing a newline. Maybe this is POSIX, I have no idea.
4) Remove them entirely. This is what KDE Dolphin and the tree view of JetBrains IDEs do.
5) Replace them with whitespace (so `). This is what procps
psdoes. 6) Replace e.g.
te\nstwith
'te'$'\n''st'. This is what GNU
lsdoes in
-lmode and what you have to enter into a shell like
bashor
zshto actually get them to accept the control character (except if you open a quote and type a literal newline). 7) Replace them with something obvious, like � (
U+FFFD` replacement character). This one is not in our font yet, though.
My suggestion:
GUI applications: ? or � (It would be more idiomatic to use �, and because the character is not in the fonts used by Serenity, a "?" would be substituted anyway.)
Terminal (Shell Autocomplete, ls -l
): Something you can type into the shell prompt to actually communicate exactly what you want (like maybe what bash
does).
Terminal (various others, like ps
): ?, �, whitespace or ignoring all seem fine.
Note: This post also adresses #7277 and #7280.
There are a lot of instances where CR
0x0d
LF0x0a
messes up text layouts. There are likely other problematic characters (0x09
).Here's a couple of examples; however, this appears to systemic across most user interfaces.
File names:
Processes: