mirror of
https://github.com/systemd/systemd.git
synced 2025-03-19 22:50:17 +03:00
terminal-util: don't issue "ESC c" sequence on reset, but only when erasing the screen
ESC c is a (vaguely defined) "reset to initial state" ANSI sequence. Many terminals clear the screen in this case, but that's a bit drastic I think for most resets. ESC c was added to the reset logic in 00bc83a275fa3ca8d90579fe9597d8b651d47332 (i.e. very recently), and I don't think the effect was clear at that time. Let's keep the ESC c in place however when we actually want to clear the screen. Hence move it from reset_terminal_fd() into vt_disallocate(). Fixes: #33689 (cherry picked from commit 841eb9c186816acfef8f3f724647a7f0649f214d)
This commit is contained in:
parent
5e4464bb64
commit
168b788104
@ -584,8 +584,9 @@ int vt_disallocate(const char *name) {
|
||||
(void) loop_write(fd2,
|
||||
"\033[r" /* clear scrolling region */
|
||||
"\033[H" /* move home */
|
||||
"\033[3J", /* clear screen including scrollback, requires Linux 2.6.40 */
|
||||
10);
|
||||
"\033[3J" /* clear screen including scrollback, requires Linux 2.6.40 */
|
||||
"\033c", /* reset to initial state */
|
||||
SIZE_MAX);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1558,7 +1559,6 @@ int terminal_reset_ansi_seq(int fd) {
|
||||
return log_debug_errno(r, "Failed to set terminal to non-blocking mode: %m");
|
||||
|
||||
k = loop_write_full(fd,
|
||||
"\033c" /* reset to initial state */
|
||||
"\033[!p" /* soft terminal reset */
|
||||
"\033]104\007" /* reset colors */
|
||||
"\033[?7h", /* enable line-wrapping */
|
||||
|
Loading…
x
Reference in New Issue
Block a user