From 6ed644fbf4869a7e042826900eff531cf6660cfb Mon Sep 17 00:00:00 2001
From: Karel Zak <kzak@redhat.com>
Date: Wed, 16 Nov 2022 09:19:18 +0100
Subject: [PATCH] script: fix use of utempter

libutempter uses SIGCHLD, but script(1) pty implementation completely
control all signals by signalfd and utempter does not work.

The solution is to setup signalfd later (after libutempter use).

Fixes: https://github.com/util-linux/util-linux/issues/1904
Signed-off-by: Karel Zak <kzak@redhat.com>
---
 term-utils/script.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/term-utils/script.c b/term-utils/script.c
index c918ecd6e..516a6cf93 100644
--- a/term-utils/script.c
+++ b/term-utils/script.c
@@ -947,13 +947,16 @@ int main(int argc, char **argv)
 		printf(_(".\n"));
 	}
 
-#ifdef HAVE_LIBUTEMPTER
-	utempter_add_record(ul_pty_get_childfd(ctl.pty), NULL);
-#endif
 
 	if (ul_pty_setup(ctl.pty))
 		err(EXIT_FAILURE, _("failed to create pseudo-terminal"));
 
+#ifdef HAVE_LIBUTEMPTER
+	utempter_add_record(ul_pty_get_childfd(ctl.pty), NULL);
+#endif
+
+	if (ul_pty_signals_setup(ctl.pty))
+		err(EXIT_FAILURE, _("failed to initialize signals handler"));
 	fflush(stdout);
 
 	/*
-- 
2.27.0

