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

