1        **************************************************************
2        *                                                            *
3        *                                                            *
4        *   *******   **     ****   ******  ****     ****   ******   *
5        *    **   *  ****   **  **  * ** *   **     **  **  * ** *   *
6        *    ** *   **  **  **        **     **     **        **     *
7        *    ****   **  **   ****     **     **      ****     **     *
8        *    ** *   ******      **    **     **   *     **    **     *
9        *    **     **  **  **  **    **     **  ** **  **    **     *
10        *   ****    **  **   ****    ****   *******  ****    ****    *
11        *                                                            *
12        *                                                            *
13        *                         Version 2.01                       *
14        *                                                            *
15        *             The ultimate V7+ nodelist processor            *
16        *                                                            *
17        *                                                            *
18        **************************************************************
19        *                                                            *
20        *        (C) Copyright 1992-1997  by  Alberto Pasquale       *
21        *                                                            *
22        *            A L L   R I G H T S   R E S E R V E D           *
23        *                                                            *
24        **************************************************************
25
26
27
28                FastLst 2.01 User's Manual, by Alberto Pasquale
29
30
31                                  INTRODUCTION
32
33
34        -> For licensing information, please see License.Doc.
35
36        Thanks for evaluating FastLst: the ultimate "Version 7+"
37        nodelist processor.
38
39        Version 7 is a common format for binary nodelists to be used by
40        mailers, message editors and all the programs that need fast
41        access to a compiled nodelist.
42
43        Version 7+ is fully compatible with V7 and adds lots of new
44        powerful features for V7+ aware applications.
45
46                                 Main Features
47
48
49        - Compiles to Version 7+ format nodelist.
50
51        - Support for Version 7.
52
53        - Support for old "Fidouser.Lst" sysop list.
54
55        - Multiple output nodelist (NODEX.*) compilation from one config
56          file.
57
58        - The complete maintenance of archived lists and diffs is
59          achieved through internal flexible configuration, with no need
60          for clumsy batch files.
61
62        - Uses "Squish Style" Compress.Cfg.
63
64        - Can be invoked from a batch file at predefined events: the
65          compilation will take place only if some new list/diff is
66          found.
67
68        - Multitasking friendly
69
70        - The OS/2 version allows for priority setting in the
71          configuration file.
72
73        - Compilation reports can be posted to Fido or Squish format
74          message areas.
75
76        - Full 4D (point) support, both via the "Point,..." and
77          "Boss,..." keywords.
78
79        - Internal support for "German type" pointlists.
80
81        - Easy addition of nodes via the "Node,<address>,..." keyword
82          in a private list.
83
84        - Easy specification of phone strings to be taken "verbatim"
85          for internet addresses and script names.
86
87        - In the case of SysOps of multiple nodes, keeps all the
88          name/address entries in the sysop index.
89
90        - User Cost (Msg Fee) can be set different from Call Cost.
91
92                                    CREDITS
93
94        This program uses the Squish "MsgAPI" code, Copyright 1991-1994
95        by Lanius Corporation. "Squish" and "Maximus" are trademarks of
96        Lanius Corporation.
97
98        "BinkleyTerm" is a trademark of Bit Bucket Software Co.
99
100        "4OS2" is a trademark of JP Software Inc.
101
102        The archivers referred-to throughout this documentation are
103        Copyright and/or trademarks of the respective owners.
104
105        "VMODEM" and "SIO" are Copyright by Raymond L. Gwinn.
106
107        "U.S. Robotics" and "I-modem" are registered trademarks of U.S.
108        Robotics Access Corporation.
109
110
111                               OVERALL OPERATION
112
113
114        FastLst has been designed to be invoked regularly from one of
115        your main batch files, after mail has been received or at
116        pre-arranged times at your pleasure: if any new (compressed or
117        not) nodelist/nodediff is detected, Fastlst processes them as
118        required (exiting with Errorlevel 0), otherwise it immediately
119        exits (errorlevel 100) with no further delay.
120
121        When FastLst detects a changed config or password file, it
122        compiles all the affected nodelists even if they are not new.
123
124        If you want FastLst to compile all of your nodelists even if no
125        new ones are present, you need to use the -f or -i command line
126        switch.
127
128        For each "output block" in the config file:
129
130        - New compressed lists or diffs are detected, unarchived and
131          optionally rearchived in supplementary formats.
132
133        - New diffs are detected and applied: the resulting new nodelist
134          is archived. Before applying a diff, the day number and CRC of
135          the old nodelist are compared against the ones requested by
136          the diff; after application, the CRC of the new nodelist is
137          checked.
138
139        - New lists are detected and the pertinent output nodelists are
140          rebuilt. If no new list is found for a specific "output
141          block", that output nodelist is not compiled, unless the -f or
142          -i command line switch is specified.
143
144        OS commands can be issued before or after each operation: for
145        example you can hatch the just created archive file.
146
147
148        ATTENTION:
149
150        - Every time a config file is changed, FastLst rebuilds all
151          the output nodelists, as if the -f command line switch were
152          specified.
153
154        - Every time a PasswordFile is changed, FastLst rebuilds the
155          nodelists that use it.
156
157        - The date of the archive files handled by FastLst is set to
158          the same value of the contained file (see ArcDate).
159
160
161                             INPUT NODELIST FORMAT
162
163
164        The source nodelists and nodediffs must be in standard "St.
165        Louis" format, as described in FTS-0005. Anyway, FastLst allows
166        some extensions in order to support 4D points, "German style"
167        pointlists, easy single node specifications and "verbatim" phone
168        strings.
169
170
171
172
173                       4D Point Support: POINT and BOSS keywords
174
175
176        First method:
177
178        Points are entered in the nodelist directly following their
179        bossnode.  Each one starts with the "Point,<point>" keyword.
180
181        Example:
182
183        ...
184        ...
185        ,504,Videl,Modena_I,Roberto_Zanasi,39-59-450600,9600,CM,XA,V34
186        Point,1,Pasquale,Modena_I,Alberto_Pasquale,-!Unpublished-,9600,
187        Point,2,SysOp,Modena_I,Roberto_Zanasi,-!Unpublished-,9600,
188        Point,3,Carta,Modena,Francesco_Carta,-!Unpublished-,9600,
189        ...
190        ...
191
192
193        Second method:
194
195        Points are entered in the nodelist following the
196        "Boss,<address>" keyword.
197
198        Example:
199
200        ...
201        ...
202        Boss,2:332/504
203        ,1,Pasquale,Modena_I,Alberto_Pasquale,-!Unpublished-,9600,
204        ,2,SysOp,Modena_I,Roberto_Zanasi,-!Unpublished-,9600,
205        ,3,Carta,Modena,Francesco_Carta,-!Unpublished-,9600,
206        ...
207        ...
208
209
210
211                               German Point List
212
213
214        This is a "normal" 3D nodelist that lists each Boss as a
215        "fakenet" HOST, with the real address as the system name,
216        followed by its points listed as nodes.
217
218        Example:
219
220        The following nodelist segment lists points 2:2400/1.1 .2 .3:
221
222        Host,20000,2400/1,City,Sysop_Name,49-951-999999,9600,CM,V34
223        ,1,System_Name_1,City_1,Sysop_Name_1,49-951-999999,9600,
224        ,2,System_Name_2,City_2,Sysop_Name_2,49-951-999999,9600,
225        ,3,System_Name_3,City_3,Sysop_Name_3,49-951-999999,9600,
226
227
228
229                                The NODE Keyword
230
231
232        Another extension over FTS-0005 is provided to allow easy
233        addition of nodes in small private lists.
234
235        When you need to add a node to your nodelist to call it or to
236        enforce a session password with it, you can use the
237        "Node,<address>[ <region>[ <hub>]],..." keyword to avoid the
238        necessity of adding the entries for its coordinators.
239
240        You should specify a full 4D address (point optional).
241
242        Any subsequent entry will take the current address as a starting
243        point.
244
245        E.g.: You want to add 9:888/777.3 of Region 88, Hub 700.
246
247        Please note that there is no need to specify Region and Hub
248        information when using the Node and Boss keywords, since:
249
250        - if the point's Boss is included via some other nodelist, the
251          Region and Hub information will be taken from its entry;
252
253        - if the point's Boss is not present in the compiled lists, this
254          point will be removed from the indices (in this case you may
255          want to use two entries for including both the Boss and the
256          point);
257
258
259        With "Node,...":
260        ...
261        ...
262        Node,9:888/777.3,System,City,SysOp,1-234-555-6666,9600,CM
263        ...
264        ...
265
266        With "Boss,...":
267        ...
268        ...
269        Boss,9:888/777
270        ,3,System,City,SysOp,1-234-555-6666,9600,CM
271        ...
272        ...
273
274        With the traditional method:
275        ...
276        ...
277        Zone,9,...
278        Region,88,...
279        Host,888,...
280        Hub,700,...
281        ,777,...
282        Point,3,System,City,SysOp,1-234-555-6666,9600,CM
283        ...
284        ...
285
286
287        Now let's add 8:101/611 and 8:101/612 in region 10, hub 600:
288
289        With "Node,...":
290        ...
291        ...
292        Node,8:101/611 10 600,System,City,SysOp,1-234-555-6666,9600,CM
293        ,612,System,City,SysOp,1-234-555-6667,9600,CM
294        ...
295        ...
296
297        With the traditional method:
298        ...
299        ...
300        Zone,8,...
301        Region,10,...
302        Host,101,...
303        Hub,600,...
304        ,611,System,City,SysOp,1-234-555-6666,9600,CM
305        ,612,System,City,SysOp,1-234-555-6666,9600,CM
306        ...
307        ...
308
309
310
311                                Verbatim Phones
312
313        When a phone entry contains non-numeric characters, it is taken
314        verbatim (i.e. no dial translation is applied to adjust the area
315        code and long distance or international prefixes).
316
317        Call defaults are defined by the CostVerbatimPhone statement.
318
319        Note: you might need to change the dots '.' in internet
320        addresses to asterisks '*', in order to avoid that the mailer
321        (e.g. Binkley) translates them: see TypeDef.
322
323        Examples:
324
325        Internet address:
326
327        ,6,System,City,SysOp,Fantasy.Com,9600,CM,VM
328
329        IP address:
330
331        ,6,System,City,SysOp,123.456.789.012,9600,CM,VM
332
333        Script name:
334
335        ,6,System,City,SysOp,"Fantasy.Scr",9600,CM,V34
336
337        See also the Phone statement.
338
339
340
341                       IP addresses (Fido Zone 2 method)
342
343        The method used in the Zone 2 Fidonet nodelist wants to be
344        completely compatible with the past: an IP address is listed so
345        that it looks as a normal phone number.
346
347        To avoid PSTN calls to these numbers, an "international" prefix
348        of 000 is used.
349
350        The flags specify the type of connections allowed (VModem,
351        Telnet, BinkD etc.).
352
353        Example:
354
355        The IP address "194.155.233.455" is listed as
356        "000-194-155-233-455", with appropriate flags.
357
358        FastLst changes this "fake phone" string back to
359        "194.155.233.455" and then processes it just as if it were
360        listed this way in the nodelist.
361
362        All the processing for "Verbatim Phones" is applied, including
363        any switch-based phone translation.
364
365
366                               MISCELLANEOUS INFO
367
368
369                                Multiple Sysops
370
371
372        In the case of SysOps of more than one system, all the
373        name/address couples of compiled entries are output to the SysOp
374        index.
375
376
377                               Redirected Systems
378
379
380        Systems that have no valid phone number (Unpublished, on Hold),
381        are redirected, provided you do not exclude redirection using
382        the "NoRedir" config keyword.
383
384        A redirected system is given the phone number, baud rate, modem
385        type, cost and flags of the preceding coordinator, the Board
386        name is prepended with '-R-'.
387
388        If you have a session password with the system to be redirected
389        or with the system it should be redirected to, no redirection is
390        done in order to prevent password-mismatch errors in the case
391        the Unpublished/Hold system calls you.
392
393        Points are never redirected.
394
395        The systems that have no valid phone number and cannot be
396        redirected take an EMPTY phone number string, so that your
397        mailer does not send unexpected strings to your modem attempting
398        to call these systems, should something appear in your outbound
399        addressed to them.
400
401        Pay attention: if you want to directly call these
402        null_phone-systems or their coordinators, you have to give them
403        a phone number using the "Phone" statement in the configuration
404        file.
405
406
407
408
409                                  INSTALLATION
410
411
412        1) There are 3 versions of FastLst:
413
414           OS/2, W32, DOS 32 (with DOS4GW DOS Extender), distributed in
415           separate archives (see Readme.1st).
416
417           Choose the one that fits you better.
418
419        2) Write your FastLst.Cfg.
420           You can find useful examples in the Fast_*.Cfg files and
421           detailed information in the "CFG REFERENCE" section of this
422           documentation.
423
424
425        3) Edit your batch file in order to call FastLst whenever you
426           would like to test for the presence of new list/diff files
427           and process them. If you do not pass a different pathname as
428           a command line parameter, FastLst.Cfg must reside in the
429           current directory.
430
431
432        4) (OS/2): Make sure you have the MSGAPI32.DLL in a directory
433             contained in your LIBPATH. MSGAPI32.DLL can be found in the
434             Squish 1.11 archive (SQSHP111.LZH).
435
436
437           (W32): Make sure you have the MSGAPINT.DLL in a directory
438             contained in your PATH. MSGAPINT.DLL can be found in the
439             Max 3.01 for Windows archive (MAX301N.ZIP).
440
441
442           (DOS32): Make sure you have the DOS4GW.EXE Dos extender (from
443             Tenberry Software Inc.) in your path.
444
445             The DOS4GW extender requires an XMS or DPMI memory driver
446             installed in your config.sys: e.g. HIMEM.SYS, QEMM (by
447             QuarterDeck Office Systems Inc.).
448
449
450        5) FastLst requires a lot of memory to compile long nodelists.
451
452           A set of input nodelists totalling 60,000 nodes requires
453           approximately 12MB for V7+ "in memory" compilation, 7MB when
454           using "on disk" DTP linking and 4.5MB for simple V7.
455
456           You have to decide whether to use the "LinkOnDisk"
457           statement in the configuration file. If you have enough
458           physical memory available you should use the default "in
459           memory" mode. On the other hand, if the execution of FastLst
460           is excessively slow, you probably are low on memory and you
461           could benefit by the use of "on disk" DTP linking.
462
463           (DOS): Even if "in memory" DTP linking is
464             configured, FastLst automatically switches to "on disk"
465             mode if it cannot allocate the needed memory.
466
467             If you experience "out of memory" errors, then you have to
468             enable the DOS4GW virtual memory mode, using the DOS4GVM
469             environment variable (e.g. for 16MB virtual allocation
470             size: SET DOS4GVM=VirtualSize#16384).
471
472             This works under real Dos only: if you are using OS/2 dos
473             sessions, use a higher DPMI_MEMORY_LIMIT in the Dos
474             settings.
475
476             Please note that FastLst tells you (on screen, in the
477             logs, in the report message) how much memory remains during
478             compilation, so that you can realize when you are running
479             in marginal conditions and consequently adjust your
480             configuration before you run out of memory.
481
482
483
484                             COMMAND LINE SWITCHES
485
486
487        -c<cfg>
488                Use <cfg> configuration file instead of FASTLST.CFG.
489
490        -f
491                Force compilation even if no new list/diff has been
492                detected.
493
494        -i
495                Ignore FastLst.Dat: run as if it were the first time.
496                All nodelists compiled, all exports executed.
497
498        -p
499                Prepare: Unarc new lists and diffs, Apply diffs and Arc
500                new nodelists, do not compile nodelists.
501
502        -r
503                When applying a diff, FastLst usually deletes the newly
504                generated source nodelist file if a CRC error is
505                detected. With this switch the new nodelist is _not_
506                deleted, so that it will be processed anyway.
507
508                When compiling a list, FastLst usually aborts the
509                compilation of the current output nodelist if a CRC
510                error is detected. With this switch the current output
511                nodelist will be entirely compiled anyway.
512
513        -h or -?
514                for help
515
516
517                                  ERRORLEVELS
518
519
520          0 - Normal termination, something compiled
521          1 - Help requested
522          2 - File Open error
523          3 - Abnormal termination
524          4 - Disk Full
525          5 - Can't find config file
526          6 - Configuration error
527          7 - Out of memory
528          8 - Read error while applying diff
529          9 - CRC error (applying diff)
530         10 - CRC error (compiling list)
531         11 - User Break
532         12 - Cannot rename temporary output nodelist files
533         13 - Cannot open source nodelist file
534         14 - Timeout waiting on V7+ semaphore
535         15 - Too many nodelists in inbound directories
536         16 - Nothing found after unarchiving a fixed-name nodelist
537         17 - Error Linking output files
538
539        100 - Normal termination, nothing compiled
540
541        250 - MsgApi: Init Error
542        251 - MsgApi: Area Open Error
543        252 - MsgApi: Area Lock Error
544        253 - MsgApi: Area Close Error
545
546
547
548                                 CONFIGURATION
549
550
551        Before analyzing the cfg keywords in detail, let's introduce the
552        overall mechanism that is at the basis of FastLst's
553        configuration.
554
555        If you are converting from a different nodelist compiler, please
556        forget the old configuration and start from scratch.
557
558        FastLst.Cfg is divided into several logical blocks and the
559        sequence of the various statements is essential: you cannot just
560        put keywords somewhere in the config file; they must be arranged
561        in the correct order.
562
563        At first, this characteristic of FastLst's configuration might
564        appear complex to understand, but, as soon as you will grasp its
565        logic, you will understand that it's really easy to write a
566        correct configuration file and you will appreciate its
567        extraordinary flexibility.
568
569        The first block of configuration is the "Global" one.
570        The verbs in this block refer to the compilation of all the
571        nodelists.
572
573        Then there are one or more "Output Blocks": each output block
574        refers to the compilation of a single nodelist (e.g.
575        NODEX.*).
576
577        Each "Output Block" has a "Output section" (with statements
578        regarding the compilation of the whole <NODEX>.* list) and one
579        or more "Input blocks" containing the verbs that describe how to
580        compile each of the source nodelists.
581
582        The first "Output Block" can optionally be of a special kind: a
583        "NoCompile" block, whose "Input Blocks" describe nodelists that
584        must be maintained (e.g. diffs applied) but not compiled to any
585        <NODEX>.* list.
586
587        Some statements can be used in blocks of a particular type only,
588        others can be used in many different places depending on what
589        nodelists you want to be affected. As a rule of thumb, you can
590        use each statement anywhere it seems to be logically acceptable.
591
592        If you feel frightened by such abstract considerations, please
593        take a look at the example Fast*.Cfg files, so that you can
594        quickly realize it's not that difficult.
595
596        To write your own configuration file you should start modifying
597        the example one that is more adequate to your needs.
598
599        Now, let's consider all the verbs that are allowed in FastLst's
600        configuration.
601
602
603
604                                 CFG REFERENCE
605
606
607
608        - Items between square brackets (e.g. [<item>]) are optional.
609
610        - The names of the various Keywords are NOT case sensitive.
611
612        - When a directory path is required, the trailing backslash '\'
613          is optional.
614
615        - The ';' character starts comments: any character following the
616          ';' is ignored, unless inside quoted strings.
617
618        - The maximum length of configuration lines is 254 characters,
619          so don't go further (you can always split address lists into
620          smaller ones).
621
622        - In the OS/2 version, any file specification can be a legal
623          OS/2 name, between double quotes if necessary.
624
625        - Environment variables can be used anywhere in the
626          configuration files.
627
628          Variable names must be at least 2 character long, are preceded
629          by '%' and followed by either '%' or space.
630
631          Environment variable may also be nested.
632
633          To specify a '%' character, write two of them "%%".
634
635          Example:
636
637            in a batch:      SET BBSPATH=d:\bbs\
638
639            in FastLst.Cfg:  StatusLog %BBSPATH%log\fastlst.log
640
641            expands to:      StatusLog d:\bbs\log\fastlst.log
642
643          Nested Example:
644
645            in a batch:
646                SET BBSLOGS=%%BBSPATH%%log\
647                SET BBSPATH=d:\bbs\
648
649            in FastLst.Cfg:  StatusLog %BBSLOGS%fastlst.log
650
651            expands to:      StatusLog d:\bbs\log\fastlst.log
652
653
654        ATTENTION
655
656        Please, note that the order of the configuration statements
657        follows some logical rule. In order not to create confusion in
658        the .cfg file and not to break some _necessary_ order relation,
659        please follow the scheme proposed in the example Fast*.CFG files
660        and in this reference documentation.
661
662        Please, be aware that the generation of text files (FidoTxt,
663        FidoPrn, FidoUserLst verbs) and the use of lots of options and
664        overrides can slow down the compilation process: use only the
665        options/overrides that you really need if you mind compilation
666        time.
667
668
669
670        Include <filename>
671
672          You can split the configuration into multiple files, including
673          them via this statement, which can be used everywhere and
674          nested without limits.
675
676
677                                  G L O B A L
678
679
680        The following verbs can be used in the Global section of
681        FastLst.cfg. Some of them can be used in other places also, so
682        they are divided into separate sections.
683
684
685
686
687                                  G L O B A L
688
689                                   Section A
690
691
692
693        The following configuration verbs can be used in the GLOBAL
694        section of FastLst.Cfg.
695
696
697        RegKey <RegKey>
698
699                Registered Users only: <RegKey> is the registration key
700                and it is NOT case sensitive.
701
702            Example:
703
704                RegKey dfhyuwru6274623
705
706
707
708        Priority <type> [<level>]
709
710                Changes the execution priority of the FastLst process
711                (OS/2 only).
712
713                Ignored by NT and DOS versions.
714
715                <type> is one of: Idle Regular High
716
717                <level> is an integer in the range 0...31 and defaults
718                to 0.
719
720                If you do not use this statement, FastLst will run at
721                the default priority, which normally is "Regular 0".
722
723            Examples:
724
725                Priority High 31
726
727                  Gives Fastlst the highest priority for "non
728                  time-critical" processes. It will run fast even if it
729                  is in the background and other processes are active.
730
731
732                Priority Idle
733
734                  Gives FastLst the lowest priority, so that it loads
735                  the system as minimally as possible. It will run
736                  significantly slower, especially if in the background
737                  or when other CPU intensive processes are in
738                  execution.
739
740
741
742        StatusLog <LogFile>
743
744                <LogFile> is the name of the file where all the
745                operations performed by FastLst will be logged,
746                following the "Binkley Style".
747
748                In multitasking environments, please be sure to use a
749                file that cannot be used by other processes at the same
750                time. For example: if (in your system) FastLst can be
751                executed while Binkley is running, please use different
752                log files.
753
754                Should you not want the log file, you can comment this
755                keyword out.
756
757            Example:
758
759                StatusLog d:\bbs\log\FastLst.log
760
761
762
763        CompressCfg <compress_cfg>
764
765                This is a "Squish style" compress definition file.
766
767                In the case you are using a case-sensitive
768                de/compression program (e.g. OS/2 ZIP/UNZIP), please
769                make sure to use the correct switches in <compress_cfg>
770                and/or the correct case (Lower/Upper) in <NodeList> and
771                <NodeDiff> specifications.
772
773                You can find the suggested <compress_cfg> in the example
774                Compress.Cfg file included in the FastLst pack.
775
776                If you are already using Squish and/or Maximus, you can
777                just specify the name of their compress.cfg (but do
778                check that they indicate the necessary switches to avoid
779                case sensitiveness during extraction).
780
781                Refer to the "Compress Definition File" section at the
782                end of this document for the syntax of <compress_cfg>.
783
784
785
786        InputPath <NodeDir>
787
788                Specifies the default path for input files (source
789                nodelists/nodediffs). You can override it by using a
790                full pathname in input-file specifications.
791
792                Created if not existing.
793
794            Example:
795
796                InputPath d:\bbs\nodelist\
797
798
799
800        ArcPath <ArcNodeDir>
801
802                Specifies the default path for Archived nodelist files.
803                It usually points to the file area where your TIC
804                processor moves the inbound nodelist archives.
805
806                You can override it by using a full pathname in
807                Archived-file specifications.
808
809            Example:
810
811                ArcPath d:\bbs\file\nodelist\
812
813
814
815        ArcDate Write|Creation
816
817            (OS/2)
818                Selects the date to be used for computing the age of
819                fixed-name archived nodelist files.
820
821                This setting is useful for HPFS (which has separate
822                Write and Creation dates) and ignored for FAT.
823
824                If not specified, "Creation" is assumed.
825
826                Attention: in order to avoid problems in the case the
827                date has been corrupted during the transfer of the file,
828                it is best to choose the same date that your mailer sets
829                as "receive/upload" date or that is touched by your TIC
830                processor.
831
832            Examples:
833
834               ArcDate Write       ; Use the Write date
835               ArcDate Creation    ; same as default
836
837
838
839        MultiLineDesc <nnn> [<c>]
840
841                By default, files.bbs description must be on a single
842                line; this statement enables Multi-Line support.
843
844                <nnn> is the number of spaces that must precede the
845                continuation lines.
846
847                <c> is the continuation character.
848
849                If <c> is NOT specified, it is assumed that the
850                continuation lines must be preceded by <nnn> spaces.
851
852                If <c> IS specified, it is assumed that the continuation
853                lines must be preceded by <nnn> spaces, the <c>
854                character and one more space.
855
856                For example, to have the 2nd and following description
857                lines in files.bbs start at the 32nd column, use:
858
859                MultiLineDesc 31
860
861                A description in files.bbs would be like:
862
863                Test.Zip This is the first description line
864                                               this is the 2nd line
865                                               this is the 3rd line
866                ^                             ^^
867                1                           31  32
868
869                To have the continuation lines preceded by a '|'
870                character, use:
871
872                MultiLineDesc 29 |
873
874                A description in files.bbs would be like:
875
876                Test.Zip This is the first description line
877                                             | this is the 2nd line
878                                             | this is the 3rd line
879                ^                           ^  ^
880                1                          29  32
881
882
883
884        KillAfter
885
886                Old output files are killed after the new ones have been
887                successfully written.
888
889                The new output files are written to temporary names,
890                then the old ones are killed and the new ones renamed
891                (and FastLst retries for 30s in case of error, to be
892                multitasking smart).
893
894                Thus you will always have a valid compiled nodelist,
895                even in the case of a compilation error and consequent
896                compile abortion. Besides, your multitasking system can
897                continue operations while FastLst is working. On the
898                other hand you might need some more spare disk space to
899                hold the old and new files during compilation.
900
901
902
903        KillSource
904
905                Tells FastLst to kill all uncompressed nodelists (that
906                are also available in archived format) before
907                terminating.
908
909                Please note that FastLst deletes a source nodelist only
910                if the ArcList statement is defined.
911
912                Besides, when the NodeDiff statement is used, an
913                ArcMethod must be defined to allow the deletion of the
914                nodelist.
915
916                When no NodeDiff is defined, FastLst assumes that the
917                uncompressed NodeList has been extracted from a
918                corresponding archive.
919
920
921
922        BeforeKillSource <command>
923
924                This statement is used to invoke a command of your
925                choice before the source nodelists are killed, upon
926                FastLst completion.
927
928                <command> is executed even if "KillSource" is not used.
929                It is a means of invoking a command before FastLst ends.
930
931                The "NeededBeforeKill" verb must be used to specify the
932                NodeLists needed by this command: if one of these
933                nodelists is found new, then this command is invoked
934                after decompressing all the nodelists that have the
935                "NeededBeforeKill" attribute (and have not been
936                decompressed yet).
937
938                IMPORTANT: <command> is executed ONLY if some nodelist
939                affected by a "NeededBeforeKill" verb has been detected
940                as new.
941
942                <command> can be any command that is valid for the
943                command interpreter specified in your COMSPEC
944                environment variable.
945
946                If <command> invokes an executable file, it is loaded
947                and executed directly; otherwise your command
948                interpreter is invoked, so that you can execute a batch
949                file or any other valid command.
950
951                No variable parameters are supported.
952
953
954
955        Dash2Comma
956
957                Change dashes to commas in the phone numbers.
958
959                Useful for people that are still connected to ancient
960                "rotary pulse" electromechanic telephone exchanges.
961
962
963
964        NoReport
965
966                Do not output nodelist statistics
967
968
969
970        NoRedir
971
972                Nodes that do not have a valid phone number (Hold,
973                Unpublished) are usually redirected to their
974                coordinators.
975
976                When this verb is used, redirection does not take place
977                and the node is given an empty phone number, so that you
978                never call a system different from that you think you
979                are calling.
980
981                Please note that (even with no NoRedir verb):
982                - points are never redirected;
983                - if you have a password with a system or its
984                  coordinator, this node will never be redirected.
985
986
987
988        V7BugFix
989
990                Circumvents a bug with V7 nodelist in Binkley 2.50 (and
991                perhaps in many other programs whose V7 search function
992                was inspired by Binkley's sources) that can sometimes
993                hide segments of V7 nodelist.
994
995                Binkley 2.60 is OK, but some other programs may not: if
996                you are unsure, keep this keyword active.
997
998
999
1000        MsgLogArea <path> [-$]
1001
1002                Some information about the compilation can be reported
1003                to a fido or squish message area.
1004
1005                <path> indicates a message area for reporting
1006                       compilation logs.
1007
1008                -$     specifies that the area is in Squish format;
1009                       otherwise it is assumed to be *.MSG.
1010
1011                The "MsgLog" and "LogStats" statements can be used
1012                to add some information that is not reported by default.
1013
1014            Examples:
1015
1016                MsgLogArea \bbs\mail\net -$
1017                MsgLogArea \bbs\mail\net\
1018
1019
1020
1021        MsgRemArea <path> [-$]
1022
1023                The comments found in the compiled nodelists can be
1024                selectively reported to a fido or squish message area.
1025
1026                <path> indicates a message area for reporting
1027                       compilation logs.
1028
1029                -$     specifies that the area is in Squish format;
1030                       otherwise it is assumed to be *.MSG.
1031
1032                The "MsgRem" statement (see Global Section C) MUST be
1033                used to specify which types of comments you want to be
1034                reported.
1035
1036                Please note that no comments are reported if no "MsgRem"
1037                statement is used.
1038
1039            Examples:
1040
1041                MsgRemArea \bbs\mail\net -$
1042                MsgRemArea \bbs\mail\net\
1043
1044
1045
1046        MsgFromNode <address>
1047        MsgToNode <address>
1048
1049                Specify the addresses for the created messages.
1050
1051                <address> is a 4D address.
1052
1053            Example:
1054
1055                MsgFromNode 2:332/504
1056                MsgToNode   2:332/504.1
1057
1058
1059
1060        MsgTo <name>
1061
1062                Specifies the name of the addressee of the created
1063                messages.
1064
1065            Example:
1066
1067                MsgTo Alberto Pasquale
1068
1069
1070
1071        MsgAttr <attributes>
1072
1073                Specifies the attributes for the created messages.
1074
1075                <attributes> can be a (not case sensitive) combination
1076                of:
1077
1078                P : Private
1079                K : Kill/Sent
1080                C : Crash
1081                H : Hold
1082                D : Direct (crash + hold in squish messages)
1083
1084            Examples:
1085
1086                MsgAttr P
1087                MsgAttr pk
1088
1089
1090
1091        MsgSize <bytes>
1092
1093                Specifies the maximum size of a single message: after
1094                this length, the message is split.
1095
1096                Defaults to 7K, greater values are recommended, so that
1097                the message is not divided into too many parts.
1098
1099            Example:
1100
1101                MsgSize 60000
1102
1103
1104
1105        CostNullPhone <Cost> [<UCost>]
1106
1107                Specifies the costs to be assigned to nodes with empty
1108                (unpublished, etc.) phone number.
1109
1110                <Cost> is the "call cost" .
1111                <UCost> is the "user cost" (fee for netmail messages).
1112
1113                <UCost> defaults to <Cost>.
1114
1115                If CostNullPhone is not used, <Cost> defaults to 65535
1116                and <UCost> to 0.
1117
1118            Example:
1119
1120                CostNullPhone 1000 0
1121
1122            Note:
1123
1124                Some programs might have bugs that cause problems
1125                dealing with high costs (such as the default 65535).
1126                Should you experience problems with entries that have a
1127                "NullPhone", try setting a lower cost e.g.
1128                "CostNullPhone 900 0".
1129
1130
1131
1132        CostVerbatimPhone <Cost> [<UCost>]
1133
1134                Specifies the costs to be assigned to nodes that have
1135                a verbatim phone specification.
1136
1137                <Cost> is the "call cost" .
1138                <UCost> is the "user cost" (fee for netmail messages).
1139
1140                <UCost> defaults to <Cost>.
1141
1142                If the statement is not used, both costs default to 0.
1143
1144            Example:
1145
1146                CostVerbatimPhone 10 0
1147
1148
1149
1150                          Dial/Cost translation Table
1151
1152
1153        With this table you specify the dial translations and the costs
1154        to be applied depending on the phone number.
1155
1156        Note: This table is not used against "Verbatim Phones".
1157
1158        The table begins with "Dial" and ends with the "End" keyword.
1159
1160        Each entry has the following format:
1161
1162        <PartPhone> <PreSuf> [<Costs>]
1163
1164
1165        The following two keywords allow to specify groups of exchanges
1166        that must be handled by a certain dial table entry:
1167
1168
1169        LocalValues <PartPhone> <PreSuf> [<Costs>]
1170
1171                This keyword is provided for clarity only: it is
1172                taken just as a normal specification with no
1173                heading "LocalValues".
1174
1175
1176        LocalExchanges <num> ...
1177
1178                Lists all the exchanges that must be handled as per the
1179                preceding dial translation entry (which may be preceded
1180                by the "LocalValues" keyword for clarity).
1181
1182                Please remember that the line length is limited to 254
1183                characters.
1184
1185                You can use multiple "LocalExchanges <num> ..."
1186                statements if you like short lines or need more than
1187                254 characters.
1188
1189                Please note that all numbers that (after <PartPhone>
1190                stripping) begin with <num> are considered local.
1191                For example, if 220, 221, 222, 223, 224, 225, 226, 227,
1192                228, 229 are all local exchanges, you can indicate 22 to
1193                include them all.
1194
1195
1196        The use of these two statements in the place of a long list of
1197        normal table lines (one for each local exchange) should also
1198        speed up the processing of all the nodelist entries that are not
1199        in your area code.
1200
1201
1202
1203        <PartPhone>
1204                is a partial phone number to be matched with the initial
1205                part of nodelist entries. The dashes are ignored. The
1206                <PartPhone> of the last entry must be a single dash "-",
1207                to mean that all the remaining numbers will take the
1208                parameters specified there.
1209
1210        <PreSuf>
1211                can be one of:
1212                    a: <Prefix>
1213                    b: /<Suffix>
1214                    c: <Prefix>/<Suffix>
1215                    d: /
1216
1217                <PartPhone> is stripped from numbers beginning with it,
1218                then <PreSuf> is used to prepend/append the specified
1219                strings to the remainder.
1220
1221                Case a: <Prefix> is prepended.
1222                        e.g.: "39- 0"
1223                        strips "39-" and adds "0" at the beginning of
1224                        the number.
1225
1226                Case b: <Suffix> is appended.
1227                        e.g.: "39-59- /!"
1228                        strips "39-59-" and adds "!" at the end of the
1229                        number.
1230
1231                Case c: <Prefix> is prepended and <Suffix> appended.
1232                        e.g.: "39- 0/!"
1233                        strips "39-", adds "0" at the beginning and "!"
1234                        at the end.
1235
1236                Case d: Nothing is prepended nor appended.
1237                        e.g.: "/"
1238                        The slash is needed to allow the correct
1239                        interpretation of the subsequent fields.
1240
1241                No spaces are allowed between prefix, suffix and the
1242                separating slash.
1243
1244        <Costs>
1245
1246        You can specify up to 4 cost fields:
1247
1248        <Cost> [<UCost> [<DigCost> [<DigUCost>]]]
1249
1250        Each one has a range 0-65535.
1251
1252        <Cost>     is the Call cost, default: 65535.
1253        <UCost>    is the User cost, default: <Cost>.
1254        <DigCost>  is the Digital Call cost, default: <Cost>.
1255        <DigUCost> is the Digital User cost.
1256
1257        <DigUCost> defaults to <DigCost> if it is specified, otherwise
1258        it defaults to <UCost>.
1259
1260        If you like your users to send netmail messages from the BBS
1261        with no need for "credits", you should set <UCost> and
1262        <DigUCost> to 0.
1263
1264        When searching for "PartPhone", the first matching entry is
1265        applied: in the case of entries with an initial part in common,
1266        you have to specify them in sequence from the longest to the
1267        shortest. If no match is possible, the last line specifies the
1268        default (thereby international) parameters.
1269
1270        WARNING: This table CANNOT be left totally empty: it must
1271        contain at least the default entry  "- [<PreSuf>]".
1272
1273
1274            Example 1a/b/c (North American viewpoint):
1275
1276                There are some groups of phone numbers:
1277
1278                1 - Local numbers.
1279                    These are usually "toll free" numbers.
1280                    As a rule of thumb, you must only dial the local
1281                    number, stripping the Country Code "1" and the
1282                    Area Code.
1283                    In the case you live at the crossroads of two or
1284                    more area codes, it is possible that you have local
1285                    numbers in area codes that you must _not_ strip.
1286
1287                2 - Area Code numbers.
1288                    They have your same Area Code but they are long
1289                    distance.
1290                    As far as I know, there are many different
1291                    situations regarding the need to dial the long
1292                    distance access code "1" and the Area Code.
1293                    In any case you usually want to differentiate costs.
1294
1295                    The Country "1" and Area Codes must be stripped and
1296                    replaced by:
1297
1298                    (a) the long distance access code "1"
1299                    (b) the long distance access code "1" +
1300                        the Area Code
1301                    (c) nothing
1302
1303                    In case (b) the number really remains untouched.
1304
1305                    Even if the Country Code for USA/Canada "1" is
1306                    numerically equal to your long distance acces code,
1307                    they are conceptually quite different, and so they
1308                    will be treated.
1309
1310                3 - Domestic numbers.
1311                    USA/Canada numbers, with a leading "1", that is the
1312                    international Country Code for USA and Canada.
1313                    They must be left untouched, since the american long
1314                    distance access code is equal to the international
1315                    Country Code for North America.
1316
1317                4 - International numbers.
1318                    These are numbers out of USA and Canada.
1319                    They must be prefixed by "011", that is the
1320                    international access code.
1321
1322                And now let's see how to achieve our goal using
1323                FastLst's Dial Table.
1324
1325
1326
1327            Example 1a:
1328
1329                Let's suppose:
1330
1331                - we are in Area Code 414
1332                - the 414 must be stripped for LD calls
1333                - the local exchanges are 231, 232, 233, 235, 236, 424
1334
1335
1336                Dial
1337                        ; strip 1-414- from local numbers, do not add
1338                        ; a prefix, set call and user costs to 0.
1339
1340                  LocalValues 1-414- / 0
1341                  LocalExchanges 231 232 233 235 236 424
1342
1343                        ; Remaining "1-414-" numbers are long distance:
1344                        ; strip the 414 Area Code and assign costs = 25.
1345
1346                  1-414-  1-  25
1347
1348                        ; Remaining "1-" numbers are Domestic Long
1349                        ; Distance.
1350                        ; Set costs to 50
1351
1352                  1-      1-  50
1353
1354                        ; Remaining numbers are international.
1355                        ; Prepend 011 and set call cost to 250 and
1356                        ; user cost to 500
1357
1358                  -       011 250 500
1359                End
1360
1361
1362
1363            Example 1b:
1364
1365                Let's suppose:
1366
1367                - we are in Area Code 604
1368                - the 604 must NOT be stripped for LD calls
1369                - the local exchanges are 220 221 222 224 228 230 231
1370                  240 241 244 250 251 252 253 254 255 257 258 261 263
1371                  264 266
1372
1373
1374                Dial
1375                        ; strip 1-604- from local numbers, do not add
1376                        ; a prefix, set call and user costs to 0.
1377
1378                  LocalValues 1-604- / 0
1379                  LocalExchanges 220 221 222 224 228 230 231 240
1380                  LocalExchanges 241 244 250 251 252 253 254 255
1381                  LocalExchanges 257 258 261 263 264 266
1382
1383                        ; Remaining "1-604-" numbers are long distance:
1384                        ; assign costs = 25.
1385
1386                  1-604-  1-604-  25
1387
1388                        ; Remaining "1-" numbers are Domestic Long
1389                        ; Distance.
1390                        ; Set costs to 50
1391
1392                  1-      1-  50
1393
1394                        ; Remaining numbers are international.
1395                        ; Prepend 011 and set call cost to 250 and
1396                        ; user cost to 500
1397
1398                  -       011 250 500
1399                End
1400
1401
1402
1403            Example 1c:
1404
1405                Let's suppose:
1406
1407                - we are at the crossroads of Area Codes 510, 408, 415
1408                - "1-510" must always be stripped
1409                - "1-408" and "1-415" must never be stripped
1410                - some exchanges are toll-free, others are not
1411
1412
1413                Dial
1414                        ; strip 1-510- from local numbers, do not add
1415                        ; a prefix, set call and user costs to 0.
1416
1417                  LocalValues 1-510- / 0
1418                  LocalExchanges 224 225 226 227 247 249 252 264 276
1419                  LocalExchanges 278 293 317 353 354 416 417
1420
1421                        ; Specify local exchanges for area code 408,
1422                        ; keep "1-408".
1423
1424                  LocalValues 1-408- 1-408- 0
1425                  LocalExchanges 232 251 254 258 259 262 263 272 276
1426                  LocalExchanges 321 324 325 383 428 432 433 434
1427
1428                        ; Specify local exchanges for area code 415,
1429                        ; keep "1-415".
1430
1431                  LocalValues 1-415- 1-415- 0
1432                  LocalExchanges 233 234 321 322 323 324 325 326 327
1433                  LocalExchanges 328 329 354 424 462 473 493
1434
1435                        ; Remaining "1-510-" numbers are not free,
1436                        ; the country and area codes are stripped.
1437
1438                  1-510- /      25
1439
1440                        ; Remaining numbers in area codes 408 and
1441                        ; 415 are not free, nothing is stripped.
1442
1443                  1-408- 1-408- 25
1444                  1-415- 1-415- 25
1445
1446                        ; Remaining numbers in country code "1"
1447                        ; are domestic: nothing changed, cost 100.
1448
1449                  1-     1-     100
1450
1451                        ; Remaining numbers are international.
1452                        ; Prepend 011 and set cost to 2000.
1453
1454                  -      011    2000
1455
1456                End
1457
1458
1459
1460            Example 2 (European viewpoint):
1461
1462                We differentiate between city, district, domestic and
1463                international.
1464
1465                Dial
1466                  LocalValues 39-59- / 5
1467                  LocalExchanges 2 3 4 56 81 82    ; city
1468                  39-59- /      30   ; district
1469                  39-    0      60   ; domestic long distance
1470                  43     0043- 100   ; Austria
1471                  32     0032- 100   ; Belgium
1472                  45     0045- 100   ; Denmark
1473                  33     0033- 100   ; France
1474                  49     0049- 100   ; Germany
1475                  44     0044- 100   ; UK
1476                  31     0031- 100   ; Netherlands
1477                  34     0034- 100   ; Spain
1478                  46     0046- 100   ; Sweden
1479                  41     0041- 100   ; Switzerland
1480                  1      001-  200   ; USA/Canada
1481                  -      00    300   ; others
1482                End
1483
1484
1485            Example 3 (Separate Analog/Digital costs):
1486
1487                For people who pay different charges for analog and
1488                digital calls, FastLst allows to specify separate
1489                digital costs (that will be used for nodes that are
1490                given a Digital ModemType).
1491
1492                Let's suppose we want null User Costs and Digital Costs
1493                twice as high as the Analog ones.
1494
1495                Dial
1496                  LocalValues 39-59- / 5 0 10 0
1497                  LocalExchanges 2 3 4 56 81 82    ; city
1498                  39-59- /      30 0  60 0  ; district
1499                  39-    0      60 0 120 0  ; domestic long distance
1500                  -      00    300 0 600 0  ; international
1501                End
1502
1503
1504            Example 4:
1505
1506                Minimal table for sysops that make dial translations and
1507                cost assignments somewhere else.
1508
1509                Dial
1510                  -
1511                End
1512
1513
1514
1515                                Modem Type Table
1516
1517
1518        This table allows to set the Modem Type, costs and dial
1519        translations depending on the nodelist flags.
1520
1521        Syntax:
1522
1523        TypeDef
1524          <Flag> <ModemType> [<Cost> <UCost> [<DialTrans>]]
1525          <Flag> <ModemType> [Digital|Analog]
1526          ...
1527        End
1528
1529        <Flag> is a Nodelist flag (max 49 chars),
1530        <ModemType> is a number 0->255.
1531
1532        The nodelist flags of each node are searched for <Flag>s, in the
1533        same order as they are listed in the TypeDef table.
1534
1535        The <Flag> must match completely a nodelist flag: if <Flag> is
1536        V32 and the nodelist flag is V32B, it's not a match.
1537        The search is not case sensitive.
1538
1539        The ModemType field of the compiled nodelist will be determined
1540        by the first match only: If you define X75 before V34, a node
1541        with both V34 and X75 will have a X75 modem type.
1542
1543        When <Flag> is for a PSTN system, you can optionally indicate
1544        whether it is DIGITAL or ANALOG (which is the default); this is
1545        useful for assigning special Digital costs if you have
1546        configured them in the Dial/Cost table.
1547
1548        When <Flag> is for a non-PSTN system (e.g. internet) you can
1549        specify the costs (which override the CostVerbatimPhone) and
1550        dial translations.
1551
1552        <Cost>  The Call Cost, range: 0-65535
1553        <UCost> The User Cost, range: 0-65535
1554
1555        <DialTrans> The Dial Translations, for "verbatim" phones.
1556
1557            These dial translations DO NOT affect the indexed entry (in
1558            <NODEX>.PDX) and are intended as a work around for the dial
1559            translations operated by the mailer or the modem-emulator.
1560
1561            The syntax requires a set of strings.
1562
1563            The first character of each string will be substituted
1564            with the remaining characters.
1565
1566            A string containing space ' ' or semi-colon ';' MUST be
1567            included in quotation marks. If the quotation mark is needed
1568            inside the quoted string, it must be double.
1569
1570            15 strings of 5 characters are allowed.
1571
1572            Example:
1573
1574            You need to translate '.' to '*', ':' to ' ', 'v' to
1575            'V'; call_cost=100, user_cost=0:
1576
1577            Typedef
1578              [...]
1579              VM 200 100 0 .* ": " vV
1580              [...]
1581            End
1582
1583            You want to translate '.' to '\.', ':' to ' ', 'v' to
1584            'V'; call_cost=150, user_cost=100:
1585
1586            Typedef
1587              [...]
1588              VM 200 150 100 .\. ": " vV
1589              [...]
1590            End
1591
1592
1593            Recommended dial translations for Binkley and VMODEM:
1594
1595            -\- .* vV ~\~ ": "
1596
1597
1598        Full example of TypeDef table:
1599
1600                for USR Courier I-modem + VMODEM:
1601
1602
1603                TypeDef
1604                  X75   1   Digital
1605                  ISDNC 1   Digital
1606                  V120  2   Digital
1607                  V120H 2   Digital
1608                  V120L 3   Digital
1609                  V34   4   Analog
1610                  VFC   5   Analog
1611                  V32T  6   Analog
1612                  H16   7   Analog
1613                  V32B  8   Analog
1614                  ZYX   8   Analog ; ZYX implies V32B
1615                  Z19   8   Analog
1616                  Z16   8   Analog
1617                  H14   9   Analog
1618                  V32   10  Analog
1619                  HST   11  Analog
1620                  VM    200 100 0 -\- .* vV ~\~ ": " ; VMODEM
1621                End
1622
1623
1624            In Binkley.Cfg for the I-modem you can use:
1625
1626
1627                ModemTrans   0
1628                ModemTrans   1 AT*V2=6D/    ; X75
1629                ModemTrans   2 AT*V2=1D/    ; V120
1630                ModemTrans   3 AT*V2=1D/    ; V120L
1631                ModemTrans   4 AT*V2=3B0D/  ; V34
1632                ModemTrans   5 AT*V2=3B0D/  ; VFC
1633                ModemTrans   6 AT*V2=3B0D/  ; V32T
1634                ModemTrans   7 AT*V2=3B1D/  ; H16
1635                ModemTrans   8 AT*V2=3B0D/  ; V32B
1636                ModemTrans   9 AT*V2=3B1D/  ; H14
1637                ModemTrans  10 AT*V2=3B0D/  ; V32
1638                ModemTrans  11 AT*V2=3B1D/  ; HST
1639                ModemTrans 200
1640
1641            In Binkley.Cfg for VMODEM you can use:
1642
1643
1644                ModemTrans   0
1645                ModemTrans   1
1646                ModemTrans   2
1647                ModemTrans   3
1648                ModemTrans   4
1649                ModemTrans   5
1650                ModemTrans   6
1651                ModemTrans   7
1652                ModemTrans   8
1653                ModemTrans   9
1654                ModemTrans  10
1655                ModemTrans  11
1656                ModemTrans 200 ATDT#/   ; VMODEM
1657
1658
1659
1660
1661
1662                                User Flags Table
1663
1664
1665        This is an optional table used to handle the "user defined" bits
1666        in the Flags word of the compiled nodelist entry.
1667
1668        These bits are named 5,6,7,8,9,A,B,D,E,F where bit 5 is the 6th
1669        bit and F is the 16th bit of the word.
1670
1671        Using this table, you can associate (source) nodelist flags to
1672        user defined bits in the output binary nodelist.
1673
1674        The table is delimited by the "FlagDef" and "End" keywords; each
1675        line is in the form "<sFlag> <bFlags>" where <sFlag> is a flag
1676        (max 9 chars) to be looked for in the source nodelists while
1677        <bFlags> represents one or more user-defined bits in the output
1678        Flags word.
1679
1680            Example:
1681
1682                FlagDef
1683                  V42B  AB  ; V42B -> user bits A and B
1684                  V32B  DE  ; V32B -> user bits D and E
1685                End
1686
1687
1688        To add further flags on a node by node basis, please use the
1689        "Flags <Addr> <Flags>" statement.
1690
1691        To remove flags, please specify the source flags via the
1692        "NodeFlags <Addr> <NodeFlags>" statement.
1693
1694
1695
1696                                  G L O B A L
1697
1698                                   Section B
1699
1700
1701
1702        The statements in this section affect the processing of all
1703        the output blocks and thereby of all the input nodelists.
1704
1705        These statements can also be used in the "OUTPUT" section of an
1706        OUTPUT block or inside an INPUT block, in which case they affect
1707        the compilation of the relevant block only.
1708
1709        In the case you use a verb that has already been used in a
1710        "higher level" block, it will behave as a local override.
1711
1712
1713
1714        NeededBeforeKill
1715
1716                Tells FastLst that the affected NodeList(s) are needed
1717                by the command run via the "BeforeKillSource" statement.
1718
1719                The "BeforeKillSource" verb allows you to run a command
1720                (executable or batch file) after the compilation has
1721                completed, just before FastLst ends and (if "KillSource"
1722                is used) deletes the source files that are also present
1723                in archived form.
1724
1725                The lists affected by "NeededBeforeKill" are extracted,
1726                if not already present, before the "BeforeKillSource"
1727                command is executed.
1728
1729
1730
1731        ArcMethod <meth>[,<f>] ...
1732
1733                Tells FastLst that it must make sure that all new
1734                nodelists are archived using the specified methods.
1735                The original archive is NOT killed.
1736
1737                Obviously, a new nodelist is not rearchived to its
1738                original method.
1739
1740                <meth> is the name of an archiver defined in
1741                compress.cfg.
1742
1743                <f> is the optional specification of the letter to be
1744                used for the variable archive extension. If not
1745                specified, it is assumed equal to the first letter of
1746                the defaults extension for this archiver.
1747
1748                Multiple ArcMethod statements are allowed.
1749
1750
1751            Example 1:
1752
1753                ArcMethod ZIP LH,H
1754
1755                NodeList.Z48 arrives: it is archived to NodeList.H48
1756                also, using the LH archiver.
1757
1758
1759            Example 2:
1760
1761                ArcMethod ZIP LH
1762
1763                NodeDiff.Z48 arrives: the resulting nodelist is archived
1764                to NodeList.Z48 using the ZIP archiver and to
1765                NodeList.L48 using LH.
1766
1767
1768
1769        ArcDiffMethod <meth>[,<f>] ...
1770
1771                Tells FastLst that it must make sure that all new
1772                nodediffs are archived using the specified methods.
1773                The original archive is NOT killed.
1774
1775                Obviously, a new nodediff is not rearchived to its
1776                original method.
1777
1778                <meth> is the name of an archiver defined in
1779                compress.cfg.
1780
1781                <f> is the optional specification of the letter to be
1782                used for the variable archive extension. If not
1783                specified, it is assumed equal to the first letter of
1784                the defaults extension for this archiver.
1785
1786                Multiple ArcDiffMethod statements are allowed.
1787
1788
1789            Example:
1790
1791                ArcDiffMethod ZIP LH,H
1792
1793                NodeDiff.Z48 arrives: it is archived to NodeDiff.H48
1794                also, using the LH archiver.
1795
1796
1797
1798
1799                               EXTERNAL COMMANDS
1800
1801
1802        The following verbs allow to invoke external commands.
1803
1804        <command> can be any legal command-line command: it can be the
1805        name of an executable file, a batch file or any command that can
1806        be understood by your command-line interpreter (OS/2's CMD,
1807        4OS2, etc.).
1808
1809        If <command> does not directly invoke an executable file,
1810        FastLst automatically invokes your default command line
1811        interpreter (as specified by the COMSPEC environment variable).
1812
1813
1814                            Archive Related Commands
1815
1816
1817        The following verbs share the same syntax:
1818
1819        Two parameters are allowed in <command>:
1820
1821        %a is translated to the full pathname of the archive file.
1822
1823        %f is translated to the name of the file to be added or
1824           extracted (no path).
1825
1826        <command> is run from the path where %f belongs.
1827
1828
1829
1830        BeforeArcList <command>
1831
1832                Command to be run before archiving a nodelist.
1833
1834
1835        AfterArcList <command>
1836
1837                Command to be run after archiving a nodelist.
1838
1839
1840        BeforeUnArcList <command>
1841
1842                Command to be run before extracting a nodelist.
1843
1844
1845        AfterUnArcList <command>
1846
1847                Command to be run after extracting a nodelist.
1848
1849
1850        BeforeArcDiff <command>
1851
1852                Command to be run before archiving a nodediff.
1853
1854
1855        AfterArcDiff <command>
1856
1857                Command to be run after archiving a nodediff.
1858
1859
1860        BeforeUnArcDiff <command>
1861
1862                Command to be run before extracting a nodediff.
1863
1864
1865        AfterUnArcDiff <command>
1866
1867                Command to be run after extracting a nodediff.
1868
1869
1870                                    Example
1871
1872        To hatch the new nodelist (note that you probably need to
1873        specify the location of the config file since the command is
1874        executed from the directory where %f resides):
1875
1876          AfterArcList Hatch %a NODELIST "New NodeList"
1877
1878
1879
1880                           NodeDiff Related Commands
1881
1882
1883        The following verbs accept different parameters:
1884
1885        %l is translated to the full pathname of the nodelist.
1886
1887        %d is translated to the full pathname of the nodediff.
1888
1889        <command> is run from the current directory.
1890
1891
1892
1893        BeforeEdit <command>
1894
1895                Command to be run before applying a nodediff.
1896
1897
1898        AfterEdit <command>
1899
1900                Command to be run after applying a nodediff.
1901                Only %l can be used.
1902
1903
1904
1905                                  G L O B A L
1906
1907                                   Section C
1908
1909
1910
1911        The statements in this section affect the processing of all
1912        the output blocks and thereby of all the input nodelists.
1913
1914        These statements can also be used in the "OUTPUT" section of an
1915        OUTPUT block (except for the "NoCompile" one) or inside an INPUT
1916        block, in which case they affect the compilation of the relevant
1917        block only.
1918
1919        In the case you use a verb that has already been used in a
1920        "higher level" block, it will behave as a local override.
1921
1922
1923
1924        MsgRem [<string>]
1925
1926                If MsgRemArea is used, FastLst reports the following
1927                comments:
1928
1929                No MsgRem statement: none;
1930
1931                MsgRem with no <string>: all;
1932
1933                MsgRem with <string>: only the comments that begin with
1934                ";<l> " where <l> is one of the characters in <string>.
1935
1936                The ";" character in <string> means that the comments
1937                beginning with "; " or ";<word>" can be reported.
1938
1939                Common types of comment lines:
1940
1941                ;S This is a comment for SysOps
1942                ;U This is a comment for users
1943                ;F This comment should appear in formatted Fido lists
1944                ;A This is a comment of general interest
1945                ;E This comment is an error message
1946
1947            Example:
1948
1949                "MsgRem SE"
1950
1951                Only comments destined to SysOps and Error messages are
1952                reported (lines beginning with ";S " and ";E ").
1953
1954
1955
1956        MsgLog [NullPhone] [Redirected] [Points]
1957
1958                Some common situations (not really errors) are not
1959                reported to MsgLogArea by default: if you want FastLst
1960                to report them anyway, you can use this statement, but
1961                be aware that very long reports could come out.
1962
1963                "NullPhone": systems with empty phone string are logged.
1964
1965                "Redirected": systems redirected to their coordinators
1966                are logged (Hold, unpublished).
1967
1968                "Points": points with empty phone string are logged; be
1969                aware that most pointlists contain unpublished (thereby
1970                with empty phone) points.
1971
1972          Examples:
1973
1974                MsgLog Redirected
1975                MsgLog Redirected NullPhone
1976
1977
1978
1979        GermanPointList
1980
1981                Instructs FastLst to consider the affected nodelist as a
1982                3D German style pointlist. Zone 2 is assumed, if not
1983                explicitly specified in the "NodeList" statement.
1984
1985                This verb is usually used inside an Input Block, so that
1986                it affects that nodelist only.
1987
1988                WARNING: Be aware that using this statement in the
1989                global section or in an Output block affects all the
1990                involved nodelists !
1991
1992            Example Input Block:
1993
1994                NodeList Points24.???
1995                  GermanPointList
1996                  Nodediff Pr24Diff.???
1997                  ArcList Points24.??? 1
1998                  ArcDiff Pr24Diff.??? 5
1999                  ArcListDesc R24 PointList for day %d (%D), %a format
2000                  ArcDiffDesc R24 PointDiff for day %d (%D), %a format
2001
2002
2003
2004        NoPointLstPhone
2005
2006                Changes to "-Unpublished-" the phone numbers specified
2007                in the PointLists (German or "Boss" styles).
2008
2009                If you use Squish and Binkley, you usually will like
2010                pointlists with the Boss' phone in the point entries
2011                (otherwise a crash message to a point will have to be
2012                manually readdressed to its Boss).
2013
2014                But if you use a netmail manager (as NmFwd) that already
2015                routes the crash messages for points that do not have a
2016                phone to their Boss, then you will probably like this
2017                statement.
2018
2019                You will usually find convenient to use this statement
2020                in the global section, so that it is valid for all the
2021                nodelists.
2022
2023
2024
2025        BeforeCompile <command>
2026
2027                Command to be run before compiling the affected
2028                nodelist.
2029
2030                This statement follows the same rules explained in
2031                "External Commands" in section B.
2032
2033                The %l parameter is translated to the full pathname of
2034                the nodelist.
2035
2036                <command> is run from the current directory.
2037
2038
2039
2040        AfterCompile <command>
2041
2042                Command to be run after compiling the affected nodelist.
2043
2044                This statement follows the same rules explained in
2045                "External Commands" in section B.
2046
2047                The %l parameter is translated to the full pathname of
2048                the nodelist.
2049
2050                <command> is run from the current directory.
2051
2052
2053
2054        FidoTxt [<FidoTxt>]
2055
2056                Generate an 80 Column Text List of nodes.
2057                Nodes included via the "Node,..." method and points are
2058                excluded.
2059
2060                <FidoTxt> optionally specifies an output file name,
2061                which defaults to "NodeList.Txt". If the same file name
2062                has already been used for other nodelists, the output is
2063                appended.
2064
2065            Example:
2066
2067                FidoTxt
2068
2069
2070
2071        FidoPrn [<FidoPrn>]
2072
2073                Generate a 132 Column Text List of nodes.
2074                Nodes included via the "Node,..." method and points are
2075                excluded.
2076
2077                <FidoPrn> optionally specifies an output file name,
2078                which defaults to "NodeList.Prn". If the same file name
2079                has already been used for other nodelists, the output is
2080                appended.
2081
2082            Example:
2083
2084                FidoPrn
2085
2086
2087
2088        IncCoord <CoordLev>
2089
2090                The coordinators of the specified and upper levels will
2091                be always included, even if excluded by "IncAddr" and
2092                "ExcAddr". <CoordLev> can be ZC, RC, NC, HC.
2093
2094            Example:
2095
2096                IncCoord NC
2097
2098
2099
2100                             Global Export Section
2101
2102
2103        You can use here the statements described in the "Export Global
2104        Section" of the "Export Block" (see "Input Block" inside "Output
2105        Block").
2106
2107
2108
2109
2110                            O U T P U T   B L O C K
2111
2112
2113
2114        The following verbs define the compilation of a single output
2115        binary nodelist.
2116
2117        The block begins with a "Output Section", that affects the
2118        compilation of all the source (input) nodelists, followed by a
2119        sequence of "Input Blocks" that define how to handle each of the
2120        source nodelists.
2121
2122        The first "output block" can be of a special kind: if the
2123        "NoCompile" statement is used instead of "Version7+", this block
2124        indicates the actions necessary to maintain the specified
2125        nodelists, but they are not compiled.
2126
2127
2128
2129        Version7[+] <Path> <Nodex> [<Sysop>[.<Ext>]]
2130
2131                Start of a block of config verbs defining the generation
2132                of an output nodelist. You can generate one or more
2133                compiled nodelists with different names and path for the
2134                output files. Each "Version7" statement marks the
2135                beginning of a new output-nodelist definition.
2136
2137                Version7+ is for V7+ while Version7 allows to save space
2138                and generate the V7 files only.
2139
2140                <Path> is the path where the output binary data and
2141                index files are placed.
2142
2143                <Nodex> is the file name (no extension) for the output
2144                files.
2145
2146                <Sysop>.<Ext> is the file name for the sysop-index.
2147                When no extension is given, .NDX is assumed if
2148                <Sysop> is different from <Nodex>, otherwise the .SDX
2149                extension is used.
2150
2151                If you omit <Sysop> with Version7+, <Nodex>.SDX is used
2152                for the SysOp index.
2153
2154                If you omit <Sysop> with Version7, no SysOp index is
2155                generated.
2156
2157                Usually <Nodex> should be "NODEX" and <Sysop> "SYSOP".
2158
2159                If you use V7+ and all of your applications accept
2160                <NODEX>.SDX as the SysOp index, you may omit <Sysop>.
2161
2162                For compatibility with V7 applications that require
2163                "SYSOP.NDX" as SysOp index, "SYSOP" is recommended for
2164                <SysOp>.
2165
2166                All the following verbs, up to the next "Version7" (if
2167                any), are related to the preceding "Version7" output
2168                files.
2169
2170            Examples:
2171                                                   ; SysOp Index name
2172                Version7+ d:\bbs\v7\ NODEX  SYSOP  ; SYSOP.NDX
2173                Version7+ d:\bbs\v7\ NODEX  NODEX  ; NODEX.SDX
2174                Version7+ d:\bbs\v7\ NODEX         ; NODEX.SDX
2175                Version7  d:\bbs\v7\ NODEX  SYSOP  ; SYSOP.NDX
2176                Version7  d:\bbs\v7\ NODEX  NODEX  ; NODEX.SDX
2177                Version7  d:\bbs\v7\ NODEX         ; no index
2178
2179            Version7 Output files:
2180                <Nodex>.DAT     Nodelist Data
2181                <Nodex>.NDX     Address Index
2182                <Sysop>.NDX     SysOp Index (optional)
2183
2184                Some Version7 programs also accept <Nodex>.SDX for the
2185                SysOp Index.
2186
2187            Version7+ Output files:
2188                <Nodex>.DAT     Nodelist Data
2189                <Nodex>.DTP     Additional Data
2190                <Nodex>.NDX     Address Index
2191                <Nodex>.SDX     SysOp Index
2192                <Nodex>.PDX     Phone Index
2193
2194                Version7+ programs must also be configurable to accept
2195                <Sysop>.NDX as the SysOp Index for compatibility with V7
2196                programs.
2197
2198
2199        NoCompile
2200
2201                This verb can be used to start the first "Output Block",
2202                instead of "Version7".
2203
2204                This way the first output block becomes a "NoCompile"
2205                block and the indicated nodelists are maintained but not
2206                compiled.
2207
2208                This is a means for maintaining a NodeList (applying
2209                nodediffs, archiving with different archivers etc.)
2210                without compiling it.
2211
2212                The statements related to nodelist compilation (see
2213                Global section C) are obviously illegal in a "NoCompile"
2214                block.
2215
2216
2217
2218
2219                             O U T P U T   Section
2220
2221
2222        The following verbs affect the compilation of the current output
2223        block and must precede the definitions of the input blocks
2224        (which start with the Nodelist statement).
2225
2226
2227        FidoUserLst [<FidoUserLst>]
2228
2229                Generate "fidouser.lst style" text SysOp list.
2230                <FidoUserLst> optionally specifies an output file name,
2231                which defaults to "FidoUser.Lst". Different output
2232                blocks require different names.
2233
2234            Example:
2235
2236                Version7+ d:\bbs\v7 NODEX SYSOP
2237                   FidoUserLst
2238
2239
2240
2241        LinkOnDisk
2242
2243                Forces "on disk" DTP linking.
2244
2245                This can be useful to avoid FastLst using virtual memory
2246                for linking the <NODEX>.DTP file.
2247
2248                If you do not have enough free physical memory (12MB for
2249                60,000 nodes), the "on disk" mode is faster.
2250
2251            Example:
2252
2253                Version7+ d:\bbs\v7 NODEX
2254                   LinkOnDisk
2255
2256
2257
2258        LogStats
2259
2260                Output Statistics to MsgLogArea.
2261
2262                This statements makes FastLst write the statistics for
2263                the current output-nodelist to the area specified with
2264                MsgLogArea.
2265
2266            Example:
2267
2268                Version7+ ...
2269                  LogStats
2270
2271
2272
2273                                Block Specifications
2274
2275
2276        You can use here the same statements described in the "Global
2277        Section B" and (if this is not a "NoCompile" block) "Global
2278        Section C" and "Export Global Section" (see the Export Block
2279        below).
2280
2281
2282
2283                             ADDRESS SPECIFIC STUFF
2284
2285
2286
2287        The following verbs define address specific stuff that will
2288        affect the compilation of all the source nodelists compiled in
2289        the current output block. These statements are illegal in a
2290        "NoCompile" block.
2291
2292        If you prefer, you can specify this type of information in the
2293        "Address Specific Stuff" section of the pertinent input block.
2294
2295        WARNING: make sure all addresses have full info (incl. zone).
2296
2297
2298
2299        Password <Addr> <Password>
2300
2301                Allows to specify <Password> one <Addr> at a time.
2302
2303                Version 7 has no limit on password length, however the
2304                programs that use it are usually limited to 8 chars.
2305                Some (rare) programs have problems with 8 chars and need
2306                a maximum of 7 or 6 chars.
2307
2308            Example:
2309
2310                Password 2:332/504.4 Password
2311
2312
2313
2314        PasswordFile <PasswordFile>
2315
2316                Allows to include a password file that contains many
2317                address/password couples, one per line.
2318
2319                In this file you can omit the "Password" keyword.
2320
2321                If you like, you can use some "Password" keywords
2322                together with one or more "PasswordFile".
2323
2324                Please note that the definitions found in this file have
2325                effect on the current (Output or Input) block ONLY.
2326
2327                FastLst writes to the log file which source or output
2328                nodelist is affected by each passwordfile; so, in case
2329                of doubts, just check the logs.
2330
2331            Example:
2332
2333                PasswordFile fidonet.pwd
2334
2335
2336
2337        Phone <Addr> <Phone> [<NodeFlags> [<Cost> [<UCost>]]]
2338
2339                Allows to override a nodelist phone number and
2340                optionally the corresponding "NodeFlags" and costs.
2341
2342                if <Phone> contains non-numeric characters, it is taken
2343                verbatim
2344
2345                If <Phone> contains only digits and dashes '-', it is
2346                considered a PSTN number and MUST be in the form used in
2347                the source nodelist (dial translation will be applied
2348                normally).
2349
2350                <NodeFlags> has the same meaning as in the NodeFlags
2351                statement. To specify an overriding empty <NodeFlags>,
2352                use a single comma.
2353
2354                <Cost> and <UCost> have the same meaning as in the Cost
2355                statement.
2356
2357
2358            Examples:
2359
2360                <Phone> override only:
2361                Phone 2:332/501.1 39-59-399999      ; Normal override
2362                Phone 1:106/2000  juge.com          ; internet address
2363                Phone 1:123/4567  123.456.789.012   ; IP address
2364                Phone 2:245/6789  "Bob.scr"         ; quoted script name
2365
2366                <Phone> and <NodeFlags> overrides:
2367
2368                Phone 2:332/501.0 39-59-499999 V34,CM ; Set new flags
2369                Phone 2:332/501.1 39-59-399999 ,      ; Set NO flags
2370
2371                <Phone>, <NodeFlags> and <Cost>/<UCost> overrides:
2372
2373                Phone 2:332/501 39-59-499999 V34,CM 10 0
2374                Phone 2:332/502 mega.com VM 0      ; <Cost> == <UCost>
2375
2376
2377
2378        NodeFlags <Addr> <NodeFlags>
2379
2380                Allows to substitute the flags listed in the nodelist
2381                entry of <Addr>.
2382
2383                If you want to change the CM flag or modem type flags
2384                (HST, V32b, ZYX) etc, you can use this verb. Please note
2385                that the old flags are lost, so you need to indicate all
2386                the necessary flags.
2387
2388                Please note that <NodeFlags> might be empty.
2389
2390            Example:
2391
2392                NodeFlags 2:332/501.0 CM,H16,V32b
2393
2394
2395
2396        Flags <Addr> <Flags>
2397
2398                The Flags statement allows to set the "user defined"
2399                bits in the Flags word of the compiled nodelist entry.
2400                These bits are named 5,6,7,8,9,A,B,D,E,F where bit 5 is
2401                the 6th bit and F is the 16th bit of the word.
2402
2403                These bits are "ORed" with those already set by the
2404                "FlagDef" table.
2405
2406                If you need to zero some of the bits, please specify the
2407                source flags with the "NodeFlags" statement.
2408
2409            Example:
2410
2411                Flags 2:332/501.0 AB5   ; Set bits 5,A & B.
2412
2413
2414
2415        Cost <Addr> <Cost> [<UCost>]
2416
2417                <Cost> and <UCost> are in the range 0->65535.
2418                Overrides the Cost and User_Cost fields of <Addr> in the
2419                compiled nodelist. If no <UCost> is given, it's taken
2420                equal to <Cost>.
2421
2422            Example:
2423
2424                Cost 2:332/501.0 150
2425
2426
2427
2428                               SEGMENT SELECTION
2429
2430
2431        The following verbs allow to include or exclude selected
2432        <NodeList> segments. If you do not use them, the full <NodeList>
2433        is compiled. Be aware that the process of checking each address
2434        against the list of segments to be included or excluded might
2435        slow down the compilation, even if some gain could come from the
2436        exclusion of large segments.
2437
2438        These statements are obviously illegal in a "NoCompile" block.
2439
2440        These statements can be used in an Input block to affect that
2441        nodelist only.
2442
2443
2444
2445        IncAddr <PartAddrLst>
2446
2447                If you want to selectively include nodelist segments,
2448                you can use this option: only zones, regions, nets,
2449                hubs, nodes, points that are listed in <PartAddrLst>
2450                will be present in the output files. You can specify
2451                zone, region/net, hub/node and point numbers.
2452
2453            Example:
2454
2455                IncAddr 1 2:33 2:200/100 3:632 4:801/17
2456
2457                  Compiles: zone 1, region 33 of zone 2, hub 100 of net
2458                  200 of zone 2, net 632 of zone 3, node 4:801/17
2459
2460
2461
2462        ExcAddr <PartAddrLst>
2463
2464                If you want to exclude some segments from the
2465                compilation, you can list them in <PartAddrLst>, in the
2466                same way as for "IncAddr". You can use either "IncAddr"
2467                or "ExcAddr" or both of them to Include only selected
2468                segments and exclude sub-segments.
2469
2470            Example:
2471
2472                ExcAddr 2:332/500
2473
2474                  Excludes Hub 500 of net 332 of zone 2.
2475
2476
2477
2478
2479
2480                             I N P U T   B L O C K
2481
2482
2483        The Input Block starts with a "NodeList" statement and continues
2484        until the start of the next Input or Output Block (NodeList or
2485        Version7 statement respectively) or the end of the configuration
2486        file.
2487
2488
2489
2490        NodeList <NodeList> [<PartAddr> [<Region> [<Hub>]]]
2491
2492                Start of a block of config verbs defining the processing
2493                of the specified <NodeList> file. You can use many
2494                "NodeList" statements to compile several different
2495                source nodelists into the same output files specified by
2496                the preceding "Version7+" statement. Each "NodeList"
2497                verb marks the beginning of a new input-nodelist
2498                processing-info block.
2499
2500                When an address is present in more than one <NodeList>
2501                (e.g. you compile both the full nodelist and the faster
2502                updated local region or zone segment) only the entry
2503                found in the last compiled <NodeList> is put in the
2504                indices. To have the most up-to-date entries in your V7
2505                indices, please include local segments after the larger
2506                list.
2507
2508                <NodeList> is the name of the input nodelist.
2509                If you don't specify a path, <InputPath> is assumed.
2510
2511                If a terminal ".???" is specified, all the files with 3
2512                digits in the place of '???' are examined and that with
2513                the latest 3 digit day of the year is chosen for
2514                compilation.
2515
2516                The optional <PartAddr> is a partial address that must
2517                be specified for nodelist segments that do not have full
2518                address info. For example, a REGION segment usually
2519                starts with the "Region," keyword and does not contain
2520                any Zone info: its up to you to tell FastLst which zone
2521                we are talking about. For the same reason you should
2522                provide zone and net info when compiling a Hub segment.
2523
2524                For Net segments you should also specify the <Region>
2525                and for simple lists of nodes or points the <Hub>.
2526
2527                Anyway FastLst is smart enough to automagically gather
2528                Region and Hub information (when possible) from:
2529
2530                - same node present in a larger segment (Region and Hub)
2531                - other node with same zone:net (Region only)
2532                - Boss of the point (Region and Hub)
2533
2534                Note: points that do not have a Boss are removed from
2535                the indices.
2536
2537            Examples:
2538
2539                IMPORTANT: Please note that the following lines
2540                    represent a list of examples, NOT an example of
2541                    multiple nodelist compilation.
2542                    After each "NodeList" verb, you must specify all the
2543                    statements that affect the compilation of that
2544                    particular source file.
2545
2546
2547             1) NodeList nodelist.???     ; Fidonet nodelist
2548
2549             2) NodeList region.033 2     ; Region 33 list, zone 2
2550
2551             3) NodeList region24.??? 2   ; Region 24 list, zone 2
2552
2553             4) NodeList net.332 2 33     ; Net list, zone 2, region 33
2554
2555             5) NodeList hub.500 2:332 33 ; Hub list, zone 2, net 332,
2556                                          ; region 33
2557
2558             6) NodeList locnode.500 2:332 33 500
2559                                          ; Some nodes, zone 2, net 332,
2560                                          ; region 33, hub 500
2561
2562             7) NodeList points.504 2:332/504
2563                                          ; Points of 2:332/504 in
2564                                          ; "Point," format
2565
2566             8) NodeList morenode.lst   ; Some nodes in the "Node,"
2567                                        ; format. No <PartAddr> required
2568                                        ; since the "Node," line gives
2569                                        ; full address info.
2570
2571             9) NodeList ptlist.???     ; Point List in the "Boss,"
2572                                        ; format. No <PartAddr> required
2573                                        ; since the "Boss," line gives
2574                                        ; full address info.
2575
2576
2577                                 Input Section
2578
2579
2580        The following statements affect the handling of the nodelist
2581        specified by the last "NodeList" statement (current Input
2582        Block).
2583
2584
2585
2586        NodeDiff <NodeDiff>
2587
2588                <NodeDiff> is the name of the nodediff file.
2589                If you don't specify a path, <InputPath> is assumed.
2590
2591                <NodeDiff> must terminate with ".???". FastLst will
2592                search for a suitable <NodeDiff>, considering the files
2593                that have a 3 digit day of the year in the place of the
2594                trailing '???'.
2595
2596            Example:
2597
2598                NodeDiff NODEDIFF.???
2599
2600
2601
2602        ArcList <ArcList> [<Keep#>]
2603
2604                You can specify the name of the archive containing
2605                <NodeList>. It is necessary if you use automatic
2606                extraction/rearchiving, but it can even be used only to
2607                delete old files.
2608
2609                <ArcList> is used to extract new nodelists, to compress
2610                them using the methods defined in "ArcMethod", to
2611                compress the new nodelists after the application of
2612                nodediffs.
2613
2614                If <ArcList> has a terminating ".???", all the files
2615                that have a suitable fixed (.zip, .lzh etc.) or variable
2616                (.z10, .z17, .l10, .l17 etc.) extension are considered,
2617                taking the digits as the last 2 digits of the day of the
2618                year.
2619
2620                If you really want to limit search to a specified fixed
2621                or variable extension, you can do:
2622                "ArcList nodelist.zip", to consider .zip only;
2623                "ArcList nodelist.z??", to consider .z?? only.
2624
2625                <Keep#> optionally specifies the number of archives to
2626                be kept, basing on the day of the year (the modification
2627                file date is also used to infer the correct
2628                chronological order).
2629
2630                If you maintain archives with multiple different
2631                extensions (.z??, .l??, etc.) the actual number of files
2632                increases, since multiple files with the same day
2633                extension count for one.
2634
2635                The description associated to the deleted files is
2636                removed from FILES.BBS.
2637
2638            Example:
2639
2640                ArcList nodelist.??? 1
2641
2642
2643
2644        ArcDiff <ArcDiff> [<Keep#>]
2645
2646                You can specify the name of the archive containing
2647                <NodeDiff>. It is necessary if you use automatic
2648                extraction/rearchiving, but it can even be used only to
2649                delete old files.
2650
2651                <ArcDiff> must terminate with ".???".
2652
2653                All the files that have 2 digits in the place of the
2654                last 2 '?' are examined, taking the digits as the last 2
2655                digits of the day of the year.
2656
2657                If you really want to limit search to a specified
2658                extension, you can do:
2659                "ArcDiff nodediff.z??", to consider .z?? only.
2660
2661                <Keep#> optionally specifies the number of archives to
2662                be kept, basing on the day of the year (the modification
2663                file date is also used to infer the correct
2664                chronological order). In the case of multiple archive
2665                extensions, the actual number increases consequently.
2666
2667                The description associated to the deleted files is
2668                removed from FILES.BBS.
2669
2670            Example:
2671
2672                ArcDiff nodediff.??? 5
2673
2674
2675
2676        ArcListDesc <Desc>
2677        ArcDiffDesc <Desc>
2678
2679                You can specify a description to be added to FILES.BBS
2680                for the new nodelist and nodediff files created by
2681                FastLst.
2682
2683                Some parameters are available:
2684
2685                %d : the 3 digit day number (0 padded)
2686                %a : the archiver name
2687                %D : the date, USA format (Feb 10, 1995)
2688                %L : the date, Local format
2689
2690            Example:
2691
2692                ArcListDesc Fido Nodelist for day %d (%D), %a format
2693                ArcDiffDesc Fido Nodediff for day %d (%D), %a format
2694
2695
2696
2697                                Local Specifications
2698
2699
2700        You can use here the same statements described in the "Global
2701        Section B" and (if we are not in a "NoCompile" block) "Global
2702        Section C" and "Export Global Section" (see the Export Block
2703        below).
2704
2705
2706
2707                             ADDRESS SPECIFIC STUFF
2708
2709
2710        You can specify here the address specific stuff that is related
2711        to the current source nodelist (if not inside a "NoCompile"
2712        block).
2713
2714        If you have already used the "Output section" for specifying
2715        this kind of information, you can skip this section.
2716
2717        WARNING:
2718
2719        Often you will compile segments of a previously compiled
2720        nodelist. For example you could have a "NodeList nodelist.???"
2721        block for the world nodelist and then a "NodeList region.033"
2722        block for your region's nodelist segment.
2723
2724        The majority of entries in the latter will be duplicates of
2725        entries already found in the former. However, in the case of
2726        duplicates, only the entries found in the last involved
2727        "NodeList" block will go to the indices and be active. This way
2728        you can compile the full world nodelist while keeping your
2729        segment up-to-date with local segments that get updated faster
2730        than the full nodelist.
2731
2732        When you have to specify "Address Specific Stuff" for nodes that
2733        are present in more than one "NodeList", you must do that in the
2734        last involved "NodeList" block (or in the Output Section, of
2735        course), otherwise your indications will have no effect.
2736
2737        For a list of allowed statements, please see the "Address
2738        Specific Stuff" section of the "Output" section above.
2739
2740
2741
2742                               SEGMENT SELECTION
2743
2744
2745        You can use here the same statements described in "Segment
2746        Selection" in the Output Section (if not inside a "NoCompile"
2747        block).
2748
2749
2750
2751                                 EXPORT Block
2752
2753
2754        FastLst can "export" segments of nodelist: e.g. you can export
2755        the Region 25 from the world nodelist to a file called
2756        Region25.???, where ??? stands for the day of the year. Note
2757        that this feature is for exporting segments of nodelist to a
2758        dedicated file. To compile segments you should continue using
2759        the "Segment Selection" section of FastLst.Cfg.
2760
2761        These blocks MUST be at the _END_ of an "Input Block"; there can
2762        be multiple Export Blocks in a single Input Block.
2763
2764        Obviously the Export Block is available for compiled nodelists
2765        only, thus it is illegal inside a "NoCompile" block.
2766
2767        The export is done ONLY when a new NodeList is found (or when
2768        the file to be exported exists neither in uncompressed nor in
2769        archived form), even if the config file is changed. So, you can
2770        safely hatch the created arcfile via the AfterArcExport command
2771        with no danger of hatching it all the times you change something
2772        in the cfg. Under these conditions, if you really want to export
2773        anyway, you must use the -i command line switch.
2774
2775        IMPORTANT: If you use the same export filename for multiple
2776        source nodelists, all the exported segments are appended one
2777        another. This way, if you like, you can make FastLst generate a
2778        "plain" nodelist file with many different source nodelists in
2779        it, just appended one after another. Some people need this
2780        feature to create input for some other program. For this feature
2781        to work, you need to specify the '+' parameter in the "Export"
2782        statement. See "Export Example" below.
2783
2784
2785
2786        Export [+] <file> [<PartAddrLst>]
2787
2788                The '+' sign must be specified when you want to create a
2789                joined list by exporting multiple nodelists to the same
2790                export <file>. This way the exported file will be
2791                created every time the nodelist is compiled and its
2792                timestamp will not be changed to be equal to the source.
2793
2794                <file> is the name of the file to which you want to
2795                export the selected segment(s).
2796
2797                <PartAddrLst> is the partial address list of segments to
2798                be exported. Usually it is a single partial address.
2799                If omitted, the entire nodelist is exported (useful to
2800                create a joined nodelist).
2801
2802                This statement marks the start of an "Export Block".
2803                Multiple "Export Blocks" are allowed in the same "Input
2804                Block".
2805
2806                N.B. The Export blocks must be at the _END_ of an input
2807                block. See "Export Example" below.
2808
2809            Example:
2810
2811                Export region25.??? 2:25
2812
2813
2814
2815
2816                                 Export Section
2817
2818
2819        The following verbs define the parameters for the Export
2820        specified by the last "Export" statement.
2821
2822
2823
2824        ArcExport <arcfile> [Keep#]
2825
2826                <arcfile> is the name of the archive file to which you
2827                want to compress the exported <file>.
2828
2829                [Keep#] is the optional number of archive versions to be
2830                kept, basing on the day of the year (the modification
2831                file date is also used to infer the correct
2832                chronological order).
2833
2834            Example:
2835
2836                ArcExport region25.??? 2
2837
2838
2839
2840        ArcExportDesc <description>
2841
2842                <description> is the description to be applied to
2843                FILES.BBS when a new archive is created.
2844
2845            Example:
2846
2847                ArcExportDesc Region 25 %D, %a format
2848
2849
2850
2851
2852                             Export Global Section
2853
2854
2855        The following verbs can be used in the "Export Section" of an
2856        "Export Block", in the "Input Section" of an "Input Block", in
2857        the "Output Section" of an "Output Block", in the "Global
2858        Section".
2859
2860        In few words, they are legal everywhere except for the
2861        "NoCompile" block.
2862
2863        Depending on their positions, they affect the involved nodelists
2864        only.
2865
2866
2867
2868        ArcExportMethod <meth>[,<f>] ...
2869
2870                Specifies the archive type(s) to be created for the
2871                exported file.
2872
2873                <meth> is the archiver name as defined in Compress.Cfg.
2874
2875                <f> is the optional first letter to be used for variable
2876                archive extensions.
2877
2878            Example:
2879
2880                ArcExportMethod zip lh,H
2881
2882
2883
2884        BeforeArcExport <command>
2885        AfterArcExport <command>
2886
2887                Commands to be run before/after archiving the exported
2888                file.
2889
2890                <command> can be any type of command (executable file,
2891                batch file, internal command, alias, etc.) and supports
2892                the %a (full archive name) and %f (name of the file to
2893                be compressed, no path) and is run from the directory
2894                where %f resides.
2895
2896                WARNING: since <command> is executed from the directory
2897                where the file to be compressed belongs, you might need
2898                to specify the location of the config files used by the
2899                programs invoked via <command>.
2900
2901            Example:
2902
2903                AfterArcExport Hatch %a
2904
2905
2906
2907        ExportNeededBeforeKill
2908
2909                Specifies that the exported file is needed by the
2910                "BeforeKillSource" command.
2911
2912
2913            Export Example:
2914
2915                NodeList nodelist.???
2916                  NodeDiff nodediff.???
2917                  ArcList  nodelist.??? 2
2918                  ArcDiff  nodediff.??? 5
2919                  ArcListDesc Fido Nodelist for day %d (%D), %a format
2920                  ArcDiffDesc Fido Nodediff for day %d,(%D), %a format
2921                  Export region25.??? 2:25
2922                    ArcExport region25.??? 1
2923                    ArcExportDesc Region 25 %D, %a format
2924                    ArcExportMethod zip lh
2925                    AfterArcExport Hatch %a
2926                  Export region24.??? 2:24
2927                    ArcExport region24.??? 1
2928                    ArcExportDesc Region 24 %D, %a format
2929                    ArcExportMethod zip
2930
2931
2932            Export Example to generate a joined list:
2933
2934                NodeList nodelist.???
2935                  NodeDiff nodediff.???
2936                  ArcList  nodelist.??? 2
2937                  ArcDiff  nodediff.??? 5
2938                  ArcListDesc Fido Nodelist for day %d (%D), %a format
2939                  ArcDiffDesc Fido Nodediff for day %d,(%D), %a format
2940                  Export + megalist.Lst
2941
2942                NodeList zonelist.???
2943                  NodeDiff zonediff.???
2944                  ArcList  zonelist.??? 2
2945                  ArcDiff  zonediff.??? 5
2946                  ArcListDesc Zonelist for day %d (%D), %a format
2947                  ArcDiffDesc Zonediff for day %d,(%D), %a format
2948                  Export + megalist.Lst
2949                    ArcExport megalist.??? 1
2950                    ArcExportDesc MegaList, %a format
2951                    ArcExportMethod zip lh
2952
2953
2954
2955
2956                            COMPRESS DEFINITION FILE
2957
2958
2959        The file specified in the CompressCfg statement is a sequence of
2960        Archive definition blocks, each one starting with "Archiver" and
2961        ending with "End Archiver". You can find an example in the
2962        Compress.Cfg file included in the distribution pack.
2963
2964        The order of the archive definition blocks within this file may
2965        be important: when trying to unpack a compressed file, the list
2966        of archivers is scanned in a reverse order.
2967
2968        In the case of two archivers that use the same identification
2969        string (e.g. ARC and PAK), you must specify the archiver that
2970        can unpack both (PAK) after the other one (ARC).
2971
2972        The compress.cfg file can be shared between DOS/NT and OS/2
2973        applications: the "DOS" and "OS2" keywords are available to
2974        distinguish between the commands to be used under DOS/NT and
2975        OS/2.
2976
2977        O.S. specific archivers or commands must be prefixed with the
2978        relevant keyword.
2979
2980        IMPORTANT NOTE: The lines that begin with "DOS" or "OS2" are
2981        parsed by the DOS/NT and OS/2 versions respectively. If you need
2982        the OS/2 version to execute a DOS command, you MUST NOT use the
2983        DOS keyword: if you do, it will never parse that line; if you do
2984        not, it will execute the DOS command "normally", provided you
2985        have installed OS/2's Dos support.
2986
2987        See the examples below.
2988
2989
2990        Archiver <ARCname>
2991
2992                Starts the Archive definition block.
2993
2994                <ARCname> is the name used to identify this archiver.
2995
2996            Example:
2997
2998                Archiver ZIP
2999
3000
3001
3002        Extension  <ext>
3003
3004                Specifies the default extension for the compressed
3005                files.
3006
3007            Example:
3008
3009                Extension ZIP
3010
3011
3012
3013        Ident <ofs>,<ID>
3014
3015                <ofs> is a decimal integer number representing the
3016                offset at which an archive identity marker <ID> must be
3017                present.
3018
3019                Negative values can be used to indicate offsets from the
3020                END of a compressed file. -1 means "the last byte", -2
3021                "the second last byte" and so on.
3022
3023                <ID> is a series of hexadecimal figures which represent
3024                the bytes of the marker string that must be present at
3025                the specified offset of the archive file.
3026
3027            Example:
3028
3029                Ident 0,504b0304  ; "PK^c^d"
3030
3031
3032
3033        Add <command>
3034
3035                Specifies the command to add files to an archive.
3036                %a and %f are translated to the name of the archive and
3037                file to add.
3038
3039            Example:
3040
3041                Add zip -jk %a %f
3042
3043
3044
3045        Extract <command>
3046
3047                Specifies the command to extract files from an archive.
3048                %a and %f are translated to the name of the archive and
3049                file to extract.
3050
3051            Example:
3052
3053                Extract unzip -qqnjC %a %f
3054
3055
3056
3057        View <command>
3058
3059                This line is recognized and accepted for compatibility,
3060                but not used.
3061
3062
3063
3064        End Archiver
3065
3066                This statement is used to close a Archive definition.
3067
3068
3069                                    Examples
3070
3071
3072            Complete example 1 (you need OS/2 only):
3073
3074        Archiver ZIP
3075             Extension     ZIP
3076             Ident         0,504b0304
3077             Add           zip -jk %a %f
3078             Extract       unzip -qqnjC %a %f
3079             View          unzip -v %a
3080        End Archiver
3081
3082
3083            Complete example 2 (you need DOS only):
3084
3085        Archiver ZIP
3086             Extension     ZIP
3087             Ident         0,504b0304
3088             Add           pkzip -a %a %f
3089             Extract       pkunzip -n %a %f
3090             View          pkzip -v %a
3091        End Archiver
3092
3093
3094            Complete example 3 (you need both OS/2 and DOS):
3095
3096        Archiver ZIP
3097             Extension     ZIP
3098             Ident         0,504b0304
3099        OS2  Add           zip -jk %a %f
3100        DOS  Add           pkzip -a %a %f
3101        OS2  Extract       unzip -qqnjC %a %f
3102        DOS  Extract       pkunzip -n %a %f
3103        OS2  View          unzip -v %a
3104        DOS  View          pkzip -v %a
3105        End Archiver
3106
3107
3108            Complete example 4 (archiver to be used under DOS only):
3109
3110        DOS Archiver ZOO
3111        DOS     Extension       ZOO
3112        DOS     Ident           0,5a4f4f                        ; "ZOO"
3113        DOS     Add             zoo a: %a %f
3114        DOS     Extract         zoo e:O %a %f
3115        DOS     View            zoo v %a
3116        DOS End Archiver
3117
3118
3119            Complete example 5 (it's a DOS executable, to be used under
3120                                DOS or OS/2 indifferently):
3121
3122        Archiver ZOO
3123             Extension       ZOO
3124             Ident           0,5a4f4f                        ; "ZOO"
3125             Add             zoo a: %a %f
3126             Extract         zoo e:O %a %f
3127             View            zoo v %a
3128        End Archiver
3129
3130
3131
3132                         T R O U B L E S H O O T I N G
3133
3134
3135                                 Lost Passwords
3136
3137        Problem:
3138                  A password is configured, but the mailer-session is
3139                  unprotected as if there were no password at all.
3140
3141        Solution:
3142                  Please note that the order of Input-Nodelists and
3143                  Password-Definitions is important.
3144
3145                  If a node is included multiple times (it is listed in
3146                  2 or more nodelists), FastLst will index the LAST
3147                  occurrence only.
3148
3149                  4D-Pointlists using the "Point," method override the
3150                  entries of all the listed BOSSes: it's recommended to
3151                  list "older" nodelists first, so that the newer
3152                  entries are indexed.
3153
3154                  NodeList 4dPoints.Lst
3155                    [...]
3156                  NodeList nodelist.???
3157                    [...]
3158
3159
3160                               Extraction problem
3161
3162        Problem:
3163                  FastLst does not extract the correct
3164                  nodelist/nodediff.
3165
3166        Solution:
3167                  Perhaps there is some nodelist/nodediff with corrupted
3168                  file date. Check your "ArcPath", manually extract to
3169                  the "InputPath" the required nodelist/nodediff and
3170                  delete the archive (or reset its file-date so that it
3171                  is similar to that of the enclosed file). FastLst will
3172                  automatically rearchive the nodelist/nodediff if you
3173                  use "ArcMethod"/"ArcDiffMethod", otherwise you can
3174                  rearchive manually.
3175
3176
3177                                 Out of Memory
3178
3179        Problem:
3180                  FastLst runs out of memory (Dos versions).
3181
3182        Solution:
3183                  - give more DPMI memory to FastLst
3184
3185                  - enable the DOS4GW virtual memory mode, using the
3186                    DOS4GVM environment variable (e.g. for 16MB virtual
3187                    allocation size: SET DOS4GVM=VirtualSize#16384).
3188
3189                    This works under real Dos only: if you are using
3190                    OS/2 dos sessions, use a higher DPMI_MEMORY_LIMIT in
3191                    the Dos settings.
3192
3193
3194                       Problems with Empty Phone entries
3195
3196        Problem:
3197                  Some program behaves oddly while accessing entries
3198                  that contain an empty phone number.
3199
3200        Solution:
3201                  The problem might be caused by the cost that is
3202                  assigned to empty-phone nodes (65535 by default).
3203                  Try using the "CostNullPhone" global statement to give
3204                  lower costs.
3205
3206                  Example:
3207
3208                  CostNullPhone 900 0
3209
3210
3211                                Slow processing
3212
3213        Problem:
3214                  FastLst works very slowly.
3215
3216        Solution:
3217                  Perhaps you are compiling a large nodelist or set of
3218                  nodelists on a system with few MegaBytes of free
3219                  physical RAM, so that the OS needs to extensively use
3220                  virtual memory. Try using the "LinkOnDisk" statement
3221                  in the configuration file.
3222
3223
3224                         System performance degradation
3225
3226        Problem:
3227                  FastLst loads the system excessively, so that other
3228                  OS/2 tasks don't perform properly (OS/2 version).
3229
3230        Solution:
3231                  Use the "Priority Idle" statement in the configuration
3232                  file, so that FastLst receives its time slices only
3233                  when other processes with higher priority are idle.
3234
3235
3236                              I want maximum speed
3237
3238        Problem:
3239                  I run FastLst while the communications are off, so I
3240                  would like it to run as fast as possible even if it is
3241                  in the background and other tasks are active (OS/2
3242                  version).
3243
3244        Solution:
3245                  Use the "Priority High 31" statement in the
3246                  configuration file, so that FastLst receives the
3247                  maximum priority for "non time-critical" processes.
3248
3249
3250                         Archived Diffs are not applied
3251
3252        Problem:
3253                  FastLst does not apply the archived Diffs.
3254
3255        Solution:
3256                  Remember that "InputPath <path>" is the default path
3257                  for lists and diffs, while "ArcPath <path>" is the one
3258                  for archives.
3259
3260                  Please compare your Compress.cfg with the example one,
3261                  check the paths and try the commands manually.
3262
3263                  Check the day-extensions and time-stamps of the
3264                  relevant files.
3265
3266
3267                            Dos/32 DOS4GW exception
3268
3269        Problem:
3270                  The Dos/32 version of FastLst aborts with an exception
3271                  from the Dos extender.
3272
3273        Solution:
3274                  Try booting with a "clean" config.sys and autoexec.bat
3275                  (the Dos extender might be incompatible with some of
3276                  your loaded drivers or TSRs.
3277
3278
3279                       Dial Scripts and VMODEM addresses
3280
3281        Problem:
3282                  How can I put script names or internet addresses in
3283                  the place of a phone number ?
3284
3285        Solution:
3286                  You may use the "Phone" statement.
3287
3288                  Example:
3289
3290                  Let's suppose the following Modem Type table is
3291                  defined:
3292
3293                  TypeDef
3294                    X75    1
3295                    V34    2
3296                    VM     3
3297                  End
3298
3299                  You may use a Phone override of this kind:
3300
3301                  Phone 2:345/678 domain.com VM,CM 10 0
3302
3303                  And a ModemTrans (for Binkley's VMODEM line):
3304
3305                  ModemTrans   0
3306                  ModemTrans   1
3307                  ModemTrans   2
3308                  ModemTrans   3 ATDT#  ; Vmodem
3309
3310
3311
3312                          Region and zone-level Export
3313
3314        Problem:
3315                  How can I export a Region segment together with the
3316                  zone-level entries ?
3317
3318        Solution:
3319                  The zone level entries have the Region/Net field equal
3320                  to the zone number; you can use the Export statement
3321                  in the following way:
3322
3323                  export MyR33.??? 1:1 2:2 2:33 3:3 4:4 5:5 6:6
3324
3325
3326                                   Support ?
3327
3328        Problem:
3329                  I cannot find the solution to my problems.
3330
3331        Solution:
3332                  - Try linking the APWORKS support echo
3333                  - Try asking your local supporter
3334                  - Try asking the author directly
3335                  You can find the addresses in the ReadMe.1st file.
3336
3337
3338
3339                               S H A R E W A R E
3340
3341
3342        If you like this program and continue using it, you should pay
3343        the author for his work, as per the ShareWare concept of
3344        distribution.
3345
3346        Please see LICENSE.DOC and REGISTER.DOC for information.
3347
3348        Thank you for your interest in FastLst.
3349
3350