+ /* For external protocols, put the pty in no-echo mode */
+ if (fc == 1) {
+ debug(F100,"getptyslave() setting rawmode","",0);
+ /* iflags */
+ termbuf.c_iflag &= ~(PARMRK|ISTRIP|BRKINT|INLCR|IGNCR|ICRNL);
+ termbuf.c_iflag &= ~(INPCK|IGNPAR|IMAXBEL|IXANY|IXON|IXOFF);
+ termbuf.c_iflag |= IGNBRK;
+#ifdef IUCLC
+ termbuf.c_iflag &= ~IUCLC;
+#endif /* IUCLC */
+
+ /* oflags */
+ termbuf.c_oflag &= ~OPOST;
+#ifdef OXTABS
+ termbuf.c_oflag &= ~OXTABS;
+#endif /* OXTABS */
+#ifdef ONOCR
+ termbuf.c_oflag &= ~ONOCR;
+#endif /* ONOCR */
+#ifdef ONLRET
+ termbuf.c_oflag &= ~ONLRET;
+#endif /* ONLRET */
+#ifdef ONLCR
+ termbuf.c_oflag &= ~ONLCR;
+#endif /* ONLCR */
+
+ /* lflags */
+ termbuf.c_lflag &= ~ECHO;
+#ifdef ECHOE
+ termbuf.c_lflag &= ~ECHOE;
+#endif /* ECHOE */
+#ifdef ECHONL
+ termbuf.c_lflag &= ~ECHONL;
+#endif /* ECHONL */
+#ifdef ECHOPRT
+ termbuf.c_lflag &= ~ECHOPRT;
+#endif /* ECHOPRT */
+#ifdef ECHOKE
+ termbuf.c_lflag &= ~ECHOKE;
+#endif /* ECHOKE */
+#ifdef ECHOCTL
+ termbuf.c_lflag &= ~ECHOCTL;
+#endif /* ECHOCTL */
+#ifdef ALTWERASE
+ termbuf.c_lflag &= ~ALTWERASE;
+#endif /* ALTWERASE */
+#ifdef EXTPROC
+ termbuf.c_lflag &= ~EXTPROC;
+#endif /* EXTPROC */
+ termbuf.c_lflag &= ~(ICANON|ISIG|IEXTEN|TOSTOP|FLUSHO|PENDIN);
+
+#ifdef NOKERNINFO
+ termbuf.c_lflag |= NOKERNINFO;
+#endif /* NOKERNINFO */
+ /* termbuf.c_lflag |= NOFLSH; */
+ termbuf.c_lflag &= ~NOFLSH;
+
+ /* cflags */
+ termbuf.c_cflag &= ~(CSIZE|PARENB|PARODD);
+ termbuf.c_cflag |= CS8|CREAD;
+#ifdef VMIN
+ termbuf.c_cc[VMIN] = 1;
+#endif /* VMIN */
+ } else { /* Regular interactive use */
+ debug(F100,"getptyslave() setting cooked mode","",0);
+
+ /* Settings for sgtty based systems */