diff --git a/mystic/mutil.ini b/mystic/mutil.ini index 68d3aa3..7b66c52 100644 --- a/mystic/mutil.ini +++ b/mystic/mutil.ini @@ -476,19 +476,26 @@ ; The above example will search in c:\nodelist and select the latest ; nodelist.### and agoranet.### nodelists. This comparison is first done ; by checking the day extension. If the extension is archived (.z12, etc) - ; it will unarchive the nodelist first before comparison. + ; it will be unarchived before comparison. ; ; After decompressing, the 3-digit day extensions are compared, selecting - ; the highest number. It will then compare the years of the file dates, + ; the highest number. It will also compare the years of the file dates, ; and select the newest option. So if you have nodelist.025 dated 2013 ; and also nodelist.320 dated 2012, nodelist.025 will be selected. ; - ; The same process would then be repeated for agoranet.### and once the - ; two files are found, it will merge them together in Mystic's data folder - ; so it can be used for nodelist lookups. + ; The same process is then be repeated for agoranet.### and once all of + ; the defined 'nodefiles' are processed, they will be merged together and + ; copied into Mystic's DATA folder so it can be used for nodelist lookups. ; ; If no nodelists are found, Mystic will not overwrite the current - ; nodelist. + ; nodelist. Comments are stripped while merging to lower filesize and + ; increase search performance. + + ; Strip nodes marked as DOWN? + strip_down = true + + ; Strip nodes marked as PRIVATE? + strip_private = true nodefile=d:\nodelists\nodelist nodefile=d:\nodelists\agoranet diff --git a/mystic/mutil_nodelist.pas b/mystic/mutil_nodelist.pas index 5cc530e..07963d6 100644 --- a/mystic/mutil_nodelist.pas +++ b/mystic/mutil_nodelist.pas @@ -17,6 +17,53 @@ Uses mUtil_Common, mUtil_Status; +Var + NodeListNoPrivate : Boolean; + NodeListNoDown : Boolean; + +Procedure FileAppend (F1, F2: String); +Var + BufIn, + BufOut : Array[1..8*1024] of Char; + TF1 : Text; + TF2 : Text; + Str : String; +Begin + Assign (TF1, F1); + + {$I-} Reset(TF1); {$I+} + + If IoResult <> 0 Then Exit; + + SetTextBuf (TF1, BufIn); + + Assign (TF2, F2); + {$I-} Append(TF2); {$I+} + + If (IoResult = 2) Then + ReWrite (TF2); + + SetTextBuf (TF2, BufOut); + + While Not Eof(TF1) Do Begin + ReadLn (TF1, Str); + + If (Str[1] = ';') Then + Continue; + + If NodeListNoDown And (Copy(Str, 1, 4) = 'Down') Then + Continue; + + If NodeListNoPrivate And (Copy(Str, 1, 3) = 'Pvt') Then + Continue; + + WriteLn (TF2, Str); + End; + + Close (TF1); + Close (TF2); +End; + Procedure ExtractNodeLists (BaseFile: String); Var DirInfo : SearchRec; @@ -156,7 +203,7 @@ Begin If Not NotFound Then Begin ProcessStatus ('Merging ' + ResPath + Res.Name, False); - FileAppend (ResPath + Res.Name, bbsCfg.DataPath + 'nodelist.txt'); + FileAppend (ResPath + Res.Name, bbsCfg.DataPath + 'nodelist.txt'); End; DirClean(TempPath, ''); @@ -174,6 +221,9 @@ Begin FileErase (bbsCfg.DataPath + 'nodelist.$$$'); FileReName (bbsCfg.DataPath + 'nodelist.txt', bbsCfg.DataPath + 'nodelist.$$$'); + NodeListNoDown := Ini.ReadBoolean(Header_NODELIST, 'strip_down', False); + NodeListNoPrivate := Ini.ReadBoolean(Header_NODELIST, 'strip_private', False); + Ini.SetSequential(True); Repeat diff --git a/mystic/qwkpoll.pas b/mystic/qwkpoll.pas index 585792f..055c89e 100644 --- a/mystic/qwkpoll.pas +++ b/mystic/qwkpoll.pas @@ -120,8 +120,10 @@ Begin While Not Eof(F) Do Begin ioRead (F, QwkNet); - If PollByQwkNet(QwkNet) Then - Inc (Count); + Case Mode of + 0 : If PollByQwkNet(QwkNet) Then + Inc (Count); + End; End; Close (F); @@ -129,13 +131,16 @@ Begin End Else If strS2I(Str) > 0 Then Begin If GetQwkNetByIndex(strS2I(Str), QwkNet) Then - If PollByQwkNet(QwkNet) Then - Inc (Count); + Case Mode of + 0 : If PollByQwkNet(QwkNet) Then + Inc (Count); + End; End Else Begin WriteLn ('Invalid command line.'); WriteLn; WriteLn ('Syntax: QWKPOLL [ALL]'); WriteLn (' [Qwk Network Index]'); + WriteLn; WriteLn (' [EXPORT] [QwkNet Index] [PATH TO CREATE REP]'); WriteLn (' [IMPORT] [QwkNet Index] [PATH OF QWK PACKET]'); WriteLn;