@DATABASE "A Guide To TrapList"
@INDEX index
@AUTHOR "Maximilian Hantsch"
@(C) Copyright 1994-1996 by Maximilian Hantsch, all rights reserved.
@NODE MAIN "A Guide To TrapList"
 
@{B}Table of Contents@{UB}
 
@{"  1. Introduction                                           " link 1}
@{"  2. Basics                                                 " link 2}
@{"  3. The Nodelist                                           " link 3}
@{"  3.1.  General Information                                 " link 3.1}
@{"  3.2.  Details                                             " link 3.2}
@{"     Field 1: Keyword                                       " link 3.3}
@{"     Field 2: Zone/Region/Net/Node number                   " link 3.4}
@{"     Field 3: Node name                                     " link 3.5}
@{"     Field 4: Location                                      " link 3.6}
@{"     Field 5: Sysop name                                    " link 3.7}
@{"     Field 6: Phone number                                  " link 3.8}
@{"     Field 7: Baud rate                                     " link 3.9}
@{"     Field 8: Flags                                         " link 3.10}
@{"  3.11. Example Nodelist Entries                            " link 3.11}
@{"  3.12. An Example Fake Pointnet                            " link 3.12}
@{"  4. The Nodediff                                           " link 4}
@{"  4.1.  General Information                                 " link 4.1}
@{"  4.2.  Details                                             " link 4.2}
@{"  5. Configuration                                          " link 5}
@{"  6. Configuration Statements                               " link 6}
@{"  6.1.  BUFFERSIZE buffersize                               " link 6.1}
@{"  6.2.  (NO)CHECKCRC                                        " link 6.2}
@{"  6.3.  COMMENT comment-identifier                          " link 6.3}
@{"  6.4.  COST costs dial-prefix [dial-prefix...]             " link 6.4}
@{"  6.5.  (NO)DELOLDDIFFS                                     " link 6.5}
@{"  6.6.  (NO)DELOLDLISTS                                     " link 6.6}
@{"  6.7.  DIAL original-string replacement-string             " link 6.7}
@{"  6.8.  (NO)GENNEWSTYLE                                     " link 6.8}
@{"  6.9.  (NO)GENOLDSTYLE                                     " link 6.9}
@{"  6.10. NODELIST nodelistname [DIFF diffname]               " link 6.10}
@{"  6.11. NODELISTPATH path                                   " link 6.11}
@{"  6.12. PASSWORD password node [node...]                    " link 6.12}
@{"  6.13. (NO)QUIET                                           " link 6.13}
@{"  6.14. REPORT reportfile                                   " link 6.14}
@{"  6.15. ZONE zone                                           " link 6.15}
@{"  7. Example Configuration File                             " link 7}
@{"  8. Processing The Lists                                   " link 8}
@{"  9. Return Values                                          " link 9}
@{" 10. Past And Future                                        " link 10}
@{" 11. Politics                                               " link 11}
@{" 11.1.  Distribution & Licence                              " link 11.1}
@{" 11.2.  Support                                             " link 11.2}
@{" 11.3.  No Warranty                                         " link 11.3}
@{" 11.4.  Disclaimer                                          " link 11.4}
@{" 12. Acknowledgements                                       " link 12}
@{" 13. Index                                                  " link index}
@ENDNODE MAIN




















                                 TrapList
                   TrapDoor's Faaaast NodeList Processor
                               Version 1.63
                          Copyright (c) 1990-1996
                   Martin Laubach and Maximilian Hantsch
                            All rights reserved






                         TrapList's Faaaast Manual
                        Tuesday 03-Dec-96 16:13:28
                          Copyright (c) 1990-1996
                   Martin Laubach and Maximilian Hantsch
                            All rights reserved









                  This manual is intended to be read from
                    front to back for more convenience.
@NODE 1 "Introduction "
  1. @{B}Introduction@{UB}     

       This document is a brief description of TrapList, TrapDoor's
     @{B}fast@{UB} Nodelist Processor, explaining how to set up the
     software in order to compile FidoNet compatible Nodelists and
     apply Nodediffs to them.  

       Please read the @{B}entire@{UB} manual before using TrapList.  

       TrapList reads FidoNet compatible Nodelist and Nodediff files
     and produces an index and an extra file as outputs. These files
     are later used by TrapDoor to access the actual Nodelist in a
     fast way and to obtain important data from there, such as
     telephone numbers and session passwords.  









@ENDNODE 1
@NODE 2 "Basics "
  2. @{B}Basics@{UB}     

       TrapList is a CLI based application, it can't be run from
     WorkBench. It accepts a wide range of configuration statements
     that allow an easy and accurate configuration.  

       On invocation through a standard commandline interface or
     shell, TrapList will parse its configuration file, look for
     nodelist and nodediff files, apply matching nodediffs, parse the
     final nodelists, sort the nodes, delete duplicate entries and
     finally, write out an index as well as an extra file, both of
     them to the directory specified in the NODELISTPATH
     configuration statement.  
@ENDNODE 2
@NODE 3 "The Nodelist "
  3. @{B}The Nodelist@{UB}    

@ENDNODE 3
@NODE 3.1 "General Information "
  3.1. @{B}General Information@{UB}    

       @{"The Nodelist" link 3} is a file that contains important data about all
     the nodes in FidoNet. It is often called "the glue which holds
     the network together". It is FidoNet's "phone book" and it
     defines the top-level network structure.  

       @{"The Nodelist" link 3} is published each Friday as an ASCII text file
     named NODELIST.nnn, where nnn is the day-of-year of the Friday
     publication date. This file is packed into an standard archive
     file (using System Enhancement Associates' ARC file format)
     named NODELIST.Ann, where nn are the last two digits of
     day-of-year.  

       You can skip the next chapter if you want. It is just here to
     supply you with additional background information about the
     format of the nodelist.  You may want to come back to it when
     you need to build your own private nodelists, such as for a
     private point network.  

@ENDNODE 3.1
@NODE 3.2 "Details "
  3.2. @{B}Details@{UB}     

       @{"The Nodelist" link 3} contains two kinds of lines, comment lines and
     data lines.  Each line is terminated with an ASCII carriage
     return and line feed character sequence, and contains no
     trailing white-space (spaces, tabs, etc.). The file is
     terminated with an end-of-file character (EOF = decimal
     character value 26).  

       Comments lines contain a semicolon (;) in the first character
     position followed by zero or more alphabetic characters called
     "interest flags".  The remainder of a comment line (with one
     exception, treated below) is free-form ASCII text. There are
     five interest flags defined as follows: 

          ;S This comment is of particular interest to Sysops.
          ;U This comment is of particular interest to BBS users.
          ;F This comment should appear in any formatted "Fido List".
          ;A This comment is of general interest (shorthand for ;SUF).
          ;E This comment is an error message inserted by the nodelist
               generating program MakeNL.
          ; This comment may be ignored by a nodelist processor.

       The first line of a nodelist is a special comment line
     containing identification data for the particular edition of the
     nodelist. The following is an example of the first line of a
     nodelist: 

          ;A FidoNet Nodelist for Friday, July 3, 1987 --
               Day number 184 : 15943

       This line contains the general interest flag, the day, date,
     and day-of-year number of publication, and ends with a 5-digit
     decimal number with leading zeros, if necessary. This number is
     a 16-bit cyclic redundancy check (CRC) for the entire Nodelist
     file to ensure its integrity. The CRC may be used to verify that
     the file has not been edited. The importance of this will become
     evident in the discussion of NODEDIFF, below.  

       The content of the remaining comments in the nodelist are
     intended to be informative. TrapList does not have any interest
     in them at all.  

       A nodelist data line contains eight variable length "fields"
     separated by commas (,). No space characters are allowed in a
     data line, and underscore characters are used in lieu of spaces.
     The term "alphanumeric character" is defined as the portion of
     the ASCII character set from 20 hex through 7E hex, inclusive.
     The following discussion defines the contents of each field in a
     data line.  

@ENDNODE 3.2
@NODE 3.3 "Field 1: Keyword "
     @{B}Field 1: Keyword@{UB}   

       The keyword field may be empty, or may contain one of the
     following: 

       Zone -- Begins the definition of a geographic zone and defines
            its coordinator (Zone:0/0.0). All the data lines
            following a line with the "Zone" keyword down to, but not
            including, the next occurrence of a "Zone" keyword, are
            regions, networks, and nodes within the defined zone.  

       Region -- Begins the definition of a geographic region and
            defines its coordinator (Zone:Region/0.0). All the data
            lines following a line with the "Region" keyword down to,
            but not including, the next occurrence of a "Zone",
            "Region", or "Host" keyword, are independent nodes within
            the defined region.  

       Host -- Begins the definition of a local network and defines
            its host (Zone:Host/0.0).  All the data lines following a
            line with the Host keyword down to, but not including,
            the next occurrence of a "Zone", "Region", or "Host"
            keyword, are local nodes, members of the defined local
            network.  

       Hub -- Begins the definition of a routing subunit within a
            multilevel local network and defines its hub system
            (Zone:Host/Hub.0). The hub is the routing focal point for
            nodes listed below it until the next occurrence of a
            "Zone", "Region", "Host", or "Hub" keyword. The hub entry
            MUST be a redundant entry, with a unique number, for one
            of the nodes listed below it. This is necessary because
            some nodelist processors eliminate these entries in all
            but the local network.  
       Pvt -- Defines a private node with an unlisted telephone
            number. Private nodes are only allowed as members of
            local networks.  

       Hold -- Defines a node which is temporarily down. Mail may be
            sent to it and is held by its host or coordinator.  

       Down -- Defines a node which is not operational. Mail may NOT
            be sent to it. This keyword may not be used for longer
            than two weeks on any single node, at which point the
            "down" node is to be removed from the nodelist.  

       <empty> -- Defines a normal node entry (Zone:Host/Node.0 or
            Zone:Region/Node.0).  

       Point -- Defines a point entry in a private pointnet
            (Zone:Region/Node.Point). This keyword is never used in
            the FidoNet distribution nodelist, but it is a TrapList
            extension to allow easy setup of private pointnets.
            Points defined with this keyword belong the the
            previously listed node and end at the next Zone, Region,
            Host, Hub, or normal node entry.  

@ENDNODE 3.3
@NODE 3.4 "Field 2: Zone/Region/Net/Node number "
     @{B}Field 2: Zone/Region/Net/Node number@{UB}  

       This field contains only numeric digits and is a number in the
     range of 0 to 32767. If the line had the "Zone", "Region", or
     "Host" keyword, the number is the zone, net, or region number,
     and the node has an implied node number of 0. Otherwise, the
     number is the node number. The zone number, region or net
     number, and the node number, taken together, constitute a node's
     FidoNet address.  

       Zone numbers must be unique. Region or net numbers must be
     unique within their zone. Hub numbers must be within their net.
     Node numbers must be unique within their region (for regional
     independents) or net (for members of a local network). Duplicate
     node numbers under different hubs within the same net are not
     allowed.  

@ENDNODE 3.4
@NODE 3.5 "Field 3: Node name "
     @{B}Field 3: Node name@{UB}  

       This field may contain any alphanumeric characters other than
     commas and spaces. Underscores are used to represent spaces.
     This is the name by which the node is known.  

       If this field contains the characters "->", the rest of the
     line will not be parsed (and should be omited). This is never
     used in the FidoNet distribution nodelist, but it is a TrapList
     extension.  It means that internal variables will be set to the
     number provided in field 2, but the node will not be entered
     into the index file.  (There is not even data that could be
     entered.) The "->" extension allows easy setup of private
     pointnets. See the chapter about fake pointnets.  
@ENDNODE 3.5
@NODE 3.6 "Field 4: Location "
     @{B}Field 4: Location@{UB}   

       This field may contain any alphanumeric characters other than
     commas and spaces. Underscores are used to represent spaces.
     This field contains the location of the node. It is usually
     expressed as the primary local location (town, suburb, city,
     etc.) plus the identifier of the regional geopolitical
     administrative district (state, province, department, county,
     etc.). Wherever possible, standard postal abbreviations for the
     major regional district should be used (IL, BC, NSW, etc.).  

@ENDNODE 3.6
@NODE 3.7 "Field 5: Sysop name "
     @{B}Field 5: Sysop name@{UB}  

       This field may contain any alphanumeric characters other than
     commas and spaces. Underscores are used to represent spaces.
     This is the name of the system operator.  

@ENDNODE 3.7
@NODE 3.8 "Field 6: Phone number "
     @{B}Field 6: Phone number@{UB}  

       This field contains at least three and usually four numeric
     subfields separated by dashes (-). The fields are country code,
     city or area code, exchange code, and number. The various parts
     of the phone number are frequently used to derive cost and
     routing information, as well as what number is to be dialed. A
     typical example of the data in a phone number field is
     1-800-555-1212, corresponding to country 1 (USA), area 800
     (inbound WATS), exchange 555, and number 1212.  

       Alternatively, this field may contain the notation
     "-Unpublished-" in the case of a private node. In this case, the
     keyword "Pvt" must appear on the line.  

@ENDNODE 3.8
@NODE 3.9 "Field 7: Baud rate "
     @{B}Field 7: Baud rate@{UB}  

       This field contains one of the values:  300, 1200, 2400, 9600,
     19200, or 38400, and defines the maximum baud rate supported by
     the node.  

@ENDNODE 3.9
@NODE 3.10 "Field 8: Flags "
     @{B}Field 8: Flags@{UB}   

       This optional field contains data about the specific operation
     of the node, such as file requests, modem protocol supported,
     etc.  Any text following the seventh comma on a data line is
     taken collectively to be the flags field. The required format is
     zero or more subfields, separated by commas. Each subfield
     consists of a flag, possibly followed by a value.  

       The following flags define special operating conditions: 

          Flag     Meaning

          CM       Node accepts mail 24 hours a day
          MO       Node does not accept human callers

       The following flags define modem protocols supported: 

          Flag     Meaning

          V21      CCITT V21   300 bps full duplex
          V22      CCITT V22   1200 bps full duplex
          V29      CCITT V29   9600 bps half duplex
          V32      CCITT V32   9600 bps full duplex
          V33      CCITT V33
          V34      CCITT V34
          H96      Hayes V9600
          HST      USR Courier HST
          MAX      Microcom AX/96xx series
          PEP      Packet Ensemble Protocol

          NOTE:  Many V22 modems also support Bell 212A.  

          If no modem flag is given, Bell 212A is assumed for 1200
          bps systems, CCITT V22bis is assumed for 2400 bps systems.  

       The following flags define type of error correction available.
     A separate error correction flag should not be used when the
     error correction type can be determined by the modem flag. For
     instance, a modem flag of HST implies MNP.  

          Flag     Meaning

          MNP      Microcom Networking Protocol error correction
          V42      LAP-M error correction w/fallback to MNP

       The following flags define the type(s) of compression of mail
     packets supported.  

          Flag     Meaning

          MN       No compression supported

          NOTE:  The only compression method standard in FidoNet is
          archiving, using the standard SEA ARC format, with archive
          names defined by the specification for ARCMail 0.6. The
          absence of the MN flag indicates that ARCMail 0.6
          compression is supported by this node.  

       The following flags indicate the types of file/update requests
     supported.  

          Flag     Meaning

          XA       Bark and WaZOO file/update requests
          XB       Bark file/update requests, WaZOO file requests
          XP       Bark file/update requests
          XR       Bark and WaZOO file requests
          XW       WaZOO file requests
          XX       WaZOO file/update requests
       The following flag defines gateways to other domains
     (networks).  

          Flag     Meaning

          Gx..x    Gateway to domain 'x..x', where 'x..x` is a string
                   of alphanumeric characters. Valid values for 'x..x'
                   are assigned by the FidoNet International
                   Coordinator. Current valid values of 'x..x' may be
                   found in the notes at the end of the FidoNet
                   nodelist.

       The following flags define the dedicated mail periods
     supported. They have the form "#nn" or !nn where nn is the UTC
     hour the mail period begins, # indicates Bell 212A
     compatibility, and ! indicates incompatibility with Bell 212A.  

          Flag     Meaning

          #02      Zone 2 mail hour (02:30 - 03:30 UTC)
          #09      Zone 1 mail hour (09:00 - 10:00 UTC)
          #18      Zone 3 mail hour (18:00 - 19:00 UTC)

          NOTE: When applicable, the mail period flags may be strung
          together with no intervening commas, eg. "#02#09". Only
          mail hours other than that standard within a node's zone
          should be given. Since observance of mail hour within one's
          zone is mandatory, it should not be indicated.  

       The following flag defines user-specific values. If present,
     this flag MUST be the last flag present in a nodelist entry.  

          Flag     Meaning

          Ux..x    A user-specified string, which may contain any
                   alphanumeric character except blanks. This string
                   may contain one to thirty-two characters of
                   information that may be used to add user-defined
                   data to a specific nodelist entry.

       The FidoNet International Coordinator (IC) is the ultimate
     authority over what appears in the FidoNet nodelist. The IC may
     temporarily make changes or additions to the flags as defined in
     this document. The IC will then consult with The FidoNet
     Technical Standardisation Commitee (FTSC) over the changes
     needed to FTSC documents to reflect these temporary changes.  
@ENDNODE 3.10
@NODE 3.11 "Example Nodelist Entries "
  3.3. @{B}Example Nodelist Entries@{UB}   

       The following are examples of nodelist data lines: 

          Host,102,SOCALNET,Los_Angeles_CA,Richard_Martz,
               1-213-874-9484,2400,XP
          ,101,Rainbow_Data,Culver_City_CA,Don_Brauns,
               1-213-204-2996,2400,

@ENDNODE 3.11
@NODE 3.12 "An Example Fake Pointnet "
  3.4. @{B}An Example Fake Pointnet@{UB}  

       This is an example of a private pointnet: 

          ;A Private Secret Traplist for the other day -- fake crc 0 : 0
          ;A
          Zone,2,->
          Region,31,->
          ; the 2D part
          Host,3160,The_Mad_Net,Vienna_Austria,Maximilian_Hantsch,
                                          43-1-5567854,9600,MO,HST,XW
          Pvt,1,TrapDoor_Development,Vienna_Austria,Maximilian_Hantsch,
                                          -Unpublished-,9600,MO,HST,XW
          Pvt,2,Yet_Unnamed,Moedling_Austria,Michael_Brunner,
                                          -Unpublished-,9600,MO,HST,XW
          Pvt,3,The_Mad_Point,Weissenbach_Austria,Thomas_Hantsch,
                                          -Unpublished-,9600,MO,HST,XW
          ; the 4D part
          Host,310,->
          ,6,The_Mad_Net,Vienna_Austria,Maximilian_Hantsch,
                                          43-1-5567854,9600,MO,HST,XW
          Point,1,TrapDoor_Development,Vienna_Austria,Maximilian_Hantsch,
                                          -Unpublished-,9600,MO,HST,XW
          Point,2,Yet_Unnamed,Moedling_Austria,Michael_Brunner,
                                          -Unpublished-,9600,MO,HST,XW
          Point,3,The_Mad_Point,Weissenbach_Austria,Thomas_Hantsch,
                                          -Unpublished-,9600,MO,HST,XW
          ;
          ; An additional example:
          ; I am going to override the nodelist entry for 2:310/11,
          ; because it has changed recently.
          ; For this feature to work, be sure to list this private
          ; nodelist _before_ the main nodelist in your TrapList
          ; configuration file.
          ;
          Host,310,->
          ,11,Deep_Node,Vienna_Austria,Felix_Kasza,
                                          43-1-123-4567,1200,CM,V21
          ;


@ENDNODE 3.12
@NODE 4 "The Nodediff "
  4. @{B}The Nodediff@{UB}    

@ENDNODE 4
@NODE 4.1 "General Information "
  4.1. @{B}General Information@{UB}    

       With more than ten thousand nodes as of this date ('91), the
     nodelist, even in archive form, is a substantial document (or
     file). Since distribution is via electronic file transfer, this
     file is NOT routinely distributed.  Instead, when a new nodelist
     is prepared, it is compared with the previous week's nodelist,
     and a file containing only the differences is created and
     distributed.  

       The distribution file, called NODEDIFF.nnn, where nnn is the
     day-of-year of publication, is actually an editing script which
     will transform the previous week's nodelist into the current
     nodelist.  

       For actual distribution, NODEDIFF.nnn is packed into an
     archive file named NODEDIFF.Ann, where nn are the last two
     digits of day-of-year.  

       You can skip the next chapter if you want. It is just here to
     supply you with additional background information about the
     format of the nodediff.  

@ENDNODE 4.1
@NODE 4.2 "Details "
  4.2. @{B}Details@{UB}     

       The first line of NODEDIFF.nnn is an exact copy of the first
     line of LAST WEEK'S nodelist. This is used as a first-level
     confidence check to ensure that the right file is being edited.
     The second and subsequent lines are editing commands and editing
     data.  

       There are three editing commands and all have the same format: 

          <command><number> 

       <command> is a 1-letter command; A, C, or D. <number> is a
     decimal number greater than zero, and defines the number of
     lines to be operated on by the command. Each command appears on
     a line by itself. The commands have the following meanings: 

       Ann - Add the following nn lines to the output file.
       Cnn - Copy nn unchanged lines from the input to the output file.
       Dnn - Delete (or skip) nn lines from the input file.

       The following illustrates how the first few lines of
     NODEDIFF.213 might look: 

          ;A Friday, July 25, 1986 -- Day number 206 : 27712
          D2
          A2
          ;A Friday, August 1, 1986 -- Day number 213 : 05060
          ;A
          C5

       This fragment illustrates all three editing commands. The
     first line is the first line from NODELIST.206. The next line
     says "delete the first two lines" from NODELIST.206. These are
     the identification line and the line following it. The next
     command says "add the next two lines" to NODELIST.213. The two
     data lines are followed by a command which says "copy five
     unchanged lines" from NODELIST.206 to NODELIST.213. Notice that
     the first line added will ALWAYS contain the new nodelist's
     CRC.  

       Since only the differences will be distributed, it is
     important to ensure the accuracy of the newly created nodelist.
     This is the function of the CRC mentioned above. If the CRC in
     the Nodediff and the calculated CRC do not equal, one of the
     input files has been corrupted. If they are the same, the
     probability is very high (but not 100%) that the output file is
     accurate.  

@ENDNODE 4.2
@NODE 5 "Configuration "
  5. @{B}Configuration@{UB}     

       @{"Configuration" link 5} statements are given to TrapList by means of a
     configuration file. This file can either be called
     "TrapList.cfg", or, more generally, "fido.cfg". The
     configuration file will be first searched for in the current
     directory, then in "MAIL:". You can override this search
     sequence and specify your own alternate configuration file using
     the CONFIG commandline keyword, such as in 

          TrapList CONFIG DEVS:traplist-configuration 

       You can also specify the path and filename of the
     configuration file by means of an environment variable FCFGPATH.
     For example, 

          setenv FCFGPATH DH0:Configs/Fido-Config.txt 

       For detailed information on the global configuration file
     "fido.cfg", please consult additional documentation about the
     general structure of this file, how several applications can
     share configuration keywords, etc.  

       Please note that the configuration statements are neither case
     sensitive nor do they have to appear in any specific order. Only
     one statement should appear on a single line.  




@ENDNODE 5
@NODE 6 "@{"Configuration" link 5} Statements "
  6. @{B}Configuration Statements@{UB}    

@ENDNODE 6
@NODE 6.1 "BUFFERSIZE buffersize "
  6.1. @{B}BUFFERSIZE buffersize@{UB}    

       TrapList will buffer all file i/o to speed up the nodelist
     processing. This statement allows you to specify the amount of
     memory TrapList will use for each of its buffers. This value
     should be given in bytes. TrapList will always use at least
     buffers of 4096 bytes, even if a lower value is specified with
     BUFFERSIZE. The default is 32768 bytes.  

     Example:  BufferSize 65536 

@ENDNODE 6.1
@NODE 6.2 "(NO)CHECKCRC "
  6.2. @{B}(NO)CHECKCRC@{UB}     

       When this configuration statement is used, TrapList will check
     the CRC of the freshly generated nodelist when applying a diff.
     If the CRC is not what it is supposed to be, TrapList will issue
     a warning, delete the new nodelist and continue to use the old
     one instead. That way, you can always be sure to have a valid
     nodelist.  

     Example:  CheckCRC 

@ENDNODE 6.2
@NODE 6.3 "COMMENT comment-identifier "
  6.3. @{B}COMMENT comment-identifier@{UB}    

       When the nodelist is parsed, and TrapList encounters a comment
     line, it will compare the comment-identifier (";S" for Sysop
     comments, ";U" for User comments, a.s.o.) with the identifiers
     you specified here. If it finds the identifier listed, and the
     REPORT keyword is in effect, the comment line will be written to
     the reportfile (see REPORT).  

     Examples: Comment SU       ; list "Sysop" and "User" comments 
               Comment A        ; list "All" comments 
               Comment SUFA     ; list all comments 

@ENDNODE 6.3
@NODE 6.4 "COST costs dial-prefix [dial-prefix...] "
  6.4. @{B}COST costs dial-prefix [dial-prefix...]@{UB}  

       Specify phone costs per minute for a group of telephone
     numbers. When TrapDoor reads a phonenumber from the nodelist,
     and you have defined a certain cost, TrapDoor will be able to
     show you the total cost of your call. If you specify minus one
     ("-1") as the costs for a number, TrapDoor will never call
     there. You can use this to prevent TrapDoor from calling
     "-Unpublished-" numbers. See the example configuration file for
     more details. You can specify multiple dial prefixes for a
     single cost entry.  

     Examples: Cost 67   "43-1-"     ; 0.67 ATS/min for local calls 
               Cost 1333 "30-" "44-" ; Greece and UK cost the same 
               Cost -1   "-"         ; -Unpublished- = undialable 
               Cost 2800 ""          ; 28 ATS/min for all others 

@ENDNODE 6.4
@NODE 6.5 "(NO)DELOLDDIFFS "
  6.5. @{B}(NO)DELOLDDIFFS@{UB}     

       This tells TrapList to delete old nodediffs when they have
     been applied successfully.  

     Example:  DelOldDiffs 

@ENDNODE 6.5
@NODE 6.6 "(NO)DELOLDLISTS "
  6.6. @{B}(NO)DELOLDLISTS@{UB}     

       This tells TrapList to delete old nodelists when they have
     been "diff'd" into a new one.  

     Example:  DelOldLists 

@ENDNODE 6.6
@NODE 6.7 "DIAL original-string replacement-string "
  6.7. @{B}DIAL original-string replacement-string@{UB}   

       Specify a dial translation for phone numbers. When a
     phonenumber is read in from the nodelist by TrapDoor, these dial
     translations will be applied. If the beginning of the telephone
     number matches the original-string, it will be replaced by the
     replacement-string. Dial translations will be searched from
     first to last, and only the first match will be applied. After
     the first match, no further translation will be done.  

     Examples: Dial "43-1-"  ""   ; strip country and exchange code 
                                  ; for local calls 
               Dial "43-"   "0"   ; replace country code with "0" 
                                  ; for the rest of Austria 
               Dial "-"     "-"   ; do not translate "-Unpublished-" 
               Dial ""     "00"   ; add "00" to other numbers 

@ENDNODE 6.7
@NODE 6.8 "(NO)GENNEWSTYLE "
  6.8. @{B}(NO)GENNEWSTYLE@{UB}     
@ENDNODE 6.8
@NODE 6.9 "(NO)GENOLDSTYLE "
  6.9. @{B}(NO)GENOLDSTYLE@{UB}     

       These two keywords are now obsolete and are no longer
     supported. Remove them from your config files.  

@ENDNODE 6.9
@NODE 6.10 "NODELIST nodelistname [DIFF diffname] "
  6.10. @{B}NODELIST nodelistname [DIFF diffname]@{UB}  

       This specifies the name of a nodelist file to look for.
     TrapList will append day numbers to the filename and search for
     the nodelist with the highest number. If the DIFF keyword was
     specified also, TrapList will try to locate a matching nodediff
     file and apply it to the nodelist.  

       If a node is listed in more than one nodelist (for example, in
     the main FidoNet nodelist and in a private pointnet), the data
     from the first nodelist will be taken (in the order that the
     nodelists are listed in your configuration file). This allows
     you to override data for a node in the nodelist; just list the
     system in your private nodelist and specify the name of the
     private list before the main nodelist in the configuration file
     for TrapList.  

       Note: Nodelists will be scanned in @{B}reverse@{UB} order than
     specified. This is not a fault.  

     Examples: Nodelist "NODELIST" DIFF "NODEDIFF" 
               Nodelist "POINTNET" 

@ENDNODE 6.10
@NODE 6.11 "NODELISTPATH path "
  6.11. @{B}NODELISTPATH path@{UB}    

       This (required) configuration statement tells TrapList where
     to find Nodelist and Nodediff files and where to put its index
     files. It is not necessary to terminate the path specification
     with a slash.  

     Example:  NodeListPath "Nodelist:" 

@ENDNODE 6.11
@NODE 6.12 "PASSWORD password node [node...] "
  6.12. @{B}PASSWORD password node [node...]@{UB}  

       Associate a password with a certain nodenumber. TrapList will
     put the password into the extra file and TrapDoor will then
     automatically use that password when it establishes
     communication with that node. Also, on incoming calls, TrapDoor
     will check the password for the calling node and hang up if
     incorrect.  

       If you set up a password with a node that is also listed as a
     Zone Coordinator, Regional Coordinator, Net Coordinator, or Hub
     Coordinator, make sure you specify all of the node's addresses,
     or you might experience strange problems when calling one of the
     Coordinator's addresses. Note that you may specify multiple node
     addresses for a single password, especially for that purpose.  

       There also is a special password for nodes you want to disable
     from connecting to your system, "--NONE--". You may want to use
     this keyword for your own addresses, thus forbidding any caller
     from (fraudulently) using your address. TrapDoor will
     immediately disconnect if anyone calls you with the given
     address.  

     Examples: Password "secret" 2:310/6 2:3160/0 
               Password "geheim" 2:310/3 

@ENDNODE 6.12
@NODE 6.13 "(NO)QUIET "
  6.13. @{B}(NO)QUIET@{UB}     

       Suppress warnings about nodes defined more than once. You can
     use this to prevent TrapList from displaying "Duplicate Entry
     for Node..." when you process several nodelists which contain a
     few redundant node definitions (e.g. a pointnet or a region
     nodelist together with the main fidonet nodelist).  

       Note: The "Duplicate Entry" message will still be written to
     the reportfile.  

     Examples: Quiet 
               NoQuiet 

@ENDNODE 6.13
@NODE 6.14 "REPORT reportfile "
  6.14. @{B}REPORT reportfile@{UB}    

       Write some statistics about the processed nodelists into the
     given reportfile in addition to displaying them on stdout (the
     shell window). In conjunction with other utilities, such as
     Electric Herald, this can be used to automatically send the
     sysop information about freshly compiled nodelists and similar
     things. If you use the COMMENT keyword, selected comment lines
     from the nodelist will also be sent to the reportfile.  

     Example:  Report "Mail:Report.txt" 

@ENDNODE 6.14
@NODE 6.15 "ZONE zone "
  6.15. @{B}ZONE zone@{UB}    

       This is the default zone that TrapList should use for
     nodelists that do not contain a Zone keyword, i.e. Pointnets and
     similar private lists.  

     Example:  Zone 2 

@ENDNODE 6.15
@NODE 7 "Example @{"Configuration" link 5} File "
  7. @{B}Example @{"Configuration" link 5} File@{UB}   

          ; **********************************************
          ; ***   Sample TrapList configuration file   ***
          ; **********************************************

          Zone 2                       ; default zone number
          NodeListPath "Mail:Nodelist" ; my nodelist directory

          BufferSize 65536          ; use 64k buffer for file i/o

          NodeList "NODELIST" Diff "NODEDIFF"  ; nodelist & -diff
          NodeList "POINTNET"                  ; private pointnet

          CheckCRC       ; make sure that nodelists are okay
          DelOldLists    ; delete the old nodelists when diff'ed
          DelOldDiffs    ; delete the old nodediffs when processed

          Report t:TL.report    ; put reports into this file
          Comment SA            ; write Sysop and All comments
                                ; to the report file
          ; Passwords.
          ; note that you can specify several nodenumbers that
          ; all use the same password. this is for AKA addresses.

          Password 123456   2:310/3.0
          Password --NONE-- 2:310/6.0   2:3160/0.0
          Password pwd      2:310/11.32 2:3210/32.0
          Password guess    2:310/11 2:2/3 2:2/4 2:2/5 27:27/1

          ; phone number translations.

          Dial "43-1-" ""       ; local calls
          Dial "43-"   "0"      ; within Austria
          Dial "49-"   "060-"   ; use shortcut to Germany
          Dial "-"     "-"      ; leave "-Unpublished-" as is
          Dial ""      "00"     ; add "00" to other entries

          ; cost tables (in Austrian Groschen)
          Cost 67    "43-1-"    ; local calls in Vienna
          Cost 400   "43-2280-" ; somewhere in Austria
          Cost 1330  "213-"     ; Algeria
          Cost 867   "49-"      ; FRG (Germany)
          Cost 2800  "1-907-"   ; Alaska
          Cost 1800  "1-"       ; USA, Kanada
          Cost -1    "-"        ; forbid calls to -Unpublished-
          Cost 2800  ""         ; Rest of the World
@ENDNODE 7
@NODE 8 "Processing The Lists "
  8. @{B}Processing The Lists@{UB}   

       To process the latest nodelist and nodediff, simply call
     TrapList with "TrapList". Easy, isn't it? You should get an
     output quite like this: 

          TrapList 1.35 -- The TrapDoor Nodelist Processor
             © Copyright 1990, 1991 by Martin J. Laubach
                                   and Maximilian Hantsch
                     All rights reserved

          Applying NODEDIFF.054 to NODELIST.047
          Parsing NODELIST.054
           Zone 2  Europe
           Zone 1  North_America
           Zone 3  Oceania
           Zone 4  America_Latina
           Zone 5  AFRICA
          Sorting
          Processing
          Writing

          Total Nodes Processed        =   7360
          Bad Nodes                    =      0
          Unique Nodes                 =   7360
          Nodes Deleted (Down)         =    119
          Points                       =      0
          -------------------------------------
          Zone Coordinators Listed     =      5
          Regional Coordinators Listed =     38
          Network Coordinators Listed  =    300
          Hub Coordinators Listed      =    405
          =====================================
          Diff'ing                     =   0:27
          Parsing                      =   0:19
          Sorting                      =   0:06
          Processing                   =   0:02
          Writing                      =   0:05
          -------------------------------------
          Total time needed            =   0:59

@ENDNODE 8
@NODE 9 "Return Values "
  9. @{B}Return Values@{UB}    

       If everything went all right, and the index and extra files
     were both correctly produced and renamed, TrapList will return
     zero (0).  

       The nodelist index and extra files will be automatically
     updated through traplist.library. Programs which access the
     nodelist via traplist.library will automatically use the fresh
     index; there is no need to quit and restart such programs. If
     updating the index file fails (due to some disk i/o error, for
     example) TrapList will return 10.  

       On any other error, TrapList will return 20.  

       Note that in case of an error, the old index and extra files
     will be left unchanged, so TrapDoor will still be able to access
     a valid nodelist, even though it will not be the latest one in
     such a case.  

@ENDNODE 9
@NODE 10 "Past And Future "
  10. @{B}Past And Future@{UB}   

       TrapList was originally intended as a stopgap measure while
     waiting for Jürgen Hermann's final release version of CList.
     Since a lack of a working CList also prevented us from shipping
     a node-able TrapDoor, we had to do something about it -- that
     was how TrapList started.  

       Since the first release (which came together with TrapDoor
     1.50) quite a few things have changed. Not only have cost
     entries, nodelist CRC checking and passwords longer than 6
     characters been implemented, but also the whole nodelist concept
     has been completely reworked: TrapList now uses a new index and
     extra file format and comes with a shared Amiga library to
     access these files. Other products (such as BBSs or mail
     tossers) can make use of traplist.library to obtain data from
     the TrapList-indexed nodelist.  

       On the other hand, the project of also generating a version 6
     nodelist format has been dropped. TrapList and the related
     shared library offer so many advantages over the aged version 6
     format; we hope that most new programs will support
     "traplist.library".  

       "traplist.library" offers another entirely new feature: the
     extra file stores arbitrary data and associates it with a node
     address. Third party programs as well as TrapDoor can use this
     "extra database" to store their node-specific data. For example,
     TrapDoor now uses the extra file to hold accounting information
     (how many times that node was called, how many times it was
     busy, etc.) as well as the session password and "special config"
     commandlines. Other uses (to be implemented in other programs)
     could be: Packer/Unpacker to be used for echomail to that node,
     Areafix password, and many more.  

       "traplist.library" now also allows programs to scan the
     nodelist (to produce a list of nodes in your own net, for
     example). In addition to that, it also has an ARexx interface to
     allow easy usage from ARexx programs.  

       If you wish to know more about the programming interface of
     "traplist.library", please refer to the documentation
     "tl_lib.Man".  
@ENDNODE 10
@NODE 11 "Politics "
  11. @{B}Politics@{UB}     

       This chapter describes the software @{"Licence" link 11.1} for the extra
     utilities, how they may be distributed, and where you can find
     @{"Support" link 11.2} for the programs. Plus, some legalese.  



@ENDNODE 11
@NODE 11.1 "@{"Distribution" link 11.1} & Licence "
  11.1. @{B}Distribution & Licence@{UB}   

       TrapList and the traplist.library are part of TrapDoor®. Being
     part of the TrapDoor® package, the same software @{"Licence" link 11.1} as for
     TrapDoor® applies also to TrapList.  

       TrapList may be redistributed with two restrictions. First, it
     must be distributed as part of the TrapDoor package. Second, the
     distributor may only charge a fee up to the costs of obtaining a
     public domain diskette from Fred Fish for the complete package.  

       The distributor agrees to cease distributing the programs and
     data involved if requested to do so by the author. The
     distributor may only distribute an unmodified copy of the
     original TrapDoor package, with all the supplied documentation
     and copyright notices intact and without any files being added,
     changed or omitted.  



@ENDNODE 11.1
@NODE 11.2 "Support "
  11.2. @{B}Support@{UB}     

       The latest version of TrapDoor (with all its associated tools)
     is always available for filerequest from FidoNet node 2:310/6,
     "The Mad House" under the magic filename "TRAPDOOR".  

       There is also a FidoNet Echomail conference called TRAPDOOR,
     which should be available at major backbones. This conference is
     in English and intended for the users of TrapDoor and, of
     course, TrapList as well. There, you can freely exchange your
     experience with these programs, discuss future enhancements you
     would like to see etc. The authors will participate in the
     conference and try to assist you. The availability of new
     versions, patches, and additional utilities will be announced
     there, too.  
@ENDNODE 11.2
@NODE 11.3 "No Warranty "
  11.3. @{B}No Warranty@{UB}    

       THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED
     BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE
     COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS
     IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE
     RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH
     YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
     ALL NECESSARY SERVICING, REPAIR OR CORRECTION.  

       IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY
     REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
     FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
     CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
     THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
     BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
     PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
     PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED
     OF THE POSSIBILITY OF SUCH DAMAGES.  




@ENDNODE 11.3
@NODE 11.4 "Disclaimer "
  11.4. @{B}Disclaimer@{UB}     

       No warranty, either express or implied, is made with respect
     to the fitness or merchantability of TrapList.  

       Maximilian Hantsch and Martin Laubach (referred to as "the
     authors"), reserve the right to not develop any future versions
     of TrapList.  

       The authors will try to make a good faith attempt at
     correcting any problems if any are discovered, but are in no way
     required, nor bound to correct them.  

       The authors neither assume or accept any responsibility for
     the use or misuse of this program. They also will not be held
     liable for damages or any compensation beyond the original
     registration fee due to loss of profit or any other damages
     arising out of the use, or inability to use this program.  

       Neither Maximilian Hantsch nor Martin Laubach will be liable
     for any damage arising from the failure of this program to
     perform as described, or any destruction of other programs or
     data residing on a system attempting to run the program. While
     we know of no damaging errors, the user of this program uses it
     at his or her own risk.  
@ENDNODE 11.4
@NODE 12 "Acknowledgements "
  12. @{B}Acknowledgements@{UB}     

       The following names are either trademarks or the efforts of
     the person and/or company listed: 

          Amiga and AmigaDOS are trademarks of Commodore-Amiga, Inc.
          ARC by System Enhancement Associates.
          Chameleon Editor and CList by Jürgen Hermann.
          Fido and FidoNet are trademarks of Tom Jennings,
                         Fido Software.
          @{"Licence" link 11.1} Agreement inspired by Jack Radigan
                         and the GNU General Public License.
          Many Thanks to our Alpha and Beta testing crew, including,
                         but not limited to:
                         Andreas Dolleschal, Arnout Grootveld,
                         Manfred Schädler, René Hexel, Roger Nordin,
                         Telepro Technologies, Tony Miller ...
          Nodelist and Nodediff Information from FTS-0005.
          Special Thanks to all our Registered TrapDoor Users.
          TrapDoor by Maximilian Hantsch and Martin Laubach.
          TrapList by Martin Laubach and Maximilian Hantsch.



                    "This is the end. Please log off."

@ENDNODE 12
@NODE index Index
@{"(NO)CHECKCRC                               6.2.     " link 6.2}
@{"(NO)DELOLDDIFFS                            6.5.     " link 6.5}
@{"(NO)DELOLDLISTS                            6.6.     " link 6.6}
@{"(NO)GENNEWSTYLE                            6.8.     " link 6.8}
@{"(NO)GENOLDSTYLE                            6.9.     " link 6.9}
@{"(NO)QUIET                                  6.13.    " link 6.13}
@{"Acknowledgements                          12.       " link 12}
@{"An Example Fake Pointnet                   3.12.    " link 3.12}
@{"Basics                                     2.       " link 2}
@{"BUFFERSIZE buffersize                      6.1.     " link 6.1}
@{"CHECKCRC                                   6.2.     " link 6.2}
@{"COMMENT comment-identifier                 6.3.     " link 6.3}
@{"Configuration                              5.       " link 5}
@{"Configuration Statements                   6.       " link 6}
@{"COST costs dial-prefix [dial-prefix...]    6.4.     " link 6.4}
@{"DELOLDDIFFS                                6.5.     " link 6.5}
@{"DELOLDLISTS                                6.6.     " link 6.6}
@{"Details                                    3.2.     " link 3.2}
@{"Details                                    4.2.     " link 4.2}
@{"DIAL original-string replacement-string    6.7.     " link 6.7}
@{"Disclaimer                                11.4.     " link 11.4}
@{"Distribution & Licence                    11.1.     " link 11.1}
@{"Example Configuration File                 7.       " link 7}
@{"Example Nodelist Entries                   3.11.    " link 3.11}
@{"Field 1: Keyword                                    " link 3.3}
@{"Field 2: Zone/Region/Net/Node number                " link 3.4}
@{"Field 3: Node name                                  " link 3.5}
@{"Field 4: Location                                   " link 3.6}
@{"Field 5: Sysop name                                 " link 3.7}
@{"Field 6: Phone number                               " link 3.8}
@{"Field 7: Baud rate                                  " link 3.9}
@{"Field 8: Flags                                      " link 3.10}
@{"General Information                        3.1.     " link 3.1}
@{"General Information                        4.1.     " link 4.1}
@{"GENNEWSTYLE                                6.8.     " link 6.8}
@{"GENOLDSTYLE                                6.9.     " link 6.9}
@{"Introduction                               1.       " link 1}
@{"No Warranty                               11.3.     " link 11.3}
@{"NOCHECKCRC                                 6.2.     " link 6.2}
@{"NODELIST nodelistname [DIFF diffname]      6.10.    " link 6.10}
@{"NODELISTPATH path                          6.11.    " link 6.11}
@{"NODELOLDDIFFS                              6.5.     " link 6.5}
@{"NODELOLDLISTS                              6.6.     " link 6.6}
@{"NOGENNEWSTYLE                              6.8.     " link 6.8}
@{"NOGENOLDSTYLE                              6.9.     " link 6.9}
@{"NOQUIET                                    6.13.    " link 6.13}
@{"PASSWORD password node [node...]           6.12.    " link 6.12}
@{"Past And Future                           10.       " link 10}
@{"Politics                                  11.       " link 11}
@{"Processing The Lists                       8.       " link 8}
@{"QUIET                                      6.13.    " link 6.13}
@{"REPORT reportfile                          6.14.    " link 6.14}
@{"Return Values                              9.       " link 9}
@{"Support                                   11.2.     " link 11.2}
@{"The Nodediff                               4.       " link 4}
@{"The Nodelist                               3.       " link 3}
@{"ZONE zone                                  6.15.    " link 6.15}
@ENDNODE index
