diff mbox series

[meta-oe,v2] pv: Show progress bar even if no terminal is set as in 1.6.6

Message ID 20230713074811.97041-1-michael.weiss@aisec.fraunhofer.de
State Under Review
Headers show
Series [meta-oe,v2] pv: Show progress bar even if no terminal is set as in 1.6.6 | expand

Commit Message

Michael Weiß July 13, 2023, 7:48 a.m. UTC
The currently used version 1.6.20 of pv does not show the progress
bar if no controlling terminal is set. Added a patch which restores
previous behavior of pv as in version 1.6.6.

Tested with pv in the busybox initscript of GyroidOS which is
running on /dev/console (which has no controlling tty). With this
fix, we get the progress bar back on /dev/console as before.

This was also submitted upstream but dangling since several Months:
	https://github.com/a-j-wood/pv/pull/64

Signed-off-by: Michael Weiß <michael.weiss@aisec.fraunhofer.de>
---
 ...e-error-of-tcgetpgrp-in-pv_in_foregr.patch | 38 +++++++++++++++++++
 meta-oe/recipes-support/pv/pv_1.6.20.bb       |  1 +
 2 files changed, 39 insertions(+)
 create mode 100644 meta-oe/recipes-support/pv/pv/0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch
diff mbox series

Patch

diff --git a/meta-oe/recipes-support/pv/pv/0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch b/meta-oe/recipes-support/pv/pv/0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch
new file mode 100644
index 000000000..3c364dcc4
--- /dev/null
+++ b/meta-oe/recipes-support/pv/pv/0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch
@@ -0,0 +1,38 @@ 
+From c5cd932fb08e7ce90cdbf9ae6c5cc7e65ac0738e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michael=20Wei=C3=9F?= <michael.weiss@aisec.fraunhofer.de>
+Date: Tue, 9 May 2023 20:00:26 +0200
+Subject: [PATCH] pv/display: handle error of tcgetpgrp() in pv_in_foreground()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Show pv progress bar even if no terminal is set, e.g., in a busybox
+init script. The description of pv_in_forground() states it will
+return true "if we aren't outputting to a terminal". However, this
+is not the case since tcgetpgrg() will return an error and set ERRNO
+to ENOTTY if the output fd is not an tty. We now handle this error
+correctly and pv_in_foreground() returns also true in that case.
+
+Signed-off-by: Michael Weiß <michael.weiss@aisec.fraunhofer.de>
+---
+ src/pv/display.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/pv/display.c b/src/pv/display.c
+index aff643b..8d1f4c9 100644
+--- a/src/pv/display.c
++++ b/src/pv/display.c
+@@ -48,6 +48,10 @@ bool pv_in_foreground(void)
+ 
+ 	our_process_group = getpgrp();
+ 	tty_process_group = tcgetpgrp(STDERR_FILENO);
++
++	if (tty_process_group == -1 && errno == ENOTTY)
++		return true;
++
+ 	if (our_process_group == tty_process_group)
+ 		return true;
+ 
+-- 
+2.30.2
+
diff --git a/meta-oe/recipes-support/pv/pv_1.6.20.bb b/meta-oe/recipes-support/pv/pv_1.6.20.bb
index 867a621d1..6d449a945 100644
--- a/meta-oe/recipes-support/pv/pv_1.6.20.bb
+++ b/meta-oe/recipes-support/pv/pv_1.6.20.bb
@@ -5,6 +5,7 @@  LICENSE = "Artistic-2.0"
 LIC_FILES_CHKSUM = "file://doc/COPYING;md5=9c50db2589ee3ef10a9b7b2e50ce1d02"
 
 SRC_URI = "https://www.ivarch.com/programs/sources/${BP}.tar.bz2 \
+           file://0001-pv-display-handle-error-of-tcgetpgrp-in-pv_in_foregr.patch \
            file://run-ptest \
 "
 SRC_URI[sha256sum] = "e831951eff0718fba9b1ef286128773b9d0e723e1fbfae88d5a3188814fdc603"