@c this is the proposal info file

This chapter describes how a fidoconfig config-file is written, which keywords
exist and where to put the file.

@menu
* Location:: Where to put the config file
* Syntax::   Syntax
* Keywords:: Keyword reference
* HPT::      HPT (High Portable Tosser) keywords
* NLTools::  NLTools keywords
* EmailPkt:: EmailPkt keywords
* BSOpack::  BSOpack keywords
* herp::     Husky External Requext Processor keywords
* Example::  Here is a sample configfile which works for me
@end menu

@node Location, Syntax, config file, config file
@section Configfile location
The fidoconfig library searches the config file on different locations:

@table @asis
@item linux:
/etc/fido/config
@item freebsd:
/usr/local/etc/fido/config
@item os2/win32/etc:
in the current directory
@end table

If you are compile library with huskymak.cfg, the location will be overset
with CFGDIR parameter.

Additionally you can set an enviroment variable called @code{FIDOCONFIG} which
points to the file:

@example
set FIDOCONFIG=e:\bbs\fidoconfig\config

FIDOCONFIG=~/fidoconfig/config
export FIDOCONFIG
@end example

The config file(s) must be readable. If you plan to use the autoareacreate
feature of HPT / autofilecreate featute of HTick / etc..., the config
file must be writeable.

@node Syntax, Keywords, Location, config file
@section Syntax

All symbols are @strong{not} case-sensitive.

@{<whiteSpace>@} at the start of the line will be ignored.

All keywords are evaluated as occurring, the first matching
keyword found is valid. If there are more then one keywords of the
same type allowed, the @strong{last} line matching the situation is
valid. Another words: second definition overwrite the previous one.
If no match is found, a default-value will be used.

"#" at the start of a line or <whiteSpace>#<whiteSpace> within the
line starts a comment. The comment ends with the line. Comment char "#" can 
be overwritten by @code{commentChar} token.

If the first word in a line is an undefined keyword, program exits
with error message.

Each keyword has to start a new line.

Keyword parameters:
@table @code
@item <integer>
string including integer numbers, like: @code{1234567890}
@item <string>
text string
@item <bool>
may be set to "1", "0", "yes", "no", "on", "off", and also without
parameters (it means "on").
@item <addr>
address string like zone:net/node[.point][@@domain]
@item
example: @code{2:5000/117}
@item <file>
file name. path can be omitted.
@item <path>
only path. trailing slash may be included or not.
@end table

Note! @code{[<parameter>]} means that it can be omitted.

FIDOCONFIG library can set up internal variables:
@example
set basedir=/home/user/fido/
@end example

@code{[OS]} variable automatically setting up for following opetaring systems:
@table @asis
@item UNIX
All unix-like OS: Linux, *BSD, BeOS, ...
@item OS/2
@item WIN
@item MSDOS

@end table

You can set something like:
@example
if [OS]==UNIX
tearline `uptime`
endif
@end example

Some programs can be compiled with @strong{module} variavle. It can be
used for config parsing speed up:

@example
if [module]==htick
include /etc/ftn/fileareas
endif
@end example

And if @strong{HPT} is running, fileareas don't parsed, because [module]==hpt.

There are following modules available:
@table @asis
@item hpt (Highy Portable Tosser)
@item htick (Husky Tick)
@item hptutil
@end table

Also @strong{external} variables van be parsed:
@example
autoexec.bat:
SET VAR=myvar

fidoconfig:
if [VAR]==myvar
...
else
...
endif

ifdef UNIX
MsgBaseDir  [home]/msgbase
endif
@end example

You can use external programs output via @code{`cmd`}. It is available
only for UNIX & OS/2+EMX:
@example
Name Power Station under `uname -mrs`
@end example

List of the additional commands:
@table @asis
set, if, if not, else, elseif, ifdef, ifndef, endif.
@end table

@node Keywords, HPT, Syntax, config file
@section Common keywords for HUSKY-programs
This keywords may be used by several programs. More specific keywords
you can find in the documentation of the individual programs.

@menu
* version::                     version of fidoconfig
* name::                        your Systems Name
* location::                    your location
* sysop::                       your Name
* include::                     include other files
* address::                     your system address
* commentChar::                 Comment character

* outbound::                    outbound path
* inbound::                     inbound path
* tempDir::                     path for temporary files (possible memory disk)
* logfiledir::                  path for log files
* syslogfacility::              facility to use for syslogging
* loglevels::			set level of log output
* screenloglevels::             set level of log output to screen

* link::                        adding a link to your config
* linkdefaults::                start/end/destroy links default definitions
* aka::                         links adress
* ouraka::                      our aka for link
* password::                    links default password
* pktpwd::                      pktpassword for this link
* ticpwd::                      ticker password for this link
* areafixpwd::                  areafix password for this link
* filefixpwd::                  filefix password for this link
* bbspwd::                      bbs password for this link (online user)
* sessionpwd::                  session password for this link
* handle::                      nickname or handle for link
* packer::                      default packer for link

* badarea::                     definition of badarea
* dupearea::                    definition of dupearea
* echoarea::                    definition of echoarea
* netmailarea::                 definition of netmailarea
* localarea::                   definition of the BBS message area
* filearea::                    definition of filearea
* bbsarea::                     definition of the BBS file area
@end menu

@node version, name, Keywords, Keywords
@subsection version
@table @asis
@item Syntax:
@code{version <integer>.<integer>}
@item Example:
@code{version 0.13}
@end table

Here you specify to which version of fidoconfig your config belong.
Currently this statement does nothing.

This statement cannot be repeated.

@node name, location, version, Keywords
@subsection name
@table @asis
@item Syntax:
@code{name <string>}
@item Example:
@code{name Leetebrok BBS}
@end table

Here you specify your Systems name.

This statement cannot be repeated.

@node location, sysop, name, Keywords
@subsection location
@table @asis
@item Syntax:
@code{location <string>}
@item Example:
@code{location Dusseldorf}
@end table

You specify your Location here.

This statement cannot be repeated.

@node sysop, include, location, Keywords
@subsection sysop
@table @asis
@item Syntax:
@code{sysop <string>}
@item Example:
@code{sysop Matthias Tichy}
@end table

You specify your name with this keyword.

This statement cannot be repeated.

@node include, address, sysop, Keywords
@subsection include
@table @asis
@item Syntax:
@code{include <file>}
@item Example:
@code{include /etc/fido/areas}
@end table

You can include other files into your config file. For example if you would like to
have different config parts, you can include a file and (via cron job or manually)
change the content of this file without changing the rest of the config.
Additionally you can split your config in different parts. So you can
have your fileareas definition in another file than your msgareas definition.
This gives your the ability to have some survey about your config.

This statement can be repeated. But dont make recursive includes. eg
include a file which includes another which includes the first. Although
this will be detected and fixed many times, there is a chance that it
will not be detected one time.

@node address, commentChar, include, Keywords
@subsection address
@table @asis
@item Syntax:
@code{Address <addr>}
@item Example:
@code{Address 2:2433/1245}
@end table

This command specifies which akas your system has. This statement is
full 5d compatible, which means you can have also addresses like
@code{2:2433/1245.1@@fidonet.org}. The first address statement is your
main aka which will be used by tossers on different occasions, for
example if zone number could not be taken from the @@INTL Kludge in
netmails.

This statement can be repeated.
@strong{The domain name is not full supported throughout fidoconfig}

@node commentChar, outbound, address, Keywords
@subsection commentChar
@table @asis
@item Syntax:
@code{commentChar <char>}
@item Example:
@code{commentChar ;}
@end table

This command specifies which symbol is used to mark rest of line as comment.
Default is '#'

This statement can be repeated.

@node outbound, inbound, commentChar, Keywords
@subsection outbound
@table @asis
@item Syntax:
@code{outbound <path>}
@item Example:
@code{outbound /var/spool/fido/out}
@end table

This command specifies your outbound path. This outbound path is
binkley-style. A binkley style outbound consists of a base path and
subdirectories. Each subdirectory represents a place for all the files
for one zone. The base path is the zone path for your base zone.

Example:

@example
@table @asis
@item /var/spool/fido/out
This directory contains the files for your base zone.
@item /var/spool/fido/out.003
This directory contains the files for zone 3.
@item /var/spool/fido/out.00A
This directory contains the files for zone 10.
@end table
@end example

The zone directory contains the flow-files for each node. A Flow-file of a node
has the name NNNNFFFF.?lo

@example
@table @asis
@item NNNN
The 4-digit hex-number of the nodes netnumber.
@item FFFF
The 4-digit hex-number of the nodes nodenumber.
@item ?
Here the flavour of the mails can be chosen. @strong{h}-hold, @strong{c}-crash,
@strong{f}-normal, @strong{d}-direct, @strong{i}-immediate.
@end table
@end example

For points there is a subdirectory with nodes flowfilename with suffix.pnt. In
this subdirectory the flowfiles have the names PPPPPPPP ( 8-digit point number
in hex).

For a deeper background on a binkley-style outbound see the binkley-term
documentation and source code.

This statement cannot be repeated.

@node inbound, tempDir, outbound, Keywords
@subsection inbound
@table @asis
@item Syntax:
@code{inbound <path>}
@item Example:
@code{inbound /var/spool/fido/in}
@end table

This command specifies where your inbound files are stored. This directory
is the base directory which means if you have a connection which ist not
protected and the other system is not listed. The files go in here.
Only netmails are tossed from this inbound.

This statement cannot be repeated.


@node tempDir, logfiledir, inbound, Keywords
@subsection tempDir
@table @asis
@item Syntax:
@code{tempDir <path>}
@item Example:
@code{tempDir /var/tmp}
@end table

This command specifies the path where the temporary files of the fido-programs should
be stored. This directory can erase in boot time.

Good idea is set it to memory disk.

This statement cannot be repeated.


@node logfiledir, syslogfacility, tempDir, Keywords
@subsection logfiledir
@table @asis
@item Syntax:
@code{logFileDir <path>}
@item Example:
@code{logFileDir /var/spool/log/fido}
@end table

This command specifies the path where the log-files of the fido-programs should
be stored.

This statement cannot be repeated.

Some programs use logFileDir for persistent temporary/work files.

@node syslogfacility, loglevels, logfiledir, Keywords
@subsection syslogfacility
@table @asis
@item Syntax:
@code{syslogFacility <facility>}
@item Example:
@code{syslogFacility local0}
@end table

Some Husky programs are able to write logs via syslogd instead of via log
file. For those programs, this keyword definies which facility to use for
writing to the syslog. Syslogd will use this facility name to decide which
syslog logfile the log messages will go to. Common names that can be used
include @code{mail}, @code{news}, @code{uucp}, @code{local0}. The exact
values that can be used depend upon your operating system. Refer to the man
page for @file{syslog.conf} or @file{/usr/include/sys/syslog.h} for more
information.

Logging via syslogd is only supported on UNIX platforms, and currently only
used by @file{herp}, but not by any other Husky program. If a Husky program
logs via log file or via syslog or both depends on the program and not on
your fidoconfig file. Consult the individual program's documentation.

@node loglevels, screenloglevels, syslogfacility, Keywords
@subsection LogLevels
@findex LogLevels
@table @asis
@item Syntax:
@code{loglevels <string>}
@item Example:
@code{loglevels 345789}
@end table

In example we output to log messages with levels 3,4,5,7,8,9.

The log levels are following:

@table @asis
@item 1 - Program start, end;
@item 2 - dupecheck
@item 3 - linking messages
@item 4 - scanning messages
@item 5 - posting messages
@item 6 - execute strings
@item 7 - bundles, pkts, links, freqs, file routing, file attachs, msg packing
@item 8 - areafix, relink, autocreate
@item 9 - error messages (critical: exit on error)
@item 0 - creation of file-flags
@item A - (reserved for) trivial error messages (print message and continue execution)
@item B - warnings & alerts
@item C - informational messages
@item D - (reserved for) statistics
@item E - summary
@item F - print program name & version
@item G - message send/sent
@item H - (reserved for) recoding operations & recoding tables read/write
@item I - Generate or check MSGID
@item J - Echomail phase
@item K - Filebox phase
@item L - Netmail phase
@item M - File create
@item N - File delete
@item O - operations with opened file (read, write, seek, ...)
@item P - Directory operations (create, delete, rename, ...)
@item R - Truncate file
@item S - File send/sent
@item T - Test files (exist, permittions, etc.)
@item U - Functions calls (enter to func & leave from it)
@item V - reserved
@item W - reserved
@item X - Filenames construct
@item Y - reserved
@item Z - debug messages: source lines (functions control points).
@item a-z - debug messages
@end table

Default value: 1234567890ABCDEF

This statement cannot be repeated.

@node screenloglevels, link, loglevels, Keywords
@subsection ScreenLogLevels
@findex ScreenLogLevels
@table @asis
@item Syntax:
@code{screenloglevels <string>}
@item Example:
@code{screenloglevels 2345789}
@end table

Set level of log output to screen. See loglevels for details.

This statement cannot be repeated.


@node link, linkdefaults, screenloglevels, Keywords
@subsection link
@table @asis
@item Syntax:
@code{link <string>}
@item Example:
@code{link Matthias Tichy}
@end table

This statement starts a new Link-definition. All the following link-related statements
change the configuration of this link until a new link statement is found.
The name is the name of this link.

This statement can be repeated.

@node linkdefaults, aka, link, Keywords
@subsection linkdefaults
@table @asis
@item Syntax:
@code{linkdefaults [begin | end | destroy]}
@item Example:
@code{linkdefaults}
@end table

This statement starts section of default definitions of links.
All the following link-related statements change default configuration
of link until a @code{'link'} or @code{'linkdefaults end'} or
@code{'linkdefaults destroy'} statement is found.
All parameters collected in linkdefaults sections are copied to link
configuration every time when @code{'link'} statement found in
configuration file. Link-related statements after @code{'linkdefaults end'} or
@code{'linkdefaults destroy'} or before first @code{'link'} or
@code{'linkdefaults'} statement are treated as error.
@code{'linkdefaults'} statement without @code{'begin'} or @code{'end'} means
@code{'linkdefaults begin'}
@code{'linkdefaults destroy'} destroys all default definitions.

Be careful with @code{Pause}, @code{Export}, etc. ;-)

This statement can be repeated. New definitions overwrite old ones.

@node aka, ouraka, linkdefaults, Keywords
@subsection aka
@table @asis
@item Syntax:
@code{aka <addr>}
@item Example:
@code{aka 2:2433/1245}
@end table

This statement sets the aka for the current link.

This statement can only be repeated for different links.

@node ouraka, password, aka, Keywords
@subsection ouraka
@table @asis
@item Syntax:
@code{ouraka <addr>}
@item Example:
@code{ouraka 2:2433/1247}
@end table

This statement sets the aka which is used with this link.

This statement can only be repeated for different links.

@node password, pktpwd, ouraka, Keywords
@subsection password
@table @asis
@item Syntax:
@code{password [<string>]}
@item Example:
@code{password secret}
@end table

This statement sets the default password for the link.
If you do not change the other passwords, they are set to this password.

This statement can only be repeated for different links.

@node pktpwd, ticpwd, password, Keywords
@subsection pktpwd
@table @asis
@item Syntax:
@code{pktpwd [<string>]}
@item Example:
@code{pktpwd geheim}
@end table

This statement sets the pktpassword for the actual link.
Only passwords with maximal 8 characters are valid because of limitations of
other software packages.
An empty statement is allowed.

This statement can only be repeated for different links.

@node ticpwd, areafixpwd, pktpwd, Keywords
@subsection ticpwd
@table @asis
@item Syntax:
@code{ticpwd [<string>]}
@item Example:
@code{ticpwd geheim}
@end table

This statement sets the ticcer password for the actual link.
Only passwords with maximal 8 characters are valid because of limitations of
other software packages.
An empty statement is allowed.

This statement can only be repeated for different links.

@node areafixpwd, filefixpwd, ticpwd, Keywords
@subsection areafixpwd
@table @asis
@item Syntax:
@code{areafixpwd [<string>]}
@item Example:
@code{areafixpwd geheim}
@end table

This statement sets the areafix password for the actual link.
An empty statement is allowed, but not recommended.

This statement can only be repeated for different links.

@node filefixpwd, bbspwd, areafixpwd, Keywords
@subsection filefixpwd
@table @asis
@item Syntax:
@code{filefixpwd [<string>]}
@item Example:
@code{filefixpwd geheim}
@end table

This statement sets the filefix password for the actual link.
An empty statement is allowed, but not recommended.

This statement can only be repeated for different links.

@node bbspwd, sessionpwd, filefixpwd, Keywords
@subsection bbspwd
@table @asis
@item Syntax:
@code{bbspwd [<string>]}
@item Example:
@code{bbspwd geheim}
@end table

This statement sets the bbs password for the actual link.
An empty statement is allowed.

This statement can only be repeated for different links.

@node sessionpwd, handle, bbspwd, Keywords
@subsection sessionpwd
@table @asis
@item Syntax:
@code{sessionpwd [<string>]}
@item Example:
@code{sessionpwd geheim}
@end table

This statement sets the session password for the actual link.
An empty statement is allowed.

This statement can only be repeated for different links.

@node handle, packer, sessionpwd, Keywords
@subsection handle
@table @asis
@item Syntax:
@code{handle <name>}
@item Example:
@code{handle eddie}
@end table

This statements gives a link a nickname. This statement is supposed for bbs
systems.

This statement can only be repeated for different links.

@node packer, badarea, handle, Keywords
@subsection packer
@table @asis
@item Syntax:
@code{packer <packer>}
@item Example:
@code{packer zip}
@end table

This statement sets the packer for the link. You can use the packer which you
has set up using the pack statement.
If you omit this statement or set @code{packer none} no mail will be
packed. The pktīs will be put in the outbound.

This statement can only be repeated for different links.

@node badarea, dupearea, packer, Keywords
@subsection badarea
@table @asis
@item Syntax:
@code{BadArea <name> <file> [-b <msgbase>] [Options]}
@item Example:
@code{BadArea badarea /var/spool/fido/msgb/bad -b Squish}
@end table

This statement specifies the @code{BadArea}.
Read documentation of HPT for details.

This statement cannot be repeated.

@node dupearea, echoarea, badarea, Keywords
@subsection dupearea
@table @asis
@item Syntax:
@code{dupeArea <name> <file> [-b <msgbase>] [Options]}
@item Example:
@code{dupeArea dupeArea  /var/spool/fido/msgb/dupes -b Squish}
@end table

This statement specifies the @code{DupeArea}.
Read documentation of HPT for details.

This statement cannot be repeated.

@node echoarea, netmailarea, dupearea, Keywords
@subsection echoarea
@table @asis
@item Syntax:
@code{EchoArea <name> <file> [-b <msgbase>] [Options] [linkAKAs] [linkOptions]}
@item Example:
@code{EchoArea linux.develop.ger /var/spool/fido/msgb/linux.develop.ger
-b Squish -a 2:2433/1247 -g A -dupeCheck move -dupehistory 11 -d "Linux
development" 2:2433/1245 -def}
@end table

This statement specifies the echoareas.
Read documentation of HPT for details.

This statement can be repeated.

@node netmailarea, localarea, echoarea, Keywords
@subsection netmailarea
@table @asis
@item Syntax:
@code{NetmailArea <name> <file> [-b <msgbase>] [Options]}
@item Example:
@code{NetmailArea netmail /var/spool/fido/msgb/netmail -b Squish}
@end table

This statement specifies the @code{NetMailArea}.
Read documentation of HPT for details.

This statement can be repeated.


@node localarea, filearea, netmailarea, Keywords
@subsection localarea
@table @asis
@item Syntax:
@code{LocalArea <name> <file> [-b <msgbase>] [Options]}
@item Example:
@code{LocalArea MyBBSarea /var/spool/fido/msgb/MyBBS -b Squish}
@end table

This statement specifies the @code{LocalArea}: messages area in BBS.
Read documentation of HPT for details.


@node filearea, bbsarea, localarea, Keywords
@subsection filearea
@table @asis
@item Syntax:
@code{FileArea <name> <fileareapath> <uplink> [options] [<downlinks>]}
@item Example:
@code{filearea Photoes /var/spool/fido/fileecho/Photoes 2:50/1 -d "Sysop photoes"}
@end table

This statement specifies the @code{FileArea}: fileecho definition.
(Read documentation of HTick for details.)


@node bbsarea, , filearea, Keywords
@subsection bbsarea
@table @asis
@item Syntax:
@code{bbsarea <name> <bbsareapath>}
@item Example:
@code{BBSarea Incoming /var/spool/fido/BBS/incoming}
@end table

This statement specifies the @code{BBSArea}: BBS file area definition.
It's use for filelist building.
Read documentation of HTick for details.


@node HPT, NLTools, Keywords, config file
@section High Portable Tosser keywords
This section contains only keyword-list. Read HPT Manual for more info.

@example
@include keywords.hpt
@end example

@node NLTools, EmailPkt, HPT, config file
@section NLTools keywords

@menu
* nodelistdir::                 path for nodelists
* fidouserlist::                name of compiled fido user list file
* nodelist::                    adding a nodelist definition
* diffupdate::                  where nodediffs for this nodelist can be found
* fullupdate::                  where complete updates for the nodelist are
* defaultzone::                 specifying a zone number for a nodelist
* nodelistformat::              is it a nodelist or a pointlist?
@end menu

@node nodelistdir, fidouserlist, NLTools, NLTools
@subsection nodelistDir
@table @asis
@item Syntax:
@code{nodelistDir <path>}
@item Example:
@code{nodelistDir /var/spool/fido/nodelist}
@end table

This command specifies the path where the actual nodelists are or should
be written to. This path contains the raw nodelist (@pxref{nodelist}). Also,
compiled nodelists like the @file{FIDOUSER.LST} will be stored here.

This statement cannot be repeated.

@node fidouserlist, nodelist, nodelistdir, NLTools
@subsection fidoUserList
@table @asis
@item Syntax:
@code{fidoUserList <filename>}
@item Example:
@code{fidoUserList fidouser.lst}
@end table

If this keyword is present, the nodelist compiler (e.g. @code{ulc}) is
instructed to build a user list file with the given filename in the nodelist
directory (@pxref{nodelistdir}). This is a simple text file with fixed line
length that contains user names (nodes, points) and their corresponding node
or pointnumbers. The file is sorted alphabetically by user name (case
insensitive), so that it can be bsearched to implement a quick node numer
lookup functinality. The fido user list file format is understood by
@code{msged}, for example.

@node nodelist, diffupdate, fidouserlist, NLTools
@subsection nodelist
@table @asis
@item Syntax:
@code{Nodelist <name>}
@item Example:
@code{Nodelist nodelist} or @code{Nodelist points24}
@end table

This statement starts a new nodelist definition. All the following
nodelist-related stamtements change the configuration of this nodelist until
a new @code{nodelist} statement is found.

The name that you specify must match the base name (without extension and
without pathname) of the raw, unpacked, nodelist file. The husky tools
@code{ulc} and @code{nlupdate} math the file name case-insensitively, but
other tools may need the exact spelling. The raw nodelist file is
expected to reside in the nodelist directory (@pxref{nodelistdir}).

@node diffupdate, fullupdate, nodelist, NLTools
@subsection diffupdate
@table @asis
@item Syntax:
@code{DiffUpdate <path_and_basname>}
@item Example:
@code{DiffUpdate /var/spool/filebase/nodediff/nodediff}
@end table

Here you can specify the base filename of nodelist difference files
(nodediffs) that are used to keep the corresponding nodelist up to date. The
argument to the DiffUpdate is the full file name with path of a difference
file, without the file extension. For example, if you have a file area at
@file{/var/spool/filebase/24000}, where your ticker places the updates for
the German Pointlist, and those update files are called @file{points24.a26},
@file{points24.a33}, and so on, you would use

@example
DiffUpdate /var/spool/filebase/24000/points24
@end example

The @code{Diffupdate} keyword is used by @code{nlupdate}, for example. The
nodelist updater will unpack the difference file (if it is archived, of
course, unpacked diffs are also supported), apply the diff to the
corresponding nodelist, and delete the temporary unpacked diff again.


@node fullupdate, defaultzone, diffupdate, NLTools
@subsection fullupdate
@table @asis
@item Syntax:
@code{FullUpdate <path_and_basname>}
@item Example:
@code{FullUpdate /var/spool/filebase/nodelist/nodelist}
@end table

This statement works like @code{DiffUpdate} (@pxref{diffupdate}). The
difference is that here you don't specify the location of a nodelist
difference file, but the locations where complete nodelist files/archives can
be found. Some othernets do not (regularly) distribute a nodediff file, but
just hatch a new nodelist every few weeks. In this case, you need the
@code{FullUpdate} statement.

@node defaultzone, nodelistformat, fullupdate, NLTools
@subsection defaultzone
@table @asis
@item Syntax:
@code{DefaultZone <zone>}
@item Example:
@code{DefaultZone 2}
@end table

Some nodelist files do not start with a @samp{Zone} entry. This is the case
for the German Points24 list, for example, but could also happen for
othernets that only have one zone. In this case, you can use the
@code{DefaultZone} keyword to specify the default zone number for all nodes
listed in this nodelist.

@node nodelistformat, , defaultzone, NLTools
@subsection nodelistformat
@table @asis
@item Syntax:
@code{Nodelistformat <format>}
@item Example:
@code{NodelistFormat standard} or @code{NodelistFormat Points24}
@end table

Here you can specify the format of the unpacked nodelist. The default is
@samp{standard}; this is the normal Fidonet nodelist format. You can also
specify @samp{points24}, which is needed for the nodelist compiler to
recognise a point list in the German points24 format as such, so that it can
see the proper 5D point numbers instead of the fakenet numbers.

@node EmailPkt, BSOpack, NLTools, config file
@section EmailPkt keywords

@menu
Common tokens:
* sendMailCmd::                 command line for send file via e-mail

Link definition tokens:
* email::                       email address of this link
* emailSubj::                   subject of email
* emailFrom::                   sender address used for outgoing emails
* emailEncoding::               encoding of outgoing emails
@end menu


@node sendMailCmd, email, EmailPkt, EmailPkt
@subsection email
@table @asis
@item Syntax:
@code{sendMailCmd string}
@item Example:
@code{sendMailCmd /usr/sbin/sendmail $a <$f}
@end table

This keyword is used to define send mail command & it's parameters. Macro '$a'
specify position of the recipient e-mail address; macro '$f' specify position
for name of file with message body. If '$f' omitted then message body 
to be directed to stdin.

This statement can't be repeated.


@node email, emailFrom, sendMailCmd, EmailPkt
@subsection email
@table @asis
@item Syntax:
@code{email <email-address>}
@item Example:
@code{email eddie@@ironmaiden.com}
@end table

This keyword is used to set the email-address for the link. This can
be used to send pkts via email.

This statement can only be repeated for different links.

@node emailFrom, emailSubj, email, EmailPkt
@subsection emailFrom
@table @asis
@item Syntax:
@code{emailFrom <email-address>}
@item Example:
@code{emailFrom fred@@ironmaiden.com}
@end table

This keyword is used to set the email-address used as sender address
for outgoing emails to this link.

This statement can only be repeated for different links.

@node emailSubj, emailEncoding, emailFrom, EmailPkt
@subsection emailSubj
@table @asis
@item Syntax:
@code{emailSubj <subject>}
@item Example:
@code{emailSubj Fido over EMail message in UUE format}
@end table

This keyword is used to set the subject for emails to and from this
link. It may be ignored by some encodings (e.g. SEAT).

This statement can only be repeated for different links.

@node emailEncoding, , emailSubj, EmailPkt
@subsection email
@table @asis
@item Syntax:
@code{emailEncoding (MIME | SEAT | UUE)}
@item Example:
@code{emailEncoding MIME}
@end table

This keyword is used to set the encoding for outgoing emails to this
link.

This statement can only be repeated for different links.


@node BSOpack, herp, EmailPkt, config file
@section BSOpack keywords
This section contains only keyword-list. Read BsoPack Manual for more info.

@example
@include keywords.bp
@end example

@node herp, Example, BSOpack, config file
@section herp keywords
Herp is the Husky External file Request Processor. The following fidoconfig
keywords are specific to herp. Some programs of herp, in particular
@file{herpidx}, also use part of the @file{htick} configuration,
i.E. filearea definitions.

@menu
* reqidxdir::                   path for herp request index files
@end menu

@node reqidxdir,,herp,herp
@subsection reqidxdir
@table @asis
@item Syntax:
@code{reqidxDir <path>}
@item Example:
@code{reqidxDir /var/spool/fido/reqidx}
@end table

This command specifies a subdirectory which will be used to store the request
index generated by @file{herpidx}. This subdirectory should be writable for
the @file{herpidx} process and at least readable for the user under which
your mailer and @file{herp} will be run. @file{herpidx} will place various
request index files here. The subdirectory should not be used for any other
purposes. The index can become rather large, so plan for enough free disk space.

@node Example,  , herp, config file
@section Working sample config
@example
@include config
@end example
