patch to sshpty.c
Tim Rice
tim at multitalents.net
Fri May 10 05:47:51 EST 2002
Sorry, forgot to fix the subject.
On Thu, 9 May 2002, Tim Rice wrote:
Anyone have a problem with this patch?
It fixes stty problems on SCO with broken (most PC) clients.
It only effects systems that use BSD-style ptys.
Ie. running "egrep "PTY|DEV" config.h" produces
/* #undef HAVE_DEV_PTMX */
/* #undef HAVE_DEV_PTS_AND_PTC */
/* #undef HAVE_OPENPTY */
/* #undef HAVE_PTY_H */
/* #undef HAVE__GETPTY */
----------< cut >----------
--- sshpty.c.old Tue Jan 15 17:06:39 2002
+++ sshpty.c Thu May 9 12:19:06 2002
@@ -199,6 +199,7 @@
const char *ptyminors = "0123456789abcdef";
int num_minors = strlen(ptyminors);
int num_ptys = strlen(ptymajors) * num_minors;
+ struct termios tio;
for (i = 0; i < num_ptys; i++) {
snprintf(buf, sizeof buf, "/dev/pty%c%c", ptymajors[i / num_minors],
@@ -223,6 +224,19 @@
close(*ptyfd);
return 0;
}
+ /* set tty modes to a sane state for broken clients */
+ if (tcgetattr(*ptyfd, &tio) < 0)
+ log("Getting tty modes for pty failed: %.100s", strerror(errno));
+ else {
+ tio.c_lflag |= (ECHO | ISIG | ICANON);
+ tio.c_oflag |= (OPOST | ONLCR);
+ tio.c_iflag |= ICRNL;
+
+ /* Set the new modes for the terminal. */
+ if (tcsetattr(*ptyfd, TCSANOW, &tio) < 0)
+ log("Setting tty modes for pty failed: %.100s", strerror(errno));
+ }
+
return 1;
}
return 0;
----------< end cut >----------
--
Tim Rice Multitalents (707) 887-1469
tim at multitalents.net
More information about the openssh-unix-dev
mailing list