Subject: bin/sort symlink, rcmd&ruserpass.c unused variables, telnet window changes, top malloc error, telnetd terminal type, warp build errors Index: src/sys/conf/param.c Description: 1) /bin/sort is a symlink pointing to /usr/bin/sort. This is not needed. 2) Unused variables in the libc routines rcmd.c and ruserpass.c 3) Telnet doesn't send current window size when logging into remote system or window size changes during telnet session. 4) large window size will cause memory allocation failure in top(1) and top exits leaving the terminal in raw mode. 5) telnetd gets wrong terminal type. 6) Makefile in games/warp installs manpage into /tmp Repeat-By: 1) ls -l /bin/sort lrwxrwxrwx 1 root 15 Apr 8 1998 sort -> ../usr/bin/sort The date will of course be different. A search of the system shows no use of /bin/sort. The normal $PATH search is done for sort and that will find the program in /usr/bin. 2) lint rcmd.c rcmd.c.old(45): warning: sin2 unused in function rcmd lint ruserpass.c ruserpass.c.old(57): warning: fgetlogin unused in function renv ruserpass.c.old(57): warning: stemp unused in function renv These do not harm anything except my sense of aesthetics ;) 3) telnet localhost and login. stty -a new tty, speed 38400 baud, 0 rows, 0 columns The fix is to add support for negotiation about window size (TELOPT_NAWS) to the telnet client. Also catch SIGWINCH and send window updates when the window is resized. After applying the patch, note the telnet session now gets the correct rows/cols. 4) Run top on an 80x43 or larger terminal window. You will get errors like SWAPMAP: Cannot allocate memory, or top: can't allocate 17400 bytes for saving info. Top will then exit and leave the terminal in raw/no-echo mode, making the session appear to be frozen until stty -raw echo^J is typed. The fix is to ensure that resetty() is called before exiting. This patch additionally adds a message indicating it may be related to the window size. 5) when telnetd/login/getty were unified to use one set of sources (for termcap logic) in patch 487 the changes local to telnetd were lost. This update restores terminal type reception in telnetd. 6) the warp Makefile was updated in #481 to remove an extra -O flag however the manpage installs to /tmp which is not correct. Makefile is a generated file created by the monstrous Configure script. Patching Makefile was the wrong thing to do in #481 because re-running Configure would write a new Makefile. Patching Makefile is the wrong thing to do for manpage installation error for the same reason. after a couple inquiries the consensus is to rip out the Configure infrastructure and install a customary 2.11BSD Makefile. Anyone who wants to probe for Xenix, Eunice, Venix, USG, and so on is welcome to edit config.h and Makefile to their hearts' content. Fix: Thanks to martin@teckelworks.com for (3) and (4), bqt@softjar.se for (5) NOTE: This update removes files from src/games/warp. If you want to retain, for historical (or voyeuristic) purposes, the old Configure system make a backup of the src/games/warp directory before proceeding. NOTE: Clean up the warp source directory. This has to be done first or the patch, which installs Makefile and config.h, will fail. cd /usr/src/games/warp rm -r UU rm Configure MAKELOG MANIFEST Makefile.SH config.H Makefile filexp rm config.h.SH config.sh makedepend makedepend.SH makedir makedir.SH config.h Cut where indicated and save to a file (/tmp/489.patch). Then: patch -p0 < /tmp/489.patch rm -f /bin/sort cd /usr/src/lib/libc/net make rcmd.o ruserpass.o ar rv /lib/libc.a rcmd.o ruserpass.o ranlib /lib/libc.a cd profiled ar rv /usr/lib/libc_p.a rcmd.o ruserpass.o ranlib /usr/lib/libc_p.a cd .. make clean cd /usr/src/libexec/telnetd make install make clean cd /usr/src/ucb/top make install make clean cd .. make telnet install -s -m 755 telnet /usr/ucb/telnet make clean cd /usr/src/games/warp make install make clean rm -f /usr/games/lib/warp/save.blurfl Hopefully no bugs have been introduced into warp. 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 --------------------------cut here-------------------- *** ./usr/src/lib/libc/net/rcmd.c.old Sat Mar 22 15:40:29 2025 --- ./usr/src/lib/libc/net/rcmd.c Wed Mar 26 19:57:24 2025 *************** *** 16,22 **** */ #if defined(LIBC_SCCS) && !defined(lint) ! static char sccsid[] = "@(#)rcmd.c 5.21 (2.11BSD) 2025/3/22"; #endif #include --- 16,22 ---- */ #if defined(LIBC_SCCS) && !defined(lint) ! static char sccsid[] = "@(#)rcmd.c 5.22 (2.11BSD) 2025/3/26"; #endif #include *************** *** 42,48 **** { int s, timo = 1, pid; sigset_t oldmask, nmask; ! struct sockaddr_in sin, sin2, from; char c; int lport = IPPORT_RESERVED - 1; struct hostent *hp; --- 42,48 ---- { int s, timo = 1, pid; sigset_t oldmask, nmask; ! struct sockaddr_in sin, from; char c; int lport = IPPORT_RESERVED - 1; struct hostent *hp; *** ./usr/src/lib/libc/net/ruserpass.c.old Sun Nov 17 00:10:11 1996 --- ./usr/src/lib/libc/net/ruserpass.c Wed Mar 26 20:00:54 2025 *************** *** 5,12 **** */ #if defined(LIBC_SCCS) && !defined(lint) ! static char sccsid[] = "@(#)ruserpass.c 5.2.1 (2.11BSD) 1996/11/16"; ! #endif LIBC_SCCS and not lint #include #include --- 5,12 ---- */ #if defined(LIBC_SCCS) && !defined(lint) ! static char sccsid[] = "@(#)ruserpass.c 5.2.2 (2.11BSD) 2025/3/26"; ! #endif #include #include *************** *** 18,25 **** #include #include ! char *renvlook(); ! struct utmp *getutmp(); static FILE *cfile; ruserpass(host, aname, apass) --- 18,25 ---- #include #include ! static char *renvlook(); ! static struct utmp *getutmp(); static FILE *cfile; ruserpass(host, aname, apass) *************** *** 54,60 **** char *host, **aname, **apass; { register char *cp; ! char *stemp, fgetlogin, *comma; cp = renvlook(host); if (cp == NULL) --- 54,60 ---- char *host, **aname, **apass; { register char *cp; ! register char *comma; cp = renvlook(host); if (cp == NULL) *** ./usr/src/libexec/telnetd/telnetd.c.old Fri Mar 21 19:16:20 2025 --- ./usr/src/libexec/telnetd/telnetd.c Sat Mar 29 07:23:36 2025 *************** *** 9,15 **** "@(#) Copyright (c) 1983 Regents of the University of California.\n\ All rights reserved.\n"; ! static char sccsid[] = "@(#)telnetd.c 5.21 (2.11BSD) 2025/3/5"; #endif /* --- 9,15 ---- "@(#) Copyright (c) 1983 Regents of the University of California.\n\ All rights reserved.\n"; ! static char sccsid[] = "@(#)telnetd.c 5.22 (2.11BSD) 2025/3/29"; #endif /* *************** *** 363,368 **** --- 363,371 ---- if (strncmp(environ[i], "INET=", 5) == 0) continue; if (strncmp(environ[i], "PATH=", 5) == 0) continue; env[j++] = environ[i]; + } + if (*terminaltype) { + TT = terminaltype; } makeenv(&env[j], terminaltype); *** ./usr/src/ucb/top/top.c.old Fri Sep 20 14:08:07 2024 --- ./usr/src/ucb/top/top.c Fri Mar 28 20:15:08 2025 *************** *** 25,30 **** --- 25,31 ---- * Added %cpu time to header. * 07 26/8/2022 Truncate hostname by first period or 7 char. bqt * 08 20/9/2024 Change /vmunix to /unix sms + * 09 28/3/2025 Exit gracefully when out of memory martin */ /* * Using RAW removes the need for signal processing, but adds a requirement *************** *** 167,172 **** --- 168,183 ---- } /* + * Exit gracefully when out of memory + */ + LOCAL int oom_reset_exit(int status) + { + resetty(); + printf("This error may occur if the window size is too large.\n"); + exit(status); + } + + /* * Read from specified location in file * returns 1 on success * -1 on failure *************** *** 701,707 **** { perror("SWAPMAP"); printf("\r\n"); ! exit(1); } memset(swapmap, 0, smsz); } --- 712,718 ---- { perror("SWAPMAP"); printf("\r\n"); ! oom_reset_exit(1); } memset(swapmap, 0, smsz); } *************** *** 1098,1104 **** if((proctab = (struct proc *)malloc(ptsz))==NULL) { fprintf(stderr, "top: not enough memory for proc table\r\n"); ! exit(1); } /* * allocate an array to user struct information --- 1109,1115 ---- if((proctab = (struct proc *)malloc(ptsz))==NULL) { fprintf(stderr, "top: not enough memory for proc table\r\n"); ! oom_reset_exit(1); } /* * allocate an array to user struct information *************** *** 1106,1112 **** if((userdata=(struct udata_s *)calloc(nproc, sizeof(struct udata_s)))==NULL) { fprintf(stderr, "top: can't allocate %d bytes for saving info\r\n", nproc*sizeof(struct udata_s)); ! exit(1); } /* * allocate an indirection table for efficient sorting --- 1117,1123 ---- if((userdata=(struct udata_s *)calloc(nproc, sizeof(struct udata_s)))==NULL) { fprintf(stderr, "top: can't allocate %d bytes for saving info\r\n", nproc*sizeof(struct udata_s)); ! oom_reset_exit(1); } /* * allocate an indirection table for efficient sorting *************** *** 1114,1120 **** if( (procidx = (int *) malloc(nproc*sizeof(short))) == NULL) { fprintf(stderr, "top: cant allocate index table\r\n"); ! return(1); } if((npr = update()) < 0) return(1); --- 1125,1131 ---- if( (procidx = (int *) malloc(nproc*sizeof(short))) == NULL) { fprintf(stderr, "top: cant allocate index table\r\n"); ! oom_reset_exit(1); } if((npr = update()) < 0) return(1); *** ./usr/src/ucb/telnet.c.old Tue Jan 7 22:32:30 2020 --- ./usr/src/ucb/telnet.c Wed Mar 26 20:06:52 2025 *************** *** 5,11 **** */ #if defined(DOSCCS) && !defined(lint) ! static char sccsid[] = "@(#)telnet.c 5.17 (2.11BSD) 2020/1/7"; #endif /* --- 5,11 ---- */ #if defined(DOSCCS) && !defined(lint) ! static char sccsid[] = "@(#)telnet.c 5.18 (2.11BSD) 2025/3/26"; #endif /* *************** *** 81,86 **** --- 81,89 ---- char dont[] = { IAC, DONT, '%', 'c', 0 }; char will[] = { IAC, WILL, '%', 'c', 0 }; char wont[] = { IAC, WONT, '%', 'c', 0 }; + char naws[] = { + IAC, SB, TELOPT_NAWS, '%', 'c', '%', 'c', '%', 'c', '%', 'c', IAC, SE, 0 + }; struct cmd { char *name; /* command name */ *************** *** 506,511 **** --- 509,528 ---- { command(0); } + + void sendnaws() + { + if (!myopts[TELOPT_NAWS]) return; + + if (connected && (9 < NETROOM())) { + struct winsize ws; + if (ioctl(0, TIOCGWINSZ, &ws) < 0) return; + sprintf(nfrontp, naws, ws.ws_col >> 8 , ws.ws_col, + ws.ws_row >> 8, ws.ws_row); + nfrontp += 9; + printoption(">SENT", naws, TELOPT_NAWS, 1); + } + } /* * The following are routines used to print out debugging information. *************** *** 561,566 **** --- 578,585 ---- fmt = "will"; else if (fmt == wont) fmt = "wont"; + else if (fmt == naws) + fmt = "notify"; else fmt = "???"; if (option < (sizeof telopts/sizeof telopts[0])) *************** *** 753,760 **** willoption(TELOPT_SGA, 0); } if (!myopts[TELOPT_TTYPE]) { ! dooption(TELOPT_TTYPE, 0); } } for (;;) { if (scc < 0 && tcc < 0) { --- 772,782 ---- willoption(TELOPT_SGA, 0); } if (!myopts[TELOPT_TTYPE]) { ! dooption(TELOPT_TTYPE); } + if (!myopts[TELOPT_NAWS]) { + dooption(TELOPT_NAWS); + } } for (;;) { if (scc < 0 && tcc < 0) { *************** *** 1142,1147 **** --- 1164,1172 ---- printoption(">RCVD", doopt, c, !myopts[c]); if (!myopts[c]) dooption(c); + + if (c == TELOPT_NAWS) sendnaws(); + state = TS_DATA; continue; *************** *** 1251,1256 **** --- 1276,1282 ---- fmt = will; break; + case TELOPT_NAWS: /* negotiate about window size */ case TELOPT_TTYPE: /* terminal type option */ case TELOPT_SGA: /* no big deal */ fmt = will; *************** *** 2111,2116 **** --- 2137,2143 ---- connected++; } while (connected == 0); call(status, "status", "notmuch", 0); + signal(SIGWINCH, sendnaws); if (setjmp(peerdied) == 0) telnet(); fprintf(stderr, "Connection closed by foreign host.\n"); *** ./usr/src/games/warp/README.old Fri Jun 19 12:06:08 1987 --- ./usr/src/games/warp/README Mon Mar 31 14:34:43 2025 *************** *** 15,95 **** Please read all the directions below before you proceed any further, and then follow them carefully. Failure to do so may void your warranty. :-) - After you have unpacked your kit, you should have all the files listed - in MANIFEST. - - IMPORTANT - - You must choose the uid that you want warp to run under, since warp runs - setuid to protect its files. Choose a uid (not root) that is used only - by trustworthy persons. If you do your make install as root, the installed - version will be chowned to this uid. Otherwise, you should login to your - selected uid before proceeding. The Configure script will ask you which - uid you want warp to run under. - Installation ! 1) Run Configure. This will figure out various things about your system. ! Some things Configure will figure out for itself, other things it will ! ask you about. It will then proceed to make config.h, config.sh, and ! Makefile. - You might possibly have to trim # comments from the front of Configure - if your sh doesn't handle them, but all other # comments will be taken - care of. - - (If you don't have sh, you'll have to copy the sample file config.H to - config.h and edit the config.h to reflect your system's peculiarities.) - - 2) Glance through config.h to make sure system dependencies are correct. - Most of them should have been taken care of by running the Configure script. - - If you have any additional changes to make to the C definitions, they - can be done in the Makefile, or in config.h. Bear in mind that they will - get undone next time you run Configure. - - 3) make depend - This will look for all the includes and modify Makefile accordingly. Configure will offer to do this for you. ! 4) make This will attempt to make warp in the current directory. ! 5) make install This will put warp into a public directory (normally /usr/games). ! It will also try to put the man pages in a reasonable place. It will not ! nroff the man page, however. You may need to be root to do this. If ! you are not root, you must own the directories in question and you should ! ignore any messages about chown not working. ! 6) Read the manual entry before running warp. ! 7) Feel free to edit warp.news. ! 8) IMPORTANT! Help save the world! Communicate any problems and ! suggested patches to me, lwall@sdcrdcf.UUCP (Larry Wall), so we can ! keep the world in sync. If you have a problem, there's someone else ! out there who either has had or will have the same problem. If possible, send in patches such that the patch program will apply them. Context diffs are the best, then normal diffs. Don't send ed scripts-- - I've probably changed my copy since the version you have. - Watch for warp patches in comp.sources.bugs. Patches will generally be - in a form usable by the patch program. If you are just now bringing up - warp and aren't sure how many patches there are, write to me and I'll - send any you don't have. Your current patch level is shown in patchlevel.h. - - NEW FEATURES IN THIS RELEASE ! Uses a Configure script for greater portability. ! Space Amoebas!!! ! Pirates ! Friendly Freighters ! Harry Mudd ! Damage ! Keyboard mapping --- 15,46 ---- Please read all the directions below before you proceed any further, and then follow them carefully. Failure to do so may void your warranty. :-) Installation ! 1) make depend This will look for all the includes and modify Makefile accordingly. Configure will offer to do this for you. ! 2) make This will attempt to make warp in the current directory. ! 3) make install This will put warp into a public directory (normally /usr/games). ! It will also put the man pages in the usual place. ! 4) Read the manual entry before running warp. ! 5) Feel free to edit warp.news. ! 6) IMPORTANT! Help save the world! Communicate any problems and ! suggested patches to the 2BSD maintainers / developers. If possible, send in patches such that the patch program will apply them. Context diffs are the best, then normal diffs. Don't send ed scripts-- NEW FEATURES IN THIS RELEASE ! Remove Configure. Trim config.h to minimum. Create customary 2.11BSD Makefile *** /dev/null Mon Mar 31 15:56:34 2025 --- ./usr/src/games/warp/Makefile Mon Mar 31 14:09:10 2025 *************** *** 0 **** --- 1,92 ---- + # @(#)Makefile 1.0 (2.11BSD) 2025/3/31 + # + # Revision 7.0.1.1a 87/26/08 03:45:03 games + # Fix minor shell continuation bug and put in a pdp-11 overlay scheme. + # + # Revision 7.0.1.1 86/12/12 16:54:03 lwall + # Frozen for net release. + # + # Revision 7.0 86/10/08 15:11:42 lwall + # Split into separate files. Added amoebas and pirates. + # + # + CC = cc + bin = /usr/games + mansrc = /usr/man/cat6 + CFLAGS = -O + LDFLAGS = -i + CHOWNER = daemon + privlib = /usr/games/lib/warp + + libs = -ltermlib /usr/lib/libtermlib.a -lm + + util = smap.0 smap.1 smap.2 smap.3 smap.4 smap.5 smap.6 smap.7 + + INCS = bang.h init.h intrp.h move.h ndir.h patchlevel.h object.h play.h \ + score.h sig.h term.h them.h us.h util.h version.h warp.h weapon.h + + SRCS = bang.c init.c intrp.c move.c object.c play.c score.c sig.c term.c \ + them.c us.c util.c version.c warp.c weapon.c + + OBJS = bang.o init.o intrp.o move.o object.o play.o score.o sig.o term.o \ + them.o us.o util.o version.o warp.o weapon.o + + lintflags = -hbxac + + SHELL = /bin/sh + + .c.o: + $(CC) -c $(CFLAGS) $*.c + + all: warp $(util) warp.0 + + warp: $(OBJS) + ld -X -i /lib/crt0.o object.o play.o score.o util.o version.o warp.o \ + weapon.o init.o intrp.o \ + -Z sig.o term.o \ + -Z them.o us.o \ + -Z bang.o move.o \ + -Y $(libs) -lc -o warp + + warp.0: warp.man + /usr/man/manroff warp.man > warp.0 + + install: all + -mkdir -p $(privlib) + chown bin $(privlib) + chmod 755 $(privlib) + install -s -o bin -m 4711 warp /usr/games/warp + install -c -o bin -m 644 $(util) warp.doc warp.news $(privlib) + install -c -o bin -g bin -m 444 warp.0 ${DESTDIR}/usr/man/cat6 + + clean: + rm -f warp $(OBJS) $(util) sm warp.0 + + lint: + lint $(lintflags) $(SRCS) > warp.fuzz + + smap.0: smp.0 sm + ./sm smap.0 + smap.1: smp.1 sm + ./sm smap.1 + smap.2: smp.2 sm + ./sm smap.2 + smap.3: smp.3 sm + ./sm smap.3 + smap.4: smp.4 sm + ./sm smap.4 + smap.5: smp.5 sm + ./sm smap.5 + smap.6: smp.6 sm + ./sm smap.6 + smap.7: smp.7 sm + ./sm smap.7 + sm: sm.c + cc sm.c -o sm + + depend: $(SRCS) + mkdep ${CFLAGS} $(SRCS) + + # AUTOMATICALLY GENERATED MAKE DEPENDENCIES--PUT NOTHING BELOW THIS LINE + # DO NOT DELETE THIS LINE -- mkdep uses it. + # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. *** /dev/null Mon Mar 31 15:56:34 2025 --- ./usr/src/games/warp/config.h Mon Mar 31 14:23:18 2025 *************** *** 0 **** --- 1,134 ---- + /* + * config.h + */ + + /* CHARSPRINTF: + * This symbol is defined if this system declares "char *sprintf()" in + * stdio.h. The trend seems to be to declare it as "int sprintf()". It + * is up to the package author to declare sprintf correctly based on the + * symbol. + */ + #define CHARSPRINTF /**/ + + /* FCNTL: + * This symbol, if defined, indicates to the C program that it should + * include fcntl.h. + */ + #define FCNTL /**/ + + /* FTIMER: + * This symbol, if defined, indicates that the ftime() routine exists. + */ + #define FTIMER /**/ + + /* GETHOSTNAME: + * This symbol, if defined, indicates that the C program may use the + * gethostname() routine to derive the host name. See also DOUNAME + * and PHOSTNAME. + */ + #define GETHOSTNAME /**/ + + /* HAVETERMLIB: + * This symbol, when defined, indicates that termlib-style routines + * are available. There is nothing to include. + */ + #define HAVETERMLIB /**/ + + /* IOCTL: + * This symbol, if defined, indicates that sys/ioctl.h exists and should + * be included. + */ + #define IOCTL /**/ + + /* NORMSIG: + * This symbol, if defined, indicates that normal signal handling routines + * should be used, as opposed to the ones in 4.1bsd (sigset, etc.). + */ + #define NORMSIG /**/ + + /* PORTABLE: + * This symbol, if defined, indicates to the C program that it should + * not assume that it is running on the machine it was compiled on. + * The program should be prepared to look up the host name, translate + * generic filenames, use PATH, etc. + */ + #define PORTABLE /**/ + + /* SIGNEDCHAR: + * This symbol, if defined, indicates that characters are a signed type. + * If not defined, things declared as signed characters (and that make + * use of negative values) should probably be declared as shorts instead. + */ + #define SIGNEDCHAR /**/ + + /* HOSTNAME: + * This symbol contains name of the host the program is going to run on. + * The domain is not kept with hostname, but must be gotten from MYDOMAIN. + * The dot comes with MYDOMAIN, and need not be supplied by the program. + * If gethostname() or uname() exist, HOSTNAME may be ignored. + */ + /* MYDOMAIN: + * This symbol contains the domain of the host the program is going to + * run on. The domain must be appended to HOSTNAME to form a complete + * host name. The dot comes with MYDOMAIN, and need not be supplied by + * the program. If the host name is derived from PHOSTNAME, the domain + * may or may not already be there, and the program should check. + */ + #define HOSTNAME "kazoo" /**/ + #define MYDOMAIN ".uucp" /**/ + + + /* PASSNAMES: + * This symbol, if defined, indicates that full names are stored in + * the /etc/passwd file. + */ + /* BERKNAMES: + * This symbol, if defined, indicates that full names are stored in + * the /etc/passwd file in Berkeley format (name first thing, everything + * up to first comma, with & replaced by capitalized login id, yuck). + */ + #define PASSNAMES /* (undef to take name from ~/.fullname) */ + #define BERKNAMES /* (that is, ":name,stuff:") */ + + /* PREFSHELL: + * This symbol contains the full name of the preferred user shell on this + * system. Usual values are /bin/csh, /bin/ksh, /bin/sh. + */ + #define PREFSHELL "/bin/csh" /**/ + + /* RANDBITS: + * This symbol contains the number of bits of random number the rand() + * function produces. Usual values are 15, 16, and 31. + */ + #define RANDBITS 15 /**/ + + /* Reg1: + * This symbol, along with Reg2, Reg3, etc. is either the word "register" + * or null, depending on whether the C compiler pays attention to this + * many register declarations. The intent is that you don't have to + * order your register declarations in the order of importance, so you + * can freely declare register variables in sub-blocks of code and as + * function parameters. Do not use Reg more than once per routine. + */ + + #define Reg1 register /**/ + #define Reg2 register /**/ + #define Reg3 register /**/ + #define Reg4 /**/ + #define Reg5 /**/ + #define Reg6 /**/ + #define Reg7 /**/ + #define Reg8 /**/ + #define Reg9 /**/ + #define Reg10 /**/ + #define Reg11 /**/ + #define Reg12 /**/ + #define Reg13 /**/ + #define Reg14 /**/ + #define Reg15 /**/ + #define Reg16 /**/ + + /* ROOTID: + * This symbol contains the uid of root, normally 0. + */ + #define ROOTID 0 /**/ *** ./usr/src/games/warp/warp.news.old Mon Mar 31 16:40:45 2025 --- ./usr/src/games/warp/warp.news Mon Mar 31 16:41:23 2025 *************** *** 1,4 **** *** WARP NEWS *** Welcome to warp! Please send any gripes, comments, fantastic ideas, etc. ! to lwall@sdcrdcf.uucp (Larry Wall). --- 1,4 ---- *** WARP NEWS *** Welcome to warp! Please send any gripes, comments, fantastic ideas, etc. ! to bugs@2bsd.com *** ./usr/src/games/warp/warp.h.old Sat Jan 21 21:39:31 1995 --- ./usr/src/games/warp/warp.h Mon Mar 31 16:38:13 2025 *************** *** 1,4 **** ! /* $Header: warp.h,v 7.0.1.3 95/21/1 17:08:42 lwall Exp $ */ /* $Log: warp.h,v $ * Revision 7.0.1.3 95/21/1 18:40:00 sms --- 1,4 ---- ! /* @(#)warp.h 1.0 (2.11BSD) 2025/3/31 /* $Log: warp.h,v $ * Revision 7.0.1.3 95/21/1 18:40:00 sms *************** *** 47,59 **** #define WARPMACRO "%X/Kbmap.%{TERM}" /* warp library */ ! #ifndef WARPLIB /* ~ and %l only ("~%l" is permissable) */ ! # ifdef PRIVLIB ! # define WARPLIB PRIVLIB ! # else ! # define WARPLIB "/usr/games/warp" ! # endif ! #endif EXT char *warplib; --- 47,53 ---- #define WARPMACRO "%X/Kbmap.%{TERM}" /* warp library */ ! #define WARPLIB "/usr/games/lib/warp" EXT char *warplib; *** VERSION.old Wed Mar 26 07:56:23 2025 --- VERSION Wed Mar 26 20:09:17 2025 *************** *** 1,5 **** ! Current Patch Level: 488 ! Date: March 26, 2025 2.11 BSD ============ --- 1,5 ---- ! Current Patch Level: 489 ! Date: March 31, 2025 2.11 BSD ============