A30
This commit is contained in:
parent
e13a0cf040
commit
f540f5fa8f
|
@ -465,6 +465,8 @@ Procedure TAnsiMenuForm.AddTog (HK: Char; D: String; X, Y, FX, FY, DS, FS, MN, M
|
||||||
Begin
|
Begin
|
||||||
If Items = FormMaxItems Then Exit;
|
If Items = FormMaxItems Then Exit;
|
||||||
|
|
||||||
|
If (Byte(P^) > MX) or (Byte(P^) < MN) Then Byte(P^) := MN;
|
||||||
|
|
||||||
AddBasic (HK, D, X, Y, FX, FY, DS, FS, MX, ItemToggle, P, H);
|
AddBasic (HK, D, X, Y, FX, FY, DS, FS, MX, ItemToggle, P, H);
|
||||||
|
|
||||||
ItemData[Items]^.Toggle := TG;
|
ItemData[Items]^.Toggle := TG;
|
||||||
|
|
|
@ -192,7 +192,7 @@ Var
|
||||||
Read (MBaseFile, MBase);
|
Read (MBaseFile, MBase);
|
||||||
|
|
||||||
If IsExportNode(MBase, Node.Index) Then
|
If IsExportNode(MBase, Node.Index) Then
|
||||||
List.Add(strPadR(strI2S(MBase.Index), 6, ' ') + ' ' + strPadR('(' + MBase.EchoTag + ') ' + strStripPipe(MBase.Name), 40, ' '), 0);
|
List.Add(strPadR(strI2S(MBase.Index), 6, ' ') + ' ' + strPadR('(' + MBase.EchoTag + ') ' + strStripPipe(MBase.Name), 47, ' '), 0);
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
@ -301,7 +301,7 @@ Var
|
||||||
While Not Eof(EchoFile) Do Begin
|
While Not Eof(EchoFile) Do Begin
|
||||||
Read (EchoFile, EchoNode);
|
Read (EchoFile, EchoNode);
|
||||||
|
|
||||||
List.Add(strPadR(strI2S(FilePos(EchoFile)), 3, ' ') + ' ' + strPadR(EchoNode.Description, 35, ' ') + ' ' + strPadL(strAddr2Str(EchoNode.Address), 12, ' '), 0);
|
List.Add(strPadR(strI2S(FilePos(EchoFile)), 7, ' ') + ' ' + strPadL(strYN(EchoNode.Active), 3, ' ') + ' ' + strPadR(EchoNode.Description, 35, ' ') + ' ' + strPadL(strAddr2Str(EchoNode.Address), 17, ' '), 0);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
List.Add('', 2);
|
List.Add('', 2);
|
||||||
|
@ -345,17 +345,17 @@ Begin
|
||||||
|
|
||||||
If Not Edit Then Box.Header := ' Select' + Box.Header;
|
If Not Edit Then Box.Header := ' Select' + Box.Header;
|
||||||
|
|
||||||
Box.Open (11, 5, 69, 21);
|
Box.Open (5, 5, 74, 21);
|
||||||
|
|
||||||
WriteXY (13, 6, 112, '### Node Description' + strRep(' ', 25) + 'Network');
|
WriteXY (7, 6, 112, '### Active Description' + strRep(' ', 35) + 'Network');
|
||||||
WriteXY (13, 7, 112, strRep(#196, 53));
|
WriteXY (7, 7, 112, strRep(#196, 66));
|
||||||
WriteXY (13, 19, 112, strRep(#196, 53));
|
WriteXY (7, 19, 112, strRep(#196, 66));
|
||||||
WriteXY (28, 20, 112, cfgCommandList);
|
WriteXY (28, 20, 112, cfgCommandList);
|
||||||
|
|
||||||
Repeat
|
Repeat
|
||||||
MakeList;
|
MakeList;
|
||||||
|
|
||||||
List.Open (11, 7, 69, 19);
|
List.Open (5, 7, 74, 19);
|
||||||
List.Close;
|
List.Close;
|
||||||
|
|
||||||
Case List.ExitCode of
|
Case List.ExitCode of
|
||||||
|
@ -513,7 +513,7 @@ Var
|
||||||
Begin
|
Begin
|
||||||
List.Clear;
|
List.Clear;
|
||||||
|
|
||||||
Reset (ExportFile);
|
ioReset (ExportFile, SizeOf(RecEchoMailExport), fmRWDN);
|
||||||
|
|
||||||
While Not Eof(ExportFile) Do Begin
|
While Not Eof(ExportFile) Do Begin
|
||||||
Read (ExportFile, ExpNode);
|
Read (ExportFile, ExpNode);
|
||||||
|
|
|
@ -134,7 +134,10 @@ Begin
|
||||||
Result := '';
|
Result := '';
|
||||||
|
|
||||||
For Count := 1 to GetLineLength(ANSI.Data[Line], RowSize) Do
|
For Count := 1 to GetLineLength(ANSI.Data[Line], RowSize) Do
|
||||||
Result := Result + ANSI.Data[Line][Count].Ch;
|
If ANSI.Data[Line][Count].Ch = #0 Then
|
||||||
|
Result := Result + ' '
|
||||||
|
Else
|
||||||
|
Result := Result + ANSI.Data[Line][Count].Ch;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure TEditorANSI.SetLineText (Line: LongInt; Str: String);
|
Procedure TEditorANSI.SetLineText (Line: LongInt; Str: String);
|
||||||
|
|
|
@ -1167,13 +1167,17 @@ Var
|
||||||
Var
|
Var
|
||||||
B : Word;
|
B : Word;
|
||||||
Begin
|
Begin
|
||||||
B := 0;
|
If A = 0 Then Exit;
|
||||||
|
|
||||||
|
B := 0;
|
||||||
FileMode := 66;
|
FileMode := 66;
|
||||||
|
|
||||||
Reset (FBaseFile);
|
Reset (FBaseFile);
|
||||||
|
|
||||||
Repeat
|
Repeat
|
||||||
Read (FBaseFile, FBase);
|
{$I-} Read (FBaseFile, FBase); {$I+}
|
||||||
|
|
||||||
|
If IoResult <> 0 Then Exit;
|
||||||
|
|
||||||
If Session.User.Access(FBase.ListACS) Then Inc(B);
|
If Session.User.Access(FBase.ListACS) Then Inc(B);
|
||||||
|
|
||||||
|
@ -1203,11 +1207,12 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Old : RecFileBase;
|
Old : RecFileBase;
|
||||||
Temp : String[11];
|
Temp : String[40];
|
||||||
A : Word;
|
Count1 : LongInt;
|
||||||
N1 : Word;
|
Count2 : LongInt;
|
||||||
N2 : Word;
|
Num1 : String[40];
|
||||||
|
Num2 : String[40];
|
||||||
Begin
|
Begin
|
||||||
Old := FBase;
|
Old := FBase;
|
||||||
|
|
||||||
|
@ -1222,23 +1227,43 @@ Begin
|
||||||
Repeat
|
Repeat
|
||||||
Session.io.OutFull (Session.GetPrompt(202));
|
Session.io.OutFull (Session.GetPrompt(202));
|
||||||
|
|
||||||
Temp := Session.io.GetInput(11, 11, 12, '');
|
Temp := Session.io.GetInput(10, 40, 12, '');
|
||||||
|
|
||||||
If (Temp = '') or (Temp = 'Q') Then Break;
|
If (Temp = '') or (Temp = 'Q') Then Break;
|
||||||
|
|
||||||
If Temp = '?' Then
|
If Temp = '?' Then
|
||||||
List_Bases
|
List_Bases
|
||||||
Else Begin
|
Else Begin
|
||||||
If Pos('-', Temp) > 0 Then Begin
|
Num1 := '';
|
||||||
N1 := strS2I(Copy(Temp, 1, Pos('-', Temp) - 1));
|
Num2 := '';
|
||||||
N2 := strS2I(Copy(Temp, Pos('-', Temp) + 1, Length(Temp)));
|
|
||||||
End Else Begin
|
For Count1 := 1 to Length(Temp) Do Begin
|
||||||
N1 := strS2I(Temp);
|
If Temp[Count1] = ' ' Then Continue;
|
||||||
N2 := N1;
|
|
||||||
|
If Temp[Count1] = ',' Then Begin
|
||||||
|
If Num2 <> '' Then Begin
|
||||||
|
For Count2 := strS2I(Num2) to strS2I(Num1) Do
|
||||||
|
ToggleBase(Count2);
|
||||||
|
End Else
|
||||||
|
ToggleBase(strS2I(Num1));
|
||||||
|
|
||||||
|
Num1 := '';
|
||||||
|
Num2 := '';
|
||||||
|
End Else
|
||||||
|
If Temp[Count1] = '-' Then Begin
|
||||||
|
Num2 := Num1;
|
||||||
|
Num1 := '';
|
||||||
|
End Else
|
||||||
|
Num1 := Num1 + Temp[Count1];
|
||||||
End;
|
End;
|
||||||
|
|
||||||
For A := N1 to N2 Do
|
If Num2 <> '' Then Begin
|
||||||
If (A > 0) and (A <= Total) Then ToggleBase(A);
|
For Count1 := strS2I(Num2) to strS2I(Num1) Do
|
||||||
|
ToggleBase(Count1);
|
||||||
|
End Else
|
||||||
|
ToggleBase(strS2I(Num1));
|
||||||
|
|
||||||
|
List_Bases;
|
||||||
End;
|
End;
|
||||||
Until False;
|
Until False;
|
||||||
|
|
||||||
|
|
|
@ -1055,7 +1055,7 @@ Procedure TBBSIO.AnsiGotoXY (X: Byte; Y: Byte);
|
||||||
Begin
|
Begin
|
||||||
If Graphics = 0 Then Exit;
|
If Graphics = 0 Then Exit;
|
||||||
|
|
||||||
If (X = Screen.CursorX) and (Y = Screen.CursorY) Then Exit;
|
// If (X = Screen.CursorX) and (Y = Screen.CursorY) Then Exit;
|
||||||
|
|
||||||
If X = 0 Then X := Screen.CursorX;
|
If X = 0 Then X := Screen.CursorX;
|
||||||
If Y = 0 Then Y := Screen.CursorY;
|
If Y = 0 Then Y := Screen.CursorY;
|
||||||
|
|
|
@ -758,13 +758,17 @@ Var
|
||||||
Var
|
Var
|
||||||
B : Word;
|
B : Word;
|
||||||
Begin
|
Begin
|
||||||
|
If A = 0 Then Exit;
|
||||||
|
|
||||||
B := 0;
|
B := 0;
|
||||||
FileMode := 66;
|
FileMode := 66;
|
||||||
|
|
||||||
Reset (MBaseFile);
|
Reset (MBaseFile);
|
||||||
|
|
||||||
Repeat
|
Repeat
|
||||||
Read (MBaseFile, MBase);
|
{$I-} Read (MBaseFile, MBase); {$I+}
|
||||||
|
|
||||||
|
If IoResult <> 0 Then Exit;
|
||||||
|
|
||||||
If Session.User.Access(MBase.ListACS) Then
|
If Session.User.Access(MBase.ListACS) Then
|
||||||
Inc(B);
|
Inc(B);
|
||||||
|
@ -806,11 +810,12 @@ Var
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
Old : RecMessageBase;
|
Old : RecMessageBase;
|
||||||
Temp : String[11];
|
Temp : String[40];
|
||||||
A : Word;
|
Count1 : LongInt;
|
||||||
N1 : Word;
|
Count2 : LongInt;
|
||||||
N2 : Word;
|
Num1 : String[40];
|
||||||
|
Num2 : String[40];
|
||||||
Begin
|
Begin
|
||||||
Old := MBase;
|
Old := MBase;
|
||||||
|
|
||||||
|
@ -828,23 +833,43 @@ Begin
|
||||||
Repeat
|
Repeat
|
||||||
Session.io.OutFull (Session.GetPrompt(95));
|
Session.io.OutFull (Session.GetPrompt(95));
|
||||||
|
|
||||||
Temp := Session.io.GetInput(11, 11, 12, '');
|
Temp := Session.io.GetInput(10, 40, 12, '');
|
||||||
|
|
||||||
If (Temp = '') or (Temp = 'Q') Then Break;
|
If (Temp = '') or (Temp = 'Q') Then Break;
|
||||||
|
|
||||||
If Temp = '?' Then
|
If Temp = '?' Then
|
||||||
List_Bases
|
List_Bases
|
||||||
Else Begin
|
Else Begin
|
||||||
If Pos('-', Temp) > 0 Then Begin
|
Num1 := '';
|
||||||
N1 := strS2I(Copy(Temp, 1, Pos('-', Temp) - 1));
|
Num2 := '';
|
||||||
N2 := strS2I(Copy(Temp, Pos('-', Temp) + 1, Length(Temp)));
|
|
||||||
End Else Begin
|
For Count1 := 1 to Length(Temp) Do Begin
|
||||||
N1 := strS2I(Temp);
|
If Temp[Count1] = ' ' Then Continue;
|
||||||
N2 := N1;
|
|
||||||
|
If Temp[Count1] = ',' Then Begin
|
||||||
|
If Num2 <> '' Then Begin
|
||||||
|
For Count2 := strS2I(Num2) to strS2I(Num1) Do
|
||||||
|
ToggleBase(Count2);
|
||||||
|
End Else
|
||||||
|
ToggleBase(strS2I(Num1));
|
||||||
|
|
||||||
|
Num1 := '';
|
||||||
|
Num2 := '';
|
||||||
|
End Else
|
||||||
|
If Temp[Count1] = '-' Then Begin
|
||||||
|
Num2 := Num1;
|
||||||
|
Num1 := '';
|
||||||
|
End Else
|
||||||
|
Num1 := Num1 + Temp[Count1];
|
||||||
End;
|
End;
|
||||||
|
|
||||||
For A := N1 to N2 Do
|
If Num2 <> '' Then Begin
|
||||||
If (A > 0) and (A <= Total) Then ToggleBase(A);
|
For Count1 := strS2I(Num2) to strS2I(Num1) Do
|
||||||
|
ToggleBase(Count1);
|
||||||
|
End Else
|
||||||
|
ToggleBase(strS2I(Num1));
|
||||||
|
|
||||||
|
List_Bases;
|
||||||
End;
|
End;
|
||||||
Until False;
|
Until False;
|
||||||
|
|
||||||
|
@ -1400,7 +1425,7 @@ Var
|
||||||
HelpFile : String[8];
|
HelpFile : String[8];
|
||||||
LastRead : LongInt;
|
LastRead : LongInt;
|
||||||
ListMode : Byte;
|
ListMode : Byte;
|
||||||
ReplyID : String[31];
|
ReplyID : String[60];
|
||||||
TempStr : String;
|
TempStr : String;
|
||||||
|
|
||||||
Procedure SetMessageSecurity;
|
Procedure SetMessageSecurity;
|
||||||
|
@ -1663,24 +1688,24 @@ Var
|
||||||
Session.io.PromptInfo[9] := strStripB(Session.io.PromptInfo[9], ' ');
|
Session.io.PromptInfo[9] := strStripB(Session.io.PromptInfo[9], ' ');
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure Send_Msg_Text (Str : String);
|
Procedure Send_Msg_Text (Str: String);
|
||||||
Begin
|
Begin
|
||||||
If IsQuotedText(Str) Then Begin
|
If IsQuotedText(Str) Then Begin
|
||||||
Session.io.AnsiColor(MBase.ColQuote);
|
Session.io.AnsiColor (MBase.ColQuote);
|
||||||
Session.io.OutPipe (Str);
|
Session.io.OutPipe (Str);
|
||||||
Session.io.AnsiColor(MBase.ColText);
|
Session.io.AnsiColor (MBase.ColText);
|
||||||
End Else
|
End Else
|
||||||
If Copy(Str, 1, 4) = '--- ' Then Begin
|
If Copy(Str, 1, 4) = '--- ' Then Begin
|
||||||
Session.io.AnsiColor(MBase.ColTear);
|
Session.io.AnsiColor (MBase.ColTear);
|
||||||
Session.io.OutPipe (Str);
|
Session.io.OutPipe (Str);
|
||||||
Session.io.AnsiColor(MBase.ColText);
|
Session.io.AnsiColor (MBase.ColText);
|
||||||
End Else
|
End Else
|
||||||
If Copy(Str, 1, 2) = ' *' Then Begin
|
If Copy(Str, 1, 2) = ' *' Then Begin
|
||||||
Session.io.AnsiColor(MBase.ColOrigin);
|
Session.io.AnsiColor (MBase.ColOrigin);
|
||||||
Session.io.OutPipe (Str);
|
Session.io.OutPipe (Str);
|
||||||
Session.io.AnsiColor(MBase.ColText);
|
Session.io.AnsiColor (MBase.ColText);
|
||||||
End Else
|
End Else
|
||||||
Session.io.OutPipe (Str);
|
Session.io.OutPipe(Str);
|
||||||
|
|
||||||
If ListMode = 1 Then
|
If ListMode = 1 Then
|
||||||
Session.io.AnsiClrEOL;
|
Session.io.AnsiClrEOL;
|
||||||
|
@ -1754,15 +1779,13 @@ Var
|
||||||
A : LongInt;
|
A : LongInt;
|
||||||
CurMsg : LongInt;
|
CurMsg : LongInt;
|
||||||
Begin
|
Begin
|
||||||
Ansi_View_Message := False;
|
Result := False;
|
||||||
|
|
||||||
Repeat
|
Repeat
|
||||||
Set_Node_Action (Session.GetPrompt(348));
|
Set_Node_Action (Session.GetPrompt(348));
|
||||||
|
|
||||||
SetMessageSecurity;
|
SetMessageSecurity;
|
||||||
|
|
||||||
If MsgBase^.GetMsgNum > LastRead Then LastRead := MsgBase^.GetMsgNum;
|
|
||||||
|
|
||||||
If Session.User.IsThisUser(MsgBase^.GetTo) And Not MsgBase^.IsRcvd Then Begin
|
If Session.User.IsThisUser(MsgBase^.GetTo) And Not MsgBase^.IsRcvd Then Begin
|
||||||
MsgBase^.SetRcvd(True);
|
MsgBase^.SetRcvd(True);
|
||||||
MsgBase^.ReWriteHDR;
|
MsgBase^.ReWriteHDR;
|
||||||
|
@ -1772,8 +1795,12 @@ Var
|
||||||
Lines := 0;
|
Lines := 0;
|
||||||
PageStart := 1;
|
PageStart := 1;
|
||||||
|
|
||||||
|
If CurMsg > LastRead Then LastRead := CurMsg;
|
||||||
|
|
||||||
Session.io.AllowArrow := True;
|
Session.io.AllowArrow := True;
|
||||||
|
|
||||||
|
// create ReadMessageText function?
|
||||||
|
|
||||||
MsgBase^.MsgTxtStartUp;
|
MsgBase^.MsgTxtStartUp;
|
||||||
|
|
||||||
While Not MsgBase^.EOM And (Lines < mysMaxMsgLines) Do Begin
|
While Not MsgBase^.EOM And (Lines < mysMaxMsgLines) Do Begin
|
||||||
|
@ -1845,6 +1872,7 @@ Var
|
||||||
End;
|
End;
|
||||||
#80 : If PageEnd <= Lines Then Begin
|
#80 : If PageEnd <= Lines Then Begin
|
||||||
Inc (PageStart);
|
Inc (PageStart);
|
||||||
|
|
||||||
Draw_Msg_Text;
|
Draw_Msg_Text;
|
||||||
End;
|
End;
|
||||||
#81 : If (Lines > PageSize) and (PageEnd <= Lines) Then Begin
|
#81 : If (Lines > PageSize) and (PageEnd <= Lines) Then Begin
|
||||||
|
@ -1869,6 +1897,7 @@ Var
|
||||||
End;
|
End;
|
||||||
End Else
|
End Else
|
||||||
MsgBase^.SeekFirst(CurMsg);
|
MsgBase^.SeekFirst(CurMsg);
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
'E' : Begin
|
'E' : Begin
|
||||||
|
@ -1893,8 +1922,8 @@ Var
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
'I' : Begin
|
'I' : Begin
|
||||||
LastRead := MsgBase^.GetHighMsgNum;
|
LastRead := MsgBase^.GetHighMsgNum;
|
||||||
Ansi_View_Message := True;
|
Result := True;
|
||||||
|
|
||||||
RemoveNewScan(495);
|
RemoveNewScan(495);
|
||||||
|
|
||||||
|
@ -2045,6 +2074,7 @@ Var
|
||||||
CurPage : Word;
|
CurPage : Word;
|
||||||
MsgInfo : Array[1..24] of MsgInfoRec;
|
MsgInfo : Array[1..24] of MsgInfoRec;
|
||||||
FirstPage : Boolean;
|
FirstPage : Boolean;
|
||||||
|
AskRemove : Boolean;
|
||||||
|
|
||||||
Procedure DrawPage;
|
Procedure DrawPage;
|
||||||
Var
|
Var
|
||||||
|
@ -2188,6 +2218,8 @@ Var
|
||||||
SN : LongInt;
|
SN : LongInt;
|
||||||
A : Byte;
|
A : Byte;
|
||||||
Begin
|
Begin
|
||||||
|
AskRemove := False;
|
||||||
|
|
||||||
If Read_Page (True, False, False) Then Begin
|
If Read_Page (True, False, False) Then Begin
|
||||||
WereMsgs := True;
|
WereMsgs := True;
|
||||||
PagePos := 1;
|
PagePos := 1;
|
||||||
|
@ -2308,9 +2340,8 @@ Var
|
||||||
End;
|
End;
|
||||||
'G' : Break;
|
'G' : Break;
|
||||||
'I' : Begin
|
'I' : Begin
|
||||||
LastRead := MsgBase^.GetHighMsgNum;
|
LastRead := MsgBase^.GetHighMsgNum;
|
||||||
|
AskRemove := True;
|
||||||
RemoveNewScan(495);
|
|
||||||
|
|
||||||
Break;
|
Break;
|
||||||
End;
|
End;
|
||||||
|
@ -2328,6 +2359,9 @@ Var
|
||||||
If WereMsgs Then Begin
|
If WereMsgs Then Begin
|
||||||
Session.io.AnsiGotoXY (1, Session.io.ScreenInfo[3].Y);
|
Session.io.AnsiGotoXY (1, Session.io.ScreenInfo[3].Y);
|
||||||
Session.io.OutRawLn('');
|
Session.io.OutRawLn('');
|
||||||
|
|
||||||
|
If AskRemove Then
|
||||||
|
RemoveNewScan(495);
|
||||||
End;
|
End;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
|
|
@ -196,7 +196,7 @@
|
||||||
; &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]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: |XX
|
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
|
||||||
; 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
|
||||||
|
@ -373,7 +373,7 @@
|
||||||
; &1 = File base number &2 = File base name &3 = Scan? (Yes or No)
|
; &1 = File base number &2 = File base name &3 = Scan? (Yes or No)
|
||||||
201 |07|$R04|&1|15|$R03|&3 |07|$R29|&2
|
201 |07|$R04|&1|15|$R03|&3 |07|$R29|&2
|
||||||
; Select scanned file bases prompt
|
; Select scanned file bases prompt
|
||||||
202 |09Selection |01[|10##|01]|09, |01[|10##|01-|10##|01]|09, |01[|10?|01/|10List|01]|09, or |01[|10Q|01]|09uit: |XX
|
202 |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
|
||||||
; &1 = File base name
|
; &1 = File base name
|
||||||
203 |CR |11|&1 will NOT be scanned in new file scan!|CR
|
203 |CR |11|&1 will NOT be scanned in new file scan!|CR
|
||||||
; &1 = File base name
|
; &1 = File base name
|
||||||
|
|
|
@ -120,34 +120,13 @@ Begin
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Function MakeDir (Str: String) : Boolean;
|
Function MakeDir (Str: String) : Boolean;
|
||||||
Var
|
|
||||||
PathPos : Byte;
|
|
||||||
CurDIR : String;
|
|
||||||
Prefix : String;
|
|
||||||
Begin
|
Begin
|
||||||
Result := True;
|
Result := True;
|
||||||
|
|
||||||
If DirExists(Str) Then Exit;
|
If DirExists(Str) Then Exit;
|
||||||
|
|
||||||
Prefix := '';
|
If Not DirCreate(Str) Then
|
||||||
PathPos := Pos(PathChar, Str);
|
ShowError('Unable to create: ' + Str);
|
||||||
|
|
||||||
While (PathPos > 0) Do Begin
|
|
||||||
CurDIR := Copy(Str, 1, PathPos);
|
|
||||||
|
|
||||||
Delete (Str, 1, PathPos);
|
|
||||||
|
|
||||||
Prefix := Prefix + CurDIR;
|
|
||||||
|
|
||||||
If Not IsDir(Prefix) Then Begin
|
|
||||||
{$I-} MkDIR (Prefix); {$I+}
|
|
||||||
If IoResult <> 0 Then Begin
|
|
||||||
ShowError('Unable to create: ' + Prefix);
|
|
||||||
End;
|
|
||||||
End;
|
|
||||||
|
|
||||||
PathPos := Pos(PathChar, Str);
|
|
||||||
End;
|
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Var
|
Var
|
||||||
|
@ -391,8 +370,10 @@ Begin
|
||||||
MakeDir (Config.ScriptPath);
|
MakeDir (Config.ScriptPath);
|
||||||
MakeDir (Config.AttachPath);
|
MakeDir (Config.AttachPath);
|
||||||
MakeDir (Config.QwkPath);
|
MakeDir (Config.QwkPath);
|
||||||
MakeDir (Config.SystemPath + 'files');
|
MakeDir (Config.SystemPath + 'docs' + PathChar);
|
||||||
MakeDir (Config.SystemPath + 'files' + PathChar + 'uploads');
|
MakeDir (Config.SystemPath + 'files' + PathChar + 'uploads' + PathChar);
|
||||||
|
MakeDir (Config.InBoundPath);
|
||||||
|
MakeDir (Config.OutBoundPath);
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Procedure ExtractFile (Y : Byte; Desc, FN, EID, DestPath : String);
|
Procedure ExtractFile (Y : Byte; Desc, FN, EID, DestPath : String);
|
||||||
|
@ -426,18 +407,20 @@ Begin
|
||||||
Reset (CfgFile);
|
Reset (CfgFile);
|
||||||
Read (CfgFile, Cfg);
|
Read (CfgFile, Cfg);
|
||||||
|
|
||||||
Cfg.DataChanged := mysDataChanged;
|
Cfg.DataChanged := mysDataChanged;
|
||||||
Cfg.SystemPath := Config.SystemPath;
|
Cfg.SystemPath := Config.SystemPath;
|
||||||
Cfg.AttachPath := Config.AttachPath;
|
Cfg.AttachPath := Config.AttachPath;
|
||||||
Cfg.DataPath := Config.DataPath;
|
Cfg.DataPath := Config.DataPath;
|
||||||
Cfg.MsgsPath := Config.MsgsPath;
|
Cfg.MsgsPath := Config.MsgsPath;
|
||||||
Cfg.SemaPath := Config.SemaPath;
|
Cfg.SemaPath := Config.SemaPath;
|
||||||
Cfg.QwkPath := Config.QwkPath;
|
Cfg.QwkPath := Config.QwkPath;
|
||||||
Cfg.ScriptPath := Config.ScriptPath;
|
Cfg.ScriptPath := Config.ScriptPath;
|
||||||
Cfg.LogsPath := Config.LogsPath;
|
Cfg.LogsPath := Config.LogsPath;
|
||||||
Cfg.MenuPath := Lang.MenuPath;
|
Cfg.MenuPath := Lang.MenuPath;
|
||||||
Cfg.TextPath := Lang.TextPath;
|
Cfg.TextPath := Lang.TextPath;
|
||||||
Cfg.UserIdxPos := 0;
|
Cfg.InBoundPath := Config.InBoundPath;
|
||||||
|
Cfg.OutBoundPath := Config.OutBoundPath;
|
||||||
|
Cfg.UserIdxPos := 0;
|
||||||
Cfg.SystemCalls := 0;
|
Cfg.SystemCalls := 0;
|
||||||
|
|
||||||
Reset (CfgFile);
|
Reset (CfgFile);
|
||||||
|
@ -502,6 +485,7 @@ Begin
|
||||||
ExtractFile (16, '|08[|15û|08] |07Installing menu files|08...', 'install_data', 'MENUS', Lang.MenuPath);
|
ExtractFile (16, '|08[|15û|08] |07Installing menu files|08...', 'install_data', 'MENUS', Lang.MenuPath);
|
||||||
ExtractFile (17, '|08[|15û|08] |07Installing script files|08...', 'install_data', 'SCRIPT', Config.ScriptPath);
|
ExtractFile (17, '|08[|15û|08] |07Installing script files|08...', 'install_data', 'SCRIPT', Config.ScriptPath);
|
||||||
ExtractFile (18, '|08[|15û|08] |07Installing data files|08...', 'install_data', 'DATA', Config.DataPath);
|
ExtractFile (18, '|08[|15û|08] |07Installing data files|08...', 'install_data', 'DATA', Config.DataPath);
|
||||||
|
ExtractFile (19, '|08[|15û|08] |07Installing documentation|08...', 'install_data', 'DOCS', Config.SystemPath + 'docs' + PathChar);
|
||||||
|
|
||||||
UpdateDataFiles;
|
UpdateDataFiles;
|
||||||
|
|
||||||
|
@ -658,7 +642,9 @@ Begin
|
||||||
|
|
||||||
{ update paths not on the list }
|
{ update paths not on the list }
|
||||||
|
|
||||||
Config.QwkPath := Config.SystemPath + 'localqwk' + PathChar;
|
Config.QwkPath := Config.SystemPath + 'localqwk' + PathChar;
|
||||||
|
Config.InBoundPath := Config.SystemPath + 'echomail' + PathChar + 'in' + PathChar;
|
||||||
|
Config.OutBoundPath := Config.SystemPath + 'echomail' + PathChar + 'out' + PathChar + 'fidonet' + PathChar;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
Const
|
Const
|
||||||
|
|
|
@ -334,6 +334,8 @@ Begin
|
||||||
// of export
|
// of export
|
||||||
|
|
||||||
If {MsgBase^.IsLocal And } Not MsgBase^.IsSent Then Begin
|
If {MsgBase^.IsLocal And } Not MsgBase^.IsSent Then Begin
|
||||||
|
Log (3, '!', ' Found msg for export');
|
||||||
|
|
||||||
Assign (ExportFile, MBase.Path + MBase.FileName + '.lnk');
|
Assign (ExportFile, MBase.Path + MBase.FileName + '.lnk');
|
||||||
|
|
||||||
If ioReset(ExportFile, SizeOf(RecEchoMailExport), fmRWDN) Then Begin
|
If ioReset(ExportFile, SizeOf(RecEchoMailExport), fmRWDN) Then Begin
|
||||||
|
@ -345,7 +347,7 @@ Begin
|
||||||
|
|
||||||
If MBase.NetType = 3 Then Begin
|
If MBase.NetType = 3 Then Begin
|
||||||
If GetNodeByIndex(ExportIndex, EchoNode) Then
|
If GetNodeByIndex(ExportIndex, EchoNode) Then
|
||||||
If EchoNode.Active and (EchoNode.Address.Zone = MsgBase^.GetOrigAddr.Zone) Then
|
If EchoNode.Active and (EchoNode.Address.Zone = MsgBase^.GetDestAddr.Zone) Then
|
||||||
ExportMessage;
|
ExportMessage;
|
||||||
End Else
|
End Else
|
||||||
If GetNodeByIndex(ExportIndex, EchoNode) Then
|
If GetNodeByIndex(ExportIndex, EchoNode) Then
|
||||||
|
|
|
@ -193,7 +193,7 @@ Var
|
||||||
MBase.FileName := PKT.MsgArea;
|
MBase.FileName := PKT.MsgArea;
|
||||||
MBase.EchoTag := PKT.MsgArea;
|
MBase.EchoTag := PKT.MsgArea;
|
||||||
MBase.Path := bbsConfig.MsgsPath;
|
MBase.Path := bbsConfig.MsgsPath;
|
||||||
MBase.NetType := 2;
|
MBase.NetType := 1;
|
||||||
MBase.ColQuote := bbsConfig.ColorQuote;
|
MBase.ColQuote := bbsConfig.ColorQuote;
|
||||||
MBase.ColText := bbsConfig.ColorText;
|
MBase.ColText := bbsConfig.ColorText;
|
||||||
MBase.ColTear := bbsConfig.ColorTear;
|
MBase.ColTear := bbsConfig.ColorTear;
|
||||||
|
|
|
@ -688,7 +688,7 @@ Begin
|
||||||
Zmodem.StatusProc := @ProtocolStatusUpdate;
|
Zmodem.StatusProc := @ProtocolStatusUpdate;
|
||||||
Zmodem.AbortProc := @ProtocolAbort;
|
Zmodem.AbortProc := @ProtocolAbort;
|
||||||
|
|
||||||
Queue.Add(JustPath(FileName), JustFile(FileName));
|
Queue.Add(JustPath(FileName), JustFile(FileName), '');
|
||||||
|
|
||||||
Zmodem.QueueSend;
|
Zmodem.QueueSend;
|
||||||
|
|
||||||
|
|
|
@ -2814,7 +2814,7 @@
|
||||||
|
|
||||||
508 |09|$D79=|CR
|
508 |09|$D79=|CR
|
||||||
|
|
||||||
<ALPHA 28 RELEASED>
|
<ALPHA 28 RELEASED>
|
||||||
|
|
||||||
+ Prompt #490 has been changed to separate message header flags by comma
|
+ Prompt #490 has been changed to separate message header flags by comma
|
||||||
instead of space. This allows the ability to completely exclude certain
|
instead of space. This allows the ability to completely exclude certain
|
||||||
|
@ -2896,7 +2896,7 @@
|
||||||
|
|
||||||
+ MPL errors when executing a MPX module are now logged in the SYSOP logs
|
+ MPL errors when executing a MPX module are now logged in the SYSOP logs
|
||||||
|
|
||||||
<ALPHA 29 RELEASED>
|
<ALPHA 29 RELEASED>
|
||||||
|
|
||||||
+ Added new INBOUND and OUTBOUND echomail directories into the System
|
+ Added new INBOUND and OUTBOUND echomail directories into the System
|
||||||
Configuration.
|
Configuration.
|
||||||
|
@ -2952,13 +2952,28 @@
|
||||||
you if you want to physically rename them on disk too upon leaving the
|
you if you want to physically rename them on disk too upon leaving the
|
||||||
base editor.
|
base editor.
|
||||||
|
|
||||||
+ MUTIL now has a full binkley-style echomail importer and exporter. It
|
+ MUTIL now has a full binkley-style 5D echomail importer and exporter. It
|
||||||
can autocreate new bases, perform dupe checking, and push duplicate msgs
|
can autocreate new bases, perform dupe checking, and push duplicate msgs
|
||||||
to their own base. All node configuration, echos, and export info comes
|
to their own base. All node configuration, echos, and export info comes
|
||||||
from within the new editor options with Mystic's configuration.
|
from within the new editor options with Mystic's configuration.
|
||||||
|
|
||||||
Please review MUTIL.INI for the two new added functions for import/export
|
Please review MUTIL.INI for the two new added functions for import/export
|
||||||
|
|
||||||
|
There are a few things left on my TODO list before I consider everything
|
||||||
|
pretty much functional. I have two networks setup using only Mystic and
|
||||||
|
it is able to interact fine so far (Fido and Agora) with both Echo and
|
||||||
|
Netmail - so it DOES work, however, please review the current TODO:
|
||||||
|
|
||||||
|
1. Does not support exporting to point nodes.
|
||||||
|
2. Does not properly create reply chain links when importing
|
||||||
|
3. Netmail routing/passthrough does not exist yet. You can only export
|
||||||
|
netmail to a configured uplink or downlink. This is a big issue
|
||||||
|
when using networks like Fido that have multiple zones.
|
||||||
|
4. Does not have the option to keep "last scanned" pointers when
|
||||||
|
exporting mail. This means that it searches all of your messages when
|
||||||
|
exporting. This doesn't effect features, just the speed of exporting
|
||||||
|
messages.
|
||||||
|
|
||||||
The basic setup is this:
|
The basic setup is this:
|
||||||
|
|
||||||
0. Set your inbound and outbound directories in the System Paths.
|
0. Set your inbound and outbound directories in the System Paths.
|
||||||
|
@ -2983,7 +2998,37 @@
|
||||||
|
|
||||||
6. Turn on importing/exporting in MUTIL.INI.
|
6. Turn on importing/exporting in MUTIL.INI.
|
||||||
|
|
||||||
7. At your own risk: Delete FastEcho, GEcho, CrashMail, etc. :)
|
7. Set one echomail address as your PRIMARY address. This will be
|
||||||
|
what the root outbound directory you defined in system configuration
|
||||||
|
will use. When a echomail message for a non-primary address is
|
||||||
|
found Mystic will replace the last directory with the domain and
|
||||||
|
zone. So for example if your root is:
|
||||||
|
|
||||||
|
c:\mybbs\echomail\out\
|
||||||
|
|
||||||
|
And you have Fido as your primary, a message posted to Agora net
|
||||||
|
will be created in:
|
||||||
|
|
||||||
|
c:\mybbs\echomail\agoranet.02e\
|
||||||
|
|
||||||
|
The 5D BSO outbound format doesn't append to the base outbound
|
||||||
|
directory as you would expect. Because of this, I recommand setting
|
||||||
|
the default outbound to include the primary address network domain.
|
||||||
|
|
||||||
|
So for example, if you have FidoNet as your primary address, set your
|
||||||
|
outbound directory to include the primary's domain:
|
||||||
|
|
||||||
|
c:\mybbs\echomail\out\fidonet\
|
||||||
|
|
||||||
|
This will mean that Mystic will then create the following using the
|
||||||
|
above example:
|
||||||
|
|
||||||
|
c:\mybbs\echomail\out\agoranet.02e\
|
||||||
|
|
||||||
|
I know all of this is confusing and stupid, but I didn't create the
|
||||||
|
standard I'm only dealing with it! :)
|
||||||
|
|
||||||
|
8. At your own risk: Delete FastEcho, GEcho, CrashMail, etc. :)
|
||||||
|
|
||||||
! Fixed a bug that could cause the user editor to crash directly after a
|
! Fixed a bug that could cause the user editor to crash directly after a
|
||||||
new install if you didn't create your SysOp account first.
|
new install if you didn't create your SysOp account first.
|
||||||
|
@ -3007,3 +3052,33 @@
|
||||||
|
|
||||||
! Forced messages were able to be aborted sometimes while using the FS
|
! Forced messages were able to be aborted sometimes while using the FS
|
||||||
editor and using the CTRL-A key to abort.
|
editor and using the CTRL-A key to abort.
|
||||||
|
|
||||||
|
+ Toggling message base new scan and QWK scan can now accept commas, in
|
||||||
|
addition to range. For example: 1,3,7-9,15 will toggle bases
|
||||||
|
1, 3, 7, 8, 9, and 15.
|
||||||
|
|
||||||
|
+ Toggling file base new scan can now accept commas, in addition to range.
|
||||||
|
For example: 1,3,7-9,15 will toggle bases 1, 3, 7, 8, 9, and 15.
|
||||||
|
|
||||||
|
+ After toggling any base or range of bases, the list of bases will now
|
||||||
|
automatically redisplay for both message, qwk, and file bases.
|
||||||
|
|
||||||
|
! Fixed a bug in the MPL user get functions that could cause a RTE 100.
|
||||||
|
|
||||||
|
! Installation will now properly create the file base directory for the
|
||||||
|
default upload filebase.
|
||||||
|
|
||||||
|
+ Installation now creates a DOCS directory off the root installation. This
|
||||||
|
will eventually contain documentation.
|
||||||
|
|
||||||
|
+ Installation now creates default echomail in/out directories.
|
||||||
|
|
||||||
|
+ New program called FIDOPOLL has been added. This will poll or send mail
|
||||||
|
to configured echomail nodes using BINKP. This will eventually be baked
|
||||||
|
into MIS or MUTIL and will also include FTP echomail exchange as well as
|
||||||
|
QWK FTP networking. For now it just does BINKP.
|
||||||
|
|
||||||
|
This program does NOT run as a server (daemon) so it will only poll for
|
||||||
|
mail it will not allow nodes to connect to you to exchange mail.
|
||||||
|
|
||||||
|
<ALPHA 30 RELEASED>
|
||||||
|
|
Loading…
Reference in New Issue