Split luit out of xorg-x11; no change to the content OBS-URL: https://build.opensuse.org/request/show/113471 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/luit?expand=0&rev=1
53 lines
1.3 KiB
Diff
53 lines
1.3 KiB
Diff
From 6b1da100f2984701f181f5d2635ffcff06db9be1 Mon Sep 17 00:00:00 2001
|
|
From: Mike Fabian <mike.fabian@gmx.de>
|
|
Date: Tue, 7 Jun 2011 13:42:00 +0200
|
|
Subject: [PATCH] Set up terminal before fork.
|
|
Patch-mainline: To be submitted.
|
|
|
|
After the fork it is undefined wether parent or child runs
|
|
first. So there can be a race: if the child runs before the
|
|
terminal of the parent is set up correctly luit may hang.
|
|
This patch sets up the terminal before forking and undoes
|
|
the settings in the child.
|
|
|
|
Signed-off-by: Egbert Eich <eich@freedesktop.org>
|
|
---
|
|
luit.c | 7 ++++++-
|
|
1 files changed, 6 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/luit.c b/luit.c
|
|
index 6bd8775..c2a011c 100644
|
|
--- a/luit.c
|
|
+++ b/luit.c
|
|
@@ -577,6 +577,8 @@ condom(int argc, char **argv)
|
|
IGNORE_RC(pipe(c2p_waitpipe));
|
|
}
|
|
|
|
+ setup_io(pty);
|
|
+
|
|
pid = fork();
|
|
if (pid < 0) {
|
|
perror("Couldn't fork");
|
|
@@ -584,6 +586,10 @@ condom(int argc, char **argv)
|
|
}
|
|
|
|
if (pid == 0) {
|
|
+#ifdef SIGWINCH
|
|
+ installHandler(SIGWINCH, SIG_DFL);
|
|
+#endif
|
|
+ installHandler(SIGCHLD, SIG_DFL);
|
|
close(pty);
|
|
if (pipe_option) {
|
|
close_waitpipe(1);
|
|
@@ -661,7 +667,6 @@ parent(int pid GCC_UNUSED, int pty)
|
|
if (verbose) {
|
|
reportIso2022("Output", outputState);
|
|
}
|
|
- setup_io(pty);
|
|
|
|
if (pipe_option) {
|
|
write_waitpipe(p2c_waitpipe);
|
|
--
|
|
1.7.3.4
|
|
|