From f540f5fa8f99050769c15fc6826c040f2e827136 Mon Sep 17 00:00:00 2001 From: mysticbbs Date: Sat, 6 Apr 2013 23:58:41 -0400 Subject: [PATCH] A30 --- mystic/bbs_ansi_menuform.pas | 2 + mystic/bbs_cfg_echomail.pas | 16 +++--- mystic/bbs_edit_ansi.pas | 5 +- mystic/bbs_filebase.pas | 57 +++++++++++++------ mystic/bbs_io.pas | 2 +- mystic/bbs_msgbase.pas | 104 +++++++++++++++++++++++------------ mystic/default.txt | 4 +- mystic/install.pas | 62 ++++++++------------- mystic/mutil_echoexport.pas | 4 +- mystic/mutil_echoimport.pas | 2 +- mystic/nodespy_term.pas | 2 +- mystic/whatsnew.txt | 83 ++++++++++++++++++++++++++-- 12 files changed, 235 insertions(+), 108 deletions(-) diff --git a/mystic/bbs_ansi_menuform.pas b/mystic/bbs_ansi_menuform.pas index d14b39c..7df9d4d 100644 --- a/mystic/bbs_ansi_menuform.pas +++ b/mystic/bbs_ansi_menuform.pas @@ -465,6 +465,8 @@ Procedure TAnsiMenuForm.AddTog (HK: Char; D: String; X, Y, FX, FY, DS, FS, MN, M Begin 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); ItemData[Items]^.Toggle := TG; diff --git a/mystic/bbs_cfg_echomail.pas b/mystic/bbs_cfg_echomail.pas index a0b9469..1d50866 100644 --- a/mystic/bbs_cfg_echomail.pas +++ b/mystic/bbs_cfg_echomail.pas @@ -192,7 +192,7 @@ Var Read (MBaseFile, MBase); 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; @@ -301,7 +301,7 @@ Var While Not Eof(EchoFile) Do Begin 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; List.Add('', 2); @@ -345,17 +345,17 @@ Begin 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 (13, 7, 112, strRep(#196, 53)); - WriteXY (13, 19, 112, strRep(#196, 53)); + WriteXY (7, 6, 112, '### Active Description' + strRep(' ', 35) + 'Network'); + WriteXY (7, 7, 112, strRep(#196, 66)); + WriteXY (7, 19, 112, strRep(#196, 66)); WriteXY (28, 20, 112, cfgCommandList); Repeat MakeList; - List.Open (11, 7, 69, 19); + List.Open (5, 7, 74, 19); List.Close; Case List.ExitCode of @@ -513,7 +513,7 @@ Var Begin List.Clear; - Reset (ExportFile); + ioReset (ExportFile, SizeOf(RecEchoMailExport), fmRWDN); While Not Eof(ExportFile) Do Begin Read (ExportFile, ExpNode); diff --git a/mystic/bbs_edit_ansi.pas b/mystic/bbs_edit_ansi.pas index 1a07e21..6511c2c 100644 --- a/mystic/bbs_edit_ansi.pas +++ b/mystic/bbs_edit_ansi.pas @@ -134,7 +134,10 @@ Begin Result := ''; 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; Procedure TEditorANSI.SetLineText (Line: LongInt; Str: String); diff --git a/mystic/bbs_filebase.pas b/mystic/bbs_filebase.pas index 6b97472..2d2e4a4 100644 --- a/mystic/bbs_filebase.pas +++ b/mystic/bbs_filebase.pas @@ -1167,13 +1167,17 @@ Var Var B : Word; Begin - B := 0; + If A = 0 Then Exit; + B := 0; FileMode := 66; + Reset (FBaseFile); Repeat - Read (FBaseFile, FBase); + {$I-} Read (FBaseFile, FBase); {$I+} + + If IoResult <> 0 Then Exit; If Session.User.Access(FBase.ListACS) Then Inc(B); @@ -1203,11 +1207,12 @@ Var End; Var - Old : RecFileBase; - Temp : String[11]; - A : Word; - N1 : Word; - N2 : Word; + Old : RecFileBase; + Temp : String[40]; + Count1 : LongInt; + Count2 : LongInt; + Num1 : String[40]; + Num2 : String[40]; Begin Old := FBase; @@ -1222,23 +1227,43 @@ Begin Repeat 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 = '?' Then List_Bases Else Begin - If Pos('-', Temp) > 0 Then Begin - N1 := strS2I(Copy(Temp, 1, Pos('-', Temp) - 1)); - N2 := strS2I(Copy(Temp, Pos('-', Temp) + 1, Length(Temp))); - End Else Begin - N1 := strS2I(Temp); - N2 := N1; + Num1 := ''; + Num2 := ''; + + For Count1 := 1 to Length(Temp) Do Begin + If Temp[Count1] = ' ' Then Continue; + + 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; - For A := N1 to N2 Do - If (A > 0) and (A <= Total) Then ToggleBase(A); + If Num2 <> '' Then Begin + For Count1 := strS2I(Num2) to strS2I(Num1) Do + ToggleBase(Count1); + End Else + ToggleBase(strS2I(Num1)); + + List_Bases; End; Until False; diff --git a/mystic/bbs_io.pas b/mystic/bbs_io.pas index db88b54..fa94fb6 100644 --- a/mystic/bbs_io.pas +++ b/mystic/bbs_io.pas @@ -1055,7 +1055,7 @@ Procedure TBBSIO.AnsiGotoXY (X: Byte; Y: Byte); Begin 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 Y = 0 Then Y := Screen.CursorY; diff --git a/mystic/bbs_msgbase.pas b/mystic/bbs_msgbase.pas index edc3727..9a917ae 100644 --- a/mystic/bbs_msgbase.pas +++ b/mystic/bbs_msgbase.pas @@ -758,13 +758,17 @@ Var Var B : Word; Begin + If A = 0 Then Exit; + B := 0; FileMode := 66; Reset (MBaseFile); Repeat - Read (MBaseFile, MBase); + {$I-} Read (MBaseFile, MBase); {$I+} + + If IoResult <> 0 Then Exit; If Session.User.Access(MBase.ListACS) Then Inc(B); @@ -806,11 +810,12 @@ Var End; Var - Old : RecMessageBase; - Temp : String[11]; - A : Word; - N1 : Word; - N2 : Word; + Old : RecMessageBase; + Temp : String[40]; + Count1 : LongInt; + Count2 : LongInt; + Num1 : String[40]; + Num2 : String[40]; Begin Old := MBase; @@ -828,23 +833,43 @@ Begin Repeat 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 = '?' Then List_Bases Else Begin - If Pos('-', Temp) > 0 Then Begin - N1 := strS2I(Copy(Temp, 1, Pos('-', Temp) - 1)); - N2 := strS2I(Copy(Temp, Pos('-', Temp) + 1, Length(Temp))); - End Else Begin - N1 := strS2I(Temp); - N2 := N1; + Num1 := ''; + Num2 := ''; + + For Count1 := 1 to Length(Temp) Do Begin + If Temp[Count1] = ' ' Then Continue; + + 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; - For A := N1 to N2 Do - If (A > 0) and (A <= Total) Then ToggleBase(A); + If Num2 <> '' Then Begin + For Count1 := strS2I(Num2) to strS2I(Num1) Do + ToggleBase(Count1); + End Else + ToggleBase(strS2I(Num1)); + + List_Bases; End; Until False; @@ -1400,7 +1425,7 @@ Var HelpFile : String[8]; LastRead : LongInt; ListMode : Byte; - ReplyID : String[31]; + ReplyID : String[60]; TempStr : String; Procedure SetMessageSecurity; @@ -1663,24 +1688,24 @@ Var Session.io.PromptInfo[9] := strStripB(Session.io.PromptInfo[9], ' '); End; - Procedure Send_Msg_Text (Str : String); + Procedure Send_Msg_Text (Str: String); Begin If IsQuotedText(Str) Then Begin - Session.io.AnsiColor(MBase.ColQuote); - Session.io.OutPipe (Str); - Session.io.AnsiColor(MBase.ColText); + Session.io.AnsiColor (MBase.ColQuote); + Session.io.OutPipe (Str); + Session.io.AnsiColor (MBase.ColText); End Else If Copy(Str, 1, 4) = '--- ' Then Begin - Session.io.AnsiColor(MBase.ColTear); - Session.io.OutPipe (Str); - Session.io.AnsiColor(MBase.ColText); + Session.io.AnsiColor (MBase.ColTear); + Session.io.OutPipe (Str); + Session.io.AnsiColor (MBase.ColText); End Else If Copy(Str, 1, 2) = ' *' Then Begin - Session.io.AnsiColor(MBase.ColOrigin); - Session.io.OutPipe (Str); - Session.io.AnsiColor(MBase.ColText); + Session.io.AnsiColor (MBase.ColOrigin); + Session.io.OutPipe (Str); + Session.io.AnsiColor (MBase.ColText); End Else - Session.io.OutPipe (Str); + Session.io.OutPipe(Str); If ListMode = 1 Then Session.io.AnsiClrEOL; @@ -1754,15 +1779,13 @@ Var A : LongInt; CurMsg : LongInt; Begin - Ansi_View_Message := False; + Result := False; Repeat Set_Node_Action (Session.GetPrompt(348)); SetMessageSecurity; - If MsgBase^.GetMsgNum > LastRead Then LastRead := MsgBase^.GetMsgNum; - If Session.User.IsThisUser(MsgBase^.GetTo) And Not MsgBase^.IsRcvd Then Begin MsgBase^.SetRcvd(True); MsgBase^.ReWriteHDR; @@ -1772,8 +1795,12 @@ Var Lines := 0; PageStart := 1; + If CurMsg > LastRead Then LastRead := CurMsg; + Session.io.AllowArrow := True; + // create ReadMessageText function? + MsgBase^.MsgTxtStartUp; While Not MsgBase^.EOM And (Lines < mysMaxMsgLines) Do Begin @@ -1845,6 +1872,7 @@ Var End; #80 : If PageEnd <= Lines Then Begin Inc (PageStart); + Draw_Msg_Text; End; #81 : If (Lines > PageSize) and (PageEnd <= Lines) Then Begin @@ -1869,6 +1897,7 @@ Var End; End Else MsgBase^.SeekFirst(CurMsg); + Break; End; 'E' : Begin @@ -1893,8 +1922,8 @@ Var Break; End; 'I' : Begin - LastRead := MsgBase^.GetHighMsgNum; - Ansi_View_Message := True; + LastRead := MsgBase^.GetHighMsgNum; + Result := True; RemoveNewScan(495); @@ -2045,6 +2074,7 @@ Var CurPage : Word; MsgInfo : Array[1..24] of MsgInfoRec; FirstPage : Boolean; + AskRemove : Boolean; Procedure DrawPage; Var @@ -2188,6 +2218,8 @@ Var SN : LongInt; A : Byte; Begin + AskRemove := False; + If Read_Page (True, False, False) Then Begin WereMsgs := True; PagePos := 1; @@ -2308,9 +2340,8 @@ Var End; 'G' : Break; 'I' : Begin - LastRead := MsgBase^.GetHighMsgNum; - - RemoveNewScan(495); + LastRead := MsgBase^.GetHighMsgNum; + AskRemove := True; Break; End; @@ -2328,6 +2359,9 @@ Var If WereMsgs Then Begin Session.io.AnsiGotoXY (1, Session.io.ScreenInfo[3].Y); Session.io.OutRawLn(''); + + If AskRemove Then + RemoveNewScan(495); End; End; diff --git a/mystic/default.txt b/mystic/default.txt index e5d46c1..65b7e85 100644 --- a/mystic/default.txt +++ b/mystic/default.txt @@ -196,7 +196,7 @@ ; &1 = base number &2 = base name &3 = scan base? (Yes or No) 093 |07|$R04|&1|15|$R03|&3 |07|$R29|&2 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 096 |CR |11|&1 will NOT 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) 201 |07|$R04|&1|15|$R03|&3 |07|$R29|&2 ; 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 203 |CR |11|&1 will NOT be scanned in new file scan!|CR ; &1 = File base name diff --git a/mystic/install.pas b/mystic/install.pas index 4f75fb1..11f8559 100644 --- a/mystic/install.pas +++ b/mystic/install.pas @@ -120,34 +120,13 @@ Begin End; Function MakeDir (Str: String) : Boolean; -Var - PathPos : Byte; - CurDIR : String; - Prefix : String; Begin Result := True; If DirExists(Str) Then Exit; - Prefix := ''; - PathPos := Pos(PathChar, 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; + If Not DirCreate(Str) Then + ShowError('Unable to create: ' + Str); End; Var @@ -391,8 +370,10 @@ Begin MakeDir (Config.ScriptPath); MakeDir (Config.AttachPath); MakeDir (Config.QwkPath); - MakeDir (Config.SystemPath + 'files'); - MakeDir (Config.SystemPath + 'files' + PathChar + 'uploads'); + MakeDir (Config.SystemPath + 'docs' + PathChar); + MakeDir (Config.SystemPath + 'files' + PathChar + 'uploads' + PathChar); + MakeDir (Config.InBoundPath); + MakeDir (Config.OutBoundPath); End; Procedure ExtractFile (Y : Byte; Desc, FN, EID, DestPath : String); @@ -426,18 +407,20 @@ Begin Reset (CfgFile); Read (CfgFile, Cfg); - Cfg.DataChanged := mysDataChanged; - Cfg.SystemPath := Config.SystemPath; - Cfg.AttachPath := Config.AttachPath; - Cfg.DataPath := Config.DataPath; - Cfg.MsgsPath := Config.MsgsPath; - Cfg.SemaPath := Config.SemaPath; - Cfg.QwkPath := Config.QwkPath; - Cfg.ScriptPath := Config.ScriptPath; - Cfg.LogsPath := Config.LogsPath; - Cfg.MenuPath := Lang.MenuPath; - Cfg.TextPath := Lang.TextPath; - Cfg.UserIdxPos := 0; + Cfg.DataChanged := mysDataChanged; + Cfg.SystemPath := Config.SystemPath; + Cfg.AttachPath := Config.AttachPath; + Cfg.DataPath := Config.DataPath; + Cfg.MsgsPath := Config.MsgsPath; + Cfg.SemaPath := Config.SemaPath; + Cfg.QwkPath := Config.QwkPath; + Cfg.ScriptPath := Config.ScriptPath; + Cfg.LogsPath := Config.LogsPath; + Cfg.MenuPath := Lang.MenuPath; + Cfg.TextPath := Lang.TextPath; + Cfg.InBoundPath := Config.InBoundPath; + Cfg.OutBoundPath := Config.OutBoundPath; + Cfg.UserIdxPos := 0; Cfg.SystemCalls := 0; Reset (CfgFile); @@ -502,6 +485,7 @@ Begin 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 (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; @@ -658,7 +642,9 @@ Begin { 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; Const diff --git a/mystic/mutil_echoexport.pas b/mystic/mutil_echoexport.pas index c5bdd9a..5ded667 100644 --- a/mystic/mutil_echoexport.pas +++ b/mystic/mutil_echoexport.pas @@ -334,6 +334,8 @@ Begin // of export If {MsgBase^.IsLocal And } Not MsgBase^.IsSent Then Begin + Log (3, '!', ' Found msg for export'); + Assign (ExportFile, MBase.Path + MBase.FileName + '.lnk'); If ioReset(ExportFile, SizeOf(RecEchoMailExport), fmRWDN) Then Begin @@ -345,7 +347,7 @@ Begin If MBase.NetType = 3 Then Begin 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; End Else If GetNodeByIndex(ExportIndex, EchoNode) Then diff --git a/mystic/mutil_echoimport.pas b/mystic/mutil_echoimport.pas index 4496c38..21d20ca 100644 --- a/mystic/mutil_echoimport.pas +++ b/mystic/mutil_echoimport.pas @@ -193,7 +193,7 @@ Var MBase.FileName := PKT.MsgArea; MBase.EchoTag := PKT.MsgArea; MBase.Path := bbsConfig.MsgsPath; - MBase.NetType := 2; + MBase.NetType := 1; MBase.ColQuote := bbsConfig.ColorQuote; MBase.ColText := bbsConfig.ColorText; MBase.ColTear := bbsConfig.ColorTear; diff --git a/mystic/nodespy_term.pas b/mystic/nodespy_term.pas index 246c08b..3b6f46c 100644 --- a/mystic/nodespy_term.pas +++ b/mystic/nodespy_term.pas @@ -688,7 +688,7 @@ Begin Zmodem.StatusProc := @ProtocolStatusUpdate; Zmodem.AbortProc := @ProtocolAbort; - Queue.Add(JustPath(FileName), JustFile(FileName)); + Queue.Add(JustPath(FileName), JustFile(FileName), ''); Zmodem.QueueSend; diff --git a/mystic/whatsnew.txt b/mystic/whatsnew.txt index d06be22..e36cb7a 100644 --- a/mystic/whatsnew.txt +++ b/mystic/whatsnew.txt @@ -2814,7 +2814,7 @@ 508 |09|$D79=|CR - + + Prompt #490 has been changed to separate message header flags by comma 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 - + + Added new INBOUND and OUTBOUND echomail directories into the System Configuration. @@ -2952,13 +2952,28 @@ you if you want to physically rename them on disk too upon leaving the 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 to their own base. All node configuration, echos, and export info comes from within the new editor options with Mystic's configuration. 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: 0. Set your inbound and outbound directories in the System Paths. @@ -2983,7 +2998,37 @@ 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 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 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. + +