billr@saab.CNA.TEK.COM (Bill Randle) (02/14/91)
Submitted-by: routley@tle.ENET.DEC.COM (Kevin Routley) Posting-number: Volume 12, Issue 35 Archive-name: larn/Patch4 Patch-To: larn: Volume 11, Issue 84-95 Environment: Unix, VMS, MS-DOS, termcap [Warning: this patch has some long (> 80 chars) lines that may get split if this article goes thru a bitnet site. If the patches don't apply, try editing the patch file and reapply the patches. -br] #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of shell archive." # Contents: patches04 larn_hlp.uue # Wrapped by billr@saab on Wed Feb 13 12:44:00 1991 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'patches04' -a "${1}" != "-c" ; then echo shar: Renaming existing file \"'patches04'\" to \"'patches04.orig'\" mv -f 'patches04' 'patches04.orig' fi echo shar: Extracting \"'patches04'\" \(31787 characters\) sed "s/^X//" >'patches04' <<'END_OF_FILE' X*** patchlevel_orig.h Tue Feb 12 10:53:38 1991 X--- patchlevel.h Tue Feb 12 10:53:35 1991 X*************** X*** 1 **** X! #define PATCHLEVEL 3 X--- 1 ---- X! #define PATCHLEVEL 4 X*** PATCHLOG_orig Tue Feb 12 10:53:47 1991 X--- PATCHLOG Tue Feb 12 10:53:42 1991 X*************** X*** 1,3 **** X--- 1,33 ---- X+ Patch4 X+ ====== X+ X+ For Pat Rankin (nethack.rankin@eql.caltech.edu). Under VMS, do a X+ getenv("TERM") before a getenv("TERMINAL"). Add more Dec terminals to the X+ termcap file. X+ X+ Courtesy of Andreas Wettengel (andreas@nixhhs.uucp). Modify bill.c to X+ produce RFC822-conformant mail headers, compiled using the new RFCMAIL X+ #define. This allows elm and other conformant mail programs to display X+ the Subject and Sender correctly. X+ X+ To satisfy several requests, I have brought back the descriptions of the X+ compile-time defines into the makefile. I have also updated the list to X+ include the more recent additions. X+ X+ Modify main.c to include and make use of PATCHLEVEL. This requires those X+ using MSDOS or OS/2 to change patchlevel.h to patchlev.h. The 'v' command X+ will now print out the patchlevel as part of the version information. X+ X+ As pointed out by Andreas Wettengal, the second parameter to tputs() should X+ be one if its to have no affect. X+ X+ Fix a bug pointed out by Gordon D. (frog!gordon). Reading a scroll of X+ teleport without picking it up leaves it behind when you teleport, allowing X+ you to read it again. X+ X+ Fix the help file spelling mistakes and spell-casting lister in the help file X+ with escape sequences. X+ X Patch3 X ====== X X*** bill_orig.c Wed Jan 2 10:55:41 1991 X--- bill.c Mon Jan 7 13:21:29 1991 X*************** X*** 23,28 X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X X--- 23,29 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 24,29 X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X X--- 25,31 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: LRS (Larn Revenue Service)\n"); X*************** X*** 25,30 X if (lcreat(mail600) < 0) { write(1,"can't write 600 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X lprcat("\n We heard you survived the caverns of Larn. Let me be the"); X X--- 27,36 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: LRS (Larn Revenue Service)\n"); X+ lprcat("Subject: Undeclared Income\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X #endif /*RFCMAIL*/ X*************** X*** 27,32 X # endif X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X lprcat("\n We heard you survived the caverns of Larn. Let me be the"); X lprcat("\nfirst to congratulate you on your success. It is quite a feat."); X lprcat("\nIt must also have been very profitable for you."); X X--- 33,39 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" the LRS (Larn Revenue Service)\n"); X standout("\nSubject:"); lprcat(" undeclared income\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n We heard you survived the caverns of Larn. Let me be the"); X lprcat("\nfirst to congratulate you on your success. It is quite a feat."); X lprcat("\nIt must also have been very profitable for you."); X*************** X*** 57,62 X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X X--- 64,70 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 58,63 X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X X--- 66,72 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: King (His Majesty King Wilfred of Larndom)\n"); X*************** X*** 59,64 X if (lcreat(mail600) < 0) { write(1,"can't write 601 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X lprcat("\n I have heard of your magnificent feat, and I, King Wilfred,"); X X--- 68,77 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: King (His Majesty King Wilfred of Larndom)\n"); X+ lprcat("Subject: A Noble Deed\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X #endif /*RFCMAIL*/ X*************** X*** 61,66 X # endif X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X lprcat("\n I have heard of your magnificent feat, and I, King Wilfred,"); X lprcat("\nforthwith declare today to be a national holiday. Furthermore,"); X lprcat("\nhence three days, Ye be invited to the castle to receive the"); X X--- 74,80 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" His Majesty King Wilfred of Larndom\n"); X standout("\nSubject:"); lprcat(" a noble deed\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n I have heard of your magnificent feat, and I, King Wilfred,"); X lprcat("\nforthwith declare today to be a national holiday. Furthermore,"); X lprcat("\nhence three days, Ye be invited to the castle to receive the"); X*************** X*** 78,83 X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Count Endelford\n"); X X--- 92,98 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 79,84 X sprintf(mail600,"%s%dmail600",MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X X--- 94,100 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: Endelford (Count Endelford)\n"); X*************** X*** 80,85 X if (lcreat(mail600) < 0) { write(1,"can't write 602 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X lprcat("\n I heard (from sources) of your journey. Congratulations!"); X X--- 96,105 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: Endelford (Count Endelford)\n"); X+ lprcat("Subject: You Bastard!\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X #endif /*RFCMAIL*/ X*************** X*** 82,87 X # endif X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X lprcat("\n I heard (from sources) of your journey. Congratulations!"); X lprcat("\nYou Bastard! With several attempts I have yet to endure the"); X lprcat(" caves,\nand you, a nobody, makes the journey! From this time"); X X--- 102,108 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" Count Endelford\n"); X standout("\nSubject:"); lprcat(" You Bastard!\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n I heard (from sources) of your journey. Congratulations!"); X lprcat("\nYou Bastard! With several attempts I have yet to endure the"); X lprcat(" caves,\nand you, a nobody, makes the journey! From this time"); X*************** X*** 97,102 X # ifdef MAIL X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X X--- 118,124 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 98,103 X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X X--- 120,126 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: Mainair (Mainair, Duke of Larnty)\n"); X*************** X*** 99,104 X if (lcreat(mail600) < 0) { write(1,"can't write 603 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X lprcat("\n With a certainty a hero I declare to be amongst us! A nod of"); X X--- 122,131 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: Mainair (Mainair, Duke of Larnty)\n"); X+ lprcat("Subject: High Praise\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X #endif /*RFCMAIL*/ X*************** X*** 101,106 X # endif X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X lprcat("\n With a certainty a hero I declare to be amongst us! A nod of"); X lprcat("\nfavour I send to thee. Me thinks Count Endelford this day of"); X lprcat("\nright breath'eth fire as of dragon of whom ye are slayer. I"); X X--- 128,134 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" Mainair, Duke of Larnty\n"); X standout("\nSubject:"); lprcat(" High Praise\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n With a certainty a hero I declare to be amongst us! A nod of"); X lprcat("\nfavour I send to thee. Me thinks Count Endelford this day of"); X lprcat("\nright breath'eth fire as of dragon of whom ye are slayer. I"); X*************** X*** 118,123 X # ifdef MAIL X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X X--- 146,152 ----- X # ifdef MAIL X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X*************** X*** 119,124 X sprintf(mail600,"%s%dmail600", MAILTMP,pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X X--- 148,154 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif /*RFCMAIL*/ X # endif X #ifdef RFCMAIL X lprcat("From: StMary (St. Mary's Children's Home)\n"); X*************** X*** 120,125 X if (lcreat(mail600) < 0) { write(1,"can't write 604 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X lprcat("\n News of your great conquests has spread to all of Larndom."); X X--- 150,159 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif /*RFCMAIL*/ X # endif X+ #ifdef RFCMAIL X+ lprcat("From: StMary (St. Mary's Children's Home)\n"); X+ lprcat("Subject: These Poor Children\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X #endif /*RFCMAIL*/ X*************** X*** 122,127 X # endif X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X lprcat("\n News of your great conquests has spread to all of Larndom."); X lprcat("\nMight I have a moment of a great man's time. We here at St."); X lprcat("\nMary's Children's Home are very poor, and many children are"); X X--- 156,162 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" St. Mary's Children's Home\n"); X standout("\nSubject:"); lprcat(" these poor children\n"); X+ #endif /*RFCMAIL*/ X lprcat("\n News of your great conquests has spread to all of Larndom."); X lprcat("\nMight I have a moment of a great man's time. We here at St."); X lprcat("\nMary's Children's Home are very poor, and many children are"); X*************** X*** 140,145 X # ifdef MAIL X sprintf(mail600, "%s%dmail600", MAILTMP, pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X X--- 175,181 ----- X # ifdef MAIL X sprintf(mail600, "%s%dmail600", MAILTMP, pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X+ #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif X # endif X*************** X*** 141,146 X sprintf(mail600, "%s%dmail600", MAILTMP, pid); /* prepare path */ X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X X--- 177,183 ----- X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X #ifndef RFCMAIL X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X+ #endif X # endif X #ifdef RFCMAIL X lprcat("From: CancerSociety (The National Cancer Society of Larn)\n"); X*************** X*** 142,147 X if (lcreat(mail600) < 0) { write(1,"can't write 605 letter\n",23); return(0);} X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X # endif X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X lprcat("\nCongratulations on your successful expedition. We are sure much"); X X--- 179,188 ----- X lprcat("\n\n\n\n\n\n\n\n\n\n\n\n"); X #endif X # endif X+ #ifdef RFCMAIL X+ lprcat("From: CancerSociety (The National Cancer Society of Larn)\n"); X+ lprcat("Subject: Hope\n\n"); X+ #else /*RFCMAIL*/ X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X #endif /*RFCMAIL*/ X*************** X*** 144,149 X # endif X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X lprcat("\nCongratulations on your successful expedition. We are sure much"); X lprcat("\ncourage and determination were needed on your quest. There are"); X lprcat("\nmany though, that could never hope to undertake such a journey"); X X--- 185,191 ----- X #else /*RFCMAIL*/ X standout("From:"); lprcat(" The National Cancer Society of Larn\n"); X standout("\nSubject:"); lprcat(" hope\n"); X+ #endif /*RFCMAIL*/ X lprcat("\nCongratulations on your successful expedition. We are sure much"); X lprcat("\ncourage and determination were needed on your quest. There are"); X lprcat("\nmany though, that could never hope to undertake such a journey"); X*** io_orig.c Tue Feb 12 10:52:16 1991 X--- io.c Tue Feb 12 10:52:05 1991 X*************** X*** 748,756 **** X switch (tgetent(termbuf, term)) X # else X # ifdef VMS X! term = getenv("TERMINAL"); X if (term == NULL) X! term = getenv("TERM"); X switch (tgetent(termbuf, term)) X # else X switch (tgetent(termbuf, term = getenv("TERM"))) X--- 748,756 ---- X switch (tgetent(termbuf, term)) X # else X # ifdef VMS X! term = getenv("TERM"); X if (term == NULL) X! term = getenv("TERMINAL"); X switch (tgetent(termbuf, term)) X # else X switch (tgetent(termbuf, term = getenv("TERM"))) X*************** X*** 927,949 **** X { X if (*str>=32) { ttputch (*str); curx++; } X else switch (*str) { X! case CLEAR: tputs (CL, 0, ttputch); curx = cury = 0; X break; X X! case CL_LINE: tputs (CE, 0, ttputch); X break; X X! case CL_DOWN: tputs (CD, 0, ttputch); X break; X X! case ST_START: tputs (SO, 0, ttputch); X break; X X! case ST_END: tputs (SE, 0, ttputch); X break; X X! case CURSOR: curx = *++str - 1; cury = *++str - 1; X! tputs (tgoto (CM, curx, cury), 0, ttputch); X break; X X case '\n': if ((cury == 23) && enable_scroll) X--- 927,949 ---- X { X if (*str>=32) { ttputch (*str); curx++; } X else switch (*str) { X! case CLEAR: tputs (CL, 1, ttputch); curx = cury = 0; X break; X X! case CL_LINE: tputs (CE, 1, ttputch); X break; X X! case CL_DOWN: tputs (CD, 1, ttputch); X break; X X! case ST_START: tputs (SO, 1, ttputch); X break; X X! case ST_END: tputs (SE, 1, ttputch); X break; X X! case CURSOR: curx = *++str - 1; cury = *++str - 1; X! tputs (tgoto (CM, curx, cury), 0, ttputch); X break; X X case '\n': if ((cury == 23) && enable_scroll) X*************** X*** 953,971 **** X if (++scrline > 23) scrline=19; X X if (++scrline > 23) scrline=19; X! tputs (tgoto (CM, 0, scrline), 0, ttputch); X! tputs (CE, 0, ttputch); X X if (--scrline < 19) scrline=23; X! tputs (tgoto (CM, 0, scrline), 0, ttputch); X! tputs (CE, 0, ttputch); X } X else X { X! tputs (tgoto (CM, 0, 19), 0, ttputch); X! tputs (DL, 0, ttputch); X! tputs (tgoto (CM, 0, 23), 0, ttputch); X! /* tputs (AL, 0, ttputch); */ X } X } X else X--- 953,971 ---- X if (++scrline > 23) scrline=19; X X if (++scrline > 23) scrline=19; X! tputs (tgoto (CM, 1, scrline), 0, ttputch); X! tputs (CE, 1, ttputch); X X if (--scrline < 19) scrline=23; X! tputs (tgoto (CM, 1, scrline), 0, ttputch); X! tputs (CE, 1, ttputch); X } X else X { X! tputs (tgoto (CM, 1, 19), 0, ttputch); X! tputs (DL, 1, ttputch); X! tputs (tgoto (CM, 1, 23), 0, ttputch); X! /* tputs (AL, 1, ttputch); */ X } X } X else X*************** X*** 976,986 **** X break; X case T_INIT: X if (TI) X! tputs(TI, 0, ttputch); X break; X case T_END: X if (TE) X! tputs(TE, 0, ttputch); X break; X default: X ttputch (*str); X--- 976,986 ---- X break; X case T_INIT: X if (TI) X! tputs(TI, 1, ttputch); X break; X case T_END: X if (TE) X! tputs(TE, 1, ttputch); X break; X default: X ttputch (*str); X*** main_orig.c Tue Feb 12 10:53:18 1991 X--- main.c Tue Feb 12 10:52:54 1991 X*************** X*** 4,13 **** X--- 4,15 ---- X #include "errno.h" X #include "setjmp.h" X #include "stdlib.h" X+ #include "patchlev.h" X #endif X X #include "header.h" X #ifndef MSDOS X+ #include "patchlevel.h" X # ifndef VMS X # include <pwd.h> X # endif VMS X*************** X*** 818,824 **** X case 'v': X yrepcount=0; X cursors(); X! lprintf("\nCaverns of Larn, Version %d.%d, Diff=%d",(long)VERSION,(long)SUBVERSION,(long)c[HARDGAME]); X if (wizard) lprcat(" Wizard"); nomove=1; X if (cheat) lprcat(" Cheater"); X lprcat(copyright); X--- 820,826 ---- X case 'v': X yrepcount=0; X cursors(); X! lprintf("\nCaverns of Larn, Version %d.%d.%d, Diff=%d",(long)VERSION,(long)SUBVERSION,(long)PATCHLEVEL,(long)c[HARDGAME]); X if (wizard) lprcat(" Wizard"); nomove=1; X if (cheat) lprcat(" Cheater"); X lprcat(copyright); X*************** X*** 1286,1296 **** X lprcat(" here. Read it?"); X if ((tempc = getyn()) == 'y') X { X if (i==OBOOK) X! readbook( iarg[playerx][playery] ); X else X! read_scroll( iarg[playerx][playery] ); X! forget(); X return; X } X else if (tempc != 'n' ) X--- 1288,1303 ---- X lprcat(" here. Read it?"); X if ((tempc = getyn()) == 'y') X { X+ int temp = iarg[playerx][playery]; X+ /* destroy the scroll first, in case its a teleport scroll. but X+ also must update player's knowledge to prevent a blank spot. X+ */ X+ forget(); X+ know[playerx][playery] = KNOWALL ; X if (i==OBOOK) X! readbook( temp ); X else X! read_scroll( temp ); X return; X } X else if (tempc != 'n' ) X*** Makefile_orig Tue Feb 12 10:53:31 1991 X--- Makefile Tue Feb 12 10:53:26 1991 X*************** X*** 1,4 **** X--- 1,61 ---- X+ ############################################################################ X # X+ # A list of available compile-time defines: X+ # X+ # BSD - use BSD specific features (mostly timer and signal stuff) X+ # BSD4.1 - use BSD4.1 to avoid some 4.2 dependencies (must be used with X+ # BSD above; do not mix with SYSV) X+ # DGK - Don Kneller (ported Larn from Unix to MS-DOS) specific X+ # changes. None are MS-DOS specific. This option will be X+ # going away in a future version. X+ # DGK_MSDOS - MS-DOS specific Don Kneller code. This will be merged with X+ # the MSDOS #define in a future version. X+ # DECRainbow - DEC Rainbow specific display code. X+ # DOCHECKPOINTS - if not defined, checkpoint files are periodically written X+ # by the larn process (no forking) if enabled in the .larnopts X+ # description file. Checkpointing is handy on an unreliable X+ # system, but takes CPU. Inclusion of DOCHECKPOINTS will cause X+ # fork()ing to perform the checkpoints (again if enabled in X+ # the .larnopts file). This usually avoids pauses in larn X+ # while the checkpointing is being done (on large machines). X+ # EXTRA - incorporates code to gather additional performance stats X+ # FLUSHNO=# - Set the input queue excess flushing threshold (default 5) X+ # HIDEBYLINK - if defined, the program attempts to hide from ps X+ # MACRORND - Define to use macro version of rnd() and rund() (fast & big) X+ # MAIL - system supports mail messages (see bill.c). Not useful on X+ # non-networked machines. X+ # MSDOS - MS-DOS specific code. X+ # OS2LARN - OS/2 Specific code. X+ # NONAP - causes napms() to return immediately instead of delaying X+ # n milliseconds. This define may be needed on some systems X+ # if the nap stuff does not work correctly (possible hang). X+ # nap() is primarilly used to delay for effect when casting X+ # missile type spells. X+ # NOVARARGS - Define for systems that don't have varargs (a default X+ # varargs will be used). X+ # RFCMAIL - mail messages are RFC822 conformant. Must be used with X+ # MAIL above. X+ # SAVEINHOME - put save files in users HOME instead of LARNHOME (default) X+ # SIGTSTP - define if your system provides the tty stop signal X+ # SIGVTALRM - define if your system supports the virtual time alarm signal X+ # SYSV - use system III/V (instead of V7) type ioctl calls X+ # TIMECHECK - incorporates code to disable play during working hours (8-5) X+ # UIDSCORE - Define to use user id's to manage scoreboard. Leaving this X+ # out will cause player id's from the file ".playerids" to X+ # be used instead. (.playerids is created upon demand). X+ # Only one entry per id # is allowed in each scoreboard X+ # (winning & non-winning). X+ # VT100 - Compile for using vt100 family of terminals. Omission of X+ # this define will cause larn to use termcap. X+ # WIZID=xxx - this is the userid (or playerid) of the wizard. Default is X+ # zero (superuser), which disables all wizard functions. X+ # Players must have this userid (or playerid) in order to X+ # become the non-scoring wizard player. Definition of WIZID X+ # to non-zero will enable the special wizard debugging X+ # commands. For root to become wizard, use WIZID= -1. X+ # X+ ############################################################################ X+ # X OBJ= action.o bill.o config.o create.o data.o diag.o display.o \ X fortune.o global.o help.o io.o main.o monster.o \ X moreobj.o movem.o msdos.o nap.o object.o regen.o savelev.o \ X*************** X*** 5,12 **** X scores.o signal.o spells.o spheres.o store.o \ X tok.o vms.o X # X # X- X CFLAGS=-DDGK -DBSD -D'LARNHOME="/usr/users/routley/larncc/"' X X larn122: $(OBJ) X--- 62,69 ---- X scores.o signal.o spells.o spheres.o store.o \ X tok.o vms.o X # X+ # LARNHOME is the directory where the larn data files will be installed. X # X CFLAGS=-DDGK -DBSD -D'LARNHOME="/usr/users/routley/larncc/"' X X larn122: $(OBJ) X*** termcap_orig.vms Tue Feb 12 10:53:57 1991 X--- termcap.vms Tue Feb 12 10:53:53 1991 X*************** X*** 20,27 **** X :rf=/usr/lib/tabset/vt100:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ X :sc=\E7:se=\E[m:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\ X :vt#3:xn: X! da|vt200|VT200-80|vt200-80|vt200-nam|dec vt200:\ X! :ae=4\E(B:as=2\E(<:tc=vt100p: X d0|vt100|VT100-80|vt100-80|vt100-am|dec vt100:\ X :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[;H\E[2J:\ X :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ X--- 20,35 ---- X :rf=/usr/lib/tabset/vt100:rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\ X :sc=\E7:se=\E[m:so=\E[7m:sr=\EM:ta=^I:ue=\E[m:up=\E[A:us=\E[4m:\ X :vt#3:xn: X! da|vt200|VT200-80|vt2xx|vt200-80|vt220|vt220-80|vt200-nam|dec vt200:\ X! :ae=4\E(B:as=2\E(<:se=2\E[27m:ue=2\E[24m:tc=vt100p: X! dd|vt200-132|vt220-132|VT200-132|vt200-w|dec vt200 132 cols:\ X! :co#132:tc=vt200: X! db|vt300|vt300-80|vt3xx|dec vt300|vt320|vt320-80|vt300-nam|VT300-80|dec vt300 80 cols:\ X! :ds=\E[1$}\E[;H\E[K\E[0$}:\ X! :es:fs=\E[0$}:hs:ts=\E[1$}\E[;H\E[K:\ X! :tc=vt200: X! dc|vt300-132|vt320-132|vt300-w|VT300-132|dec vt300 132 cols:\ X! :co#132:tc=vt300: X d0|vt100|VT100-80|vt100-80|vt100-am|dec vt100:\ X :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[;H\E[2J:\ X :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:\ X*************** X*** 33,41 **** X :sc=\E7:rc=\E8:cs=\E[%i%d;%dr: X d1|vt100-nam|vt100 w/no am:\ X :am@:xn@:tc=vt100-am: X! d3|vt132|vt132:\ X :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100: X! d6|vt125|vt125-am|DEC vt125:\ X :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[H\E[2J:\ X :le=^H:am:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:ce=3\E[K:cd=50\E[J:\ X :so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:\ X--- 41,51 ---- X :sc=\E7:rc=\E8:cs=\E[%i%d;%dr: X d1|vt100-nam|vt100 w/no am:\ X :am@:xn@:tc=vt100-am: X! d3|vt132|vt132-80|dec vt132:\ X :al=99\E[L:dl=99\E[M:ip=7:dc=7\E[P:ei=\E[4l:im=\E[4h:xn:dN#30:tc=vt100: X! d4|vt132-132|vt132 132 cols:\ X! :co#132:tc=vt132: X! d6|vt125|vt125-80|vt125-am|DEC vt125:\ X :cr=^M:do=^J:nl=^J:bl=^G:co#80:li#24:cl=50\E[H\E[2J:\ X :le=^H:am:bs:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:ce=3\E[K:cd=50\E[J:\ X :so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:md=2\E[1m:mr=2\E[7m:mb=2\E[5m:\ X*************** X*** 43,53 **** X :ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:\ X :kr=\EOC:kl=\EOD:kb=^H:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:\ X :pt:sr=5\EM:vt#3:sc=\E7:rc=\E8:cs=\E[%i%d;%dr: X! dt|vt100-w|dec vt100 132 cols (w/advanced video):\ X :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-am: X dv|vt100-w-nam|dec vt100 132 cols (w/advanced video), no am:\ X :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:vt@:tc=vt100-nam: X! dw|vt52|dec vt52:\ X :cr=^M:do=^J:nl=^J:bl=^G:\ X :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:nd=\EC:\ X :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: X--- 53,63 ---- X :ks=\E[?1h\E=:ke=\E[?1l\E>:ku=\EOA:kd=\EOB:\ X :kr=\EOC:kl=\EOD:kb=^H:ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:ta=^I:\ X :pt:sr=5\EM:vt#3:sc=\E7:rc=\E8:cs=\E[%i%d;%dr: X! dt|vt100-132|vt100-w|dec vt100 132 cols (w/advanced video):\ X :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:tc=vt100-am: X dv|vt100-w-nam|dec vt100 132 cols (w/advanced video), no am:\ X :co#132:li#24:rs=\E>\E[?3h\E[?4l\E[?5l\E[?8h:vt@:tc=vt100-nam: X! dw|vt52|vt52-80|dec vt52:\ X :cr=^M:do=^J:nl=^J:bl=^G:\ X :le=^H:bs:cd=\EJ:ce=\EK:cl=\EH\EJ:cm=\EY%+ %+ :co#80:li#24:nd=\EC:\ X :ta=^I:pt:sr=\EI:up=\EA:ku=\EA:kd=\EB:kr=\EC:kl=\ED:kb=^H: END_OF_FILE if test 31787 -ne `wc -c <'patches04'`; then echo shar: \"'patches04'\" unpacked with wrong size! fi # end of 'patches04' if test -f 'larn_hlp.uue' -a "${1}" != "-c" ; then echo shar: Renaming existing file \"'larn_hlp.uue'\" to \"'larn_hlp.uue.orig'\" mv -f 'larn_hlp.uue' 'larn_hlp.uue.orig' fi echo shar: Extracting \"'larn_hlp.uue'\" \(11216 characters\) sed "s/^X//" >'larn_hlp.uue' <<'END_OF_FILE' Xbegin 644 larn.hlp XM-R`@("!796QC;VUE('1O('1H92!G86UE(&]F($QA<FXN("!!="!T:&ES(&UO XM;65N="P@>6]U(&9A8V4@82!G<F5A="!P<F]B;&5M+@I9;W5R(&1A=6=H=&5R XM(&AA<R!C;VYT<F%C=&5D(&$@<W1R86YG92!D:7-E87-E+"!A;F0@;F]N92!O XM9B!Y;W5R(&AO;64@<F5M961I97,*<V5E;2!T;R!H879E(&%N>2!E9F9E8W0N XM("!9;W4@<V5N<V4@=&AA="!S:&4@:7,@:6X@;6]R=&%L(&1A;F=E<BP@86YD XM('EO=2!M=7-T"G1R>2!T;R!S879E(&AE<BX@(%1I;64@86=O('EO=2!H96%R XM9"!O9B!A(&QA;F0@;V8@9W)E870@9&%N9V5R(&%N9"!O<'!O<G1U;FET>2X* XM4&5R:&%P<R!H97)E(&ES('1H92!S;VQU=&EO;B!Y;W4@;F5E9"X*"B`@("!) XM="!H87,@8F5E;B!S86ED('1H870@=&AE<F4@;VYC92!W87,@82!G<F5A="!M XM86=I8VEA;B!W:&\@8V%L;&5D(&AI;7-E;&8*4&]L:6YN96%U<RX@($UA;GD@ XM>65A<G,@86=O+"!A9G1E<B!H879I;F<@;6%N>2!M:7)A8W5L;W5S('-U8V-E XM<W-E<RP@4&]L:6YN96%U<PIR971I<F5D('1O('1H92!C879E<FYS(&]F($QA XM<FXL('=H97)E(&AE(&1E=F]T960@;6]S="!O9B!H:7,@=&EM92!T;R!T:&4* XM8W)E871I;VX@;V8@;6%G:6,N("`@4G5M;W)S(&AA=F4@:70@=&AA="!O;F4@ XM9&%Y(%!O;&EN;F5A=7,@<V5T(&]U="!T;R!D:7-P96P*86X@871T86-K:6YG XM(&%R;7D@:6X@82!F;W)E<W0@<V]M92!D:7-T86YC92!T;R!T:&4@;F]R=&@N XM("!)="!I<R!B96QI979E9"!T:&%T"FAE<F4@:&4@;65T(&AI<R!D96UI<V4N XM"@H@("`@5&AE(&-A=F5R;G,@;V8@3&%R;BP@:70@:7,@=&AO=6=H="P@;75S XM="!B92!M86=N:69I8V5N="!I;B!D97-I9VXL"F%N9"!C;VYT86EN(&UU8V@@ XM;6%G:6,@86YD('1R96%S=7)E+B`@3VYE(&]P=&EO;B!Y;W4@:&%V92!I<R!T XM;R!U;F1E<G1A:V4@80IJ;W5R;F5Y(&EN=&\@=&AE<V4@8V%V97)N<RX*"@H@ XM("`@1V]O9"!,=6-K(2`@66]U)W)E(&=O:6YG('1O(&YE960@:70A"@H*"@H@ XM("`@("`@("`@("`@("`@&ULT;4AE;'`@1FEL92!F;W(@5&AE($-A=F5R;G,@ XM;V8@3&%R;BP@4')O;7!T($UO9&4;6VT*"F(@(&UO=F4@<V]U=&AW97-T("`@ XM("`@("`@($(@(')U;B!S;W5T:'=E<W0@("`@("`@("`@("!3("!S879E('1H XM92!G86UE"F@@(&UO=F4@;&5F="`@("`@("`@("`@("`@($@@(')U;B!L969T XM("`@("`@("`@("`@("`@("`N("!S=&%Y(&AE<F4*:B`@;6]V92!D;W=N("`@ XM("`@("`@("`@("`@2B`@<G5N(&1O=VX@("`@("`@("`@("`@("`@(%X@(&ED XM96YT:69Y(&$@=')A<`IK("!M;W9E('5P("`@("`@("`@("`@("`@("!+("!R XM=6X@=7`@("`@("`@("`@("`@("`@("`@5"`@=&%K92!O9F8@87)M;W(*;"`@ XM;6]V92!R:6=H="`@("`@("`@("`@("`@3"`@<G5N(')I9VAT"FX@(&UO=F4@ XM<V]U=&AE87-T("`@("`@("`@($X@(')U;B!S;W5T:&5A<W0*=2`@;6]V92!N XM;W)T:&5A<W0@("`@("`@("`@52`@<G5N(&YO<G1H96%S=`IY("!M;W9E(&YO XM<G1H=V5S="`@("`@("`@("!9("!R=6X@;F]R=&AW97-T("`@("`@("`@("`@ XM7DP@<F5D<F%W('1H92!S8W)E96X*8R`@8V%S="!A('-P96QL("`@("`@("`@ XM("`@6B`@=&5L97!O<G0@>6]U<G-E;&8*9"`@9')O<"!A;B!I=&5M("`@("`@ XM("`@("`@92`@96%T('-O;65T:&EN9PIG("!G970@<')E<V5N="!P86-K('=E XM:6=H="!0("!G:79E('1A>"!S=&%T=7,*:2`@:6YV96YT;W)Y('EO=7(@<&]C XM:V5T<R`@22`@;&ES="!A;&P@:71E;7,@9F]U;F0@("`@(#\@('1H:7,@:&5L XM<"!S8W)E96X*<2`@<75A9F8@82!P;W1I;VX@("`@("`@("`@42`@<75I="!T XM:&4@9V%M90IR("!R96%D(&$@<V-R;VQL("`@("`@("`@("!V("!P<FEN="!P XM<F]G<F%M('9E<G-I;VX*=R`@=VEE;&0@82!W96%P;VX@("`@("`@("`@5R`@ XM=V5A<B!A<FUO<B`@("`@("`@("`@("`@(%Y,(')E9')A=R!T:&4@<V-R965N XM"@H*"@H*"B`@("`@("`@("`@("`@("`;6S1M2&5L<"!&:6QE(&9O<B!4:&4@ XM0V%V97)N<R!O9B!,87)N+"!#;VUM86YD($UO9&4;6VT*"F(@(&UO=F4@<V]U XM=&AW97-T("`@("`@("`@($(@(')U;B!S;W5T:'=E<W0@("`@("`@("`@("!! XM("!D97-E8W)A=&4@86X@86QT87(*8R`@8V%S="!A('-P96QL("`@("`@("`@ XM("`@0R`@8VQO<V4@82!D;V]R("`@("`@("`@("`@(%H@('1E;&5P;W)T('EO XM=7)S96QF"F0@(&1R;W`@86X@:71E;2`@("`@("`@("`@($0@(&1R:6YK(&%T XM(&$@9F]U;G1A:6X@("`@("`\("!G;R!U<"!S=&%I<G,@;W(*92`@96%T('-O XM;65T:&EN9R`@("`@("`@("`@12`@96YT97(@82!S=&]R92P@9'5N9V5O;B`@ XM("`@('9O;&-A;FEC('-H869T"F<@(&=E="!P<F5S96YT('!A8VL@=V5I9VAT XM($<@(&=I=F4@=&AE('-T86ER<R!A(&MI8VL@("`^("!G;R!D;W=N('-T86ER XM<R!O<@IH("!M;W9E(&QE9G0@("`@("`@("`@("`@("!(("!R=6X@;&5F="`@ XM("`@("`@("`@("`@("`@("`@=F]L8V%N:6,@<VAA9G0*:2`@:6YV96YT;W)Y XM('EO=7(@<&]C:V5T<R`@22`@;&ES="!A;&P@:71E;7,@9F]U;F0@("`@(#\@ XM('1H:7,@:&5L<"!S8W)E96X*:B`@;6]V92!D;W=N("`@("`@("`@("`@("`@ XM2B`@<G5N(&1O=VX@("`@("`@("`@("`@("`@(%X@(&ED96YT:69Y(&$@=')A XM<`IK("!M;W9E('5P("`@("`@("`@("`@("`@("!+("!R=6X@=7`@("`@("`@ XM("`@("`@("`@("`@+"`@<&EC:R!U<"!I=&5M"FP@(&UO=F4@<FEG:'0@("`@ XM("`@("`@("`@($P@(')U;B!R:6=H="`@("`@("`@("`@("`@("`Z("!L;V]K XM(&%T(&]B:F5C=`IN("!M;W9E('-O=71H96%S="`@("`@("`@("!.("!R=6X@ XM<V]U=&AE87-T"B`@("`@("`@("`@("`@("`@("`@("`@("`@($\@(&]P96X@ XM82!D;V]R(&]R(&-H97-T("`@("`N("!S=&%Y(&AE<F4*<"`@<')A>2!A="!A XM;B!A;'1A<B`@("`@("`@4"`@9VEV92!T87@@<W1A='5S"G$@('%U869F(&$@ XM<&]T:6]N("`@("`@("`@(%$@('%U:70@=&AE(&=A;64*<B`@<F5A9"!A('-C XM<F]L;"`@("`@("`@("`@4B`@<F5M;W9E(&=E;7,@9G)O;2!T:')O;F4*<R`@ XM<VET(&]N(&$@=&AR;VYE("`@("`@("`@4R`@<V%V92!T:&4@9V%M90IT("!T XM:61Y('5P(&%T(&$@9F]U;G1A:6X@("!4("!T86ME(&]F9B!A<FUO<@IU("!M XM;W9E(&YO<G1H96%S="`@("`@("`@("!5("!R=6X@;F]R=&AE87-T"G8@('!R XM:6YT('!R;V=R86T@=F5R<VEO;@IW("!W:65L9"!A('=E87!O;B`@("`@("`@ XM("!7("!W96%R(&%R;6]R"GD@(&UO=F4@;F]R=&AW97-T("`@("`@("`@(%D@ XM(')U;B!N;W)T:'=E<W0@("`@("`@("`@("!>3"!R961R87<@=&AE('-C<F5E XM;@H@("`@("`@("`@("`@("`@&ULW;5-P96-I86P@3F]T97,;6VT*"E=H96X@ XM&ULW;61R;W!P:6YG(&=O;&0;6VTL(&EF('EO=2!T>7!E("<J)R!A<R!Y;W5R XM(&%M;W5N="P@86QL('EO=7(@9V]L9"!G971S(&1R;W!P960N"DEN(&=E;F5R XM86PL('1Y<&EN9R!I;B`G*B<@;65A;G,@86QL(&]F('=H870@>6]U<B!I;G1E XM<F5S=&5D(&EN+B`@5&AI<R!I<R!T<G5E"G=H96X@=FES:71I;F<@=&AE(&)A XM;FLL(&]R('=H96X@8V]N=')I8G5T:6YG(&%T(&%L=&%R<RX*"DQA<FX@;F5E XM9',@=&AE($%.4TDN4UE3("AO<B!P<F5F97)A8FQY+"!T:&4@3D%.4TDN4UE3 XM*2!D979I8V4@9')I=F5R(&EN<W1A;&QE9`II;B!Y;W5R($-/3D9)1RY365,@ XM9FEL92X@(%1H92!S=7!P;&EE9"`B=&5R;6-A<"(@9FEL92!D97-C<FEB97,@ XM=&AE(&5S8V%P90IS97%U96YC97,@=&\@8VAA;F=E('9I9&5O(&UO9&5S("AS XM964@8V@@,3,@;V8@=&AE($1/4R`R+C`@;6%N=6%L*2X@(%-E92!T:&4*(E1% XM4DU#05`B('-E8W1I;VX@:6X@3$%23BY$3T,@9F]R(&9U<G1H97(@9&5T86EL XM<RX*"E=H96X@:6X@=&AE('-T;W)E+"!T<F%D:6YG('!O<W0L('-C:&]O;"P@ XM;W(@:&]M92P@86X@&ULW;3QE<V-A<&4^&UMM('=I;&P@9V5T('EO=2!O=70N XM"@I7:&5N(&-A<W1I;F<@82!S<&5L;"P@:68@>6]U(&YE960@82!L:7-T(&]F XM('-P96QL<R!Y;W4@8V%N(&-A<W0L('1Y<&4@)QM;-VU)&UMM)R!A<PIT:&4@ XM9FER<W0@;&5T=&5R(&]F('EO=7(@<W!E;&PN("!4:&4@879A:6QA8FQE(&QI XM<W0@;V8@<W!E;&QS('=I;&P@8F4@<VAO=VXL"F%F=&5R('=H:6-H('EO=2!M XM87D@96YT97(@=&AE('-P96QL(&-O9&4N("!4:&ES(&]N;'D@=V]R:W,@;VX@ XM=&AE(#%S="!L971T97(*;V8@=&AE('-P96QL('EO=2!A<F4@8V%S=&EN9RX* XM"E1H92!!=71H;W(@;V8@3&%R;B!I<R!.;V%H($UO<F=A;B`H,3DX,BTS*2P@ XM0V]P>6EN9R!F;W(@4')O9FET(&ES(%!R;VAI8FET960*0V]P>7)I9VAT(#$Y XM.#8@8GD@3F]A:"!-;W)G86XL($%L;"!2:6=H=',@4F5S97)V960N"@H*"B`@ XM("`@("`@("`@("`@("`@("`@("`@(!M;-VU,87)N($-O;6UA;F0@3&EN92!/ XM<'1I;VYS&UMM"@IL87)N("LK("`@("`@("`@("`@("`@("!R97-T;W)E(&-H XM96-K<&]I;G1E9"!G86UE"FQA<FX@+7,@("`@("`@("`@("`@("`@(&QI<W0@ XM=&AE('-C;W)E8F]A<F0*;&%R;B`M:2`@("`@("`@("`@("`@("`@;&ES="!S XM8V]R97,@=VET:"!I;G9E;G1O<FEE<PIL87)N("UN("`@("`@("`@("`@("`@ XM("!S=7!P<F5S<R!W96QC;VUE(&UE<W-A9V4@=VAE;B!B96=I;FYI;F<@82!G XM86UE"FQA<FX@+6@@("`@("`@("`@("`@("`@('!R:6YT(&]U="!A;&P@=&AE XM(&-O;6UA;F0@;&EN92!O<'1I;VYS"FQA<FX@+3QN=6UB97(^("`@("`@("`@ XM('-P96-I9GD@9&EF9FEC=6QT>2!O9B!T:&4@9V%M92`H;6%Y(&)E('5S960@ XM=VET:"`M;BD*;&%R;B`M;SQO<'1S9FEL93X@("`@("`@<W!E8VEF>2!T:&4@ XM;W!T:6]N(&9I;&4@=&\@8F4@=7-E9`IL87)N("UC("`@("`@("`@("`@("`@ XM("!C<F5A=&4@;F5W('-C;W)E8F]A<F1S("TM('!R;VUP=',@9F]R(&$@<&%S XM<W=O<F0*;&%R;B`M;"`@("`@("`@("`@("`@("`@<')I;G0@;W5T('1H92!L XM87)N(&QO9R!F:6QE(`IL87)N("UP("`@("`@("`@("`@("`@("!P;&%Y(&EN XM('!R;VUP="!M;V1E"@H*"@H*"@H*"@H*("`@("`@("`@("`@&ULW;4)A8VMG XM<F]U;F0@26YF;W)M871I;VX@9F]R($QA<FX;6VT*"B`@("!796QC;VUE('1O XM('1H92!G86UE(&]F($QA<FXN("!!="!T:&ES(&UO;65N="P@>6]U(&9A8V4@ XM82!G<F5A="!P<F]B;&5M+@I9;W5R(&1A=6=H=&5R(&AA<R!C;VYT<F%C=&5D XM(&$@<W1R86YG92!D:7-E87-E+"!A;F0@;F]N92!O9B!Y;W5R(&AO;64@<F5M XM961I97,*<V5E;2!T;R!H879E(&%N>2!E9F9E8W0N("!9;W4@<V5N<V4@=&AA XM="!S:&4@:7,@:6X@;6]R=&%L(&1A;F=E<BP@86YD('EO=2!M=7-T"G1R>2!T XM;R!S879E(&AE<BX@(%1I;64@86=O('EO=2!H96%R9"!O9B!A(&QA;F0@;V8@ XM9W)E870@9&%N9V5R(&%N9"!O<'!O<G1U;FET>2X*4&5R:&%P<R!H97)E(&ES XM('1H92!S;VQU=&EO;B!Y;W4@;F5E9"X*"B`@("!)="!H87,@8F5E;B!S86ED XM('1H870@=&AE<F4@;VYC92!W87,@82!G<F5A="!M86=I8VEA;B!W:&\@8V%L XM;&5D(&AI;7-E;&8*4&]L:6YN96%U<RX@($UA;GD@>65A<G,@86=O+"!A9G1E XM<B!H879I;F<@;6%N>2!M:7)A8W5L;W5S('-U8V-E<W-E<RP@4&]L:6YN96%U XM<PIR971I<F5D('1O('1H92!C879E<FYS(&]F($QA<FXL('=H97)E(&AE(&1E XM=F]T960@;6]S="!O9B!H:7,@=&EM92!T;R!T:&4*8W)E871I;VX@;V8@;6%G XM:6,N("`@4G5M;W)S(&AA=F4@:70@=&AA="!O;F4@9&%Y(%!O;&EN;F5A=7,@ XM<V5T(&]U="!T;R!D:7-P96P*86X@871T86-K:6YG(&%R;7D@:6X@82!F;W)E XM<W0@<V]M92!D:7-T86YC92!T;R!T:&4@;F]R=&@N("!)="!I<R!B96QI979E XM9"!T:&%T"FAE<F4@:&4@;65T(&AI<R!D96UI<V4N"@H@("`@5&AE(&-A=F5R XM;G,@;V8@3&%R;BP@:70@:7,@=&AO=6=H="P@;75S="!B92!M86=N:69I8V5N XM="!I;B!D97-I9VXL"F%N9"!C;VYT86EN(&UU8V@@;6%G:6,@86YD('1R96%S XM=7)E+B`@3VYE(&]P=&EO;B!Y;W4@:&%V92!I<R!T;R!U;F1E<G1A:V4@80IJ XM;W5R;F5Y(&EN=&\@=&AE<V4@8V%V97)N<RX*"B`@("!';V]D($QU8VLA("!9 XM;W4G<F4@9V]I;F<@=&\@;F5E9"!I="$*"@H*("`@("`@("`@("`@&ULW;4AO XM=R!T;R!U<V4@=&AE(&QA<FXN;W!T(&]P=&EO;B!F:6QE&UMM"@I4:&4@9FEL XM92`B;&%R;BYO<'0B+"!I9B!U<V5D+"!S:&]U;&0@8F4@:6X@82!D:7)E8W1O XM<GD@86QO;F<@>6]U<B!0051(+@I!('-E<75E;F-E(&]F('=O<F1S('1E<FUI XM;F%T960@8GD@=VAI=&5S<&%C92!I<R!U<V5D('1O('-P96-I9GD@;W!T:6]N XM<RX*"B`@("!7;W)D("`@("`@("`@("`@("`@("`@("`@365A;FEN9PH@("`@ XM8W5R<V]R.B`@(&QO=W-C86X@:&EG:'-C86X@(&-H86YG92!T:&4@<VAA<&4@ XM;V8@=&AE(&-U<G-O<@H@("`@1$5#4F%I;F)O=R`@("`@("`@("!T96QL($Q! XM4DX@>6]U(&AA=F4@=&AA="!C;VUP=71E<@H@("`@96YA8FQE+6-H96-K<&]I XM;G1I;F<@("`@='5R;B!O;B!P97)I;V1I8R!C:&5C:W!O:6YT:6YG"B`@("!G XM<F%P:&EC<SH@=V%L;&,@9FQO;W)C("!S96QE8W0@9W)A<&AI8W,@;6%Z92!C XM:&%R86-T97)S"B`@("!K97EP860@("`@("`@("`@96YA8FQE('1H92!N=6UE XM<FEC(&ME>7!A9"!F;W(@;6]V:6YG"B`@("!L87)N9&ER.B`@9&ER96-T;W)Y XM("`@("!T:&4@9&ER96-T;W)Y('1O('5S92!F;W(@;&%R;B!F:6QE<PH@("`@ XM;6]N<W1E<CH@(")M;VYS="!N86UE(B`@8VAO;W-E(&$@;F%M92!F;W(@82!M XM;VYS=&5R"B`@("!N86UE.B`@("`@(GEO=7(@;F%M92(@("!C:&]O<V4@>6]U XM<B!P;&%Y:6YG(&YA;64*("`@(&YO+6)E97`@("`@("`@("!D:7-A8FQE(&)E XM97!I;F<@;V8@=&AE('1E<FUI;F%L"B`@("!N;RUI;G1R;V1U8W1I;VX@("`@ XM(&1O(&YO="!D:7-P;&%Y(&EN=')O(&UE<W-A9V4*("`@('-A=F5F:6QE.B!S XM879E+69I;&4M;F%M92`@("!D969I;F4@=VAA="!T:&4@<V%V96=A;64@9FEL XM96YA;64@=VEL;"!B90H@("`@<W=A<&9I;&4Z('-W87`M9FEL92UN86UE("`@ XM(&1E9FEN92!T:&4@;F%M92!O9B!T:&4@<W=A<&9I;&4*"EEO=7(@;F%M92!A XM;F0@;6]N<W1E<B!N86UE<R!M=7-T(&)E(&5N8VQO<V5D(&EN(&1O=6)L92!Q XM=6]T871I;VX@;6%R:W,@86YD(&UA>0IB92!U<"!T;R`S-"!C:&%R86-T97)S XM(&QO;F<N("!,;VYG97(@;F%M97,@87)E('1R=6YC871E9"X@($%N>71H:6YG XM(&5N8VQO<V5D(&EN"G%U;W1A=&EO;B!M87)K<R!I<R!C;VYS:61E<F5D(&]N XM92!W;W)D+"!A;F0@;75S="!B92!S97!A<F%T960@9G)O;2!O=&AE<B!W;W)D XM<PIB>2!W:&ET97-P86-E+@H@("`@("`@("`@(!M;-VU%>'!L86YA=&EO;B!O XM9B!T:&4@3&%R;B!S8V]R96)O87)D(&9A8VEL:71Y&UMM"@H@("`@3&%R;B!S XM=7!P;W)T<R!45T\@<V-O<F5B;V%R9',L(&]N92!F;W(@=VEN;F5R<RP@86YD XM(&]N92!F;W(@9&5C96%S960*8VAA<F%C=&5R<RX@($5A8V@@<&QA>65R("AB XM>2!U<V5R:60@;W(@<&QA>65R:60L('-E92!524130T]212!I;B!-86ME9FEL XM92D*:7,@86QL;W=E9"!O;F4@<VQO="!O;B!E86-H('-C;W)E8F]A<F0L(&EF XM('1H92!S8V]R92!I<R!I;B!T:&4@=&]P('1E;B!F;W(*=&AA="!S8V]R96)O XM87)D+B`@5&AI<R!D97-I9VX@:&5L<',@:6YS=7)E('1H870@9G)E<75E;G0@ XM<&QA>65R<R!O9B!,87)N"F1O(&YO="!H;V<@=&AE('-C;W)E8F]A<F0L(&%N XM9"!G:79E<R!M;W)E('!L87EE<G,@82!C:&%N8V4@9F]R(&=L;W)Y+B`@3&5V XM96P*;V8@9&EF9FEC=6QT>2!I<R!A;'-O(&YO=&5D(&]N('1H92!S8V]R96)O XM87)D<RP@86YD('1H:7,@=&%K97,@<')E8V5D96YC90IO=F5R('-C;W)E(&9O XM<B!D971E<FUI;FEN9R!W:&%T(&5N=')Y(&ES(&]N('1H92!S8V]R96)O87)D XM+B`@1F]R(&5X86UP;&4Z"FEF(")987(L('1H92!"=6<@4VQA>65R(B!H87,@ XM82!S8V]R92!O9B`Q,C@P,#,@;VX@=&AE('-C;W)E8F]A<F0@870@9&EF9B`P XM+`IT:&5N(&$@9V%M92!A="!D:69F(#$@86YD(&$@<V-O<F4@;V8@-#$Q,B!W XM;W5L9"!R97!L86-E('1H92!P<F5V:6]U<PIE;G1R>2!O;B!T:&4@<V-O<F5B XM;V%R9"X@($YO=&4@=&AA="!W:&5N(&$@<&QA>65R(&1I97,L('1H92!I;G9E XM;G1O<GD@:7,*<W1O<F5D(&EN('1H92!S8V]R96)O87)D('-O('1H870@979E XM<GEO;F4@8V%N('-E92!W:&%T(&ET96US('1H92!P;&%Y97(@:&%D"F%T('1H X592!T:6UE(&]F(&1E871H+@H*"@H* X` Xend X END_OF_FILE if test 11216 -ne `wc -c <'larn_hlp.uue'`; then echo shar: \"'larn_hlp.uue'\" unpacked with wrong size! fi # end of 'larn_hlp.uue' echo shar: End of shell archive. exit 0