diff options
Diffstat (limited to 'Userland/Shell')
-rw-r--r-- | Userland/Shell/Shell.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/Userland/Shell/Shell.cpp b/Userland/Shell/Shell.cpp index 0b31ed99f6..d0630ffe7d 100644 --- a/Userland/Shell/Shell.cpp +++ b/Userland/Shell/Shell.cpp @@ -1660,8 +1660,11 @@ void Shell::bring_cursor_to_beginning_of_a_line() const fputs(eol_mark.characters(), stderr); - for (auto i = eol_mark_length; i < ws.ws_col; ++i) - putc(' ', stderr); + // We write a line's worth of whitespace to the terminal. This way, we ensure that + // the prompt ends up on a new line even if there is dangling output on the current line. + size_t fill_count = ws.ws_col - eol_mark_length; + auto fill_buffer = String::repeated(' ', fill_count); + fwrite(fill_buffer.characters(), 1, fill_count, stderr); putc('\r', stderr); } |