summaryrefslogtreecommitdiff
path: root/Userland/Shell
diff options
context:
space:
mode:
Diffstat (limited to 'Userland/Shell')
-rw-r--r--Userland/Shell/Shell.cpp7
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);
}