home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.wwiv.com
/
ftp.wwiv.com.zip
/
ftp.wwiv.com
/
pub
/
MISC
/
MN321O16.ZIP
/
old_docs
/
makenl.txt
< prev
next >
Wrap
Text File
|
2004-07-09
|
108KB
|
2,414 lines
MakeNL -- Version 2.51
NODELIST Generator Program
by Ben Baker
Copyright 1987-1992 -- All Rights Reserved
Table of Contents
1. Introduction 1
1.1 How to use this manual 2
2. MakeNL Operation 3
2.1 Operational overview 3
2.2 Operation at a Hub or simple Network 4
2.3 Operation at a large Network 6
2.4 Operation by a Regional Coordinator 10
2.5 Operation by a Zone Coordinator 10
2.6 Putting together a Distribution Nodelist Segment 13
3. Definitions 14
3.1 Composite Nodelist 14
3.2 Generic File Name 14
3.3 Explicit File Name 14
3.4 Archive File 14
3.5 Difference File 15
3.6 Submittal File 15
3.7 Distribution File 15
3.8 Absolute Directory Path 15
3.9 Relative Directory Path 15
3.10 Publication Date 15
4. MakeNL Command Line 17
4.1 Control file name 17
4.2 /TEST switch 17
4.3 /PROCESS switch 18
4.4 /MERGE switch 18
4.5 /NAME=<network_name> 18
4.6 Error return codes 19
5. MakeNL Directories 20
5.1 Master Directory 20
5.2 Update Directory 20
5.3 Mailfiles Directory 20
5.4 Upload Directory 20
5.5 Other Directories 20
6. MakeNL Control File 21
6.1 Control statements 21
6.1.1 MAKe <segment_type> [<number> [<source_file>]] 21
6.1.2 NAMe <network_name> 22
6.1.3 PUBlish <day_of_week> 22
6.1.4 PROcess <day_of_week> 23
6.1.5 MERge [<nodelist_name>] 24
i
6.1.6 PRIvate <disposition> 25
6.1.7 MINphone <minimum_parts> 25
6.1.8 BAUdrate <valid_baud_rates> 26
6.2 Defining nodelist segment directories 27
6.2.1 MASter <directory_path_name> 27
6.2.2 UPLoads <directory_path_name> 27
6.2.3 MAIlfiles <directory_path_name> 28
6.2.4 UPDate <directory_path_name> 28
6.2.5 BADfiles <directory_path_name> 28
6.3 Defining output 29
6.3.1 OUTFile <filename> 29
6.3.2 OUTPath <directory_path_name> 29
6.3.3 THReshold <arc_size> [<diff_size>] 29
6.3.4 ARC <n> 30
6.3.5 OUTDiff <generic_filename> 30
6.3.6 CLEanup 32
6.4 External message transmission 32
6.4.1 NETaddress [<zone>:]<net>/<node> 33
6.4.2 MESsages <directory_path_name> 33
6.4.3 SUBmit <address> [<flags>] 33
6.4.4 NOTify <type> [<flags>] 34
6.5 Defining special files 34
6.5.1 Output comments files 34
6.5.1.1 COPyright <explicit_filename> 35
6.5.1.2 PROlog <explicit_filename> 36
6.5.1.3 EPIlog <explicit_filename> 36
6.5.2 Comments from received files 36
6.5.2.1 COMments <explicit_filename> 36
6.6 DATa 36
6.7 FILes 37
7. Disk and Memory Space Considerations 38
8. Contents of MakeNL Distribution Package 40
9. MakeNL License Information 41
ii
Table of Figures
Figure 1. Data Flow - Test Mode vs. Process Mode 3
Figure 2. Sample control files for Hubs and small Nets 5
Figure 3. Sample control file for large Nets 7
Figure 4. Sample control file for Regional Coordinator 9
Figure 5. Sample control file for Zone Coordinators 11
Figure 6, Sample control file for distribution lists 12
iii
1. Introduction
FidoNet, a trade mark of Tom Jennings, was the name of the first
amateur electronic mail program. There are now several mail
server programs that support FidoNet protocols. Many amateur
networks, large and small, are using one or more of these mail
servers to communicate regularly.
The glue that holds an amateur network together is its nodelist,
a document that describes the nodes in the network, and the re-
lationship between them. To be effective, this document must use
a consistent format, so that programs may process its information
automatically. The FidoNet Technical Standards Committee main-
tains, among others, a document called FTS-0005.TXT that defines
the format for a FidoNet compatible nodelist. A copy of that
document is included in this distribution.
Furthermore, a nodelist must be accurate and current. An out-of-
date phone number, for example, is useless. It must be updated
regularly, and most networks publish a new nodelist each week.
This is an enormous task in any network of more than a few dozen
nodes. No one person can do it. But division of labor adds
complexity.
Obviously, we need a tool that can help verify consistency,
maximize accuracy and currency, minimize effort, and minimize
cost. MakeNL is such a tool.
MakeNL supports the multilevel nodelist generation techniques
presently in use in several FidoNet compatible electronic mail
networks. It helps maintain nodelist segments at any level from
Hub through Network, Region and Zone to the composite distri-
bution nodelist.
MakeNL's main purpose for being is to create a "submittal file"
(see definitions - section 3 on page 14) containing your nodelist
update, and to send it to your coordinator. It can do this auto-
matically, if you set up its control file properly. It is a
complex program and looks intimidating, but it is not really
difficult.
MakeNL has features to help in nodelist preparation at any level,
but it is also adaptable. Features you don't need you may safely
ignore, and MakeNL will not complain.
MakeNL Introduction Page 2
1.1 How to use this manual
Section 2 is a tutorial on setting up and operating MakeNL. It
starts with the simplest case -- the lowest level of nodelist
maintenance -- and expands in steps to Zone Coordinator.
Sections 3 through 8 contain detailed reference information.
Section 2 necessarily refers to information contained in later
sections. The early paragraphs of section 2 contain frequent
forward references to assist the reader.
I recommend you read the entire document through once. Pay par-
ticular attention to those parts of section 2 that pertain to
you, but at least skim the rest. Familiarize yourself with the
layout and content of the various sections, but do not read for
thorough understanding on your first pass.
Carefully study section 2 a second time. Refer to other sections
for clarification of terms as necessary.
Select the sample control file that best represents your partic-
ular needs. Edit it to fit your particular environment, as in-
dicated in section 2 and the comments in the control file.
Make copies of your master data files in a safe place (floppy
diskette, or a directory tucked away in a far corner of your hard
disk).
Familiarize yourself with MakeNL by actually running it, in both
test and process mode. During this phase, I suggest you comment
out any "Submit" or "Notify" statements in your control file to
avoid generating spurious messages.
Introduce data errors to see how MakeNL handles them. Make sure
you're comfortable with it before you put it on line.
When you're satisfied, delete all "test case" files. Copy your
master files to your master directory. Make the necessary
changes to enable your mail server's "external event" for MakeNL
and you're up.
MakeNL simplifies your life. It looks imposing, but it's really
not very difficult.
MakeNL Page 3
Test Mode Directory Process Mode
+------------------+
+----------| |----------+
| | UPLOADS | |
| +-----| |-----+ |
| | +------------------+ | |
| | | |
| | +------------------+ | |
| | /---| |---\ | |
| |< | MAILFILES | >| |
| | \---| |---/ | |
| | +------------------+ | |
| | | |
| | +------------------+ | |
| +---\ | |---\ | |
Received | >| UPDATE | >| |
Update +--------/ | |---/ | |
Files +------------------+ | |
- - - - - - - - - - - - - - - - - - - - - - - | | - - - - - -
Master +------------------+ | |
Files | | /---+ |
| MASTER |< |
| | \--------+
+------------------+
| |
| +-------\ OUTPUT
| >
+------------/ FILES
Figure 1. Data Flow - Test Mode vs. Process Mode
2. MakeNL Operation
2.1 Operational overview
MakeNL operates in two distinct modes, test mode and process
mode. The mode of operation is controlled by the "PROcess"
statement in your control file (see section 6.1.4 on page 23), or
by the "/T" and "/P" command line switches (see sections 4.2 and
4.3 on page 17).
In test mode your personal nodelist segment, the part of the
nodelist you maintain, and any update segments you have received
from others are tested for errors. Submitters of any received
files are notified as indicated by the NOTify statements in the
control file, and their files are moved to the UPDate directory.
(See section 5 on page 20 for a description of MakeNL's direc-
tories.)
MakeNL MakeNL Operation Page 4
In process mode your MASter directory is updated by any files re-
ceived since the last time MakeNL was executed in process mode.
Master data files are used to produce your submittal and/or dis-
tribution files.
In general, MakeNL should be run in process mode once and only
once each week. Ideally, this will be done by an "external
event" from your mail server. It is then automatic, and one less
thing you have to worry about.
It may be run in test mode as often as desired to test received
files or changes in your own data.
MakeNL uses several directories to store data. Section 5 de-
scribes them in detail. Figure 1 illustrates the data flow from
directory to directory in the two modes of operation. Above the
dashed line, the data flow all deals with files received from
others -- perhaps from your Hubs if you are a Network Host, or
from Network Hosts if you are a Regional Coordinator. It is
clear from this picture that if you do not receive nodelist
updates from others (and many of you don't), you have no use for
three of MakeNL's data directories, and a good deal of MakeNL's
complexity disappears.
The following paragraphs give recommended set-up and operating
procedures for various types of coordinators.
2.2 Operation at a Hub or simple Network
Here is where the nodelist update process begins. You have a
small nodelist segment that you maintain. You do not receive any
update files from anyone else. If you are a Network Coordinator
and your network has Hubs, YOU maintain their data -- they just
forward the mail. Yours is the easiest task, so your set-up for
MakeNL is the simplest for you.
Figure 2 shows two variations of a MakeNL control file tailored
to your needs. You may maintain your nodelist segment as a sepa-
rate file, or you may embed your data in your MakeNL control
file. (I prefer the latter method, but it is a matter of taste.)
If you wish to maintain your data in a separate file, refer to
the top half of Figure 2 (a facsimile of file HUB.CTL in your
distribution package). If you want to keep your data in your
control file, refer to the bottom half of Figure 2 (a facsimile
of file NET-S.CTL in your distribution package). Refer to sec-
tions 5 and 6 as you study these files.
In either case, some minor editing of the control file you chose
as indicated by comments in the file will have you nearly ready
to go. When you have edited the control file to your liking, re-
name it MAKENL.CTL and move it to your mail server's home
directory.
MakeNL MakeNL Operation Page 5
+---------------------------------------------------------------+
| ; This variation uses a "master data file" for input and |
| ; sends output to the same file name. |
| |
| make hub <100> <hub.100> ; note explicit name of file |
| ; simplifies processing |
| outfile <hub.100> ; master and output files have SAME |
| ; name |
| |
| submit <host's address> ; where you send updates, CRASH |
| ; and/or HOLD optional |
| netaddress <your address> ; your network address here |
| messages <directory> ; path name to mail server's |
| ; mail area |
| |
| ; No other options are needed. Master directory and output |
| ; directory will default to the current directory. |
+---------------------------------------------------------------+
| ; This variation uses "internal" data at the bottom of the |
| ; control file. |
| |
| make network <nbr> ; No "master data file" input data |
| ; is below. |
| outfile <explicit name> ; output file |
| |
| submit <RC's address> ; where you send updates, CRASH |
| ; and/or HOLD optional |
| netaddress <your address> ; your network address here |
| messages <directory> ; path name to mail server's |
| ; mail area |
| |
| ; No other options are needed. Master directory and output |
| ; directory will default to the current directory. |
| |
| data |
| |
| ; Your source data goes here. The advantage of this over |
| ; the version above is that MAKENL will not reformat or change|
| ; your source data, even if you have errors. |
+---------------------------------------------------------------+
Figure 2. Sample control files for Hubs and small Nets
Since you don't have many files to keep track of, you will exe-
cute MakeNL from your mail server's home directory, and let your
MASter directory default to this directory as well.
Set up an external event in your mail server to execute once a
week at a day and time early enough to meet the deadline set by
your coordinator, but not much earlier than that. The batch file
MakeNL MakeNL Operation Page 6
fragment corresponding to this external event will execute the
statement:
MAKENL
You will normally ignore MakeNL. It will take care of itself.
When a change occurs in your data, edit your file using your fa-
vorite editor. After editing, execute the following DOS command:
MAKENL /T
just to be sure there are no errors. If MakeNL reports an error,
repeat the above steps until you've got it right.
If you have added new nodes to your list, and wish to inform them
of their node number assignments immediately, you need to get
your changes into your mail server's nodelist. MakeNL can per-
form the first step for you if you execute the DOS command:
MAKENL /T /M[[=<path>\]<filename>]
The /M switch tells MakeNL to merge your data with an existing
distribution nodelist into a temporary nodelist with an extension
of ".999". To do this, MakeNL must find a distribution list not
more than two weeks old. If /M is used by itself, MakeNL will
look for NODELIST.htu (see section 3.2 on page 14 for a
description of this notation) in the current directory. If
either the directory or the stem generic name are different, they
must be given as a value in the /M switch.
Examples
MAKENL /T /M ; use NODELIST in current
MAKENL /T /M=\BBS\NODELIST ; use NODELIST in \BBS\
MAKENL /T /M=R10-LIST ; use R10-LIST in current
When the external event triggers MakeNL in process mode (you are
in bed, sound asleep) It will create a new copy of your master
file, compare it to the old copy, and if nothing has changed, it
will simply delete the new copy. If the file has changed, it
will update your master file and create a submittal message to
send it to your coordinator.
That's all there is to it! MakeNL will take care of getting your
nodelist changes in on time if and when they occur.
2.3 Operation at a large Network
Your life is a little more complicated than above. You assemble
your submittal segment from your own file plus files received
from your Hubs. Not only do you need to figure out this section.
You need to understand the forgoing one too, so that you may ren-
der assistance to your Hubs if necessary. But cheer up, it's not
too bad!
MakeNL MakeNL Operation Page 7
+---------------------------------------------------------------+
| |
| make network <nbr> ; No "master data file" input data |
| ; is below. |
| |
| outfile <explicit name> ; use generic name if output file |
| ; is very large |
| |
| process Wednesday ; Set this day to meet deadline RC |
| ; gives you |
| |
| master <directory> ; where master files reside |
| ; (default - current) |
| update <directory> ; where to save received files |
| ; 'till processing |
| mailfiles <directory> ; where mail server places received |
| ; files |
| uploads <directory> ; where BBS places uploaded files |
| ; (if needed) |
| badfiles <directory> ; optional "waste can" for files |
| ; with fatal errors |
| |
| notify receipt ; notify both receipt and errors |
| ; CRASH and/or HOLD optional |
| submit <RC's address> ; where you send updates, CRASH |
| ; and/or HOLD optional |
| netaddress <your address> ; your network address here |
| messages <directory> ; path name to mail server's |
| ; mail area |
| |
| ; No other options are needed. |
| |
| data |
| |
| ; Your source data goes here. |
| |
| files |
| |
| Hub <nbr> <file name> ; either generic or explicit file |
| ; name, but must match convention |
| Hub <nbr> <file name> ; used by Hub. |
| Hub <nbr> <file name> <notification address>; if not "net/hub"|
| Hub <nbr> <file name> |
| ; etc. |
+---------------------------------------------------------------+
Figure 3. Sample control file for large Nets
Refer to the figure 3 (a facsimile of file NET-L.CTL in your dis-
tribution package).
MakeNL MakeNL Operation Page 8
The submittal file for most local networks will be less than five
kilobytes in size. For files this small, there is no advantage
in using a generic output file name (see section 3.2 on page 14).
Your Regional Coordinator will probably tell you to use an ex-
plicit file name. There is certainly no reason for you to
require your Hubs to use generic submittal file names. Notice
that the OUTFile statement in figure 3 indicates the use of an
explicit name.
Rename NET-L.CTL to MAKENL.CTL and move it to the directory you
wish to use as the current directory when you execute MakeNL.
Usually, this will be your mail server's home directory. Edit
the file as indicated in the comments in NET-L.CTL. If you only
have two or three hubs, you may wish to comment out the MASter
directory statement and let it default to the current directory.
Copy your own source data, the part you maintain which contains
the "Host" statement into the control file between the DATa and
FILes statements. Following the FILes statement, edit the HUB
definition statements to match the Hubs who submit update files
to you. Make sure the directories exist for all path names, that
they are all distinct directories, and if you used relative path
names, that they are relative to the directory from which you
will execute MakeNL. Make sure the process statement names the
right day so that you can meet your RC's submittal deadline.
That should get your control file in order.
Move your current copies of your Hubs' segment files to the di-
rectory defined as MASter in your control file.
Set up an external event in your mail server to execute daily at
a time early enough that, on your process day, you will meet the
deadline set by your Regional Coordinator, but not much earlier
than that. The batch file fragment corresponding to this exter-
nal event will execute the statement:
MAKENL
or if you want to keep a log of activity
MAKENL >>MAKENL.LOG
MakeNL is now set up to pretty well take care of itself. On non-
process days the external event will execute MakeNL in test mode.
It will scan the UPLoads and MAIlfiles directories for received
files, test them for errors, send out notifications and move the
files to the UPDate directory.
On the process day MakeNL will be executed in process mode. It
will scan the UPLoads and MAIlfiles directories for late files,
the UPDate directory for files received earlier in the week, and
the MASter directory for files not updated this week.
MakeNL MakeNL Operation Page 9
+---------------------------------------------------------------+
| make region <nbr> ; No "master data file" input data |
| ; is below. |
| |
| outfile <generic name> ; use generic name for output file |
| |
| process Thursday ; Set this day to meet deadline ZC |
| ; gives you |
| |
| arc 5 ; force ARC 6 or 7 to generate level 5 archives |
| ; DO NOT use ARC5 with ARC versions earlier than 6 |
| |
| master <directory> ; where master files reside |
| ; (default - current) |
| update <directory> ; where to save received files |
| ; 'till processing |
| mailfiles <directory> ; where mail server places received |
| ; files |
| uploads <directory> ; where BBS places uploaded files |
| ; (if needed) |
| badfiles <directory> ; optional "waste can" for files |
| ; with fatal errors |
| |
| notify errors CRASH ; notify of errors (CRASH and/or |
| ; HOLD optional) |
| notify receipt ; use either of these or both with |
| ; different attributes. |
| |
| submit <ZC's address> ; where you send updates, CRASH |
| ; and/or HOLD optional |
| netaddress <your address> ; your network address here |
| messages <directory> ; path name to mail server's |
| ; mail area |
| |
| data |
| |
| ; Your region source data goes here. |
| |
| files |
| |
| Net <nbr> <file name> ; either generic or explicit file |
| Net <nbr> <file name> ; name, but must match convention |
| ; used by Net. |
| Net <nbr> <file name> <notification address> ; if not "net/0" |
| Net <nbr> <file name> |
+---------------------------------------------------------------+
Figure 4. Sample control file for Regional Coordinator
MakeNL MakeNL Operation Page 10
All files will be tested (again) for errors, and sent to your
master output file. Your master copies of your Hubs' files will
be updated as necessary.
If (and only if) this week's output is changed from last week's,
your submittal file will be created in the current directory, and
a "file attach" message will be generated to send it to your
Regional Coordinator. All untouched by human hands!
When the data changes in your own nodelist segment, edit your
data file (usually your control file) and execute the DOS
command:
MAKENL /T
or
MAKENL /T /M ; see discussion in the previous section
Given a chance, MakeNL will do the right things at the right
times. You worry about other things, like "Why can't Hub 999
send me a file without errors? I gotta get him to use MakeNL!"
2.4 Operation by a Regional Coordinator
For the most part, section 2.3 applies to you too, but there are
some differences.
Figure 4 is a facsimile of REGION.CTL, the prototype control file
you will use.
You have enough files you will want to get them out of the clut-
ter of your mail server's home directory. You will set up a sep-
arate MASter directory (see section 5.1 on page 20).
Your output file is probably large enough that you will want to
take advantage of the benefits of using a generic output file
name. In fact, your ZC may require it.
If your region file is larger than 10 kilobytes, MakeNL will
create a compressed archive by executing the program ARC. If you
have version 6 or 7 of ARC and your ZC does not, you may want to
force ARC to produce level-5 compatible archives.
Other than that, substitute Network for Hub, Region for Network
and Zone for Region, and follow the procedures in 2.3 using the
file REGION.CTL from your distribution package.
2.5 Operation by a Zone Coordinator
Life gets still more complicated, but is still manageable.
Preparing a zone segment is much the same as preparing the region
segments of which it is made. Refer to sections 2.3 and 2.4
above, figure 5 (a facsimile of the file ZONE.CTL from your dis-
tribution package).
MakeNL MakeNL Operation Page 11
+---------------------------------------------------------------+
| make zone <nbr> ; No "master data file" input data |
| ; is below. |
| outfile <explicit name> ; use generic name for output file |
| ; if very large |
| process Thursday ; Set this day to meet deadline ITC |
| ; gives you or Friday after |
| ; cut-over to zone based nodelist |
| arc 5 ; force ARC 6 or 7 to generate level 5 archives |
| ; DO NOT use ARC5 with ARC versions earlier than 6 |
| |
| master <directory> ; where master files reside |
| ; (default - current) |
| update <directory> ; where to save received files |
| ; 'till processing |
| mailfiles <directory> ; where mail server places received |
| ; files |
| uploads <directory> ; where BBS places uploaded files |
| ; (if needed) |
| badfiles <directory> ; optional "waste can" for files |
| ; with fatal errors |
| notify errors CRASH ; notify of errors (CRASH optional) |
| ; Errors should not occur at this |
| ; level, but. . . |
| submit 1:1/0 ; where you send updates, CRASH |
| ; and/or HOLD optional |
| netaddress <your address> ; your network address here |
| messages <directory> ; path name to mail server's |
| ; mail area |
| |
| data |
| |
| ; Your zone source data goes here. Note that first |
| ; non-comment statement must begin with the keyword "Zone" |
| ; not "Region" |
| |
| files |
| |
| Region <nbr> <generic name> |
| Region <nbr> <generic name> |
| Region <nbr> <generic name> <notification address> ; if not |
| ; "region/0" |
| Region <nbr> <generic name> |
| ; etc. |
+---------------------------------------------------------------+
Figure 5. Sample control file for Zone Coordinators
On your process day, after generating your zone segment, you will
execute MakeNL a second time with a special control file to
create your zone's version of the distribution nodelist. Section
MakeNL MakeNL Operation Page 12
+---------------------------------------------------------------+
| make composite |
| name <network name> ; eg. FidoNet or AlterNet or EGGnet |
| |
| threshold 0 -1 ; force ARC -- no submittal difference file |
| |
| arc 5 ; force ARC 6 or 7 to generate level 5 archives |
| ; DO NOT use ARC5 with ARC versions earlier than 6 |
| |
| outfile <generic name> ; recommended names: |
| ; NODELIST - complete composite list |
| ; Zn-LIST - zone distribution list |
| ; Rnn-LIST - region distribution list |
| ; NnnnLIST - network distribution list|
| |
| outdiff <generic name> ; recommended names: |
| ; NODEDIFF - complete composite list |
| ; Zn-DIFF - zone distribution list |
| ; Rnn-DIFF - region distribution list |
| ; NnnnDIFF - network distribution list|
| |
| master <directory> ; same as OUTPath or MASter in |
| ; previous run |
| outpath . ; put <name>.nnn in current directory |
| |
| copyright <cpy-dist.txt>; if these three files are not path- |
| prolog <file name> ; qualified, they are lodated in the |
| epilog <file name> ; master directory |
| |
| files |
| |
| Network <nbr> <explicit name> ; must match OUTFile name of |
| ; previous run |
| ; or |
| Region <nbr> <generic name> ; must match OUTFile name |
| ; or |
| Zone <nbr> <generic name> ; must match OUTFile name |
| Zone <nbr> <generic name> ; file(s) received from |
| ; etc. . . ; other ZC(s) |
+---------------------------------------------------------------+
Figure 6, Sample control file for distribution lists
(?) deals with distribution lists. The only difference for ZCs
is that they will need to define the MAIlfiles path to pick up
the files from the other ZCs.
There are several advantages to "zone specific" distribution
NODELISTs. Prologue and epilogue comments may be "zone local-
ized." The local zone may be placed first in the list, a signif-
icant convenience to the nodes in your zone. There will probably
be quicker and better NODELIST availability.
MakeNL MakeNL Operation Page 13
2.6 Putting together a Distribution Nodelist Segment
Distribution lists (see section 3.7 on page 15) may be prepared
at any level except Hub, though it is not recommended below
Region. In theory, a distribution list may be prepared at the
same time your submittal file is prepared (MakeNL will support
this method). In practice, it is better to make a distribution
list in a separate run of MakeNL so that the distribution list
may have a distinct file name, and different copyright notices
and comments.
Refer to figure 6 (a facsimile of the file DISTRIB.CTL in your
distribution package). Now that you thoroughly understand all of
the forgoing (you do, don't you?), this file is fairly self-
explanatory. After you edit it to fit your specific needs, your
MakeNL external event can use it to create your distribution
files. If your MakeNL external event executes once a week, the
batch file fragment is trivial:
MAKENL
MAKENL DISTRIB
If your MakeNL external event is a daily event then:
MAKENL
IF ERRORLEVEL 3 GOTO LOOP
MAKENL DISTRIB
Here you make use of the fact that a return code of 3, 4 or 5
means that MakeNL was executed in test mode. That means it was
not your normal process day, so the batch file simply restarts
your mail server after testing any received files. On process
day you will "drop through" and create distribution files.
MakeNL Page 14
3. Definitions
Before we proceed further, we need to define some terms in use
throughout this document.
3.1 Composite Nodelist
The composite nodelist is defined, for our purposes, as the com-
plete list of all nodes in the network. It includes all Zones,
all Regions and all local nets.
3.2 Generic File Name
To MakeNL, a generic file name is one which does not have a file
type (or file extension). For example, NODELIST and FILES\ZONE1
are generic file names. MakeNL does special processing on files
when you specify them by generic names. It creates file types
for them based on publication date and contents of the files.
The publication date is translated into a 3-digit day-of-year,
represented here as "htu" where "h" is the hundreds digit, "t" is
the tens digit and "u" is the units digit of day-of-year. MakeNL
recognizes and/or creates the following file types for files with
generic names:
.htu - Master files, uncompressed submittal and distribution
files, distribution difference files
.Atu - Archived submittal and distribution files, archived
distribution difference files
.Dtu - Submittal difference files
.ADu - Archived submittal difference files
3.3 Explicit File Name
An explicit file name, on the other hand, has a specified file
type. PROLOG.TXT is an example. When data files are specified
this way, MakeNL does only limited processing on them, speci-
fically checking them for errors and copying them from directory
to directory. It makes no attempt to deal with archives or dif-
ference files.
3.4 Archive File
An archive file is a compressed file created by the ARC program
from System Enhancement Associates. You must have a copy of this
program in your current directory or on your DOS path (see "PATH"
command in your DOS manual) to make use of this capability of
MakeNL.
The ARC program, version 6 and later, has the ability to create
archives compatible with earlier versions of ARC. MakeNL pro-
vides a configuration verb to permit the use of this capability.
(See section 6.3.4 on page 30)
MakeNL Definitions Page 15
3.5 Difference File
A difference file is a file which defines the differences between
an older version of a file and a newly created one. In fact, the
difference file (sometimes called a "diff" file from the NODEDIFF
naming convention) contains a simple editing language. With a
copy of the old file and the difference file, MakeNL can accu-
rately recreate the new version of file.
3.6 Submittal File
A submittal file is one which you will send forward up the ladder
to be merged with other files from your level. A Hub sends his
submittal file to his network host. The host sends his submittal
file to his regional coordinator, etc.. MakeNL will create your
submittal file for you each week, and can even create the "file
attach" message to send the file over the network.
3.7 Distribution File
Distribution files, on the other hand go the other way. They are
meant for distribution down the ladder. NODELIST.htu and
NODEDIFF.htu are well known examples, but let's say you are a re-
gional coordinator, and some of the nodes in your region have no
interest in communicating with nodes outside the region. To con-
serve valuable disk space, they might wish to use a nodelist
which only contains your region. MakeNL can create such files.
They differ from submittal files only in the naming conventions
they observe.
3.8 Absolute Directory Path
An absolute path name is one specified from the disk's root
directory. It will always begin with a back-slant (\) or a drive
specifier followed by a back-slant (C:\) C:\BBS and \MASTER are
examples of absolute path names.
3.9 Relative Directory Path
A relative path name is one specified as a subdirectory from the
current working directory, without specifying what that is. It
never begins with a back-slant. FILES\RECEIVED and D:OPUS are
examples of relative path names. In the latter case the path is
relative to the current directory of the D drive.
See your DOS manual for additional information on path names.
3.10 Publication Date
The "publication date" is the date of the next publication of the
composite nodelist. It is always the same day of the week. It
is usually a Friday, but can be any day of the week.
MakeNL Definitions Page 16
The publication date is specifically, the next occurring
publication day (today, if this is your publication day).
NOTE: Most FidoNet compatible networks publish their
nodelist on Friday, but a few publish on other days. A
special verb is provided to control publication day.
(See section 6.1.3 on page 22.)
MakeNL Page 17
4. MakeNL Command Line
MakeNL is invoked with the following command line:
MakeNL [<control_file_name>] [/PROCESS | /TEST]
[/MERGE[=<list_name>] [/NAME=<composite_name>]
The switch names may be spelled out (/TEST), or abbreviated to as
few as one letter (/T).
4.1 Control file name
By default, MakeNL expects to find a control file named
MAKENL.CTL in the current directory. This can be overridden by
placing the name (optionally qualified with a path) on the com-
mand line. The control file may have any file extension, but if
none is given .CTL is assumed. For example:
MakeNL ZONE1
causes MakeNL to use ZONE1.CTL in the current directory, and:
MakeNL MASTER\NET100.CFG
causes MakeNL to use NET100.CFG in the subdirectory named MASTER
as its control file.
MakeNL must have a control file and will abort if it can find
none. See section 6 on page 21 for the contents of the control
file.
In operation, MakeNL writes a number of progress messages to
"standard output." By default, DOS sends these messages to your
screen, but you may redirect them to a file to retain a log of
MakeNL's activity:
MAKENL >MAKENL.LOG
MAKENL >>MAKENL.LOG
In the first case, the log file is recreated fresh each time
MakeNL is executed. In the second case, MakeNL appends the re-
sults of each execution to the end of the log file.
4.2 /TEST switch
The optional "/TEST" switch, if given, will force MakeNL to
operate in test mode, even on the normal process day.
MakeNL MakeNL Command Line Page 18
4.3 /PROCESS switch
The optional "/PROCESS" switch, if given, will force MakeNL to
operate in process mode, overriding the effect of a PROcess
statement in the control file.
4.4 /MERGE switch
The optional "/MERGE" switch, if given, will cause MakeNL to
merge your updated nodelist segment with an existing distribution
nodelist to produce a temporary nodelist containing your updates.
If <list_name> is given, it must have the form:
/M=[path\]<generic_name>
See discussion of MERge control file verb on page 24 for more
details.
4.5 /NAME=<network_name>
The optional /NAME switch is a specialized cosmetic switch. When
you MAKe a composite list (see section 6.1.1 on page 21), the
generated list begins, by default, with the line " Nodelist
for. . ."
The /NAME switch may be used to insert a network name in front of
the first word in that line. If the specified replacement name
contains spaces, the entire parameter must be enclosed in quotes.
For example, the coordinator for a network operated by the US
Parks Service might use:
MAKENL "/N=Parks Service"
The first line of his generated list would read "Parks Service
Nodelist for. . ." Note that to the right of the equal sign case
is significant. Any capitalization present will be preserved.
A FidoNet ZC might use:
MAKNL /N=FidoNet
If the MAKe statement in your control file (see page 21) is not
"MAKE COMPOSITE" the /NAME switch will have no effect.
See also the NAMe verb in section (?), page (?).
MakeNL MakeNL Command Line Page 19
4.6 Error return codes
MakeNL terminates with ERRORLEVEL (see your DOS manual) set to
one of the following values:
0 = Process mode - no errors encountered
1 = Process mode - no fatal errors encountered
2 = Process mode - one or more fatal errors encountered
3 = Test mode - no errors encountered
4 = Test mode - no fatal errors encountered
5 = Test mode - one or more fatal errors encountered
254 = MakeNL aborted - I/O error
255 = MakeNL aborted - Control file error
MakeNL Page 20
5. MakeNL Directories
MakeNL uses several disk directories in the performance of its
tasks. Some are required -- others are needed only to make use
of special features. In this text, MakeNL's directories will be
referred to by the following names.
5.1 Master Directory
The master directory is where MakeNL stores all of its master
files. Received files will migrate to this directory. MakeNL
requires a master directory.
5.2 Update Directory
The update directory provides interim storage for received files.
It is needed only if you process files received from others, and
notify them on receipt or when errors occur. It prevents multi-
ple notification.
5.3 Mailfiles Directory
The mailfiles directory is the directory in which your mail
server receives files. It is required if you receive nodelist
segments from others via the network.
5.4 Upload Directory
The upload directory is the directory in which your BBS stores
uploaded files. It is required if others upload nodelist seg-
ments to your BBS.
5.5 Other Directories
Depending on the options selected in the control file, MakeNL may
need access to other directories.
If MakeNL will be generating network messages it must be told in
which directory your mail server expects to find these messages.
By default, MakeNL places the master copy of its output file in
the directory with your other master files. You can, however,
define another directory to receive output files.
When a received file has a "fatal error," one which renders the
entire file unusable, MakeNL must get it out of the way to pre-
vent further attempts to process it. By default, it simply
deletes the offending file, but you may define a "bad files"
directory and MakeNL will move such files there.
The "current directory" when MakeNL is invoked is the default di-
rectory for MakeNL's control file.
MakeNL Page 21
6. MakeNL Control File
MakeNL requires a control file to define its operating parame-
ters. By default, this file is named MAKENL.CTL, but you may
specify another control file name on the command line.
The contents of the control file is a series of statements which
tell MakeNL what it is to do, and how it is to do it. Each
statement begins with a verb, and may have as many as three addi-
tional arguments.
MakeNL is not sensitive to "case" of characters in the control
file. Upper, lower or mixed case may be used. In the discussion
of the control verbs below, upper case is used to indicate the
minimum abbreviation required.
The definitions of the control file verbs are grouped by type for
clarity. Except for DATA and FILES, they may appear in your con-
trol file in any order.
6.1 Control statements
The following statements control the overall operation of MakeNL.
6.1.1 MAKe <segment_type> [<number> [<source_file>]]
A MAKe statement is required in every control file. It
tells MakeNL what type of nodelist segment it is to produce
and what kind of input to expect.
<segment_type> is one of HUB, NETwork, REGion, ZONe or
COMposite.
<number> is shown above as "optional." This isn't strictly
correct. For all segment types except COMposite, it is re-
quired. It must NOT be used for COMposite. <number> is the
network address number associated with the segment being
made.
Even if you are a Zone Coordinator, there is a part of the
nodelist segment you prepare which you, yourself maintain --
the list of nodes associated directly with your segment
heading. In the case of a ZONe segment type, this includes
the "zone gate" nodes. In the case of an RC it is the list
of "independent" nodes in your region. There are two ways
to input your sub-segment into MakeNL. One is through the
use of the DATa statement (see section (?) on page (?). The
other is by specifying a source file in the MAKe statement.
<source_file> must be an explicit file name without a path
qualifier. The named file must exist in the directory named
as your master directory. The first non-comment statement
MakeNL MakeNL Control File Page 22
in the file must match the MAKe statement in <segment_type>
and <number>.
Examples:
MAKE COMPOSITE ; make a complete nodelist
MAKE NET 100 MASTER.DAT ; input data from "master"
MAKE REGION 10 ; use DATA statement
6.1.2 NAMe <network_name>
When you MAKe a composite list (see section 6.1.1), the
generated list begins, by default, with the line " Nodelist
for. . ."
With the NAMe verb, you can define a <network_name> that
will be inserted in front of the first word of that line.
<network_name> is the only parameter in your control file
____
that is case-sensitive. It will appear in the list exactly
the way it appears in your control file. This verb is
almost identical to the /NAME switch (see section 4.5 on
page 18).
There are two restrictions imposed by the NAMe verb that do
not apply to the /NAME switch. <network_name> can be no
more than 15 characters long, and can not contain any spaces
or tabs.
If you use both the NAMe verb in the control file and the
/NAME switch on the command line, the command line switch
will override.
6.1.3 PUBlish <day_of_week>
Most FidoNet compatible networks publish their nodelists
each Friday. For that reason, MakeNL assumes a Friday pub-
lication day.
As noted earlier, the file extensions MakeNL computes for
generic file names are determined by publication date, which
____
is defined as the next occurrence of your publication day,
___
expressed as day of year. Obviously, your next publication
___________
date if different if you publish on Saturday, than if you
publish on Friday.
The PUBlish statement let's you inform MakeNL that you pub-
lish your list on some day other than Friday, and he will
adjust his generic file name extensions accordingly. The
<day_of_week> may be a full day name, or may be abbreviated
to as few as three characters.
MakeNL MakeNL Control File Page 23
Example:
PUBLISH SUNDAY ; sets file extensions according to
; Sunday's date
CAUTION: Some nodelist processors may fail to operate
correctly with file name extensions keyed to a day of
week other than Friday. For example, versions of
EditNL earlier than 4.20 will never find such files.
On the other hand, XLATLIST handles all such exten-
sions, but has a problem with the first list of a new
year if you don't delete the list(s) from the previous
year first.
6.1.4 PROcess <day_of_week>
MakeNL has two fundamental modes of operation, "test" and
"process."
In test mode, it scans input data and checks it for errors
and it moves received update files to the update directory.
Unless the MERge statement or the /M command line switch is
used, it does not produce any output.
In process mode MakeNL produces an updated master file for
your nodelist segment and any required submittal or distri-
bution files. Normally you will do this once each week.
If no PROcess statement is present, MakeNL will operate in
process mode unless the /T command line switch is used. If
the PROcess statement is present, it controls MakeNL's mode
of operation. Except on the day specified in this state-
ment, MakeNL will operate in test mode. When MakeNL is exe-
cuted on the defined process day, it operates in process
mode.
This statement is most useful to coordinators who receive
update files from others. It permits them to operate MakeNL
daily in an "external event" of their mail server. It error
checks received files and sends back notification on a daily
basis as files are received, but only on the appropriate day
does it create a submittal file and forward it up the lad-
der.
The <day_of_week> may be a full day name, or may be abbrevi-
ated to as few as three characters. It should be chosen so
that you may meet the submittal deadline set by the next
higher coordinator.
Example:
PROCESS THURSDAY
MakeNL MakeNL Control File Page 24
6.1.5 MERge [<nodelist_name>]
When you add new nodes (or nets, as the case may be) to your
list, you might like to notify them immediately that their
applications have been acted upon. This is complicated by
the fact that your mail server needs to know about these new
nodes (or nets), and that information comes from the distri-
bution nodelist. It may be several days before you receive
the updated version of the distribution nodelist containing
the new listing.
The MERge statement tells MakeNL to merge your updated seg-
ment into an existing distribution nodelist to create a tem-
porary nodelist your mail server can use. This action will
occur even if MakeNL is operating in test mode.
By default, MakeNL will search for NODELIST.htu not more
than two weeks old in the current directory, create a tempo-
rary list named NODELIST.999, copy from the distribution
list to the temporary list until it finds your segment in
the distribution list, generate an updated version of your
segment in the temporary list and finally, copy the remain-
der of the distribution list to the temporary list.
In order to find your segment in the distribution list,
MakeNL uses information from the MAKe and NETaddress state-
ments in your control file.
If you are MAKing a HUB, NETaddress must provide the net
number. If no NETaddress is given, the MERge command will
be canceled.
If you are MAKing anything other than a ZONE, and if the
distribution list is a zone-based list, the zone number from
the NETaddress command is used to place your segment in the
correct zone. If no zone number is given, MakeNL assumes
that your segment goes in the first zone it encounters in
the distribution list.
If present, <nodelist_name> must be a generic file name, but
may be qualified by a path name. It overrides the name and
location of the distribution list, but the rest of the ac-
tions are the same. The temporary list is placed in the
same directory as the distribution list being merged.
If the MERge statement is used in your control file, it will
ALWAYS be executed. If you prefer to "merge on demand" use
the /M command line switch instead. It is exactly equiva-
lent to the MERge statement. (See section 4.4 on page 18.)
Example:
MERGE \BBS\NODELIST
MakeNL MakeNL Control File Page 25
6.1.6 PRIvate <disposition>
Private nodes (identified by the PVT keyword in the
nodelist) are not universally permitted by all networks. In
a commercial network, for example, a node with no phone num-
ber listing is not particularly useful. By default, MakeNL
will accept these node entries contrary to a network coordi-
nator's intentions.
The PRIvate statement permits you to define other disposi-
tions for such entries. <disposition> must be one of OK,
NONE, ZONE, REGION, HOST or HUB.
"PRIvate OK" is equivalent to the default action -- private
nodes are permitted (but, of course, only within nets).
NONE says they are not permitted. The PVT keyword will be
treated as an error, with a note that "Private nodes are not
permitted in this network."
If <disposition> is any of the hierarchical keywords, a pri-
vate node will be transformed into an "open" node by remov-
ing the PVT keyword and substituting a known phone number in
the phone number field. The number used is that of the
nearest node at least as high in the hierarchy as the key-
word specified. For instance, if "PRIvate HOST" is given, a
private node will become a normal node with the phone number
of the most recently encountered Host, Region or Zone state-
ment. Even if the previous entry were a Hub, his phone num-
ber would not be used unless "PRIvate HUB" had been given.
For fairly obvious reasons, if you are MAKing a NETwork and
enter the statement "PRIvate ZONE," MakeNL will abort with a
control file error. It must be able to find at least one
phone number to make the substitution, and your file can't
have any zones or regions in it! The hierarchical level of
<disposition> must be equal to or lower than the level you
are MAKing. In the case you MAKe COMPosite, MakeNL will
take your word for anything your PRIvate statement tells it,
but if no matching phone number has been found before it en-
counters a private node, the private node will be treated as
though the statement were "PRIvate NONE," and will generate
an error.
6.1.7 MINphone <minimum_parts>
The sixth field of a nodelist entry is the phone number
field. MakeNL insures that it meets certain minimum stan-
dards. It must begin and end with a digit. It must contain
only digits and hyphens. There must not be two hyphens in a
row.
Phone numbers usually consist of several parts, separated by
hyphens. For example, a number might have a country code,
MakeNL MakeNL Control File Page 26
and area code, an exchange code and a line number. To
MakeNL, a phone number is a phone number. It attaches no
special meaning the number's various parts.
Some nodelist processing programs do attach meaning to the
parts of a phone number, and complain if they are not there!
For this reason MakeNL will enforce an additional con-
straint, if told to do so. It will insure that every phone
number has a certain minimum number of parts.
Example:
MINPHONE 4
This statement in a control file instructs MakeNL to reject
any entry with a phone number that does not have at least
four parts. The number "123-4567" would not be valid and
would cause an error message to be issued.
In a large hierarchical network of international scope, the
MINphone verb should only be used at the lower levels. Hubs
and Hosts may expect all phone numbers to fit some standard
format. Except in North America, regional coordinators are
likely to find variability in phone number format from coun-
try to country. A zone coordinator will certainly encounter
such variability. Attempts to enforce a standard number of
parts in a phone number at these levels will not be very
successful.
This is not a serious constraint on the use of MINphone.
The files received by RCs and ZCs have already been pro-
cessed at least once by MakeNL at a lower level where format
can be enforced. There should be no need to do it again.
6.1.8 BAUdrate <valid_baud_rates>
The seventh field of a nodelist entry is the baud rate
field. MakeNL checks the value in this field against a
table of valid baud rates. Experience has shown this to be
necessary. Certain types of errors can cause a part of the
phone number to appear to be in the baud rate field. With-
out a validity check, these errors could go undetected. By
default, the valid rates are 300, 1200, 2400, 4800, and
9600.
To accommodate future growth, the "valid baud rate" table is
configurable through the use of the BAUdrate verb. The
<valid_baud_rates> parameter is a list of up to twelve (12)
valid baud rates (numeric strings) separated by commas. It
may contain no spaces of tabs. It must be the complete
list, and will replace MakeNL's internal table.
MakeNL MakeNL Control File Page 27
For example:
BAUDRATE 1200,2400,4800,9600
This statement would effectively eliminate 300 baud nodes
from your list, while:
BAUDRATE 300,1200,2400,4800,9600,14400
would permit nodes to use 14400 baud in their entries. A
caveat in this case. Any new values must be authorized from
the top down. If you used this statement and submitted a
list with 14400 baud nodes, the first coordinator who did
not have a similar BAUdrate statement would reject those
nodes as having invalid baud rates.
In general, you can be more restrictive than the coordina-
tor(s) above you, but you cannot be more liberal!
6.2 Defining nodelist segment directories
MakeNL uses several directories for various purposes for storage
of nodelist segment data. The following statements are used to
define to MakeNL where these directories are located. They all
have the same format:
<verb> <directory_path_name>
<verb> is one of MASter, UPDate, MAIlfiles, UPLoads or BADfiles
as defined below.
<directory_path_name> is a relative or absolute directory path
name, with or without a disk specifier.
6.2.1 MASter <directory_path_name>
This is the directory in which MakeNL keeps all its "master"
files. This includes the master copy of your submittal
file, master copies of nodelist segments received from
others, your input source file, if used, and the three
"comments" text files, if used. In addition, for each seg-
ment given a generic name, week-old copies are kept here and
used create and/or apply difference files.
MakeNL always uses a master directory. If this statement is
absent, the current directory is used as the master direc-
tory.
6.2.2 UPLoads <directory_path_name>
If others upload update files to your BBS, this statement
tells MakeNL where to look for them. Only one upload direc-
tory may be named. If your BBS supports more than one, you
MakeNL MakeNL Control File Page 28
need to inform your submitters how to upload their updates
so that they wind up in the right directory.
If you don't receive update files via upload, omit this
statement and MakeNL will ignore it.
6.2.3 MAIlfiles <directory_path_name>
If you receive update files from others via network mail,
this statement tells MakeNL where your file server will put
the files.
If you don't receive update files via network mail, omit
this statement and MakeNL will ignore it.
6.2.4 UPDate <directory_path_name>
If you receive update files from others by any means, this
statement defines a temporary holding directory for them.
When MakeNL is operated in test mode, files it finds in the
UPLoads or MAIlfiles directories are moved to this direc-
tory. If you use notification (and you should use at least
error notification), MakeNL will generate a notification
message each time it finds a submitter's update file in one
of those directories. Moving received files to the update
directory prevents multiple notification.
If received files were moved to the master directory in test
mode, and if a subsequent difference file were received from
one of your submitters, you might have already lost the file
MakeNL needs to apply the difference file against!
When MakeNL operates in process mode, it moves files found
in any of these directories to the master directory as part
of its update process.
If you don't receive update files from others, omit this
statement and MakeNL will ignore it.
6.2.5 BADfiles <directory_path_name>
When a received file generates a fatal error, MakeNL refuses
to process it further. By default, it simply deletes the
offending file, but if this directory is defined, MakeNL
will move files with fatal errors here. This gives you a
chance (if you feel so inclined) to edit the file to correct
the error, then move it back to say the MAIlfiles directory
and process it again.
If you don't receive update files from others or don't want
to correct their errors for them, omit this statement and
MakeNL will ignore it.
MakeNL MakeNL Control File Page 29
6.3 Defining output
The following statements tell MakeNL what output to generate and
how to generate it. They only have effect when MakeNL operates
in process mode.
6.3.1 OUTFile <filename>
This statement is required in your control file. It defines
the name of your master and submittal files. These are the
same file unless MakeNL creates an archive or a difference
file. These files are placed in your OUTFile directory, or
if it is not defined, your MASter directory.
<filename> may be either explicit or generic, but the choice
carries some implications with it. Using an explicit output
file name inhibits some of MakeNL's features, but if your
output file is small they may not be of interest to you.
Specifically, MakeNL will create neither an archive file nor
a difference file for explicitly named files. The reason is
that to do so, MakeNL must have the freedom to manipulate
file extensions, but it cannot do that if you give it an
explicit file extension.
6.3.2 OUTPath <directory_path_name>
By default, MakeNL keeps all of its output (except a merge
file) in the MASter directory. This includes the output
master file, the submittal file (if different), and
distribution files. The OUTPath statement, if present,
tells MakeNL to keep its output in a different directory.
6.3.3 THReshold <arc_size> [<diff_size>]
When you use a generic output file name, MakeNL will do its
best to insure that your submittal file is small enough to
send to your coordinator in a one-minute phone call. It has
two ways to compress a file.
First, it can create an archive file, using the ARC program.
This will typically achieve about 40% reduction in size.
Second, it can create a difference file. This is a file
which contains only the differences between your new output
file and your previous one. This technique can achieve dra-
matic file size reduction, but is not as safe as the former.
It assumes that your coordinator has a copy of your previous
file (usually a safe assumption). With it and the new dif-
ference file he can reconstruct your new output file.
At 2400 baud, you can transmit a file about 10000 characters
long in a one-minute phone call. If an archive file is at
least 40% smaller than its uncompressed version, a file of
up to 16666 characters can be archived and transmitted in a
MakeNL MakeNL Control File Page 30
minute. These are the two default thresholds MakeNL uses to
determine what to do with your submittal file. The
THReshold statement can override these defaults.
If your submittal file is larger than <arc_size> (in bytes),
MakeNL will use ARC to create an archive of it, and submit
the archive file.
If your submittal file is greater than <diff_size>, MakeNL
will create a difference file and submit it. If a differ-
ence file is still larger than <arc_size>, MakeNL will cre-
ate an archive of the difference file and submit that, but
that is the best it can do.
If <diff_size> is given, it must be greater than or equal to
<arc_size>. If <diff_size> is not given it is calculated by
MakeNL as 5/3 * <arc_size>.
Examples:
THRESHOLD 5000 ; recommended value for 1200 baud
THR 0 ; always create an archived diff file
THR 0 -1 ; always archive -- no diff
THR -1 -1 ; turn compression off
6.3.4 ARC <n>
MakeNL creates compressed archive files by executing the
program ARC by System Enhancement Associates.
ARC will, by default, produce the maximum compression of
which it is capable. This may not always be desirable. If
you have version 6 or 7 of ARC, and the recipient of your
archived file does not, he will be unable to unpack your
archives.
The ARC <n> verb will force these versions to create level-5
or level-6 compatible archives, thus insuring compatibility.
The parameter <n> must be either "5" or "6."
Do not use ARC <n> if you have ARC version 5 or earlier. It
will cause errors, as will the use of "ARC 6" with version
6! The compatibility level must always be LOWER that your
version level.
6.3.5 OUTDiff <generic_filename>
MakeNL's primary mission is to gather segments of the
nodelist and assemble larger segments for submittal to the
next higher coordinator, until finally all the segments have
been assembled and the result is the network's distribution
MakeNL MakeNL Control File Page 31
nodelist. However, if desired, distribution lists may be
created at any step along the way.
Distribution lists are actually created in pairs. A famil-
iar pair is NODELIST.htu and NODEDIFF.htu, the files which
define the Public FidoNet Network.
There is no reason why a node must use the full network list
if a smaller list will suit his needs. Indeed, programs
such as PRUNE are based on this philosophy.
When the OUTDiff statement appears in your control file,
MakeNL will produce a pair of distribution files. OUTFile
and OUTDiff must specify distinct generic names, and they
will become the "stem" names of your distribution files.
Distribution files differ from submittal files in the naming
conventions used to determine file extensions. For example,
assume:
OUTFILE REGION10
OUTDIFF R10-DIFF
Then the following table defines the file names of generated
submittal and distribution files:
Compression Submittal Distribution
None REGION10.htu REGION10.htu
Archive REGION10.Atu REGION10.Atu
Difference REGION10.Dtu R10-DIFF.htu
Both REGION10.ADu R10-DIFF.Atu
Note that the full list and its archive bear the same name
in both columns. Indeed, they are the same files. But sub-
mittal files use the same filename stem for all types of
files, while distribution difference files have unique file-
name stems. The reason for this is to support the tra-
ditional names NODELIST and NODEDIFF as painlessly as
possible.
Distribution files, as with submittal files, are placed in
the OUTPath directory. Once created, these files are ig-
nored by MakeNL, unless explicitly told to clean up its old
files (see the CLEanup command below).
The following control file fragment would create NODELIST
distribution files for the Public FidoNet Network.
MakeNL MakeNL Control File Page 32
Example:
MAKE COMPOSITE
THRESHOLD 0 -1 ; force archiving -- no submittal diff
OUTPATH . ; master list to current directory
OUTFILE NODELIST ; create NODELIST.Atu
OUTDIFF NODEDIFF ; create NODEDIFF.Atu
When MakeNL has finished, three files are left in the cur-
rent directory; NODELIST.htu, NODELIST.Atu and NODEDIFF.Atu.
Note that with "THRESHOLD 0 0," NODELIST.ADu would be cre-
ated with contents identical to NODEDIFF.Atu.
6.3.6 CLEanup
If you use a generic OUTFILE name, and if you create
difference and/or archive files, they tend to accumulate in
your OUTPATH directory over time. By default, MakeNL
ignores them completely. This is done so that OUTPATH can
point to a "download" directory where several editions might
be made available to users.
When MakeNL operates in process mode and CLEanup (no
arguments) appears in the control file, after all other
processing is done, it searches the OUTPATH directory for
old difference and/or archive files and deletes any it
finds.
CLEanup has no effect on current files or the handling of
output master files. It has no effect whatever when MakeNL
is operated in test mode.
6.4 External message transmission
MakeNL can generate two kinds of network messages, notification
messages and submittal messages.
Notification messages are addressed to submitters to notify them
of receipt of and/or errors in their submittal files.
A submittal message is addressed to your coordinator, and has
your submittal file attached.
Messages created by MakeNL are compatible with SEAdog by System
Enhancement Associates. Except for CRASH and HOLD attribute
flags, they are compatible with Fido v11, and (I think) Fido v12
by Tom Jennings. They are probably compatible with other mail
servers, but I cannot guarantee it.
The following statements control the generation of these
messages.
MakeNL MakeNL Control File Page 33
6.4.1 NETaddress [<zone>:]<net>/<node>
This statement is used to tell MakeNL what your network ad-
dress is. MakeNL must know your network address in order to
generate the "From:" field in submittal or notification mes-
sages. If MakeNL must create inter-zone messages, it needs
to know your zone number. In addition, your zone number,
and if you are MAKing a HUB, your net number may be needed
to properly perform a MERge operation.
If your control file does not contain a NETaddress state-
ment, MakeNL will try to guess you network address from your
MAKe statement. If you are MAKing a ZONE, your default
network address is <nbr>:<nbr>/0. If you are MAKing a
REGION or NETWORK, your default network address is
0:<nbr>/0. If you are MAKing a HUB, MakeNL hasn't a clue!
If the default network address MakeNL selects for you is
satisfactory, you don't need a NETaddress statement, but it
is recommended that you include one to remove all doubt.
Examples:
NETADDRESS 100/76
NETADDRESS 1:1/0
6.4.2 MESsages <directory_path_name>
This statement is required if MakeNL is to generate ANY out-
going messages. It tells MakeNL the name of the directory
used by your mail server for network mail messages.
Example:
MESSAGES D:\BBS\MAIL
6.4.3 SUBmit <address> [<flags>]
The SUBmit statement tells MakeNL that in process mode it is
to create a "file attach" message to send your submittal
file to your coordinator. <address> is his network address.
Optional <flags> may be any or all of CRASH, HOLD or INTL.
These should not be used unless your mail server supports
them.
Example:
SUBMIT 13/0 CRASH
The INTL flag is a special case. It forces MakeNL to add
the "^AINTL: <from> <to>" extended address line to all
___
messages it creates, even if they are not leaving your zone.
MakeNL MakeNL Control File Page 34
Indiscriminate use of this flag is not recommended. You
___
should use it only if your mail server needs all messages to
contain the expanded address.
NOTE: If you don't know what I'm talking about, don't
use the INTL flag. It may cause you trouble. Consult
your mail server's documentation for guidance. Most
mail servers do not require this feature and many
consider these messages malformed. Two which may need
the INTL flag are D'Bridge and FrontDoor.
6.4.4 NOTify <type> [<flags>]
If the NOTify statement is used, when MakeNL finds a re-
ceived update file in either the UPLoads or MAIlfiles direc-
tory, it will notify the submitter that the file was re-
ceived and/or that the file contained errors.
Optional <flags> may be any or all of CRASH, HOLD or INTL.
These should not be used unless your mail server supports
them. (INTL need only be specified once, and it applies to
all messages.)
___
<type> is one of RECeipt, ERRors or SELF.
RECeipt and ERRors control notification of nodes submitting
files to you. If only NOTIFY RECEIPT is used, all notifica-
tion messages will have the same attributes, as defined by
<flags>. If only NOTIFY ERRORS is used, the submitter is
NOT notified unless his update file has errors. NOTIFY
RECEIPT and NOTIFY ERRORS may both be used with different
message attribute flags, if desired. In other words, normal
receipt notification may be sent "regular" mail, while error
messages are sent "CRASH."
Unless you execute MakeNL with the "/T" switch, NOTIFY SELF
instructs MakeNL to enter a message to you if it encounters
any errors in your input data. If you edit your master file
without testing it and you goof (shame), the error could go
unnoticed for some time. When MakeNL is executed by your
external event, the error will cause a message to you to ap-
pear in you network mail area.
6.5 Defining special files
MakeNL uses a number of special files in the performance of its
duties. The statements in this section provide the means to de-
fine these files and/or alter defaults.
6.5.1 Output comments files
When MakeNL processes nodelist segment data, it ignores com-
ments embedded in the data files. These comments are as-
sumed to be your notes to yourself. They might be anything
MakeNL MakeNL Control File Page 35
-- voice phone numbers, suspense dates when "down" nodes are
expected to come back on line, etc..
Comments may be placed in submittal files to communicate
information to your coordinator, or in distribution files to
communicate information to your users, but not by embedding
them in your data.
Instead, comments are placed in your output files by creat-
ing and maintaining three special text files in your MASter
directory. In process mode, MakeNL searches for these files
and, if they exist, copies them into your submittal file.
It is not an error if any of them does not exist. Missing
comments are simply ignored.
When MakeNL copies any of these files to the output file, it
examines the first character of each line to see if it con-
tains a "comments flag," a semicolon (;) character. Any line
beginning with a semicolon is copied as is to the output
file. MakeNL inserts ";S " at the beginning of any line
which does not begin with a semicolon.
6.5.1.1 COPyright <explicit_filename>
By default, MakeNL looks for a file named CPYRIGHT.TXT in
the MASter directory. If it exists, it is assumed to be a
copyright notice, and is copied into the output file immedi-
ately under the identification header line.
The copyright file gets a special treatment the other com-
ments files do not get. If a string of four pound signs
(####) is found in the first line, it is replaced with the
current year. Thus "Copyright ####" becomes "Copyright
1987" automatically. You don't have to remember to edit
your copyright notice in January.
The COPyright statement lets you override the default name
"CPYRIGHT.TXT" with any other explicit name. You might need
to do this if, for example, you are a Regional Coordinator
and use two different control files to create your submittal
file and distribution files. You may use the same MASter
directory for both and have different copyright notices on
each. In fact, you might name a nonexistent file when
generating your submittal file, thus eliminating the notice.
Examples:
COPYRIGHT CPY-DIST.TXT
COPYRIGHT NONE ; file "NONE" does not exist
MakeNL MakeNL Control File Page 36
6.5.1.2 PROlog <explicit_filename>
By default, MakeNL looks for a file named PROLOG.TXT in the
MASter directory. If it exists, it is copied into the out-
put file immediately under any copyright notice.
The PROlog statement allows you to override the default
filename, "PROLOG.TXT" with any explicit file name. If the
named file does not exist in the MASter directory, the ef-
fect is to turn off prologue comments.
6.5.1.3 EPIlog <explicit_filename>
By default, MakeNL looks for a file named EPILOG.TXT in the
MASter directory. If it exists, it is copied into the out-
put file following all nodelist segment data.
The EPIlog statement allows you to override the default
filename, "EPILOG.TXT" with any explicit file name. If the
named file does not exist in the MASter directory, the ef-
fect is to turn off epilogue comments.
6.5.2 Comments from received files
As stated earlier, comments in nodelist segment data files
are NOT copied into output files. But comments in your re-
ceived files are probably there to communicate information
to YOU. Like the old dairy cream separator, MakeNL can sep-
arate comments from received files out into their own file.
6.5.2.1 COMments <explicit_filename>
When the COMments statement appears in your control file, it
tells MakeNL to write the name of each input file to the
named comments file, followed by any comments statements
that appear in that file.
The file name MUST be explicit, but may have a path name.
The comments file will appear in the current directory if no
path is given.
If the COMments statement is omitted, comments in received
files are ignored by MakeNL.
6.6 DATa
The DATa statement is used as an alternative method of entering
your nodelist segment (see MAKe on page 21). If used, the DATa
statement MUST follow all control statements except FILes.
The DATa statement actually causes MakeNL to shift gears. It has
been processing control information. After the DATa statement,
it begins processing nodelist data, which immediately follows it
MakeNL MakeNL Control File Page 37
in your control file. The format and rules for this data are the
same as for any nodelist data.
The first non-comment statement encountered must match the MAKe
statement in <segment_type> and <number>, or a fatal error will
occur.
6.7 FILes
If you receive segment updates from others, you must use the
FILes statement to define the files you receive and process. If
you furnish all the input data yourself, you will not use a FILes
statement.
When used, the FILes statement MUST be the last control statement
in the control file. It is followed by a list of file entry
statements in the following format:
<segment_type> <number> <filename> [<notify>]
<segment_type> is one of HUB, NETwork, REGion or ZONe, but it
must be hierarchically lower than the MAKe <segment_type>. In
other words, if MAKing a region segment, <segment_type> must be
either NETwork or HUB -- it may not be REGion or higher.
<number> is, of course the network address number associated with
the segment.
<filename> is used by MakeNL to search through the various direc-
tories for the file defining this segment. You and your submit-
ter must agree on this filename. His MakeNL must generate what
your MakeNL will look for. <filename> may be either explicit or
generic, but it must be defined the same by both you and your
submitter.
The first non-comment statement in an input segment file must
match <segment_type> and <number>, or a fatal error occurs.
When you use notification, MakeNL will calculate a network ad-
dress for notification messages. If you are MAKing a network
segment for, say net 107, and receiving update segments from your
Hubs, notification messages will be sent to 107/<number>. In all
other cases, MakeNL sends notification messages to <number>/0 by
default.
The optional argument <notify> is the network address MakeNL
should use for notification messages and will override the calcu-
lated address.
Examples:
REGION 14 REGION14 14/61
NETWORK 100 NETWORK.100
MakeNL Page 38
7. Disk and Memory Space Considerations
If you do not use archiving compression, MakeNL should execute
satisfactorily in about 160 kilobytes. If you are using archiv-
ing, you should have about 290 kilobytes of memory. IF YOU
ATTEMPT TO EXECUTE ARC WITH TOO LITTLE MEMORY, YOU MAY LOSE
FILES!
MakeNL is not as extravagant with disk space as it sounds, but if
you are a Regional or Zone Coordinator, you should do a little
planning.
Your MASter directory will hold one copy of each .TXT comments
file you use (plus backups if your editor creates them), one copy
of each data file with an explicit name, two copies of each data
file with a generic name, and, if you use it, one copy of your
master input file. MakeNL automatically manages the data files
in the MASter directory so that this is true. Obviously, there
can only be one copy of a file with an explicit name in any di-
rectory. Generically named data files more that two weeks old
are automatically deleted. (The most current file is always
kept, no matter how old it is.)
Your OUTPath directory (usually the same as your MASter) will
hold one copy of your output master file if it is explicitly
named, and two copies if it is generically named. In addition,
when MakeNL executes in process mode, it creates a temporary new
output master file, and the OUTPath directory must have room to
hold it. At least one of these copies (and occasionally two, if
there were no changes) will be deleted before MakeNL attempts to
do anything with or about your submittal file.
If your submittal file is to be compressed, the compressed copy
will also be placed in the OUTPath directory. On completion,
there will be only one submittal file, but if, for example, an
archived diff file is being produced, there must be space enough
for both until ARC completes. Then the diff file will be
deleted.
It is conceivable (though most unlikely) that you could have a
copy of each of your data files in each of the subdirectories
UPLoads, MAIlfiles and UPDate. It is probable that by the end of
each process cycle you will have at least one copy of at least
half of these files in one of these directories. When a file is
received in compressed form, MakeNL decompresses it in the direc-
tory that received it, and the compressed version is deleted.
When files are moved from one directory to another on the same
drive, they are moved by renaming them. No additional space is
required for this operation.
"So how much !@#$%^ space do I need!?" If you are a Hub or net-
work coordinator, not much. Here is a guide I would suggest for
Regional or Zone coordinators. Make sure you have three times
MakeNL Disk and Memory Space Considerations Page 39
the space required for one set of your generically named files
plus two times the space required for one set of your explicitly
named files.
With experience, you'll get a better feel for how much space you
need to operate MakeNL. Before cutting yourself too fine, remem-
ber that MakeNL needs some temporary working space while exe-
cuting.
MakeNL Page 40
8. Contents of MakeNL Distribution Package
The MakeNL distribution package consists of the following files:
MAKENL.EXE The MakeNL program
MAKENL.PRN This documentation file
HUB.CTL Sample control file for Hub Coordinators
NET-S.CTL Sample control file for Network Coordinators
NET-L.CTL Sample control file for Network Coordinators
REGION.CTL Sample control file for Regional Coordinators
ZONE.CTL Sample control file for Zone Coordinators
DISTRIB.CTL Sample control file for Distribution Lists
CPYRIGHT.TXT Sample copyright notice
PROLOG.TXT Sample prologue file
EPILOG.TXT Sample epilogue file
FTS-0005.TXT Nodelist Format Specifications
MakeNL Page 41
9. MakeNL License Information
MakeNL is distributed under the "shareware" concept. It may be
freely copied and distributed provided all the files listed in
section 8 are included in the distribution. But MakeNL is NOT
FREE.
If you are a non-commercial user of MakeNL, you are asked to sup-
port its development and maintenance both with your suggestions
and bug reports and with your dollars. No particular fee is set
for non-commercial use. Let your conscience be your guide.
Commercial users, and users participating in a commercial network
are required to pay a license fee of twenty five (25) U. S. dol-
lars for each computer on which MakeNL is installed for use.
The Coordinator of a commercial network may obtain a network li-
cense for a one-time fee of $1,500 US. This will license all
current and future nodes of the network for the use of MakeNL.
MakeNL and EditNL may be licensed as a set for a one-time fee of
$2,250.
Please address all correspondence to:
Ben Baker
Baker & Associates
One Mark Twain Plaza, Ste 325G
Edwardsville, IL 62025
(618) 656-8850