6824625.patch revision 683
70N/A--- sys.h Sat Nov 4 05:58:45 2006
70N/A+++ sys.h Fri Apr 3 09:29:56 2009
70N/A@@ -28,6 +28,7 @@
70N/A int copyTermios(int sfd, int dfd);
371N/A int saveTermios(void);
70N/A int restoreTermios(void);
70N/A+int restoreTermios_1(int fd, int opt);
70N/A int setRawTermios(void);
70N/A char *my_basename(char *path);
70N/A int allocatePty(int *pty_return, char **line_return);
70N/A--- sys.c Tue Jan 29 12:01:42 2008
70N/A+++ sys.c Fri Apr 3 09:30:22 2009
70N/A@@ -21,6 +21,7 @@
70N/A */
70N/A /* $XFree86: xc/programs/luit/sys.c,v 1.9 2003/08/17 20:39:58 dawes Exp $ */
70N/A
70N/A+#include <X11/Xosdefs.h>
70N/A #include <stdlib.h>
70N/A #include <string.h>
70N/A #include <stdio.h>
70N/A@@ -249,6 +250,14 @@
70N/A return tcsetattr(0, TCSAFLUSH, &saved_tio);
70N/A }
70N/A
70N/A+int
70N/A+restoreTermios_1(int fd, int opt)
70N/A+{
70N/A+ if(!saved_tio_valid)
70N/A+ return -1;
70N/A+ return tcsetattr(fd, opt, &saved_tio);
70N/A+}
70N/A+
493N/A int
70N/A setRawTermios(void)
70N/A {
70N/A--- luit.c Tue Jan 29 12:01:42 2008
493N/A+++ luit.c Fri Apr 3 09:33:17 2009
70N/A@@ -22,6 +22,7 @@
70N/A /* $XFree86: xc/programs/luit/luit.c,v 1.9 2002/10/17 01:06:09 dawes Exp $ */
493N/A
70N/A #include <stdio.h>
70N/A+#include <X11/Xosdefs.h>
70N/A #include <stdlib.h>
70N/A #include <string.h>
70N/A #include <locale.h>
70N/A@@ -33,6 +34,7 @@
70N/A #include <stdarg.h>
70N/A #include <sys/ioctl.h>
70N/A #include <signal.h>
70N/A+#include <termios.h>
493N/A
70N/A #ifdef SVR4
70N/A #include <stropts.h>
493N/A@@ -473,9 +475,11 @@
70N/A #endif
70N/A installHandler(SIGCHLD, sigchldHandler);
70N/A
70N/A+#ifndef sun
70N/A rc = copyTermios(0, pty);
if(rc < 0)
FatalError("Couldn't copy terminal settings\n");
+#endif
rc = setRawTermios();
if(rc < 0)
@@ -536,7 +540,11 @@
kill(getppid(), SIGABRT);
exit(1);
}
-
+
+#ifdef sun
+ restoreTermios_1(tty, TCSAFLUSH);
+#endif
+
if(tty != 0)
dup2(tty, 0);
if(tty != 1)