Dec 262017
 
Lastest Merge File For 17.3A RBBS.
File RFIX0923.ZIP from The Programmer’s Corner in
Category BBS Files
Lastest Merge File For 17.3A RBBS.
File Name File Size Zip Size Zip Type
LKL09233.DAT 231 149 deflated
LKL09234.DAT 213 130 deflated
MRG-READ.ME 1050 493 deflated
R-PC0923.MRG 16731 3883 deflated
RBBS.BAT 587 254 deflated
RFIX0923.DOC 45668 10227 deflated
RSB10923.MRG 552 299 deflated
RSB20923.MRG 5546 1612 deflated
RSB30923.MRG 7121 2157 deflated
RSB40923.MRG 4504 1117 deflated
RSB50923.MRG 1995 543 deflated
RVAR0923.BAS 20406 4236 deflated
UPGRADE.BAT 12445 2779 deflated

Download File RFIX0923.ZIP Here

Contents of the RFIX0923.DOC file


=====[ Test Version - Changes to RBBS-PC 17.3A ]========

Last Mod: DA092301

Note: BASE is the release of 17.3A.

SysOps: Sub-options in menus (bulletins, conferences, doors,
file directories) not longer work the same way and must have
the file names changed to work as before! See 090801 for details.

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: RFIX0923

-------------------------------------------------------------------
RBBS-PC.EXE 08-26-90 11:00 PM EST Release of 17.3A
RBBS-PC.EXE 09-23-90 11:00 PM EST RFIX0923 released
--------------------------------------------------------------------
Summary

EXE MOD Short Description
---- -------- -----------------
BAT DA092301 Look for daily event semaphore in proper dir
RBBS KG092302 Caller encourage to kill msgs when can't K)ill
RBBS KG092301 Callers able to execute doors when shouldn't be able to
RBBS KG092202 Possible to invoke macro at msg subject
RBBS KG092201 New user in subboard can be treated as new user in main
RBBS KG092102 Upload/dwnld counts & expired time wrongly set to 0
RBBS KG092101 Denying access on logon too late; wrongly denying in conferences
RBBS KG091601 Upload/download/elapsed time wrongly set to 0
RBBS DA091601 Not dropping to dos if call right at time should
RBBS ML090701 Status line sometimes not displaying right
RBBS KG091501 Upload/download counts wrong when drop carrier in subboard
RBBS KG091301 Quote after msg H)lp has nothing in it
RBBS TC090901 R)evise subj in msg edit improperly stacks
RBBS KG090801 Resolves ambiguities with nested suboptions in bulletins
RBBS MK090302 Getting 0 new files on logon when shouldn't
RBBS MK090301 Erroneous msg that fms invalid format for displayed lines
RBBS MD090501 Running unnecessarily slow under Fossil with multi-tasker
RBBS KG090402 Not properly identifying whether msg to/from caller
RBBS KG090401 Not properly reading messages after return from a door
RBBS KG090101 Not letting people use D when viewing FMS directory

Contributors include:

DA - Doug Azzarito
KG - Ken Goosens
MD - Mike Durkin
MK - Mike Kelly
ML - Mark Lautenschlager
TC - Tom Collins

------------------------[ KG092302 ]-------------------------

Problem: When processing a daily event, the supplied RBBS.BAT file
was looking for the semaphore in the CURRENT dir instead of the proper
node dir.

Solution: In RBBS.BAT...
Change all occurrences of RBBS%node%TM.DEF to NODE%node%\RBBS%node%TM.DEF

------------------------[ KG092302 ]-------------------------

Problem: Caller is encourage to "K)ill old/unneeded msgs" even when
the caller lacks the security to kill any messages at all. Problem
reported by Dave West.

Solution: Change RBBS-PC.BAS as follows:

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)
IF ZUserSecLevel >= ZOptSec(9) THEN _ ' KG092302
CALL QuickTPut1 ("Please K)ill old/unneeded msgs") ' KG092302

------------------------[ KG092301 ]-------------------------

Problem: When door not in door menu and not in doors.def,
caller still able to execute. Problem reported by Dave West.

Solution: Change RBBSSUB4.BAS as follows:

59538 FilName$ = FPre$ + ZWasZ$ + PreSuf$ ' KG090801
ZFileName$ = FilName$ + BackOpt$ ' KG090801
CALL Graphic (GRDefault$,ZFileName$)
IF NOT ZOK THEN _
IF BackOpt2$ <> "" THEN _
ZFileName$ = FilName$ + _
BackOpt2$ : _
CALL Graphic (GRDefault$,ZFileName$)
IF ZOK THEN _ ' KG092301
CALL WordInFile (CurMenu$,ZWasZ$,InMenu) : _ ' KG092301
IF ZSysop OR InMenu OR (NOT RequireInMenu) THEN _ ' KG092301
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

------------------------[ KG092202 ]-------------------------

Problem: Should not be possible to invoke a macro in response to
prompt for the subject of a message, but is. E.g. if have a
macro called TUTOR, can't use that as msg subject.

Solution: Change RBBS-PC.BAS as follows:

2065 IF Subject$ <> "" THEN _
ZOutTxt$ = "Change subject from " + _ ' DA071701
Subject$ + _
" to" _ ' TC090901
ELSE ZOutTxt$ = "Subject" ' TC090901
ZMacroMin = 99 ' KG092202
ZParseOff = ZTrue ' TC090901
GOSUB 12932 ' TC090901
IF LEN(ZUserIn$) > 25 THEN _
ZOutTxt$ = "25 Char. Max" : _
GOSUB 12979 : _
GOTO 2065
IF ZWasQ = 0 THEN _
IF Subject$ <> "" THEN _
RETURN _
ELSE GOSUB 2435 : _
IF ZYes THEN _
RETURN 5160 _
ELSE GOTO 2065
Subject$ = ZUserIn$
CALL AllCaps (Subject$)
OrigSubject$ = Subject$
RETURN

------------------------[ KG092201 ]-------------------------

Problem: When a caller first joins a subboard but runs out
of time immediately upon joining, and then is returned to the
main board, is treated as a new user in the main board.

Solution: Change RBBS-PC.BAS as follows:

5350 IF ZConfName$ <> "MAIN" THEN _
CALL QuickTPut1 ("Rejoining " + OrigMsgName$) ' KG082003
ConfFileName$ = OrigMsgName$
ZNewsFileName$ = OrigNewsFileName$
TurboLogon = ZTrue
ZWasQ = 0
ZNewUser = ZFalse ' KG092201
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 " + ZConfName$,2) ' KG082003
ZConfName$ = "MAIN" ' KG082003
GOSUB 2350
ZUplds = ZGlobalUplds
ZDnlds = ZGlobalDnlds
ZDLToday! = ZGlobalDLToday!
ZBytesToday! = ZGlobalBytesToday!
ZDLBytes! = ZGlobalDLBytes!
ZULBytes! = ZGlobalULBytes!

------------------------[ KG092102 ]-------------------------

Problem: When log on as a person but can't give password,
sets that person's upload and download counts and expired time
to 0. Should leave user record unchanged.

Solution: Change RBBS-PC.BAS as follows:

643 IF NOT LogonPswdFailed THEN _ ' KG092101
GOSUB 41070 _ ' KG092101
ELSE IF NOT ZExitToDoors THEN _ ' KG092101
ZFirstName$ = "" : _ ' KG092102
GOTO 902 ' KG092101

------------------------[ KG092101 ]-------------------------

Problem: When caller first logs on and can't give password,
not getting kicked off immediately.
Also, when caller reads messages and last msg is unreadable
because private or is protected and can't give password, then
get denied access and kicked off when try to join a conference.
(Fix to a fix).

Solution: Change RBBS-PC.BAS as follows:

480 GOSUB 5370
IF ZPrivateDoor OR (ZWasA AND ZEscapeInsecure) OR ZDoorSkipsPswd THEN _
ZWasZ$ = ZPswdSave$ : _
ZPswdFailed = 0 : _
GOTO 644
ZSubParm = 4
CALL PassWrd
LogonPswdFailed = ZPswdFailed ' KG092101
ZLastIndex = 0

643 IF NOT LogonPswdFailed THEN _ ' KG092101
GOSUB 41070 _ ' KG092101
ELSE IF ZExitToDoors THEN _ ' KG092101
GOTO 902 ' KG092101

900 ZNewUser = ZFalse
ActionFlag = (ZLogonMailLevel$ = "S")
LogonMailNew = (ZLogonMailLevel$ = "N")
GOSUB 1895
IF ZActiveUserName$ = "SYSOP" AND NOT ZSysop THEN _
ZActiveUserName$ = ZOrigUserName$
LogonMailNew = ZFalse
ZSubParm = 2
CALL Line25
ZSection$ = " "
ZOutTxt$ = ""
IF (NOT ZConfMode) AND (NOT SubBoard) AND NOT TurboLogon THEN _
MailCheckConfirm = ZTrue : _
ZNonStop = ZTrue : _
GOSUB 5800
MailCheckConfirm = ZFalse
ZWasQ! = MinsInDoors * 60
902 IF LogonPswdFailed THEN _ ' KG092101
ZExitToDoors = ZFalse : _ ' KG091601
CALL UpdateU (ZTrue) : _ ' KG091601
ZLogonErrorIndex = 4 : _ ' KG091601
GOTO 10620 ' KG091601
IF ZExitToDoors and ZDooredTo$ <> "" THEN _ ' ML082001
CALL BufFile (ZOutTxt$(7),WasX) ' ML082001
ZExitToDoors = ZFalse
GOSUB 2350
IF NOT ZPrivateDoor THEN _
GOTO 955
GOSUB 20165
CALL SetSection
ZPrivateDoor = ZFalse
GOTO 1205

------------------------[ KG091601 ]-------------------------

Problem: When return from a door and asks for password, if
don't get right, resets to 0 the counts of files up and downloaded
and elapsed time.

Solution: Change RBBS-PC.BAS as follows:

Omit line 630.

643 IF NOT ZPswdFailed THEN _ ' KG091601
GOSUB 41070 ' KG091601

900 ZNewUser = ZFalse
ActionFlag = (ZLogonMailLevel$ = "S")
LogonMailNew = (ZLogonMailLevel$ = "N")
GOSUB 1895
IF ZActiveUserName$ = "SYSOP" AND NOT ZSysop THEN _
ZActiveUserName$ = ZOrigUserName$
LogonMailNew = ZFalse
ZSubParm = 2
CALL Line25
ZSection$ = " "
ZOutTxt$ = ""
IF (NOT ZConfMode) AND (NOT SubBoard) AND NOT TurboLogon THEN _
MailCheckConfirm = ZTrue : _
ZNonStop = ZTrue : _
GOSUB 5800
MailCheckConfirm = ZFalse
ZWasQ! = MinsInDoors * 60
IF ZPswdFailed THEN _ ' KG091601
ZExitToDoors = ZFalse : _ ' KG091601
CALL UpdateU (ZTrue) : _ ' KG091601
ZLogonErrorIndex = 4 : _ ' KG091601
GOTO 10620 ' KG091601
IF ZExitToDoors and ZDooredTo$ <> "" THEN _ ' ML082001
CALL BufFile (ZOutTxt$(7),WasX) ' ML082001
ZExitToDoors = ZFalse
GOSUB 2350
IF NOT ZPrivateDoor THEN _
GOTO 955
GOSUB 20165
CALL SetSection
ZPrivateDoor = ZFalse
GOTO 1205

------------------------[ DA091601 ]-------------------------

Problem: When time drop to dos is between time answer phone
and get asked for 1st name, RBBS lets caller on rather than
reducing time to 0 and dropping to external event.

Solution: Change RBBSSUB3.BAS as follows:

(line 41010)

SUB TimeRemain (MinsRemaining) STATIC
TOA! = FRE("A")
IF ZBypassTimeCheck THEN _
MinsRemaining = ZSecsPerSession! / 60 : _
EXIT SUB
CALL CheckTime (ZUserLogonTime!, ZSecsUsedSession!, 2)
IF ZTimeToDropToDos! = 0 OR _
ZOldDate$ = DATE$ THEN _
GOTO 41020
CALL CheckTime (ZTimeToDropToDos!, HowMuchTimeLeft!, 1)
IF HowMuchTimeLeft! < -60 THEN _ ' DA091601
HowMuchTimeLeft! = (HowMuchTimeLeft! * -1) + 43200 ' ML080801
IF (ZSecsPerSession! - ZSecsUsedSession!) > HowMuchTimeLeft! THEN _ ' DA080101
ZSecsPerSession! = HowMuchTimeLeft! + ZSecsUsedSession! : _ ' DA080101
IF NOT ToldShort THEN _
ToldShort = ZTrue : _
ZOutTxt$ = "Shortened session time to" + _ ' DA080101
STR$(INT((ZSecsPerSession! - ZSecsUsedSession!) / 60)) + _ ' DA080101
" min for scheduled event" : _ ' DA080101
CALL RingCaller

------------------------[ ML090701 ]-------------------------

Problem: Line 25 messed up when using QB 4.5 and Desqview.

Solution: Change RBBSSUB2.BAS as follows:

950 IF NOT ZSnoop THEN _
EXIT SUB
ZCursorLine = CSRLIN
ZCursorRow = POS(0)
ZWasHH = LEN(ZActiveUserName$) + _
LEN(ZWasCI$) + _
LEN(ZLine25$) + _
LEN(STR$(ZUserSecLevel)) ' DA080902
LOCATE 25,1
IF ZNetworkType = 0 THEN _
IF ZAutoDownYes THEN _
ZLockStatus$ = " AD " + _ ' DA080902
ZTimeLoggedOn$ _
ELSE ZLockStatus$ = SPACE$(4) + _ ' DA080902
ZTimeLoggedOn$
IF ZWasHH > 63 THEN _ ' DA080902
ZWasHH = 0 _ ' DA080902
ELSE _ ' DA080902
ZWasHH = 64 - ZWasHH ' DA080902
ZLine25Hold$ = ZLine25$ + _
SPACE$(ZWasHH) + _ ' DA080902
STR$(ZUserSecLevel) + _
" " + _
ZActiveUserName$ + _
" " + _
ZWasCI$ ' DA080902
ZLine25Hold$ = LEFT$(ZLine25Hold$, 66) + " " + ZLockStatus$ ' DA080902
IF ZDosANSI THEN _ ' ML090701
ZLine25Hold$ = ZColorReset$ + ZLine25Hold$ + ZEmphasizeOff$ ' ML090701
CALL LPrnt(ZLine25Hold$,0)
LOCATE ZCursorLine,ZCursorRow
END SUB

------------------------[ KG091501 ]-------------------------

Problem: When drop carrier in a subboard, the upload/download
count in main is reset to what is in subboard.

Solution: Change RBBSSUB2.BAS as follows:

(line 10600)
SUB UpdateU (LoggingOff) STATIC
IF ZActiveUserName$ = "" OR ZFirstName$ = "" THEN _
EXIT SUB ' KG091501
IF ZUserFileIndex < 1 THEN _
GOTO 10607

UpdateDefaults = ZTrue

10604 GET 5,ZUserFileIndex
IF ZActiveUserFile$ = ZOrigUserFile$ THEN _ ' KG091501
ZUplds = ZGlobalUplds : _
ZDnlds = ZGlobalDnlds : _
ZDLToday! = ZGlobalDLToday! : _
ZBytesToday! = ZGlobalBytesToday! : _
ZDLBytes! = ZGlobalDLBytes! : _
ZULBytes! = ZGlobalULBytes!
LSET ZLastDateTimeOn$ = ZWasY$ ' KG070601
IF UpdateDefaults THEN _
CALL DefaultU
IF ZListDir THEN _
LSET ZListNewDate$ = CHR$(VAL(MID$(ZCurDate$,7,2))) + _
CHR$(VAL(MID$(ZCurDate$,1,2))) + _
CHR$(VAL(MID$(ZCurDate$,4,2)))

------------------------[ KG091301 ]-------------------------

Problem: When reading messages, ask for help, then reply and quote,
there are no lines in the quote.

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 4602 ' KG091301
IF ZRet THEN _
GOTO 4630
CanChangeSec = (ZUserSecLevel => ZSecChangeMsg)
ShowKill = - ((ZUserSecLevel >= ZOptSec(9)) AND (UserInHeader OR CanKill)) ' KG081601
IF ZExpertUser THEN _
WasA1$ = ",H,R,T,=,+,-" + _ ' KG081303
MID$(",F",1,- (UserInHeader OR CanChangeSec) * 2) + _
MID$(",K",1,ShowKill * 2) + _ ' KG081601
MID$(",U",1,- (ZUserSecLevel >= ZOptSec(54)) * 2) + _
MID$(",S",1, - CanChangeSec * 2) : _ ' KG081303
GOTO 4601 ' KG091301
GOSUB 4617 ' KG091301
4601 ZTurboKey = -ZTurboKeyUser ' KG091301
IF JustSearching OR NOT JustReplied THEN _
GOTO 4602 ' KG091301
JustReplied = ZFalse
CALL AskMore (WasA1$,ZTrue,ZFalse,ZAnsIndex,ZFalse)
CALL SkipLine (1)
IF ZNo THEN _
RETURN
CALL AllCaps (ZUserIn$(1)) ' KG081303
ZReply = (ZReply OR ZUserIn$(1) = "R") ' KG081303
IF ZUserIn$(1) <> "=" THEN _ ' KG081303
GOTO 4605 ' KG081303
CALL SkipLine (1)
4602 IF NOT ZPswdFailed THEN _ ' KG091301
GOTO 4603 ' KG091301
IF WasPG AND (NOT ZNonStop) THEN _
ZAttemptsAllowed = 2 : _
ZSubParm = 2 : _
CALL PassWrd
IF ZPswdFailed THEN _ ' KG081303
GOTO 4629
4603 GOSUB 9000 ' KG091301
JustReplied = ZFalse
DontPrint = ZFalse
IF JustSearching THEN _
GOTO 4629
IF ZAnsIndex > NumMsgsSelected THEN _
GOTO 4650
CALL SkipLine (1)
GOSUB 41000 ' KG081303
ZKillMessage = ZFalse
ZReply = ZFalse
IF ZNonStop THEN _
GOTO 4629
4604 ZTurboKey = -ZTurboKeyUser ' KG091301
CALL AskMore (WasA1$,ZTrue,ZFalse,WasXX,ZFalse)
IF ZNo THEN _
ZAnsIndex = ZLastIndex + 1 : _
RETURN
CALL AllCaps(ZUserIn$(1))
ZReply = (ZReply OR ZUserIn$(1) ="R")
4605 ON INSTR(" FUST+-KRH?=",LEFT$(ZUserIn$(1),1)) GOTO _ ' KG081303
4620,4606,4607,4608,4609,4610,4610,4611,4621,4612,4614,4615 ' KG091301
GOTO 4620 ' KG081303

4612 ZFileName$ = ZHelp$(7) ' H - help ' KG081303
GOSUB 1790 ' KG091301
4614 GOSUB 4617 ' KG091301
GOTO 4604 ' KG091301
4615 CALL SkipLine (1) ' = read again ' KG091301
GOTO 4560 ' KG081303
4617 WasA1$ = ",H)lp,R)eply,T)hread,=,+,-" + _ ' KG091301
MID$(",F)wd",1, - (UserInHeader OR CanChangeSec) * 5) + _ ' KG091301
MID$(",K)ill",1, ShowKill * 6) + _ ' KG091301
MID$(",U)sr",1,- (ZUserSecLevel >= ZOptSec(54)) * 6) + _ ' KG091301
MID$(",S)ec",1, - CanChangeSec * 5) ' KG091301
RETURN ' KG091301

------------------------[ TC090901 ]-------------------------

Problem: When entering a msg, and R)evise subject, multiple words
are interpreted as stacked commands, causing blank lines to be printed.

Solution: Change RBBS-PC.BAS as follows:

2065 IF Subject$ <> "" THEN _
ZOutTxt$ = "Change subject from " + _ ' DA071701
Subject$ + _
" to" _ ' TC090901
ELSE ZOutTxt$ = "Subject" ' TC090901
ZParseOff = ZTrue ' TC090901
GOSUB 12932 ' TC090901
IF LEN(ZUserIn$) > 25 THEN _
ZOutTxt$ = "25 Char. Max" : _
GOSUB 12979 : _
GOTO 2065
IF ZWasQ = 0 THEN _
IF Subject$ <> "" THEN _
RETURN _
ELSE GOSUB 2435 : _
IF ZYes THEN _
RETURN 5160 _
ELSE GOTO 2065
Subject$ = ZUserIn$
CALL AllCaps (Subject$)
OrigSubject$ = Subject$
RETURN

------------------------[ KG090801 ]-------------------------

Problem: On bulletin selection, can have same options on
multiple submenus by adding what user types in to the menu
prefix. This way of "growing" the file name from the response,
however, runs into a major problem when have graphics options -
if using "C" as option, "C" is also used as color graphics
version. Thus, if BLT is main buletin menu, BLTA.MNU is submenu
associated with option "A", and want options A-C to be available
and get another menu, need "BLTAC.MNU" to be option "C" - but if
want color graphics version of "BLTA.MNU", it too would have
to have name "BLTAC.MNU".
Also, if user types in "C" when in menu "BLT" and have color
graphics option "BLTC", will get "BLTC" displayed.

Solution: All non-graphics options built off of the menu prefix must
end with "-" on the prefix. Thus, option C off menu "BLT" must
be "BLTC-" whereas "BLTC" is the color graphics version of "BLT".
And "BLTA.MNU" has "BLTAC.MNU" as color graphics version and
"BLTAC-.MNU" as option "C".
SysOp note: if you are using suboptions in menus, you must add
"-" to the end of the file prefix to all non-graphics sub-options.
You do not change the regular options built off the bulletin prefix.
Thus if "BLTN" is the bulletin prefix (not the bulletin menu!)
"BLTN11" would still be the option "11" selects. Note: if you
want a graphics version of a suboption, you still add "G" or "C"
to the end of the file name. Thus suboption "BLTAC-.MNU" has as
its ascii graphics version "BLTAC-G.MNU".

Change RBBSSUB4.BAS as follows:

59510 ZFileName$ = CurMenu$
InMenu = ZTrue ' KG041701
CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue)
MenuFront$ = MenuDrv$ + LEFT$(WasX$,LEN(WasX$)-LEN(PreSuf$)) ' KG090801
IF CurMenu$ = LastSubMenu$ THEN _ ' KG090801
MenuFront$ = LEFT$(MenuFront$,LEN(MenuFront$)-1) ' KG090801
CALL Graphic (GRDefault$,ZFileName$)
CurMenuVer$ = ZFileName$
ZStopInterrupts = ZFalse
IF ZAnsIndex < ZLastIndex OR ZExpertUser THEN _
GOTO 59520

59530 ZWasZ$ = ZUserIn$(ZAnsIndex)
CALL AllCaps (ZWasZ$)
IF INSTR(ReturnOn$,ZWasZ$) THEN _ 'check whether calling pgm wants
EXIT SUB
IF INSTR("LH?",ZWasZ$) THEN _ 'check whether caller wants help
GOTO 59515
IF INSTR(ZWasZ$,".") > 0 THEN _
GOTO 59532
CALL BadFile (ZWasZ$,WasBF) ' KG081705
IF WasBF > 1 THEN _ ' KG081705
GOTO 59532 ' KG081705
FPre$ = MenuFront$ ' check for sub-option ' KG081603
PreSuf$ = "-" ' KG090801
CALL BadFile (FPRE$ + ZWasZ$ + "-",WasBF) ' KG090801
ZOK = ZFalse ' KG082401
IF WasBF < 2 THEN _ ' KG082401
VerifyInMenu = ZFalse : _ ' KG082401
GOSUB 59538
PreSuf$ = "" ' KG090801
VerifyInMenu = PassedVerifyInMenu ' KG082005
IF NOT ZOK THEN _ ' KG081603
FPre$ = FrontOpt$ : _ ' check standard option ' KG081603
GOSUB 59538 : _
IF NOT ZOK THEN _ ' check option where menu is ' KG081603
FPre$ = MenuDrv$ : _ ' KG081603
GOSUB 59538
IF NewMenu THEN _
NewMenu = ZFalse : _
GOTO 59515
IF ZOK THEN _
EXIT SUB

59538 FilName$ = FPre$ + ZWasZ$ + PreSuf$ ' KG090801
ZFileName$ = FilName$ + BackOpt$ ' KG090801
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$ + PreSuf$ + _ ' KG090801
".MNU" 'check whether option is a menu
ZFileName$ = WasX$
CALL Graphic (GRDefault$,ZFileName$)
IF ZOK THEN _
NewMenu = ZTrue : _
CurMenuVer$ = ZFileName$ : _
CurMenu$ = WasX$ : _
CALL BreakFileName (FPre$ + ZWasZ$,MenuDrv$,WasX$,ZWasDF$,ZTrue) : _ ' KG090801
MenuFront$ = MenuDrv$ + WasX$ : _ ' KG090801
IF PreSuf$ = "-" THEN _ ' KG090801
LastSubMenu$ = CurMenu$ ' KG090801
RETURN

------------------------[ MK090302 ]-------------------------

Problem: When chain to an upload directory, RBBS is never finding
the new files uploaded upon logon.

Solution: Change RBBSSUB3.BAS as follows:

(line 58140)

SUB LoadNew (Ara(2)) STATIC
IF ZFMSDirectory$ = "" THEN _
EXIT SUB
ZPrevBase$ = ""
FirstWarning = ZTrue ' KG041103
IF PrevLoadNew$ = ZFMSDirectory$ THEN _
Ara(1,1) = 0 : _
EXIT SUB
58141 PrevLoadNew$ = ZFMSDirectory$ ' MK090302
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 Desc$, _ ' KG071001
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 _ ' MK090301
GOTO 58142
IF (ZCanDnldFromUp OR Category$ <> ZDefaultCatCode$) THEN _
IF VAL(Year$) > 79 THEN _ ' KG041103
WasL = WasL + 1 : _ ' KG041103
Ara(WasL,1) = 372! * (VAL(Year$) - 80!) + 31! * VAL(WasMM$) + VAL(WasDD$) _' KK030901
ELSE IF FirstWarning THEN _ ' KG041103
FirstWarning = ZFalse : _ ' KG041103
ZWasZ$ = "Invalid FMS format " + ZFMSDirectory$ : _ ' KG041103
CALL PScrn (ZWasZ$) : _ ' KG041103
CALL UpdtCalr (ZWasZ$,2) ' KG041103
IF NOT ZCanDnldFromUp THEN _
WasX = ZMinSecToView _
ELSE IF Category$ = "***" THEN _
WasX = ZSysopSecLevel _
ELSE IF Category$ = ZDefaultCatCode$ THEN _
WasX = ZMinSecToView _
ELSE IF LEFT$(PreDate$,1) = "=" THEN _ ' KG071001
CALL CheckInt (Desc$) : _ ' KG071001
WasX = ZTestedIntValue _ ' KG071001
ELSE WasX = ZOptSec(19) ' KG071001
Ara(WasL,2) = WasX
58142 WasK = WasK - 1
WEND
CLOSE 2
IF ZUpInc > 0 AND ZChainedDir$ <> "" THEN _ ' MK090302
ZActiveFMSDir$ = ZChainedDir$ : _ ' MK090302
GOTO 58141 ' MK090302
END SUB

------------------------[ MK090301 ]-------------------------

Problem: When use displayed lines in FMS directory (begins with
"*"), get erroneous msg that FMS has invalid format.

Solution: Change RBBSSUB3.BAS as follows:

(line 58140)

SUB LoadNew (Ara(2)) STATIC
IF ZFMSDirectory$ = "" THEN _
EXIT SUB
ZPrevBase$ = ""
FirstWarning = ZTrue ' KG041103
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 Desc$, _ ' KG071001
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 _ ' MK090301
GOTO 58142
IF (ZCanDnldFromUp OR Category$ <> ZDefaultCatCode$) THEN _
IF VAL(Year$) > 79 THEN _ ' KG041103
WasL = WasL + 1 : _ ' KG041103
Ara(WasL,1) = 372! * (VAL(Year$) - 80!) + 31! * VAL(WasMM$) + VAL(WasDD$) _' KK030901
ELSE IF FirstWarning THEN _ ' KG041103
FirstWarning = ZFalse : _ ' KG041103
ZWasZ$ = "Invalid FMS format " + ZFMSDirectory$ : _ ' KG041103
CALL PScrn (ZWasZ$) : _ ' KG041103
CALL UpdtCalr (ZWasZ$,2) ' KG041103
IF NOT ZCanDnldFromUp THEN _
WasX = ZMinSecToView _
ELSE IF Category$ = "***" THEN _
WasX = ZSysopSecLevel _
ELSE IF Category$ = ZDefaultCatCode$ THEN _
WasX = ZMinSecToView _
ELSE IF LEFT$(PreDate$,1) = "=" THEN _ ' KG071001
CALL CheckInt (Desc$) : _ ' KG071001
WasX = ZTestedIntValue _ ' KG071001
ELSE WasX = ZOptSec(19) ' KG071001
Ara(WasL,2) = WasX

------------------------[ KG090501 ]-------------------------

Problem: Way the call is structured to write to the comm port using
a Fossil driver, performance on multi-taskers can be degraded.

Solution: Don't tell the Fossil driver to wait until it can write
a character, but rather always to return control. That way, if it cannot
write a character to the comm port, CPU cycles can at least be given
back to other tasks. Change RBBSSUB1.BAS as follows:

59653 CALL FosTXCharNW(ZComPort,Char,Result) ' MD090501
IF Result = 0 THEN _
CALL GoIdle : _ ' MD090501
GOTO 59653
NEXT
EXIT SUB

------------------------[ KG090402 ]-------------------------

Problem: When caller was identified in subboard as being the
secret sysop name, so that caller got full sysop privileges
in the subboard, mail to/from the caller under original name
was no longer identified as belonging to the caller. Also,
if min security to read/kill all msgs was higher than the
SysOp security level, a SysOp wasn't able to kill mail to
the public name of the SysOp.

Solution: Change RBBS-VAR.BAS as follows:
Add variables ZRemoteSysop, ZSysopFullName$.
Note: you must then recompile ALL Basic modules.

Change RBBS-PC.BAS as follows:

108 CALL BreakFileName (ZCallersFile$,Drive$,WasX$,ZWasY$,ZTrue)
ZCallersFilePrefix$ = WasX$
ZNodeWorkDrvPath$ = Drive$
ZArcWork$ = ZNodeWorkDrvPath$ + _
"ARCWORK" + _
ZNodeFileID$ + _
".DEF"
IF ZUseBASICWrites THEN _
ZLocalBksp$ = ZBackArrow$ _
ELSE ZLocalBksp$ = ZBackSpace$
ZSysopFullName$ = LEFT$(ZSysopFirstName$ + " " + ZSysopLastName$ + " ",22) ' KG090402
ZFastFileSearch = ZFalse
CALL FindIt (ZFastFileList$)
IF ZOK THEN _
CALL FindIt (ZFastFileLocator$) : _
ZFastFileSearch = ZTrue : _
CALL BreakFileName (ZFastFileList$, Drive$,WasX$,ZWasY$,ZTrue) : _
ZFileName$ = Drive$ + WasX$ + "T" + ZWasY$ : _
CALL FindIt (ZFileName$) : _
IF ZOK THEN _
CALL OpenRSeq (ZFileName$, WasX, WasY, 72) : _
FIELD 2, 72 AS IndexRec$ : _
GET 2, 1 : _
ZFastTabs$ = IndexRec$ : _
CLOSE 2
'
' ***** INITIALIZE NetBIOS INTERFACE ****
'
IF ZNetworkType = 6 AND NOT SubBoard THEN _
CALL InitIBM
'
' ***** ESTABLISH NEXT CALLERS FILE RECORD AVAILABLE ***
'
CALL SetCall

4660 CALL ChkMsgName (MsgFromCaller,MsgToCaller) ' KG090402
UserInHeader = (MsgFromCaller OR MsgToCaller)
RETURN

5370 ZRemoteSysop = (ZActiveUserName$ = ZSysopPswd1$ + " " + ZSysopPswd2$) ' KG090402
ZWasA = ZRemoteSysop ' KG090402
ZGlobalSysop = (ZGlobalSysop OR (ZWasA AND ZOrigCnfg$ = ZConfigFileName$))
IF ZGlobalSysop THEN _
ZWasA = ZTrue
RETURN

Change RBBSSUB2.BAS as follows:

3990 IF ZWasZ$ = "^READ^" OR ZWasZ$ = "^KILL^" THEN _
CALL ChkMsgName (MsgToCaller,MsgFromCaller) : _ ' KG090402
IF (MsgFromCaller or MsgToCaller) THEN _
GOTO 4030 _
ELSE ZMsgPswd = ZTrue : _
ZAttemptsAllowed = 0 : _
ZOutTxt$ = "Only sender & receiver can kill" : _
GOTO 4031

Change RBBSSUB5.BAS as follows:

63540 ' Match Name to one in message file
SUB ChkMsgName (MsgFromCaller,MsgToCaller) STATIC ' KG090402
IF NOT ZRemoteSysop THEN _ ' KG090402
WasX$ = LEFT$("SYSOP",-5*ZSysop) : _ ' KG090402
CALL MsgNameMatch (ZOrigUserName$,WasX$,6,MsgFromCaller) : _ ' KG090402
CALL MsgNameMatch (ZOrigUserName$,WasX$,37,MsgToCaller) : _ ' KG090402
EXIT SUB ' KG090402
CALL MsgNameMatch ("SYSOP",ZSysopFullName$,6,MsgFromCaller) ' KG090402
IF NOT MsgFromCaller THEN _ ' KG090402
CALL MsgNameMatch (ZOrigUserName$,"",6,MsgFromCaller) ' KG090402
CALL MsgNameMatch ("SYSOP",ZSysopFullName$,37,MsgToCaller) ' KG090402
IF NOT MsgToCaller THEN _ ' KG090402
CALL MsgNameMatch (ZOrigUserName$,"",37,MsgToCaller) ' KG090402
END SUB ' KG090402
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

------------------------[ KG090401 ]-------------------------

Problem: When return from a door and then read thru messages,
not properly matching caller's name to who from/to and therefore
not making msg available properly.

Solution: Change RBBS-PC.BAS as follows:

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$
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
CALL QuickTPut1 ("Logging " + ZActiveUserName$)
CALL Talk (1,ZOutTxt$)
CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " Node " + ZNodeID$ + _ ' DA071701
", operating at " + ZBaudParity$) ' DA071701
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$)) ' KG090401
'
' * 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" ****
'
IF ZEightBit AND ZAutoDownYes THEN _
ZOutTxt$ = CHR$(9) + _
ZReturnLineFeed$ + _
"You may use AUTODOWNLOADing!" : _
CALL RingCaller : _
CALL DelayTime(4)

------------------------[ KG090101 ]-------------------------

Problem: Listing simply continues when using TurboKeys while
viewing FMS directory, and pick D option to download. (Solution
independently made by Doug Azzarito).

Solution: Wrong variable used. 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 IF CanView THEN _ ' KG082001
ZLastIndex = ZWasQ : _
ZAnsIndex = 1 : _
CALL GetArc : _
ZJumpSupported = ZTrue : _ ' KG022201
ZWasA = UpldIndex : _
GOSUB 58185 : _
UpldIndex = ZWasA : _
GOTO 58180
IF ZUserIn$(1) = "D" THEN IF CanDnld THEN _ ' KG090101
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 ' DA071803
GOTO 58168



 December 26, 2017  Add comments

Leave a Reply