=====[ Test Version - Changes to RBBS-PC 17.3 ]======== Last Mod: DA042401 (applied 05-18) 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 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 KG - Ken Goosens KK - Kim Kodde MB - Mathew Briggs ML - Mark Lautenschlager RH - Ray Horton TC - Tom Collins ------------------------[ 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