More A35 work

This commit is contained in:
mysticbbs 2013-05-25 13:56:32 -04:00
parent 80b7d40a77
commit 79d94e90c7
14 changed files with 264 additions and 236 deletions

View File

@ -1276,13 +1276,12 @@ Begin
If BufPos MOD BaudEmulator = 0 Then WaitMS(6); If BufPos MOD BaudEmulator = 0 Then WaitMS(6);
End; End;
(* If AllowAbort And (BufPos MOD 128 = 0) And Not Session.LocalMode Then
If AllowAbort And (BufPos MOD 128 = 0) Then If Session.Client.DataWaiting And (InKey(0) = #32) Then Begin
If InKey(0) = #32 Then Begin
AnsiColor(7); AnsiColor(7);
Break; Break;
End; End;
(*
If AllowAbort And (InKey(0) = #32) Then Begin If AllowAbort And (InKey(0) = #32) Then Begin
AnsiColor(7); AnsiColor(7);
Break; Break;
@ -1440,7 +1439,7 @@ Begin
Handles[0] := Input.ConIn; Handles[0] := Input.ConIn;
If Not TBBSCore(Core).LocalMode Then Begin If Not TBBSCore(Core).LocalMode Then Begin
If TBBSCore(Core).Client.FInBufPos <= TBBSCore(Core).Client.FInBufEnd Then If TBBSCore(Core).Client.FInBufPos < TBBSCore(Core).Client.FInBufEnd Then
InType := 2 InType := 2
Else Begin Else Begin
Handles[1] := SocketEvent; Handles[1] := SocketEvent;
@ -1916,7 +1915,7 @@ Var
End; End;
Begin Begin
PurgeInputBuffer; // PurgeInputBuffer;
If UseInLimit Then Begin If UseInLimit Then Begin
Field := InLimit; Field := InLimit;

View File

@ -350,6 +350,7 @@ Var
Begin Begin
If Not Config.MCompress Then Begin If Not Config.MCompress Then Begin
Result := GetBaseByNum(Num, TempBase); Result := GetBaseByNum(Num, TempBase);
Exit; Exit;
End; End;
@ -826,31 +827,13 @@ Var
End; End;
End; End;
Close (MBaseFile);
Session.io.OutFull (Session.GetPrompt(430)); Session.io.OutFull (Session.GetPrompt(430));
End; End;
Procedure ToggleBase (A : Word); Procedure ToggleCurrent (Forced: LongInt);
Var
B : Word;
Begin Begin
If A = 0 Then Exit;
B := 0;
FileMode := 66;
Reset (MBaseFile);
Repeat
{$I-} Read (MBaseFile, MBase); {$I+}
If IoResult <> 0 Then Exit;
If Session.User.Access(MBase.ListACS) Then
Inc(B);
If A = B Then Break;
Until False;
GetMessageScan; GetMessageScan;
Session.io.PromptInfo[1] := MBase.Name; Session.io.PromptInfo[1] := MBase.Name;
@ -858,32 +841,74 @@ Var
If QWK Then Begin If QWK Then Begin
Case MScan.QwkScan of Case MScan.QwkScan of
0 : Begin 0 : Begin
If Forced <> -1 Then
MScan.QwkScan := Forced
Else Begin
MScan.QwkScan := 1; MScan.QwkScan := 1;
Session.io.OutFullLn (Session.GetPrompt(97)); Session.io.OutFullLn (Session.GetPrompt(97));
End; End;
End;
1 : Begin 1 : Begin
If Forced <> -1 Then
MScan.QwkScan := Forced
Else Begin
MScan.QwkScan := 0; MScan.QwkScan := 0;
Session.io.OutFullLn (Session.GetPrompt(96)); Session.io.OutFullLn (Session.GetPrompt(96));
End; End;
2 : Session.io.OutFullLn (Session.GetPrompt(302)); End;
2 : If Forced <> -1 Then
Session.io.OutFullLn (Session.GetPrompt(302));
End; End;
End Else Begin End Else Begin
Case MScan.NewScan of Case MScan.NewScan of
0 : Begin 0 : Begin
If Forced <> -1 Then
MScan.NewScan := Forced
Else Begin
MScan.NewScan := 1; MScan.NewScan := 1;
Session.io.OutFullLn (Session.GetPrompt(99)); Session.io.OutFullLn (Session.GetPrompt(99));
End; End;
End;
1 : Begin 1 : Begin
If Forced <> -1 Then
MScan.NewScan := Forced
Else Begin
MScan.NewScan := 0; MScan.NewScan := 0;
Session.io.OutFullLn (Session.GetPrompt(98)); Session.io.OutFullLn (Session.GetPrompt(98));
End; End;
2 : Session.io.OutFullLn (Session.GetPrompt(302)); End;
2 : If Forced <> -1 Then
Session.io.OutFullLn (Session.GetPrompt(302));
End; End;
End; End;
SetMessageScan; SetMessageScan;
End; End;
Procedure ToggleAll (Value: Byte);
Begin
Reset (MBaseFile);
While Not Eof(MBaseFile) Do Begin
Read (MBaseFile, MBase);
If Session.User.Access(MBase.ListACS) Then
ToggleCurrent(Value);
End;
Close (MBaseFile);
End;
Procedure ToggleByNumber (BaseNumber: LongInt);
Begin
If (BaseNumber > 0) And GetBaseCompressed(BaseNumber, MBase) Then
ToggleCurrent(-1);
End;
Var Var
Old : RecMessageBase; Old : RecMessageBase;
Temp : String[40]; Temp : String[40];
@ -893,6 +918,7 @@ Var
Num2 : String[40]; Num2 : String[40];
Begin Begin
Old := MBase; Old := MBase;
FileMode := 66;
Session.User.IgnoreGroup := Pos('/ALLGROUP', strUpper(Data)) > 0; Session.User.IgnoreGroup := Pos('/ALLGROUP', strUpper(Data)) > 0;
@ -900,8 +926,11 @@ Begin
If Total = 0 Then Begin If Total = 0 Then Begin
Session.io.OutFullLn (Session.GetPrompt(94)); Session.io.OutFullLn (Session.GetPrompt(94));
MBase := Old; MBase := Old;
Session.User.IgnoreGroup := False; Session.User.IgnoreGroup := False;
Exit; Exit;
End; End;
@ -912,8 +941,14 @@ Begin
If (Temp = '') or (Temp = 'Q') Then Break; If (Temp = '') or (Temp = 'Q') Then Break;
If Temp = 'A' Then
ToggleAll(1)
Else
If Temp = 'D' Then
ToggleAll(0)
Else
If Temp = '?' Then If Temp = '?' Then
List_Bases // do nothing
Else Begin Else Begin
Num1 := ''; Num1 := '';
Num2 := ''; Num2 := '';
@ -924,9 +959,9 @@ Begin
If Temp[Count1] = ',' Then Begin If Temp[Count1] = ',' Then Begin
If Num2 <> '' Then Begin If Num2 <> '' Then Begin
For Count2 := strS2I(Num2) to strS2I(Num1) Do For Count2 := strS2I(Num2) to strS2I(Num1) Do
ToggleBase(Count2); ToggleByNumber(Count2);
End Else End Else
ToggleBase(strS2I(Num1)); ToggleByNumber(strS2I(Num1));
Num1 := ''; Num1 := '';
Num2 := ''; Num2 := '';
@ -940,16 +975,14 @@ Begin
If Num2 <> '' Then Begin If Num2 <> '' Then Begin
For Count1 := strS2I(Num2) to strS2I(Num1) Do For Count1 := strS2I(Num2) to strS2I(Num1) Do
ToggleBase(Count1); ToggleByNumber(Count1);
End Else End Else
ToggleBase(strS2I(Num1)); ToggleByNumber(strS2I(Num1));
End;
List_Bases; List_Bases;
End;
Until False; Until False;
Close (MBaseFile);
MBase := Old; MBase := Old;
Session.User.IgnoreGroup := False; Session.User.IgnoreGroup := False;

View File

@ -1000,7 +1000,7 @@ Begin
TmpDt.Hour := strS2I(Copy(SqInfo^.StrTime,1,2)); TmpDt.Hour := strS2I(Copy(SqInfo^.StrTime,1,2));
TmpDt.Min := strS2I(Copy(SqInfo^.StrTime, 4,2)); TmpDt.Min := strS2I(Copy(SqInfo^.StrTime, 4,2));
TmpDt.Sec := 0; TmpDt.Sec := 0;
TmpStr := FormattedDate(TmpDT, 'DD NNN YY ') + Copy(SqInfo^.StrTime, 1, 5) + ':00'; TmpStr := FormatDate(TmpDT, 'DD NNN YY ') + Copy(SqInfo^.StrTime, 1, 5) + ':00';
PackTime (TmpDT, TmpDate); PackTime (TmpDT, TmpDate);

View File

@ -1309,7 +1309,6 @@ Begin
Session.io.OutFile ('prelogon', True, 0); Session.io.OutFile ('prelogon', True, 0);
If UserNum = -1 Then Begin If UserNum = -1 Then Begin
Count := 1; Count := 1;
Repeat Repeat
@ -1330,11 +1329,13 @@ Begin
CreateNewUser(Str); CreateNewUser(Str);
UserLogon2; UserLogon2;
UserLogon3; UserLogon3;
Exit; Exit;
End; End;
Inc (Count); Inc (Count);
End Else Break; End Else
Break;
Until False; Until False;
A := UserNum; {If user would drop carrier here itd save their info } A := UserNum; {If user would drop carrier here itd save their info }
@ -1351,9 +1352,10 @@ Begin
End; End;
UserNum := A; UserNum := A;
ThisUser := TempUser;
End; End;
ThisUser := TempUser; // ThisUser := TempUser;
End; End;
Session.SystemLog ('User: ' + ThisUser.Handle + ' logged in'); Session.SystemLog ('User: ' + ThisUser.Handle + ' logged in');

View File

@ -197,7 +197,8 @@
; &1 = base number &2 = base name &3 = scan base? (Yes or No) ; &1 = base number &2 = base name &3 = scan base? (Yes or No)
093 |07|$R04|&1|15|$R03|&3 |07|$R29|&2 093 |07|$R04|&1|15|$R03|&3 |07|$R29|&2
094 |CR|12There are no available message bases! 094 |CR|12There are no available message bases!
095 |09Selection |01[|10##|01]|09, |01[|10##|01-|10##|01,|10##|01]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: |XX ; Message base new and qwk scan toggle prompt:
095 Toggle: |09[|11#-#,#|09], Select [|11A|09]ll, [|11D|09]eselect All, [|11?|09/|11List|09]: |XX
; For strings 096 - 099: &1 = message base name ; For strings 096 - 099: &1 = message base name
096 |CR |11|&1 will NOT be scanned in QWK packets!|CR 096 |CR |11|&1 will NOT be scanned in QWK packets!|CR
097 |CR |11|&1 will be scanned in QWK packets!|CR 097 |CR |11|&1 will be scanned in QWK packets!|CR

View File

@ -316,7 +316,9 @@ Begin
Console.SetWindow (1, 1, 80, 25, True); Console.SetWindow (1, 1, 80, 25, True);
FocusCurrent := FocusMax; FocusCurrent := FocusMax;
DrawStatusScreen; DrawStatusScreen;
SwitchFocus; SwitchFocus;
End; End;

View File

@ -10,7 +10,7 @@ Uses
SysUtils, SysUtils,
m_Strings, m_Strings,
m_FileIO, m_FileIO,
m_Socket_Class, m_io_Sockets,
m_DateTime, m_DateTime,
MIS_Server, MIS_Server,
MIS_NodeData, MIS_NodeData,
@ -19,7 +19,7 @@ Uses
BBS_MsgBase_JAM, BBS_MsgBase_JAM,
BBS_MsgBase_Squish; BBS_MsgBase_Squish;
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TSocketClass) : TServerClient; Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TIOSocket) : TServerClient;
Type Type
THTTPServer = Class(TServerClient) THTTPServer = Class(TServerClient)
@ -30,7 +30,7 @@ Type
Cmd : String; Cmd : String;
Data : String; Data : String;
Constructor Create (Owner: TServerManager; CliSock: TSocketClass); Constructor Create (Owner: TServerManager; CliSock: TIOSocket);
Procedure Execute; Override; Procedure Execute; Override;
Destructor Destroy; Override; Destructor Destroy; Override;
@ -39,12 +39,12 @@ Type
Implementation Implementation
Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TSocketClass) : TServerClient; Function CreateHTTP (Owner: TServerManager; Config: RecConfig; ND: TNodeData; CliSock: TIOSocket) : TServerClient;
Begin Begin
Result := THTTPServer.Create(Owner, CliSock); Result := THTTPServer.Create(Owner, CliSock);
End; End;
Constructor THTTPServer.Create (Owner: TServerManager; CliSock: TSocketClass); Constructor THTTPServer.Create (Owner: TServerManager; CliSock: TIOSocket);
Begin Begin
Inherited Create(Owner, CliSock); Inherited Create(Owner, CliSock);
@ -83,6 +83,7 @@ Begin
If Cmd = 'QUIT' Then Begin If Cmd = 'QUIT' Then Begin
GotQuit := True; GotQuit := True;
Break; Break;
End Else End Else
Client.WriteLine(re_UnknownCommand); Client.WriteLine(re_UnknownCommand);

View File

@ -17,7 +17,6 @@ Function ToUnixDate (DosDate: LongInt): LongInt;
Function DTToUnixDate (DT: DateTime): LongInt; Function DTToUnixDate (DT: DateTime): LongInt;
Procedure UnixToDT (SecsPast: LongInt; Var Dt: DateTime); Procedure UnixToDT (SecsPast: LongInt; Var Dt: DateTime);
Procedure Str2Az (Str: String; MaxLen: Byte; Var AZStr); {Convert string to asciiz} Procedure Str2Az (Str: String; MaxLen: Byte; Var AZStr); {Convert string to asciiz}
Function FormattedDate (DT: DateTime; Mask: String): String;
Function LoadFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word; Function LoadFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
Function ExtendFile (FN: String; ToSize: LongInt): Word; Function ExtendFile (FN: String; ToSize: LongInt): Word;
Function SaveFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word; Function SaveFilePos (FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
@ -119,69 +118,6 @@ Begin
End; End;
End; End;
Function FormattedDate (DT: DateTime; Mask: String) : String;
Var
DStr : String[2];
MStr : String[2];
MNStr : String[3];
YStr : String[4];
HourStr : String[2];
MinStr : String[2];
SecStr : String[2];
TmpStr : String;
CurrPos : Word;
i : Word;
Begin
TmpStr := Mask;
Mask := strUpper(Mask);
DStr := Copy(strPadL(strI2S(Dt.Day), 2, '0'), 1, 2);
MStr := Copy(strPadL(strI2S(Dt.Month), 2, '0'), 1, 2);
YStr := Copy(strPadL(strI2S(Dt.Year), 4, '0'), 1, 4);
HourStr := Copy(strPadL(strI2S(Dt.Hour), 2, '0'), 1, 2);
MinStr := Copy(strPadL(strI2S(Dt.Min), 2, '0'), 1, 2);
SecStr := Copy(strPadL(strI2S(Dt.Sec), 2, '0'), 1, 2);
MNStr := MonthString[Dt.Month];
If (Pos('YYYY', Mask) = 0) Then YStr := Copy(YStr, 3, 2);
CurrPos := Pos('DD', Mask);
If CurrPos > 0 Then
For i := 1 to Length(DStr) Do
TmpStr[CurrPos + i - 1] := DStr[i];
CurrPos := Pos('YY', Mask);
If CurrPos > 0 Then
For i := 1 to Length(YStr) Do
TmpStr[CurrPos + i - 1] := YStr[i];
CurrPos := Pos('MM', Mask);
If CurrPos > 0 Then
For i := 1 to Length(MStr) Do
TmpStr[CurrPos + i - 1] := MStr[i];
CurrPos := Pos('HH', Mask);
If CurrPos > 0 Then
For i := 1 to Length(HourStr) Do
TmpStr[CurrPos + i - 1] := HourStr[i];
CurrPos := Pos('SS', Mask);
If CurrPos > 0 Then
For i := 1 to Length(SecStr) Do
TmpStr[CurrPos + i - 1] := SecStr[i];
CurrPos := Pos('II', Mask);
If CurrPos > 0 Then
For i := 1 to Length(MinStr) Do
TmpStr[CurrPos + i - 1] := MinStr[i];
CurrPos := Pos('NNN', Mask);
If CurrPos > 0 Then
For i := 1 to Length(MNStr) Do
TmpStr[CurrPos + i - 1] := MNStr[i];
FormattedDate := TmpStr;
End;
Function LoadFilePos(FN: String; Var Rec; FS: Word; FPos: LongInt): Word; Function LoadFilePos(FN: String; Var Rec; FS: Word; FPos: LongInt): Word;
Var Var
F: File; F: File;

View File

@ -64,55 +64,63 @@ Procedure InitProcedures (O: Pointer; S: Pointer; Var CV: VarDataRec; Var X: Wor
Procedure AddProc ({$IFDEF MPLPARSER} I: String; {$ENDIF} P: String; T: TIdentTypes); Procedure AddProc ({$IFDEF MPLPARSER} I: String; {$ENDIF} P: String; T: TIdentTypes);
Begin Begin
Inc(X); Inc (X);
New(CV[X]); New (CV[X]);
With CV[X]^ Do Begin With CV[X]^ Do Begin
VarID := IW; VarID := IW;
Inc(IW);
vType := T; vType := T;
Move(P[1], Params, Ord(P[0])); ArrPos := 0;
NumParams := Ord(p[0]);
Move (P[1], Params, Ord(P[0]));
NumParams := Ord(P[0]);
Inc(IW);
{$IFNDEF MPLPARSER} {$IFNDEF MPLPARSER}
VarSize := 0; VarSize := 0;
DataSize := 0; DataSize := 0;
Data := NIL; Data := NIL;
ProcPos := 0; ProcPos := 0;
Kill := True; Kill := True;
FillChar (pID, SizeOf(pID), 0); FillChar (pID, SizeOf(pID), 0);
{$ELSE} {$ELSE}
Ident := I; Ident := I;
InProc := False; InProc := False;
Proc := True; Proc := True;
{$ENDIF} {$ENDIF}
ArrPos := 0;
End; End;
End; End;
Procedure AddStr ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word); Procedure AddStr ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word);
Begin Begin
Inc(X); Inc (X);
New(CV[X]); New (CV[X]);
With cV[x]^ Do Begin With CV[X]^ Do Begin
VarID := IW; VarID := IW;
Inc(IW);
vType := T; vType := T;
NumParams := 0; NumParams := 0;
ArrPos := 0;
Inc(IW);
{$IFNDEF MPLPARSER} {$IFNDEF MPLPARSER}
ProcPos := 0;
Kill := True;
VarSize := SI + 1; VarSize := SI + 1;
DataSize := VarSize; DataSize := VarSize;
GetMem (Data, DataSize); GetMem (Data, DataSize);
FillChar (Data^, DataSize, 0); FillChar (Data^, DataSize, 0);
FillChar (pID, SizeOf(pID), 0); //cant we just assign it to 0 here? FillChar (pID, SizeOf(pID), 0); //cant we just assign it to 0 here?
ProcPos := 0;
Kill := True;
{$ELSE} {$ELSE}
Ident := I; Ident := I;
InProc := False; InProc := False;
Proc := False; Proc := False;
{$ENDIF} {$ENDIF}
ArrPos := 0;
End; End;
End; End;
@ -123,27 +131,31 @@ Procedure InitProcedures (O: Pointer; S: Pointer; Var CV: VarDataRec; Var X: Wor
Procedure AddPointer ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word; PD: Pointer); Procedure AddPointer ({$IFDEF MPLPARSER} I: String; {$ENDIF} T: TIdentTypes; SI: Word; PD: Pointer);
Begin Begin
Inc(x); Inc (X);
New(cV[x]); New (CV[X]);
With cV[x]^ Do Begin With CV[X]^ Do Begin
VarID := IW; VarID := IW;
Inc(IW); vType := T;
vType := t;
NumParams := 0; NumParams := 0;
ArrPos := 0;
Inc (IW);
{$IFNDEF MPLPARSER} {$IFNDEF MPLPARSER}
If T = iString Then VarSize := SI + 1 Else VarSize := SI; If T = iString Then VarSize := SI + 1 Else VarSize := SI;
DataSize := VarSize; DataSize := VarSize;
Data := PD; Data := PD;
FillChar (pID, SizeOf(pID), 0);
ProcPos := 0; ProcPos := 0;
Kill := False; Kill := False;
FillChar (pID, SizeOf(pID), 0);
{$ELSE} {$ELSE}
Ident := I; Ident := I;
InProc := False; InProc := False;
Proc := False; Proc := False;
{$ENDIF} {$ENDIF}
ArrPos := 0;
End; End;
End; End;

View File

@ -33,6 +33,7 @@ Uses
Var Var
SavedX : Byte; SavedX : Byte;
SavedY : Byte;
Console : TOutput; Console : TOutput;
WasError : Boolean; WasError : Boolean;
@ -72,15 +73,17 @@ Begin
Else Begin Else Begin
If Pos('-ALL', strUpper(ParamStr(1))) > 0 Then Begin If Pos('-ALL', strUpper(ParamStr(1))) > 0 Then Begin
FindFirst ('*.mps', AnyFile - Directory - VolumeID, Dir); FindFirst ('*.mps', AnyFile - Directory - VolumeID, Dir);
While DosError = 0 Do Begin While DosError = 0 Do Begin
Parser := TParserEngine.Create(Status); Parser := TParserEngine.Create(Status);
If Not Parser.Compile(Dir.Name) Then Begin
Parser.Compile(Dir.Name);
Parser.Free; Parser.Free;
Break;
End;
FindNext(Dir); FindNext(Dir);
Parser.Free;
End; End;
FindClose(Dir); FindClose(Dir);
End Else Begin End Else Begin
Parser := TParserEngine.Create(Status); Parser := TParserEngine.Create(Status);

View File

@ -236,7 +236,7 @@ Var
MH.OrigNet := MsgBase^.GetOrigAddr.Net; MH.OrigNet := MsgBase^.GetOrigAddr.Net;
MH.DestNet := EchoNode.Address.Net; MH.DestNet := EchoNode.Address.Net;
TempStr1 := FormattedDate(DT, 'DD NNN YY HH:MM:SS') + #0; TempStr1 := FormatDate(DT, 'DD NNN YY HH:II:SS') + #0;
Move (TempStr1[1], MH.DateTime[0], 20); Move (TempStr1[1], MH.DateTime[0], 20);
If MsgBase^.IsLocal Then MH.Attribute := MH.Attribute OR pktLocal; If MsgBase^.IsLocal Then MH.Attribute := MH.Attribute OR pktLocal;

View File

@ -160,6 +160,7 @@ Var
SortMode : TSortMethod; SortMode : TSortMethod;
Begin Begin
Result := True; Result := True;
FileMode := 66;
Case ListType of Case ListType of
TopCall : ProcessStatus('Top Callers', False); TopCall : ProcessStatus('Top Callers', False);
@ -206,6 +207,7 @@ Begin
If (strUpper(User.Handle) = Str) or (strUpper(User.RealName) = Str) Then Begin If (strUpper(User.Handle) = Str) or (strUpper(User.RealName) = Str) Then Begin
Excluded := True; Excluded := True;
Break; Break;
End; End;
End; End;

View File

@ -33,6 +33,7 @@ Uses
Type Type
PhoneRec = Record PhoneRec = Record
Position : LongInt;
Name : String[26]; Name : String[26];
Address : String[60]; Address : String[60];
User : String[30]; User : String[30];
@ -164,6 +165,7 @@ Begin
Book[Count].StatusBar := INI.ReadString(strI2S(Count), 'statusbar', '1') = '1'; Book[Count].StatusBar := INI.ReadString(strI2S(Count), 'statusbar', '1') = '1';
Book[Count].LastCall := INI.ReadString(strI2S(Count), 'last', ''); Book[Count].LastCall := INI.ReadString(strI2S(Count), 'last', '');
Book[Count].Calls := INI.ReadString(strI2S(Count), 'calls', ''); Book[Count].Calls := INI.ReadString(strI2S(Count), 'calls', '');
Book[Count].Position := Count;
End; End;
INI.Free; INI.Free;
@ -704,18 +706,60 @@ Begin
Screen.PutScreenImage(Image); Screen.PutScreenImage(Image);
End; End;
Procedure TelnetClient (Dial: PhoneRec); Procedure EditEntry (Var Book: PhoneBookRec; Num: SmallInt);
Var
Box : TMenuBox;
Form : TMenuForm;
NewRec : PhoneRec;
Begin
NewRec := Book[Num];
Box := TMenuBox.Create(TOutput(Screen));
Form := TMenuForm.Create(TOutput(Screen));
Procedure DrawStatus; Box.HeadAttr := 1 + 7 * 16;
Box.Header := ' Book Editor ';
Box.Open (17, 8, 63, 16);
Form.HelpSize := 0;
Form.AddStr ('N', ' Name' , 24, 10, 32, 10, 6, 26, 26, @NewRec.Name, '');
Form.AddStr ('A', ' Address', 21, 11, 32, 11, 9, 30, 60, @NewRec.Address, '');
Form.AddStr ('U', ' User Name', 19, 12, 32, 12, 11, 30, 30, @NewRec.User, '');
Form.AddPass ('P', ' Password', 20, 13, 32, 13, 10, 20, 20, @NewRec.Password, '');
Form.AddBol ('S', ' StatusBar', 19, 14, 32, 14, 11, 3, @NewRec.StatusBar, '');
Form.Execute;
If Form.Changed Then
If ShowMsgBox(1, 'Save changes?') Then Begin
Book[Num] := NewRec;
WriteBook(Book);
End;
Form.Free;
Box.Close;
Box.Free;
End;
Procedure TelnetClient (Var Book: PhoneBookRec; Dial: PhoneRec);
Procedure DrawStatus (Toggle: Boolean);
Begin Begin
If Dial.StatusBar Then Begin If Dial.StatusBar Then Begin
Screen.SetWindow (1, 1, 80, 24, False); Screen.SetWindow (1, 1, 80, 24, False);
Screen.WriteXY (1, 25, Config.StatusColor3, strPadC('ALT/B-Scrollback ALT/L-Send Login ALT/T-Zmodem ALT-H/Hangup ALT-X/Quit', 80, ' ')); Screen.WriteXY (1, 25, Config.StatusColor3, strPadC('ALT/B-Scrollback ALT/L-Send Login ALT/T-Zmodem ALT-E/Edit ALT-X/Quit', 80, ' '));
End Else
If Toggle Then Begin
Screen.SetWindow (1, 1, 80, 25, False);
Screen.WriteXY (1, 25, 7, strRep(' ', 79));
End; End;
End; End;
Const Const
BufferSize = 1024 * 4; BufferSize = 1024 * 4;
Var Var
Client : TIOSocket; Client : TIOSocket;
Res : LongInt; Res : LongInt;
@ -733,13 +777,20 @@ Begin
If Not Client.Connect(StripAddressPort(Dial.Address), GetAddressPort(Dial.Address)) Then If Not Client.Connect(StripAddressPort(Dial.Address), GetAddressPort(Dial.Address)) Then
ShowMsgBox (0, 'Unable to connect') ShowMsgBox (0, 'Unable to connect')
Else Begin Else Begin
Book[Dial.Position].LastCall := DateDos2Str(CurDateDos, 1);
Book[Dial.Position].Calls := strI2S(strS2I(Dial.Calls) + 1);
WriteBook(Book);
Dial := Book[Dial.Position];
Screen.TextAttr := 7; Screen.TextAttr := 7;
Screen.ClearScreen; Screen.ClearScreen;
Done := False; Done := False;
Term := TTermAnsi.Create(TOutput(Screen)); Term := TTermAnsi.Create(TOutput(Screen));
DrawStatus; DrawStatus(False);
Term.SetReplyClient(TIOBase(Client)); Term.SetReplyClient(TIOBase(Client));
@ -748,8 +799,6 @@ Begin
Res := Client.ReadBuf (Buffer, BufferSize); Res := Client.ReadBuf (Buffer, BufferSize);
If Res < 0 Then Begin If Res < 0 Then Begin
ShowMsgBox (0, 'Connection terminated');
Done := True; Done := True;
Break; Break;
@ -785,13 +834,23 @@ Begin
Case Ch of Case Ch of
#00 : Case Keyboard.ReadKey of #00 : Case Keyboard.ReadKey of
#18 : Begin
EditEntry(Book, Dial.Position);
If Dial.StatusBar <> Book[Dial.Position].StatusBar Then Begin
Dial := Book[Dial.Position];
DrawStatus (True);
End Else
Dial := Book[Dial.Position];
End;
#20 : Begin #20 : Begin
Case GetTransferType of Case GetTransferType of
1 : DoZmodemDownload(TIOBase(Client)); 1 : DoZmodemDownload(TIOBase(Client));
2 : DoZmodemUpload(TIOBase(Client)); 2 : DoZmodemUpload(TIOBase(Client));
End; End;
DrawStatus; DrawStatus(False);
End; End;
#35 : Done := True; #35 : Done := True;
#38 : Begin #38 : Begin
@ -801,7 +860,7 @@ Begin
#45 : Break; #45 : Break;
#48 : Begin #48 : Begin
ActivateScrollBack; ActivateScrollBack;
DrawStatus; DrawStatus(False);
End; End;
#71 : Client.WriteStr(#27 + '[H'); #71 : Client.WriteStr(#27 + '[H');
#72 : Client.WriteStr(#27 + '[A'); #72 : Client.WriteStr(#27 + '[A');
@ -827,48 +886,12 @@ Begin
Client.Free; Client.Free;
ShowMsgBox (0, 'Connection terminated');
Screen.TextAttr := 7; Screen.TextAttr := 7;
Screen.SetWindow (1, 1, 80, 25, True); Screen.SetWindow (1, 1, 80, 25, True);
End; End;
Procedure EditEntry (Var Book: PhoneBookRec; Num: SmallInt);
Var
Box : TMenuBox;
Form : TMenuForm;
NewRec : PhoneRec;
Begin
NewRec := Book[Num];
Box := TMenuBox.Create(TOutput(Screen));
Form := TMenuForm.Create(TOutput(Screen));
Box.HeadAttr := 1 + 7 * 16;
Box.Header := ' Book Editor ';
Box.Open (17, 8, 63, 16);
Form.HelpSize := 0;
Form.AddStr ('N', ' Name' , 24, 10, 32, 10, 6, 26, 26, @NewRec.Name, '');
Form.AddStr ('A', ' Address', 21, 11, 32, 11, 9, 30, 60, @NewRec.Address, '');
Form.AddStr ('U', ' User Name', 19, 12, 32, 12, 11, 30, 30, @NewRec.User, '');
Form.AddPass ('P', ' Password', 20, 13, 32, 13, 10, 20, 20, @NewRec.Password, '');
Form.AddBol ('S', ' StatusBar', 19, 14, 32, 14, 11, 3, @NewRec.StatusBar, '');
Form.Execute;
If Form.Changed Then
If ShowMsgBox(1, 'Save changes?') Then Begin
Book[Num] := NewRec;
WriteBook(Book);
End;
Form.Free;
Box.Close;
Box.Free;
End;
Procedure SearchEntry (Var Owner: Pointer; Str: String); Procedure SearchEntry (Var Owner: Pointer; Str: String);
Begin Begin
If Str = '' Then If Str = '' Then
@ -943,13 +966,6 @@ Begin
#13 : If Book[List.Picked].Address = '' Then #13 : If Book[List.Picked].Address = '' Then
ShowMsgBox(0, 'Address is empty') ShowMsgBox(0, 'Address is empty')
Else Begin Else Begin
With Book[List.Picked] Do Begin
LastCall := DateDos2Str(CurDateDos, 1);
Calls := strI2S(strS2I(Calls) + 1);
End;
WriteBook(Book);
Dial := Book[List.Picked]; Dial := Book[List.Picked];
Result := True; Result := True;
@ -1005,7 +1021,7 @@ Begin
Repeat Repeat
If Not GetTerminalEntry(Book, Dial) Then Break; If Not GetTerminalEntry(Book, Dial) Then Break;
TelnetClient(Dial); TelnetClient(Book, Dial);
Until False; Until False;
End; End;

View File

@ -3440,4 +3440,25 @@
+ If the download directory doesn't exist when NodeSpy attempts a Zmodem + If the download directory doesn't exist when NodeSpy attempts a Zmodem
download, it will now tell you instead of crashing. download, it will now tell you instead of crashing.
+ NodeSpy Terminal now allows the current connected phone book entry to be
edited while connected. This allows the password to be set, statusbar to
be turned on/off, etc.
+ NodeSpy Terminal now only updates the last call date and times called if
the connection was successful.
+ NodeSpy terminal now fully disconnects the session before displaying the
"connection terminated" box.
+ MPLC will now continue to attempt to compile subsequent MPL programs even
if one compilation fails.
+ Message Base QWK scan and regular scan settings now have the ability to
toggle ALL bases on or off at one time. An updated prompt goes along with
this:
; Message base new and qwk scan toggle prompt:
095 Toggle: |09[|11#-#,#|09], Select [|11A|09]ll, [|11D|09]eselect All, [|11?|09/|11List|09]: |XX
<ALPHA 35 RELEASED> <ALPHA 35 RELEASED>