=====[ Test Version - Changes to RBBS-PC 17.3 ]======== Last Mod: KG061501 Note: BASE is the release of 17.3. CONVENTIONS: The changes are assigned numbers that correspond to the month, day, and order in which they were made. Any mods are dated following the modification description. The lines of source code that are changed/modified/added are designated by the comment beginning in column 70 of "' iiMMDD#" where ii is the initials of the person providing the change. The latest set of merges available is: RFIX0518.ZIP ------------------------------------------------------------------- RBBS-PC.EXE 02-11-90 7:00 PM EST Release of CPC17.3 -------------------------------------------------------------------- Summary EXE MOD Short Description ---- -------- ----------------- RBBS KG061501 Stacked commands wrongly executed during a timelock RBBS EC061301 Not correctly analyzing all file names CNFG EC060601 Untrapped error when set required protocol for pers. dwld RBBS KG061001 Error condition on individuation not handled properly RBBS KG060903 Person with sysop status not notified of mail to sysop RBBS KG060902 Msg to public name of sysop says user not found RBBS KG060901 In msg entry, says will notify even when who to not found CNFG KG060103 Check wrong for conflict btw individuation & dwnld ratios RBBS KG060102 Version name of MiteSized version keeps getting longer RBBS KG060101 Remote sysop name wrongly logged to callers file RBBS MB052101 Color spilling over into "min left" RBBS RC050901 Individuation not being restored on return from Doors RBBS KG052901 Macros sometimes not working in PUI's RBBS KG052702 Logging to callers file improved in local mode RBBS KG052701 Time logged on not right in caller's file RBBS KG052401 RBBS overwrites callers file entry on shell to door RBBS KG052201 Support info stored in name field but not part of name RBBS DA042401 Possible to get infinite loop in FMS search RBBS KG051702 K)ill can be in msg prompt even though can't kill RBBS TC051701 Join back to main from subboard in V)iew not working RBBS MB051601 Subject of msg sometimes not prompted for RBBS KG051501 Subject of msg not treated right when has lower case RBBS KG042501 Block print in macros not working right CNFG KG041702 Quote for command symbol messes up DEF file RBBS KG041701 Doors not getting executed RBBS ML041401 Infinite loop possible under NetBios RBBS KG040902 Log of file transfers not right when dooring RBBS KG040901 Not pausing when screen full on directory scans RBBS KG032801 Macros associated with protocol not being executed RBBS KG032601 Possible to get untrapped errors when have new user RBBS KG032502 Adds support for hidden doors not on menu if in DOORS.DEF RBBS KG032501 Registration door control ignored in DOORS.DEF RBBS KG031801 Wrong directory sometimes shown RBBS KG031501 Unable to cancel an upload RBBS KK030901 Sometimes get overflow error RBBS KG030801 Stops reporting in personal mail scan after a screen pause RBBS KG030601 Constant recycling with "Connect Timeout" CNFG KG030301 Confusing prompt for name of file shown on sec violation RBBS KG030203 Msg scan reporting personal mail may not pause on full screen RBBS KG030202 Color spills over into a prompt in personal download RBBS KG030201 Display of message cannot be paused RBBS KG030101 Mail V)iew function can show mail waiting wrong in current conf. RBBS KG022702 Untrapped errors in LIT version with MIMPORT OFF RBBS KG022701 Stacked commands sometimes not working properly RBBS RH022501 Autodownload sometimes not reporting name properly RBBS KG022301 Add support for macro processing for online files RBBS KG022205 File name reported wiped out by macro processing RBBS KG022204 Add ability to vary FFS macro processing RBBS KG022203 Colors graphics door menu MENU05C bleeds on the right RBBS KG022202 Up and downloads in distributed RBBS-PC.DEF may not work RBBS KG022201 Jump no longer an option when V)iew in dir listing RBBS KG022103 LIT merges not assigning new user security right RBBS KG022102 LIT merges give compile error if SURVEY is OFF RBBS KG022101 Not correctly tracking bytes downloaded when dooring RBBS KG022001 Autodownload not working when extension not specified RBBS KG021803 Macro assign sometimes picks up wrong value RBBS KG021802 Macros in Fast File Search executed too frequently RBBS KG021801 Internal code documentation missing some cases RBBS KG021502 Logon into a conference can pick up a macro RBBS KG021501 Prompt after end of macro is repeated twice RBBS RH021501 Autodownload not working Contributors include: DA - Doug Azzarito EC - Ezra Conger KG - Ken Goosens KK - Kim Kodde MB - Mathew Briggs ML - Mark Lautenschlager RC - Richard Couture RH - Ray Horton TC - Tom Collins ------------------------[ KG061501 ]------------------------- Problem: When have a timelock on downloads and stack the files to download, the file names are misinterpreted as commands. Solution: Change RBBSSUB4.BAS as follows: (line 60180) SUB TimeLock STATIC CALL TimeRemain(MinsRemaining) IF ZSecsUsedSession! >= ZTimeLockSet THEN _ ZOK = ZTrue : _ EXIT SUB ZOutTxt$ = ZFirstName$ CALL NameCaps(ZOutTxt$) CALL QuickTPut1 ("Sorry, " + ZOutTxt$ + ", function locked" + _ STR$(INT((ZTimeLockSet-ZSecsUsedSession!)/60)) + _' DA11102 " more minutes" + _ STR$(INT(ZTimeLockSet-ZSecsUsedSession!) MOD 60) + " seconds") CALL BufFile(ZHelpPath$+"TIMELOCK"+ZHelpExtension$,WasX) ZOK = ZFalse ZLastIndex = 0 ' KG061501 END SUB ------------------------[ EC061301 ]------------------------- Problem: File names not broken correctly into components when they contain a period before the extension (e.g. "C:..\RBBS\AX.ZIP"). Solution: Change RBBSSUB5.BAS as follows: (line 63300) SUB BreakFileName (FileSpec$,DrvPath$,Prefix$,Extension$,ForJoining) STATIC CALL AllCaps (FileSpec$) DrvPath$ = "" Prefix$ = "" Extension$ = "" CALL TrimTrail (FileSpec$,"\") WasL = LEN(FileSpec$) IF WasL < 1 THEN _ EXIT SUB CALL FindLast (FileSpec$,"\",WasX,WasY) IF WasX < 1 THEN _ IF MID$(FileSpec$,2,1) = ":" THEN _ DrvPath$ = LEFT$(FileSpec$,1) : _ ZWasS = 3 _ ELSE ZWasS = 1 _ ELSE DrvPath$ = LEFT$(FileSpec$,WasX-1) : _ ZWasS = WasX + 1 : _ IF WasY = 1 THEN _ DrvPath$ = DrvPath$ + "\" WasX = INSTR(ZWasS,FileSpec$ + ".",".") ' EC061301 IF WasX < WasL THEN _ Extension$ = MID$(FileSpec$,WasX + 1) IF ZWasS <= WasL THEN _ IF WasX >= ZWasS THEN _ Prefix$ = MID$(FileSpec$,ZWasS,WasX - ZWasS) IF NOT ForJoining THEN _ EXIT SUB IF LEN(DrvPath$) = 1 THEN _ IF DrvPath$ <> "\" THEN _ DrvPath$ = DrvPath$ + _ ":" IF INSTR(DrvPath$,"\") > 0 AND RIGHT$(DrvPath$,1) <> "\" THEN _ DrvPath$ = DrvPath$ + _ "\" IF LEN(Extension$) > 0 THEN _ Extension$ = "." + _ Extension$ END SUB ------------------------[ EC060601 ]------------------------- Problem: When set a required protocol for personal downloads in configuration, can get illegal function call. Solution: Change CNFG-SUB.BAS as follows: 12466 DISPLAYED.PAGE.NUMBER = 8 GOSUB 24800 LOCATE 3,1 PRINT "141. Call-back verification ----------------------- " + NOT.YET.IN$ ' CALLBACK.VERIFICATION$ PRINT "142. Drive/path where personal files & dir stored - " + PERSONAL.DRVPATH$ PRINT "143. Name of Personal Directory ------------------- " + PERSONAL.DIR$ PRINT "144. Protocol required for personal downloads ----- " + MID$(" Ascii XMODEM Xm/CRC Kermit Ymodem Imūdem YmodemGWxmodem", 7 * INSTR("NAXCKYIGW",PERSONAL.PROTOCOL$) + 1,7) ' EC060601 PRINT "145. Files with download security are listed in --- " + FILESEC.FILE$ PRINT "146. File name with privileged group passwords is - " + PASSWORD.FILE$ PRINT "147. Concatenate multi-file ASCII downloads ------- " + FNYESNO$(PERSONAL.CONCAT) PRINT "148. Min SECURITY to CATEGORIZE uploads -----------" + STR$(SL.CATEGORIZE.UPLOADS) PRINT "149. Min security level to view new uploads -------" + STR$(MIN.SEC.TO.VIEW) PRINT "150. Security level exempt from 'epi-log' file ----" + STR$(SECURITY.EXEMPT.FROM.EPILOG) PRINT "151. Min. security to 'AUTO ADD' conference user --" + AUTO.ADD.SECURITY$ PRINT "152. Min. security for old caller to turbo logon --" + STR$(ALLOW.CALLER.TURBO) PRINT "153. Min. security to describe an existing file ---" + STR$(ADD.DIR.SECURITY) PRINT "154. Help file to display for a security violation- " + SECVIO.HLP$ TIME.LOCK$ = MID$(" DOORS DOWNLDSBOTH ",TIME.LOCK*7+1,7) PRINT "155. Time lock on DOORS and DOWNLOADS ------------- "; TIME.LOCK$ PRINT "156. Min. sec level exempt from auto-update of sec-" ; AUTO.UPGRADE.SEC PRINT "157. Min security to READ & KILL all messages -----" ; SEC.KILL.ANY PRINT "158. Do not display lines in msgs beginning with -- "; SCREEN.OUT.MSG$ ' KG041101 PRINT "159. Min. sec level to do personal uploads --------" ; ZMinSecPersUpld ' nc030101 PRINT "160. Let messages have multiple recipients -------- " ; FNYESNO$(ZEnableCC) ' nc030101 GOTO 12580 ------------------------[ KG060903 ]------------------------- Problem: When have sysop status but not using remote sysop name, message scan does not identify mail to/from "SYSOP" as belonging to the caller. Mail to "SYSOP" should be shared by everyone with sysop status. Solution: Change RBBS-PC.BAS as follows: 4660 IF RemoteSysop THEN _ CALL MsgNameMatch ("SYSOP",SysopFullName$,6,MsgFromCaller) : _ CALL MsgNameMatch ("SYSOP",SysopFullName$,37,MsgToCaller) _ ELSE WasX$ = LEFT$("SYSOP",-5*ZSysop) : _ ' KG060903 CALL MsgNameMatch (MsgUserName$,WasX$,6,MsgFromCaller) : _ ' KG060903 CALL MsgNameMatch (MsgUserName$,WasX$,37,MsgToCaller) ' KG060903 UserInHeader = (MsgFromCaller OR MsgToCaller) RETURN ------------------------[ KG060902 ]------------------------- Problem: When leave a msg to public name of sysop, can say the user not found and caution against leaving mail. Solution: Change RBBSSUB2.BAS as follows: 2250 ' $SUBTITLE: 'WhoCheck - Checks whether user exists' ' $PAGE ' ' NAME -- WhoCheck ' ' INPUTS -- PARAMETER MEANING ' WhoFind$ User to find ' ' OUTPUTS -- WhoFound Whether user found ' UserNumFound Record # of user ' ' PURPOSE -- Validate that user record exists. Sysop ' counted as found even if lack user record. ' SUB WhoCheck (WhoFind$,WhoFound,UserNumFound) STATIC UserNumFound = 0 IF ZStartHash <> 1 THEN _ WhoFound = ZTrue : _ EXIT SUB Work128$ = ZUserRecord$ WhoFound = ZFalse ToSysop = (INSTR(WhoFind$,"SYSOP") > 0 OR _ INSTR(WhoFind$,ZSysopFirstName$ + " " + ZSysopLastName$) > 0) ' KG060902 CALL OpenUser (HighestUserRecord) FIELD 5, 128 AS ZUserRecord$ IF ToSysop THEN _ WasX$ = ZSysopPswd1$ + " " + ZSysopPswd2$ _ ELSE WasX$ = WhoFind$ IF LEN(WasX$) > 1 THEN _ CALL FindUser (WasX$,"",ZStartHash,ZLenHash,_ 0,0,HighestUserRecord,WhoFound,_ UserNumFound,ZWasSL) LSET ZUserRecord$ = Work128$ IF NOT WhoFound THEN _ IF ToSysop THEN _ WhoFound = ZTrue _ ELSE CALL QuickTPut1 (WhoFind$ + " not active user") END SUB ------------------------[ KG060901 ]------------------------- Problem: When leave mail to person not found because not in user file, will still say the receiver "will be notified" has mail waiting, even though can't and won't. Solution: Change RBBSUB2.BAS as follows: 2032 IF MsgTo$ <> "ALL" THEN _ IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN _ ZWasDF = INSTR(MsgTo$+" @"," @") : _ ' KG052201 TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _ ' KG052201 CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _ IF NOT Found THEN _ ZLastIndex = 0 : _ RcvrRecNum = 0 : _ ' KG060901 IF NOT ZReply THEN _ ZOutTxt$ = "[R]e-enter name, Q)uit, C)ontinue" : _ ZTurboKey = -ZTurboKeyUser : _ ZLastIndex = 0 : _ GOSUB 2033 : _ ZWasZ$ = ZUserIn$(1) : _ CALL AllCaps (ZWasZ$) : _ IF ZWasZ$ <> "C" THEN _ MsgTo$ = "" : _ IF ZWasZ$ <> "Q" THEN _ GOTO 2020 IF MsgTo$ = Temp$ THEN _ ZOutTxt$ = "Msg would be from and to SAME PERSON! Really do this (Y,[N])" : _ ZLastIndex = 0 : _ GOSUB 2033 : _ IF NOT ZYes THEN _ MsgTo$ = "" EXIT SUB ------------------------[ KG060103 ]------------------------- Problem: Valid individuation fields are rejected by CONFIG was conflicting with download ratios. E.g. begin at 63, length 2, should be ok (1st two characters of location) but is rejected. Solution: Change CONFIG.BAS as follows: 18102 IF START.INDIV = 0 OR LEN.INDIV = 0 THEN_ INDIV.ID$ = NONE.PICKED$ _ ELSE INDIV.ID$ = "(nonstandard)" START.WRITE = START.INDIV LEN.WRITE = LEN.INDIV ' KG060103 GOSUB 17805 IF NOT OK THEN _ START.INDIV = 0 : _ LEN.INDIV = 31 : _ GOTO 18102 START.WRITE = START.INDIV RETURN ------------------------[ KG060102 ]------------------------- Problem: When use MiteSized version of RBBS, version name grows by "/MITESIZE" every time enter a subboard. Solution: Replace RBBSLIT.MRG and MITEVER.LIT by the enclosed new ones. ------------------------[ KG060101 ]------------------------- Problem: (fix to a fix) Remote SysOp name logged to callers file when it should not be. Solution: Change RBBS-PC.BAS as follows: (line 800) . . . CALL SetCrLf CALL SetPrompt CALL XferType (2,ZTrue) IF NOT SubBoard THEN _ BoardCheckDate$ = PrevLastOn$ GOSUB 5370 ' KG060101 IF ZWasA THEN _ ' KG060101 ZActiveUserName$ = "SYSOP" ' KG060101 IF ZExitToDoors OR SubBoard THEN _ ' KG052701 GOTO 815 GOSUB 465 IF (ZEightBit AND _ ZAutoDownDesired) OR _ ZAskID THEN _ CALL TestUser . . . 819 CALL Trim (ZWasCI$) ' KG060101 IF (ZNodeRecIndex < 2) THEN _ GOTO 821 GOSUB 4910 GOSUB 24000 GET 1,ZNodeRecIndex MID$(ZMsgRec$,1,31) = ZActiveUserName$ + _ SPACE$(31 - LEN(ZActiveUserName$)) MID$(ZMsgRec$,40,2) = " 0" MID$(ZMsgRec$,44,2) = STR$(ZBPS) MID$(ZMsgRec$,55,2) = " 0" MID$(ZMsgRec$,57,1) = "A" MID$(ZMsgRec$,60,5) = ZTalkToModemAt$ + _ SPACE$(5 - LEN(ZTalkToModemAt$)) MID$(ZMsgRec$,72,2) = " 0" MID$(ZMsgRec$,93,24) = ZWasCI$ + _ SPACE$(24) PUT 1,ZNodeRecIndex GOSUB 12985 ------------------------[ MB052101 ]------------------------- Problem: When have colorization active, color from prior context will sometimes spill into the report of # of minutes left. Solution: Change RBBSSUB3.BAS as follows: 41032 ' $SUBTITLE: 'DispTimeRemain - Display users time remaining' ' $PAGE ' ' NAME -- DispTimeRemain ' ' INPUTS -- PARAMETER MEANING ' MinsRemaining ' ' OUTPUTS -- PARAMETER MEANING ' MinsRemaining TIME IN MINUTES LEFT IN SESSION ' SUB DispTimeRemain (MinsRemaining) STATIC CALL TimeRemain (MinsRemaining) CALL QuickTPut1 (ZEmphasizeOff$ + STR$(MinsRemaining) + " min left") ' MB052101 END SUB ------------------------[ RC050901 ]------------------------- Problem: When return from a door and individuating callers with same name, the individuation field is always asked, whereas it should never ask for individuation (just like it never asks again for name, just password at most). Solution: Add the following variable to RBBS-VAR.BAS: ZIndivValue$. Change RBBS-PC.BAS as follows: 725 IF ZUserSecLevel < ZMinLogonSec THEN _ ZLogonErrorIndex = 1 : _ GOTO 460 IF ZFirstName$ = ZLastName$ THEN _ CALL QuickTPut1 (ZFirstNamePrompt$+"/"+ZLastNamePrompt$+" cannot be same") : _ ZLogonErrorIndex = 3 : _ GOTO 10620 IF NOT ZRememberNewUsers THEN _ GOSUB 13700 : _ ZUserFileIndex = 0 : _ GOSUB 12960: _ PrevLastOn$ = "00-00-00": _ GOTO 735 ZNewUser = ZTrue CALL OpenUser (HighestUserRecord) GOSUB 9450 GOSUB 12630 MID$(ZUserRecord$,ZStartHash,ZLenHash) = LEFT$("NEWUSER",ZLenHash) IF ZStartIndiv > 0 THEN _ ' RC050901 MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = ZIndivValue$ ' RC050901 GOSUB 9440 (line 800) . . . ' ' * ALWAYS RECORD THE HASH/INDIVIDUATING FIELD TO EACH RECORD LOGGED OUT ' WasX$ = "{" + _ ' KG052701 HashValue$ + _ ' KG052701 "/" + _ ' KG052701 ZIndivValue$ + _ ' RC050901 "}" ' KG052701 IF LEN(ZWasZ$) < 65 THEN _ ' KG052701 WasX = 65 _ ' KG052701 ELSE WasX = LEN(ZWasZ$) + 2 ' KG052701 MID$(ZWasNG$,WasX) = WasX$ ' KG052701 CALL Printit (" " + ZWasZ$) ' KG052701 IF ZNewUser THEN _ ' KG052701 CALL UpdtCalr ("NEWUSER",1) : _ ' KG052701 CALL Muzak (2) ' KG052701 ' ' ***** NOTIFY CALLER IF ABLE TO "AUTODOWN" **** ' . . . 815 ZDnlds = CVI(ZUserDnlds$) ZUplds = CVI(ZUserUplds$) IF ZEnforceRatios THEN _ ZDLToday! = CVS(ZTodayDl$) : _ ZBytesToday! = CVS(ZTodayBytes$) : _ ZDLBytes! = CVS(ZDlBytes$) : _ ZULBytes! = CVS(ZULBytes$) IF ZCurDate$ <> LEFT$(ZLastDateTimeOnSave$,8) THEN _ ZDLToday! = 0 : _ ZBytesToday! = 0 IF NOT GlobalsSet THEN _ GlobalsSet = ZTrue : _ ZGlobalDnlds = ZDnlds : _ ZGlobalUplds = ZUplds : _ ZGlobalDLToday! = ZDLToday! : _ ZGlobalBytesToday! = ZBytesToday! : _ ZGlobalDLBytes! = ZDLBytes! : _ ZGlobalULBytes! = ZULBytes! 'IF ZRatioRestrict# > 0 AND ZEnforceRatios THEN _ ' IF ZByteMethod = 0 AND ZUplds < ZInitialCredit# THEN _ ' ZUplds = ZInitialCredit# _ ' ELSE IF ZByteMethod = 1 AND ZULBytes! < ZInitialCredit# THEN _ ' ZULBytes! = ZInitialCredit# GOSUB 827 LSET ZUserOption$ = MKI$(ZTimesLoggedOn) + _ MID$(ZUserOption$,3) LSET ZLastDateTimeOn$ = ZCurDate$ + _ " " + _ ZTimeLoggedOn$ MID$(ZUserRecord$,ZStartHash,ZLenHash) = HashValue$ IF ZStartIndiv > 0 THEN _ MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = ZIndivValue$ ' RC050901 LSET ZUserName$ = ZOrigUserName$ IF (NOT ZExitToDoors) AND NOT (ZOrigMsgFile$ = ZActiveMessageFile$ AND SubBoard) THEN _ CALL AutoPage IF NOT SubBoard THEN _ ZOrigUserFileIndex = ZUserFileIndex GOSUB 9440 GOSUB 12991 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue) IF TurboLogon THEN _ GOTO 819 IF SkipWelcomeScreen AND _ (ZUserSecLevel >= ZAllowCallerTurbo) THEN _ GOTO 816 IF NOT SameUser THEN _ ZStopInterrupts = NOT ZWelcomeInterruptable : _ ZBypassTimeCheck = ZTrue : _ ZFileName$ = ZWelcomeFile$ : _ ZDisplayAsUnit = ZTrue : _ GOSUB 1790 : _ ZDisplayAsUnit = ZFalse ZBypassTimeCheck = ZFalse ZStopInterrupts = ZTrue 12300 WasA1$ = "" Attempts = 0 UserSecLevelSave = ZUserSecLevel FirstNameSave$ = ZFirstName$ LastNameSave$ = ZLastName$ ActiveUserNameSave$ = ZActiveUserName$ CityStateSave$ = ZWasCI$ HashValueSave$ = HashValue$ IndivValueSave$ = ZIndivValue$ ' RC050901 GOSUB 12500 GOSUB 12840 GOSUB 12850 GOSUB 12598 IF ZUserFileIndex = 0 THEN _ GOSUB 12984 : _ GOTO 12330 IF Found THEN _ WasD$ = "User already exists" : _ GOSUB 1315 : _ GOSUB 12984 : _ GOTO 12330 12310 GOSUB 12630 GOSUB 12800 GOSUB 11395 ZTempSecLevel = WasOF GOSUB 12900 LSET ZLastDateTimeOn$ = ZCurDate$ + _ " " + _ ZTimeLoggedOn$ GOSUB 12960 CALL AllCaps (ZUserIn$) LSET ZCityState$ = ZUserIn$ LSET ZElapsedTime$ = MKI$(0) IF ZStartHash > 1 THEN _ MID$(ZUserRecord$,ZStartHash,ZLenHash) = HashValue$ IF ZStartIndiv > 1 THEN _ MID$(ZUserRecord$,ZStartIndiv,ZLenIndiv) = ZIndivValue$ ' RC050901 GOSUB 9440 12330 ZUserSecLevel = UserSecLevelSave ZFirstName$ = FirstNameSave$ ZLastName$ = LastNameSave$ ZActiveUserName$ = ActiveUserNameSave$ ZWasCI$ = CityStateSave$ HashValue$ = HashValueSave$ ZIndivValue$ = IndivValueSave$ ' RC050901 ZUserFileIndex = WasTU LSET ZUserRecord$ = UserRecordHold$ GOTO 11001 12598 TempHashValue$ = HashValue$ TempIndivValue$ = ZIndivValue$ ' RC050901 12850 IF ZStartIndiv < 1 THEN _ RETURN IF ZStartIndiv = 1 THEN _ ZIndivValue$ = ZActiveUserName$ : _ ' RC050901 RETURN IF ZExitToDoors THEN _ ' RC050901 RETURN ' RC050901 WasX$ = WasA1$ + _ ZPromptIndiv$ CALL UntilRight (WasX$,ZIndivValue$,2,ZLenIndiv) ' RC050901 RETURN Change RBBSSUB3.BAS as follows: 43070 ZActiveMessageFile$ = ZOrigMsgFile$ ZSubParm = 3 CALL FileLock CALL OpenMsg FIELD 1, 128 AS ZMsgRec$ GET 1,ZNodeRecIndex IF ZGlobalSysop THEN _ MID$(ZMsgRec$,1,30) = "SYSOP" + SPACE$(25) MID$(ZMsgRec$,40,2) = STR$(ZExitToDoors) MID$(ZMsgRec$,42,2) = STR$(ZEightBit) MID$(ZMsgRec$,44,2) = STR$(ZBPS) MID$(ZMsgRec$,46,2) = STR$(ZUpperCase) MID$(ZMsgRec$,48,5) = MKS$(ZNumDnldBytes!) + MID$(STR$(-ZBatchTransfer),2) ' KG022101 MID$(ZMsgRec$,53,2) = STR$(ZWasGR) MID$(ZMsgRec$,55,2) = STR$(ZSysop) MID$(ZMsgRec$,65,3) = CHR$(VAL(LEFT$(ZTimeLoggedOn$,2))) + _ CHR$(VAL(MID$(ZTimeLoggedOn$,4,2))) + _ CHR$(VAL(MID$(ZTimeLoggedOn$,7,2))) MID$(ZMsgRec$,72,2) = STR$(ZPrivateDoor) MID$(ZMsgRec$,74,1) = MID$(STR$(ZTransferFunction),2,1) MID$(ZMsgRec$,75,1) = ZWasFT$ MID$(ZMsgRec$,113,2) = MKI$(CINT(ZTimeCredits!)/60) MID$(ZMsgRec$,79,8) = LEFT$(ZDooredTo$+" ",8) MID$(ZMsgRec$,91,2) = STR$(ZReliableMode) CALL BreakFileName (ZCurPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZFalse) MID$(ZMsgRec$,93,8) = ZUserIn$ + SPACE$(8 - LEN(ZUserIn$)) IF ZLocalUser THEN _ ZWasZ$ = ZCarriageReturn$ + ZCarriageReturn$ _ ' KG030601 ELSE ZWasZ$ = " 0" ' KG030601 MID$(ZMsgRec$,101,2) = ZWasZ$ ' KG030601 MID$(ZMsgRec$,103,2) = STR$(ZLocalUserMode) ' KG030601 ZConfName$ = LEFT$(ZConfName$,INSTR(ZConfName$ + " "," ") - 1) MID$(ZMsgRec$,105,8) = ZConfName$ + SPACE$(8 - LEN(ZConfName$)) MID$(ZMsgRec$,115,1) = MID$(STR$(ZAutoLogoffReq),2,1) MID$(ZMsgRec$,117,2) = STR$(ZMenuIndex) MID$(ZMsgRec$,119,2) = LEFT$(DATE$,2) MID$(ZMsgRec$,121,2) = MID$(DATE$,4,2) MID$(ZMsgRec$,123,2) = RIGHT$(DATE$,2) MID$(ZMsgRec$,125,2) = LEFT$(TIME$,2) MID$(ZMsgRec$,127,2) = MID$(TIME$,4,2) ' *** Save additional parameters for door restoral CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF") CALL PrintWorkA (STR$(ZLimitMinsPerSession)) CALL PrintWorkA (ZWasNG$) ' KG052701 CALL PrintWorkA (ZIndivValue$) ' NC050901 CLOSE 2 44003 ZUserLogonTime! = VAL(HourLoggedOn$) * 3600! + _ ' KK030901 VAL(MinLoggedOn$) * 60! + _ ' KK030901 VAL(SecLoggedOn$) HourLoggedOn$ = "" MinLoggedOn$ = "" SecLoggedOn$ = "" IF ZMinsPerSession < 1 THEN _ ZMinsPerSession = 3 IF NOT ZEightBit THEN _ OUT ZLineCntlReg,&H1A IF LEFT$(ZMsgRec$,7) = "SYSOP " THEN _ ZFirstName$ = ZSysopPswd1$ : _ ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ _ ELSE ZFirstNameEnd = INSTR(ZMsgRec$," ") : _ ZLastNameEnd = INSTR(ZFirstNameEnd + 1,ZMsgRec$ + " "," ") : _ ZFirstName$ = LEFT$(ZMsgRec$,ZFirstNameEnd-1) : _ ZLastName$ = MID$(ZMsgRec$,ZFirstNameEnd + 1,ZLastNameEnd - (ZFirstNameEnd + 1)) : _ ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31) ZWasZ$ = ZFirstName$ CALL OpenWork (2,ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF") CALL ReadDir (2,1) ZLimitMinsPerSession = VAL (ZOutTxt$) CALL ReadDir (2,1) ' KG052701 ZWasNG$ = ZOutTxt$ ' KG052701 CALL ReadDir (2,1) ' RC050901 ZIndivValue$ = ZOutTxt$ ' RC050901 CLOSE 2 END SUB ------------------------[ KG052901 ]------------------------- Problem: When using Programmable User Interface, macros will not work after do a join to a conference that does not exist or after execute conference view and go to end of list without joining anything. Problem reported by Ken Humrich. Solution: Change RBBS-PC.BAS as follows: 1232 MID$(ZLastCommand$,2,1) = " " ' KG052901 IF ZCustomPUI THEN _ ' KG052901 CALL UserFace (ZUserGraphicDefault$) : _ GOSUB 12997 : _ GOTO 1235 ' KG052901 ZOutTxt$ = ZCmdPrompt$ GOSUB 12930 IF ZWasQ = 0 THEN _ GOTO 1230 ------------------------[ KG052702 ]------------------------- Problem: In local mode, when log to printer, not logging to caller's file. This messages up caller analysis on networks. Also, unnecessary code check when entering/exiting a conference because check is done in logging routine. Finally, entrance/exit to conference made to log all the time and not just on extended logging. Solution: Change RBBS-PC.BAS as follows: 4900 CALL UpdtCalr ("Entered " + ZConfName$,2) ' KG052702 CALL QuickTPut1 ("Welcome to " + ZConfName$) 5350 IF ZConfName$ <> "MAIN" THEN _ CALL QuickTPut1 ("Rejoining " + OrigMsgName$) ZConfName$ = "MAIN" ConfFileName$ = OrigMsgName$ ZNewsFileName$ = OrigNewsFileName$ TurboLogon = ZTrue ZWasQ = 0 ZInConfMenu = ZTrue IF ZActiveUserName$ = "SYSOP" THEN _ ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ : _ CALL Trim (ZActiveUserName$) ZConfigFileName$ = ZOrigCnfg$ CALL ReadDef (ZConfigFileName$) IF ZOrigMsgFile$ <> ZActiveMessageFile$ THEN _ ZActiveMessageFile$ = ZOrigMsgFile$ : _ GOSUB 5343 IF ZOrigUserFile$ <> ZActiveUserFile$ THEN _ GOSUB 5380 : _ ZActiveUserFile$ = ZOrigUserFile$ : _ ZActiveUserName$ = ZOrigUserName$ : _ GOSUB 12598 : _ GOSUB 12990 : _ IF Found THEN _ GOSUB 9500 : _ ZMainUserFileIndex = ZUserFileIndex : _ CALL SetPrompt : _ CALL XferType (2,ZTrue) _ ELSE ZUserFileIndex = 0 : _ ZMainUserFileIndex = 0 CALL UpdtCalr ("Exited Conference",2) ' KG052702 GOSUB 2350 ZUplds = ZGlobalUplds ZDnlds = ZGlobalDnlds ZDLToday! = ZGlobalDLToday! ZBytesToday! = ZGlobalBytesToday! ZDLBytes! = ZGlobalDLBytes! ZULBytes! = ZGlobalULBytes! Change RBBSSUB1.BAS as follows: 13670 LSET ZCallersRecord$ = WasX$ CALL Printit (ZCallersRecord$) ' KG052702 ZCallersFileIndex! = ZCallersFileIndex! + 1 ------------------------[ KG052701 ]------------------------- Problem: When join subboards, the time shown in callers file for logon is the time joined last subboard rather than original time logged on. Solution: Change RBBS-PC.BAS as follows: Omit code at line 837. 800 CALL DoorReturn IF ZAdjustedSecurity THEN _ GOSUB 5135 IF ZOrigCnfg$ = ZCurDef$ THEN _ ZMainUserFileIndex = ZUserFileIndex : _ ZOrigSec = ZUserSecLevel : _ ZUserSecSave = ZUserSecLevel : _ ZOrigUserName$ = ZActiveUserName$ ZTimesLoggedOn = CVI(MID$(ZUserOption$,1,2)) - _ ((ZOrigCnfg$ <> ZCurDef$ OR NOT SubBoard) AND _ (NOT ZPrivateDoor) AND (NOT ZExitToDoors)) GOSUB 9500 IF (NOT ZExitToDoors) AND (NOT SubBoard) THEN _ CALL UpdtCalr (ZActiveUserName$ + " from " + ZWasCI$ + _ " Lvl" + STR$(ZUserSecLevel) + " " + TIME$,2) PrevLastOn$ = ZLastDateTimeOn$ IF ZLocalUser THEN _ ZTalkToModemAt$ = "9600" : _ ZBaudParity$ = "9600 BAUD,N,8,1" : _ ZModemInitBaud$ = "9600" : _ ZSnoop = ZTrue : _ ZLineFeeds = ZTrue CALL SetCrLf CALL SetPrompt CALL XferType (2,ZTrue) IF NOT SubBoard THEN _ BoardCheckDate$ = PrevLastOn$ IF ZExitToDoors OR SubBoard THEN _ ' KG052701 GOTO 815 GOSUB 465 IF (ZEightBit AND _ ZAutoDownDesired) OR _ ZAskID THEN _ CALL TestUser CALL QuickTPut1 ("Logging " + ZActiveUserName$) CALL Talk (1,ZOutTxt$) CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " NODE " + ZNodeID$ + _ ", OPERATING AT " + ZBaudParity$) CALL SkipLine (1) Attempts = 0 ZWasZ$ = ZActiveUserName$ + _ ' KG052701 " on at " + _ ' KG052701 ZCurDate$ + _ ' KG052701 ", " + _ ' KG052701 ZTime$ + _ ' KG052701 " from " + _ ' KG052701 ZWasCI$ + _ ' KG052701 ", " + _ ' KG052701 ZBaudParity$ ' KG052701 ZWasNG$ = ZWasZ$ + SPACE$(128 - LEN(ZWasZ$)) ' KG052701 MsgUserName$ = LEFT$(ZActiveUserName$+" ",22) ' KG052701 ' ' * ALWAYS RECORD THE HASH/INDIVIDUATING FIELD TO EACH RECORD LOGGED OUT ' WasX$ = "{" + _ ' KG052701 HashValue$ + _ ' KG052701 "/" + _ ' KG052701 IndivValue$ + _ ' KG052701 "}" ' KG052701 IF LEN(ZWasZ$) < 65 THEN _ ' KG052701 WasX = 65 _ ' KG052701 ELSE WasX = LEN(ZWasZ$) + 2 ' KG052701 MID$(ZWasNG$,WasX) = WasX$ ' KG052701 CALL Printit (" " + ZWasZ$) ' KG052701 IF ZNewUser THEN _ ' KG052701 CALL UpdtCalr ("NEWUSER",1) : _ ' KG052701 CALL Muzak (2) ' KG052701 ' ' ***** NOTIFY CALLER IF ABLE TO "AUTODOWN" **** ' IF ZEightBit AND ZAutoDownYes THEN _ ZOutTxt$ = CHR$(9) + _ ZReturnLineFeed$ + _ "You may use AUTODOWNLOADing!" : _ CALL RingCaller : _ CALL DelayTime(4) Change RBBSSUB3.BAS as follows: (line 43070) . . . ' *** Save additional parameters for door restoral CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF") CALL PrintWorkA (STR$(ZLimitMinsPerSession)) CALL PrintWorkA (ZWasNG$) ' KG052701 CLOSE 2 44003 ZUserLogonTime! = VAL(HourLoggedOn$) * 3600! + _ ' KK030901 VAL(MinLoggedOn$) * 60! + _ ' KK030901 VAL(SecLoggedOn$) HourLoggedOn$ = "" MinLoggedOn$ = "" SecLoggedOn$ = "" IF ZMinsPerSession < 1 THEN _ ZMinsPerSession = 3 IF NOT ZEightBit THEN _ OUT ZLineCntlReg,&H1A IF LEFT$(ZMsgRec$,7) = "SYSOP " THEN _ ZFirstName$ = ZSysopPswd1$ : _ ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ _ ELSE ZFirstNameEnd = INSTR(ZMsgRec$," ") : _ ZLastNameEnd = INSTR(ZFirstNameEnd + 1,ZMsgRec$ + " "," ") : _ ZFirstName$ = LEFT$(ZMsgRec$,ZFirstNameEnd-1) : _ ZLastName$ = MID$(ZMsgRec$,ZFirstNameEnd + 1,ZLastNameEnd - (ZFirstNameEnd + 1)) : _ ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31) ZWasZ$ = ZFirstName$ CALL OpenWork (2,ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF") CALL ReadDir (2,1) ZLimitMinsPerSession = VAL (ZOutTxt$) CALL ReadDir (2,1) ' KG052701 ZWasNG$ = ZOutTxt$ ' KG052701 CLOSE 2 END SUB ------------------------[ KG052401 ]------------------------- Problem: When shell to a door and it writes information to the callers file, the entries are overwritten when returns to RBBS. Solution: Add the following variable to RBBS-VAR.BAS: ZPrevCaller$. Change RBBSSUB1.BAS as follows: (line 108) SUB SetCall STATIC ON ERROR GOTO 65000 IF ZPrevCaller$ = ZCallersFile$ OR ZCallersFilePrefix$ = "" THEN _ ' KG052401 EXIT SUB ZPrevCaller$ = ZCallersFile$ ' KG052401 ZCallersFileIndex! = 1 CLOSE 2 CLOSE 4 IF ZShareIt THEN _ OPEN ZCallersFile$ FOR RANDOM SHARED AS #4 LEN=64 _ ELSE OPEN "R",4,ZCallersFile$,64 FIELD 4,64 AS ZCallersRecord$ IF LOF(4) > 0 THEN _ ZCallersFileIndex! = LOF(4) / 64 IF ZCallersFileIndex! < 1 THEN _ ZCallersFileIndex! = 0 ZUserIn$ = STRING$(13,0) Change RBBSUB2.BAS as follows: 10989 IF ZTransferFunction = 3 THEN _ ZWasY$ = "Registration" _ ELSE ZWasY$ = ZDooredTo$ ZOutTxt$ = ZWasY$ + _ " door opened at " + _ TIME$ + _ " on " + _ DATE$ ZSubParm = 5 CALL TPut CALL UpdtCalr (ZDooredTo$ + " door opened!",2) CLOSE 2 OPEN "O",2,"DORINFO" + _ ZNodeFileID$ + _ ".DEF" PRINT #2,ZRBBSName$ PRINT #2,ZSysopFirstName$ PRINT #2,ZSysopLastName$ IF ZLocalUser THEN _ PRINT #2,"COM0" _ ELSE PRINT #2,ZComPort$ ZUserIn$ = MID$(ZBaudParity$,INSTR(ZBaudParity$," B")) PRINT #2,ZTalkToModemAt$;ZUserIn$ PRINT #2,ZNetworkType IF ZGlobalSysop THEN _ PRINT #2,"SYSOP" : _ PRINT #2,"" _ ELSE PRINT #2,ZFirstName$ : _ PRINT #2,ZLastName$ PRINT #2,ZCityState$ PRINT #2,ZWasGR PRINT #2,ZUserSecLevel CALL TimeRemain (MinsRemaining) CALL CheckInt (DoorTime$) IF ZErrCode = 0 AND ZTestedIntValue > 0 THEN _ IF MinsRemaining > ZTestedIntValue THEN _ MinsRemaining = ZTestedIntValue PRINT #2,INT(MinsRemaining) PRINT #2,ZFossil IF ExitMethod$ = "S" THEN _ CLOSE 4 : _ ' KG052401 CALL ShellExit (ExitTemplate$) : _ ZPrevCaller$ = "" : _ ' KG052401 CALL SetCall : _ ' KG052401 ZExitToDoors = ZTrue : _ CALL BufFile (ZDoorDisplay$,WasX) : _ CALL DoorReturn _ ELSE ZOutTxt$(1) = ZDiskForDos$ + _ "COMMAND /C " + _ ExitTo$ : _ ZOutTxt$(2) = ZRBBSBat$ : _ CALL RBBSExit (ZOutTxt$(),2) END SUB ------------------------[ KG052201 ]------------------------- Problem: Set echomail processors want to add "@ " after the name of the person sending mail. But then, when person replies, name is never found for setting mail waiting. Solution: Reguard name as terminated with first "@". Change RBBSSUB2.BAS as follows: 2032 IF MsgTo$ <> "ALL" THEN _ IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN _ ZWasDF = INSTR(MsgTo$+" @"," @") : _ ' KG052201 TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _ ' KG052201 CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _ IF NOT Found THEN _ ZLastIndex = 0 : _ IF NOT ZReply THEN _ ZOutTxt$ = "[R]e-enter name, Q)uit, C)ontinue" : _ ZTurboKey = -ZTurboKeyUser : _ ZLastIndex = 0 : _ GOSUB 2033 : _ ZWasZ$ = ZUserIn$(1) : _ CALL AllCaps (ZWasZ$) : _ IF ZWasZ$ <> "C" THEN _ MsgTo$ = "" : _ IF ZWasZ$ <> "Q" THEN _ GOTO 2020 IF MsgTo$ = Temp$ THEN _ ZOutTxt$ = "Msg would be from and to SAME PERSON! Really do this (Y,[N])" : _ ZLastIndex = 0 : _ GOSUB 2033 : _ IF NOT ZYes THEN _ MsgTo$ = "" EXIT SUB Change RBBSSUB5.BAS as follows: 63540 ' Match Name to one in message file SUB MsgNameMatch (PrimeName$,AltName$,SearchPos,Found) STATIC WasX$ = LEFT$(PrimeName$+" ",22-8*(SearchPos < 7)) GOSUB 63542 ' KG052201 IF Found OR AltName$ = "" THEN _ ' KG052201 EXIT SUB ' KG052201 WasX$ = LEFT$(AltName$ + " ",22-8*(SearchPos < 7)) GOSUB 63542 ' KG052201 EXIT SUB ' KG052201 63542 WasY$ = MID$(ZMsgRec$,SearchPos,LEN(WasX$)) ' KG052201 ZWasDF = INSTR(WasY$,"@") ' KG052201 IF ZWasDF > 0 THEN _ ' KG052201 MID$(WasY$,ZWasDF) = " " ' KG052201 Found = (WasY$ = WasX$) ' KG052201 RETURN ' KG052201 END SUB ------------------------[ DA042401 ]------------------------- Problem: Get an infinite loop when do an file S)earch and hit a string in the extended description you have insufficient suecurity to view because is protected by a security level (= in front of name). Solution: Change RBBSSUB3.BAS as follows: 58169 CALL CheckInt (MID$(PartToPrint$,34)) IF ZUserSecLevel < ZTestedIntValue THEN _ LastOK = ZFalse : _ FailedSearch = ZFalse : _ ' DA042401 GOTO 58168 MID$(PartToPrint$,1,13) = MID$(PartToPrint$,2,12) + " " ZWasA = LEN(STR$(ZTestedIntValue)) MID$(PartToPrint$,34) = MID$(PartToPrint$,34 + ZWasA) + SPACE$(ZWasA) GOTO 58172 ------------------------[ KG051702 ]------------------------- Problem: When security for K)ill command set too high to use, caller still presented with K option in msg read when reading own mail. Solution: Change RBBS-PC.BAS as follows: 4600 IF ScanMsgs THEN _ GOSUB 8020 : _ GOTO 4630 IF NOT JustSearching THEN _ GOSUB 8000 : _ IF QuotedReply THEN _ QuotedReply = ZFalse : _ GOTO 4610 IF ZRet THEN _ GOTO 4630 CanChangeSec = (ZUserSecLevel => ZSecChangeMsg) WasI = - ((ZUserSecLevel >= ZOptSec(9)) AND (UserInHeader OR CanKill)) ' KG051702 IF ZExpertUser THEN _ WasA1$ = ",R,T,=,+,-" + _ MID$(",F",1,- (UserInHeader OR CanChangeSec) * 2) + _ MID$(",K",1,WasI * 2) + _ ' KG051702 MID$(",U",1,- (ZUserSecLevel >= ZOptSec(54)) * 2) + _ MID$(",S",1, - CanChangeSec * 2) _ ELSE WasA1$ = ",R)eply,T)hread,=)again,+,-" + _ MID$(",F)wd",1, - (UserInHeader OR CanChangeSec) * 5) + _ MID$(",K)ill",1, WasI * 6) + _ ' KG051702 MID$(",U)ser",1,- (ZUserSecLevel >= ZOptSec(54)) * 6) + _ MID$(",S)ec",1, - CanChangeSec * 5) ZTurboKey = -ZTurboKeyUser IF JustSearching OR NOT JustReplied THEN _ GOTO 4610 JustReplied = ZFalse CALL AskMore (WasA1$,ZTrue,ZFalse,ZAnsIndex,ZFalse) CALL SkipLine (1) IF ZNo THEN _ RETURN CALL AllCaps (ZUserIn$) ZReply = (ZReply OR ZUserIn$ = "R") IF ZUserIn$ <> "=" THEN _ GOTO 4618 CALL SkipLine (1) ------------------------[ KG051701 ]------------------------- Problem: When in a subboard, do a V)iew conference, and use join suboption to rejoin main, stays inside the subboard. Solution: Change RBBS-PC.BAS as follows: 1205 IF ZSubParm < 0 THEN _ GOTO 202 ZSubParm = 1 ZStopInterrupts = ZFalse ZNonStop = (ZPageLength < 1) ZWasQ = 0 IF ConfMailJoin OR (ZHomeConf$ <> "" AND ZHomeConf$ <> "MAIN") THEN _ ' TC051701 TurboLogon = (NOT ConfMailJoin) : _ ConfMailJoin = ZFalse : _ ZFF = 8 : _ ZUserIn$(2) = ZHomeConf$ : _ ZHomeConf$ = "" : _ ZWasQ = 1 : _ ZAnsIndex = 1 : _ ZLastIndex = 2 : _ ZStoreParseAt = 1 : _ ZLastCommand$ = "MJ" : _ ' KG021502 GOTO 1240 CALL SkipLine (1) ------------------------[ KG051601 ]------------------------- Problem: When SysOp declines to leave a comment because it would be to same person msg would be from, and then E)nters another message, is not prompted for the subject ("comment" is used). Change RBBS-PC.BAS as follows: 2000 QuotedReply = ZFalse MsgFrom$ = ZActiveUserName$ SysopMsg = ZFalse ' MB051601 ------------------------[ KG051501 ]------------------------- Problem: Some BBS's allow lower case in a msg subject. When mail from them gets added to RBBS, it may remain in lower case. Then thread and text search will not match properly. Solution: Always make the subject upper case when it is read into RBBS. Change RBBS-PC.BAS as follows: 8040 IF LEN(MsgTo$) < 23 THEN _ MsgTo$ = MsgTo$ + _ SPACE$(23 - LEN(MsgTo$)) Subject$ = MID$(ZMsgRec$,76,25) CALL Trim (Subject$) CALL AllCaps (Subject$) ' KG051501 OrigSubject$ = Subject$ IF ZPswdFailed THEN _ Subject$ = WasSJ$ ------------------------[ KG042501 ]------------------------- Problem: When execute macros with block print to screen that has empty lines in it, prompts repeated on the screen and macro works irregulary. Solution: Change RBBSSUB5.BAS as follows: 63336 GOSUB 63395 IF NOT ZMacroActive THEN _ ZMacroEcho = ZTrue : _ EXIT SUB ' KG042501 IF CompareVar > 0 THEN _ IF NOT CaseExecute THEN _ IF LEFT$(ZOutTxt$,3) = ZSmartTextCode$+"==" THEN _ WasX$ = RIGHT$(ZOutTxt$,LEN(ZOutTxt$)-3) : _ ' KG042501 GOTO 63370 _ ELSE IF LEFT$(ZOutTxt$,7) = ZSmartTextCode$ + "END ON" THEN _ CompareVar = 0 : _ GOTO 63336 _ ELSE GOTO 63336 IF LEN(ZOutTxt$) < 3 THEN _ ' KG042501 GOTO 63398 ' KG042501 WasX$ = RIGHT$(ZOutTxt$,LEN(ZOutTxt$)-3) ' KG042501 IF LEFT$(ZOutTxt$,1) <> ZSmartTextCode$ THEN _ GOTO 63398 CALL CheckInt (MID$(ZOutTxt$,2)) IF ZErrCode > 0 THEN _ GOTO 63398 . . . ------------------------[ KG041702 ]------------------------- Problem: CONFIG accepts a quote for a command symbol but this choice messes up the entire configuration file. Solution: Do not allow quote as a choice. Change CNFG-SUB.BAS as follows: 61892 CALL ASKRO("New command for " + _ MID$(COMMANDS$(FF,1),1,INSTR(COMMANDS$(FF,1)," ")) + _ "is?",24,HK$) IF HK$ = CHR$(34) THEN _ ' KG041702 GOTO 61892 ' KG041702 X$ = MID$(HK$,1,1) CALL ALLCAPS (X$) IF LEN(HK$) > 1 THEN _ HK$ = X$ + MID$(HK$,2) IF LEN (HK$) = 1 THEN _ HK$ = X$ COMMANDS$(FF,2) = HK$ MID$(SECTION.COMMANDS$,FF,1) = HK$ GOTO 61880 ------------------------[ KG041701 ]------------------------- Problem: Door may exist but fail to be executed. Solution: Line was left out of a subprogram. Change RBBSSUB4.BAS as follows: 59510 ZFileName$ = CurMenu$ InMenu = ZTrue ' KG041701 CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue) MenuFront$ = MenuDrv$ + WasX$ CALL Graphic (GRDefault$,ZFileName$) CurMenuVer$ = ZFileName$ ZStopInterrupts = ZFalse IF ZAnsIndex < ZLastIndex OR ZExpertUser THEN _ GOTO 59520 ------------------------[ KG041401 ]------------------------- Problem: Possible to get an infinite loop under NetBios. Solution: Caused by trying to unlock a file not locked. Change RBBSSUB1.BAS as follows: 29920 ZErrCode = 0 IF IBMFileLock = 6 AND IBMRecLock = 3 THEN _ IBMCount = IBMCount - 1 : _ IF IBMCount > 0 THEN _ EXIT SUB _ ELSE IBMCount = 0 UNLOCK IBMFileLock, IBMRecLock TO IBMRecLock IF ZErrCode = 70 THEN _ ' ML041401 EXIT SUB ' ML041401 IF ZErrCode <> 0 THEN _ GOTO 29920 END SUB ------------------------[ KG040902 ]------------------------- Problem: When dooring to external protocols that append to the log file used by DSZ, the log file can grow rather than contain only the latest transfer, causing RBBS to read the wrong entry. Solution: Change RBBSSUB5.BAS as follows: 20263 IF ZPrivateDoor THEN _ ZCmdTransfer$ = ZWasFT$ : _ CALL XferType (2,ZTrue) : _ ZCmdTransfer$ = "" CALL OpenWork (2,"XFER-" + ZNodeID$ + ".DEF") IF ZErrCode <> 0 THEN _ GOTO 20267 CALL ReadParms (ZWorkAra$(), ZFailureParm, 1) IF ZErrCode <> 0 THEN _ GOTO 20267 CLOSE 2 ' KG040902 CALL KillWork ("XFER-" + ZNodeID$ + ".DEF") ------------------------[ KG040901 ]------------------------- Problem: If screen happens to fill with msg "Scanning directory...", will not pause but scroll lines away. Solution: Change RBBSSUB5.BAS as follows: 20120 ZOutTxt$ = "Scanning Directory " + _ ZFileNameHold$ IF WasRS$ <> "" THEN _ ZOutTxt$ = ZOutTxt$ + " for " + WasRS$ GOSUB 21650 IF ZFileSysParm > 1 THEN _ RETURN CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse) ' KG040901 IF ZNo THEN _ ' KG040901 ZErrCode = 0 : _ ' KG040901 RETURN ' KG040901 WasPG = ZTrue ------------------------[ KG032801 ]------------------------- Problem: Documentation says a macro can be executed before any file transfer by putting it in PROTO.DEF. But macro is ignored. Solution: Change RBBSSUB5.BAS as follows: 20330 IF ZAutoDownInProgress THEN _ RETURN GOSUB 20337 ' KG032801 ZOutTxt$ = ZProtoPrompt$ + _ " " + WasA1$ + _ " of " + _ ZFileNameHold$ + _ " ready. aborts" GOSUB 21650 20337 IF ZProtoMacro$ <> "" THEN _ ' KG032801 ZGSRAra$(1) = MID$("DU ",ZTransferFunction,1) : _ ' KG032801 CALL MacroExe (ZProtoMacro$) ' KG032801 RETURN ' KG032801 20340 IF ZWasDF THEN _ ZOutTxt$ = "Switch to a non-ascii protocol" : _ GOSUB 21650 : _ GOTO 21700 GOSUB 20750 IF ZFileSysParm > 1 OR NOT ZOK THEN _ RETURN CALL OpenWork (2,ZFileName$) IF (ZAnsIndex = FirstDnld OR NOT ZConcatFIles) THEN _ GOSUB 20337 : _ ' KG032801 ZOutTxt$ = "^X aborts. ^S suspends ^Q resumes" : _ GOSUB 21640 : _ IF ZFileSysParm > 1 THEN _ RETURN _ ELSE ZOutTxt$ = ZProtoPrompt$ + " SEND of " + _ ZFileNameHold$ + _ " ready. Press Any Key to start" : _ ZTurboKey = 2 : _ ZForceKeyboard = ZTrue : _ ZSuspendAutologoff = ZTrue : _ GOSUB 21660 : _ ZSuspendAutologoff = ZFalse : _ GOSUB 20335 : _ IF ZFileSysParm > 1 THEN _ RETURN 20560 LineACK = (ZDefaultLineACK$ <> "") IF LineACK THEN _ ZOutTxt$ = "Acknowledge each line ([Y],N)" : _ ZTurboKey = - ZTurboKeyUser : _ LineACK = NOT ZNo : _ GOSUB 21660 : _ IF ZFileSysParm > 1 THEN _ RETURN GOSUB 20337 ' KG032801 CALL QuickTPut1 ("Transfer MUST end with a ") CALL QuickTPut1 (ZProtoPrompt$+" RECEIVE of " + ZFileNameHold$ + " ready") ZOK = ZFalse XOff = ZFalse CALL OpenOutW(ZFileName$) IF ZErrCode <> 0 AND ZErrCode <> 53 THEN _ ZWasEL = 20560 : _ GOTO 21900 GOSUB 20510 IF ZFileSysParm > 1 THEN _ RETURN ------------------------[ KG032601 ]------------------------- Problem: When have a problem reading TRASHCAN file other than file not found, such as when TRASHCAN is a dos subdirectory, will get untrapped errors when new user tries to log on. Solution: Change RBBS-PC.BAS as follows: 12570 Found = ZFalse CALL OpenWork (2,ZTrashcanFile$) IF ZErrCode <> 0 THEN _ ' KG032601 ZErrCode = 0 : _ ' KG032601 RETURN ' KG032601 ------------------------[ KG032502 ]------------------------- Problem: Any door listed in DOORS.DEF should be executable if caller has sufficient security. But only SysOp can executed doors not listed on the menu. Solution: To allow "hidden" doors, change RBBS-PC.BAS as follows: 821 IF ZExitToDoors THEN _ IF ZTransferFunction = 3 THEN _ ZNewUser = ZTrue : _ TurboLogon = ZFalse : _ SameUser = ZFalse : _ ZTransferFunction = 0 : _ GOTO 832 _ ELSE GOTO 832 GOSUB 1241 IF (SubBoard AND (ZOrigMsgFile$ = ZActiveMessageFile$)) _ OR ((ZUserSecLevel > ZMaxRegSec) AND (NOT ZNewUser)) THEN _ GOTO 832 ZWasZ$ = ZRegProgram$ ZTransferFunction = 3 CALL DoorExit (ZFalse) ' KG032502 ZTransferFunction = 0 GOTO 832 1401 ZStackC = ZTrue CALL SubMenu ("Which questionnaire(s), L)ist" + ZPressEnterExpert$, _ WasA1$,ZQuesPath$,".DEF","",ZUserGraphicDefault$,ZTrue,ZFalse,ZTrue,"",WasX) ' KG032502 IF ZWasQ = 0 THEN _ RETURN IF ZSubParm = -1 THEN _ RETURN 10595 QuestHold$ = ZWasZ$ GOSUB 11520 CLOSE 2 CALL UpdtCalr (QuestHold$ + " questionnaire " + _ MID$("answeredaborted",1 - 8 * ZQuestAborted,8),2) IF ReturnToPrompt THEN _ RETURN GOTO 1401 5301 ZStackC = ZTrue CALL SubMenu ("What conference, L)ist, M)ain ([ENTER] quits)",_ WasA1$,MsgDrvPath$,_ "M.DEF","M",ZUserGraphicDefault$,ZTrue,ZFalse,ZFalse,"C.DEF",WasX) ' KG032502 IF ZWasQ = 0 THEN _ RETURN IF ZSubParm = -1 THEN _ RETURN 10595 9701 CALL SubMenu ("Read what bulletin(s), L)ist, S)ince, N)ews ([ENTER] = none)",_ WasA1$, ZBulletinPrefix$,"",ReturnOn$,_ ZUserGraphicDefault$,ZFalse,ZFalse,ZFalse,"",WasX) ' KG032502 IF ZWasQ = 0 THEN _ RETURN CALL CheckCarrier IF ZSubParm = -1 THEN _ RETURN 10595 IF (ZWasZ$ = "*" OR ZWasZ$ = "S") THEN _ ZPrevPrefix$ = "" : _ GOTO 9760 ZStopInterrupts = ZFalse IF ZWasZ$ = "N" THEN _ GOSUB 1242 : _ IF WasZ <> 0 THEN _ CALL QuickTPut1 ("No NEWS available") : _ GOTO 9701 _ ELSE GOTO 9703 CALL BufFile (ZFileName$,ZAnsIndex) 10974 WasA1$ = ZMenu$(5) CALL Talk (5,ZOutTxt$) ZStackC = ZTrue CALL SubMenu ("Open which door, L)ist" + ZPressEnterExpert$, _ WasA1$,"",".BAT","",_ ZUserGraphicDefault$,ZTrue,ZFalse,ZFalse,"",InMenu) ' KG032502 IF ZWasQ = 0 THEN _ RETURN IF ZSubParm = -1 THEN _ RETURN 10595 10986 ZWasZ$ = ZFileName$ CALL DoorExit (NOT InMenu) ' KG032502 GOTO 10974 ' KG032502 Change RBBSSUB2.BAS as follows: (line 10983) SUB DoorExit (ReqDoorsDef) STATIC ' KG032502 IF ZWasZ$ = "" OR _ ZWasZ$ = "NONE" THEN _ EXIT SUB CALL FindIt (ZWasZ$) IF NOT ZOK THEN _ GOTO 10986 CALL BreakFileName (ZWasZ$,WasX$,ExitTo$,ExitMethod$,ZFalse) ' KG032501 ExitMethod$ = "" ZDooredTo$ = ExitTo$ CALL FindIt (ZDoorsDef$) IF NOT ZOK THEN _ IF ReqDoorsDef THEN _ ' KG032502 EXIT SUB _ ' KG032502 ELSE ExitTo$ = ExitTo$ + " " + ZNodeID$ : _ ' KG032502 GOTO 10989 ' KG032502 10985 CALL ReadParms (ZOutTxt$(),8,1) IF ZErrCode > 0 THEN _ IF ReqDoorsDef THEN _ ' KG032502 EXIT SUB _ ' KG032502 ELSE ExitTo$ = ExitTo$ + " " + ZNodeID$ : _ ' KG032502 GOTO 10989 ' KG032502 IF ExitTo$ <> ZOutTxt$(1) THEN _ GOTO 10985 CALL CheckInt (ZOutTxt$(2)) IF ZErrCode > 0 THEN _ ZErrCode = 0 : _ GOTO 10985 IF ZUserSecLevel < ZTestedIntValue THEN _ CALL QuickTPut1 ("Insufficient security for door") : _ EXIT SUB WasX$ = LEFT$(ZOutTxt$(5),INSTR(ZOutTxt$(5)+" "," ")-1) CALL FindIt (WasX$) IF NOT ZOK THEN _ GOTO 10986 ZFileName$ = ZOutTxt$(3) ExitMethod$ = ZOutTxt$(4) ExitTemplate$ = ZOutTxt$(5) ZDoorDisplay$ = ZOutTxt$(7) DoorTime$ = ZOutTxt$(8) CALL AskUsers CALL SmartText (ExitTemplate$,ZFalse,ZFalse) CALL MetaGSR (ExitTemplate$,ZFalse) ExitTo$ = ExitTemplate$ GOTO 10989 Change RBBSSUB4.BAS as follows: (line 59500) SUB SubMenu (PassedPrompt$,CurMenu$,FrontOpt$, _ BackOpt$,ReturnOn$,GRDefault$,VerifyInMenu, _ AllMenuOK,RequireInMenu,BackOpt2$,InMenu) STATIC ' KG032502 59538 FilName$ = FPre$ + ZWasZ$ CALL BadFile (FilName$,WasBF) IF WasBF > 1 THEN _ ZOK = ZFalse : _ RETURN ZFileName$ = FilName$ + _ BackOpt$ CALL Graphic (GRDefault$,ZFileName$) IF NOT ZOK THEN _ IF BackOpt2$ <> "" THEN _ ZFileName$ = FilName$ + _ BackOpt2$ : _ CALL Graphic (GRDefault$,ZFileName$) IF ZOK THEN _ IF ZSysop OR (NOT RequireInMenu) THEN _ RETURN _ ELSE CALL WordInFile (CurMenu$,ZWasZ$,InMenu) : _ ' KG032502 IF InMenu THEN _ ' KG032502 RETURN _ ELSE GOTO 59540 IF (NOT VerifyInMenu) THEN _ GOTO 59540 CALL WordInFile (CurMenu$,ZWasZ$,InMenu) 'verify against menu itself ' KG032502 IF InMenu THEN _ ' KG032502 IF AllMenuOK THEN _ RETURN 59540 WasX$ = FPre$ + _ ZWasZ$ + _ ".MNU" 'check whether option is a menu ZFileName$ = WasX$ CALL Graphic (GRDefault$,ZFileName$) IF ZOK THEN _ NewMenu = ZTrue : _ CurMenuVer$ = ZFileName$ : _ CurMenu$ = WasX$ : _ CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue) : _ MenuFront$ = MenuDrv$ + WasX$ : _ RETURN IF VerifyInMenu AND InMenu AND NOT RequireInMenu THEN _ ' KG032502 CALL UpdtCalr("Option " + ZWasZ$ + " on menu " + _ CurMenu$ + " but not found",1) RETURN ------------------------[ KG032501 ]------------------------- Problem: When put registration door control in DOORS.DEF, it is being ignored. Solution: Change RBBSSUB2.BAS as follows: (line 10983) SUB DoorExit STATIC IF ZWasZ$ = "" OR _ ZWasZ$ = "NONE" THEN _ EXIT SUB CALL FindIt (ZWasZ$) IF NOT ZOK THEN _ GOTO 10986 CALL BreakFileName (ZWasZ$,WasX$,ExitTo$,ExitMethod$,ZFalse) ' KG032501 ExitMethod$ = "" . . . ------------------------[ KG031801 ]------------------------- Problem: When has main and auxiliary FMS directories, and list an auxiliary, abort, then list main, get auxiliary instead. Solution: Change RBBSSUB3.BAS as follows: 58183 CLOSE 2 ZNonStop = (ZPageLength < 1) ZStopInterrupts = ZFalse ZOutTxt$ = "" ZActiveFMSDir$ = "" ' KG031801 ZJumpSupported = ZFalse EXIT SUB ------------------------[ KG031501 ]------------------------- Problem: Sometimes get endless looping where keeps trying to download same file after upload is aborted. Solution: Change RBBSSUB5.BAS as follows: 20735 CALL KillWork (ZFileName$) IF ZErrCode <>0 THEN _ ZWasEL = 20736 : _ GOTO 21900 ZAnsIndex = ZLastIndex + 1 ' KG031501 ZLastIndex = 0 RETURN ------------------------[ KK030901 ]------------------------- Problem: Possible to get untrapped overflow error in intermediate variables in an integer calculation. Solution: Change RBBS-PC.BAS as follows: 135 IF ZCurDef$ = ZOrigCnfg$ THEN _ ZActiveMessageFile$ = ZMainMsgFile$ : _ ZActiveUserFile$ = ZMainUserFile$ GOSUB 4910 IF ZConfMode THEN _ GOTO 150 ZLocalUserMode = (RIGHT$(ZComPort$,1) < "1") GET 1,ZNodeRecIndex ZWasY$ = MID$(ZMsgRec$,77,2) CALL UnPackDate (ZWasY$,WasX,WasL,WasI,ZOldDate$) ZOldDate$ = LEFT$(ZOldDate$,6) + MID$(STR$(WasX),2) ZHourMinToDropToDos = - (ZHourMinToDropToDos > 0) * ZHourMinToDropToDos Hour = INT(ZHourMinToDropToDos / 100) WasMN = ZHourMinToDropToDos - Hour * 100 ZTimeToDropToDos! = Hour * 3600! + WasMN * 60! ' KK030901 175 GOSUB 5344 CALL CountLines (MaxEntries) REDIM ZCategoryName$(MaxEntries),ZCategoryCode$(MaxEntries),_ ZCategoryDesc$(MaxEntries) : _ CALL InitFMS (ZCategoryName$(),ZCategoryCode$(), _ ZCategoryDesc$(),ZNumCategories) ZMaxMsgLines = ZMaxMsgLinesDef ZLocalUser = (ZLocalUser OR ZLocalUserMode) IF (NOT ZLocalUser) AND (NOT SubBoard) THEN _ CALL OpenCom (ZModemInitBaud$,",N,8,1") IF NOT SubBoard THEN _ CALL SetEcho (ZDefaultEchoer$) ZNodeWorkFile$ = ZNodeWorkDrvPath$ + _ "NODE" + _ ZNodeFileID$ + _ "WRK" ZSecsPerSession! = ZMinsPerSession * 60! ' KK030901 IF NOT ZLocalUserMode THEN _ IF NOT ZExitToDoors THEN _ GOTO 180 _ ELSE IF NOT ZLocalUser THEN _ GOTO 180 ZLocalUser = ZTrue ZBPS = -6 ZBaudTest! = 9600 ZEightBit = ZTrue ZSnoop = ZTrue IF ZExitToDoors THEN _ CALL AMorPM : _ CALL ReadProf : _ GOTO 410 GOSUB 178 GOTO 345 459 GOSUB 9500 ZLastDateTimeOnSave$ = ZLastDateTimeOn$ IF ZExitToDoors THEN _ TempHoldTime! = VAL(LEFT$(ZTime$,2))*3600! + _ ' KK030901 VAL(MID$(ZTime$,4,2))*60! : _ ' KK030901 CALL CheckTime(TempHoldTime!, TempTime!, 2) : _ MinsInDoors = TempTime! / 60 : _ CALL TimeRemain (MinsRemaining) ZUserFileIndex = LOC(5) GOSUB 5135 ' ' *** COMPUTE THE NUMBER OF DAYS REMAINING UNTIL REGISTRATION EXPIRES ** ' IF ZRestrictByDate AND ZDaysInRegPeriod > 0 THEN _ CALL CompDate (UserRegYY,UserRegMM,UserRegDD,UserComputeDate!) : _ ZRegDaysRemaining = UserComputeDate! + _ ZDaysInRegPeriod - _ TodayComputeDate! : _ CALL ExpireDate (UserComputeDate!,ZDaysInRegPeriod,ZExpirationDate$) _ ELSE ZDaysInRegPeriod = 0 IF NOT ZPrivateDoor THEN _ IF ZRegDaysRemaining < 0 AND ZDaysInRegPeriod > 0 THEN _ IF ZUserSecLevel > ZExpiredSec THEN _ CALL QuickTPut1 (ZWasLG$(9) + _ " - security reset to " + _ STR$(ZExpiredSec)) : _ CALL BufFile(ZHelpPath$+"RGXPIRD"+ZHelpExtension$,WasX) : _ ZLogonErrorIndex = 9 : _ ZUserSecLevel = ZExpiredSec : _ LSET ZSecLevel$ = MKI$(ZUserSecLevel) : _ GOSUB 5135 Change RBBSSUB3.BAS as follows: (line 44000) SUB ReadProf STATIC FIELD 1, 128 AS ZMsgRec$ GET 1,ZNodeRecIndex ZReliableMode = VAL(MID$(ZMsgRec$,91,2)) MID$(ZMsgRec$,40,2) = "00" ZEightBit = VAL(MID$(ZMsgRec$,42,2)) ZBPS = VAL(MID$(ZMsgRec$,44,2)) CALL CommInfo ZBaudTest! = VAL(MID$(ZBaudRates$,(-5 * ZBPS),5)) ZUpperCase = VAL(MID$(ZMsgRec$,46,2)) ZNumDnldBytes! = CVS(MID$(ZMsgRec$,48,4)) ' KG022101 ZBatchTransfer = (MID$(ZMsgRec$,52,1) = "1") ZWasGR = VAL(MID$(ZMsgRec$,53,2)) HourLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,65,1))),2),2) MinLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,66,1))),2),2) SecLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,67,1))),2),2) ZTimeLoggedOn$ = HourLoggedOn$ + _ ":" + _ MinLoggedOn$ + _ ":" + _ SecLoggedOn$ ZTransferFunction = VAL(MID$(ZMsgRec$,74,1)) ZWasFT$ = MID$(ZMsgRec$,75,1) ZTimeCredits! = 60!*CVI(MID$(ZMsgRec$,113,2)) ' KKG030901 ZDooredTo$ = MID$(ZMsgRec$,79,8) CALL Trim (ZDooredTo$) . . . 44003 ZUserLogonTime! = VAL(HourLoggedOn$) * 3600! + _ ' KK030901 VAL(MinLoggedOn$) * 60! + _ ' KK030901 VAL(SecLoggedOn$) HourLoggedOn$ = "" MinLoggedOn$ = "" SecLoggedOn$ = "" IF ZMinsPerSession < 1 THEN _ ZMinsPerSession = 3 IF NOT ZEightBit THEN _ OUT ZLineCntlReg,&H1A IF LEFT$(ZMsgRec$,7) = "SYSOP " THEN _ ZFirstName$ = ZSysopPswd1$ : _ ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$ _ ELSE ZFirstNameEnd = INSTR(ZMsgRec$," ") : _ ZLastNameEnd = INSTR(ZFirstNameEnd + 1,ZMsgRec$ + " "," ") : _ ZFirstName$ = LEFT$(ZMsgRec$,ZFirstNameEnd-1) : _ ZLastName$ = MID$(ZMsgRec$,ZFirstNameEnd + 1,ZLastNameEnd - (ZFirstNameEnd + 1)) : _ ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31) ZWasZ$ = ZFirstName$ CALL OpenWork (2,ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF") CALL ReadDir (2,1) ZLimitMinsPerSession = VAL (ZOutTxt$) CLOSE 2 END SUB (line 58140) SUB LoadNew (Ara(2)) STATIC IF ZFMSDirectory$ = "" THEN _ EXIT SUB ZPrevBase$ = "" IF PrevLoadNew$ = ZFMSDirectory$ THEN _ Ara(1,1) = 0 : _ EXIT SUB PrevLoadNew$ = ZFMSDirectory$ CALL OpenFMS (LastRec) FIELD 2, 23 AS PreDate$, _ 2 AS WasMM$, _ 1 AS Fill1$, _ 2 AS WasDD$, _ 1 AS Fill2$, _ 2 AS Year$, _ (2 + ZMaxDescLen) AS Fill3$, _ 3 AS Category$, _ 2 AS Fill4$ MaxRecs = UBOUND(Ara,1) IF MaxRecs < 1 THEN _ MaxRecs = 1 _ ELSE IF MaxRecs > 23 THEN _ MaxRecs = 23 WasL = 0 WasK = LastRec WHILE WasK > 0 AND WasL < MaxRecs GET #2,WasK IF INSTR("\= ",LEFT$(PreDate$,1)) > 0 THEN _ GOTO 58142 IF (ZCanDnldFromUp OR Category$ <> ZDefaultCatCode$) THEN _ WasL = WasL + 1 : _ Ara(WasL,1) = 372! * (VAL(Year$) - 80!) + 31! * VAL(WasMM$) + VAL(WasDD$) ' KK030901 IF NOT ZCanDnldFromUp THEN _ WasX = ZMinSecToView _ ELSE IF Category$ = "***" THEN _ WasX = ZSysopSecLevel _ ELSE IF Category$ = ZDefaultCatCode$ THEN _ WasX = ZMinSecToView _ ELSE WasX = ZOptSec(19) Ara(WasL,2) = WasX ------------------------[ KG030801 ]------------------------- Problem: When screen pauses in midst of personal mail scan, will no longer show rest of mail scan on the screen. Solution: Change RBBS-PC.BAS as follows: 1900 GOSUB 5344 IF ZPrivateDoor THEN _ ActionFlag = ZTrue ZPrevBase$ = ZActiveMessageFile$ ShowActive = ZFalse IF NOT ActionFlag THEN _ CALL QuickTPut ("Checking messages in " + ConfFileName$,0) : _ ShowActive = ZTrue _ ELSE CALL QuickTPut ("Loading messages",0) WasA1$ = "" ' KG030801 MsgCt = 0 ' KG030203 MsgsFromUser = ZFalse ActiveMessages = 0 MailReported = ActionFlag FirstOld = ZTrue GOSUB 23000 MsgRec = FirstMsgRecord MaxMsgs = VAL(MID$(ZMsgRec$,89,7)) IF MaxMsgs > WasMM THEN _ MaxMsgs = WasMM REDIM ZMsgPtr(MaxMsgs,2) NumDots = 0 1940 IF MsgsFromUser < ZMsgDim THEN _ MsgsFromUser = MsgsFromUser + 1 : _ WasA1$ = WasA1$ + LEFT$(ZMsgRec$,5) ' KG030801 1960 WasK = 1 FOR MsgCt = 1 TO MsgsFromUser ' KG030203 ZOutTxt$ = MID$(WasA1$,WasK,5) ' KG030801 WasK = WasK + 5 GOSUB 12978 IF MsgCt MOD 15 = 0 THEN _ ' KG030203 CALL SkipLine (1) : _ ' KG030203 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue) ' KG030203 NEXT WasA1$ = "" ' KG030801 CALL SkipLine (1) CALL QuickTPut1 ("Please K)ill old/unneeded msgs") ------------------------[ KG030601 ]------------------------- Problem: Sometimes RBBS will get in a state where it constantly recycles. Callers file says "Connect Timeout". Solution: Caused usually by storing a telephone number in place of where from, or by failing to give password right in local mode, then bringing up remotely. Change RBBS-PC.BAS as follows: 150 IF SubBoard THEN _ GOSUB 12987 : _ GOSUB 5135 : _ GOTO 170 ZSysopAvail = VAL(MID$(ZMsgRec$,32,2)) ZSysopAnnoy = VAL(MID$(ZMsgRec$,34,2)) ZSysopNext = VAL(MID$(ZMsgRec$,36,2)) MID$(ZMsgRec$,36,2) = STR$(ZFalse) ZPrinter = VAL(MID$(ZMsgRec$,38,2)) IF ZTurnPrinterOff THEN _ ZPrinter = ZFalse ZExitToDoors = (MID$(ZMsgRec$,40,2) = "-1" AND ZNetBaud$ = "") ZEightBit = VAL(MID$(ZMsgRec$,42,2)) ZBPS = VAL(MID$(ZMsgRec$,44,2)) ZSnoop = VAL(MID$(ZMsgRec$,58,2)) MID$(ZMsgRec$,57,1) = "I" ZPrivateDoor = (MID$(ZMsgRec$,72,2) = "-1") IF ZPrivateDoor THEN _ ZHasPrivDoor = ZTrue MID$(ZMsgRec$,72,2) = STR$(ZFalse) ZLocalUser = (MID$(ZMsgRec$,101,2) = ZCarriageReturn$+ZCarriageReturn$) ' KG030601 IF ZExitToDoors OR ZPrivateDoor THEN _ ZHasDoored = ZTrue : _ TurboLogon = ZTrue PUT 1,ZNodeRecIndex GOSUB 12985 ' ' ***** INITIALIZE VOICE SYNTHESIZER **** ' CALL Talk (Init,ZOutTxt$) ' ' ***** TEST FOR MULTI LINK PRESENT IF NOT COMPAQ COMPUTER **** ' 13555 ZActiveMessageFile$ = ZOrigMsgFile$ GOSUB 12986 GOSUB 5344 GET 1,ZNodeRecIndex MID$(ZMsgRec$,57,1) = "I" MID$(ZMsgRec$,40,2) = " 0" MID$(ZMsgRec$,72,2) = " 0" IF MID$(ZMsgRec$,101,2) = ZCarriageReturn$+ZCarriageReturn$ THEN _ ' KG030602 MID$(ZMsgRec$,101,2) = " 0" ' KG030602 PUT 1,ZNodeRecIndex GOSUB 12985 CLOSE 1,2,4,5 IF NOT ZFossil THEN _ CLOSE 3 IF ZRecycleToDos THEN _ GOTO 203 RUN 100 Change RBBSSUB3.BAS as follows: 43070 ZActiveMessageFile$ = ZOrigMsgFile$ ZSubParm = 3 CALL FileLock CALL OpenMsg FIELD 1, 128 AS ZMsgRec$ GET 1,ZNodeRecIndex IF ZGlobalSysop THEN _ MID$(ZMsgRec$,1,30) = "SYSOP" + SPACE$(25) MID$(ZMsgRec$,40,2) = STR$(ZExitToDoors) MID$(ZMsgRec$,42,2) = STR$(ZEightBit) MID$(ZMsgRec$,44,2) = STR$(ZBPS) MID$(ZMsgRec$,46,2) = STR$(ZUpperCase) MID$(ZMsgRec$,48,5) = MKS$(ZNumDnldBytes!) + MID$(STR$(-ZBatchTransfer),2) ' KG022101 MID$(ZMsgRec$,53,2) = STR$(ZWasGR) MID$(ZMsgRec$,55,2) = STR$(ZSysop) MID$(ZMsgRec$,65,3) = CHR$(VAL(LEFT$(ZTimeLoggedOn$,2))) + _ CHR$(VAL(MID$(ZTimeLoggedOn$,4,2))) + _ CHR$(VAL(MID$(ZTimeLoggedOn$,7,2))) MID$(ZMsgRec$,72,2) = STR$(ZPrivateDoor) MID$(ZMsgRec$,74,1) = MID$(STR$(ZTransferFunction),2,1) MID$(ZMsgRec$,75,1) = ZWasFT$ MID$(ZMsgRec$,113,2) = MKI$(CINT(ZTimeCredits!)/60) MID$(ZMsgRec$,79,8) = LEFT$(ZDooredTo$+" ",8) MID$(ZMsgRec$,91,2) = STR$(ZReliableMode) CALL BreakFileName (ZCurPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZFalse) MID$(ZMsgRec$,93,8) = ZUserIn$ + SPACE$(8 - LEN(ZUserIn$)) IF ZLocalUser THEN _ ZWasZ$ = ZCarriageReturn$ + ZCarriageReturn$ _ ' KG030601 ELSE ZWasZ$ = " 0" ' KG030601 MID$(ZMsgRec$,101,2) = ZWasZ$ ' KG030601 MID$(ZMsgRec$,103,2) = STR$(ZLocalUserMode) ' KG030601 ZConfName$ = LEFT$(ZConfName$,INSTR(ZConfName$ + " "," ") - 1) MID$(ZMsgRec$,105,8) = ZConfName$ + SPACE$(8 - LEN(ZConfName$)) MID$(ZMsgRec$,115,1) = MID$(STR$(ZAutoLogoffReq),2,1) MID$(ZMsgRec$,117,2) = STR$(ZMenuIndex) MID$(ZMsgRec$,119,2) = LEFT$(DATE$,2) MID$(ZMsgRec$,121,2) = MID$(DATE$,4,2) MID$(ZMsgRec$,123,2) = RIGHT$(DATE$,2) MID$(ZMsgRec$,125,2) = LEFT$(TIME$,2) MID$(ZMsgRec$,127,2) = MID$(TIME$,4,2) ' *** Save additional parameters for door restoral CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF") CALL PrintWorkA (STR$(ZLimitMinsPerSession)) CLOSE 2 (line 44000) SUB ReadProf STATIC FIELD 1, 128 AS ZMsgRec$ GET 1,ZNodeRecIndex ZReliableMode = VAL(MID$(ZMsgRec$,91,2)) MID$(ZMsgRec$,40,2) = "00" ZEightBit = VAL(MID$(ZMsgRec$,42,2)) ZBPS = VAL(MID$(ZMsgRec$,44,2)) CALL CommInfo ZBaudTest! = VAL(MID$(ZBaudRates$,(-5 * ZBPS),5)) ZUpperCase = VAL(MID$(ZMsgRec$,46,2)) ZNumDnldBytes! = CVS(MID$(ZMsgRec$,48,4)) ' KG022101 ZBatchTransfer = (MID$(ZMsgRec$,52,1) = "1") ZWasGR = VAL(MID$(ZMsgRec$,53,2)) HourLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,65,1))),2),2) MinLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,66,1))),2),2) SecLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,67,1))),2),2) ZTimeLoggedOn$ = HourLoggedOn$ + _ ":" + _ MinLoggedOn$ + _ ":" + _ SecLoggedOn$ ZTransferFunction = VAL(MID$(ZMsgRec$,74,1)) ZWasFT$ = MID$(ZMsgRec$,75,1) ZTimeCredits! = 60*CVI(MID$(ZMsgRec$,113,2)) ZDooredTo$ = MID$(ZMsgRec$,79,8) CALL Trim (ZDooredTo$) IF ZExitToDoors AND ZDooredTo$ <> "" THEN _ CALL OpenWork (2,ZDoorsDef$) : _ IF ZErrCode = 0 THEN _ CALL ReadParms (ZOutTxt$(),8,1) : _ WHILE ZErrCode = 0 AND ZOutTxt$(1) <> ZDooredTo$ : _ CALL ReadParms (ZOutTxt$(),8,1) : _ WEND : _ IF ZOutTxt$(1) = ZDooredTo$ THEN _ ZDoorSkipsPswd = (ZOutTxt$(6) <> "Y") : _ CALL BufFile (ZOutTxt$(7),WasX) ZErrCode = 0 ZMenuIndex = VAL(MID$(ZMsgRec$,117,2)) ZCurPUI$ = MID$(ZMsgRec$,93,8) CALL Remove (ZCurPUI$," ") IF ZCurPUI$ <> "" THEN _ CALL BreakFileName (ZMainPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZTrue) : _ ZCurPUI$ = ZOutTxt$ + ZCurPUI$ + ZWasZ$ ZCustomPUI = (ZCurPUI$ <> "") ZLocalUser = (MID$(ZMsgRec$,101,2) = ZCarriageReturn$ + ZCarriageReturn$) ' KG030601 ZLocalUserMode = VAL(MID$(ZMsgRec$,103,2)) ZHomeConf$ = MID$(ZMsgRec$,105,8) ZAutoLogoffReq = (VAL(MID$(ZMsgRec$,115,1)) <> 0) CALL Trim (ZHomeConf$) IF ZRequiredRings > 0 AND _ INSTR(ZModemInitCmd$,"S0=255") THEN _ COLOR 7,0,0 _ ELSE COLOR ZFG,ZBG,ZBorder IF ZLocalUserMode THEN _ GOTO 44003 CALL SetBaud ------------------------[ KG030301 ]------------------------- Problem: prompt for file displayed on security violation confusing people because it wants only the file prefix and refuses to accept extension or drive/path without making that clear. Solution: Change CONFIG.BAS as follows: 17280 CALL ASKRO("Name of file shown for security breaches (prefix ONLY)",24,HJ$) ' KG030301 IF LEN(HJ$) > 8 OR INSTR(HJ$,".") > 0 THEN _ GOTO 17280 IF LEN(HJ$) < 1 THEN _ SECVIO.HLP$ = NONE.PICKED$ : _ RETURN CALL ALLCAPS (HJ$) SECVIO.HLP$ = HELP.PATH$ + HJ$ + "." + HELP.EXTENSION$ RETURN ------------------------[ KG030203 ]------------------------- Problem: If caller happened to have many msgs, display of them in msg scan may fail to pause when screen is full. Also, # of messages listed on a line was inconsistent between new and old messages. Solution: Change RBBS-PC.BAS as follows: 1900 GOSUB 5344 IF ZPrivateDoor THEN _ ActionFlag = ZTrue ZPrevBase$ = ZActiveMessageFile$ ShowActive = ZFalse IF NOT ActionFlag THEN _ CALL QuickTPut ("Checking messages in " + ConfFileName$,0) : _ ShowActive = ZTrue _ ELSE CALL QuickTPut ("Loading messages",0) ZUserIn$ = "" MsgCt = 0 ' KG030203 MsgsFromUser = ZFalse ActiveMessages = 0 MailReported = ActionFlag FirstOld = ZTrue GOSUB 23000 MsgRec = FirstMsgRecord MaxMsgs = VAL(MID$(ZMsgRec$,89,7)) IF MaxMsgs > WasMM THEN _ MaxMsgs = WasMM REDIM ZMsgPtr(MaxMsgs,2) NumDots = 0 1925 ZWasA = VAL(MID$(ZMsgRec$,2,4)) IF LogonMailNew THEN _ IF ZWasA <= ZLastMsgRead THEN _ GOTO 1935 IF NOT ShowActive THEN _ GOTO 1930 MailReported = ZTrue FirstNew = (ZWasA > ZLastMsgRead) IF FirstNew THEN _ MsgCt = 0 : _ ' KG030203 CALL SkipLine (1) : _ CALL QuickTPut1 ("NEW Mail for YOU (* = Private)") _ ELSE IF FirstOld THEN _ CALL SkipLine (1) : _ CALL QuickTPut1 ("OLD Mail for YOU (* = Private)") : _ FirstOld = ZFalse ShowActive = NOT FirstNew 1930 CALL QuickTPut (LEFT$(ZMsgRec$,5),0) MsgCt = MsgCt + 1 ' KG030203 IF MsgCt MOD 15 = 0 THEN _ ' KG030203 CALL SkipLine (1) : _ ' KG030203 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue) ' KG030203 1960 WasK = 1 FOR MsgCt = 1 TO MsgsFromUser ' KG030203 ZOutTxt$ = MID$(ZUserIn$,WasK,5) WasK = WasK + 5 GOSUB 12978 IF MsgCt MOD 15 = 0 THEN _ ' KG030203 CALL SkipLine (1) : _ ' KG030203 CALL AskMore ("",ZTrue,ZTrue,WasX,ZTrue) ' KG030203 NEXT ZUserIn$ = "" CALL SkipLine (1) CALL QuickTPut1 ("Please K)ill old/unneeded msgs") ------------------------[ KG030202 ]------------------------- Problem: In personal download, when have color graphics on, color of description spills over into prompt to download what. Solution: Change RBBSSUB4.BAS as follows: 59303 CALL QuickTPut (ZEmphasizeOff$,0) ' KG030202 ZOutTxt$ = "Download what: L)ist, * = new, or file(s)" + _ ZPressEnterExpert$ ZMacroMin = 99 ZStackC = ZTrue CALL PopCmdStack IF ZSubParm = -1 OR ZWasQ = 0 THEN _ ZLastIndex = 0 : _ EXIT SUB ------------------------[ KG030201 ]------------------------- Problem: When remote called does Xoff (Control-S), display of a message does not pause until after display of full screen or end of message. Solution: Change RBBS-PC.BAS as follows: 9085 IF LEFT$(ZOutTxt$,1) = ZStartOfHeader$ OR _ LEFT$(ZOutTxt$,LEN(ZScreenOutMsg$)) = ZScreenOutMsg$ THEN _ GOTO 9050 ZOutTxt$(ZLinesInMsg) = ZOutTxt$ IF Bracketed THEN _ Bracketed = ZFalse : _ HiLitedLine = ZLinesInMsg ZLinesInMsg = ZLinesInMsg + 1 IF ZLinesInMsg > MsgDimXtra THEN _ ZLinesInMsg = ZLinesInMsg - 1 : _ CALL SkipLine (1) : _ CALL QuickTPut1 ("Message too long. Truncated to " + STR$(MsgDimXtra) + " lines!") : _ ZOutTxt$ = "" : _ RETURN IF NOT DontPrint THEN _ ' KG030201 GOSUB 12979 : _ ' KG030201 IF ZRet THEN _ ZOutTxt$ = "" : _ RETURN _ ' KG030201 ELSE CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse) : _ ' KG030201 IF ZNo THEN _ ' KG030201 DontPrint = ZTrue ' KG030201 GOTO 9050 ------------------------[ KG030101 ]------------------------- Problem: When having mail waiting in current confernce, and read all the new mail, and then do a V)iew conference, the mail waiting flag is still shown as on in the current conference. Solution: Change RBBSSUB4.BAS as follows: 59852 IF EOF(2) OR NOT ZOK THEN _ GOTO 59854 CALL ReadAny ZActiveUserFile$ = ZOutTxt$ CALL ReadAny IF ZErrCode > 0 THEN _ GOTO 59854 ZActiveMessageFile$ = ZOutTxt$ CALL FindFile (ZActiveUserFile$,ZOK) IF NOT ZOK THEN _ GOTO 59854 CALL OpenUser (HighestUserRecord) FIELD 5, 128 AS ZUserRecord$ CALL FindFile (ZActiveMessageFile$,ZOK) IF NOT ZOK THEN _ GOTO 59854 CALL FindUser (ZOrigUserName$,"",ZStartHash,ZLenHash,_ 0,0,HighestUserRecord,_ Found,HoldUserFileIndex,ZWasSL) IF NOT Found THEN _ GOTO 59852 CALL OpenMsg FIELD 1, 128 AS ZMsgRec$ GET 1,1 AnyMail = ZTrue WasX = CVI(MID$(ZUserRecord$,57,2)) WasX = (WasX AND 512) > 0 CALL BreakFileName (ZActiveUserFile$,WasX$,CurPre$,CurExt$,ZFalse) InCur = (CurPre$ = NowInPre$ AND CurExt$ = NowInExt$) IF InCur THEN _ WasX = ZMailWaiting : _ ' KG030101 ZWasA = ZLastMsgRead _ ELSE ZWasA = CVI(MID$(ZUserRecord$,51,2)) . . . ------------------------[ KG022702 ]------------------------- Problem: When using LIT version with message import off (MIMPORT OFF), get untrapped errors when message margin of user set lower than that used by the message. Solution: Use new MIMPORT.LIT. ------------------------[ KG022701 ]------------------------- Problem: Command stacking not always working right in msg read. E.g. "j xxx r test" will look for messages with text "r". Solution: Change RBBS-PC.BAS as follows: 4330 QuickScanMsgs = ZFalse ReadMsgs = ZTrue HiLiteRec = -1 ScanMsgs = ZFalse MsgStart = 6 MsgEnd = 100 IF ZLocalUserMode OR NOT ZLocalUser THEN _ IF ReadMsgIn$ <> ZActiveMessageFile$ THEN _ ReadMsgIn$ = ZActiveMessageFile$ : _ CALL UpdtCalr ("Read Messages in " + ReadMsgIn$,1) GOSUB 1300 GOTO 4350 ' KG022701 4360 ZWasLG$(11) = ZWasZ$ NumMsgsSelected = ZLastIndex MsgIndex = ZAnsIndex ' KG022701 ZLastIndex = 0 ToRequested = ZFalse FromRequested = ZFalse IF ZPageLength < 1 THEN _ ZNonStop = ZTrue 4370 MsgIndex = MsgIndex + 1 ' KG022701 4371 IF MsgIndex <= NumMsgsSelected THEN _ ' KG022701 IF LEN(ZUserIn$(ZAnsIndex)) = 1 AND _ INSTR("Cc",ZUserIn$(MsgIndex)) > 0 THEN _ ' KG022701 GOTO 4370 _ ELSE _ CALL CheckInt (ZUserIn$(MsgIndex)) : _ ' KG022701 IF ZErrCode <> 0 THEN _ ZWasEL = 4371 : _ GOTO 13000 _ ELSE CurMsg = ZTestedIntValue : _ ZAnsIndex = MsgIndex : _ ' KG022701 GOTO 4415 4400 GOSUB 12932 ' KG022701 IF ZWasQ = 0 THEN _ RETURN 4402 IF LEN(ZUserIn$(ZAnsIndex)) = 1 THEN _ ' KG022701 IF INSTR("Qq",ZUserIn$) THEN _ RETURN _ ELSE IF INSTR("Hh",LEFT$(ZUserIn$(ZAnsIndex),1)) THEN _ ' KG022701 ZFileName$ = ZHelpPath$ + "MR" + ZHelpExtension$ : _ GOSUB 1790 : _ GOTO 4390 MsgIndex = 0 ' KG022701 NumMsgsSelected = ZWasQ GOTO 4370 4416 IF INSTR("Mm",ZUserIn$(ZAnsIndex)) THEN _ AddressedToUser = ZTrue : _ GOTO 4370 ZWasA = INSTR("FfTt",ZUserIn$(ZAnsIndex)) IF ZWasA > 0 THEN _ ToRequested = (ZWasA > 2) : _ FromRequested = (ZWasA < 3) : _ GOTO 4370 IF CurMsg = 0 THEN _ IF SearchHeader$ <> "" THEN _ GOTO 4370 _ ELSE SearchString$ = ZUserIn$(ZAnsIndex) : _ ' KG022701 CALL AllCaps (SearchString$) : _ CALL Remove (SearchString$,CHR$(34) + CHR$(39)) : _ SearchHeader$ = SearchString$ : _ SubInHeader$ = SearchHeader$ : _ GOTO 4370 CALL SkipLine (1) ------------------------[ RH022501 ]------------------------- Problem: in autodownload, the name displayed to the user is wrong when default extension is added by rbbs. Change RBBS-PC.BAS as follows: 20247 ZWasDF = 0 CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse) IF ZAutoDownInProgress THEN _ ZUserIn$(ZAnsIndex) = WasX$ + "." + Extension$ : _ ' RH022501 ZOutTxt$ = "Transferring -- " + _ ZUserIn$(ZAnsIndex) : _ ' RH022501 GOSUB 21640 : _ IF ZFileSysParm > 1 THEN _ RETURN IF INSTR("...WRK.FW .ARC.EXE.COM.OBJ.WKS.LBR.ZIP.PAK.ZOO.LZH.","."+Extension$+".") > 2 OR _ MID$(Extension$,2,1) = "Q" OR _ (ZRequireNonASCII AND Extension$ = "BAS") THEN _ ZWasDF = ZTrue ------------------------[ KG022301 ]------------------------- Problem: no way to trigger macro processing for on-line files. Either not found or macro. Now can have both. Solution: Add the following variable to RBBS-VAR.BAS: ZFileLocations$ Change RBBSSUB4.BAS as follows: (line 58700) SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,PassToMacro$) STATIC ' KG022204 ZOK = ZFalse ZDotFlag = ZFalse IF MarkingTime THEN _ CALL QuickTPut ("Searching for "+FilName$,0) IF ZMenuIndex = 6 THEN _ GOTO 58705 NumSearch = 1 WasX = 0 WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _ SDirAra$(NumSearch) <> "" IF MarkingTime THEN _ CALL MarkTime (WasX) WasX$ = SDirAra$(NumSearch) + _ FilName$ CALL FindFile (WasX$,ZOK) NumSearch = NumSearch + 1 WEND IF ZOK OR NOT ZFastFileSearch THEN _ ' KG022301 GOTO 58710 ' KG022301 CALL OpenRSeq (ZFastFileList$,HighRec,WasX,18) ' KG022301 IF ZErrCode <> 0 THEN _ ' KG022301 GOTO 58710 ' KG022301 CALL TrimTrail (FilName$,".") CALL BinSearch (FilName$,1,12,18,HighRec,RecFoundAt, RecFound$) ZOK = (RecFoundAt > 0) IF NOT ZOK THEN _ ' KG022301 GOTO 58710 ' KG022301 ZOK = ZFalse CALL CheckInt (MID$(RecFound$,13,4)) IF ZTestedIntValue < 1 THEN _ ' KG022301 GOTO 58710 ' KG022301 CALL OpenRSeq (ZFastFileLocator$,HighRec,WasX,66) IF ZErrCode <> 0 OR ZTestedIntValue > HighRec THEN _ ' KG022301 GOTO 58710 ' KG022301 FIELD 2, 66 AS LocatorRec$ GET 2, ZTestedIntValue WasX$ = LEFT$(LocatorRec$,63) CALL Trim (WasX$) IF LEFT$(WasX$,2) = "M!" THEN _ ZOK = ZFalse : _ ' KG022301 ZGSRAra$(1) = PassToMacro$ : _ ' KG022204 WasX$ = RIGHT$(WasX$,LEN(WasX$)-2) : _ ' KG022204 CALL Trim (WasX$) : _ ' KG022204 ZFileLocation$ = "" : _ ' KG022301 CALL MacroExe (WasX$) : _ ' KG022204 IF ZFileLocation$ = "" THEN _ ' KG022301 ZOK = ZFalse : _ ' KG022204 GOTO 58711 _ ' KG022301 ELSE WasX$ = ZFileLocation$ ' KG022301 WasX$ = WasX$ + FilName$ ' KG022301 CALL FindFile (WasX$,ZOK) ' KG022301 GOTO 58710 ' KG022301 Change RBBSSUB5.BAS as follows: 63336 GOSUB 63395 IF NOT ZMacroActive THEN _ ZMacroEcho = ZTrue : _ EXIT SUB IF LEN(ZOutTxt$) < 3 THEN _ GOTO 63398 WasX$ = RIGHT$(ZOutTxt$,LEN(ZOutTxt$)-3) IF CompareVar > 0 THEN _ IF NOT CaseExecute THEN _ IF LEFT$(ZOutTxt$,3) = ZSmartTextCode$+"==" THEN _ GOTO 63370 _ ELSE IF LEFT$(ZOutTxt$,7) = ZSmartTextCode$ + "END ON" THEN _ CompareVar = 0 : _ GOTO 63336 _ ELSE GOTO 63336 IF LEFT$(ZOutTxt$,1) <> ZSmartTextCode$ THEN _ GOTO 63398 CALL CheckInt (MID$(ZOutTxt$,2)) IF ZErrCode > 0 THEN _ GOTO 63398 IF ZTestedIntValue > 0 AND ZTestedIntValue <= ZMaxWorkVar THEN _ ZOutTxt$ = WasX$ : _ ' Macro command ask ZForceKeyboard = ZTrue : _ ZMacroSave = ZTestedIntValue : _ ZLinesPrinted = 1 : _ ZNonStop = (ZPageLength < 1) : _ EXIT SUB ON (1+INSTR("*0*1*B*FWT>>STON==M!M@EYEN/*TK<<:=LVNVCVLO",MID$(ZOutTxt$,2,2)))\2 GOTO _ ' KG022301 63345, _ ' Display with no Carriage Return 63347, _ ' Display with Carriage Return 63340, _ ' Display Block 63348, _ ' Display File 63343, _ ' Wait # of seconds 63350, _ ' Append to file 63355, _ ' Stack 63360, _ ' Case 63370, _ ' Case Comparison 63375, _ ' Macro execute 63380, _ ' Macro Abort 63383, _ ' Macro Echo on 63385, _ ' Macro Echo off 63336, _ ' Macro Comment 63387, _ ' Turbo Key allowed 63390, _ ' Form read 63362, _ ' Assign value to work var 63363, _ ' LV list verify 63364, _ ' NV number verify 63364, _ ' CV character verify ' KG022301 63367 ' LO assign file location ' KG022301 GOTO 63398 63367 CALL TRIM (WasX$) ' KG022301 ZFileLocation$ = WasX$ ' KG022301 GOTO 63336 ' KG022301 ------------------------[ KG022205 ]------------------------- Problem: In arc view, if file invokes macro processing, the file name was no longer correct when came back and reported file not found. 20143 ZWasZ$ = ZUserIn$(ZAnsIndex) WasZ$ = ZWasZ$ ' KG022205 CALL AllCaps (ZWasZ$) CALL BreakFileName (ZWasZ$,Drive$,Prefix$,Ext$,ZFalse) IF Ext$ = "" THEN _ Ext$ = ZDefaultExtension$ : _ ZWasZ$ = ZWasZ$ + "." + ZDefaultExtension$ ZFileNameHold$ = ZWasZ$ ZFileName$ = ZWasZ$ CALL BadFile (Prefix$,BadFileNameIndex) ON BadFileNameIndex GOTO 20144,20146,20147 20146 ZWasZ$ = WasZ$ + _ ' KG022205 " not found!" CALL UpdtCalr (ZWasZ$,2) ZOutTxt$ = ZWasZ$ + _ " Type correct filename" + ZPressEnterExpert$ ZSubParm = 1 CALL TGet IF ZSubParm = -1 OR ZWasQ = 0 THEN _ RETURN ZUserIn$(ZAnsIndex) = ZUserIn$(1) GOTO 20143 ------------------------[ KG022204 ]------------------------- Problem: SysOps off-line files might want to process differently when get an upload, view, or download rather than execute macro only on download. Solution: pass D, V, or U to macro in first work variable so can alter processing. Change RBBSSUB2.BAS as follows: 20145 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + (NOT ZSysop),ZTrue,"V") ' KG022204 IF ZOK THEN _ GOTO 20148 Change RBBSSUB4.BAS as follows: (line 58700) SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,PassToMacro$) STATIC ' KG022204 ZOK = ZFalse ZDotFlag = ZFalse IF MarkingTime THEN _ CALL QuickTPut ("Searching for "+FilName$,0) IF ZMenuIndex = 6 THEN _ GOTO 58705 NumSearch = 1 WasX = 0 WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _ SDirAra$(NumSearch) <> "" IF MarkingTime THEN _ CALL MarkTime (WasX) WasX$ = SDirAra$(NumSearch) + _ FilName$ CALL FindFile (WasX$,ZOK) NumSearch = NumSearch + 1 WEND IF ZOK OR NOT ZFastFileSearch THEN _ ' KG022301 GOTO 58710 ' KG022301 CALL OpenRSeq (ZFastFileList$,HighRec,WasX,18) ' KG022301 IF ZErrCode <> 0 THEN _ ' KG022301 GOTO 58710 ' KG022301 CALL TrimTrail (FilName$,".") CALL BinSearch (FilName$,1,12,18,HighRec,RecFoundAt, RecFound$) ZOK = (RecFoundAt > 0) IF NOT ZOK THEN _ ' KG022301 GOTO 58710 ' KG022301 ZOK = ZFalse CALL CheckInt (MID$(RecFound$,13,4)) IF ZTestedIntValue < 1 THEN _ ' KG022301 GOTO 58710 ' KG022301 CALL OpenRSeq (ZFastFileLocator$,HighRec,WasX,66) IF ZErrCode <> 0 OR ZTestedIntValue > HighRec THEN _ ' KG022301 GOTO 58710 ' KG022301 FIELD 2, 66 AS LocatorRec$ GET 2, ZTestedIntValue WasX$ = LEFT$(LocatorRec$,63) CALL Trim (WasX$) IF LEFT$(WasX$,2) = "M!" THEN _ ZOK = ZFalse : _ ' KG022301 ZGSRAra$(1) = PassToMacro$ : _ ' KG022204 WasX$ = RIGHT$(WasX$,LEN(WasX$)-2) : _ ' KG022204 CALL Trim (WasX$) : _ ' KG022204 ZFileLocation$ = "" : _ ' KG022301 CALL MacroExe (WasX$) : _ ' KG022204 IF ZFileLocation$ = "" THEN _ ' KG022301 ZOK = ZFalse : _ ' KG022204 GOTO 58711 _ ' KG022301 ELSE WasX$ = ZFileLocation$ ' KG022301 WasX$ = WasX$ + FilName$ ' KG022301 CALL FindFile (WasX$,ZOK) ' KG022301 GOTO 58710 ' KG022301 59336 ZUserIn$(WasI) = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1) CALL FindFile (ZPersonalDrvPath$ + ZUserIn$(WasI),ZOK) IF ZOK THEN _ ZUserIn$(WasI) = ZPersonalDrvPath$ + ZUserIn$(WasI) _ ELSE CALL RotorsDir (ZUserIn$(WasI),ZSubDir$(),ZSubDirCount + _ ((ZUserSecLevel < ZMinSecToView) OR _ NOT ZCanDnldFromUp),ZTrue,"D") : _ ' KG022204 GOSUB 59338 RETURN Change RBBSSUB5.BAS as follows: 20222 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + _ ((ZUserSecLevel < ZMinSecToView) OR _ NOT ZCanDnldFromUp),MarkingTime,"D") ' KG022204 20440 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount,ZTrue,"U") ' KG022204 ------------------------[ KG022203 ]------------------------- Problem: When locally viewing the distributed color graphics door menu (MENU05C), the colors will bleed over to the right side of the boundary of the menu. The display looks fine remotely. Solution: Replace MENU05C with the new one distributed in the latest merge file. ------------------------[ KG022202 ]------------------------- Problem: When installing RBBS-PC for the first time and use the distributed def file RBBS-PC.DEF, the up and downloads do not work properly unless RBBS-PC is installed in a subdirectory called RBBS. Solution: In CONFIG, change the subdirectory for uploads from "C:\RBBS\FILES" to "C:FILES", and change the two subdirectories available for downloading from "C:\RBBS\FILES" to "C:FILES" and from "C:\RBBS\BULLETINS" to "C:BULLETINS". These are changed in parameter 208. ------------------------[ KG022201 ]------------------------- Problem: When doing a directory listing and V)iew archieve, J)ump is no longer an option after listing resumes. Solution: Change RBBSSUB3.BAS as follows: 58180 ZTurboKey = -ZTurboKeyUser ZStackC = ZTrue CALL AskMore (ExtraPrompt$, ZTrue, ZFalse,AbortIndex,ZFalse) IF ZSubParm = -1 THEN _ GOTO 58183 IF ZNo THEN _ GOTO 58183 CALL AllCaps (ZUserIn$(1)) IF ZUserIn$(1) = "V" THEN _ ZLastIndex = ZWasQ : _ ZAnsIndex = 1 : _ CALL GetArc : _ ZJumpSupported = ZTrue : _ ' KG022201 ZWasA = UpldIndex : _ GOSUB 58185 : _ UpldIndex = ZWasA : _ GOTO 58180 IF ZUserIn$(1) = "D" THEN _ ZOutTxt$ = "Download what file(s)" : _ ZStackC = ZTrue : _ CALL PopCmdStack : _ IF ZWasQ = 0 THEN _ GOTO 58180 IF ZJumpSearching THEN _ PrevSearch$ = SearchFor$ : _ SearchFor$ = ZJumpTo$ _ ELSE SearchFor$ = SearchString$ : _ IF LEN(ZUserIn$(1)) > 1 THEN _ IF NOT ZYes AND CanDnld THEN _ CALL SkipLine (1) : _ DnldFlag = UpldIndex : _ ZLastIndex = ZWasQ : _ ZAnsIndex = 1 : _ EXIT SUB IF ZNonStop THEN IF UpldIndex > 999 THEN _ IF (SearchDate$ = "" OR NOT ZExpertUser) THEN _ ZOutTxt$ = STR$(UpldIndex) + _ " lines left to search. Really go non-stop? (Y/[N])" : _ ZNoAdvance = ZTrue : _ ZTurboKey = -ZTurboKeyUser : _ ZSubParm = 1 : _ CALL TGet : _ CALL WipeLine (79) : _ ZNonStop = ZYes FMSCheckPoint = 0 GOTO 58168 ------------------------[ KG022103 ]------------------------- Problem: LIT merges not assigned security right for new users. Solution: Replace the file INDEF.LIT by the new one in the lastest fix file merges. ------------------------[ KG022102 ]------------------------- Problem: LIT merge generates a compile error when SURVEY metavariable is set to OFF. Solution: Replace the file SURVEY.LIT by the new one in the latest fix file merges. ------------------------[ KG022101 ]------------------------- Problem: When door to external protocols, not correctly tracking bytes downloaded. Caused by misspelled variable names. Change RBBSSUB3.BAS as follows: 43070 ZActiveMessageFile$ = ZOrigMsgFile$ ZSubParm = 3 CALL FileLock CALL OpenMsg FIELD 1, 128 AS ZMsgRec$ GET 1,ZNodeRecIndex IF ZGlobalSysop THEN _ MID$(ZMsgRec$,1,30) = "SYSOP" + SPACE$(25) MID$(ZMsgRec$,40,2) = STR$(ZExitToDoors) MID$(ZMsgRec$,42,2) = STR$(ZEightBit) MID$(ZMsgRec$,44,2) = STR$(ZBPS) MID$(ZMsgRec$,46,2) = STR$(ZUpperCase) MID$(ZMsgRec$,48,5) = MKS$(ZNumDnldBytes!) + MID$(STR$(-ZBatchTransfer),2) ' KG022101 MID$(ZMsgRec$,53,2) = STR$(ZWasGR) MID$(ZMsgRec$,55,2) = STR$(ZSysop) MID$(ZMsgRec$,65,3) = CHR$(VAL(LEFT$(ZTimeLoggedOn$,2))) + _ CHR$(VAL(MID$(ZTimeLoggedOn$,4,2))) + _ CHR$(VAL(MID$(ZTimeLoggedOn$,7,2))) MID$(ZMsgRec$,72,2) = STR$(ZPrivateDoor) MID$(ZMsgRec$,74,1) = MID$(STR$(ZTransferFunction),2,1) MID$(ZMsgRec$,75,1) = ZWasFT$ MID$(ZMsgRec$,113,2) = MKI$(CINT(ZTimeCredits!)/60) MID$(ZMsgRec$,79,8) = LEFT$(ZDooredTo$+" ",8) MID$(ZMsgRec$,91,2) = STR$(ZReliableMode) CALL BreakFileName (ZCurPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZFalse) MID$(ZMsgRec$,93,8) = ZUserIn$ + SPACE$(8 - LEN(ZUserIn$)) MID$(ZMsgRec$,101,2) = STR$(ZLocalUser) MID$(ZMsgRec$,103,2) = STR$(ZLocalUserMode) ZConfName$ = LEFT$(ZConfName$,INSTR(ZConfName$ + " "," ") - 1) MID$(ZMsgRec$,105,8) = ZConfName$ + SPACE$(8 - LEN(ZConfName$)) MID$(ZMsgRec$,115,1) = MID$(STR$(ZAutoLogoffReq),2,1) MID$(ZMsgRec$,117,2) = STR$(ZMenuIndex) MID$(ZMsgRec$,119,2) = LEFT$(DATE$,2) MID$(ZMsgRec$,121,2) = MID$(DATE$,4,2) MID$(ZMsgRec$,123,2) = RIGHT$(DATE$,2) MID$(ZMsgRec$,125,2) = LEFT$(TIME$,2) MID$(ZMsgRec$,127,2) = MID$(TIME$,4,2) ' *** Save additional parameters for door restoral CALL OpenOutW (ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF") CALL PrintWorkA (STR$(ZLimitMinsPerSession)) CLOSE 2 (line 44000) SUB ReadProf STATIC FIELD 1, 128 AS ZMsgRec$ GET 1,ZNodeRecIndex ZReliableMode = VAL(MID$(ZMsgRec$,91,2)) MID$(ZMsgRec$,40,2) = "00" ZEightBit = VAL(MID$(ZMsgRec$,42,2)) ZBPS = VAL(MID$(ZMsgRec$,44,2)) CALL CommInfo ZBaudTest! = VAL(MID$(ZBaudRates$,(-5 * ZBPS),5)) ZUpperCase = VAL(MID$(ZMsgRec$,46,2)) ZNumDnldBytes! = CVS(MID$(ZMsgRec$,48,4)) ' KG022101 ZBatchTransfer = (MID$(ZMsgRec$,52,1) = "1") ZWasGR = VAL(MID$(ZMsgRec$,53,2)) HourLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,65,1))),2),2) MinLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,66,1))),2),2) SecLoggedOn$ = RIGHT$("0"+MID$(STR$(ASC(MID$(ZMsgRec$,67,1))),2),2) ZTimeLoggedOn$ = HourLoggedOn$ + _ ":" + _ MinLoggedOn$ + _ ":" + _ SecLoggedOn$ ZTransferFunction = VAL(MID$(ZMsgRec$,74,1)) ZWasFT$ = MID$(ZMsgRec$,75,1) ZTimeCredits! = 60*CVI(MID$(ZMsgRec$,113,2)) ZDooredTo$ = MID$(ZMsgRec$,79,8) CALL Trim (ZDooredTo$) IF ZExitToDoors AND ZDooredTo$ <> "" THEN _ CALL OpenWork (2,ZDoorsDef$) : _ IF ZErrCode = 0 THEN _ CALL ReadParms (ZOutTxt$(),8,1) : _ WHILE ZErrCode = 0 AND ZOutTxt$(1) <> ZDooredTo$ : _ CALL ReadParms (ZOutTxt$(),8,1) : _ WEND : _ IF ZOutTxt$(1) = ZDooredTo$ THEN _ ZDoorSkipsPswd = (ZOutTxt$(6) <> "Y") : _ CALL BufFile (ZOutTxt$(7),WasX) ZErrCode = 0 ZMenuIndex = VAL(MID$(ZMsgRec$,117,2)) ZCurPUI$ = MID$(ZMsgRec$,93,8) CALL Remove (ZCurPUI$," ") IF ZCurPUI$ <> "" THEN _ CALL BreakFileName (ZMainPUI$,ZOutTxt$,ZUserIn$,ZWasZ$,ZTrue) : _ ZCurPUI$ = ZOutTxt$ + ZCurPUI$ + ZWasZ$ ZCustomPUI = (ZCurPUI$ <> "") ZLocalUser = VAL(MID$(ZMsgRec$,101,2)) ZLocalUserMode = VAL(MID$(ZMsgRec$,103,2)) ZHomeConf$ = MID$(ZMsgRec$,105,8) ZAutoLogoffReq = (VAL(MID$(ZMsgRec$,115,1)) <> 0) CALL Trim (ZHomeConf$) IF ZRequiredRings > 0 AND _ INSTR(ZModemInitCmd$,"S0=255") THEN _ COLOR 7,0,0 _ ELSE COLOR ZFG,ZBG,ZBorder IF ZLocalUserMode THEN _ GOTO 44003 CALL SetBaud ------------------------[ KG022001 ]------------------------- Problem: When using autodownload and do not specify an extension, and default is appended, file name transmitted has no extension. Solution: Change RBBSSUB5.BAS as follows: 20247 ZWasDF = 0 CALL BreakFileName (ZFileName$,DR$,WasX$,Extension$,ZFalse) IF ZAutoDownInProgress THEN _ ZOutTxt$ = "Transferring -- " + _ WasX$ + "." + Extension$ : _ ' KG022001 GOSUB 21640 : _ IF ZFileSysParm > 1 THEN _ RETURN IF INSTR("...WRK.FW .ARC.EXE.COM.OBJ.WKS.LBR.ZIP.PAK.ZOO.LZH.","."+Extension$+".") > 2 OR _ MID$(Extension$,2,1) = "Q" OR _ (ZRequireNonASCII AND Extension$ = "BAS") THEN _ ZWasDF = ZTrue ------------------------[ KG021803 ]------------------------- Problem: In macro initialization of a variable, value includes the variable number if a space separates the command and number. Should not matter whether say "{:=1" or "{:= 1", for example. Solution: Change RBBSSUB5.BAS as follows: 63362 CALL Trim (WasX$) ' KG021803 CALL CheckInt (WasX$) WasX = INSTR(WasX$," ") IF WasX > 0 AND ZTestedIntValue > 0 AND ZTestedIntValue <= ZMaxWorkVar THEN _ ZGSRAra$(ZTestedIntValue) = RIGHT$(WasX$,LEN(WasX$)-WasX) ' KG021803 GOTO 63336 ------------------------[ KG021802 ]------------------------- Problem: When implement macros in the Fast File System, the macros are executed on more than download requests - including uploads and file v)iew archive. Change RBBSSUB2.BAS as follows: 20145 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + (NOT ZSysop),ZTrue,ZFalse) ' KG021802 IF ZOK THEN _ GOTO 20148 Change RBBSSUB4.BAS as follows: (line 58700) SUB RotorsDir (FilName$,SDirAra$(1),MaxSearch,MarkingTime,DoMacro) STATIC ' KG021802 ZOK = ZFalse ZDotFlag = ZFalse IF MarkingTime THEN _ CALL QuickTPut ("Searching for "+FilName$,0) IF ZMenuIndex = 6 THEN _ GOTO 58705 NumSearch = 1 WasX = 0 WHILE (NOT ZOK) AND NumSearch <= MaxSearch AND _ SDirAra$(NumSearch) <> "" IF MarkingTime THEN _ CALL MarkTime (WasX) WasX$ = SDirAra$(NumSearch) + _ FilName$ CALL FindFile (WasX$,ZOK) NumSearch = NumSearch + 1 WEND IF ZFastFileSearch AND NOT ZOK THEN _ CALL OpenRSeq (ZFastFileList$,HighRec,WasX,18) : _ IF ZErrCode = 0 THEN _ CALL TrimTrail (FilName$,".") : _ CALL BinSearch (FilName$,1,12,18,HighRec,RecFoundAt, RecFound$) : _ ZOK = (RecFoundAt > 0) : _ IF ZOK THEN _ ZOK = ZFalse : _ CALL CheckInt (MID$(RecFound$,13,4)) : _ IF ZTestedIntValue > 0 THEN _ CALL OpenRSeq (ZFastFileLocator$,HighRec,WasX,66) : _ IF ZErrCode = 0 AND ZTestedIntValue <= HighRec THEN _ FIELD 2, 66 AS LocatorRec$ : _ GET 2, ZTestedIntValue : _ WasX$ = LEFT$(LocatorRec$,63) : _ CALL Trim (WasX$) : _ IF LEFT$(WasX$,2) = "M!" THEN _ ZOK = ZFalse : _ ' KG021802 ZDotFlag = ZTrue : _ ' KG021802 IF DoMacro THEN _ ' KG021802 WasX$ = RIGHT$(WasX$,LEN(WasX$)-2) : _ CALL Trim (WasX$) : _ CALL MacroExe (WasX$) : _ ZOK = ZFalse : _ ' KG021802 GOTO 58711 _ ' KG021802 ELSE GOTO 58711 _ ' KG021802 ELSE WasX$ = WasX$ + FilName$ : _ CALL FindFile (WasX$,ZOK) GOTO 58710 58711 CALL SkipLine (-MarkingTime) ' KG021802 END SUB 59336 ZUserIn$(WasI) = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1) CALL FindFile (ZPersonalDrvPath$ + ZUserIn$(WasI),ZOK) IF ZOK THEN _ ZUserIn$(WasI) = ZPersonalDrvPath$ + ZUserIn$(WasI) _ ELSE CALL RotorsDir (ZUserIn$(WasI),ZSubDir$(),ZSubDirCount + _ ((ZUserSecLevel < ZMinSecToView) OR _ NOT ZCanDnldFromUp),ZTrue,ZFalse) : _ ' KG021802 GOSUB 59338 RETURN Change RBBSSUB5.BAS as follows: 20222 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + _ ((ZUserSecLevel < ZMinSecToView) OR _ NOT ZCanDnldFromUp),MarkingTime,ZTrue) ' KG021802 20440 CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount,ZTrue,ZFalse) ' KG021802 20450 IF Extension$ <> Check$ THEN _ CALL RotorsDir (WasX$ + "." + Check$,ZSubDir$(),ZSubDirCount,ZTrue,ZFalse) : _ ' KG021802 IF ZOK THEN _ GOTO 20452 GOTO 20447 ------------------------[ KG021801 ]------------------------- Problem: internal code documentation for SmartText omits notes on what command invokes processing. Change RBBSSUB4.BAS as follows: 58266 SmartHold$ = DATE$ ' DT Date ' KG021801 RETURN 58267 CALL AMorPM SmartHold$ = ZTime$ ' TM Time ' KG021801 RETURN ------------------------[ KG021502 ]------------------------- Problem: When restrict a macro to the main prompt, and have a macro with same name as a conference (to join it), "j " works but "fn;ln;pswd;!" does not. The macro gets substituted for "". Solution: Change RBBS-PC.BAS as follows: 1205 IF ZSubParm < 0 THEN _ GOTO 202 ZSubParm = 1 ZStopInterrupts = ZFalse ZNonStop = (ZPageLength < 1) ZWasQ = 0 IF ZHomeConf$ <> "" AND ZHomeConf$ <> "MAIN" THEN _ TurboLogon = (NOT ConfMailJoin) : _ ConfMailJoin = ZFalse : _ ZFF = 8 : _ ZUserIn$(2) = ZHomeConf$ : _ ZHomeConf$ = "" : _ ZWasQ = 1 : _ ZAnsIndex = 1 : _ ZLastIndex = 2 : _ ZStoreParseAt = 1 : _ ZLastCommand$ = "MJ" : _ ' KG021502 GOTO 1240 CALL SkipLine (1) ------------------------[ KG021502 ]------------------------- Problem: the prompt after a macro ends is repeated twice. Solution: Change RBBSSUB2.BAS as follows: 1628 CALL VerifyAns IF NOT ZOK THEN _ CALL QuickTPut1 ("Invalid answer <" + ZUserIn$(1) + ">") : _ GOTO 1500 HoldA$ = "" ZForceKeyboard = ZFalse IF ZMacroSave > 0 THEN _ ZGSRAra$(ZMacroSave) = ZUserIn$ : _ ZMacroSave = 0 : _ GOTO 1632 IF (ZDistantTGet > 0) OR (ZMacroTemplate$ <> "") THEN _ CALL WipeLine (38) : _ IF NOT ZNo THEN _ GOTO 1632 _ ELSE ZWasQ = 0 : _ ZMacroTemplate$ = "" : _ ZDistantTGet = 0 : _ ZNo = ZFalse : _ GOTO 1633 IF ZMacroActive THEN _ ZLastIndex = ZWasQ : _ FirstIndex = 1: _ ZMacroActive = NOT EOF(6) : _ ' KG021501 EXIT SUB IF ZAnsIndex > 255 OR ((NOT InStack) AND INSTR(ZUserIn$,".") > 0) THEN _ EXIT SUB IF MacroIndex THEN _ MacroIndex = 1 _ ELSE MacroIndex = ZAnsIndex CALL NoPath (ZUserIn$(MacroIndex),Found) IF Found THEN _ EXIT SUB CALL CheckMacro (ZUserIn$(MacroIndex),Found) IF Found THEN _ ZStoreParseAt = ZAnsIndex : _ GOTO 1525 EXIT SUB ------------------------[ RH021501 ]------------------------- Problem: autodownload just does not work. Solution: Change RBBSSUB3.BAS as follows: 20296 CALL FlushCom(ZWasY$) ' CLEAR THE COMM BUFFER OF GARBAGE IF ZSubParm = -1 THEN _ EXIT SUB CALL PutCom (ZEscape$+"OD") ' SEND "ALERT" STRING IF ZSubParm = -1 THEN _ EXIT SUB IF ZAbort = ZTrue THEN _ GOTO 20306 CALL LPrnt("Sending FILENAME -- ",1) CALL LPrnt(ZReturnLineFeed$ + CHR$(9),0) CALL DelayTime (1) ' WAIT 1 SECOND FOR SETUP ' ' SEND ONE CHARACTER AT A TIME ' CALL BreakFileName (ZUserIn$(ZAnsIndex),WasX$,ZOutTxt$,ZWasY$,ZTrue) ' RH021501 ZOutTxt$ = ZOutTxt$ + ZWasY$ + "=X" ' RH021501 FOR WasX = 1 TO LEN(ZOutTxt$) CALL PutCom (MID$(ZOutTxt$,WasX,1)) ' SEND 1 CHARACTER IF ZSubParm = -1 THEN _ EXIT SUB IF ZAbort = ZTrue THEN _ GOTO 20306 CALL LPrnt(MID$(ZOutTxt$,WasX,1),0) ' DISPLAY IF NEEDED ZDelay! = TIMER + 10 ' SET MAXIMUM TIME TO WAIT FOR Reply Char = ZTrue WHILE Char = -1 CALL CheckTime(ZDelay!, TempElapsed!, 1) IF TempElapsed! <= 0 THEN _ GOTO 20300 ' IF ZNo ECHO, CANCEL FILENAME Transfer CALL EofComm (Char) WEND ' JUMP OUT IF CHARACTER IS RECEIVED Change RBBSSUB4.BAS as follows: (line 59400) SUB LogPDown (PrivateDnld,DwnIndex) STATIC ' RH021501 IF NOT PrivateDnld THEN _ EXIT SUB ZWasEN$ = ZPersonalDir$ WasBX = &H4 ZSubParm = 9 CALL FileLock WasL = 36 + ZMaxDescLen + ZPersonalLen CLOSE 2 IF ZShareIt THEN _ OPEN ZWasEN$ FOR RANDOM SHARED AS #2 LEN=WasL _ ELSE OPEN "R",2,ZPersonalDir$,WasL FIELD #2,WasL AS PersonalRec$ ZWasA = VAL(MID$(ZUserIn$(0),5 * (DwnIndex - 1) + 1,5)) ' RH021501 GET #2,ZWasA MID$(PersonalRec$,WasL-2,1) = "!" PUT #2,ZWasA CALL UnLockAppend END SUB Change RBBSSUB3.BAS as follows: 20296 CALL FlushCom(ZWasY$) ' CLEAR THE COMM BUFFER OF GARBAGE IF ZSubParm = -1 THEN _ EXIT SUB CALL PutCom (ZEscape$+"OD") ' SEND "ALERT" STRING IF ZSubParm = -1 THEN _ EXIT SUB IF ZAbort = ZTrue THEN _ GOTO 20306 CALL LPrnt("Sending FILENAME -- ",1) CALL LPrnt(ZReturnLineFeed$ + CHR$(9),0) CALL DelayTime (1) ' WAIT 1 SECOND FOR SETUP ' ' SEND ONE CHARACTER AT A TIME ' CALL BreakFileName (ZUserIn$(ZAnsIndex),WasX$,ZOutTxt$,ZWasY$,ZTrue) ' RH021501 ZOutTxt$ = ZOutTxt$ + ZWasY$ + "=X" ' RH021501 FOR WasX = 1 TO LEN(ZOutTxt$) CALL PutCom (MID$(ZOutTxt$,WasX,1)) ' SEND 1 CHARACTER IF ZSubParm = -1 THEN _ EXIT SUB IF ZAbort = ZTrue THEN _ GOTO 20306 CALL LPrnt(MID$(ZOutTxt$,WasX,1),0) ' DISPLAY IF NEEDED ZDelay! = TIMER + 10 ' SET MAXIMUM TIME TO WAIT FOR Reply Char = ZTrue WHILE Char = -1 CALL CheckTime(ZDelay!, TempElapsed!, 1) IF TempElapsed! <= 0 THEN _ GOTO 20300 ' IF ZNo ECHO, CANCEL FILENAME Transfer CALL EofComm (Char) WEND ' JUMP OUT IF CHARACTER IS RECEIVED