Package: apt Version: 1.1~exp8 Severity: wishlist Tags: patch Apt's progress reporting uses escape sequences from DOS' ANSI.SYS to save/restore the cursor position. I know of at least one terminal that doesn't recognize those.
The attached patch switches to the DECSC/DECRC[0] escape sequences, which, from a brief canvas of terminfo, are the dominant sequences used. 5 sc=^], 19 sc=\036F}10, 1 sc=^B, 1 sc=~^E, 446 sc=\E7, 8 sc=\Ej, 18 sc=\E[s, 3 sc=\E[%y, 5 rc=^\, 19 rc=\036F}11, 1 rc=^C, 1 rc=\E7, 556 rc=\E8, 8 rc=\Ek, 4 rc=\E[r, 18 rc=\E[u, 6 rc=\E[%z, [0]: http://invisible-island.net/xterm/ctlseqs/ctlseqs.html -- Package-specific info: -- (no /etc/apt/preferences present) -- -- (/etc/apt/sources.list present, but not submitted) -- -- System Information: Debian Release: 8.0 APT prefers unstable APT policy: (500, 'unstable'), (1, 'experimental') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Init: systemd (via /run/systemd/system) Versions of packages apt depends on: ii adduser 3.113+nmu3 ii debian-archive-keyring 2014.3 ii gnupg 1.4.18-6 ii gnupg2 2.0.26-3 ii libapt-pkg4.15 1.1~exp8 ii libc6 2.19-13 ii libgcc1 1:4.9.2-5 ii libstdc++6 4.9.2-5 apt recommends no packages. Versions of packages apt suggests: pn apt-doc <none> ii aptitude 0.6.11-1+b1 ii dpkg-dev 1.17.22 ii python-apt 0.9.3.11 -- no debconf information
>From 0aedede7fc2f5739891e7ba68b6f9ab8f03c4635 Mon Sep 17 00:00:00 2001 From: James McCoy <james...@debian.org> Date: Sun, 7 Dec 2014 22:15:36 -0500 Subject: [PATCH] Use terminfo's typical save_cursor/restore_cursor sequences Not all terminals understand DOS' escape sequences for save/restore cursor, so use the more typical sequences from terminfo. Signed-off-by: James McCoy <james...@debian.org> --- apt-pkg/install-progress.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/apt-pkg/install-progress.cc b/apt-pkg/install-progress.cc index 5ea8bf4..736b9e2 100644 --- a/apt-pkg/install-progress.cc +++ b/apt-pkg/install-progress.cc @@ -285,13 +285,13 @@ void PackageManagerFancy::SetupTerminalScrollArea(int nr_rows) std::cout << "\n"; // save cursor - std::cout << "\033[s"; + std::cout << "\0337"; // set scroll region (this will place the cursor in the top left) std::cout << "\033[0;" << nr_rows - 1 << "r"; // restore cursor but ensure its inside the scrolling area - std::cout << "\033[u"; + std::cout << "\0338"; static const char *move_cursor_up = "\033[1A"; std::cout << move_cursor_up; @@ -373,8 +373,8 @@ bool PackageManagerFancy::DrawStatusLine() if (unlikely(size.rows < 1 || size.columns < 1)) return false; - static std::string save_cursor = "\033[s"; - static std::string restore_cursor = "\033[u"; + static std::string save_cursor = "\0337"; + static std::string restore_cursor = "\0338"; // green static std::string set_bg_color = DeQuoteString( -- 2.1.3