Author: dj Date: 2006-03-02 22:58:38 -0700 (Thu, 02 Mar 2006) New Revision: 1424
Added: trunk/luit/ trunk/luit/luit_1.0.1-race-1.patch Log: added luit race patch (for Xorg-7) Added: trunk/luit/luit_1.0.1-race-1.patch =================================================================== --- trunk/luit/luit_1.0.1-race-1.patch (rev 0) +++ trunk/luit/luit_1.0.1-race-1.patch 2006-03-03 05:58:38 UTC (rev 1424) @@ -0,0 +1,88 @@ +Submitted By: DJ Lucas <dj_AT_linuxfromscratch_DOT_org> +Date: 2006-03-03 +Initial Package Version: 6.8.2 +Origin: https://bugs.freedesktop.org/show_bug.cgi?id=1400 +Upstream Status: unclear, see below +Description: prevents the race condition and deadlock in luit. Should +apply both to XOrg and XFree86. Rediffed from xorg_6.8.2-luit_race-1.patch + +diff -Naur luit-X11R7.0-1.0.1-old/luit.c luit-X11R7.0-1.0.1/luit.c +--- luit-X11R7.0-1.0.1-old/luit.c 2004-04-23 14:54:35.000000000 -0500 ++++ luit-X11R7.0-1.0.1/luit.c 2006-02-28 20:06:14.000000000 -0600 +@@ -45,6 +45,8 @@ + #include "charset.h" + #include "iso2022.h" + ++static int p2c_waitpipe[2]; ++static int c2p_waitpipe[2]; + static Iso2022Ptr inputState = NULL, outputState = NULL; + + static char *child_argv0 = NULL; +@@ -462,6 +464,8 @@ + exit(1); + } + ++ pipe(p2c_waitpipe); ++ pipe(c2p_waitpipe); + pid = fork(); + if(pid < 0) { + perror("Couldn't fork"); +@@ -470,8 +474,12 @@ + + if(pid == 0) { + close(pty); ++ close(p2c_waitpipe[1]); ++ close(c2p_waitpipe[0]); + child(line, path, child_argv); + } else { ++ close(p2c_waitpipe[0]); ++ close(c2p_waitpipe[1]); + free(child_argv); + free(path); + free(line); +@@ -486,6 +494,7 @@ + { + int tty; + int pgrp; ++ char tmp[10]; + + close(0); + close(1); +@@ -501,6 +510,7 @@ + kill(getppid(), SIGABRT); + exit(1); + } ++ write(c2p_waitpipe[1],"1",1); + + if(tty != 0) + dup2(tty, 0); +@@ -512,6 +522,9 @@ + if(tty > 2) + close(tty); + ++ read(p2c_waitpipe[0],tmp,1); ++ close(c2p_waitpipe[1]); ++ close(p2c_waitpipe[0]); + execvp(path, argv); + perror("Couldn't exec"); + exit(1); +@@ -535,7 +548,9 @@ + int i; + int val; + int rc; ++ char tmp[10]; + ++ read(c2p_waitpipe[0],tmp,1); + if(verbose) { + reportIso2022(outputState); + } +@@ -564,6 +579,9 @@ + + setWindowSize(0, pty); + ++ write(p2c_waitpipe[1],"1",1); ++ close(c2p_waitpipe[0]); ++ close(p2c_waitpipe[1]); + for(;;) { + rc = waitForInput(0, pty); + -- http://linuxfromscratch.org/mailman/listinfo/patches FAQ: http://www.linuxfromscratch.org/faq/ Unsubscribe: See the above information page
