diff options
Diffstat (limited to 'src/appl/telnet/kern.diff')
-rw-r--r-- | src/appl/telnet/kern.diff | 308 |
1 files changed, 0 insertions, 308 deletions
diff --git a/src/appl/telnet/kern.diff b/src/appl/telnet/kern.diff deleted file mode 100644 index 3c1153b..0000000 --- a/src/appl/telnet/kern.diff +++ /dev/null @@ -1,308 +0,0 @@ -*** h/ioctl.h.old Tue May 23 14:50:42 1989 ---- h/ioctl.h Tue Aug 29 18:24:49 1989 -*************** -*** 214,219 **** ---- 214,220 ---- - #define TIOCPKT_START 0x08 /* start output */ - #define TIOCPKT_NOSTOP 0x10 /* no more ^S, ^Q */ - #define TIOCPKT_DOSTOP 0x20 /* now do ^S ^Q */ -+ #define TIOCPKT_IOCTL 0x40 /* state change of pty driver */ - #define TIOCSTOP _IO('t', 111) /* stop output, like ^S */ - #define TIOCSTART _IO('t', 110) /* start output, like ^Q */ - #define TIOCMSET _IOW('t', 109, int) /* set all modem bits */ -*************** -*** 226,231 **** ---- 227,235 ---- - #define TIOCUCNTL _IOW('t', 102, int) /* pty: set/clr usr cntl mode */ - #define UIOCCMD(n) _IO('u', n) /* usr cntl op "n" */ - #define TIOCCONS _IO('t', 98) /* become virtual console */ -+ #define TIOCEXT _IOW('t', 97, int) /* pty: external processing */ -+ #define TIOCGSTATE _IOR('t', 96, int) /* pty: get internal state */ -+ #define TIOCSIG _IO('t', 95) /* pty: generate signal */ - - #define OTTYDISC 0 /* old, v7 std tty driver */ - #define NETLDISC 1 /* line discip for berk net */ -*** h/tty.h.old Tue May 23 14:51:01 1989 ---- h/tty.h Wed Aug 23 11:30:40 1989 -*************** -*** 70,75 **** ---- 70,76 ---- - struct ttychars t_chars; /* tty */ - struct winsize t_winsize; /* window size */ - /* be careful of tchars & co. */ -+ #ifndef NO_T_CHARS_DEFINES - #define t_erase t_chars.tc_erase - #define t_kill t_chars.tc_kill - #define t_intrc t_chars.tc_intrc -*************** -*** 84,89 **** ---- 85,91 ---- - #define t_flushc t_chars.tc_flushc - #define t_werasc t_chars.tc_werasc - #define t_lnextc t_chars.tc_lnextc -+ #endif - }; - - #define TTIPRI 28 -*************** -*** 124,129 **** ---- 126,132 ---- - #define TS_LNCH 0x080000 /* next character is literal */ - #define TS_TYPEN 0x100000 /* retyping suspended input (PENDIN) */ - #define TS_CNTTB 0x200000 /* counting tab width; leave FLUSHO alone */ -+ #define TS_EXTPROC 0x400000 /* external processing of data */ - - #define TS_LOCAL (TS_BKSL|TS_QUOT|TS_ERASE|TS_LNCH|TS_TYPEN|TS_CNTTB) - -*** sys/tty.c.old Tue May 23 14:52:28 1989 ---- sys/tty.c Thu Aug 24 09:31:49 1989 -*************** -*** 275,280 **** ---- 275,285 ---- - */ - switch (com) { - -+ /* get internal state - needed for TS_EXTPROC bit */ -+ case TIOCGSTATE: -+ *(int *)data = tp->t_state; -+ break; -+ - /* get discipline number */ - case TIOCGETD: - *(int *)data = tp->t_line; -*************** -*** 752,757 **** ---- 757,763 ---- - */ - if ((tp->t_state&TS_TYPEN) == 0 && (t_flags&PASS8) == 0) - c &= 0177; -+ if ((tp->t_state&TS_EXTPROC) == 0) { - /* - * Check for literal nexting very first - */ -*************** -*** 834,839 **** ---- 840,846 ---- - else if (c == '\\') - tp->t_state |= TS_BKSL; - } -+ } - - /* - * Cbreak mode, don't process line editing -*************** -*** 851,856 **** ---- 858,864 ---- - goto endcase; - } - -+ if ((tp->t_state&TS_EXTPROC) == 0) { - /* - * From here on down cooked mode character - * processing takes place. -*************** -*** 911,916 **** ---- 919,925 ---- - goto endcase; - } - } -+ } - - /* - * Check for input buffer overflow -*************** -*** 933,938 **** ---- 942,948 ---- - } else if (tp->t_rocount++ == 0) - tp->t_rocol = tp->t_col; - tp->t_state &= ~TS_QUOT; -+ if ((tp->t_state&TS_EXTPROC) == 0) { - if (c == '\\') - tp->t_state |= TS_QUOT; - if (tp->t_state&TS_ERASE) { -*************** -*** 948,953 **** ---- 958,964 ---- - i--; - } - } -+ } - } - endcase: - /* -*************** -*** 998,1005 **** - return (-1); - /* - * Turn tabs to spaces as required - */ -! if (c == '\t' && (tp->t_flags&TBDELAY) == XTABS) { - register int s; - - c = 8 - (tp->t_col&7); ---- 1009,1022 ---- - return (-1); - /* - * Turn tabs to spaces as required -+ * -+ * Special case if we have external processing, we don't -+ * do the tab expansion because we'll probably get it -+ * wrong. If tab expansion needs to be done, let it -+ * happen externally. - */ -! if ((tp->t_state&TS_EXTPROC) == 0 && -! c == '\t' && (tp->t_flags&TBDELAY) == XTABS) { - register int s; - - c = 8 - (tp->t_col&7); -*************** -*** 1497,1503 **** - int s; - char *nextc(); - -! if ((tp->t_flags&ECHO) == 0) - return; - tp->t_flags &= ~FLUSHO; - c &= 0377; ---- 1514,1520 ---- - int s; - char *nextc(); - -! if ((tp->t_flags&ECHO) == 0 || (tp->t_state&TS_EXTPROC)) - return; - tp->t_flags &= ~FLUSHO; - c &= 0377; -*************** -*** 1618,1624 **** - - if ((tp->t_state&TS_CNTTB) == 0) - tp->t_flags &= ~FLUSHO; -! if ((tp->t_flags&ECHO) == 0) - return; - c &= 0377; - if (tp->t_flags&RAW) { ---- 1635,1641 ---- - - if ((tp->t_state&TS_CNTTB) == 0) - tp->t_flags &= ~FLUSHO; -! if ((tp->t_flags&ECHO) == 0 || (tp->t_state&TS_EXTPROC)) - return; - c &= 0377; - if (tp->t_flags&RAW) { -*** sys/tty_pty.c.old Tue May 23 14:52:43 1989 ---- sys/tty_pty.c Tue Aug 29 18:48:36 1989 -*************** -*** 208,213 **** ---- 208,214 ---- - return (EIO); - tp->t_oproc = ptsstart; - (void)(*linesw[tp->t_line].l_modem)(tp, 1); -+ tp->t_state &= ~TS_EXTPROC; - pti = &pt_ioctl[minor(dev)]; - pti->pt_flags = 0; - pti->pt_send = 0; -*************** -*** 247,252 **** ---- 248,275 ---- - error = ureadc((int)pti->pt_send, uio); - if (error) - return (error); -+ if (pti->pt_send & TIOCPKT_IOCTL) { -+ struct xx { -+ struct sgttyb a; -+ struct tchars b; -+ struct ltchars c; -+ int d; -+ int e; -+ } cb; -+ cb.a.sg_ispeed = tp->t_ispeed; -+ cb.a.sg_ospeed = tp->t_ospeed; -+ cb.a.sg_erase = tp->t_erase; -+ cb.a.sg_kill = tp->t_kill; -+ cb.a.sg_flags = tp->t_flags; -+ bcopy((caddr_t)&tp->t_intrc, -+ (caddr_t)&cb.b, sizeof(cb.b)); -+ bcopy((caddr_t)&tp->t_suspc, -+ (caddr_t)&cb.c, sizeof(cb.c)); -+ cb.d = tp->t_state; -+ cb.e = ((unsigned)tp->t_flags)>>16; -+ cc = MIN(uio->uio_resid, sizeof(cb)); -+ uiomove(&cb, cc, UIO_READ, uio); -+ } - pti->pt_send = 0; - return (0); - } -*************** -*** 483,488 **** ---- 506,533 ---- - * IF CONTROLLER STTY THEN MUST FLUSH TO PREVENT A HANG. - * ttywflush(tp) will hang if there are characters in the outq. - */ -+ if (cmd == TIOCEXT) { -+ /* -+ * When the TS_EXTPROC bit is being toggled, we need -+ * to send an TIOCPKT_IOCTL if the packet driver -+ * is turned on. -+ */ -+ if (*(int *)data) { -+ if (pti->pt_flags & PF_PKT) { -+ pti->pt_send |= TIOCPKT_IOCTL; -+ ptcwakeup(tp); -+ } -+ tp->t_state |= TS_EXTPROC; -+ } else { -+ if ((tp->t_state & TS_EXTPROC) && -+ (pti->pt_flags & PF_PKT)) { -+ pti->pt_send |= TIOCPKT_IOCTL; -+ ptcwakeup(tp); -+ } -+ tp->t_state &= ~TS_EXTPROC; -+ } -+ return (0); -+ } else - if (cdevsw[major(dev)].d_open == ptcopen) - switch (cmd) { - -*************** -*** 525,530 **** ---- 570,583 ---- - while (getc(&tp->t_outq) >= 0) - ; - break; -+ -+ case TIOCSIG: -+ if (*(unsigned int *)data >= NSIG) -+ return(EINVAL); -+ if ((tp->t_flags&NOFLSH) == 0) -+ ttyflush(tp, FREAD|FWRITE); -+ gsignal(tp->t_pgrp, *(unsigned int *)data); -+ return(0); - } - error = ttioctl(tp, cmd, data, flag); - /* -*************** -*** 549,554 **** ---- 602,624 ---- - return (0); - } - error = ENOTTY; -+ } -+ /* -+ * If external processing and packet mode send ioctl packet. -+ */ -+ if ((tp->t_state & TS_EXTPROC) && (pti->pt_flags & PF_PKT)) { -+ switch(cmd) { -+ case TIOCSETP: -+ case TIOCSETN: -+ case TIOCSETC: -+ case TIOCSLTC: -+ case TIOCLBIS: -+ case TIOCLBIC: -+ case TIOCLSET: -+ pti->pt_send |= TIOCPKT_IOCTL; -+ default: -+ break; -+ } - } - stop = (tp->t_flags & RAW) == 0 && - tp->t_stopc == CTRL('s') && tp->t_startc == CTRL('q'); |