home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
BBS_UTIL
/
BM0406_A.ZIP
/
DOCS.ZIP
/
RFIX0312
< prev
next >
Wrap
Text File
|
1993-03-12
|
77KB
|
1,922 lines
====[ Fixes to RBBS-PC 17.4 ]========
Last Mod: KG022502
Note: BASE is RBBS 17.4
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 "' iiMMDDnn"
where ii is the initials of the person providing the change
and nn is the number of the change (01, 02, ...).
Latest Downloadable Fixes: RFIX0312.ZIP
-------------------------------------------------------------------
RBBS-PC.EXE 06-21-92 9:00 PM EST Release of 17.4
--------------------------------------------------------------------
Summary
EXE MOD Short Description
---- -------- -----------------
RBBS RM030801 Untrapped error possible when max time to bank > 255
RBBS RM030201 SysOp allowed to leave msg to a number without warning
RBBS KG031101 Delete in msg edit now accepts "-" for ranges
DOC KG030901 Nested sub-options not working in bulletins
RBBS KG022502 Possible to get main security updated from change in subboard
RBBS KG022501 Auto-logoff for inactivity not working at msg "to" prompt
RBBS KG020801 Makes it clearer how to skip a linked conference
RBBS DR020301 Sometimes getting msg read command carry over
RBBS KG020501 Supports separately shelling/dooring for protocol up/download
RBBS KG020201 Sometimes getting out of memory error
RBBS KG013002 Possible to get endless loop when bulletin since and none
RBBS KG013001 Ques on continue to linked conf aborts or rolls to next
RBBS KG012803 W)ho not showing line speed when caller is in a door
RBBS KG012802 Global read sometimes not working
RBBS KG012801 Adds support for turbo logon in Join command
RBBS KG012601 Possible for W)ho command to report incorrect # of nodes
RBBS KG012502 A)ll option on who to offered when won't be accepted
RBBS KG012501 CONFMAIL.DEF file being left open, making hard to change
RBBS KG012401 Lets select any bulletins when asks about new ones
RBBS KG012301 Stacked commands not working right on conf join
RBBS KG012001 In who command, show line speed
RBBS KG011501 Don't automatically show menu when no such entry found
RBBS KG011201 Allow CR's and message entry to be stacked in macros
RBBS KG100701 Subboard allowed to change network type
RBBS KG092301 Makes macros tolerate whether in turbo key mode
RBBS KG092201 Records Line Speed that RBBS uses
RBBS KG091002 Makes code more tolerant when reading FMS directories
RBBS KG091001 Allows download personal files to be viewed
RBBS KG082201 Lets SysOp make pers upload to a security level
RBBS KG082101 Possible for caller to regain banked time
RBBS KG070401 UTIL.HLP refers to "B)aud change" not "B)ank time"
RBBS RH070402 Get untrapped error when timeout looking at callers file
RBBS RH070401 Possible for activity to be logged to wrong callers file
RBBS BH070401 [CBAUD] sometimes not working with external protocol
RBBS KG062401 Unable to download marked files in personal directory
RBBS KG062301 Msg scan/topic scan not operating same as Read
Contributors include:
BH - Bob Hampton
DR - Dan Rowe
KG - Ken Goosens
RH - Ray Horton
RM - Richie Molinelli
------------------------[ RM030801]-------------------------
Problem: If the SysOp puts in a max time to bank larger than 255
into the passwrds file, an untrapped error can occur. This is rare
only because few SysOps permit a session time greater than 255 minutes.
Solution: Change RBBSSUB5.BAS as follows:
63659 ZErrCode = 0
IF ZTempMaxBank > 255 THEN _ ' RM030801
ZTempMaxBank = 255 ' RM030801
END SUB
------------------------[ RM030201]-------------------------
Problem: It is possible for a SysOp to leave a message to a security
level without any check whether a person exists with the number as
a name.
Change RBBS-PC.BAS as follows:
20205 ZFileSysParm = 0 ' RM030201
RETURN
Change RBBSSUB2.BAS as follows:
2032 RcvrRecNum = 0
IF MsgTo$ <> "ALL" OR NOT AllowPub THEN _ ' KG012502
IF ((LEFT$(MsgTo$,4) <> "ALL " OR NOT AllowPub) AND ZStartHash = 1) THEN _ ' KG012502
CALL CheckInt (MsgTo$) : _ ' KG082201
IF ZTestedIntValue = 0 OR NOT ZSysOp OR (ZSysOp AND ZFileSysParm < 1) THEN _ ' RM030201
ZWasDF = INSTR(MsgTo$+" @"," @") : _
TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _
CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _
IF NOT Found THEN _
ZLastIndex = 0 : _
RcvrRecNum = 0 : _
IF NOT ZReply THEN _
ZOutTxt$ = "Send anyway (Y,[N])" : _
ZTurboKey = -ZTurboKeyUser : _
ZLastIndex = 0 : _
GOSUB 2034 : _
IF NOT ZYes THEN _
GOTO 2021
IF MsgTo$ = Temp$ THEN _
ZOutTxt$ = "Really send this to YOURSELF (Y,[N])" : _
ZLastIndex = 0 : _
GOSUB 2034 : _
IF NOT ZYes THEN _
MsgTo$ = ""
CALL OpenWorkA (ZNodeWorkFile$)
CALL PrintWorkA (MsgTo$ + "," + STR$(RcvrRecNum))
CLOSE 2
ZNumHeaders = ZNumHeaders + 1
IF EnableCC AND (NOT ZReply) AND MsgTo$ <> "ALL" AND _
MsgTo$ <> "" AND LEFT$(MsgTo$,4) <> "ALL " AND _
(NOT ZSysopComment) AND (NOT ZSysopMsg) THEN _
ZOutTxt$ = "Carbon copy to another (Y,[N])" : _
CALL PopCmdStack : _
IF ZYes THEN _
GOTO 2021
------------------------[ KG031101]-------------------------
Enhancement: When deleting lines in message edit, you can now use
"-" to indicate range, as in "d 3-4" and "d 10 - 15".
Change RBBS-PC.BAS as follows:
2500 ZOutTxt$ = "Delete from"
GOSUB 3300
Mark1 = ZTestedIntValue
IF ZAnsIndex < ZLastIndex AND ZUserIn$(ZAnsIndex+1) = "-" THEN _ ' KG031101
ZAnsIndex = ZAnsIndex + 1 _ ' KG031101
ELSE Temp = INSTR(ZUserIn$(ZAnsIndex),"-") : _ ' KG031101
IF Temp > 0 AND Temp < LEN(ZUserIn$(ZAnsIndex)) THEN _ ' KG031101
ZUserIn$(ZAnsIndex) = MID$(ZUserIn$(ZAnsIndex),Temp+1) : _ ' KG031101
ZAnsIndex = ZAnsIndex - 1 ' KG031101
------------------------[ KG030901]-------------------------
Problem: When have a bulletin submenu called say "PAC" and bulletin
prefix, say "B", then "BPAC.MNU" is a sub-menu. If you then pick say
options 1,2,...,5, that should pick off a file to display called
BPAC1,...,BPAC5 but nothing displays.
Solution: Sub-options to display must in 17.4 be terminated with a
"-". So rename the options BPAC1-,...,BPAC5- and they will work.
The docs with 17.4 are incorrect and did not reflect this change
in either the section on shared sub-options or in the section on
converting to 17.4 from earlier versions.
------------------------[ KG022502]-------------------------
Problem: When subboard has a questionnaire that updates the
user's security, this new security carries over into main user
file when logs off in the subboard.
Solution: Change RBBSSUB2.BAS as follows:
10605 LSET ZUserDnlds$ = MKI$(ZDnlds)
LSET ZUserUplds$ = MKI$(ZUplds)
IF ZEnforceRatios THEN _
LSET ZTodayDl$ = MKS$(ZDLToday!) : _
LSET ZTodayBytes$ = MKS$(ZBytesToday!) : _
LSET ZDlBytes$ = MKS$(ZDLBytes!) : _
LSET ZULBytes$ = MKS$(ZULBytes!)
CALL CheckTime (ZUserLogonTime!, ZSecsUsedSession!, 2)
IF (NOT ZExitToDoors) AND LoggingOff THEN _
TempElapsed! = ZElapsedTime + _
(ZSecsUsedSession! - ZTimeCredits!) / 60 : _
ZTimeCredits! = 0 _
ELSE TempElapsed! = ZElapsedTime - ZExitToDoors*ZMinsInDoors
IF TempElapsed! < -32767 THEN _
TempElapsed! = -32767 _
ELSE IF TempElapsed! > 32767 THEN _
TempElapsed! = 32767
LSET ZElapsedTime$ = MKI$(TempElapsed!)
IF ZAdjustedSecurity THEN _
LSET ZSecLevel$ = MKI$(ZUserSecLevel)
PUT 5,ZUserFileIndex
ZSubParm = 8
CALL FileLock
IF ZActiveUserFile$ <> ZOrigUserFile$ AND LoggingOff THEN _
ZActiveUserFile$ = ZOrigUserFile$ : _
ZUserFileIndex = ZOrigUserFileIndex : _
UpdateDefaults = ZFalse : _
ZAdjustedSecurity = ZFalse : _ ' KG022502
LSET ZLastDateTimeOn$ = ZOrigDateTimeOn$ : _
GOTO 10602
------------------------[ KG022501]-------------------------
Problem: When at "To" prompt in message entry and timeout for inactivity,
then asks user if wants really to send message rather than logging off\
immediately.
Solution: Change RBBSSUB2.BAS as follows:
2021 ZOutTxt$ = "To " + LEFT$("A)ll,",-5*AllowPub) + "(S)ysop," + _ ' KG012502
LEFT$("D)istribution,",-14*EnableCC) + _
" or name" + ZPressEnterExpert$
CALL SkipLine (1)
ZSemiOnly = ZTrue
CALL PopCmdStack
IF ZWasQ = 0 OR ZSubParm < 0 THEN _ ' KG022501
GOTO 2033 ' KG022501
IF LEN(ZUserIn$(ZAnsIndex)) > 30 THEN _
CALL QuickTPut1 ("30 Char. Max") : _
GOTO 2021
Found = ZTrue ' KG022501
ZWasDF$ = ZUserIn$(ZAnsIndex) ' KG022501
CALL AllCaps (ZWasDF$) ' KG022501
ZUserIn$(ZAnsIndex) = ZWasDF$ ' KG022501
IF ZWasDF$ = "A" AND AllowPub THEN _ ' KG022501
MsgTo$ = "ALL" _ ' KG022501
ELSE IF ZWasDF$ = "S" THEN _ ' KG022501
MsgTo$ = "SYSOP" _ ' KG022501
ELSE IF ZWasDF$ = "D" AND EnableCC THEN _ ' KG022501
GOTO 2025 _ ' KG022501
ELSE MsgTo$ = ZUserIn$(ZAnsIndex) :_ ' KG022501
CALL AllCaps (MsgTo$) ' KG022501
GOTO 2032
------------------------[ KG020801]-------------------------
Problem: When prompted whether to continue to a linked conference,
it is not clear than answering No will skip to the next linked
conference.
Solution: Replace N with S)kip. Change RBBSSUB5.BAS as follows:
63616 EndConf = INSTR(ZLinkedConf$,ZCarriageReturn$) ' KG013001
LastConf = (EndConf = LEN(ZLinkedConf$)) ' KG013001
ZHomeConf$ = LEFT$(ZLinkedConf$,EndConf-1)
IF ZNonStop THEN _
CALL QuickTPut1 ("Joining linked conference " + ZHomeConf$) _
ELSE _
ZOutTxt$ = "Continue to linked conference " + ZHomeConf$ + " ([Y],S)kip,A)bort)" : _ ' KG020801
CALL DeLink (ZHomeConf$) : _ ' KG013001
ZTurboKey = -ZTurboKeyUser : _
ZSubParm = 1 : _
CALL TGet : _
IF ZWasQ > 0 AND NOT ZYes THEN _ ' KG020801
ZWasX$ = ZUserIn$(1) : _ ' KG013001
CALL AllCaps (ZWasX$) : _ ' KG013001
ZLinkedConf$ = ZLinkedConf$ + ZHomeConf$ + ZCarriageReturn$ : _ ' KG013001
IF LastConf OR ZWasX$ = "A" THEN _ ' KG013001
ZHomeConf$ = "" : _ ' KG013001 ' KG013001
ZGlobalRead = ZFalse : _ ' KG013001
EXIT SUB _ ' KG013001
ELSE GOTO 63616 ' KG013001
END SUB
------------------------[ DR020501]-------------------------
Problem: When stacking a msg command like "g" for global, sometimes
it carries over after the read and is misinterpreted as a command
at the main command line.
Solution: Change RBBS-PC.BAS as follows:
4415 Forward = ZFalse
Reverse = ZFalse
FOR WasI = ZAnsIndex to ZLastIndex
IF INSTR("Gg",ZUserIn$(WasI)) > 0 THEN _
GOSUB 4640 ' KG020201
NEXT
IF ZAnsIndex <= ZLastIndex OR LEN(ZUserIn$(ZAnsIndex)) = 1 THEN _ ' DR020301
IF INSTR("Ss*",ZUserIn$(ZAnsIndex)) > 0 THEN _
CurMsg = ZLastMsgRead + 1 : _
Forward = ZTrue : _
GOTO 4430 _
ELSE IF INSTR("Ll",ZUserIn$(ZAnsIndex)) > 0 THEN _
CurMsg = HighMsgNumber : _
Reverse = ZTrue : _
GOTO 4490 _
ELSE IF INSTR("Gg",ZUserIn$(ZAnsIndex)) > 0 THEN _
ZGlobalRead = ZTrue : _
GOTO 4370
------------------------[ KG020501]-------------------------
Enhancement: may want to door on uploads but shell on downloads.
This lets you put two letters in proto.def for method to use.
First applies to downloads, second to uploads. If only one letter
is used, it applies to both. "SD" means shell on download and
door on uploads.
Change RBBSSUB3.BAS as follows:
21623 CALL ReadParms (ZWorkAra$(),13,ZFF)
IF ZErrCode > 0 THEN _
ZFF = LEN(ZDefaultXfer$) : _
ZProtoPrompt$ = "None" : _
GOTO 21625
ZProtoPrompt$ = ZWorkAra$(1)
IF LEN(ZProtoPrompt$) > 2 THEN _
IF MID$(ZProtoPrompt$,2,1) = ")" THEN _
ZProtoPrompt$ = LEFT$(ZProtoPrompt$,1) + MID$(ZProtoPrompt$,3)
WasX = INSTR(ZProtoPrompt$+ZCrLf$,ZCrLf$)
ZProtoPrompt$ = LEFT$(ZProtoPrompt$,WasX-1)
CALL Trim (ZProtoPrompt$)
ZProtoMethod$ = ZWorkAra$(3) ' KG020501
CALL AllCaps (ZProtoMethod$)
ZReq8Bit = (LEFT$(ZWorkAra$(4),1) = "8")
ZDownTemplate$ = ZWorkAra$(12)
ZUpTemplate$ = ZWorkAra$(13)
WasX$ = ZWorkAra$(11)
WasX = INSTR(WasX$,"=")
ZAdvanceProtoWrite = ZFalse
IF WasX < 2 OR WasX >= LEN(WasX$) THEN _
ZFailureParm = 4 : _
ZFailureString$ = "F" _
ELSE ZFailureParm = VAL(LEFT$(WasX$,WasX-1)) : _
ZFailureString$ = MID$(WasX$,WasX+1) : _
WasX = INSTR(ZFailureString$,"=") : _
IF WasX > 0 THEN _
ZAdvanceProtoWrite = (MID$(ZFailureString$,WasX) = "=A") : _
ZFailureString$ = LEFT$(ZFailureString$,WasX-1)
ZProtoMacro$ = ZWorkAra$(10)
ZFakeXRpt = (LEFT$(ZWorkAra$(8),1) = "F")
ZBatchProto = (LEFT$(ZWorkAra$(6),1) = "B")
ZSpeedFactor! = VAL(ZWorkAra$(9))
IF ZSpeedFactor! < 0.1 THEN _
ZSpeedFactor! = 0.87
ZBlockSize = VAL(ZWorkAra$(7))
ZFLen = ZBlockSize
IF ZFLen < 1 THEN _
ZFLen = 128
Change RBBSSUB4.BAS as follows:
62624 ' $SUBTITLE: 'PrivDoorRtn - subroutine to exit as a private door.'
' $PAGE
'
' NAME -- PrivDoorRtn
'
' INPUTS -- PARAMETER MEANING
' ZTransferFunction = 1 DOWNLOAD FILE TO USER
' = 2 UPLOAD FILE TO RBBS-PC
' = 3 USER REGISTRATION PGM
' ZUserIn$ NAME OF FILE TO EXIT TO
' ZComPort$ NAME OF COMMUNICATIONS PORT
' TO BE USED BY KERMIT (COM1
' OR COM2)
' ZBPS = -1 FOR 300 BAUD
' = -2 FOR 450 BAUD
' = -3 FOR 1200 BAUD
' = -4 FOR 2400 BAUD
' = -5 FOR 4800 BAUD
' = -6 FOR 9600 BAUD
' = -7 FOR 19200 BAUD
'
' OUTPUTS -- NONE
'
' PURPOSE -- To transfer control to another program
'
SUB PrivDoorRtn STATIC
IF ZPrivateDoor THEN _
GOTO 62630
IF ZFakeXRpt THEN _
CALL FakeXRpt (ZWasFT$)
IF ZAdvanceProtoWrite THEN _
CALL OpenOutW ("XFER-"+ZNodeID$+".DEF") : _
IF ZErrCode < 1 THEN _
CALL PrintWorkA (ZFileName$+",,"+ZWasFT$) : _
CLOSE 2
IF (ZTransferFunction = 1 AND LEFT$(ZProtoMethod$,1) = "S") OR _ ' KG020501
(ZTransferFunction = 2 AND RIGHT$(ZProtoMethod$,1) = "S") THEN _ ' KG020501
GOTO 62629
------------------------[ KG020201]-------------------------
Problem: Can get an out of memory error in line 4415. Wrong line
number used.
Change RBBS-PC.BAS as follows:
4415 Forward = ZFalse
Reverse = ZFalse
FOR WasI = ZAnsIndex to ZLastIndex
IF INSTR("Gg",ZUserIn$(WasI)) > 0 THEN _
GOSUB 4640 ' KG020201
NEXT
IF ZAnsIndex <= ZLastIndex AND LEN(ZUserIn$(ZAnsIndex)) = 1 THEN _ ' KG013001
IF INSTR("Ss*",ZUserIn$(ZAnsIndex)) > 0 THEN _
CurMsg = ZLastMsgRead + 1 : _
Forward = ZTrue : _
GOTO 4430 _
ELSE IF INSTR("Ll",ZUserIn$(ZAnsIndex)) > 0 THEN _
CurMsg = HighMsgNumber : _
Reverse = ZTrue : _
GOTO 4490 _
ELSE IF INSTR("Gg",ZUserIn$(ZAnsIndex)) > 0 THEN _
ZGlobalRead = ZTrue : _
GOTO 4370
------------------------[ KG013002]-------------------------
Problem: When ask to read bulletins since (b s) and there are none,
get an endless loop because a continuation statement was left off
a statement.
Solution: Change RBBS-PC.BAS as follows:
9760 ' **** [entry when want review plus chance to read] *********
GOSUB 9750
IF NumNewBullets > 0 THEN _
ZLastIndex = NumNewBullets + 1 : _
ZOutTxt$ = "Read what new bulletins (A)ll,[Q]uit)" : _ ' KG012401
GOSUB 12999 : _
CALL AllCaps (ZUserIn$) : _ ' KG013002
IF ZWasQ > 0 AND ZUserIn$ <> "Q" THEN _ ' KG012401
GOSUB 9761 : _ ' KG012401
ZAnsIndex = 0 : _
ZLastIndex = NumNewBullets : _
GOTO 9700
ZLastIndex = 0
IF ZAnsIndex < 1 THEN _
RETURN
GOTO 9701
------------------------[ KG013001]-------------------------
Problem: there is no good way to skip linked conferences in a global
read.
Solution: Let a)bort do the work of breaking the global read. No then
just rolls over to the next conference, asking if caller wants to continue
to it.
Change RBBS-PC.BAS as follows:
4352 SearchString$ = ""
DontPrint = ZFalse
JustReplied = ZFalse
QuotedReply = ZFalse
CanKill = (ZSysop OR ZUserSecLevel >= ZSecKillAny)
GOSUB 1893
GOSUB 5344
ZWasZ$ = ""
FOR WasI = 2 TO ZLastIndex ' KG012802
IF INSTR("Ss*",ZUserIn$(WasI)) > 0 THEN _
ZUserIn$(WasI) = MID$(STR$(ZLastMsgRead+1),2) + "+"
IF INSTR("Ll",ZUserIn$(WasI)) > 0 THEN _
ZUserIn$(WasI) = MID$(STR$(HighMsgNumber),2) + "-"
IF INSTR("Gg",ZUserIn$(WasI)) > 0 THEN _
GOSUB 4640 ' KG013001
NEXT
4415 Forward = ZFalse
Reverse = ZFalse
FOR WasI = ZAnsIndex to ZLastIndex
IF INSTR("Gg",ZUserIn$(WasI)) > 0 THEN _
GOSUB 4415 ' KG013001
NEXT
IF ZAnsIndex <= ZLastIndex AND LEN(ZUserIn$(ZAnsIndex)) = 1 THEN _ ' KG013001
IF INSTR("Ss*",ZUserIn$(ZAnsIndex)) > 0 THEN _
CurMsg = ZLastMsgRead + 1 : _
Forward = ZTrue : _
GOTO 4430 _
ELSE IF INSTR("Ll",ZUserIn$(ZAnsIndex)) > 0 THEN _
CurMsg = HighMsgNumber : _
Reverse = ZTrue : _
GOTO 4490 _
ELSE IF INSTR("Gg",ZUserIn$(ZAnsIndex)) > 0 THEN _
ZGlobalRead = ZTrue : _
GOTO 4370
4640 FOR WasJ = WasI to ZLastIndex-1 ' KG013001
ZUserIn$(WasJ) = ZUserIn$(WasJ+1) ' KG013001
NEXT ' KG013001
ZGlobalRead = ZTrue ' KG013001
ZLastIndex = ZLastIndex - 1 ' KG013001
RETURN ' KG013001
------------------------[ KG012803]-------------------------
Problem: When caller is in a door, the who command shows part
of name of door in rather than the line speed. (Fix to an enhancement)
Solution: 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) = RIGHT$(STR$(-ZBPS),2)
MID$(ZMsgRec$,46,2) = STR$(ZUpperCase)
MID$(ZMsgRec$,48,5) = MKS$(ZNumDnldBytes!) + MID$(STR$(-ZBatchTransfer),2)
MID$(ZMsgRec$,53,2) = STR$(ZWasGR)
MID$(ZMsgRec$,55,2) = STR$(ZSysop)
MID$(ZMsgRec$,65,3) = CHR$(VAL(LEFT$(ZOrigTimeLoggedOn$,2))) + _
CHR$(VAL(MID$(ZOrigTimeLoggedOn$,4,2))) + _
CHR$(VAL(MID$(ZOrigTimeLoggedOn$,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) ' KG012803
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$ _
ELSE ZWasZ$ = " 0"
MID$(ZMsgRec$,101,2) = ZWasZ$
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))
CALL PrintWorkA (ZWasNG$)
CALL PrintWorkA (ZIndivValue$)
CALL PrintWorkA (ZOrigDateTimeOn$)
CALL PrintWorkA (ZOrigTimeLoggedOn$)
CALL PrintWorkA (STR$(ZUserFileIndex))
CALL PrintWorkA (ZUpldDir$)
ZOutTxt$ = STR$(ZUpldDir$ = ZFMSDirectory$ OR ZLimitSearchToFMS)
CALL PrintWorkA (ZOutTxt$)
CALL PrintWorkA (ZCBaud$)
CALL PrintWorkA (ZDooredTo$) ' KG012803
CLOSE 2
44000 ' $SUBTITLE: 'ReadProf - subroutine to restore a user profile'
' $PAGE
'
' NAME -- ReadProf
'
' INPUTS -- PARAMETER MEANING
' ZNodeRecIndex NODE RECORD TO USE
' ZSysopPswd1$ Sysop'S PSEUDONYM 1
' ZSysopPswd2$ Sysop'S PSEUDONYM 2
'
' OUTPUTS -- USER'S OPTIONS AND COMMUNICATIONS PARAMETERS
' UPON EXITING RBBS-PC TO A "DOOR"
'
' PURPOSE -- Reset a user's options and communications parameters
' that were saved in the node record when a user exited
' to a "door" so that he is in the same status as when
' he exited.
'
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))
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)) ' KG012803
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$)
ZLocalUserMode = VAL(MID$(ZMsgRec$,103,2))
ZHomeConf$ = MID$(ZMsgRec$,105,8)
ZAutoLogoffReq = (VAL(MID$(ZMsgRec$,115,1)) <> 0)
CALL Trim (ZHomeConf$)
IF ZHomeConf$ = "MAIN" THEN _
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
44003 ZUserLogonTime! = VAL(HourLoggedOn$) * 3600! + _
VAL(MinLoggedOn$) * 60! + _
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$ = ZSecretName$ _
ELSE ZFirstNameEnd = INSTR(ZMsgRec$," ") : _
ZLastNameEnd = INSTR(ZFirstNameEnd + 1,ZMsgRec$ + " "," ") : _
ZFirstName$ = LEFT$(ZMsgRec$,ZFirstNameEnd-1) : _
ZLastName$ = MID$(ZMsgRec$,ZFirstNameEnd + 1,ZLastNameEnd - (ZFirstNameEnd + 1)) : _
ZActiveUserName$ = MID$(ZFirstName$ + " " + ZLastName$,1,31)
ZWasZ$ = ZFirstName$
CALL OpenWork (2,ZNodeWorkDrvPath$+"DRST"+ZNodeFileID$+".DEF")
CALL ReadDir (2,1)
ZLimitMinsPerSession = VAL (ZOutTxt$)
CALL ReadDir (2,1)
ZWasNG$ = ZOutTxt$
CALL ReadDir (2,1)
ZIndivValue$ = ZOutTxt$
CALL ReadDir (2,1)
ZOrigDateTimeOn$ = ZOutTxt$
CALL ReadDir (2,1)
ZOrigTimeLoggedOn$ = ZOutTxt$
CALL ReadDir (2,1)
ZUserFileIndex = VAL(ZOutTxt$)
CALL ReadDir (2,1)
ZUpldDoor$ = ZOutTxt$
CALL ReadDir (2,1)
ZFMSDoor = VAL(ZOutTxt$)
CALL ReadDir (2,1)
ZCBaud$ = ZOutTxt$
CALL ReadDir (2,1) ' KG012803
ZDooredTo$ = ZOutTxt$ ' KG012803
CLOSE 2
IF ZExitToDoors AND ZDooredTo$ <> "" THEN _ ' KG012803
CALL OpenWork (2,ZDoorsDef$) : _ ' KG012803
IF ZErrCode = 0 THEN _ ' KG012803
CALL ReadParms (ZOutTxt$(),8,1) : _ ' KG012803
WHILE ZErrCode = 0 AND ZOutTxt$(1) <> ZDooredTo$ : _ ' KG012803
CALL ReadParms (ZOutTxt$(),8,1) : _ ' KG012803
WEND : _ ' KG012803
IF ZOutTxt$(1) = ZDooredTo$ THEN _ ' KG012803
ZDoorSkipsPswd = (ZOutTxt$(6) <> "Y") ' KG012803
ZErrCode = 0 ' KG012803
CALL DoorReturn
END SUB
------------------------[ KG012802]-------------------------
Problem: sometimes when request global read and have linked
conferences, never asks if want to join next linked conference.
This happens, for example, when stack the join, as in
"j sig r s g" as opposed to "r s g".
Solution: Change RBBS-PC.BAS as follows:
4352 SearchString$ = ""
DontPrint = ZFalse
JustReplied = ZFalse
QuotedReply = ZFalse
CanKill = (ZSysop OR ZUserSecLevel >= ZSecKillAny)
GOSUB 1893
GOSUB 5344
ZWasZ$ = ""
FOR WasI = 2 TO ZLastIndex ' KG012802
IF INSTR("Ss*",ZUserIn$(WasI)) > 0 THEN _
ZUserIn$(WasI) = MID$(STR$(ZLastMsgRead+1),2) + "+"
IF INSTR("Ll",ZUserIn$(WasI)) > 0 THEN _
ZUserIn$(WasI) = MID$(STR$(HighMsgNumber),2) + "-"
IF INSTR("Gg",ZUserIn$(WasI)) > 0 THEN _
ZGlobalRead = ZTrue
NEXT
------------------------[ KG012801]-------------------------
Enhancement. Lets user elect to make a join a turbo logon. Just
stack the "!" after the conference to join. Thus, "j sig ! r s"
says to turbo logon into conference "sig", reading since. This lets
the caller stack commands that will work regardless of whether there
is news, new bulletins, new files, etc.
Change RBBS-PC.BAS as follows:
5323 IF ZWasZ$ = "MAIN" THEN _
ZWasZ$ = "M"
WasX = (ZWasZ$ = "M")
IF ZWasZ$ = ConfNameSave$ OR (WasX AND ZConfName$ = "MAIN") THEN _
CALL QuickTPut1 ("You are already in " + ZWasZ$) : _
RETURN
IF ZUserIn$(ZAnsIndex+1) = "!" AND ZAnsIndex < ZLastIndex THEN _ ' KG012801
TurboLogon = ZTrue : _ ' KG012801
ZAnsIndex = ZAnsIndex + 1 ' KG012801
ON INSTR("MNSPQ",ZWasZ$) GOTO 5350,5290,5292,5294,10550
IF NOT ZOK THEN _
GOTO 5300
CLOSE 2
------------------------[ KG012601]-------------------------
Problem: When a conference contains a different # of node records
that the main message based, the W)ho command will report the # of
nodes in the conference rather than the number on the main message
base. (The # of node records in conferences can be any natural
number in RBBS.)
Solution: Change RBBS-PC.BAS as follow.
9800 CALL WhosOn ' KG012601
GOSUB 5344
RETURN
Change RBBSSUB2.BAS as follows:
9801 ' $SUBTITLE: 'WhosOn - subroutine to display who is on'
' $PAGE
'
' NAME -- WhosOn
'
' INPUTS -- PARAMETER MEANING
' ZActiveMessageFile$ Current message file
' ZOrigMsgFile$ Main msg file
'
' OUTPUTS -- None
'
' PURPOSE -- To display who is on each node.
'
SUB WhosOn STATIC ' KG012601
WasA1$ = ZActiveMessageFile$
ZActiveMessageFile$ = ZOrigMsgFile$
CALL OpenMsg
FIELD 1, 128 AS ZMsgRec$
GET 1,1 ' KG012601
NumNodes = VAL(MID$(ZMsgRec$,127)) ' KG012601
FOR NodeIndex = 2 TO NumNodes + 1
GET 1,NodeIndex
ZOutTxt$ = ZFG1$ + "Node" + _
STR$(NodeIndex - 1) + ZFG2$
WasAX$ = MID$(ZMsgRec$,79,5) ' KG012001
CALL Trim (WasAX$) ' KG012001
WasAX$ = RIGHT$(" " + WasAX$,5) + _ ' KG012001
" BPS: "
IF MID$(ZMsgRec$,55,2) = "-1" AND NOT ZSysop THEN _
ZWasY$ = "SYSOP" + SPACE$(21) _
ELSE ZWasY$ = MID$(ZMsgRec$,1,26)
WasAX$ = WasAX$ + ZFG3$ + ZWasY$
IF MID$(ZMsgRec$,40,2) <> "-1" THEN _
WasAX$ = WasAX$ + ZFG4$ + MID$(ZMsgRec$,93,22)
IF MID$(ZMsgRec$,57,1) = "A" THEN _
ZOutTxt$ = ZOutTxt$ + " Online at " + _
WasAX$ _
ELSE IF NOT ZSysop THEN _
ZOutTxt$ = ZOutTxt$ + _
" Waiting for next caller" _
ELSE ZOutTxt$ = ZOutTxt$ + _
" Offline at " + _
WasAX$
CALL QuickTPut1 (ZOutTxt$)
CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)
IF ZNo THEN _
NodeIndex = NumNodes + 2
NEXT
ZActiveMessageFile$ = WasA1$
CALL QuickTPut (ZEmphasizeOff$,0)
END SUB
------------------------[ KG012502]-------------------------
Problem: prompt on who msg is to always offers A)ll option, even when
the message base does not allow public messages!
Change RBBS-PC.BAS as follows:
2020 CALL SetWhoTo (-ZEnableCC*(ZUserSecLevel>=ZOptSec(5)),MsgTo$,MsgFrom$,RcvrRecNum,Found,INSTR(ZMsgSecCats$,"U")>0) ' KG012502
IF MsgTo$ = "" THEN _
RETURN
IF ZSysopComment OR ZSysopMsg THEN _
GOTO 2100
IF ZReply OR MsgFwd THEN _
Found = ZTrue : _
CALL Trim (MsgTo$): _
GOTO 2035 _
ELSE Subject$ = ""
GOSUB 2065
4666 CALL Trim (MsgTo$)
ZOutTxt$ = "Change receiver's name from " + _
MsgTo$ + _
" to"
GOSUB 12995
IF ZWasQ = 0 THEN _
GOTO 4667
IF LEN(ZUserIn$) > 30 THEN _
CALL QuickTPut1 ("30 chars max") : _
GOTO 4666
CALL AllCaps (ZUserIn$)
MsgTo$ = ZUserIn$
TempMsgTo$ = ZUserIn$
CALL SetWhoTo (ZFalse,MsgTo$,MsgFrom$,RcvrRecNum,Found,ZTrue) ' KG012502
IF MsgTo$ = "" THEN MsgTo$ = TempMsgTo$
Change RBBSSUB2.BAS as follows:
2018 ' $SUBTITLE: 'SetWhoTo - subroutine to get who a msg/upload is to'
' $PAGE
'
' NAME -- SetWhoTo
'
' INPUTS -- PARAMETER MEANING
' HighestUserRecord
'
' OUTPUTS -- MsgTo$ Who message is to
' RcvrRecNum User record # of who to
'
' PURPOSE -- Asks who a message/upload is to and checks if receiver exists
'
SUB SetWhoTo (EnableCC,MsgTo$,MsgFrom$,RcvrRecNum,Found,AllowPub) STATIC ' KG012502
Temp$ = MsgFrom$
CALL Trim (Temp$)
ZNumHeaders = 0
CALL KillWork (ZNodeWorkFile$)
2021 ZOutTxt$ = "To " + LEFT$("A)ll,",-5*AllowPub) + "(S)ysop," + _ ' KG012502
LEFT$("D)istribution,",-14*EnableCC) + _
" or name" + ZPressEnterExpert$
CALL SkipLine (1)
ZSemiOnly = ZTrue
CALL PopCmdStack
IF LEN(ZUserIn$(ZAnsIndex)) > 30 THEN _
CALL QuickTPut1 ("30 Char. Max") : _
GOTO 2021
Found = ZTrue
IF ZWasQ = 0 THEN _
GOTO 2033 _
ELSE ZWasDF$ = ZUserIn$(ZAnsIndex) : _
CALL AllCaps (ZWasDF$) : _
ZUserIn$(ZAnsIndex) = ZWasDF$ : _
IF ZWasDF$ = "A" AND AllowPub THEN _ ' KG012502
MsgTo$ = "ALL" _
ELSE IF ZWasDF$ = "S" THEN _
MsgTo$ = "SYSOP" _
ELSE IF ZWasDF$ = "D" AND EnableCC THEN _
GOTO 2025 _
ELSE MsgTo$ = ZUserIn$(ZAnsIndex) :_
CALL AllCaps (MsgTo$)
GOTO 2032
2032 RcvrRecNum = 0
IF MsgTo$ <> "ALL" OR NOT AllowPub THEN _ ' KG012502
IF ((LEFT$(MsgTo$,4) <> "ALL " OR NOT AllowPub) AND ZStartHash = 1) THEN _ ' KG012502
CALL CheckInt (MsgTo$) : _ ' KG082201
IF ZTestedIntValue = 0 OR NOT ZSysOp THEN _ ' KG082201
ZWasDF = INSTR(MsgTo$+" @"," @") : _
TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _
CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _
IF NOT Found THEN _
ZLastIndex = 0 : _
RcvrRecNum = 0 : _
IF NOT ZReply THEN _
ZOutTxt$ = "Send anyway (Y,[N])" : _
ZTurboKey = -ZTurboKeyUser : _
ZLastIndex = 0 : _
GOSUB 2034 : _
IF NOT ZYes THEN _
GOTO 2021
IF MsgTo$ = Temp$ THEN _
ZOutTxt$ = "Really send this to YOURSELF (Y,[N])" : _
ZLastIndex = 0 : _
GOSUB 2034 : _
IF NOT ZYes THEN _
MsgTo$ = ""
CALL OpenWorkA (ZNodeWorkFile$)
CALL PrintWorkA (MsgTo$ + "," + STR$(RcvrRecNum))
CLOSE 2
ZNumHeaders = ZNumHeaders + 1
IF EnableCC AND (NOT ZReply) AND MsgTo$ <> "ALL" AND _
MsgTo$ <> "" AND LEFT$(MsgTo$,4) <> "ALL " AND _
(NOT ZSysopComment) AND (NOT ZSysopMsg) THEN _
ZOutTxt$ = "Carbon copy to another (Y,[N])" : _
CALL PopCmdStack : _
IF ZYes THEN _
GOTO 2021
Change RBBSSUB5.BAS as follows:
20460 WhoTo$ = ""
WasY$ = ZFileName$
CALL KillWork (ZNodeWorkFile$)
IF ZUserSecLevel >= ZMinSecPersUpld THEN _
CALL SetWhoTo (ZTrue,WhoTo$,"",RcvrRecNum,Found,ZTrue) _ ' KG012502
ELSE WhoTo$ = "ALL"
ZFileName$ = WasY$
RETURN
------------------------[ KG012501]-------------------------
Problem: The conference mail scan is being left open long after the file
is read, making it difficult to replace the file on a multi-user system.
Solution: Change RBBSSUB4.BAS as follows:
59856 ZActiveUserFile$ = WasA1$
CALL OpenUser (ZHighestUserRecord)
FIELD 5, 128 AS ZUserRecord$
IF (NOT ZRet) AND NOT AnyMail THEN _
CALL QuickTPut1 ("You have not joined any conferences")
ZUserFileIndex = UserFileIndexSave
LSET ZUserRecord$ = UserRecordHold$
ZActiveMessageFile$ = MsgFileSave$
CALL OpenMsg
FIELD 1, 128 AS ZMsgRec$
GET 1,1
ZNonStop = (ZPageLength < 1)
WasX$ = ZUserIn$(ZAnsIndex+1)
CALL AllCaps (WasX$)
ZAnsIndex = ZAnsIndex - (WasX$ = "C")
SkipParms = -(NOT EOF(2))*SkipParms
LinkNew = ZFalse
LinkPers = ZFalse
CLOSE 2 ' KG012501
END SUB
------------------------[ KG012401]-------------------------
Problem: When seeing the list of new bulletins, often the caller
wishes to read only particular ones rather than all of them. This
change lets any bullets be selected as well as all or none.
Change RBBS-PC.BAS as follows:
9760 ' **** [entry when want review plus chance to read] *********
GOSUB 9750
IF NumNewBullets > 0 THEN _
ZLastIndex = NumNewBullets + 1 : _
ZOutTxt$ = "Read what new bulletins (A)ll,[Q]uit)" : _ ' KG012401
GOSUB 12999 : _
CALL AllCaps (ZUserIn$) ' KG012401
IF ZWasQ > 0 AND ZUserIn$ <> "Q" THEN _ ' KG012401
GOSUB 9761 : _ ' KG012401
ZAnsIndex = 0 : _
ZLastIndex = NumNewBullets : _
GOTO 9700
ZLastIndex = 0
IF ZAnsIndex < 1 THEN _
RETURN
GOTO 9701
9761 IF ZUserIn$ <> "A" THEN _ ' KG012401
NumNewBullets = ZWasQ _ ' KG012401
ELSE _ ' KG012401
FOR Temp = 1 TO NumNewBullets : _ ' KG012401
ZUserIn$(Temp) = ZOutTxt$(Temp+1) : _ ' KG012401
NEXT ' KG012401
RETURN ' KG012401
------------------------[ KG012301]-------------------------
Problem: When join a conference, reading continuuously, being
asked if want to check messages. It is not possible to stack any
answer to this prompt.
Solution: Change RBBS-PC.BAS as follows:
1895 IF TurboLogon OR ZNonStop THEN _ ' KG012301
RETURN
ZOutTxt$ = "Check mail in " + ZConfName$ + " ([Y],N)"
GOSUB 12930 ' KG012301
IF ZNo THEN _
SkipMain = ZTrue : _
RETURN
ZUserIn$(0) = LEFT$("NEW ",-4*LogonMailNew)
------------------------[ KG012001]-------------------------
Problem: Who command showing the speed of caller as the pc-to-modem
speed, rather than the line speed.
Change RBBS-PC.BAS as follows:
819 CALL Trim (ZWasCI$)
IF (ZNodeRecIndex < 2) THEN _
GOTO 821
GOSUB 4910
GOSUB 24000
GET 1,ZNodeRecIndex
MID$(ZMsgRec$,1,31) = ZActiveUserName$ + _
SPACE$(31 - LEN(ZActiveUserName$))
MID$(ZMsgRec$,40,2) = " 0"
MID$(ZMsgRec$,44,2) = RIGHT$(STR$(-ZBPS),2)
MID$(ZMsgRec$,55,2) = " 0"
MID$(ZMsgRec$,57,1) = "A"
MID$(ZMsgRec$,60,5) = ZTalkToModemAt$ + _
SPACE$(5 - LEN(ZTalkToModemAt$))
MID$(ZMsgRec$,72,2) = " 0"
MID$(ZMsgRec$,79,5) = ZCBaud$ + SPACE$(5 - LEN(ZCBaud$)) ' KG012001
MID$(ZMsgRec$,93,24) = ZWasCI$ + _
SPACE$(24)
PUT 1,ZNodeRecIndex
GOSUB 12985
Change RBBSSUB2.BAS as follows:
9801 ' $SUBTITLE: 'WhosOn - subroutine to display who is on'
' $PAGE
'
' NAME -- WhosOn
'
' INPUTS -- PARAMETER MEANING
' NumNodes # of nodes to check
' ZActiveMessageFile$ Current message file
' ZOrigMsgFile$ Main msg file
'
' OUTPUTS -- None
'
' PURPOSE -- To display who is on each node.
'
SUB WhosOn (NumNodes) STATIC
WasA1$ = ZActiveMessageFile$
ZActiveMessageFile$ = ZOrigMsgFile$
CALL OpenMsg
FIELD 1, 128 AS ZMsgRec$
FOR NodeIndex = 2 TO NumNodes + 1
GET 1,NodeIndex
ZOutTxt$ = ZFG1$ + "Node" + _
STR$(NodeIndex - 1) + ZFG2$
WasAX$ = MID$(ZMsgRec$,79,5) ' KG012001
CALL Trim (WasAX$) ' KG012001
WasAX$ = RIGHT$(" " + WasAX$,5) + _ ' KG012001
" BPS: "
IF MID$(ZMsgRec$,55,2) = "-1" AND NOT ZSysop THEN _
ZWasY$ = "SYSOP" + SPACE$(21) _
ELSE ZWasY$ = MID$(ZMsgRec$,1,26)
WasAX$ = WasAX$ + ZFG3$ + ZWasY$
IF MID$(ZMsgRec$,40,2) <> "-1" THEN _
WasAX$ = WasAX$ + ZFG4$ + MID$(ZMsgRec$,93,22)
IF MID$(ZMsgRec$,57,1) = "A" THEN _
ZOutTxt$ = ZOutTxt$ + " Online at " + _
WasAX$ _
ELSE IF NOT ZSysop THEN _
ZOutTxt$ = ZOutTxt$ + _
" Waiting for next caller" _
ELSE ZOutTxt$ = ZOutTxt$ + _
" Offline at " + _
WasAX$
CALL QuickTPut1 (ZOutTxt$)
CALL AskMore ("",ZTrue,ZTrue,ZAnsIndex,ZFalse)
IF ZNo THEN _
NodeIndex = NumNodes + 2
NEXT
ZActiveMessageFile$ = WasA1$
CALL QuickTPut (ZEmphasizeOff$,0)
END SUB
------------------------[ KG011501]-------------------------
Problem: menu for an option is shown automatically when an option
picked that does not exist, such as a conference. The mistake is
usually a misspelling versus ignorance of what options exist. Therefore,
don't automatically put the menu up. If novice, put it up. If expert,
don't. Caller can ask for a L)ist to get the list of options. Was
penalizing the misspeller too much.
Change RBBSSUB4.BAS as follows.
59510 ZFileName$ = CurMenu$
InMenu = ZTrue
CALL BreakFileName (FrontOpt$,WasX$,FrontPre$,ZWasDF$,ZTrue)
CALL BreakFileName (CurMenu$,MenuDrv$,WasX$,ZWasDF$,ZTrue)
MenuFront$ = MenuDrv$ + LEFT$(WasX$,LEN(WasX$)-LEN(PreSuf$))
IF CurMenu$ = LastSubMenu$ THEN _
MenuFront$ = LEFT$(MenuFront$,LEN(MenuFront$)-1)
CALL Graphic (ZFileName$)
CurMenuVer$ = ZFileName$
ZStopInterrupts = ZFalse
59514 IF ZAnsIndex < ZLastIndex OR ZExpertUser THEN _ ' KG011501
GOTO 59520
59532 GOSUB 59547
GOTO 59514 ' KG011501
------------------------[ KG011201]-------------------------
Enhancement: Enhancements macro stack command ({ST) to stack carriage-
returns using the "|" symbol. Also, enhances the message section to
support entering a message thru the macro stack. This allows messages
to be automatically generated by macros.
Change RBBS-PC.BAS as follows:
2010 IF NOT QuotedReply THEN _
ZLinesInMsg = 0 : _ ' KG011201
WasL = 0 : _
WasX = 0 : _
REDIM ZOutTxt$(ZMsgDim)
IF ZGetExtDesc THEN _
GOTO 2100
GOSUB 1893
RcvrRecNum = 0
Change RBBSSUB2.BAS as follows:
3730 IF TabToSpace > 0 THEN _
WasX$ = " " : _
TabToSpace = TabToSpace - 1 : _
GOTO 3750
CALL FindFKey
IF ZSubParm < 0 THEN _
EXIT SUB
WasX$ = ZKeyPressed$
IF WasX$ = "" THEN _
GOTO 3732 : _ ' KG011201
IF ZLocalUser THEN _
GOTO 3733 _
ELSE GOTO 3732
IF WasX$ = ZEscape$ THEN _
ZKeyPressed$ = WasX$ : _
EXIT SUB
SendRemote = ZTrue
WasZ = INSTR(ZLineEditChk$,WasX$)
IF WasZ < 1 THEN _
GOTO 3750 _
ELSE IF WasZ > 4 THEN _
GOTO 3870 _
ELSE IF WasZ = 1 THEN _
GOTO 3810
IF ZLocalUser THEN _
GOTO 3730
* REPLACING old line(s) by new
3732 IF ZCommPortStack$ <> "" THEN _
WasX$ = LEFT$(ZCommPortStack$,1) : _
ZCommPortStack$ = RIGHT$(ZCommPortStack$,LEN(ZCommPortStack$)-1) : _
GOTO 3738
IF NOT ZLocalUser THEN _ ' KG011201
CALL EofComm (Char) : _ ' KG011201
IF Char <> -1 THEN _ ' KG011201
GOTO 3736 ' KG011201
Change RBBSSUB5.BAS as follows:
63355 CALL GlobalSrchRepl (WasX$,"|",ZCarriageReturn$,ZTrue) ' KG011201
ZCommPortStack$ = ZCommPortStack$ + WasX$ + ZCarriageReturn$ ' STack
GOTO 63336
------------------------[ KG100701]-------------------------
Problem: Subboard def file is allowed to change the network
type.
Solution: Change RBBSSUB1.BAS as follows:
117 IF ZSubParm <> -62 THEN _
IF PrevRead$ = ConfigFile$ THEN _
EXIT SUB _
ELSE PrevRead$ = ConfigFile$
CLOSE 2
ZBulletinSave$ = ZBulletinMenu$
CALL OpenWork (2,ConfigFile$)
ZCurDef$ = ConfigFile$
INPUT #2,ZWasDF$, _
ZDnldDrives$, _
ZSysopPswd1$, _
ZSysopPswd2$, _
ZSysopFirstName$, _
ZSysopLastName$, _
ZRequiredRings, _
ZStartOfficeHours, _
ZEndOfficeHours, _
ZMinsPerSession, _
ZWasDF, _
ZWasDF, _
ZUpldDir$, _
ZExpertUserDef, _
ZActiveBulletins, _
ZPromptBellDef, _
ZWasDF, _
ZMenusCanPause, _
ZMenu$(1), _
ZMenu$(2), _
ZMenu$(3), _
ZMenu$(4), _
ZMenu$(5), _
ZMenu$(6), _
ZConfMenu$, _
ZTestANSITime, _
ZWelcomeInterruptable, _
ZRemindFileXfers, _
ZPageLengthDef, _
ZMaxMsgLinesDef, _
ZDoorsAvail, _
ZWasDF$, _
ZMainMsgFile$, _
ZMainMsgBackup$
INPUT #2, WasX$, _
ZCmntsFile$, _
ZMainUserFile$, _
ZWelcomeFile$, _
ZNewUserFile$, _
ZMainDirExtension$
CALL BreakFileName (WasX$,ZWasY$,ZWasDF$,ZWasZ$,ZFalse)
IF ZWasDF$ <> "" THEN _
ZCallersFile$ = WasX$
INPUT #2, ZWasDF$
IF ZComPort$ <> "COM0" THEN _
IF NOT ZConfMode THEN _
ZComPort$ = ZWasDF$
INPUT #2, ZBulletinsOptional, _
ZModemInitCmd$, _
ZRTS$, _
ZCallersLst$, _
ZFG, _
ZBG, _
ZBorder
IF ZConfMode THEN _
INPUT #2, ZWasDF$, _
ZWasDF$ _
ELSE INPUT #2, ZRBBSBat$ , _
ZRCTTYBat$
INPUT #2,ZOmitMainDir$, _
ZFirstNamePrompt$, _
ZHelp$(3), _
ZHelp$(4), _
ZHelp$(7), _
ZHelp$(9), _
ZBulletinMenu$, _
ZBulletinPrefix$, _
ZWasDF$, _
ZMsgReminder, _
ZRequireNonASCII, _
ZAskExtendedDesc, _
ZMaxNodes ' KG100701
IF ZConfMode THEN _ ' KG100701
INPUT #2, ZwasDF, ZwasDF _ ' KG100701
ELSE INPUT #2, ZNetworkType, _ ' KG100701
ZRecycleToDos
INPUT #2,ZWasDF, _
ZWasDF, _
ZTrashcanFile$
.
.
.
------------------------[ KG092301]-------------------------
Enhancement. This makes it possible to write macros so that they
work the same reguardless of whether the user is in turbo-key mode.
When passing keystrokes in a macro, simply begin them with "/".
When the user is in turbo-key mode, this will simply suspend it
for that line. When not in turbo-key mode, this change will
strip out a leading "/". The effect will make the line work
exactly the same. Note: if you want the macro to pass the "/"
as a keystroke, simply add a space (" /" will have the
same effect as "/" prior to this change).
Change RBBSSUB2.BAS as follows:
1534 ZUserIn$ = ZOutTxt$ ' Not Macro command - pass to normal processing
' * strip off leading slash when not in turbokey mode so macros can be
' * written to work in both turbo and non-turbo-key mode
IF LEFT$(ZUserIn$,1) = "/" THEN IF NOT ZTurboKeyUser THEN _ ' KG092301
ZUserIn$ = RIGHT$(ZUserIn$,LEN(ZUserIn$)-1) : _ ' KG092301
ZTurboKey = ZFalse ' KG092301
IF ZMacroEcho THEN _
ZSubParm = 4 : _
CALL TPut
WasX$ = ZCarriageReturn$
GOTO 1547
------------------------[ KG092201]-------------------------
Problem: RBBS gets the line speed but doesn't report it to the
caller or log it to callers file.
Change RBBS-PC.BAS as follows:
800 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 ZSubBoard) AND _
(NOT ZPrivateDoor) AND (NOT ZExitToDoors))
GOSUB 9500
IF (NOT ZExitToDoors) AND (NOT ZSubBoard) THEN _
CALL UpdtCalr (ZActiveUserName$ + " from " + ZWasCI$ + _
" Lvl" + STR$(ZUserSecLevel) + " " + TIME$,2) : _ ' KG092201
CALL UpdtCalr ("Line Speed " + ZCBaud$,2) ' KG092201
PrevLastOn$ = ZLastDateTimeOn$
IF ZLocalUser THEN _
ZTalkToModemAt$ = "9600" : _
ZBaudParity$ = "9600 BPS,N,8,1" : _
ZModemInitBaud$ = "9600" : _
ZSnoop = ZTrue : _
ZLineFeeds = ZTrue
CALL SetCrLf
CALL SetPrompt
CALL XferType (2,ZTrue)
IF NOT ZSubBoard THEN _
BoardCheckDate$ = PrevLastOn$
CALL SetSysOp
IF ZWasA THEN _
ZActiveUserName$ = "SYSOP" : _
ZFirstName$ = "SysOp"
IF ZExitToDoors OR ZSubBoard THEN _
GOTO 815
GOSUB 465
IF (ZEightBit AND _
ZAutoDownDesired) OR _
ZAskID THEN _
CALL TestUser
CALL QuickTPut1 ("Logging " + ZActiveUserName$)
CALL Talk (1,ZOutTxt$)
Temp$ = STR$(ZBaudTest!) + MID$(ZBaudParity$,INSTR(ZBaudParity$," B"))
CALL QuickTPut1 ("RBBS-PC " + ZVersionID$ + " Node " + ZNodeID$) ' KG092201
CALL QuickTPut1 ("Line speed " + ZCBaud$ + " Host operating at" + Temp$) ' KG092201
CALL SkipLine (1)
Attempts = 0
ZWasZ$ = ZActiveUserName$ + _
" on at " + _
ZCurDate$ + _
", " + _
ZTime$ + _
" from " + _
ZWasCI$ + _
"," + Temp$
ZWasNG$ = ZWasZ$ + SPACE$(128 - LEN(ZWasZ$))
'
' * ALWAYS RECORD THE HASH/INDIVIDUATING FIELD TO EACH RECORD LOGGED OUT
'
WasX$ = "{" + _
HashValue$ + _
"/" + _
ZIndivValue$ + _
"}"
IF LEN(ZWasZ$) < 65 THEN _
WasX = 65 _
ELSE WasX = LEN(ZWasZ$) + 2
MID$(ZWasNG$,WasX) = WasX$
CALL Printit (" " + ZWasZ$)
IF ZNewUser THEN _
CALL UpdtCalr ("NEWUSER",1) : _
CALL Muzak (2)
'
' ***** NOTIFY CALLER IF ABLE TO "AUTODOWN" ****
'
IF ZEightBit AND ZAutoDownYes THEN _
ZOutTxt$ = CHR$(9) + _
ZReturnLineFeed$ + _
"You may use AUTODOWNLOADing!" : _
CALL RingCaller : _
CALL DelayTime(4)
------------------------[ KG091002]-------------------------
Problem: Possible to get an untrapped error when the FMS directory
being read does not match in length that specified in CONFIG. This
changes makes the FMS directory readable without error even when it
does not match.
58190 ' $SUBTITLE: 'OpenFMS - subroutine to open the FMS directory'
' $PAGE
'
' NAME -- OpenFMS
'
' INPUTS -- PARAMETER MEANING
' ZShareIt DOS SHARING FLAG
' ZFMSDirectory$ NAME OF FMS DIRECTORY
'
' OUTPUTS -- LastRec NUMBER OF THE Last
' RECORD IN THE FILE
' CatLen Length of the category code
'
' PURPOSE -- To open the upload directory as a random file and find
' the number of the last record in the file.
'
SUB OpenFMS (LastRec,CatLen) STATIC
ON ERROR GOTO 65000
CLOSE 2
IF ZActiveFMSDir$ = "" THEN _
IF ZMenuIndex = 6 THEN _
ZActiveFMSDir$ = ZLibDir$ _
ELSE ZActiveFMSDir$ = ZFMSDirectory$
OldFile = (ZActiveFMSDir$ = PrevFMS$)
IF OldFile THEN _
GOTO 58192
CALL OpenWork (2,ZActiveFMSDir$)
CALL ReadDir (2,1)
IF ZErrCode > 0 OR LEN(ZOutTxt$) < 37 THEN _ ' KG091002
IF ZActiveFMSDir$ = ZPersonalDir$ THEN _
ZFMSFileLength = 36 + ZMaxDescLen + ZPersonalLen _
ELSE ZFMSFileLength = 38 + ZMaxDescLen _
ELSE ZFMSFileLength = LEN(ZOutTxt$) + 2
IF ZFMSFileLength < 86 THEN _ ' KG091002
CalcCatLen = 3 : _ ' KG091002
ZMaxDescLen = ZFMSFileLength - 38 _ ' KG091002
ELSE CalcCatLen = ZPersonalLen : _ ' KG091002
ZMaxDescLen = ZFMSFileLength - 36 - ZPersonalLen ' KG091002
CLOSE 2
------------------------[ KG091001]-------------------------
Problem: When personal files are stored in the drive/path for personal
files, and this drive/path is not in download areas, then the file can
be downloaded but not viewed. This makes those personal files viewed,
but subject to the same constaints as downloading, so that when in
the personal directory callers can view only those files listed and to
them. Note: this change is an improvement on one submitted by
Tom Hansen and Dan Shore.
Solution: Change RBBSSUB2.BAS as follows:
20142 IF ZAnsIndex > ZLastIndex THEN _
IF ZLastIndex > 1 OR Drive$ <> "" THEN _ ' KG091001
EXIT SUB _
ELSE GOTO 20141
GOSUB 20143
IF ZSubParm < 0 THEN _
EXIT SUB
ZAnsIndex = ZAnsIndex + 1
GOTO 20142
20145 IF Drive$ <> "" THEN _ ' KG091001
ZFileNameHold$ = Prefix$ + "." + Ext$ : _ ' KG091001
CALL FindFile (ZFileName$,ZOK) _ ' KG091001
ELSE CALL RotorsDir (ZFileName$,ZSubDir$(),ZSubDirCount + (NOT ZSysop),ZTrue,"V") ' KG091001
IF ZOK THEN _
GOTO 20148
Change RBBSSUB3.BAS as follows:
58181 MarkingFiles = ZFalse
IF ((WasX$ = "D" OR WasX$ = "M") AND CanDnld) OR (WasX$ = "V" AND CanView) THEN _ ' KG091001
MarkingFiles = (WasX$ = "M") : _
CALL AskItems ("DMV",WasX$,ZTrue,"file",ZMarkedFiles$) : _ ' KG091001
IF ZWasQ = 0 THEN _
GOTO 58183
IF WasX$ = "*" THEN IF ZPersonalDnld THEN _
GOTO 58193
58183 IF ZJumpSearching THEN _
PrevSearch$ = SearcFor$ : _
SearchFor$ = ZJumpTo$ _
ELSE SearchFor$ = SearchString$ : _
IF NOT ZYes AND CanDnld THEN _
GOSUB 58188 : _
IF WasX$ = "V" AND CanView AND ZLastIndex >= ZAnsIndex THEN _ ' KG091001
ZAnsIndex = ZAnsIndex - 1 : _ ' KG091001
CALL GetArc : _ ' KG091001
ZJumpSupported = ZTrue : _ ' KG091001
ZWasA = UpldIndex : _ ' KG091001
GOSUB 58185 : _ ' KG091001
UpldIndex = ZWasA : _ ' KG091001
GOTO 58180 _ ' KG091001
ELSE IF WasX$ <> "L" AND ZLastIndex >= ZAnsIndex AND NOT MarkingFiles THEN _
CALL SkipLine (1) : _
DnldFlag = 1 : _
ReListAt = UpldIndex : _
EXIT SUB _ ' exit for downloading
ELSE IF UpldIndex = CutoffRec THEN _
GOTO 58184
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
GOTO 58168
58188 IF ProcessedNew OR MarkingFiles OR NOT ZListOnly THEN _
ProcessedNew = ZFalse : _
RETURN
ZUserIn$(0) = ""
WasI = ZAnsIndex ' check whether in dir
WHILE WasI <= ZLastIndex
CALL AraAllCaps (ZUserIn$(),WasI)
ZWasZ$ = ZUserIn$(WasI)
CALL UnMarkItems (ZMarkedFiles$,WasI,ZLastIndex,WasX,ZTrue)
Temp$ = ZUserIn$(WasI)
CALL AllCaps (Temp$) ' KG062401
'print "wasi=";wasi;" temp$=<";temp$;"> Zdef=<";zdefaultxfer$;">"
IsProto = (LEN(Temp$) = 1 AND _
INSTR(ZDefaultXfer$,Temp$) > 0)
ZOK = IsProto
WasJ = LastRec + 1
WasX = INSTR(Temp$,".")
AltTemp$ = ""
IF NOT IsProto THEN _
IF WasX = 0 THEN _
AltTemp$ = Temp$ + "." + ZDefaultExtension$ _
ELSE IF WasX = LEN(Temp$) THEN _
AltTemp$ = LEFT$(Temp$,WasX-1)
'print "58188 b4 while zok=";zok;" wasj=";wasj;" looking for <";temp$;">"
WHILE WasJ > 1 AND NOT ZOK
WasJ = WasJ - 1
GET #2,WasJ
GOSUB 58191
'print "bk 58191 canget=";catget;" ptp<";parttoprint$;">";:input xx$
IF CanGet THEN _
MID$(PartToPrint$,13,1) = " " : _
ZWasY$ = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1) : _ ' KG091001
ZOK = (Temp$ = ZWasY$) : _ ' KG091001
IF NOT ZOK THEN _
IF AltTemp$ <> "" THEN _
ZOK = (AltTemp$ = ZWasY$) ' KG091001
WEND
'print "58188 aft while zok=";zok;" wasj=";wasj;" looking for <";temp$;">":input xxx$
IF ZOK THEN _
GOSUB 58189 : _
IF ZOK OR IsProto THEN _
ZWasY$ = MID$(STR$(WasJ),2) : _ ' KG091001
ZUserIn$(0) = ZUserIn$(0) + _
ZWasY$ + _ ' KG091001
SPACE$(5 - LEN(ZWasY$)) ' KG091001
IF NOT ZOK AND NOT IsProto THEN _
CALL QuickTPut1 (ZWasZ$ + " not found - omitted") : _
FOR WasK = WasI + 1 TO ZLastIndex : _
ZUserIn$(WasK - 1) = ZUserIn$(WasK) : _
NEXT : _
ZLastIndex = ZLastIndex - 1 : _
WasI = WasI - 1
WasI = WasI + 1
WEND
ZWasQ = ZLastIndex
'print "end 58188 zlastindex=";zlastindex;" zok=";zok
RETURN
58196 CALL QuickTPut (ZEmphasizeOff$,0)
ZOutTxt$ = Temp$ + "L)ist,A)bort," + _
LEFT$("*)dnld new,",-11*ZPersonalDnld) + _
"M)ark" + LEFT$(",D)nld",-6*CanDnld) + _
LEFT$(",V)iew",-6*CanView) + ZPressEnterExpert$
ZTurboKey = -ZTurboKeyUser
CALL PopCmdStack
WasX$ = ZUserIn$(ZAnsIndex)
CALL AllCaps (WasX$)
IF WasX$ = "A" THEN ZRet = ZTrue
IF ZWasQ = 0 OR ZRet OR ZSubParm < 0 THEN _
GOTO 58198
IF WasX$ = "L" THEN _
ZActiveFMSDir$ = OrigDir$ : _
GOSUB 58185 : _
AtEndList = ZFalse : _
GOTO 58168 ' KG091001
ZYes = ZFalse
GOTO 58181
------------------------[ KG082201]-------------------------
Enhancement: Lets the SysOp upload to a security level.
Change RBBSSUB2.BAS as follows:
2032 RcvrRecNum = 0
IF MsgTo$ <> "ALL" THEN _
IF (LEFT$(MsgTo$,4) <> "ALL " AND ZStartHash = 1) THEN _
CALL CheckInt (MsgTo$) : _ ' KG082201
IF ZTestedIntValue = 0 OR NOT ZSysOp THEN _ ' KG082201
ZWasDF = INSTR(MsgTo$+" @"," @") : _
TempHashValue$ = LEFT$(MsgTo$,ZWasDF-1) : _
CALL WhoCheck (TempHashValue$,Found,RcvrRecNum) : _
IF NOT Found THEN _
ZLastIndex = 0 : _
RcvrRecNum = 0 : _
IF NOT ZReply THEN _
ZOutTxt$ = "Send anyway (Y,[N])" : _
ZTurboKey = -ZTurboKeyUser : _
ZLastIndex = 0 : _
GOSUB 2034 : _
IF NOT ZYes THEN _
GOTO 2021
IF MsgTo$ = Temp$ THEN _
ZOutTxt$ = "Really send this to YOURSELF (Y,[N])" : _
ZLastIndex = 0 : _
GOSUB 2034 : _
IF NOT ZYes THEN _
MsgTo$ = ""
CALL OpenWorkA (ZNodeWorkFile$)
CALL PrintWorkA (MsgTo$ + "," + STR$(RcvrRecNum))
CLOSE 2
ZNumHeaders = ZNumHeaders + 1
IF EnableCC AND (NOT ZReply) AND MsgTo$ <> "ALL" AND _
MsgTo$ <> "" AND LEFT$(MsgTo$,4) <> "ALL " AND _
(NOT ZSysopComment) AND (NOT ZSysopMsg) THEN _
ZOutTxt$ = "Carbon copy to another (Y,[N])" : _
CALL PopCmdStack : _
IF ZYes THEN _
GOTO 2021
Change RBBSSUB3.BAS as follows:
20717 CALL FindItX (ZNodeWorkFile$,7)
ZUserIn$ = Desc$
WasX$ = DATE$
ZWasZ$ = LEFT$(WasX$,6) + _
RIGHT$(WasX$,2)
ZWasEN$ = ZPersonalDir$
NumPersonals = 0
IF NOT ZOK THEN _
GOTO 20718
UserFileIndexSave = ZUserFileIndex
UserRecordHold$ = ZUserRecord$
WHILE NOT EOF(7)
CALL ReadParmsX (7,ZWorkAra$(),2,1)
IF LEFT$(ZWorkAra$(1),4) <> "ALL " AND ZWorkAra$(1) <> "ALL" THEN _
NumPersonals = NumPersonals + 1 : _
UCat$ = ZWorkAra$(1) : _
GOSUB 20737 : _ ' KG082201
GOSUB 20728 : _
RcvrRecNum = VAL (ZWorkAra$(2)) : _
CALL SetUserFlag (RcvrRecNum,4096,"file")
WEND
CLOSE 7
IF NumPersonals > 0 THEN _
ZUserFileIndex = UserFileIndexSave : _
LSET ZUserRecord$ = UserRecordHold$ : _
GOTO 20723
20736 IF NOT ZOK THEN _
ZBytesInFile# = 0.0_
ELSE ZBytesInFile# = LOF(2)
IF ZBytesInFile# < 2.0 THEN _
EXIT SUB
RETURN ' KG082201
20737 CALL CheckInt (UCat$) ' KG082201
IF ZTestedIntValue > 0 THEN _ ' KG082201
UCat$ = " " + UCat$ ' KG082201
RETURN ' KG082201
END SUB
------------------------[ KG082101]-------------------------
Problem: Possible for caller to regain banked time. Also, the
session limit specified in a subboard config may fail to get
applied.
Solution: Change RBBSSUB2.BAS as follows:
120 ' $SUBTITLE: 'EditDef - sub to edit config parameters'
' $PAGE
'
' NAME -- EditDef
'
' INPUTS -- PARAMETER MEANING
'
' OUTPUTS -- OUTPUT STRING
'
' PURPOSE -- Interpretes and adjusts stored configuration parameters
'
SUB EditDef STATIC
ZMinsPerSessionDef = ZMinsPerSession ' KG082101
ZAllOpts$ = ZMainCmds$ + _
ZFileCmd$ + _
ZUtilCmds$ + _
ZLibCmds$ + _
ZGlobalCmnds$ + _
ZSysopCmds$
.
.
.
5503 IF SignTime = 1 THEN _
ZOutTxt$ = "Withdraw" _
ELSE ZOutTxt$ = "Deposit"
Temp$ = ZOutTxt$ + " how many mins"
CALL ChangeInt (ZFalse,Temp$,Temp,0,Maxtime)
IF ZWasQ = 0 OR ZTestedIntValue = 0 THEN _
GOTO 5501
ZTestedIntValue = SignTime * ZTestedIntValue
CALL ChkAddedTime (ZTestedIntValue)
IF ZTestedIntValue = 0 THEN _
GOTO 5501
ZSecsPerSession! = ZSecsPerSession! + (ZTestedIntValue * 60)
IF ZMaxPerDay = 0 THEN _ ' KG082101
ZTimeCredits! = ZTimeCredits! + ZTestedIntValue * 60 ' KG082101
ZElapsedTime = ZElapsedTime - ZTestedIntValue
ZGlobalBankTime = ZGlobalBankTime - ZTestedIntValue
GOSUB 5507
GOTO 5501
------------------------[ KG070401]-------------------------
Problem: The UTIL.HLP refers to "B)aud change" when this has
become "B)ank time".
Solution: a replacement UTIL.HLP is provided.
------------------------[ RH070402]-------------------------
Problem: When viewing a callers file and timeout at the More prompt,
get untrapped error.
Solution: Change RBBSSUB3.BAS as follows:
57100 IF INSTR(ZOutTxt$,"LOGON DENIED") OR INSTR(ZOutTxt$,"Lvl ")THEN _
IF NOT ZSysOp THEN _
RETURN
IF ZJumpSearching THEN _
ZWasDF$ = ZOutTxt$ : _
CALL AllCaps (ZWasDF$) : _
IF INSTR(ZWasDF$,ZJumpTo$) = 0 THEN _
RETURN _
ELSE CALL CheckColor (ZOutTxt$,ZJumpTo$,"") : _
ZJumpSearching = ZFalse
ZSubParm = 5
CALL TPut
WasX = 1
CALL AskMore ("",ZTrue,ZTrue,WasX,ZFalse)
IF ZSubParm = -1 THEN _ ' RH070402
GOTO 57102 _ ' RH070402
ELSE IF ZNo THEN _ ' RH070402
GOTO 57101 ' RH070402
RETURN
------------------------[ RH070401]-------------------------
Problem: When SysOp views callers file on another node, thereafter
his own logging to caller's file goes to the other node's callers.
Solution: Change RBBSSUB3.BAS as follows:
57102 ZJumpSupported = ZFalse
IF OrigCal$ <> ZCallersFile$ THEN _ ' RH070401
ZCallersFile$ = OrigCal$ : _
CALL SetCall
END SUB
------------------------[ BH070401]-------------------------
Problem: "[CBAUD]" can include a leading blank, which causes it not
to work with some external protocols, like HSLink.
Solution: Change RBBSSUB2.BAS as follows:
(line 1654)
.
.
.
SUB SetBaud STATIC
IF ZCBaud$ = "" THEN _
ZCBaud$ = MID$(ZBaudRates$,(-5 * ZBPS),5) : _ ' BH070401
CALL Trim (ZCBaud$) ' BH070401
Temp! = VAL(ZCBaud$)
.
.
.
------------------------[ KG062401]-------------------------
Problem: When say to download marked files in a personal directory,
says unable to find "M".
Solution: Change RBBSSUB3.BAS as follows:
58181 MarkingFiles = ZFalse
IF (WasX$ = "D" OR WasX$ = "M") THEN IF CanDnld THEN _
MarkingFiles = (WasX$ = "M") : _
CALL AskItems ("DM",WasX$,ZTrue,"file",ZMarkedFiles$) : _ ' KG062401
IF ZWasQ = 0 THEN _
GOTO 58183
IF WasX$ = "*" THEN IF ZPersonalDnld THEN _
GOTO 58193
58188 IF ProcessedNew OR MarkingFiles OR NOT ZListOnly THEN _
ProcessedNew = ZFalse : _
RETURN
ZUserIn$(0) = ""
WasI = ZAnsIndex ' check whether in dir
WHILE WasI <= ZLastIndex
CALL AraAllCaps (ZUserIn$(),WasI)
ZWasZ$ = ZUserIn$(WasI)
CALL UnMarkItems (ZMarkedFiles$,WasI,ZLastIndex,WasX,ZTrue)
Temp$ = ZUserIn$(WasI)
CALL AllCaps (Temp$) ' KG062401
'print "wasi=";wasi;" temp$=<";temp$;"> Zdef=<";zdefaultxfer$;">"
IsProto = (LEN(Temp$) = 1 AND _
INSTR(ZDefaultXfer$,Temp$) > 0)
ZOK = IsProto
WasJ = LastRec + 1
WasX = INSTR(Temp$,".")
AltTemp$ = ""
IF NOT IsProto THEN _
IF WasX = 0 THEN _
AltTemp$ = Temp$ + "." + ZDefaultExtension$ _
ELSE IF WasX = LEN(Temp$) THEN _
AltTemp$ = LEFT$(Temp$,WasX-1)
'print "58188 b4 while zok=";zok;" wasj=";wasj;" looking for <";temp$;">"
WHILE WasJ > 1 AND NOT ZOK
WasJ = WasJ - 1
GET #2,WasJ
GOSUB 58191
'print "bk 58191 canget=";catget;" ptp<";parttoprint$;">";:input xx$
IF CanGet THEN _
MID$(PartToPrint$,13,1) = " " : _
WasX$ = LEFT$(PartToPrint$,INSTR(PartToPrint$," ") - 1) : _
ZOK = (Temp$ = WasX$) : _
IF NOT ZOK THEN _
IF AltTemp$ <> "" THEN _
ZOK = (AltTemp$ = WasX$)
WEND
'print "58188 aft while zok=";zok;" wasj=";wasj;" looking for <";temp$;">":input xxx$
IF ZOK THEN _
GOSUB 58189 : _
IF ZOK OR IsProto THEN _
WasX$ = MID$(STR$(WasJ),2) : _
ZUserIn$(0) = ZUserIn$(0) + _
WasX$ + _
SPACE$(5 - LEN(WasX$))
IF NOT ZOK AND NOT IsProto THEN _
CALL QuickTPut1 (ZWasZ$ + " not found - omitted") : _
FOR WasK = WasI + 1 TO ZLastIndex : _
ZUserIn$(WasK - 1) = ZUserIn$(WasK) : _
NEXT : _
ZLastIndex = ZLastIndex - 1 : _
WasI = WasI - 1
WasI = WasI + 1
WEND
ZWasQ = ZLastIndex
'print "end 58188 zlastindex=";zlastindex;" zok=";zok
RETURN
------------------------[ KG062301]-------------------------
Problem: When you stack message numbers, Read reads exactly those
messages. But S)can and T)opic do not confine themselves to the
numbers. Instead, "s 5" acts like "s 5+".
Solution: Change RBBS-PC.BAS as follows:
4380 WasA1$ = "Msg #" + _
STR$(LowMsgNumber) + _
"-" + _
MID$(STR$(ZMsgPtr(ActiveMessages,2)),2) + _
" (H)lp,S)ince,L)ast" + _
LEFT$(",G)lobal",8*(ZLinkedConf$ ="" OR ZGlobalRead)+8)
CALL SkipLine (-QuickScanMsgs) ' KG062301
IF ZGlobalRead THEN _
CALL QuickTPut1 ("Reading globally")
IF AddressedToUser OR ToRequested OR FromRequested THEN _
ZWasY$ = LEFT$("TO",-2*(ToRequested OR AddressedToUser)) + _
LEFT$("/",-AddressedToUser) + _
LEFT$("FROM",-4*(FromRequested OR AddressedToUser)) : _
CALL QuickTPut1 ("Include only msgs "+ZWasY$+" you. Read what msgs (? for help)") _
ELSE WasA1$ = WasA1$ + ",T)o,F)rom,M)" : _
IF ReadMsgs AND ZMarkedMsgs$ <> "" THEN _
WasA1$ = WasA1$ + "arked" _
ELSE WasA1$ = WasA1$ + "ine"
IF SearchString$ = "" THEN _
WasA1$ = WasA1$ + _
", text" _
ELSE CALL QuickTPut1 ("Include only msgs with text " + SearchString$ + ". Read what msgs (? for help)")
4418 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) : _
SearchCt = 0 : _
CALL AllCaps (SearchString$) : _
CALL Remove (SearchString$,CHR$(34) + CHR$(39)) : _
SearchHeader$ = SearchString$ : _
SubInHeader$ = SearchHeader$ : _
GOTO 4370
CALL SkipLine (-ReadMsgs) ' KG062301
4630 CALL AskMore (",M)ark, #(s) to read",ZTrue,ZTrue,WasXX,ZFalse)
IF ZWasQ = 0 OR ZYes THEN _
GOTO 4631
IF ZNo THEN _
RETURN
IF ZSubParm = -1 THEN _
RETURN 10595
IF ZRet THEN _
RETURN
ZWasZ$ = ZUserIn$(1)
CALL AllCaps (ZWasZ$)
IF ZWasZ$ = "M" THEN _
ZLastIndex = ZWasQ : _
ZAnsIndex = 1 : _
CALL AskItems ("M",ZWasZ$,ZTrue,"msg",ZMarkedMsgs$)
IF VAL(ZWasZ$) > 0 THEN _
FOR WasI = ZWasQ TO 1 STEP -1 : _
ZUserIn$(WasI + 1) = ZUserIn$(WasI) : _
NEXT : _
ZUserIn$(1) = MID$(ZAllOpts$,INSTR(ZOrigCommands$,"R"),1) : _
ZLastIndex = ZWasQ + 1 : _
ZAnsIndex = 1 : _
RETURN 1235 ' KG062301
4631 IF NOT Forward AND NOT Reverse THEN _ ' KG062301
GOTO 4370 ' KG062301
CALL CheckCarrier ' KG062301
IF ZSubParm THEN _
RETURN 10595
IF ZRet THEN _
RETURN