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