Too much to list

This commit is contained in:
mysticbbs 2013-04-01 01:08:13 -04:00
parent e337c2b676
commit 13309e8b35
16 changed files with 178 additions and 77 deletions

View File

@ -130,7 +130,6 @@ Var
Box : TAnsiMenuBox; Box : TAnsiMenuBox;
Form : TAnsiMenuForm; Form : TAnsiMenuForm;
Topic : String; Topic : String;
TempB : Byte;
Begin Begin
Topic := '|03(|09Echomail Node|03) |01-|09> |15'; Topic := '|03(|09Echomail Node|03) |01-|09> |15';
Box := TAnsiMenuBox.Create; Box := TAnsiMenuBox.Create;
@ -417,15 +416,16 @@ Function Configuration_EchomailAddress (Edit: Boolean) : Byte;
Box : TAnsiMenuBox; Box : TAnsiMenuBox;
Form : TAnsiMenuForm; Form : TAnsiMenuForm;
Topic : String; Topic : String;
Count : Byte;
Begin Begin
Topic := '|03(|09Echomail Network|03) |01-|09> |15'; Topic := '|03(|09Echomail Network|03) |01-|09> |15';
Box := TAnsiMenuBox.Create; Box := TAnsiMenuBox.Create;
Form := TAnsiMenuForm.Create; Form := TAnsiMenuForm.Create;
Box.Open (14, 6, 66, 17); Box.Open (14, 6, 66, 18);
VerticalLine (29, 9, 12); VerticalLine (29, 9, 12);
VerticalLine (29, 14, 15); VerticalLine (29, 14, 16);
WriteXY (21, 8, 112, 'Address'); WriteXY (21, 8, 112, 'Address');
@ -436,11 +436,16 @@ Function Configuration_EchomailAddress (Edit: Boolean) : Byte;
Form.AddStr ('M', ' Domain', 21, 14, 31, 14, 8, 8, 8, @Config.NetDomain[Num], Topic + 'Network domain'); Form.AddStr ('M', ' Domain', 21, 14, 31, 14, 8, 8, 8, @Config.NetDomain[Num], Topic + 'Network domain');
Form.AddStr ('D', ' Description', 16, 15, 31, 15, 13, 25, 25, @Config.NetDesc[Num], Topic + 'Network description'); Form.AddStr ('D', ' Description', 16, 15, 31, 15, 13, 25, 25, @Config.NetDesc[Num], Topic + 'Network description');
Form.AddBol ('I', ' Primary', 20, 16, 31, 16, 9, 3, @Config.NetPrimary[Num], Topic + 'Is this a primary address?');
Form.Execute; Form.Execute;
Box.Close; If Config.NetPrimary[Num] Then
For Count := 1 to 30 Do
If Config.NetPrimary[Count] and (Count <> Num) Then
Config.NetPrimary[Count] := False;
Box.Close;
Form.Free; Form.Free;
Box.Free; Box.Free;
End; End;
@ -456,7 +461,7 @@ Var
List.Clear; List.Clear;
For A := 1 to 30 Do For A := 1 to 30 Do
List.Add(strPadL(strAddr2Str(Config.NetAddress[A]), 23, ' ') + ' ' + strPadL(Config.NetDesc[A], 20, ' '), 0); List.Add(strPadR(strAddr2Str(Config.NetAddress[A]), 23, ' ') + ' ' + strPadR(Config.NetDomain[A], 8, ' ') + ' ' + strPadR(strYN(Config.NetPrimary[A]), 3, ' ') + ' ' + Config.NetDesc[A], 0);
End; End;
Begin Begin
@ -467,15 +472,15 @@ Begin
List.NoWindow := True; List.NoWindow := True;
Box.Open (17, 5, 64, 20); Box.Open (7, 5, 74, 20);
WriteXY (27, 6, 112, 'Network Address Description'); WriteXY (9, 6, 112, 'Network Address Domain Pri Description');
WriteXY (19, 7, 112, strRep('Ä', 44)); WriteXY (9, 7, 112, strRep('Ä', 64));
Repeat Repeat
CreateList; CreateList;
List.Open (17, 7, 64, 20); List.Open (7, 7, 74, 20);
Case List.ExitCode of Case List.ExitCode of
#13 : If Edit Then #13 : If Edit Then

View File

@ -334,6 +334,7 @@ Var
Procedure MakeList; Procedure MakeList;
Var Var
Tag : Byte; Tag : Byte;
Addr : String;
Begin Begin
List.Clear; List.Clear;
@ -344,7 +345,12 @@ Var
Read (MBaseFile, MBase); Read (MBaseFile, MBase);
List.Add(strPadR(strI2S(FilePos(MBaseFile) - 1), 5, ' ') + ' ' + strPadR(strStripMCI(MBase.Name), 35, ' ') + ' ' + strPadL(strAddr2Str(Config.NetAddress[MBase.NetAddr]), 12, ' '), Tag); If MBase.NetType = 0 Then
Addr := 'Local'
Else
Addr := strAddr2Str(Config.NetAddress[MBase.NetAddr]);
List.Add(strPadR(strI2S(FilePos(MBaseFile) - 1), 5, ' ') + ' ' + strPadR(strStripMCI(MBase.Name), 35, ' ') + ' ' + strPadL(Addr, 12, ' '), Tag);
End; End;
List.Add('', 2); List.Add('', 2);

View File

@ -475,6 +475,7 @@ Begin
Form.AddBol ('T', ' External FSE', 13, 15, 29, 15, 14, 3, @Config.FSEditor, Topic + 'Use external editor'); Form.AddBol ('T', ' External FSE', 13, 15, 29, 15, 14, 3, @Config.FSEditor, Topic + 'Use external editor');
Form.AddStr ('F', ' FSE Command Line', 9, 16, 29, 16, 18, 40, 60, @Config.FSCommand, Topic + 'FSE command line'); Form.AddStr ('F', ' FSE Command Line', 9, 16, 29, 16, 18, 40, 60, @Config.FSCommand, Topic + 'FSE command line');
Form.AddStr ('D', ' Default Origin', 11, 17, 29, 17, 16, 40, 50, @Config.Origin, Topic + 'Origin line for new bases'); Form.AddStr ('D', ' Default Origin', 11, 17, 29, 17, 16, 40, 50, @Config.Origin, Topic + 'Origin line for new bases');
// Form.AddStr ('2', ' Default Domain', 11, 18, 29, 18, 16, 8, 8, @Config.DefDomain, Topic + 'Default echomail domain');
Form.AddAttr ('Q', ' Quote Color', 52, 7, 67, 7, 13, @Config.ColorQuote, Topic + 'Color for quoted text'); Form.AddAttr ('Q', ' Quote Color', 52, 7, 67, 7, 13, @Config.ColorQuote, Topic + 'Color for quoted text');
Form.AddAttr ('E', ' Text Color' , 53, 8, 67, 8, 12, @Config.ColorText, Topic + 'Color for message text'); Form.AddAttr ('E', ' Text Color' , 53, 8, 67, 8, 12, @Config.ColorText, Topic + 'Color for message text');

View File

@ -68,7 +68,7 @@ Type
Procedure DrawPage (StartY, EndY: Byte; ExitEOF: Boolean); Procedure DrawPage (StartY, EndY: Byte; ExitEOF: Boolean);
Procedure ScrollUp; Procedure ScrollUp;
Procedure ScrollDown (Draw: Boolean); Procedure ScrollDown (Draw: Boolean);
Function LineUp : Boolean; Function LineUp (Reset: Boolean) : Boolean;
Function LineDown (Reset: Boolean) : Boolean; Function LineDown (Reset: Boolean) : Boolean;
Procedure PageUp; Procedure PageUp;
Procedure PageDown; Procedure PageDown;
@ -514,7 +514,7 @@ Begin
DrawPage(1, WinSize, False); DrawPage(1, WinSize, False);
End; End;
Function TEditorANSI.LineUp : Boolean; Function TEditorANSI.LineUp (Reset: Boolean) : Boolean;
Begin Begin
Result := False; Result := False;
@ -523,7 +523,8 @@ Begin
Dec (CurLine); Dec (CurLine);
Dec (CurY); Dec (CurY);
If CurX > GetLineLength(ANSI.Data[CurLine], 80) Then // might be able to use curlength
If Reset or (CurX > GetLineLength(ANSI.Data[CurLine], 80)) Then
CurX := GetLineLength(ANSI.Data[CurLine], 80) + 1; CurX := GetLineLength(ANSI.Data[CurLine], 80) + 1;
If CurY < 1 Then Begin If CurY < 1 Then Begin
@ -537,7 +538,8 @@ Function TEditorANSI.LineDown (Reset: Boolean) : Boolean;
Begin Begin
Result := False; Result := False;
If CurLine >= mysMaxMsgLines Then Exit; If CurLine >= LastLine Then Exit;
// If CurLine >= mysMaxMsgLines Then Exit;
Inc (CurLine); Inc (CurLine);
Inc (CurY); Inc (CurY);
@ -648,7 +650,7 @@ Begin
DeleteLine (CurLine); DeleteLine (CurLine);
If Not LineUp Then DrawPage (CurY, WinSize, False); //optimize If Not LineUp(False) Then DrawPage (CurY, WinSize, False); //optimize
End Else Begin End Else Begin
JoinPos := GetWrapPos(ANSI.Data[CurLine], RowSize, RowSize - GetLineLength(ANSI.Data[CurLine - 1], RowSize)); JoinPos := GetWrapPos(ANSI.Data[CurLine], RowSize, RowSize - GetLineLength(ANSI.Data[CurLine - 1], RowSize));
@ -660,9 +662,9 @@ Begin
Move (ANSI.Data[CurLine][JoinPos + 1], JoinBuf, (CurLength - JoinPos + 1) * SizeOf(RecAnsiBufferChar)); Move (ANSI.Data[CurLine][JoinPos + 1], JoinBuf, (CurLength - JoinPos + 1) * SizeOf(RecAnsiBufferChar));
Move (JoinBuf, ANSI.Data[CurLine], RowSize * SizeOf(RecAnsiBufferChar)); Move (JoinBuf, ANSI.Data[CurLine], RowSize * SizeOf(RecAnsiBufferChar));
If Not LineUp Then DrawPage (CurY, WinSize, False); If Not LineUp(False) Then DrawPage (CurY, WinSize, False);
End Else Begin End Else Begin
LineUp; LineUp(False);
CurX := CurLength + 1; CurX := CurLength + 1;
End; End;
@ -1252,10 +1254,16 @@ Begin
If LineLen + JoinLen <= RowSize Then Begin If LineLen + JoinLen <= RowSize Then Begin
Move (ANSI.Data[Line + 1], ANSI.Data[Line][LineLen + 2], SizeOf(RecAnsiBufferChar) * JoinLen); Move (ANSI.Data[Line + 1], ANSI.Data[Line][LineLen + 2], SizeOf(RecAnsiBufferChar) * JoinLen);
ANSI.Data[Line][LineLen + 1].Ch := ' ';
DeleteLine (Line + 1); DeleteLine (Line + 1);
End Else End Else
If JoinPos > 0 Then Begin If JoinPos > 0 Then Begin
Move (ANSI.Data[Line + 1], ANSI.Data[Line][LineLen + 2], SizeOf(RecAnsiBufferChar) * (JoinPos - 1)); Move (ANSI.Data[Line + 1], ANSI.Data[Line][LineLen + 2], SizeOf(RecAnsiBufferChar) * (JoinPos - 1));
ANSI.Data[Line][LineLen + 1].Ch := ' ';
FillChar (JoinBuf, SizeOf(JoinBuf), #0); FillChar (JoinBuf, SizeOf(JoinBuf), #0);
Move (ANSI.Data[Line + 1][JoinPos + 1], JoinBuf, (JoinLen - JoinPos + 1) * SizeOf(RecAnsiBufferChar)); Move (ANSI.Data[Line + 1][JoinPos + 1], JoinBuf, (JoinLen - JoinPos + 1) * SizeOf(RecAnsiBufferChar));
Move (JoinBuf, ANSI.Data[Line + 1], RowSize * SizeOf(RecAnsiBufferChar)); Move (JoinBuf, ANSI.Data[Line + 1], RowSize * SizeOf(RecAnsiBufferChar));
@ -1287,10 +1295,10 @@ Begin
If Session.io.IsArrow Then Begin If Session.io.IsArrow Then Begin
Case Ch of Case Ch of
#71 : CurX := 1; #71 : CurX := 1;
#72 : LineUp; #72 : LineUp(False);
#73 : PageUp; #73 : PageUp;
#75 : If CurX > 1 Then Dec(CurX); #75 : If CurX > 1 Then Dec(CurX) Else LineUp(True);
#77 : If CurX <= RowSize Then Inc(CurX); #77 : If CurX <= CurLength Then Inc(CurX) Else LineDown(True);
#79 : CurX := CurLength + 1; #79 : CurX := CurLength + 1;
#80 : If CurLine < LastLine Then LineDown(False); #80 : If CurLine < LastLine Then LineDown(False);
#81 : PageDown; #81 : PageDown;
@ -1298,7 +1306,30 @@ Begin
End; End;
End Else End Else
Case Ch of Case Ch of
(*
^A : Begin
If Forced Then
Session.io.OutFull (Session.GetPrompt(307))
Else
Done := Session.io.GetYN(Session.GetPrompt(356), False);
If Not Done Then ReDrawTemplate(False);
End;
*)
^B : ReformParagraph; ^B : ReformParagraph;
^F : CurX := 1;
^G : CurX := CurLength + 1;
^H : DoBackSpace;
^I : Begin
If (CurX < RowSize) and (CurX MOD 5 = 0) Then
DoChar(' ');
While (CurX < RowSize) and (CurX MOD 5 <> 0) Do Begin
CurLength := GetLineLength(ANSI.Data[CurLine], RowSize);
DoChar(' ');
End;
End;
^K : Begin ^K : Begin
If CutPasted Then Begin If CutPasted Then Begin
CutTextPos := 0; CutTextPos := 0;
@ -1315,6 +1346,7 @@ Begin
DrawPage (CurY, WinSize, False); //optimize + 1 DrawPage (CurY, WinSize, False); //optimize + 1
End; End;
End; End;
^M : DoEnter;
^O : Begin ^O : Begin
Session.io.OutFile('fshelp', True, 0); Session.io.OutFile('fshelp', True, 0);
ReDrawTemplate(False); ReDrawTemplate(False);
@ -1356,8 +1388,6 @@ Begin
Session.io.AllowArrow := True; Session.io.AllowArrow := True;
End; End;
#08 : DoBackSpace;
#13 : DoEnter;
#32.. #32..
#254 : If (CurLength >= RowSize) and (GetWrapPos(ANSI.Data[CurLine], RowSize, RowSize) = 0) Then Begin #254 : If (CurLength >= RowSize) and (GetWrapPos(ANSI.Data[CurLine], RowSize, RowSize) = 0) Then Begin
// dont do anything // dont do anything

View File

@ -12,11 +12,7 @@ Uses
bbs_SysopChat, bbs_SysopChat,
{$ENDIF} {$ENDIF}
bbs_Common, bbs_Common,
{$IFDEF NEWEDITOR}
bbs_Edit_ANSI, bbs_Edit_ANSI,
{$ELSE}
bbs_Edit_Full,
{$ENDIF}
bbs_Edit_Line; bbs_Edit_Line;
Function Editor (Var Lines: SmallInt; MaxLen, MaxLine: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean; Function Editor (Var Lines: SmallInt; MaxLen, MaxLine: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean;
@ -57,7 +53,6 @@ Uses
bbs_MsgBase_Ansi, bbs_MsgBase_Ansi,
bbs_NodeInfo; bbs_NodeInfo;
{$IFDEF NEWEDITOR}
Function AnsiEditor (Var Lines: SmallInt; WrapPos: Byte; MaxLines: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean; Function AnsiEditor (Var Lines: SmallInt; WrapPos: Byte; MaxLines: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean;
Var Var
Editor : TEditorANSI; Editor : TEditorANSI;
@ -83,16 +78,11 @@ Begin
Editor.Free; Editor.Free;
End; End;
{$ENDIF}
Function Editor (Var Lines: SmallInt; MaxLen, MaxLine: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean; Function Editor (Var Lines: SmallInt; MaxLen, MaxLine: SmallInt; Forced: Boolean; Template: String; Var Subj: String) : Boolean;
Begin Begin
If (Session.io.Graphics > 0) and ((Session.User.ThisUser.EditType = 1) or ((Session.User.ThisUser.EditType = 2) and Session.io.GetYN(Session.GetPrompt(106), True))) Then If (Session.io.Graphics > 0) and ((Session.User.ThisUser.EditType = 1) or ((Session.User.ThisUser.EditType = 2) and Session.io.GetYN(Session.GetPrompt(106), True))) Then
{$IFDEF NEWEDITOR}
Editor := AnsiEditor(Lines, MaxLen, MaxLine, Forced, Template, Subj) Editor := AnsiEditor(Lines, MaxLen, MaxLine, Forced, Template, Subj)
{$ELSE}
Editor := FullEditor(Lines, MaxLen, MaxLine, Forced, Template, Subj)
{$ENDIF}
Else Else
Editor := LineEditor(Lines, MaxLen, MaxLine, False, Forced, Subj); Editor := LineEditor(Lines, MaxLen, MaxLine, False, Forced, Subj);
End; End;

View File

@ -550,8 +550,8 @@ Var
S : String; S : String;
A : SmallInt; A : SmallInt;
Begin Begin
If MBase.NetType > 0 Then Begin If (MBase.NetType > 0) and (MBase.NetType <> 3) Then Begin
Msg^.DoStringLn (#1 + 'MSGID: ' + strAddr2Str(Config.NetAddress[MBase.NetAddr]) + ' ' + strI2H(CurDateDos)); Msg^.DoStringLn (#1 + 'MSGID: ' + strAddr2Str(Config.NetAddress[MBase.NetAddr]) + ' ' + strI2H(CurDateDos, 8));
If ReplyID <> '' Then If ReplyID <> '' Then
Msg^.DoStringLn (#1 + 'REPLY: ' + ReplyID); Msg^.DoStringLn (#1 + 'REPLY: ' + ReplyID);

View File

@ -474,7 +474,9 @@ Begin
Error := IoResult; Error := IoResult;
JM^.TxtBufStart := FileSize(JM^.BufFile); JM^.TxtBufStart := FileSize(JM^.BufFile);
End; End;
TxtBuf^[JM^.TxtPos - JM^.TxtBufStart] := Ch; TxtBuf^[JM^.TxtPos - JM^.TxtBufStart] := Ch;
Inc(JM^.TxtPos); Inc(JM^.TxtPos);
End; End;
@ -1648,7 +1650,6 @@ Begin
Found := False; Found := False;
New (LastBuf); New (LastBuf);
Seek (LastFile, 0); Seek (LastFile, 0);
LastError := IoResult; LastError := IoResult;
@ -1792,7 +1793,9 @@ Begin
LockError := IoResult; LockError := IoResult;
End; End;
End; End;
Inc (JM^.LockCount); Inc (JM^.LockCount);
LockMsgBase := (LockError = 0); LockMsgBase := (LockError = 0);
End; End;
@ -1821,8 +1824,6 @@ Begin
UnLockMsgBase := (LockError = 0); UnLockMsgBase := (LockError = 0);
End; End;
{SetSeeAlso/GetSeeAlso provided by 2:201/623@FidoNet Jonas@iis.bbs.bad.se}
Procedure TMsgBaseJAM.SetNextSeeAlso(SAlso: LongInt); Procedure TMsgBaseJAM.SetNextSeeAlso(SAlso: LongInt);
Begin Begin
MsgHdr^.JamHdr.ReplyNext := SAlso; MsgHdr^.JamHdr.ReplyNext := SAlso;

View File

@ -892,7 +892,7 @@ Begin
If MBase.NetType <> 1 Then Continue; If MBase.NetType <> 1 Then Continue;
WriteLn (OutFile, '!' + Config.DataPath + MBase.FileName + ' ' + MBase.FileName + ' ' + strAddr2Str(Config.NetUplink[MBase.NetAddr])); WriteLn (OutFile, '!' + Config.DataPath + MBase.FileName + ' ' + MBase.FileName + ' ' + '0:0/0');
End; End;
End; End;

View File

@ -1524,7 +1524,7 @@ Begin
Store (TempLong, 4); Store (TempLong, 4);
End; End;
28 : Begin 28 : Begin
TempStr := strI2H(Param[1].L); TempStr := strI2H(Param[1].L, 8);
Store (TempStr, 256); Store (TempStr, 256);
End; End;
29 : Begin 29 : Begin

View File

@ -72,7 +72,7 @@
PostTextFiles = false PostTextFiles = false
PackMessageBases = false PackMessageBases = false
ImportEchoMail = false ImportEchoMail = false
ExportEchoMail = false ExportEchoMail = true
; ========================================================================== ; ==========================================================================
; ========================================================================== ; ==========================================================================

View File

@ -216,8 +216,8 @@ Begin
If DoMassUpload Then uMassUpload; If DoMassUpload Then uMassUpload;
If DoTopLists Then uTopLists; If DoTopLists Then uTopLists;
If DoAllFiles Then uAllFilesList; If DoAllFiles Then uAllFilesList;
If DoEchoExport Then uEchoExport;
If DoEchoImport Then uEchoImport; If DoEchoImport Then uEchoImport;
If DoEchoExport Then uEchoExport;
If DoMsgPurge Then uPurgeMessageBases; If DoMsgPurge Then uPurgeMessageBases;
If DoMsgPack Then uPackMessageBases; If DoMsgPack Then uPackMessageBases;
If DoMsgPost Then uPostMessages; If DoMsgPost Then uPostMessages;

View File

@ -60,6 +60,7 @@ Function SaveMessage (mArea: RecMessageBase; mFrom, mTo, mSubj: String;
Function GetFTNPKTName : String; Function GetFTNPKTName : String;
Function GetFTNArchiveName (Orig, Dest: RecEchoMailAddr) : String; Function GetFTNArchiveName (Orig, Dest: RecEchoMailAddr) : String;
Function GetFTNFlowName (Dest: RecEchoMailAddr) : String; Function GetFTNFlowName (Dest: RecEchoMailAddr) : String;
Function GetFTNOutPath (EchoNode: RecEchoMailNode) : String;
Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean; Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean;
Implementation Implementation
@ -494,12 +495,36 @@ Begin
If Net < 0 Then Net := 65536 + Net; If Net < 0 Then Net := 65536 + Net;
If Node < 0 Then Node := 65536 + Node; If Node < 0 Then Node := 65536 + Node;
Result := strI2H((Net SHL 16) OR Node); Result := strI2H((Net SHL 16) OR Node, 8);
End; End;
Function GetFTNFlowName (Dest: RecEchoMailAddr) : String; Function GetFTNFlowName (Dest: RecEchoMailAddr) : String;
Begin Begin
Result := strI2H((Dest.Net SHL 16) OR Dest.Node); Result := strI2H((Dest.Net SHL 16) OR Dest.Node, 8);
End;
Function IsFTNPrimary (EchoNode: RecEchoMailNode) : Boolean;
Var
Count : Byte;
Begin
For Count := 1 to 30 Do
If (strUpper(EchoNode.Domain) = strUpper(bbsConfig.NetDomain[Count])) and
(EchoNode.Address.Zone = bbsConfig.NetAddress[Count].Zone) and
(bbsConfig.NetPrimary[Count]) Then Begin
Result := True;
Exit;
End;
Result := False;
End;
Function GetFTNOutPath (EchoNode: RecEchoMailNode) : String;
Begin;
If IsFTNPrimary(EchoNode) Then
Result := bbsConfig.OutboundPath
Else
Result := DirLast(bbsConfig.OutboundPath) + strLower(EchoNode.Domain + '.' + strPadL(strI2H(EchoNode.Address.Zone, 3), 3, '0')) + PathChar;
End; End;
Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean; Function GetNodeByIndex (Num: LongInt; Var TempNode: RecEchoMailNode) : Boolean;

View File

@ -40,7 +40,7 @@ Begin
While Not Eof(T) Do Begin While Not Eof(T) Do Begin
ReadLn (T, Str); ReadLn (T, Str);
If strUpper(Str) = '^' + strUpper(PacketFN) Then Begin If (strUpper(Str) = strUpper(PacketFN)) or (strUpper(Copy(Str, 2, 255)) = strUpper(PacketFN)) Then Begin
Close (T); Close (T);
Exit; Exit;
End; End;
@ -61,6 +61,7 @@ Var
EchoNode : RecEchoMailNode; EchoNode : RecEchoMailNode;
PKTName : String; PKTName : String;
BundleName : String; BundleName : String;
BundlePath : String;
FLOName : String; FLOName : String;
OrigAddr : RecEchoMailAddr; OrigAddr : RecEchoMailAddr;
Begin Begin
@ -84,11 +85,19 @@ Begin
OrigAddr.Net := PH.OrigNet; OrigAddr.Net := PH.OrigNet;
OrigAddr.Node := PH.OrigNode; OrigAddr.Node := PH.OrigNode;
// TODO BundlePath := GetFTNOutPath(EchoNode);
// if echonode.echomail.crash etc change char F in FLO extension
FLOName := bbsConfig.OutboundPath + GetFTNFlowName(EchoNode.Address) + '.flo'; DirCreate (BundlePath);
BundleName := bbsConfig.OutboundPath + GetFTNArchiveName(OrigAddr, EchoNode.Address) + '.' + DayString[DayOfWeek(CurDateDos)];
FLOName := BundlePath + GetFTNFlowName(EchoNode.Address);
BundleName := BundlePath + GetFTNArchiveName(OrigAddr, EchoNode.Address) + '.' + strLower(DayString[DayOfWeek(CurDateDos)]);
Case EchoNode.MailType of
0 : FLOName := FLOName + '.flo';
1 : FLOName := FLOName + '.clo';
2 : FLOName := FLOName + '.dlo';
3 : FlOName := FLOName + '.hlo';
End;
// TODO // TODO
// check for existance, packet size limitations, etc and increment // check for existance, packet size limitations, etc and increment
@ -143,6 +152,7 @@ Var
Var Var
TempStr1 : String; TempStr1 : String;
TempStr2 : String; TempStr2 : String;
TempStr3 : String;
Begin Begin
If (EchoNode.Address.Zone = MsgBase^.GetOrigAddr.Zone) and If (EchoNode.Address.Zone = MsgBase^.GetOrigAddr.Zone) and
(EchoNode.Address.Net = MsgBase^.GetOrigAddr.Net) and (EchoNode.Address.Net = MsgBase^.GetOrigAddr.Net) and
@ -154,12 +164,32 @@ Var
GetTime (DT.Hour, DT.Min, DT.Sec, Temp); GetTime (DT.Hour, DT.Min, DT.Sec, Temp);
If MBase.NetType = 3 Then Begin If MBase.NetType = 3 Then Begin
TempStr1 := bbsConfig.OutboundPath + GetFTNFlowName(EchoNode.Address) + '.out'; // need to incorporate routing here?!?
TempStr2 := bbsConfig.OutboundPath + GetFTNFlowName(EchoNode.Address) + '.flo';
// change extensions based on crash etc from echonode TempStr3 := GetFTNOutPath(EchoNode);
// need to add aka matching somewhere in here and also incorporate
// routing? DirCreate (TempStr3);
TempStr1 := TempStr3 + GetFTNFlowName(EchoNode.Address);
TempStr2 := TempStr3 + GetFTNFlowName(EchoNode.Address);
Case EchoNode.MailType of
1 : Begin
TempStr1 := TempStr1 + '.cut';
TempStr2 := TempStr2 + '.clo';
End;
2 : Begin
TempStr1 := TempStr1 + '.dut';
TempStr2 := TempStr2 + '.dlo';
End;
3 : Begin
TempStr1 := TempStr1 + '.hut';
TempStr2 := TempStr2 + '.hlo';
End;
Else
TempStr1 := TempStr1 + '.out';
TempStr2 := TempStr2 + '.flo';
End;
Assign (F, TempStr1); Assign (F, TempStr1);
@ -179,7 +209,7 @@ Var
FillChar (PH, SizeOf(PH), 0); FillChar (PH, SizeOf(PH), 0);
PH.OrigNode := bbsConfig.NetAddress[MBase.NetAddr].Node; PH.OrigNode := MsgBase^.GetOrigAddr.Node;
PH.DestNode := EchoNode.Address.Node; PH.DestNode := EchoNode.Address.Node;
PH.Year := DT.Year; PH.Year := DT.Year;
PH.Month := DT.Month; PH.Month := DT.Month;
@ -188,10 +218,10 @@ Var
PH.Minute := DT.Min; PH.Minute := DT.Min;
PH.Second := DT.Sec; PH.Second := DT.Sec;
PH.PKTType := 2; PH.PKTType := 2;
PH.OrigNet := bbsConfig.NetAddress[MBase.NetAddr].Net; PH.OrigNet := MsgBase^.GetOrigAddr.Net;
PH.DestNet := EchoNode.Address.Net; PH.DestNet := EchoNode.Address.Net;
PH.ProdCode := 254; // RESEARCH THIS PH.ProdCode := 254; // RESEARCH THIS
PH.OrigZone := bbsConfig.NetAddress[MBase.NetAddr].Zone; PH.OrigZone := MsgBase^.GetOrigAddr.Zone;
PH.DestZone := EchoNode.Address.Zone; PH.DestZone := EchoNode.Address.Zone;
//Password : Array[1..8] of Char; // RESEARCH THIS //Password : Array[1..8] of Char; // RESEARCH THIS
@ -201,9 +231,9 @@ Var
FillChar (MH, SizeOf(MH), 0); FillChar (MH, SizeOf(MH), 0);
MH.MsgType := 2; MH.MsgType := 2;
MH.OrigNode := bbsConfig.NetAddress[MBase.NetAddr].Node; MH.OrigNode := MsgBase^.GetOrigAddr.Node;
MH.DestNode := EchoNode.Address.Node; MH.DestNode := EchoNode.Address.Node;
MH.OrigNet := bbsConfig.NetAddress[MBase.NetAddr].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 := FormattedDate(DT, 'DD NNN YY HH:MM:SS') + #0;
@ -225,7 +255,7 @@ Var
WriteStr ('AREA:' + MBase.EchoTag, #13); WriteStr ('AREA:' + MBase.EchoTag, #13);
If MBase.NetType = 3 Then If MBase.NetType = 3 Then
WriteStr (#1 + 'INTL ' + strAddr2Str(EchoNode.Address) + ' ' + strAddr2Str(bbsConfig.NetAddress[MBase.NetAddr]), #13); WriteStr (#1 + 'INTL ' + strAddr2Str(EchoNode.Address) + ' ' + strAddr2Str(MsgBase^.GetOrigAddr), #13);
WriteStr (#1 + 'TID: Mystic BBS ' + mysVersion, #13); WriteStr (#1 + 'TID: Mystic BBS ' + mysVersion, #13);
@ -237,15 +267,15 @@ Var
// SEEN-BY needs to include yourself and ANYTHING it is sent to (downlinks) // SEEN-BY needs to include yourself and ANYTHING it is sent to (downlinks)
// so we need to cycle through nodes for this mbase and add ALL of them // so we need to cycle through nodes for this mbase and add ALL of them
TempStr1 := 'SEEN-BY: ' + strI2S(bbsConfig.NetAddress[MBase.NetAddr].Net) + '/' + strI2S(bbsConfig.NetAddress[MBase.NetAddr].Node) + ' '; TempStr1 := 'SEEN-BY: ' + strI2S(MsgBase^.GetOrigAddr.Net) + '/' + strI2S(MsgBase^.GetOrigAddr.Node) + ' ';
If bbsConfig.NetAddress[MBase.NetAddr].Net <> EchoNode.Address.Net Then If MsgBase^.GetOrigAddr.Net <> EchoNode.Address.Net Then
TempStr1 := TempStr1 + strI2S(EchoNode.Address.Net) + '/'; TempStr1 := TempStr1 + strI2S(EchoNode.Address.Net) + '/';
TempStr1 := TempStr1 + strI2S(EchoNode.Address.Node); TempStr1 := TempStr1 + strI2S(EchoNode.Address.Node);
WriteStr (TempStr1, #13); WriteStr (TempStr1, #13);
WriteStr (#1 + 'PATH: ' + strI2S(bbsConfig.NetAddress[MBase.NetAddr].Net) + '/' + strI2S(bbsConfig.NetAddress[MBase.NetAddr].Node), #13); WriteStr (#1 + 'PATH: ' + strI2S(MsgBase^.GetOrigAddr.Net) + '/' + strI2S(MsgBase^.GetOrigAddr.Node), #13);
WriteStr (#0#0, #0); WriteStr (#0#0, #0);
Close (F); Close (F);
@ -303,6 +333,14 @@ Begin
While Not Eof(ExportFile) Do Begin While Not Eof(ExportFile) Do Begin
Read (ExportFile, ExportIndex); Read (ExportFile, ExportIndex);
// check base type and export network or echo? or
// do it from exportmessage?
If MBase.NetType = 3 Then Begin
If GetNodeByIndex(ExportIndex, EchoNode) Then
If EchoNode.Active and (EchoNode.Address.Zone = MsgBase^.GetOrigAddr.Zone) Then
ExportMessage;
End Else
If GetNodeByIndex(ExportIndex, EchoNode) Then If GetNodeByIndex(ExportIndex, EchoNode) Then
If EchoNode.Active Then If EchoNode.Active Then
ExportMessage; ExportMessage;

View File

@ -44,12 +44,9 @@ Uses
bbs_Common, bbs_Common,
bbs_Core, bbs_Core,
bbs_NodeInfo, bbs_NodeInfo,
{$IFDEF NEWEDITOR}
bbs_edit_ansi,
{$ENDIF}
bbs_Cfg_Main; bbs_Cfg_Main;
{$IFDEF NEWEDITOR} (*
Procedure TestEditor; Procedure TestEditor;
Var Var
T : TEditorANSI; T : TEditorANSI;
@ -59,7 +56,7 @@ Begin
T.Edit; T.Edit;
T.Free; T.Free;
End; End;
{$ENDIF} *)
Procedure InitClasses; Procedure InitClasses;
Begin Begin
@ -482,10 +479,8 @@ Begin
Set_Node_Action (Session.GetPrompt(345)); Set_Node_Action (Session.GetPrompt(345));
{$IFDEF NEWEDITOR}
// TestEditor; // TestEditor;
// Halt(0); // Halt(0);
{$ENDIF}
Session.User.UserLogon1 (Script); Session.User.UserLogon1 (Script);

View File

@ -246,7 +246,8 @@ Type
FSCommand : String[60]; FSCommand : String[60];
// ECHOMAIL NETWORKS // ECHOMAIL NETWORKS
NetAddress : Array[1..30] of RecEchoMailAddr; // echomail addresses NetAddress : Array[1..30] of RecEchoMailAddr; // echomail addresses
NetUplink : Array[1..30] of RecEchoMailAddr; // echomail uplink addresses NetPrimary : Array[1..30] of Boolean;
Res1 : Array[1..210] of Byte;
NetDomain : Array[1..30] of String[8]; // echomail domains (5D) NetDomain : Array[1..30] of String[8]; // echomail domains (5D)
NetDesc : Array[1..30] of String[25]; // echomail network description NetDesc : Array[1..30] of String[25]; // echomail network description
// OFFLINE MAIL (should include local qwk path) // OFFLINE MAIL (should include local qwk path)
@ -316,6 +317,7 @@ Type
ThemeOnStart : Boolean; ThemeOnStart : Boolean;
StartCodePage : Byte; StartCodePage : Byte;
AcsSeeOffline : String[mysMaxAcsSize]; AcsSeeOffline : String[mysMaxAcsSize];
// DefDomain : String[8];
//inetSMTPRelay : String[30]; //inetSMTPRelay : String[30];
//inetSMTPLogin : String[30]; //inetSMTPLogin : String[30];
//inetSMTPPW : String[30]; //inetSMTPPW : String[30];

View File

@ -2999,3 +2999,11 @@
+ Old Voting booth editor has been replaced with the VD menu command used + Old Voting booth editor has been replaced with the VD menu command used
to delete voting questions. to delete voting questions.
+ CTRL-B will now reformat paragraphs in the FS editor.
+ In the FSE the TAB key now works in insert mode meaning it will push and
wrap text by tabstop.
! Forced messages were able to be aborted sometimes while using the FS
editor and using the CTRL-A key to abort.