GHOST.DOC

70.5 KB 70b5bd23e1f2d145…






                             Ghostwriter [2.1]



     Purpose of this program ......................................  2
     Configuration ................................................  2
     Ghost hello! .................................................  3
     How to use the program .......................................  4
     QuickBBS specific assumptions ................................  5
     Ondate option ................................................  6
     Onday option .................................................  7
     Performing mail check ........................................  7
     How to use the "cosysop" .....................................  9
     Shelling to DOS ..............................................  9
     Server requests .............................................. 12
     How to use the "trigger" ..................................... 13
     Predefined variables ......................................... 14
     Message flags ................................................ 15
     Inter-zone messages: #define zonegate ........................ 16
     National customization: #define country ...................... 17
     Addressees list: #define group ............................... 18
     User-defined variable: the -d option ......................... 19
     Alternate configuration file: the -f option .................. 20
     Generate kludge lines: the -k option ......................... 20
     Use other sysop name: the -n option .......................... 20
     No word wrap: the -s option .................................. 21
     No tear line: the -t option .................................. 21
     Tear line and origin line .................................... 21
     File attaches ................................................ 21
     File requests ................................................ 22
     Magic filenames .............................................. 23
     File compression method ...................................... 23
     Override magic filenames ..................................... 24
     Optional kludge lines ........................................ 24
     Errorlevels returned ......................................... 24
     Credits, new releases and "Thank you" ........................ 26
     Index ........................................................ 28





     _________________________________________ Purpose of this program

     The ghostwriter can be used to automatically create messages to
     one or more addressee(s) in different kinds: local, echo, matrix,
     file attach or file request. Another important function of the
     program is to scan message areas for messages not received by the
     sysop and to generate replies and forwarded messages. Last but
     not least it can be used as a powerful batch processor containing
     all required variables for Nodelist and other day-dependent file
     processing. These batch files even may be created from netmail
     messages addressed to a special "pseudo" user.

          The program supports the generic message format used world-
     wide in FidoNet. The QuickBBS message format, originally designed
     by Adam Hudson, currently used by QuickBBS, FrontDoor/TosScan and
     RemoteAccess, also fully is supported.

          Users of BinkleyTerm, FrontDoor or RemoteAccess will need no
     configuration parameters. You can use this utility in connection
     with any mailer and editor of your choice assumed your software
     uses the netmail message header structure as defined in various
     FSC and FTS documents.

          Of course the program is zone- and point-smart. The proper
     ^aINTL, ^aFMPT and ^aTOPT kludges will be included in the netmail
     message header if neccessary. Mailer specific additional message
     flags easily can be used.

          The command "ghost > ghost.cfg" creates a simple config-
     uration file as required by the program. Edit this file to suit
     your needs; see the included Sample.Cfg for more details.


     ___________________________________________________ Configuration

     There is very little configuration required to get the program up
     and running. If you use BinkleyTerm 2.30, FrontDoor or Remote-
     Access the only operating parameters required are "to [name] [ad-
     dress] {flags}" and "path" lines in Ghost.Cfg.

          The program tries to locate Binkley.Cfg, Fd.Sys or Config.Ra
     first in the current subdirectory. If this attempt failed the DOS
     environment is searched for "set BINKLEY=d:\subdir", "set FD=
     d:\subdir" or "set RA=d:\subdir". If neither Binkley.Cfg nor
     Fd.Sys or Config.Ra could be found put Ghost.Exe and Ghost.Cfg in
     the same subdirectory as BinkleyTerm, FrontDoor or RemoteAccess.

          You use another mailer? In this case the parameters "sysop",
     "address" and "netmail" are required in Ghost.Cfg. The "system"
     parameter is optional: if an ASCII file named "Origin" is located
     in the subdirectory where the new message(s) will be created it
     is used for the origin lines. The other optional keywords
     "nodelist" and "okfile" will enhance the program's possibilities
     on your system.



     Ghostwriter [2.1]                                          page 2





          To avoid data redundancy the matrix address in any "to
     [name] [address] {flags}" line may be omitted if a file named
     Fidouser.Lst is existing in the same subdirectory as stated in
     the line "nodelist". The format of the Fidouser.Lst is very
     simple: last name, first name [1..n blanks] [zone:]net/node.

          Various nodelist compilers (for example Bob Hartman's
     ParseLst) optionally create this file while translating the
     nodelist into the binary format used by the mailer software.
     Since there is no message flag field in the Fidouser.Lst-like
     file these messages always will have the "private" flag set.

          However: you should be aware of the fact that the program's
     execution time due to the required disk access considerable
     gains, especially if you process large #group lists. In the
     current version the search time required to locate the very last
     line in Fidouser.Lst is about five seconds (6 Mhz IBM XT 286
     w/287, 512 kb EMS disk cache).


     ____________________________________________________ Ghost hello!

     To verify the program has detected correct configuration use the
     special command line parameter "hello!". If all required
     parameters ("sysop", "address", "netmail" and optionally "sys-
     tem", "nodelist" and "okfile") could be found in Ghost.Cfg,
     Binkley.Cfg, Fd.Sys or Config.Ra this data will be displayed in a
     window on the screen. If Binkley.Cfg, Fd.Sys or Config.Ra could
     be located the file Ghost.Cfg is not required for the "hello!"
     option.

          Also a "Hello and thank you!"-message to myself will be
     generated in your netmail directory. If you think this is
     annoying simply delete this message; otherwise allow your system
     to export this message during the next netmail export event. Your
     name and network address will be added to the user list of the
     program. You will be notified of new program releases as soon as
     they are available.



















     Ghostwriter [2.1]                                          page 3





     __________________________________________ How to use the program

     To generate messages start ghostwriter with a keyword declared in
     Ghost.Cfg as command line parameter. This keyword will become the
     "Subject:" of the message(s) created by the program. If your key-
     word in the configuration file includes blanks use "_" (under-
     score) instead on the command line (example: keyword in Ghost.Cfg
     is "Hi, John"; command line "hi,_john").

          The configuration file (default: Ghost.Cfg) must be a plain
     ASCII file; lines starting with ";" (semicolon) or "%" (percent
     sign) in the very first column are interpreted as comment lines;
     everything following and including the comment character from
     left to right on any line of this file is ignored and also
     assumed to be a comment. Only blank (hex 20) and/or tab (hex 09)
     characters are allowed as "white space" to separate keywords,
     arguments or names.

          *Note*: instead of writing the full path you may use the
     macro "netmail" on the "path" line of Ghost.Cfg. "Netmail" will
     be replaced with the actual name of your netmail directory as
     found in Binkley.Cfg, Fd.Sys, Config.Ra or Ghost.Cfg.

          DOS environment strings may be used for any parameter or
     text in the configuration file. Use the usual %format% to create
     references to entries to search for in the environment. Please
     see the Sample.Cfg file for more details on this topic.

          The only limit of lines in Ghost.Cfg containing "to [name]
     [address] {flags}" is set by the amount of free memory while the
     program is up and running. Each addressee consumes 134 bytes of
     memory.

          The full zone:net/node.point (four-dimensional) Fidonet
     address format can be used in the adressees list; it *must* be
     used to identify your network address in Ghost.Cfg or Bink-
     ley.Cfg. If "zone:" is missing the receivers net is assumed to be
     in the same zone as the origin system is located in. If the
     address field contains no ".point" or ".0" the message is assumed
     to be destined to the node number found in the address field.
     Otherwise the message is still sent to the node number, but the
     kludge ^aTOPT [point #] will be inserted after the message
     header.

          Starting with Ghostwriter 1.32 the "address" statement in
     BinkleyTerm 2.30 or newer is mandatory. Only if the new "four-
     dimensional" address statement is present in Binkley.Cfg the
     netmail message headers will contain the proper kludge lines
     (^aFMPT) and correct zone information. Ghostwriter's origin lines
     (if used) will confirm the point address format.







     Ghostwriter [2.1]                                          page 4





          The few lines of screen output while the program is working
     may be re-directed to any file or device. If you like to keep a
     log about ghostwriter's activities use it for example this way:

          keyword {-dvariable -ffilename.ext -k -s -t} >> ghost.log

          The format of the log messages created while executing the
     program depends on the mailer/BBS software used. If Ghostwriter
     is used with BinkleyTerm, an Opus-style log format will be
     written. In case of FrontDoor Joaquim Homrighausen's log format
     will be used. For RemoteAccess the log format used will be taken
     from Config.Ra.

          An other method of logging the program's activities is to
     use the keyword "#define statuslog [filename | device]". If this
     line is detected in Ghost.Cfg a second log will be created in the
     file or device following the "statuslog" keyword.


     ___________________________________ QuickBBS specific assumptions

     For operating the program in a QuickBBS message style echomail
     environment the following assumptions are made:

          The keyword "#define messagebase QBBS" is present in the top
     (configuration) section of the Ghost.Cfg file. If this keyword is
     not present *.MSG style echomail areas are assumed by the
     program.

          The keyword "#define QBBSpath [d:\subdir]" is used. The best
     location is immediately on the next line after the "#define
     messagebase QBBS". This keyword only is required if neither
     FrontDoor nor RemoteAccess is used as mailer/BBS software.
     Normally, this path will be read by the program from Fd.Sys or
     Config.Ra.

          A TosScan like Areas.Bbs file is located in the same subdi-
     rectory as the QuickBBS message base Msg*.Bbs files. This file is
     required for the mail check option (more on this later) and if
     Ghostwriter is used to place echomail messages in QuickBBS
     message boards.

          References to a specific board number are done in the format

          path #[nn]

          where [nn] is a number between 1 and 200. [nn] also must be
     an active board number on your system; if for a given board
     number on a "path #[nn]" line no according line in the Areas.Bbs
     file is found the program notes this in the log file and
     terminates.






     Ghostwriter [2.1]                                          page 5





          In pure FrontDoor environments no "#define messagebase"
     statement is required. The program assumes the QuickBBS echomail
     format if the corresponding path in Fd.Sys is not empty. Also,
     the Areas.Bbs file is not required: the information of the file
     Folder.Sys will be used instead.

          However: even in a QuickBBS style echomail environment the
     netmail folder still is assumed to contain messages in the
     standard FidoNet *.Msg format.


     ___________________________________________________ Ondate option

     The keyword tag in Ghost.Cfg may be leaded by "ondate yyyy-mm-dd"
     in column 1, followed by at least one blank character and the
     keyword/message subject itself. The year must contain four
     numeric characters, month and date must contain leading zeroes if
     values below 10 are used. Year, month and day must be separated
     by a dash (hex 2D) character.

          If "ondate yyyy-mm-dd" is present the message will only be
     generated if the current date and "yyyy-mm-dd" match. The string
     after "ondate yyyy-mm-dd" will become the message subject. The
     command line parameter for the program must also be "ondate",
     followed by the other command line options.

          The only wildcard character allowed in the date string after
     "ondate" is the question mark ("?"). It acts exactly as the
     wildcard in DOS' file related commands. A few examples: today is
     February 3rd, 1990, translated to 1990-02-03 by the program's
     "ondate" function.

          ondate 1990-??-03 will match;
          ondate 1990-02-?? will match;
          ondate 1990-??-03 will match;
          ondate 1990-02-04 will not match;
          ondate 1990-??-01 will not match;
          ondate 19??-??-?? will match always (never use this!)

          The command line parameter to execute the program will be
     "ondate", followed by the other optional parameters. The subject
     of the message will be the string following the "ondate yyyy-mm-
     dd" part of the line in Ghost.Cfg.

          A few examples for this option. Let's assume today's date as
     February 5th, 1990 and the following line in Ghost.Cfg:

          ondate 19??-??-05: $fileC:\Misc\Newfiles.Zip









     Ghostwriter [2.1]                                          page 6





          The program is started with "ghost ondate" and maybe some
     other command line options (-ffilename.ext, -k, -s, -t). The line
     "ondate 19??-??-05 $fileC:\Misc\NewfilesZip" in Ghost.Cfg tells
     the program to send C:\Misc\Newfiles.Zip on each 5th of the month
     to the names found on the next "to" line, no matter if this is a
     single name or a "#defined" group.

          ondate 19??-08-03: Best wishes for your birthday!

          Again, the program is started with "ghost ondate". The
     message with the subject "Best wishes for your birthday!" will
     *not* be generated, since today's date is February 5th. Only if
     "ghost ondate" is executed on the 3rd of August this message will
     be created.

          Note: you may only use one "ondate yyyy-mm-dd" tag for the
     same day. If there are more "ondate yyyy-mm-dd [subject]" lines
     in Ghost.Cfg matching the same date only the first match will be
     covered.


     ____________________________________________________ Onday option

     This option is very similar to "ondate": instead of comparing a
     "yyyy-mm-dd" string with the current system date the program
     searches Ghost.Cfg for a tag line "onday <dayname> <subject>".

          Valid strings for <dayname> are Monday, Tuesday, Wednesday,
     Thursday, Friday, Saturday and Sunday. Neither the day names
     listed in Ghost.Cfg in the "#define country" section nor the
     "country" settings in your Config.Sys do affect the day names
     required by the "onday" option. These day names always must be
     written in English.


     ___________________________________________ Performing mail check

     The program can be used to perform a check for messages not
     received by the sysop within a certain number of days. First, in
     the "#define section" of the configuration file, use "#define
     bouncelimit n" to define a number between 1 and 65000. "N" is the
     number of days the ghostwriter will wait for you to read messages
     addressed to you. Next, declare a label called "mailcheck" in
     Ghost.Cfg. Do *not* use a "to" line after the label line; the
     names and netword addresses will be found by the ghostwriter
     itself. The next non-comment line is a "path" line. There are two
     options:

          #1: Write only one subdirectory name/board number after the
     "path" keyword. The mail check will be performed only in this
     subdirectory/QuickBBS echomail board.






     Ghostwriter [2.1]                                          page 7





          #2: Use "path all" to perform a mail check in all message
     subdirectories/boards available on the system. In a *.Msg echo-
     mail environment the Areas.Bbs file must be present in the
     mailer's subdirectory. This file should have the same structure
     as the Areas.Bbs file used for example by ConfMail or Qmail
     (drive:\subdir\... [blank] echo tag [blank] list of nodes). In a
     QuickBBS style echomail environment the board number is the first
     item on each line of this file. In FrontDoor environments this
     file is not required.

          If you use the "path all" option the netmail directory also
     will be included in the mail check.

          The same line may include the keywords "answer" and "for-
     ward". "Answer" tells the program to create replies into the
     netmail subdirectory. "Forward" instructs the program to forward
     a copy of the message not received yet by the sysop into the
     netmail area. This forwarded message will have the "received" and
     "sent" flag set. If "forward" is missing the non-received message
     may be lost during the next message kill/renumber event.

          After the "mailcheck" and "path" lines the text of the
     message must be located. Now the program may be started with the
     command line parameter "mailcheck". It will scan the message
     subdirectories/QuickBBS message boards given on the "path" line.
     If there are any messages not received by you within
     "bouncelimit" days first the "received" flag for each of those
     messages will be set. Next the answer message is generated,
     depending on the presence of the "answer" keyword. Finally, if
     "forward" was present, a copy of the unreceived message destined
     to the sysop will be placed into the netmail directory.

          By default all messages will be replied; you may override
     this by defining a special group called "mailcheck". If this
     group is present only messages from this group members will be
     replied; other messages will be ignored. This mailcheck group too
     must be defined in the "#define" section of the configuration
     file; before any "to", "path" and message text lines. See page 18
     for more details on how to define groups. It's not necessary to
     include the network addresses or message flages for the
     "mailcheck" group members.

          The address of the reply will be taken from the original
     message header (if it was a netmail message) or preferably from
     the "^aMSGID: <message ID> " or " * Origin: " line (if it was an
     echomail message).

          In a QuickBBS message style environment a special built-in
     tag is available: "report". The program's report function scans
     all echomail boards for new messages addressed to the sysop. By
     default the result of this message scan is placed as private
     netmail message in the netmail folder. Using the command line
     switch "-d<filename.ext>" or "-d<any device>" the report is sent
     to <filename.ext> or <any device>.



     Ghostwriter [2.1]                                          page 8





     ________________________________________ How to use the "cosysop"

     In connection with the mail check option there's a special
     keyword available: "#define cosysop".

          The execution of the mail check option will differ from its
     "normal" behaviour if this statement is present in the confi-
     guration file. All not yet received messages addressed to the
     sysop will be forwarded to the members of the group "cosysop"
     (for more details on defining groups see page #18). The original
     message will be marked as "received", the forwarded copies will
     have the corresponding message flags set as found on the lines
     for the "cosysop" group members names and network addresses.

          This message forwarding is done independent of the probably
     used value for "bouncelimit". No matter how old (or how new) the
     messages are: if they are addressed to the sysop and have not yet
     been received they will be forwarded to the "cosysop" group.

          Also messages destined to "Sysop", "all Sysops" or similar
     constructions or the sysop's first name will be forwarded by the
     program. The forwarded messages will reside in the netmail
     directory, no matter if the original message was an echomail or
     matrix message.

          Messages forwarded by the program -- no matter if "#define
     cosysop" is present or not -- will have a short trailer at the
     start of the message text. This trailer lines will show the
     sender's name and address, the original message date, the echo-
     tag for the corresponding area (from the Areas.Bbs-like file) or
     the name of the message subdirectory (if no echo-tag could be
     found).

          An other keyword also alters the program's behaviour while
     performing mail check: "#define purge". It must only be used if
     there's a defined group with the same name, "purge". As with the
     group "mailcheck" the "purge" group members need no network
     addresses or message flags. The "purge" and the "mailcheck" group
     are simple lists of names (firstname lastname); each one on a
     single line without any further text.

          If "#define purge" is active in Ghost.Cfg messages from one
     of the "purge" group members will not be replied or forwarded to
     the sysop or the cosysop group members. Furthermore, if in any
     message area there are messages from or to one of the "purge"
     group members this messages will be deleted. If the "#define
     purge" keyword is not active, this messages will not be deleted.
     In this case the "purge" group just acts as a list of persons
     from which the messages should be ignored.








     Ghostwriter [2.1]                                          page 9





     _________________________________________________ Shelling to DOS

     DOS commands may be executed from within ghostwriter. One or more
     "dos [command]" lines in Ghost.Cfg are used for this purpose. As
     shown in the file Sample.Cfg the only place where a "dos [com-
     mand]" statement may be used (and makes sense) is after the "key-
     word" line and before any "to [first name] [last name] [address]
     {flags}" or "to #group [group name]" lines.

          Depending on DOS version, installed device drivers and any
     TSR's on a 640 kb computer there are approximately 540 kb
     available for shelling to other applications. The program tries
     to swap itself to EMS memory; if this is not possible a swap file
     in the subdirectory found indicated by the TMP or TEMP environ-
     ment variable will be created.

          Here's a memory map from my machine during execution of a
     program from within "Ghostwriter":

     Machine Type:  PC/XT Model 286                             DOS Version:  4.01
     ROM Date:      04/21/86

     Resident extensions...

     Address    Program   Parent    Seg   Bytes            Hooked Vectors
     ─────────  ────────  ────────  ───  ──────   ────────────────────────────────
     0B43:0000  Config    N/A         5   41632   02 08 09 0A 0E 10 19 1B 29 2F 33
                                                  70 76
     1572:0000  DOS       N/A         2    6512   2E
     170B:0000  PC-CACHE  DOS         1    6992   13 21 67
     18CF:0000  GHOST     DOS         2    5648
     1A32:0000  DOS       N/A         3    6400   22 24

     Memory Control Block overhead   15     240

     Free memory                      2  541824

     Next command load address:       1BC6:0000

          Before shelling to the command following the "dos" statement
     a check is done to verify the COMSPEC entry in the computer's
     environment. If COMSPEC is not found the program will log this to
     the logging device (i.e. the screen, a file or a printer) and
     assume normal execution. If the command called from within
     ghostwriter produces redirectable I/O its output will be to the
     same logging device as used by ghostwriter.

          An example: you direct the ghostwriter's log to Binkley.Log
     using the DOS append symbol ">>". The line "dos mem /program" is
     executed. Its output will be found in Binkley's log file. If you
     execute "dos mem > f:\mem.txt" the child process program will
     direct its output to an other file.





     Ghostwriter [2.1]                                         page 10





          After a "dos [command]" line has been detected and COMSPEC
     could be located the current content of the screen and the cursor
     position are saved. Execution of the "shelled" application
     begins. Afterwards the screen is restored to its old state, the
     cursor position is updated and the shelled program's exit code
     (errorlevel) is noted in a log line. The ghostwriter returns to
     the same drive and subdirectory where it resided before executing
     the shelled command.

          If more than one "dos [command]" line for the tag is found a
     temporary batch file will be created by the program. Then,
     instead of swapping and executing each single line, the temporary
     batch file is executed at once and deleted afterwards. This batch
     file will be placed in the subdirectory pointed to by the TMP or
     TEMP environment variable.

          The "dos [command]" line will be parsed for all built-in
     magic filenames the program supports (see page #23 for the
     complete list). Additional, there are four variables available as
     arguments for DOS commands: $day2, $day3, $week and $pday.

          $day2 returns a two character string containing the current
     day number; if the current day number is greater than 100, the
     first digit will not be included in the string returned by $day2.
     $day3 returns a three character string containing the current day
     number; leading zeroes will be added.

          $week is a two character string containing the number of the
     current week; here also leading zeroes will be added.

          $pday ("process day"): on Friday this variable returns the
     current day number; on each other day of the week it returns the
     day number of the most current Friday. This string is three
     characters long; leading zeroes will be included.

          With this additional variables programs which return the
     current day number ("DAYNBR") probably become obsolete.

          Example: the string "copy d:\inbound\nodelist.$day3 d:\misc"
     will be expanded to "copy d:\inbound\nodelist.033 d:\misc",
     assumed 33 is the current day number. See also the Sample.Cfg
     file included in the distribution archive for more examples on
     this feature.














     Ghostwriter [2.1]                                         page 11





     _________________________________________________ Server requests

     A very powerful feature is available through the built-in tag
     "server". Only a few statements are required to initialize
     execution of any batch file even from a remote location:

          Use "#define serveruser <firstname> [<lastname>]" in the
     define section of the configuration file. Then, use "#define
     serverpassword <password>" to indicate the keyword required to
     execute batch files from remote.

          Here's what happens if both keywords are set and the program
     is started with the one and only command line parameter "server":

          The netmail directory is searched for messages destined to
     <firstname> <lastname> as found on the "#define serveruser" line.
     If messages to this "user" are found a check for a match between
     the "Subject:" of the message and the <password> given on the
     "#define serverpassword" line is performed. If user name,
     password and destination system match the message is saved as
     batch file. A copy of the message will be forwarded as private
     netmail message to the sysop. Afterwards, this "message batch" is
     executed and deleted.

          If more than one message for "serveruser" was found first
     the messages are sorted by number. Then, each message is saved in
     ASCII format to a batch file and forwarded to the sysop. Finally,
     a master batch file is created. This master batch simply calls
     each single batch file and deletes it after execution. Finally,
     the master batch itself is deleted by the program.

          Of course, just like executing a "dos <command>" line, the
     program will be swapped nearly complete out of memory. The
     program always returns to the same drive and subdirectory where
     it resided before the "server" function was invoked. There is no
     restriction what can be done in this "message batches". Even all
     log files and the ghostwriter program itself may be deleted
     without "hanging" the system. The only system parameter not
     checked during server execution is the video mode currently used.
     Take care to always return to the same video mode used before
     invoking the server function.
















     Ghostwriter [2.1]                                         page 12





     ________________________________________ How to use the "trigger"

     This function is similar to the "server" function. Instead of
     attempting to execute the message text as batch file DOS commands
     or predefined batch files will be executed if specific messages
     exist in the netmail subdirectory.

          "Triggers" are messages which must be addressed to your
     primary network address (additonal AKA addresses only will be
     checked in FrontDoor environments). First, these messages must
     not be received to be qualified for triggering any DOS command.
     Next, the "Subject" fields of this messages must match the
     "Subject" keyword in the Ghost.Cfg file (more on this a few lines
     later). If the "From" keyword of the defined trigger is not an
     empty line, the message's "From" field also must match.

          Those triggers are defined in the "#define" section of the
     configuration file. Here's the format for this section:

          #define trigger: This line is required to indicate the start
     of this section. If present it must not be preceded by any
     comment character.

          subject <message subject> (max. 72 characters): This is the
     message subject which will be compared with each single netmail
     message. A match is true if the shorter string is fully included
     in the longer string.

          from [firstname lastname] (max. 36 characters): Firstname
     Lastname are optional; the "from" line is *not* optional. If
     "from" is followed by a name "Subject" *and* "From" fields of a
     message must match; otherwise only the "Subject" fields must
     match to act as trigger.

          command <DOS command>: Any valid DOS command or batch file
     name. Use "first command;next command;next command;...;" to
     execute more than one DOS command or batch file. The last
     character of a multiple command line *must* be a semicolon.

          #end: This line is required to indicate the end of this
     section. It must not be preceded by any comment character.

          See the file Sample.Cfg included in the distribution package
     for more details on the "trigger" section.

          If the program is started with the parameter "trigger" all
     messages in the netmail directory will be searched for matching
     subjects (and matching "From" fields if the corresponding "From"
     field in Ghost.Cfg was not empty). If matching messages are
     found, the "Received" flag will be set by the program; next the
     DOS command associated to the "Subject" will be executed. As
     usual first an attempt to swap to EMS or harddisk will be done.

          That's it.



     Ghostwriter [2.1]                                         page 13





     ____________________________________________ Predefined variables

     There are 34 predefined variables you may use in the message
     text. Each one starts with the $ sign. The ghostwriter scans the
     text and substitutes the $variable with a value computed at run
     time. Here is a description of each variable.

     $anetlist      This are the built-in "magic" filesnames
     $bbsnet        the program supports.
     $egglist
     $fidonews      The full filename of this nodelist and news-
     $netlist       letter files are computed at execution time
     $nodediff      and may be inserted into the message text.
     $nodelist
     $opcndiff      The extension of these file names depends on
     $opcnlist      your "#define packer" statement (see page 23)
     $pointnet
     $signodes

     $day           number of the day in current month; digit without
                    leading zeroes

     $dname         name of the current day, possible values range
                    from Sunday to Saturday

     $diskfree      free space in kilobytes left on the currently
                    logged drive

     $dosversion    major and minor DOS version number

     $fromnet       net number of the the message's origin system

     $fromnode      node number of the message's origin system

     $frompoint     point number of the point system currently using
                    the program

     $fromzone      the message origin zone as single number

     $memory        free RAM space in kilobytes currently free.
                    *Note*: this is not the same amount of memory
                    available while shelling to DOS.

     $month         current month number without leading zeroes

     $mname         name of the current month; possible values range
                    from January to December

     $name          first name of the addressee of the message

     $origin        name of the system currently using the program

     $tonet         net number of the message's destination system




     Ghostwriter [2.1]                                         page 14





     $tonode        node number of the message's destination system

     $topoint       point number of the message's destination system

     $tozone        the message destination zone as single number

     $time          current time in the format hh:mm:ss

     $year          current year in four digit format

     $bouncearea    name of the not-received original message echomail
                    area
     $bouncedate    original message date
     $bouncelimit   number of days in which the sysop missed to read
                    (receive) the message

     The last three variables should only be used when the program
     performed the check for messages waiting for the sysop; see page
     7 for more on this topic.

          Here are two special operators which add flexibility to the
     program:

     $include       [full qualified drive-, path- and filename]

          If this operator is found in column #1 of the message text
     the ghostwriter attempts to read the file and include its
     contents into the message. No check is performed to verify that
     the file is a plain ASCII file. Unimaginable troubles may result
     if you use $include c:\dos\command.com in the Ghost.Cfg file.
     However: if your mailer/editor combination supports any
     information hidden behind ^a (01h) characters ("kludges") you may
     include those lines in any message line found in Ghost.Cfg or any
     file to $include in the message.

          Be sure to separate the $include directive and the filename
     with at least one space character. Always make sure that the
     resulting message created by one or more $include's does not
     exceed the maximal message size your message bundler is able to
     handle. The maximal message size ghostwriter can process is
     limited only by the amount of free memory at run time.

          The include file's text is not checked for any variable or
     special operator. If its text contains the strings $name or
     $diskfree they are imported as literals into the message text.

          In case the file specified for including in the message
     could not be found the line "[include file not found]" is
     inserted in the message.

     $dummy         see page #19 for more on this keyword.


     ___________________________________________________ Message flags



     Ghostwriter [2.1]                                         page 15





     All messages created by ghostwriter will have the "local" bit
     set. File attaches generated by the ghostwriter additionally will
     have the "kill/sent" flag set; you don't need to specify "kill"
     in Ghost.Cfg.

          To individually set the message flags according to your or
     your message bundler's needs you may use any combination of the
     six flags the program supports: crash, hold, private, kill,
     request and update. One or more attribute flag keyword(s) on the
     "to [address]"-line, separated by at least one blank character
     from the zone:net/node.point field will set the message flags.

          Additional mailer specific flags also may be used; see page
     #18 for more details.


     ___________________________ Inter-zone messages: #define zonegate

     The statement "#define zonegate" will influence the contents of
     the message header when creating messages destined to other
     zones. If a "#define zonegate" line in the "#define" section of
     Ghost.Cfg was present messages to other zones will be re-routed
     to the gate for the destination zone. If this statement is
     missing the net and node number of the destination system will be
     written into the message header (this is the default).

          Find out the requirements for inter-zone messages or inter-
     zone file attaches of the software used on your system. No matter
     if "#define zonegate" is present or not: the ^aINTL kludge line
     will always be inserted to message headers for other zones.



























     Ghostwriter [2.1]                                         page 16





     _________________________ National customization: #define country

     By default the program uses the English names to substitute any
     $dname or $mname found in Ghost.Cfg. If you like you may add a
     special section in the ghostwriters configuration file. Entitle
     this section with #define country in a line in Ghost.Cfg and add
     the seven names of the weekdays and the twelve monthnames, each
     one of them on a single line.

          Have a look at this section from the Ghost.Cfg I use on my
     system:

     ; ---------------------------------------------------------------
     #define country                  specific data for FRG, CH and A 
     ; ---------------------------------------------------------------
     ;
     ; ---------------------------------------------------------------
     ;                       first the day names, start day is Sunday 
     ; ---------------------------------------------------------------
     ;
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
     ;
     ; ---------------------------------------------------------------
     ;                              now the monthnames in order 1..12 
     ; ---------------------------------------------------------------
     ;
       Januar
       Februar
       März
       April
       Mai
       Juni
       Juli
       August
       September
       Oktober
       November
       Dezember


          [Readers from other countries: please excuse the "funny cha-
     racters" shown in this example.]

          The program's strategy for this quite rudimentary "custom-
     ization" is to scan Ghost.Cfg for the "#define country" section.
     The next 19 non-comment lines are assumed to represent the names
     of the seven weekdays and the twelve monthnames used in your
     country. The first non-comment line encountered after #define



     Ghostwriter [2.1]                                         page 17





     country will be used for Sunday, line #7 of this section will
     represent Saturday, lines #8 to #19 will be used for the month
     numbers 1 to 12 if $mname is found anywhere in the message text.

          It's not necessary to include this section in Ghost.Cfg; the
     English names will be used if it is not found. But if you prefer
     to use this feature the #define country section must be located
     between the "from", "address", and "origin" section (if any) and
     the first "keyword", "dos", "to [name] [address] {flags}" and
     "path" section.


     __________________________________ Addressees list: #define group

     You may use the keyword #define group in any line of the programs
     configuration file to define groups of addressees. Take care: any
     "#define [parameter]" line must be located before the first
     "subject", "to" and "path" entry in the configuration file. The
     complete syntax for this entry line is as follows:

          #define group [groupname] {$file d:\dir\filename.ext}

          First comes the name of the group. This is exactly the same
     name you use later in the configuration file to refer to the
     group in the line containing the "to" statement. The maximum
     length of the group name is 40 characters; the only character
     which must not be used in ghe group name is the semicolon (;) as
     it is treated as "start of comment"-tag. The reference to the
     group is done by

          to group [groupname] <flags> <^amailer specific flags>

          following the keyword line and just before the "path" line
     in the Ghost.Cfg file.

          Next in the Ghost.Cfg file are lines containing the names,
     the network address of each group member and -- optionally -- the
     required message flags; each "record" on a single line. The first
     "; comment line" is interpreted as end of group-mark.

          The names of the group members may optionally be contained
     in an ASCII file which name is given by $file after the group's
     name. The format of this file is exactly the same as used in
     Ghost.Cfg following #define group or directly on each "to" line,
     i.e. [first name] [last name] [zone:net/node.point] {flags}.

          The programs also supports group members lists in the format
     generated for example by programs like Bob Hartman's "ParseLst":
     last name [comma] first name [blanks] [zone:] net/node. Since
     this file (Fidouser.Lst) contains no keywords for the message
     attribute flags ghostwriter sets the "private" flag (see also
     page #3).





     Ghostwriter [2.1]                                         page 18





          As with #define country each #define group section has to be
     located before any "keyword", "dos", "to" and "path" section in
     the configuration file. The number of #groups and the number of
     members of each group is limited only by the amount of free RAM
     while operating the program.

          Attention: *do not* use a group followed by one or more
     individual "to" lines. Messages only can be adressed by one or
     more "to" [firstname] [lastname] [address] {flags} line(s) or by
     one (and *only* one) "to #group [groupname]" line. Serious system
     crashes may occur if there's an attempt to mix both group and
     individual adressees references for one message.

          Optionally, mailer specific flags may be included after the
     group name. This is done by typing at least one blank character
     after the group name, a caret ("^", Alt-94), an "a" (Alt-97)
     character, immediately followed by any string required or
     supported by the mailer. This string will be converted to
     uppercase letters and included, hidden by a ^A (0x01 character)
     as very last kludge line right before the message text in a
     netmail message.

          Example: the statement "to group beta ^aflags dir" will
     teach the program is insert "0x01FLAGS DIR0x0D0x0A" as additional
     kludge line into each message to the beta group members.

          This ^a<mailer flag> string also can be used on each line,
     no matter if it's a group address line or a single "to" line.
     Here's the order those kludges will be inserted after the message
     header:

          INTL <destination> <origin>
          TOPT <point #>
          FMPT <point #>
          MAILER SPECIFIC STRING from "to group" line
          MAILER SPECIFIC STRING from single "to" line


     ____________________________ User-defined variable: the -d option

     The -d{variable} command line parameter only makes sense with a
     $dummy keyword on a line in the configuration file: if -dcon-
     tents_of_the_variable is present on the command line "contents of
     the variable" will be inserted for each $dummy found in the
     configuration file. This is not only true for the message text;
     also the process tag (the "Subject:" of a message, usually
     identical to the first command line parameter) or a network
     address may include one or more $dummy string. If you use $dummy
     as variable for a network address it's your responsibility to
     verify the proper format.







     Ghostwriter [2.1]                                         page 19





          Note the use of the underscore character: since DOS sepa-
     rates command line parameters by blanks it's necessary to substi-
     tute them by the _ character. If there are no underscores in the
     string following -d no substitution will take place. The same is
     true for the program's most important parameter: the keyword
     Ghost.Cfg will be scanned for.

          Note also that there is no blank between -d and the first
     character of the string you whish to use for each $dummy. If your
     message text contains a $dummy but no -dtext_for_dummy was found
     on the command line the ghostwriter will insert "-d parameter not
     found" into the message.

          The combination $include $dummy or the use in an address
     line "to New Sysop 1:170/$dummy" maybe is one of the most power-
     ful features of the program's part dealing with variables.


     _____________________ Alternate configuration file: the -f option

     By default the program searches for Ghost.Cfg in the same sub-
     directory where the Ghost.Exe file is located. If for any reason
     you whish to override this file you may include a full qualified
     filename on the command line immediately following the -f
     parameter (no blanks, please).

          This alternate configuration file must have the same struc-
     ture as Ghost.Cfg: optionally #define country, optionally #define
     group and "keyword", "dos", "to" and "path" sections.


     ____________________________ Generate kludge lines: the -k option

     Use -k anywhere on the command line to force insertion of kludge
     lines into the message text. As described on page #24 the ghost-
     writer optionally inserts up to two kludge lines into the
     message(s). If you experience any problems with your message
     bundler, especially when processing ghostwriter messages with
     file attaches, please do not use this option.

          Ghostwriter has been tested on systems operating with
     different software. No problems were encountered on nodes using
     Greg Dawson's Qmail 1.00a, Bob Hartman's ConfMail 3.31 and 4.0
     combined with the Opus-rooted oMMM and FrontDoor working with
     TosScan. In none of these systems the kludge lines generated
     seemed to cause troubles.


     _____________________________ Use other sysop name: the -n option

     To use the program with a different sysop name as found in
     Binkley.Cfg, Config.Ra or Fd.Sys use the command line parameter
     "-n<new_name>" when invoking the program.




     Ghostwriter [2.1]                                         page 20





          As usual first and last name of <new_name> must be separated
     by an underscore character. <new_name> then replaces the sysop
     name in all program functions, including mail check. Of course
     the files Binkley.Cfg, Config.Ra and Fd.Sys never will be chan-
     ged; <new_name> just acts as temporary replacement.


     _____________________________________ No word wrap: the -s option

     By default each message line is terminated by a CR/LF sequence
     ("hard return"). To override this and leave line formatting up to
     the editor include the -s option somewhere on the command line.
     Anyway: lines ending with ":", ".", "!" and "?" will be treated
     as "hard returns".


     _____________________________________ No tear line: the -t option

     You may use the -t parameter to prevent creation of the tearline
     and the origin line if you don't like them or prefer to use those
     lines created by the echomail processor of your choice.


     _______________________________________ Tear line and origin line

     By default the programs appends an additional blank line and a
     tear line to the message. If the destination path of the message
     is an echo area (i.e. only a single message is generated) the
     program will append also an origin line. The contents of this
     origin line will be taken from an ASCII file named "Origin" in
     the message subdirectory. If this file doesn't exist the ghost-
     writer uses your system name as found in Binkley.Cfg,  Fd.Sys or
     Config.Ra, followed by "(zone:net/node.point)".

          If neither Binkley.Cfg, Fd.Sys or Config.Ra could be located
     the words following "system" in Ghost.Cfg will be used. If there
     is no origin declared in Ghost.Cfg ghostwriter's last attempt
     before giving up and using "[The node without any origin]
     (zone:net/node.point)" will be to check the current directory for
     an existing Areas.Bbs or Origin file to extract the system's name
     from.

          If multiple messages are created ghostwriter assumes them to
     be privte messages for the matrix or the local area. No origin
     line will be appended to this messages. To prevent creation of
     the tear line use -t as command line parameter. The program never
     will append any tear and origin line to messages created in the
     netmail subdirectory.









     Ghostwriter [2.1]                                         page 21





     ___________________________________________________ File attaches

     To attach a file to a matrix message addressed to one person or a
     group of persons use the special command line parameter $file
     immediately followed by the full qualified name of the file you
     wish to attach. In Ghost.Cfg this entry is declared as keyword.

          Sample call: ghost $filed:\files\netstuff\nodediff.a12

          Please note: there is no blank between $file and the name of
     file to attach.

          In the above example D:\Files\Netstuff\Nodediff.A12 becomes
     the "Subject:" of the message; the resulting messages will have
     the "file attach" and "kill/sent" flag set.

          When sending file attaches the programs also reports  file-
     name, file size and date/time stamp of the file to send. This of
     course is only true if the file to be attached could be found in
     the moment the program is executing. Anyway: the program does not
     mind if the file to be attached not exists.

          Joker and wildcard characters may be used in the filename.
     The first matching file is attached to the message; if there are
     more matching files the program generates additional attach
     messages without message text for each matching filename found.
     If no single matching file was found the file attaches will not
     be built; don't include joker or wildcard characters in filenames
     to override this function and send a file though it is not yet
     existing in the subdirectory included in the filename.

          The attach filename may also be one of the "magic" filenames
     used on your system. First the program checks to see if the file
     to be attached exists. If this file could not be located and the
     "okfile" defined in Binkley.Cfg, Ghost.Cfg or Fd.Sys contains a
     description for this "magic", this description will be inserted
     as attach name. However: this is only true for the first matching
     "magic" filename.

          When sending multiple file attaches the program counts the
     number of files and the total file size in kilobytes and logs
     this to the screen.

          The filename may be followed by -d [nnn] on the same line in
     the Ghost.Cfg file. [nnn] must be a number between 1 and 65000;
     it allows you to build the attach message(s) only if the file is
     not older then [nnn] days. This flag may also be used if there
     are joker or wildcard characters in the filename.









     Ghostwriter [2.1]                                         page 22





     ___________________________________________________ File requests

     The "request" flag can be used to create file requests. The
     "Subject:" of the message will be the name of the file to be
     requested; the destination of the file request is taken from the
     "to name address { flags }" line of Ghost.Cfg. Any of the built-
     in "magic" filenames (see next section) the programs supports can
     be used as "keyword" command line parameter and as tag line in
     the program's configuration file. If one of this "magic" filenams
     is used it will be converted to the full filename as valid for
     the current system's date.

          An example: the call "ghost $fidonews" { more options } will
     scan Ghost.Cfg for the tag line "$fidonews". Since "$fidonews" is
     one of the "magic" filenames it is replaced by the currently
     valid full filename. This feature is very handy for requesting
     once a week the same Fido Newsletter or various
     Nodelist-/Nodediff-files.

          If instead of "request" the message flag "update" is used
     the program will generate a file update request. This means the
     destination system of the update request message will send the
     requested file only if the time and date stamp mark the file as
     newer than the one available on your system.


     _________________________________________________ Magic filenames

     These are the built-in magic filenames the program supports:
     $Anetlist, $BBSnet, $Egglist, $Fidonews, $Netlist, $Nodediff,
     $Nodelist, $Opcndiff, $Opcnlist, $Pointnet and $Signodes. If one
     of those names in encountered in the "$file..."-line the
     ghostwriter substitutes it by the actual filenames valid for the
     current date. For the date this documentation is written the
     following translation would take place:

          $fileD:\Out\$Nodelist --> $fileD:\Out\Nodelist.A82
          $fileD:\Out\$Anetlist --> $fileD:\Out\Anetlist.A82
          $fileD:\Out\$Fidonews --> $fileD:\Out\Fnews712.Arc

          See the file Sample.Cfg for more details and information
     regarding file attaches.


     _________________________________________ File compression method

     The keyword "#define packer [packer name]" in the #define section
     of the configuration file may be used to alter the filename
     extension the program uses to translate the built-in magic
     filenames. The default packing method currently used for the
     various nodelist and newsletter files is Arc; this is reflected
     by the letter "A" in the extension of any nodelist filename.





     Ghostwriter [2.1]                                         page 23





          #define packer may be followed by Lharc, Pak, Zip or Zoo. An
     example: if "#define packer Zip" is present, the magic filename
     $Fidonews for the current date would be computed to Fnews705.Zip;
     "#define packer Lharc" and $Nodediff would be converted to
     Nodediff.L33.


     ________________________________________ Override magic filenames

     The filename extensions for the various nodelist files are compu-
     ted by comparing the current date with the current day of the
     year. The most recent Friday is used to indicate for which day of
     the year the BBS listing is valid.

          If any new nodelist or nodediff file has to be attached on
     Thursday, the filename extension would be the Julian day number
     of the last Friday. The ghostwriter would be unable to
     automatically distribute the latest file. Use "#define magic-
     offset [n]" in the #define section of Ghost.Cfg to indicate which
     offset for the built-in magic filenames is valid on your system.
     [n] is assumed to be a single digit in the range of 1 to 4; any
     other value is ignored by the program.


     ___________________________________________ Optional kludge lines

     Ghostwriter optionally identifies its messages by inserting a
     kludge line as the very last line of the message. This kludge
     consists of a ^a (Ctrl-A, 0x01) character, immediately followed
     by the program's name, version number and an identification of
     the type of the node which is using the program. This either
     could be "[BinkleyTerm system]", "[FrontDoor system]" or
     "[RemoteAccess system]" depending on the type of the mailer or
     BBS configuration file the program found.

          If you use the program to generate file attaches a second
     klugde line will be inserted containing a 0x01 character and the
     word "attach", followed by the filename, the size in bytes and
     the date and time stamp of the file attached. This of course is
     true only if the attached file could be located on run time. See
     page #22 for more on file attaches and the paragraph on page #20
     for the -k option.















     Ghostwriter [2.1]                                         page 24





     ____________________________________________ Errorlevels returned

     Errorlevel 0 indicates successful program termination, errorlevel
     1 indicates matrix messages were created; errorlevel 2 indicates
     echomail messages were created. An errorlevel of 3 indicates that
     messages from or to the "purge" group were deleted during
     mailcheck. Errorlevel 4 reports troubles in creating the new
     messages (disk full, path or board number following "path" not
     existing, any other disk i/o error, important configuration files
     missing).

          Under no circumstances the program will stop with an annoy-
     ing "run time error xx at yyyy:zzzz. Hit any key to return to
     system". If possible, all open files will be closed by the
     program. Also, a full text error message will be written to the
     screen and the log file.

          There are three special errorlevels which only may occur in
     connection with the EMS/disk swapping before executing other DOS
     commands from within "Ghostwriter":

          253: general EMS error
          254: disk error
          255: can't reallocate memory

          Errorlevel 255 only occurs if a resident program was started
     by a "dos [command]" line. This of course never should be done.






























     Ghostwriter [2.1]                                         page 25





     ___________________________ Credits, new releases and "Thank you"

     Many thanks to Felix Kasza @ 2:310/11 for his support regarding
     the structure of Fd.Sys. Thanks also to Felix for proof reading
     the program's documentation, soothing my sometimes dubious use of
     the English language and the numberless late night phone calls he
     spent discussing new features, testing the program and writing
     bug reports.

          Thanks to John Alton @ 1:141/250 Wilton Woods Opus for
     sending me a lot of files describing troubles John encountered in
     creating file attaches with the ghostwriter and oMMM.

          Thank you, Sascha Vogt @ 2:310/7 for suggesting the "update"
     flag. Thank you, Luc Schoofs @ 2:295/26, for suggesting the "co-
     sysop" feature. Thanks to Jack Decker @ 1:154/8 for requesting
     the magic filenames "Opcndiff" and "Opcnlist". Special thanks to
     Bruce Bodger @ 1:170/400 for his suggestion of the "ondate"
     option, the bug reports and the EMS/disk swapping code Bruce sent
     me.

          Thank you, Borland International, for powerful tools like
     Turbo Pascal 5.5 and the Turbo Debugger; thank you, Kim Kokkonen
     and TurboPower Software for creating the marvellous "ExecSwap"
     unit; thank you, Big Blue, for your reliable computers (I still
     love my IBM XT 286). Finally: raise your hats to Tom Jennings for
     inventing Fido/Fidonet, the Binkley Trio and Joaquim Homrighausen
     for creating state of the art-mailers and to all other people in
     our community who keep the good work of programming and pumping
     megabytes of echomail round the world going on.

          The greatest "Thank you" again is addressed to Felix Kasza,
     2:310/11, and Bruce Bodger, 1:170/400. Both are by far the very
     best beta testers I can imagine; besides this Felix is the only
     kind of "bossnode" suiting the needs of a former FidoNet region
     coordinator like me.





















     Ghostwriter [2.1]                                         page 26





          The most recent version of my program is available from my
     bossnode, 2:310/11 Deep Node, HST-speed. I think Bruce Bodger's
     Truckstop BBS, 1:170/400, and John Alton's Wilton Woods Opus,
     1:141/250, support the magic filenames GHOST or GHOSTWRITER. Also
     "Ghostwriter" should be available on any SDS node.

          You may re-pack the ghostwriter files using the compression
     utility of your choice, but take care to use "Ghost210" as file
     name and to include the file Sample.Cfg in the package you
     distribute.

          Feel free to mail any comments, suggestions or questions to
     Werner Berghofer, 2:310/11.100@Fidonet. Continue to enjoy sharing
     our common hobby and do your best to enthuse "new" people for the
     powerful medium electronic mail represents.


                                                     Werner Berghofer,
                                             Vienna, April 15th, 1990.






































     Ghostwriter [2.1]                                         page 27





     ___________________________________________________________ Index

     A                                  define statuslog 5
     Adam Hudson 2                      define trigger 13
     address 2, 3, 4                    define zonegate 16
     alternate configuration file       disk swapping 25
       20                               DOS commands 10
     Anetlist 23                        DOS version 14
     answer 8
     Arc 23                             E
     Areas.Bbs 5, 8, 21                 Egglist 23
     arguments for DOS commands 11      EMS 25
     ASCII file 2, 4, 15, 18, 21        EMS memory 10
                                        environment 2, 10
     B                                  errorlevel 11, 25
     BBSnet 23                          exit code 11
     Binkley.Cfg 2, 21
     Binkley Trio 26                    F
     BinkleyTerm 2, 24                  Fd.Sys 2, 6, 21, 26
     Borland International 26           Felix Kasza 26
     bouncelimit 7                      Fidonet address format 4
     Bruce Bodger 26                    Fidonews 23
     built-in magic filenames 23        Fidouser.Lst 3, 18
                                        file attach 22
     C                                  file request 23
     co-sysop 26                        file size 22
     comment character 4                file update request 23
     comment line 4                     first name 14
     COMSPEC 10                         FMPT 2, 4
     Config.Ra 2, 21                    Folder.Sys 6
     configuration file 4, 17, 19,      forward 8
       25                               four-dimensional 4
     ConfMail 20                        free RAM space 14
     crash 16                           free space 14
     current time 15                    FrontDoor 2, 24

     D                                  G
     date/time stamp 22                 Ghost.Cfg 2, 4, 16, 17, 20
     day 14                             group 3, 9, 18
     day2 11
     day3 11                            H
     day number 11                      hard return 21
     DAYNBR 11                          hold 16
     define cosysop 9
     define country 17, 18              I
     define group 18                    i/o error 25
     define magicoffset 24              INTL 2
     define messagebase 5
     define packer 24                   J
     define purge 9                     Jack Decker 26
     define QBBSpath 5                  Joaquim Homrighausen 26
     define serverpassword 12           John Alton 26
     define serveruser 12               joker 22




     Ghostwriter [2.1]                                         page 28





     K                                  ParseLst 3, 18
     keyword 4, 22                      pday 11
     kill 16                            percent sign 4
     Kim Kokkonen 26                    point 2, 4, 21
     kludge 24                          point address format 4
     kludge lines 20                    point number 14
     kludges 15                         Pointnet 23
                                        private 3, 16, 18
     L                                  process day 11
     Lharc 24                           purge 9
     line formatting 21
     local 16                           Q
     log 5                              Qmail 20
     log format 5                       QuickBBS message format 2
     Luc Schoofs 26
                                        R
     M                                  re-direct 5
     mailcheck 7                        RemoteAccess 2, 24
     mailer specific flags 19           report 8
     matrix address 3                   request 16, 23
     maximal message size 15            resident program 25
     memory map 10                      run time error 25
     message attribute flag 18
     message bundler 15, 16, 20         S
     message flag 3, 16                 Sascha Vogt 26
     message format 2                   SDS 27
     month 14                           semicolon 4
     monthnames 17                      server 12
     MSGID 8                            set BINKLEY 2
     multiple file attaches 22          set FD 2
                                        set RA 2
     N                                  Signodes 23
     net number 14                      special operator 15
     Netlist 23                         swap 10
     netmail 2, 3, 4                    swap file 10
     network address 18                 sysop 2, 3
     node number 14                     system 2, 3, 21
     Nodediff 23                        system crash 19
     Nodelist 23
     nodelist 2, 3                      T
     nodelist compiler 3                TEMP 10
                                        temporary batch file 11
     O                                  TMP 10
     okfile 2, 3, 22                    Tom Jennings 26
     oMMM 20, 26                        TOPT 2, 4
     ondate 6                           TosScan 20
     onday 7                            trailer lines 9
     Opcndiff 23                        trigger 13
     Opcnlist 23                        Turbo Debugger 26
     Origin file 21                     Turbo Pascal 5.5 26
                                        TurboPower Software 26
     P
     packer 23                          U
     Pak 24                             underscore 4, 20



     Ghostwriter [2.1]                                         page 29





     update 16, 23                      white space 4
                                        wildcard 6, 22
     V
     variable 14, 15                    Z
                                        Zip 24
     W                                  zone 2, 4, 14, 21
     week 11                            Zoo 24
     weekdays 17

















































     Ghostwriter [2.1]                                         page 30