Subject: 8bit clean tty driver, ethernet card attach info, xterm-color, telnetd window size change, vi stack buffers, getty tty local flags, setjmp prototype and manpage, manpage owner/mode cleanup Index: sys/sys/tty.c sys/pdpif/if_de.c libexec/telnetd ucb/ex usr/include/setjmp.h man/man3/setjmp.3 Description: 1) kernel tty drive is not 8bit clean 2) if_de (deuna/delua) drive does not print 3) termcap does not have xterm-color or xterm-256color 4) telnetd does not implement window size change option 5) vi can use too much stack space 6) getty does not set the local flag word 7) setjmp and longjmp are not prototyped 8) setjmp.3 manpage had a typo and obsolete PDP-11 notes. 9) numerous manpages are installed with incorrect owner and mode Repeat-By: 1) stty pass8 make sure that all other components also are 8-bit clean and then try in the shell: printf "\340\n" and observe ` is output. After building a new kernel the same operation should instead show a lowercase a with an acute accent if the user is using ISO 8850-1, a ? if UTF-8 is being used or something else (but absolutely not a `). 2) Observation. With a UNIBUS ethernet drive configured notice that no infomation is printed when the device is attached. After building a new kernel the output is (as with Qbus drivers) of the form: attaching de0 csr 174510 de0: DELUA addr 08:00:2c:aa:bb:ce 3) Observation: grep xterm-color /etc/termcap 4) from a remote system telnet into the 2.11 system, stty -a and see new tty, speed 38400 baud, 0 rows, 0 columns also the window can be resized and the geometry is not set/changed on the telnetd (2.11) system. 5) There is a bug in vi's SIGWINCH (window size change) processing that was noticed after telnetd was updated to send window size changes. The problem was thought to be caused by stack space exhaustion. 6) For actual lines, not network terminals, the local flag word isn't set. 7) Read /usr/include/setjmp.h ;) Comment clarifying what jmp_buf is added. 8) man setjmp Observe 'setjmp' is spelled as 'setjmps'. The NOTES about the functions being renamed due to a 7 character length limit on symbol names are obsolete. The limitation was removed eons ago. 9) There are Makefiles in the system that use "install" without owner/group/mode options. Fix: 1) sys/sys/tty.c had a lot of code to handle an obscure (and so far not reproducible) case of backspacing over newline and tab chars. With that code gone the tty drive is made 8bit clean. If the special case ever is encountered a control-R to repaint the line is the fix. 2) the if_de.c driver had the lines to print the info present but #ifdef'd on DEBUG. The patch removes those debug statements and adds a single new printf. 3) update a termcap entry 4) Add support for TELOPT_NAWS to telnetd. The telnet clients may send multiple updates as the window is being resized and this could cause a lot of SIGWINCH signals to be sent to processes to update their screens. This can be somewhat reduced by delaying the delivery of each update and coalescing all the ones in the receive buffer into one update with the last size update. 5) SIGWINCH (window size change signal code has been present in vi since version 3.7 of vi was ported from 4BSD. But the window change code was never used because telnetd didn't signal the change. Vi's behaviour was thought to be related to stack usage. I am not sure what a "u370" system was in 1985 or before but there was code in ex_v.c to use a single static buffer for "u370" but to allocate TWO such buffers on the stack on other systems: #ifdef u370 char atube[TUBESIZE+LBSIZE]; #endif oop() { register char *ic; #ifndef u370 char atube[TUBESIZE + LBSIZE]; #endif (same 3 lines immediately above were repeated in vop() References to the u370 were removed and a single static buffer used. Didn't fix the vi problem (mentioned above) as hoped but the changes are retained as cleanup / space savings. 6) Silly bug. Probably overlooked when getty was updated in 2003. Refer to tty(4) in the section "Local mode" for bits that would not be set. 7) lint had a prototype for setjmp/longjmp but setjmp.h did not. Time to add it. 8) I overlooked cleaning up the NOTES when long symbol names were implemented. Remove the incorrect info. 9) For example: install -c -m 444 sail.0 ${DESTDIR}/usr/man/cat6/sail.0 is changed to install -c -o bin -g bin -m 444 sail.0 ${DESTDIR}/usr/man/cat6/sail.0 Credit where credit is due: (1), (2), (6) contributed by bqt@softjar.se (3), (4), (9) contributed by martin@teckelworks.com (5), (7), (8) are from me This and previous updates to 2.11BSD are available at the following locations: ftp://ftp.dfupdate.se/pub/pdp11/2.11BSD https://www.tuhs.org/Archive/Distributions/UCB/2.11BSD/Patches/ ftp://ftp.2bsd.com/2.11BSD http://www.2bsd.com/2.11BSD MAC users will have to use Firefox to access the FTP sites since Apple has removed ftp: URL support. Cut where indicated and save to a file (/tmp/484.patch). Then: cd / patch -p0 < /tmp/484.patch cd /sys/YOURKERNEL make cp unix /unix cp netnix /netnix IF you maintain a GENERIC kernel in /genunix (this can be done any time) cd /sys/GENERIC make cp unix /genunix cd /usr/src/man/man3 make setjmp.0 install -o bin -g bin -m 444 setjmp.0 /usr/man/cat3/setjmp.0 cd /usr/man/cat3 rm -f _longjmp.0 _setjmp.0 longjmp.0 ln setjmp.0 longjmp.0 ln setjmp.0 _longjmp.0 ln setjmp.0 _setjmp.0 cd /usr/src/share/termcap make install -c -m 444 termcap /usr/share/misc/termcap make clean cd /usr/src/libexec/telnetd make install make clean cd /usr/src/ucb/ex make install make clean cd /usr/src/libexec/getty make install make clean cd /usr/src/ucb/tftp make tftp.0 install -o bin -g bin -m 444 tftp.0 /usr/man/cat1 cd /usr/src/games/sail make sail.0 install -o bin -g bin -m 444 sail.0 /usr/man/cat6/sail.0 cd /usr/src/usr.lib/libident make ident.0 install -o bin -g bin -m 444 ident.0 /usr/man/cat3/ident.0 cd /usr/src/usr.lib/libvmf make vmf.0 install -o bin -g bin -m 444 vmf.0 /usr/man/cat3/vmf.0 cd /usr/src/usr.sbin/sysgen make sysgen.0 install -o bin -g bin -m 444 sysgen.0 /usr/man/cat8/sysgen.0 cd /usr/src/libexec/popper make popper.0 install -o bin -g bin -m 444 popper.0 /usr/man/cat8 cd /usr/src/libexec/identd make install -o bin -g bin -m 444 identd.0 /usr/man/cat8/identd.0 install -o bin -g bin -m 444 idecrypt.0 /usr/man/cat8/idecrypt.0 make clean cd /usr/src/usr.sbin/cron make sh putman.sh crontab.1 /usr/man sh putman.sh cron.8 /usr/man sh putman.sh crontab.5 /usr/man make clean After patching you'll have files with "~" appended. If you want to clean up: cd /usr; find . -name '*~' -print will give a list of files to review and remove at your leisure. ---------------------------cut here-------------------- *** ./usr/src/sys/sys/tty.c.old Tue Jan 7 22:14:50 2020 --- ./usr/src/sys/sys/tty.c Thu Mar 13 06:57:20 2025 *************** *** 3,9 **** * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * ! * @(#)tty.c 1.6 (2.11BSD) 2020/1/7 */ #include "param.h" --- 3,9 ---- * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * ! * @(#)tty.c 1.7 (2.11BSD) 2025/3/12 */ #include "param.h" *************** *** 827,860 **** } /* - * Ignore any high bit added during - * previous ttyinput processing. - */ - if ((tp->t_state&TS_TYPEN) == 0 && (t_flags&PASS8) == 0) - c &= 0177; - - /* - * Check for literal nexting very first. This is the _ONLY_ place - * left which ORs in 0200. Handling literal nexting this way is - * what keeps the tty subsystem from being 8 bit clean. The fix is - * horrendous though and is put off for now. And to think that ALL - * of this is made necessary by ttyrubout() - it's the only place that - * actually _checks_ the 0200 bit and only for newline and tab chars - * at that! - * - * If we had 9 bit bytes life would be a lot simpler ;) - * - * The basic idea is to flag the character as "special" and also - * modify it so that the character does not match any of the special - * editing or control characters. We could just as simply jump directly - * to the test for 'cbreak' below. - */ - if (tp->t_state&TS_LNCH) { - c |= 0200; - tp->t_state &= ~TS_LNCH; - } - - /* * Scan for special characters. This code * is really just a big case statement with * non-constant cases. The bottom of the --- 827,832 ---- *************** *** 1062,1077 **** return(-1); } ! c &= 0177; ! #ifdef whybother /* - * Ignore EOT in normal mode to avoid - * hanging up certain terminals. - */ - if (c == CEOT && (tp->t_flags&CBREAK) == 0) - return(-1); - #endif - /* * Turn tabs to spaces as required */ if (c == '\t' && (tp->t_flags&XTABS)) { --- 1034,1042 ---- return(-1); } ! if ((tp->t_flags & PASS8) == 0) c &= 0177; ! /* * Turn tabs to spaces as required */ if (c == '\t' && (tp->t_flags&XTABS)) { *************** *** 1107,1113 **** return (c); col = tp->t_col; ! switch (partab[c]&077) { case ORDINARY: col++; --- 1072,1078 ---- return (c); col = tp->t_col; ! switch (partab[c&0177]&077) { case ORDINARY: col++; *************** *** 1497,1510 **** ttyretype(tp); return; } - /* - * Out of the ENTIRE tty subsystem would believe this is the ONLY place - * that the "9th" bit (quoted chars) is tested? - */ - if (c == ('\t'|0200) || c == ('\n'|0200)) - ttyrubo(tp, 2); - else switch (partab[c&=0177]&0177) { case ORDINARY: ttyrubo(tp, 1); break; --- 1462,1470 ---- ttyretype(tp); return; } + switch (partab[c&0177]&0177) { + case ORDINARY: ttyrubo(tp, 1); break; *************** *** 1643,1649 **** } if (c == '\r' && tp->t_flags&CRMOD) c = '\n'; ! c7 = c & 0177; if (tp->t_flags&CTLECH) { if (c7 <= 037 && c != '\t' && c != '\n' || c7 == 0177) { (void) ttyoutput('^', tp); --- 1603,1609 ---- } if (c == '\r' && tp->t_flags&CRMOD) c = '\n'; ! c7 = (tp->t_flags & PASS8) == 0 ? c & 0177 : c; if (tp->t_flags&CTLECH) { if (c7 <= 037 && c != '\t' && c != '\n' || c7 == 0177) { (void) ttyoutput('^', tp); *** ./usr/src/sys/pdpif/if_de.c.old Fri Dec 31 23:58:01 1993 --- ./usr/src/sys/pdpif/if_de.c Thu Mar 13 07:08:52 2025 *************** *** 3,8 **** --- 3,12 ---- * 2.11BSD - Remove dereset since 1) it was never called, and 2) * wouldn't work if it were called. Also uballoc and * ubmalloc calling convention changed. - sms + * + * if_de.c 1.2 (2.11BSD) 12-Mar-2025 + * Add printout of type of controller and MAC address for + * Unibus ethernet similarly to what Qbus drivers were doing. */ #include "de.h" #if NDE > 0 *************** *** 182,192 **** csr1 = addr->pcsr1; ds->ds_devid = (csr1 & PCSR1_DEVID) >> 4; - #ifdef DE_DEBUG - if (dedebug >= 1) - printf("de%d: Device Type: %s\n", ui->ui_unit, - (ds->ds_devid == DEUNA) ? "DEUNA" : "DELUA"); - #endif /* DE_DEBUG */ /* * Board Status Check */ --- 186,191 ---- *************** *** 236,246 **** bcopy((caddr_t)&ds->ds_pcbb.pcbb2,(caddr_t)ds->ds_addr, sizeof (ds->ds_addr)); - #ifdef DE_DEBUG - if (dedebug >= 1) - printf("de%d: hardware address %s\n", - ui->ui_unit, ether_sprintf(ds->ds_addr)); - #endif /* DE_DEBUG */ ifp->if_init = deinit; ifp->if_output = deoutput; ifp->if_ioctl = deioctl; --- 235,240 ---- *************** *** 247,252 **** --- 241,249 ---- ifp->if_reset = 0; ds->ds_deuba.difu_flags = UBA_CANTWAIT; + printf("de%d: DE%sA addr %s\n", ui->ui_unit, + ds->ds_devid == DEUNA ? "UN" : "LU", + ether_sprintf(ds->ds_addr)); if_attach(ifp); } *** ./usr/include/setjmp.h.old Sat Jan 1 01:25:52 1994 --- ./usr/include/setjmp.h Thu Mar 13 12:41:58 2025 *************** *** 1,3 **** ! /* setjmp.h 4.1 93/12/31 */ typedef int jmp_buf[10]; --- 1,12 ---- ! /* @(#)setjmp.h 8.12 (2.11BSD) 2025/3/11 */ + /* + * this is a "struct sigcontext" by another name. See signal.h + */ typedef int jmp_buf[10]; + + int setjmp(jmp_buf env); + int _setjmp(jmp_buf env); + + void longjmp(jmp_buf env, int val); + void _longjmp(jmp_buf env, int val); *** ./usr/src/share/termcap/termcap.src.old Tue Mar 24 15:07:20 2020 --- ./usr/src/share/termcap/termcap.src Thu Mar 13 12:52:27 2025 *************** *** 1886,1892 **** :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ :tc=vt100: # @(#)termcap X10/6.6 11/7/86, minus alternate screen, plus :cs ! vs|xterm|vs100|xterm terminal emulator (X window system):\ :do=^J:le=^H:ho=\E[H:\ :co#80:li#65:cl=\E[H\E[2J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ --- 1886,1892 ---- :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ :tc=vt100: # @(#)termcap X10/6.6 11/7/86, minus alternate screen, plus :cs ! vs|xterm|vs100|xterm-color|xterm-256color|xterm terminal emulator (X window system):\ :do=^J:le=^H:ho=\E[H:\ :co#80:li#65:cl=\E[H\E[2J:bs:am:cm=\E[%i%d;%dH:nd=\E[C:up=\E[A:\ :ce=\E[K:cd=\E[J:so=\E[7m:se=\E[m:us=\E[4m:ue=\E[m:\ *** ./usr/src/libexec/telnetd/telnetd.c.old Wed Mar 5 20:49:09 2025 --- ./usr/src/libexec/telnetd/telnetd.c Thu Mar 13 12:52:07 2025 *************** *** 61,66 **** --- 61,69 ---- CSUSP, CDSUSP, CRPRNT, CFLUSH, CWERASE, CLNEXT }; + struct winsize ws; + int chwinsize = 0; + char hostname[32]; #define TABBUFSIZ 512 *************** *** 93,98 **** --- 96,102 ---- } #define SB_GET() ((*subpointer++)&0xff) #define SB_EOF() (subpointer >= subend) + #define SB_LEN() (subend - subpointer) int pcc, ncc, pty, net, inter; int SYNCHing = 0; /* we are in TELNET SYNCH mode */ *************** *** 653,659 **** while (ncc > 0) { if ((&ptyobuf[BUFSIZ] - pfrontp) < 2) ! return; c = *netip++ & 0377, ncc--; switch (state) { --- 657,663 ---- while (ncc > 0) { if ((&ptyobuf[BUFSIZ] - pfrontp) < 2) ! break; c = *netip++ & 0377, ncc--; switch (state) { *************** *** 807,812 **** --- 811,817 ---- } else { SB_TERM(); suboption(); /* handle sub-option */ + SB_CLEAR(); /* need to reset subpointer */ state = TS_DATA; } break; *************** *** 842,847 **** --- 847,856 ---- exit(1); } } + if (chwinsize) { /* Window size changed? */ + ioctl(pty, TIOCSWINSZ, &ws); + chwinsize = 0; + } } willoption(option) *************** *** 878,883 **** --- 887,896 ---- fmt = doopt; break; + case TELOPT_NAWS: + fmt = doopt; + break; + case TELOPT_SGA: fmt = doopt; break; *************** *** 1027,1032 **** --- 1040,1054 ---- terminaltype = terminalname; break; } + case TELOPT_NAWS: + if (SB_LEN() < 4) + return; + ws.ws_col = SB_GET() << 8; + ws.ws_col |= SB_GET(); + ws.ws_row = SB_GET() << 8; + ws.ws_row |= SB_GET(); + chwinsize = 1; /* Defer setting size so we can coalesce if possible */ + break; default: ; *** ./usr/src/libexec/telnetd/telnetd.8.old Sat Nov 16 16:15:33 1996 --- ./usr/src/libexec/telnetd/telnetd.8 Thu Mar 13 12:52:07 2025 *************** *** 55,60 **** --- 55,62 ---- .IR ahead , and to receive .I terminal type information + and + .I negotiate about window size from the remote client. If the remote client is willing, the remote terminal type is propagated in the environment of the created login process. *************** *** 79,84 **** --- 81,88 ---- .IR binary , .I terminal .IR type , + .I negotiate about window + .IR size , and .I suppress go .IR ahead . *************** *** 88,101 **** Some .B TELNET commands are only partially implemented. - .PP - The - .B TELNET - protocol allows for - the exchange of the number of lines and columns on the user's terminal, - but - .I telnetd - doesn't make use of them. .PP Because of bugs in the original 4.2 BSD .IR telnet (1C), --- 92,97 ---- *** ./usr/src/ucb/ex/ex_v.c.old Fri Dec 9 22:45:56 1994 --- ./usr/src/ucb/ex/ex_v.c Thu Mar 13 07:43:40 2025 *************** *** 60,74 **** /* * Enter open mode */ ! #ifdef u370 ! char atube[TUBESIZE+LBSIZE]; ! #endif oop() { register char *ic; - #ifndef u370 - char atube[TUBESIZE + LBSIZE]; - #endif ttymode f; /* mjm: was register */ int resize; --- 60,69 ---- /* * Enter open mode */ ! static char atube[TUBESIZE+LBSIZE]; oop() { register char *ic; ttymode f; /* mjm: was register */ int resize; *************** *** 177,185 **** vop() { register int c; - #ifndef u370 - char atube[TUBESIZE + LBSIZE]; - #endif ttymode f; /* mjm: was register */ int resize; --- 172,177 ---- *** ./usr/src/ucb/ex/ex.h.old Tue Jan 7 22:16:04 2020 --- ./usr/src/ucb/ex/ex.h Thu Mar 13 08:56:56 2025 *************** *** 3,9 **** * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * ! * @(#)ex.h 7.8 (2.11BSD) 2020/1/7 */ #ifdef V6 --- 3,9 ---- * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * ! * @(#)ex.h 7.9 (2.11BSD) 2025/3/13 */ #ifdef V6 *************** *** 136,146 **** # ifdef VMUNIX # define BUFSIZ 1024 # else - # ifdef u370 - # define BUFSIZ 4096 - # else # define BUFSIZ 512 - # endif # endif # define NULL 0 # define EOF -1 --- 136,142 ---- *** ./usr/src/ucb/ex/ex_tune.h.old Mon Jan 20 21:26:15 2020 --- ./usr/src/ucb/ex/ex_tune.h Thu Mar 13 09:17:01 2025 *************** *** 3,9 **** * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * ! * @(#)ex_tune.h 7.8.3 (2.11BSD) 2020/1/20 */ /* --- 3,9 ---- * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * ! * @(#)ex_tune.h 7.9 (2.11BSD) 2025/3/13 */ /* *************** *** 42,57 **** #define ESIZE 512 #define CRSIZE 1024 #else - #ifdef u370 - #define LBSIZE 4096 - #define ESIZE 512 - #define CRSIZE 4096 - #else #define LBSIZE 512 /* Line length */ #define ESIZE 128 /* Size of compiled re */ #define CRSIZE 512 #endif - #endif #define RHSSIZE 256 /* Size of rhs of substitute */ #define NBRA 9 /* Number of re \( \) pairs */ #define TAGSIZE 128 /* Tag length */ --- 42,51 ---- *************** *** 72,78 **** also termlib and termcap */ /* ! * Except on VMUNIX, these are a ridiculously small due to the * lousy arglist processing implementation which fixes core * proportional to them. Argv (and hence NARGS) is really unnecessary, * and argument character space not needed except when --- 66,72 ---- also termlib and termcap */ /* ! * Except on VMUNIX, these are small due to the * lousy arglist processing implementation which fixes core * proportional to them. Argv (and hence NARGS) is really unnecessary, * and argument character space not needed except when *************** *** 90,100 **** #endif /* ! * Note: because the routine "alloca" is not portable, TUBESIZE ! * bytes are allocated on the stack each time you go into visual ! * and then never freed by the system. Thus if you have no terminals ! * which are larger than 24 * 80 you may well want to make TUBESIZE ! * smaller. TUBECOLS should stay at 160 since this defines the maximum * length of opening on hardcopies and allows two lines of open on * terminals like adm3's (glass tty's) where it switches to pseudo * hardcopy mode when a line gets longer than 80 characters. --- 84,97 ---- #endif /* ! * Note: TUBESIZE bytes used to be allocated on the stack when entering ! * visual [vop()] AND open mode [oop()]. This was a problem for the pdp11 ! * and could cause the program to crash because the stack could not grow ! * further downward. Use of a static buffer in ex_v.c reduces greatly ! * stack space at the cost of some data space. This worked for the u370 system, ! * it can work for all systems now. ! * ! * TUBECOLS should stay at 160 since this defines the maximum * length of opening on hardcopies and allows two lines of open on * terminals like adm3's (glass tty's) where it switches to pseudo * hardcopy mode when a line gets longer than 80 characters. *** ./usr/src/libexec/getty/main.c.old Mon Feb 10 22:53:25 2003 --- ./usr/src/libexec/getty/main.c Mon Mar 10 08:00:41 2025 *************** *** 9,15 **** "@(#) Copyright (c) 1980 Regents of the University of California.\n\ All rights reserved.\n"; ! static char sccsid[] = "@(#)main.c 5.5.2 (2.11BSD) 2003/2/10"; #endif /* --- 9,15 ---- "@(#) Copyright (c) 1980 Regents of the University of California.\n\ All rights reserved.\n"; ! static char sccsid[] = "@(#)main.c 5.5.3 (2.11BSD) 2025/3/10"; #endif /* *************** *** 16,21 **** --- 16,23 ---- * getty -- adapt to terminal speed on dialup, and call login * * Melbourne getty, June 83, kre. + * + * Bugfix to set local mode word, Mar 2025, bqt. */ #include *************** *** 179,186 **** tmode.sg_ospeed = speed(OS); else if (SP) tmode.sg_ospeed = speed(SP); ! tmode.sg_flags = setflags(0); ioctl(0, TIOCSETP, &tmode); setchars(); ioctl(0, TIOCSETC, &tc); ioctl(0, TIOCSETD, &ldisp); --- 181,191 ---- tmode.sg_ospeed = speed(OS); else if (SP) tmode.sg_ospeed = speed(SP); ! allflags = setflags(0); ! tmode.sg_flags = allflags & 0xffff; ! someflags = allflags >> 16; ioctl(0, TIOCSETP, &tmode); + ioctl(0, TIOCLSET, &someflags); setchars(); ioctl(0, TIOCSETC, &tc); ioctl(0, TIOCSETD, &ldisp); *************** *** 246,251 **** --- 251,258 ---- register char *np; register c; char cs; + long allflags; + int someflags; /* * Interrupt may happen if we use CBREAK mode *************** *** 255,263 **** return (0); } signal(SIGINT, interrupt); ! tmode.sg_flags = setflags(0); ioctl(0, TIOCSETP, &tmode); ! tmode.sg_flags = setflags(1); prompt(); if (PF > 0) { oflush(); --- 262,275 ---- return (0); } signal(SIGINT, interrupt); ! allflags = setflags(0); ! tmode.sg_flags = allflags & 0xffff; ! someflags = allflags >> 16; ioctl(0, TIOCSETP, &tmode); ! ioctl(0, TIOCLSET, &someflags); ! allflags = setflags(1); ! tmode.sg_flags = allflags & 0xffff; ! someflags = allflags >> 16; prompt(); if (PF > 0) { oflush(); *************** *** 265,270 **** --- 277,283 ---- PF = 0; } ioctl(0, TIOCSETP, &tmode); + ioctl(0, TIOCLSET, &someflags); crmod = 0; upper = 0; lower = 0; *** ./usr/src/games/sail/Makefile.old Sat Jan 23 01:02:53 1993 --- ./usr/src/games/sail/Makefile Thu Mar 13 12:51:22 2025 *************** *** 47,53 **** install: sail $(TARGET)/$(LOGFILE) sail.0 install -s -m 4755 -o $(SAILMASTER) sail $(TARGET)/sail ! install -c -m 444 sail.0 ${DESTDIR}/usr/man/cat6/sail.0 logfile $(TARGET)/$(LOGFILE): cp /dev/null $(TARGET)/$(LOGFILE) --- 47,53 ---- install: sail $(TARGET)/$(LOGFILE) sail.0 install -s -m 4755 -o $(SAILMASTER) sail $(TARGET)/sail ! install -c -o bin -g bin -m 444 sail.0 ${DESTDIR}/usr/man/cat6/sail.0 logfile $(TARGET)/$(LOGFILE): cp /dev/null $(TARGET)/$(LOGFILE) *** ./usr/src/ucb/tftp/Makefile.old Tue Jan 19 18:00:33 1993 --- ./usr/src/ucb/tftp/Makefile Thu Mar 13 12:51:22 2025 *************** *** 23,26 **** install: tftp tftp.0 install -s tftp ${DESTDIR}/usr/ucb ! install -c -m 444 tftp.0 ${DESTDIR}/usr/man/cat1 --- 23,26 ---- install: tftp tftp.0 install -s tftp ${DESTDIR}/usr/ucb ! install -c -o bin -g bin -m 444 tftp.0 ${DESTDIR}/usr/man/cat1 *** ./usr/src/usr.lib/libident/Makefile.old Fri Dec 13 22:49:16 1996 --- ./usr/src/usr.lib/libident/Makefile Thu Mar 13 12:51:22 2025 *************** *** 48,54 **** install -c -m 644 libident_p.a $(LIBDIR)/libident_p.a ranlib $(LIBDIR)/libident.a $(LIBDIR)/libident_p.a install -c -m 444 ident.h $(INCDIR)/ident.h ! install -c -m 444 ident.0 $(MANDIR)/ident.0 clean: -rm -f libident.a libident_p.a ident-tester lookup-tester *.o ident.0 --- 48,54 ---- install -c -m 644 libident_p.a $(LIBDIR)/libident_p.a ranlib $(LIBDIR)/libident.a $(LIBDIR)/libident_p.a install -c -m 444 ident.h $(INCDIR)/ident.h ! install -c -o bin -g bin -m 444 ident.0 $(MANDIR)/ident.0 clean: -rm -f libident.a libident_p.a ident-tester lookup-tester *.o ident.0 *** ./usr/src/usr.lib/libvmf/makefile.old Thu Oct 21 23:04:19 1993 --- ./usr/src/usr.lib/libvmf/makefile Thu Mar 13 12:51:22 2025 *************** *** 14,20 **** ranlib /usr/lib/libvmf.a install -c -m 644 genlib_p /usr/lib/libvmf_p.a ranlib /usr/lib/libvmf_p.a ! install -c -m 444 vmf.0 /usr/man/cat3/vmf.0 clean: rm -f ${OBJECTS} profiled/${OBJECTS} genlib genlib_p vmf.0 --- 14,20 ---- ranlib /usr/lib/libvmf.a install -c -m 644 genlib_p /usr/lib/libvmf_p.a ranlib /usr/lib/libvmf_p.a ! install -c -o bin -g bin -m 444 vmf.0 /usr/man/cat3/vmf.0 clean: rm -f ${OBJECTS} profiled/${OBJECTS} genlib genlib_p vmf.0 *** ./usr/src/usr.sbin/cron/putman.sh.old Tue Aug 17 01:26:43 1999 --- ./usr/src/usr.sbin/cron/putman.sh Thu Mar 13 12:51:23 2025 *************** *** 20,25 **** --- 20,27 ---- fi nroff -man $PAGE >$DEST + chown bin $DEST + chgrp bin $DEST chmod 444 $DEST set +x *** ./usr/src/usr.sbin/sysgen/Makefile.old Sun Jun 29 15:46:32 1997 --- ./usr/src/usr.sbin/sysgen/Makefile Thu Mar 13 12:51:23 2025 *************** *** 23,29 **** install: sysgen sysgen.0 install -c -s ${PROG} ${DESTDIR}/usr/sbin/${PROG} ! install -m 444 ${MAN} ${DESTDIR}/usr/man/cat8/${MAN} clean: rm -f ${OBJS} ${MAN} ${PROG} tags --- 23,29 ---- install: sysgen sysgen.0 install -c -s ${PROG} ${DESTDIR}/usr/sbin/${PROG} ! install -c -o bin -g bin -m 444 ${MAN} ${DESTDIR}/usr/man/cat8/${MAN} clean: rm -f ${OBJS} ${MAN} ${PROG} tags *** ./usr/src/libexec/popper/Makefile.old Wed Nov 27 22:31:56 1996 --- ./usr/src/libexec/popper/Makefile Thu Mar 13 12:51:22 2025 *************** *** 62,68 **** install: ${TARGET} ${CATPAGE} install -c -m 700 -o root -g staff ${TARGET} ${INSTALLDIR} ! install -c -m 444 -o root -g staff ${CATPAGE} ${MANDIR} ${CATPAGE}: ${MANPAGE} nroff -h -man ${MANPAGE} > ${CATPAGE} --- 62,68 ---- install: ${TARGET} ${CATPAGE} install -c -m 700 -o root -g staff ${TARGET} ${INSTALLDIR} ! install -c -o bin -g bin -m 444 ${CATPAGE} ${MANDIR} ${CATPAGE}: ${MANPAGE} nroff -h -man ${MANPAGE} > ${CATPAGE} *** ./usr/src/libexec/identd/Makefile.old Thu Sep 26 19:52:38 2024 --- ./usr/src/libexec/identd/Makefile Thu Mar 13 12:51:22 2025 *************** *** 60,69 **** sed -e 's,xDESTROOTx,$(DESTROOT),g' $? > $@ install: identd identd.0 idecrypt.0 identconn itest idecrypt ! install -m 644 identd.0 $(MANDIR)/identd.0 install -m 755 identd $(EXECDIR)/identd install -m 755 identconn $(BINDIR)/identconn ! install -m 644 idecrypt.0 $(MANDIR)/idecrypt.0 install -m 755 idecrypt $(BINDIR)/idecrypt install -o root -g kmem -m 2555 itest ${BINDIR}/itest --- 60,69 ---- sed -e 's,xDESTROOTx,$(DESTROOT),g' $? > $@ install: identd identd.0 idecrypt.0 identconn itest idecrypt ! install -c -o bin -g bin -m 444 identd.0 $(MANDIR)/identd.0 install -m 755 identd $(EXECDIR)/identd install -m 755 identconn $(BINDIR)/identconn ! install -c -o bin -g bin -m 444 idecrypt.0 $(MANDIR)/idecrypt.0 install -m 755 idecrypt $(BINDIR)/idecrypt install -o root -g kmem -m 2555 itest ${BINDIR}/itest *** ./usr/src/man/man3/setjmp.3.old Wed May 27 23:49:56 1987 --- ./usr/src/man/man3/setjmp.3 Tue Mar 11 18:18:54 2025 *************** *** 2,10 **** .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" ! .\" @(#)setjmp.3 6.2 (Berkeley) 1/9/86 .\" ! .TH SETJMP 3 "January 9, 1986" .UC 4 .SH NAME setjmp, longjmp \- non-local goto --- 2,10 ---- .\" All rights reserved. The Berkeley software License Agreement .\" specifies the terms and conditions for redistribution. .\" ! .\" @(#)setjmp.3 6.3 (2.11BSD) 2025/3/11 .\" ! .TH SETJMP 3 "March 11, 2025" .UC 4 .SH NAME setjmp, longjmp \- non-local goto *************** *** 81,96 **** .SH "SEE ALSO" sigvec(2), sigstack(2), signal(3) .SH "NOTES (PDP-11)" ! On the PDP-11, \fIlongjmperror\fP is called as \fI_ljerr\fP. This ! difference stems from the limited name size of the PDP-11 that requires all ! external names to be unique within the first seven characters. However, ! <\fIsetjmp.h\fP> automatically translates \fIlongjmperror\fP to \fIljerror\fP ! and should be included before any definition \fIlongjmperror\fP. ! .PP ! The PDP-11 implementation also contains a subtle bug that occurs when a routine containing a \fIsetjmp\fP has \fIregister\fP variables. The bug sometimes causes those variables to be given invalid values when a longjmp is made back to the routine. \fIRegister\fP variables should therefore be ! avoided in routines containing \fIsetjmps\fP. .PP And finally, _longjmp may sometimes die fatally. Sorry. --- 81,90 ---- .SH "SEE ALSO" sigvec(2), sigstack(2), signal(3) .SH "NOTES (PDP-11)" ! The PDP-11 implementation contains a subtle bug that occurs when a routine containing a \fIsetjmp\fP has \fIregister\fP variables. The bug sometimes causes those variables to be given invalid values when a longjmp is made back to the routine. \fIRegister\fP variables should therefore be ! avoided in routines containing \fIsetjmp\fP. .PP And finally, _longjmp may sometimes die fatally. Sorry. *** ./VERSION.old Fri Mar 7 21:20:05 2025 --- ./VERSION Thu Mar 13 13:04:34 2025 *************** *** 1,5 **** ! Current Patch Level: 483 ! Date: March 7, 2025 2.11 BSD ============ --- 1,5 ---- ! Current Patch Level: 484 ! Date: March 13, 2025 2.11 BSD ============