home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 2 BBS / 02-BBS.zip / flst136.zip / Fastlst.Doc < prev    next >
Text File  |  1996-07-18  |  138KB  |  3,655 lines

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