6824625.patch revision 1068
diff -urp -x '*~' -x '*.orig' luit.c luit.c
--- luit.c 2010-07-01 10:55:09.000000000 -0700
+++ luit.c 2011-01-25 08:15:02.448685019 -0800
@@ -25,6 +25,7 @@ THE SOFTWARE.
#endif
#include <stdio.h>
+#include <X11/Xosdefs.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
@@ -36,6 +37,7 @@ THE SOFTWARE.
#include <stdarg.h>
#include <sys/ioctl.h>
#include <signal.h>
+#include <termios.h>
#include "luit.h"
#include "sys.h"
@@ -483,9 +485,11 @@ setup_io(int pty)
#endif
installHandler(SIGCHLD, sigchldHandler);
+#ifndef sun
rc = copyTermios(0, pty);
if (rc < 0)
FatalError("Couldn't copy terminal settings\n");
+#endif
rc = setRawTermios();
if (rc < 0)
@@ -627,6 +631,10 @@ child(char *line, char *path, char *cons
write_waitpipe(c2p_waitpipe);
}
+#ifdef sun
+ restoreTermios_1(tty, TCSAFLUSH);
+#endif
+
if (tty != 0)
dup2(tty, 0);
if (tty != 1)
diff -urp -x '*~' -x '*.orig' sys.c sys.c
--- sys.c 2010-07-01 10:55:09.000000000 -0700
+++ sys.c 2011-01-25 08:15:02.448290768 -0800
@@ -24,6 +24,7 @@ THE SOFTWARE.
# include "config.h"
#endif
+#include <X11/Xosdefs.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
@@ -246,6 +247,14 @@ restoreTermios(void)
}
int
+restoreTermios_1(int fd, int opt)
+{
+ if(!saved_tio_valid)
+ return -1;
+ return tcsetattr(fd, opt, &saved_tio);
+}
+
+int
setRawTermios(void)
{
struct termios tio;
diff -urp -x '*~' -x '*.orig' sys.h sys.h
--- sys.h 2010-07-01 10:55:09.000000000 -0700
+++ sys.h 2011-01-25 08:15:02.447938807 -0800
@@ -38,6 +38,7 @@ int installHandler(int signum, void (*ha
int copyTermios(int sfd, int dfd);
int saveTermios(void);
int restoreTermios(void);
+int restoreTermios_1(int fd, int opt);
int setRawTermios(void);
char *my_basename(char *path);
int allocatePty(int *pty_return, char **line_return);