diff --git a/mystic/HISTORY.txt b/mystic/HISTORY.txt index d466565..e360689 100644 --- a/mystic/HISTORY.txt +++ b/mystic/HISTORY.txt @@ -3916,3 +3916,21 @@ + CTRL-U now Uncuts all text that is currently in the cut buffer within the full screen editor. You can uncut (paste) as many times as you like with the current buffer. + + + Mystic now has support for configuring Echomail domains for 5D addresses. + + + Mystic now has support to configure an uplink address for each echomail + address. + + + Default language filename can now be up to a 20 character filename + + + Default start menu can now be up to a 20 character filename + + + All ACS settings in the System configuration have been expanded from 20 + characters to 30 characters max. + + + All paths in the System configuration have been expanded to 80 characters + max. + + + MBBSUTIL now has an -AREASOUT option which will export a list of all bases + flagged as Echomail in the AREAS.BBS format. diff --git a/mystic/mbbsutil.pas b/mystic/mbbsutil.pas index 96835b8..58210bb 100644 --- a/mystic/mbbsutil.pas +++ b/mystic/mbbsutil.pas @@ -31,7 +31,7 @@ Program MBBSUTIL; Uses CRT, - Dos, + DOS, m_DateTime, m_Strings, m_QuickSort, @@ -54,6 +54,7 @@ Const UserPack : Boolean = False; MsgTrash : Boolean = False; NodeCheck : Boolean = True; + AreasOut : Boolean = False; UserKillDays : Integer = 0; BBSSortID : String = ''; @@ -62,6 +63,7 @@ Const BBSKillDays : Integer = 0; TrashFile : String = ''; TempPath : String = ''; + AreasFile : String = ''; Var ConfigFile : File of RecConfig; @@ -116,6 +118,7 @@ Begin Repeat If Eof(ArcFile) Then Begin Close (ArcFile); + Exit; End; @@ -141,6 +144,7 @@ Begin While A <= Length(Temp2) Do Begin If Temp2[A] = '%' Then Begin Inc(A); + If Temp2[A] = '1' Then Temp := Temp + FName Else If Temp2[A] = '2' Then Temp := Temp + Mask Else If Temp2[A] = '3' Then Temp := Temp + TempPath; @@ -153,6 +157,18 @@ Begin ShellDOS ('', Temp); End; +Function strAddr2Str (Addr : RecEchoMailAddr) : String; +Var + Temp : String[20]; +Begin + Temp := strI2S(Addr.Zone) + ':' + strI2S(Addr.Net) + '/' + + strI2S(Addr.Node); + + If Addr.Point <> 0 Then Temp := Temp + '.' + strI2S(Addr.Point); + + Result := Temp; +End; + Procedure Update_Status (Str: String); Begin GotoXY (44, WhereY); @@ -177,17 +193,18 @@ Begin WriteLn; WriteLn ('The following command line options are available:'); WriteLn; - WriteLn ('-BKILL Delete BBSes which haven''t been verified in '); - WriteLn ('-BPACK Pack all BBS lists'); - WriteLn ('-BSORT Sorts and packs BBS list by '); - WriteLn ('-FCHECK Checks file entries for correct size and status'); - WriteLn ('-FPACK Pack file bases'); - WriteLn ('-FSORT Sort file base entries by filename'); - WriteLn ('-FUPLOAD Mass upload all files into filebases'); - WriteLn ('-MTRASH Delete messages to/from users listed in '); - WriteLn ('-NOCHECK Bypass online user check at startup'); - WriteLn ('-UKILL Delete users who have not called in '); - WriteLn ('-UPACK Pack user database'); + WriteLn ('-AREAOUT Export AREAS.BBS format file in '); + WriteLn ('-BKILL Delete BBSes which haven''t been verified in '); + WriteLn ('-BPACK Pack all BBS lists'); + WriteLn ('-BSORT Sorts and packs BBS list by '); + WriteLn ('-FCHECK Checks file entries for correct size and status'); + WriteLn ('-FPACK Pack file bases'); + WriteLn ('-FSORT Sort file base entries by filename'); + WriteLn ('-FUPLOAD Mass upload all files into filebases'); + WriteLn ('-MTRASH Delete messages to/from users listed in '); + WriteLn ('-NOCHECK Bypass online user check at startup'); + WriteLn ('-UKILL Delete users who have not called in '); + WriteLn ('-UPACK Pack user database'); End; (***************************************************************************) @@ -1075,6 +1092,45 @@ Begin WriteLn; End; +Procedure ExportAreasBBS; +Var + MBaseFile : TBufFile; + MBase : RecMessageBase; + OutFile : Text; +Begin + Write ('Exporting AREAS.BBS : '); + + Assign (OutFile, AreasFile); + {$I-} ReWrite(OutFile); {$I+} + + If IoResult <> 0 Then Exit; + + MBaseFile := TBufFile.Create(8192); + + If MBaseFile.Open(Config.DataPath + 'mbases.dat', fmOpen, fmRWDN, SizeOf(RecMessageBase)) Then Begin + MBaseFile.Read(MBase); + + While Not MBaseFile.EOF Do Begin + MBaseFile.Read(MBase); + + Update_Bar (MBaseFile.FilePos, MBaseFile.FileSize); + Update_Status (strStripPipe(MBase.Name)); + + If MBase.NetType <> 1 Then Continue; + + WriteLn (OutFile, '!' + Config.DataPath + MBase.FileName + ' ' + MBase.FileName + ' ' + strAddr2Str(Config.NetUplink[MBase.NetAddr])); + End; + End; + + Close (OutFile); + + MBaseFile.Free; + + Update_Status ('Completed'); + + WriteLn; +End; + Var A : Byte; Temp : String; @@ -1116,6 +1172,19 @@ Begin While (A <= ParamCount) Do Begin Temp := strUpper(ParamStr(A)); + If Temp = '-AREASOUT' Then Begin + AreasFile := ParamStr(A+1); + + Inc(A); + + AreasOut := True; + + If AreasFile = '' Then Begin + WriteLn('Missing parameter'); + Halt(1); + End; + End; + If Temp = '-BKILL' Then Begin BBSKillID := ParamStr(A+1); BBSKillDays := strS2I(ParamStr(A+2)); @@ -1240,4 +1309,5 @@ Begin If UserKill Then Kill_User_File; If UserPack Then Pack_User_File; If MsgTrash Then MsgBase_Trash; + If AreasOut Then ExportAreasBBS; End.