MsgEd TE
********

This document describes MsgEd TE 6.3, a Public Domain Fidonet Message
Reader and Editor Software for OS/2, Windows, DOS and Unix.

1 An Overview on MsgEd TE 6.3.
******************************

MsgEd TE is a message reader and editor software for Fidonet (and
compatible) network(s), supporting Squish, Hudson, Jam and Fido *.MSG
message bases.  This program is released to the public domain.  There
are absolutely no usage or distribution restrictions.  This is truely
free software.

   MsgEd TE emerged from MsgEd, a public domain fidonet message reader
initially written by Jim Nutt and thereafter maintained by numerous
people (among them Paul Edwards, Andrew Clarke, and Kim Lykkegaard).
MsgEd TE is being developed by Tobias Ernst.  You can reach me at
2:2476/418 or via e-mail at tobi@bland.fido.de.

   MsgEd TE tries to support a vast number operating system platforms by
employing portable software design techniques.  It is my policy to
release executables and source code at the same time for all supported
platforms, among them OS/2, Unix (Linux and FreeBSD as well as
commercial Unix systems), Windows NT, 16- and 32-bit DOS.

   MsgEd TE is developed with the GNU C compiler and GNU boundary
checking, which assures high program stability.

   MsgEd TE formerly was an alternative branch to the main Msged
development line, which was evolving into a slightly different
direction, but as that main development line seems to have ceased, you
can now consider MsgEd TE to be the most recent version of Msged.  Since
then, most of the features of the last incarnation of the main Msged
development line, Msged 4.30, have been incorporated into MsgEd TE.

   If you like MsgEd TE and start to use it as your everyday Fidonet
editor, please drop me a note saying that you do so at 'Tobias Ernst
 2:2476/418' or at 'tobi@bland.fido.de'.  I originally started to work
on MsgEd TE to create a Fidonet editor that fulfilled some special
personal needs of mine.  Since then, things evolved and I saw myself
doing a lot of work that I would not have done just for my own needs.
Writing this documentation is one such example, porting to Windows NT
another.  If I continue to do this work in the future and add new
features to MsgEd TE will strongly depend on how much feedback I receive
from users that like and use MsgEd TE. Therefore: Don't be shy - drop me
a mail.  :-)

   At this place, I also would like to express my thankfulness to all
people that helped making MsgEd TE what it is now, that being all the
developers that haved worked on the Msged sources in the past, the Husky
developers, and all the beta testers that used the Pre-Release of MsgEd
TE 6.3.

2 Installation Procedures and Release Notes
*******************************************

This chapter provides you with information that is necessary to
successfully install and use MsgEd TE. Part of this chapter applies to
all versions of MsgEd TE, while some sections only apply to a particular
operating system.  If this is the case, the particular operating system
is mentioned in the section title.

   You should carefully read this chapter because it might save you from
a lot of pain, especially (but not only) when using MsgEd TE in
networked or UNIX environments.

2.1 Which Distribution Archives do I need?
==========================================

MsgEd TE 6.3 is shipped in various distribution archives.  This section
describes the contents of each.  You normally do only need one of these
files containing the executable and documentation for your platform, and
maybe the file that contains the printable version of the documentation.
In the following files, ???  must be replaced by the version number,
e.g.  '600' for version '6.0.0'.

'MSGE???O.ZIP'
     This archive contains an OS/2 executable, sample configuration
     files and a manual in OS/2 INF format.

'MSGE???D.ZIP'
     This archive contains a 16-Bit DOS executable, sample configuration
     files and a manual in plain text format.

'MSGE???3.ZIP'
     This archive contains a 32-Bit DPMI DOS executable, sample
     configuration files and a manual in plain text format.

'MSGE???W.ZIP'
     This archive contains a Windows 32 bit console executable that
     should be your primary choice when running Windows NT or 2000,
     sample configuration files and a manual in HTML format.

'MSGE???L.ZIP'
     This archive contains a statically linked, pre-compiled Linux
     executable, sample configuration files and a manual in GNU info
     format.

'MSGE???M.ZIP'
     This archive contains the manual for MsgEd TE in Postscript and in
     HTML format.  If you intend to print the documentation of MsgEd TE,
     then you should get this file and use the Postscript version,
     because printing the Postscript version of the manual (by copying
     it to the printer port of a postscript capable printer, or by using
     Ghostscript) will result in the best possible output that looks
     much nicer than if you would print the HTML or plain text
     documentations.

'MSGE???S.ZIP'
     This archive contains the complete C source code for MsgEd TE,
     out-of-the-box makefiles for building MsgEd TE on DOS, OS/2,
     Windows, and almost every imaginable Unix-like system (tested
     systems include Linux, FreeBSD and Tru64 Unix), sample
     configuration files, and the texinfo source code for the manual
     that can be used to build the manual in OS/2 INF, HTML, GNU info or
     DVI format.

   For compiling MsgEd TE, you also need the 'smapi' library.  The
'fidoconfig' library is not needed, MsgEd TE can now parse Fidoconfig
without need for this library.  The versions of 'smapi' libary that can
be used to build MsgEd TE 6.3 are:

'smapi-stable-2.5-src.tar.gz'
     or any other version from this stable branch

   _Attention:_ Most of these ZIP-files contain subdirectories, so you
should use the '-d' option when unzipping them with 'pkunzip'.!

2.2 Installation on OS/2, DOS or Windows
========================================

This section provides guidelines and additional notes for installing
MsgEd TE on OS/2, DOS or Windows.

2.2.1 Installation Procedure
----------------------------

  1. Obtain the distribution archive that contains the executable for
     your platform.  (You might already have done this).

  2. Create a subdirectory like for example 'C:\MSGED', change into this
     subdiretory, and unzip the distribution archive.  Be sure to use
     the '-d' option when unzipping the archive, because some archives
     contain subdirectories.  (You might already have done this).

  3. Find out which codepage you are using by issueing the 'CHCP'
     command.  It is probably 437, 850 or 866.  Then, select the
     corressponding read map and write map files that are shipped with
     MsgEd TE (the have names of the form 'READMAPS.codepagenumber' and
     copy them over to 'READMAPS.DAT' and 'WRITMAPS.DAT'.  For example,
     this could look like this:

          R:\MSGED> CHCP
          Active Codepage:   850
          Prepared System Codepages:   850;  437

          R:\MSGED> COPY READMAPS.850 READMAPS.DAT
          R:\MSGED> COPY WRITMAPS.850 WRITMAPS.DAT

     Please note that the filenames for the Ukrainian codepage 1125
     differ from this naming scheme, they are called 'READMAPS.UKR' and
     'WRITMAPS.UKR'.

     If there is no 'READMAPS.XXX' file corresponding to the 'Active
     Codepage' returned by the 'CHCP' command, see if there is a
     'READMAPS.XXX' file for one of the prepared codepages.  If there
     is, use that one, and use the 'CHCP' command to change to this code
     page each time before starting MsgEd TE. In the example above, this
     command would be 'CHCP 437'.  You probably would want to place this
     command in a batch file, together with the invoation of MsgEd TE.

     If MsgEd TE does not support the codepage that you want to use,
     please contact the author and ask him to add support for that
     particular codepage.

     See Using Special Characters like Umlauts or Cyrillics - The Charset Kludge,
     for more information on read
     and write map files, charset kludge lines, codepages, and character
     set recoding.

  4. Rename the file 'sample.cfg' to 'msged.cfg' and modify it according
     to your needs with your favourite text editor.  See Configuration Reference,
     for detailed descriptions of
     each keyword that can be used in this file.

  5. You should now refer to the platform specific release notes found
     below before trying to start MsgEd TE. They can save you from a lot
     of headaches ;-).

  6. Optionally create an icon on your desktop or a batch file that
     starts the proper executable ('MSGEDP.EXE' for OS/2, 'MSGEDNT.EXE'
     for Windows 95/98/NT, 'MSGED.EXE' for DOS, or 'MSGED32.EXE' for
     32-Bit DOS with DOS extender) with the directory you created
     ('C:\MSGED' in the example above) as working directory).

  7. Start MsgEd TE.

2.2.2 Release Notes for the 16-Bit DOS version ('MSGED.EXE')
------------------------------------------------------------

   * The 16 bit DOS version cannot handle squish message areas where the
     '.SQI' file is larger than 64k.  This limits the size of a message
     area to about 5000 messages.  If this is a problem to you, you
     should use the 32 bit DOS DPMI version instead.

   * The 16 bit DOS version has been compiled with Borland C 3.1.

2.2.3 Release Notes for the 32 Bit DOS version ('MSGED32.EXE')
--------------------------------------------------------------

   * The 32 bit DOS version should be used when the 16 bit DOS version
     runs out of conventional memory (which is very unlikely to happen)
     or if you want to use message areas with more than 5000 messages in
     them.  In all other cases, the 16 bit version is the better choice
     because it uses less memory

   * If you have Windows NT, you should use the Windows NT executable
     rather than the 32 Bit DOS executable.  On Windows NT, the native
     Windows 32 Bit version is much faster than the DOS version.  - The
     32 Bit DOS Version is primarily targeted on environments like
     DESQview, plain DOS or Windows 3.1.

   * The 32 bit DOS version requries a functional DPMI server to run.
     Valid DPMI servers include the Windows and OS/2 DOS box,
     Quarterdeck QDPMI, and others.

   * In case you are running plain DOS without any DPMI server,
     'CWSDPMI.EXE' is shipped in the distribution archive.  Simply put
     it into the same path where you put 'MSGED32.EXE', and it will act
     as an DPMI server as long as no other one is installed already.
     Please note that CWSDPMI is not a public domain program.  It is
     licensed under the GNU Public License instead.  You can obtain the
     full source code for CWSDPMI and a copy of the GNU license from
     <ftp.simtel.net/pub/simtelnet/djgpp/v2misc>.

   * The 32 bit DOS version has been compiled using the DJGPP GNU
     compiler.

2.2.4 Release Notes for the 32 Bit OS/2 version ('MSGEDP.EXE')
--------------------------------------------------------------

   * The OS/2 version has been compiled with the EMX GNU compiler, but
     does no longer require the EMX runtime.  It is a standalone OS/2
     executable.

2.2.5 Release Notes for the 32 Bit Windows version ('MSGEDNT.EXE')
------------------------------------------------------------------

   * The Windows version is a 32 bit executable designed for Windows NT.
     Although it has only been tested on Windows NT, it should also work
     on Windows 95 and Windows 98.  There have been reports that screen
     redrawing is very slow on Windows 9x, so you might have to use the
     32 bit DOS executable there.

   * The Windows version presently does not support mouse control (even
     though the mouse cursor is visible).

   * The Windows version has been compiled with the Borland C++ 4.0
     compiler.

2.3 Installation on Linux, FreeBSD, or other Unixes
===================================================

This section provides information on installing MsgEd TE on Linux,
FreeBSD or any other Unix-like system.

2.3.1 Installation Procedure
----------------------------

See Installing MsgEd TE as part of the Husky Project Tools,
if you want to use MsgEd TE in conjunction with
the hpt Tosser and other Husky Project tools.

   The rest of this subsection only covers manual installation of MsgEd
TE as a standalone message reader, and may be skipped if you are using
MsgEd TE in a Husky environemnt.

   If you are using Linux you can get the Linux distribution archive
which contains a pre-compiled binary.  If you are running any other Unix
(including FreeBSD, which due to a strange problem in the termios code
won't run the Linux binaries properly) you have to compile the source
code on your own (which usually is not much of a problem).  See
Compiling the Soruce Code, for more information on this.

   Please note that this manual does not necessarily cover installation
of the RPM archives of Msged created by other persons.  Some tips of the
following sections also apply when you install the RPM files, but others
don't Please refer to the documentation of those RPM archives for more
information.

   The following describes the installation of the files from the Linux
distribution archive.  If you have compiled MsgEd TE yourself, you will
find the files that are mentioned below in slightly different locations
(much in the doc/ subdirectory), but they are all present somewhere in
the source code archive as well, after you have done all build actions
as described in the appendix.

  1. Create a temporary working directory and change into it:

          ~ $ mkdir ~/msged-work
          ~ $ cd ~/msged-work

  2. Unzip the Linux distribution archive:

          ~/msged-work $ unzip ~/msgte63l.zip

  3. Fix the file permissions of the executable file:

          ~/msged-work $ chmod guo+x msged

  4. The executable can be either installed system-globally in
     '/usr/local/bin' or some other location, or locally in the '~/bin'
     subdirectory of your home directory:

          ~/msged-work $ su root
          Password:
          /home/someone/msged-work # cp msged /usr/local/bin
          /home/someone/msged-work # exit

  5. MsgEd TE by default searches it's configuration file in the current
     user's home directory, i.E. you need to copy the file 'sample.cfg'
     to '~/.msged':

          ~/msged-work $ cp sample.cfg ~/.msged

     If you are an administrator and want to install MsgEd TE
     system-globally, you can make MsgEd TE read a different
     configuration file either by re-compiling MsgEd TE and define the
     'MSGEDCFG' macro (this is also done automatically when you compile
     MsgEd TE with 'huskymak.cfg' - in this case the default location is
     'msged.cfg' in the 'etc' subdirectory that you defined in
     'huskymak.cfg').  Or you can simply create a script that calls the
     MsgEd TE binary with the '-c' command line option.  Specify the
     desired file name directly behind the '-c'.

     If you do this, you should, in the global configuration file, use a
     statement like 'include ~/.msged', so that each user can
     indivudally configure his own user name and other user specific
     settings.

  6. You have to copy some other files as well:

          ~/msged-work $ cp msghelp.dat ~/.msged.hlp
          ~/msged-work $ cp sample.tpl ~/.msged.tpl
          ~/msged-work $ cp scheme.004 ~/.msged.colors
          ~/msged-work $ cp readmaps.is1 ~/.msged.readmaps
          ~/msged-work $ cp writmaps.is1 ~/.msged.writmaps

     Note that this assumes that you are using ISO 8859-1 font encoding,
     as is usally the case on Western Unix systems.  If you use ISO
     8859-5 (Russian Unix vendor fonts), use 'readmaps.is5' and
     'writmaps.is5' instead, and if you use KOI8-R (Russian Linux and
     FreeBSD with e.g.  cronyx fonts), use 'readmaps.koi' and
     'writmaps.koi' instead.  See Using Special Characters like Umlauts or Cyrillics - The Charset Kludge,
     for
     more information on read and write map files, charset kludge lines,
     and character set recoding.

  7. Modify the configuration file '~/.msged' with your favourite text
     editor according to your needs.  See Configuration Reference,
     for detailed descriptions of each keyword
     that can be used in this file.

  8. You should now refer to the Unix specific release notes found below
     before trying to start MsgEd TE. They can save you from a lot of
     headaches ;-).

  9. Also, if you plan to share a message base between Non-Unix and Unix
     systems, you absolutely must read the chapter devoted to problems
     with shared message bases in heterogenous networks (see Using Fidonet software in network environments).

2.3.2 Installiong MsgEd TE as part of the Husky software
--------------------------------------------------------

If you are using Husky sofware, e.g.  the hpt tosser, you can also
install MsgEd TE as part of the Husky software.  In this case, you
should first follow the generic Husky installation instruction as found
in the file 'INSTALL' found in the 'huskybse' package.

   These instructions essentially boil down to getting the source code
packages of Huskybse, Smapi, Fidoconf and Msged (in this case, use the
Husky Msged distribution, 'msged-VERSION-src.tar.gz'), untar each file,
create a 'huskymak.cfg' based on the template found in the 'huskybse'
package, and then entering each of the subdirectories and typing 'make;
make install'.  But be sure to read the file in detail.

   After you have done so, you already have a working installation of
MsgEd TE. The command 'make install' entered in the MsgEd TE
subdirectory will already have taken care of installing a workable
default configuration file 'msged.cfg' into your Husky 'etc'
subdirectory.  This file is set up to read most of the necessary
settings for MsgEd TE from your 'fidoconfig' (the basic Husky
configuration file), so that once you have configured 'fidoconfig', you
can directly start using MsgEd TE.

   The only thing that you need to adjust is the codepage setting.
MsgEd TE is designed to do codepage translation, so that if your
computer uses a different characters set compared to what is commonly
encountered in fidonet echos, MsgEd TE will handle the job of
translating those messages to a character set your local terminal can
handle, and likewise translate text you type back so that it is stored
in a way other users can read it.  This is important for most
non-English languages (like German, French, Russian etc.).  If you use
this feature of MsgEd TE, you don't need to abuse your tosser to do
codepage translation any more.

   In order to select the proper codepage for your terminal, simply load
the MsgEd TE configuration file 'msged.cfg' into your favourite editor
and uncomment the line that is correct for your location.  The file is
commented, and further instructions can be found there.  See Using Special Characters like Umlauts or Cyrillics - The Charset Kludge,
for further information.

2.3.3 How Terminal I/O is handled on Unix
-----------------------------------------

MsgEd TE does neither use the curses library for most of its tasks, nor
does it make use of termcap or terminfo data bases.  The way that MsgEd
TE uses to create its full screen interface is to emit ANSI x3.64
character control sequences.  This is a common subset of control
sequences that is recognised, among others, by VT52, VT100, VT200 and
higher VTxxx terminals, by xterm, by the FreeBSD and the Linux console,
by the OS/2 telnet program, and others.  In order to enable special
features like color support based on the 'TERM' variable, you can use
'IF' constructs in the configuration file, as shown in the sample
configuration file.

   I have tested this on several Unix boxes and it worked remarkably
well.  For optimum results, you should use the 'scheme.004' color scheme
file found in the 'doc/' resp.  'samples/' subdirectory.  If you have
problems seeing the cursor in an xterm, you should start the xterm with
the option '-cr white'.

   If the display is corruped by system log daemon messages or similar,
you can at any time during program execution press <Ctrl>-<L> to redraw
the screen.

2.3.4 Special Notes on Keyboard Input
-------------------------------------

Due to the history of MsgEd TE, it heavily depends on typical PC
keyboard combinations like <Alt>-keys, combinations of <Ctrl> with
cursor keys, and so on.  Not all of them are easy to reflect on a Unix
console or in an xterm.

   As for the <Alt> keys (<Alt>-<X> and so on): MsgEd TE tries to
recognize all sorts of ways in which clients reflect <Alt> or <Meta> key
combinations.  If that still does not work on your console, besides
contacting me so that I can fix it, you can emulate an <Alt> key with
the <Esc> key: If you press and release the <Esc> key and then press a
letter, MsgEd TE will treat this as if you pressed <Alt> and that
letter.  However, you have to do this fast, because if no key is pressed
after the <Esc> for more than 0.2 seconds, MsgEd TE will assume that you
really meant to press a single <Esc> key, which is also frequently used
in MsgEd TE.

   Some other key combinations, like <Ctrl>-<Left> and so on, are not
reproducable in an xterm or on a Unix console at all.  Therefore, the
sample configuration file 'sample.cfg' contains a bunch of settings that
bind those functions that are by default bound to key combinations that
cannot be keyed on Unix to other key combinations.

   A nasty little problem might occur with the backspace key.  If, on
your system, the backspace key deletes the character _under_ the cursor
rather than the character on the left hand side of the cursor, you might
have to turn the 'BS127' switch on by adding 'Switch BS127 On' to your
configuration file.  The sample configuration file already contains
correct settings of the 'BS127' switch for some widespread Unix
consoles.

   Also, some xterm variants are really broken.  For example, I have
seen xterm's reporting code 127 for both Delete and Backspace, so you
will only be able to have either Backspace or Delete working.  Also,
some xterms doe not report codes for <Home> and <End> at all.  If you
have such an xterm, a tip would be to install rxvt and use msged in an
rxvt window instead of an xterm window.

   Entering national special characters like cyrillics, the German a
dieresis, or the french accented characters, is always a problem on
Unix.  If you want to do that with MsgEd TE, refer to the sample
configuration file and the documentation on the 'EnableSC' keyword
(see The 'EnableSC' keyword). The most easiest solution is
to put the 'EnableSC' keyword into the configuration file, but if you do
this, you will loose the <Alt> key combination functionality and will
have to emulate all <alt> keystorkes using the <ESC>-technique explained
above.

   If all this sounds very clumsy to you, perhaps you might volunteer to
create a more Unix-friendly keyboard layout for MsgEd TE. MsgEd TE
allows to freely redefine the keyboard layout.  See Redifining the Keyboard Bindings,
for more information on
this.  The first person that provides me with a really Unix-friendly set
of 'ReadKey' and 'EditKey' configuration statements will receive special
honour in this manual ...

2.3.5 Notes on Big Endian Hardware
----------------------------------

A large part of MsgEd TE and the underlying message API has been made
independent of little/big endian or structure packing issues.  This
means that in principle you can compile MsgEd TE on Alpha, PowerPC,
Sparc, or whatever exotic hardware and it will read and write exactly
the same binary format files like the Intel versions do.  You do not
even have to specify any special compile-time switch for compiling on
big endian hardware.

   However, some things do not yet work on big on non-Intel machines.
This includes:

   * the QuickBBS / Hudson Message Base routines

   This means that you presently must restrict yourself to a Squish
message base and a 'squish.cfg' configuration file if you want to run
MsgEd TE on big endian hardware.  This will be definietly fixed in a
future release.

2.3.6 Colors in the Unix version
--------------------------------

The UNIX verison of MsgEd TE, by default, presents itself in spartanic
black and white, because this is most compatible with any existing
terminal type.  Even if you use the 'Color' configuration keyword to
define custom colors, MsgEd TE still will transform all your color
definitions into a black and white equivalent.

   If you want to see MsgEd TE displayed in nice colors, you need to
enable extended ANSI color codes:

     Switch Colors On         # enable ANSI color codes
     Include ~/.msged.colors  # include the color configuration

   Of course you need a terminal that supports ANSI color codes.  Among
others, these are the Linux console (but not the Linux xterm!), the
FreeBSD console, the "color-xterm" or "xterm-color" or "nxterm" terminal
emulators, and the FreeBSD xterm.  You can use Conditionals to switch
the 'Colors' switch either on or off depending on the 'TERM' variable.
See Conditional Statements in the Configuration File,
for more information.

   The sample color scheme file 'color.004', that you copied to
'~/.msged.colors' during the installation process, contains color
settings with sensible values.  If, after adding the two lines from the
example above to your configuration file, parts of the screen or message
text are invisible, your terminal probably does not correctly support
ANSI color codes.

2.3.7 Case Sensitivity Problems
-------------------------------

By default, the Unix version of MsgEd TE behaves case-sensitively (like
any program running on a Unix file system), i.E. it uses all filenames
that it reads from configuration file exactly as they are spelled, and
all filenames that it creates (i.E. by appending filename extensions)
are created in lower case.

   This may lead to problems if you are sharing a message base between
the Unix versin of MsgEd and DOSish fidonet programs (i.E. fidonet
programms running on DOS, OS/2 or Windows, or simply a Windows or OS/2
fileserver that holds the message base).  Those programs tend to create
a real mess of filenames by mixing both lower-, upper- and mixed-case
spelling.  If you are running the Unix version of MsgEd in such an
environment, you should add the line

     Switch AdaptiveCase On

   as the first line in your configuration file.  This will effectivly
make MsgEd behave case-insensitive and should avoid most problems with
case sensitivity (see List of available switches).

2.4 Using MsgEd TE and other Fido software in networked environments
====================================================================

Sysops that have more than one computer often use network filesystems
like SMB (also known as Lan Manager, OS/2 peer services, the Windows
Network, et cetera), Novell or NFS to share their message base among
multiple computers.  Depending on your environment, there are some
problems buried into this approach that might cause hidden data loss and
might be unaware to you.  These problems are not specific to MsgEd TE,
but pertain to _any_ Fidonet software that uses the Squish, JAM or
Hudson message base format.  I feel enforced to devote a section of this
documentation to these problems to save you from encoutering severe
unexpected problems in your installation, especially as with the
addition of Linux or Unix to such a network, the problems tend to
increase dramatically.  - Another issue in such networks, case
sensitivity problems, as already been described above (see About Case Sensitivity Problems).

2.4.1 Description of the Problem: Why we need access synchronisation.
---------------------------------------------------------------------

The issue that we are talking about is access synchronisation.  In a
multi-tasking or networked environment, it happens that two or more
programs simultaneously access the message base.  Therefore, the Squish
Message API (this is the piece of software that all Fidonet programs
internally use to access the message base files) needs a way to ensure
that no other Fidonet program can gain access to the message base file
while itself is doing vital modifications on it.  Otherwise, data could
be screwed up or even lost if two programs would modify the same file
simultaneously.

   As long as your message base resides on a single computer, you do not
have a big problem with access synchronisation.  On OS/2, Windows NT and
DOS, access synchronisation is done via so called "record locks", which
works reliably.  On Linux and other Unix system, access control is
performed using so called "voluntary locks" by all programs that use the
'SMAPI' edition of the Squish Message API. This is not as safe as the
"record locks" feature.  Voluntary locks can only synchronize programs
that use them, i.E. programs that use the 'SMAPI', like MsgEd TE or hpt.
If you wish to use other Fidonet programs on Unix, you should ask the
author if he employs voluntary locks for access synchronisation.  If he
doesn't, do not use his software.

   Things get more complicated in a networked environment, because
there, not only different applications have to synchronize among
themselves, but different computers also have to be synchronized.  Or in
other words, the network file system that you use must correctly
propagate record and/or voluntary locks that have been set on one
computer to all other computers.

2.4.2 Access synchronisation on a Lan Manager (SMB) network.
------------------------------------------------------------

The SMB network protocol (also known as Lan Manager protocol, or OS/2
Peer Network, or Windows network), in principle, has support for
propagating record locks over the net.  Tests proved that it works quite
well in all systems except Linux (Unix).  This means that as long as
your network only has OS/2, Windows 3.11/95/NT and DOS (with 'SHARE.EXE'
loaded) systems, you do not have to worry about access synchronization.

   If you add a Linux box to a SMB network, things get more complicated.
For adding Linux to a SMB network, the Samba program is used.  The Samba
server (as of version 1.9.18.p8, which has been used for all tests
described below) has some support for record locks, but it has
restrictions.  The Samba server will not grant a program running on
computer A access to a message base file while a program running on
computer B has placed a record lock on this file.  However, it will
frankly grant a second program running on computer B access to this file
even while the first program running on computer B still has a lock on
this file.  This is a bug in the Samba server.  It hope it will get
fixed in further releases.  - A further shortcoming of the samba server
is that it does not convert voluntary locks placed on the Unix side into
record locks visible on the OS2/DOS/Windows side.  This means that any
OS/2 program, for example, can always access the message base file even
if a Linux program holds a lock on the file.

   Also, neither of the available samba clients (smbfs, rumba) have
support for propagating voluntary locks as record locks.

   The essence of this is: _You cannot savely share a message base
between Linux/Unix and Non-Unix systems using Samba_.  All you can do is
place the message base on a Samba server _if_ you assure that no other
Linux program accesses the message base, and that only OS/2, DOS and
Windows clients connect to the Samba server, and further more that on
those clients, only one program at a time tries to access the message
base (that is: a client with a multitasking OS that runs the tosser must
not have any editor installed, and you should never start up two editors
simultaneously on any client).

   This is harsh, but true.  Write mails to the programmers of Samba and
beg them to fix the problem with multiple programs on one clients, and
to implement the feature to convert voluntary locks on Unix side into
record locks on Non-Unix side.  Perhaps the situation will then change
in the future.

2.4.3 Access synchronisation on NFS
-----------------------------------

As for NFS, NFS itself does not support any kind of access
synchronization at all (!).  Access synchronization on NFS is performed
using an additional daemon software called 'rpc.lockd'.  So if you have
a NFS server that has a functional 'rpc.lockd' daemon _and_ all NFS
clients support the rpc.lockd protocol, then you can use NFS to share a
message base between multiple computers.  The bad news is that I have
not seen a working 'rpc.lockd' on either FreeBSD or Linux, and at least
the NFS client for OS/2 (as probably all other Non-Unix NFS clients)
does not support the rpc.lockd protocol.  If you want rpc.lockd to work,
you currently must use AIX or Digital Unix or maybe also some other
commercial Unix.  Not an option for the home user, I fear.

   The essence is: _You cannot use NFS to share a message base between
multiple computers_.

2.4.4 Access synchronization on Novell networks
-----------------------------------------------

Finally for Novell: I do not have any information on Novell networks.  I
suppose that they natively do support record locking, but I do not know
if or how the existing Novell clients for Linux/Unix do support it.

2.4.5 The essence of this section about network usage is:
---------------------------------------------------------

  1. You can savely share a message base among multiple computers in a
     Lan Manager (OS/2 Peer, Windows Network, SMB Network, ...)  network
     as long as no Linux or Unix computer is involved.

  2. You can place the message base on a Linux/Unix fileserver running
     samba only as long as no fidonet software is running on the file
     server, no Linux or Unix client is involved, and all other clients
     take care that only one Fidonet program at a time is being run.
     (This includes not only the tosser and maintenance programs, but
     also the mail editor itself).

  3. There currently is not any way to savely share a Squish, JAM or
     Hudson message base between computers if any of the computers is a
     Linux or Unix machine.  If you want to run Fido on the Linux box,
     the Linux box has to have its own messagebase (usually meaning that
     you must install it as sysop point or similar).

   If you do not obey to these three rules, you sooner or later will
experiences loss or corruption of mails and mail areas.  Sorry to say
so.

   But what if you absolutely have to share a message base between
multiple Linux/Unix or Linux/Unix and Non-Unix computers?  There is only
one solution to this problem: Use a message base format that does not
require access synchronisation.  While the Squish, JAM and Hudson
message base formats to require access synchronisation because they
store multiple mails in a single file, the Fido *.MSG (also known as
Opus) message base format does not have this restriction because each
mail is stored in a separate file.  So Fido *.MSG presently is the only
way to go if you want to share your message base between Linux/Unix and
Non-Unix or other Unix computers.

2.5 Known Bugs and Non-Features
===============================

This sections lists some shortcomings of the current release MsgEd TE
6.3.  Please do not complain to me about these problems, I am well aware
of the problems and will try to solve them in the future to the best of
my possibility.  (If, on the other hand, you want to fix these problems
on your own, go ahead and send me the changes you made.  They will be
greatly appreciated.).

   * The documentation is lacking a chapter that provides the beginner
     with a quick overview on how to use MsgEd TE

   * Version 7 nodelist lookup is not always working correctly (if two
     sysops accidentally have the same name, it simply yields by random
     the nodenumber of the one or the other, but does not let you select
     between the two of them) and is lacking a lot of features.  It is
     suggested that as long as things are like that, you instruct your
     nodelist compiler to generate a 'FIDOUSER.LST' listing file.  See
     The 'UserList' Keyword, for more information.

   * The Windows NT version does not allow entry of special characters
     by ASCII code using the <Alt>-NUMERIC KEYPAD - Method.  Also, under
     Windows 95, you must use <AltGr> to create special characters.
     <Ctrl>+<Alt> will not work.

   * On non Intel hardware, the routines for Fido and Hudson message
     bases as well as the routines for importing 'fastecho.cfg' will not
     work properly.

2.6 Support, Contacting the Author, Reporting Bugs, Contributing Code
=====================================================================

There are numerous reasons why you might wish to establish contact with
me, the author of MsgEd TE.

  1. You have decided to use MsgEd TE on a regular basis.  In this case,
     please do send me an e-mail at the address listed below.  How much
     time I will spend on developing MsgEd TE in the future will heavily
     depend on the number of mails I receive from users that tell me
     that they do use MsgEd TE.

  2. You have a general questions on how to configure or on how to use a
     certain feature of MsgEd TE. In other words, you need support.  In
     this case, you'd best post your question to one of the following
     echos:

     'MSGED_ECHO'
          The international MsgEd conference.  English is the preferred
          language here.
     'OS2BBS.GER'
          This German echo covers OS/2 Fidonet software.  I monitor it
          regularly.
     'OS2NET.BBS.GER'
          The equivalent of OS2.BBS.GER in the German OS/2 net.  I
          monitor it regularly.

     If you do not have access to any of these echos, you may of course
     also contact me via netmail or e-mail at the addresses listed
     below.

  3. You want to report a bug.  There are two sorts of bugs:

       a. Normal bugs.  You think that a certain function of MsgEd TE
          does not work as expected, e.g.  it is producing garbage, or
          doing strange things, or similar.  In this case, either post
          to the echos listed above, or contact me via netmail.  Please
          do supply all information that is necessary to understand your
          problem.

       b. Fatal bugs.  A fatal bug occurs if MsgEd TE crashes.
          Depending on your operating system, the symptom might be a
          core dump, or a SYS 3175, or a general protection fault, or a
          system lockup, or a spontaneous reboot.  I do consider a crash
          untolerable.  No matter how stupid things you do, you should
          not be able to crash MsgEd TE.

          If you are running the precompiled Linux binary, reporting a
          fatal bug is exceptionally easy.  If you experience a crash,
          simply send me the 'core' file that has been generated.  You
          do not need to try to reproduce it or write extensive
          descriptions.  Simply send the 'core' file, and in most
          circumstances I will be able to fix the problem.

          If you are running any other binary version (like OS/2, DOS,
          Windows), you will not get a core file on a crash.  (On OS/2,
          you can write me a mail and ask me for sending you a debugging
          executable.  This will require the EMX runtime, but generate
          'core' files just like the Unix version does.  On DOS and
          windows, you do not have this option).  Write down as much
          information as you can, try to find a way to reproduce the
          crash and contact me at the addresses below.

  4. You want to contribute to MsgEd TE. If you are a programmer and
     have fixed a problem in MsgEd TE on your own, please submit your
     changes to me.  The preferred way for doing so is to send me a
     difference file in GNU diff format.  Your work will be highly
     appreceated and honored in an appropriate place.  If you want to
     regularly work on MsgEd TE, we also have a CVS server online that
     you can have access to if you like.

     If you want to write a new feature for MsgEd TE, please contact me
     beforehand to avoid that we do duplicate work.  Again, I will
     appreciate and honor eny efforts done by you.  Please note that for
     writing a MsgEd TE enhancement, you should be familiar with C.
     Also, MsgEd TE uses a special indentaion style throughout the
     source code, that I would like you to adhere to.

   So here are my addresses if you want to get in contact with me:

   * Fidonet: Tobias Ernst  2:2476/418

   * e-mail: tobi@bland.fido.de

   * Telefax: +49 711 5000184

3 A quick tour through MsgEd TE
*******************************

This chapter will be supplied in a future revision of this document.  It
will provide an introduction for beginners on using MsgEd TE.

   As long as this chapter is not provided, you must help yourself using
the online help.  Nearly everywhere in MsgEd TE, you can press 'Alt'-'H'
to get a somewhat context sensitive help screen.

4 Advanced Concepts in MsgEd TE
*******************************

After you have managed to perform basic functions with MsgEd TE, like
reading messages, entering new messages, and replying to messages, this
chapter will introduce you into some advanced concepts in MsgEd TE that
deserve special attention, like how to use a Fidonet-Internet gateway,
how to use eight bit character sets, and similar.

4.1 Exporting Mails to Text Files or to the Printer
===================================================

This section tells you how to export mail messages.  Exporting in this
sense includes simply saving the message text into a file, but also
printing the message or feeding it into a pipe.

4.1.1 Saving message text into a plain text file
------------------------------------------------

In order to export the message text into a plain text file, you have to
invoke the 'export' reader or editor function.  If you did not change
the keyboard binding, this is done by pressing <Alt>-<W>.  You will be
shown a menu that looks like this:

     +-----------------------------------------+
     |  Write to File                          |
     |  Print                                  |
     |  Pipe into external Program             |
     |  Cancel                                 |
     +-----------------------------------------+

   Select the first entry, 'Write to File'.  You then will be shown a
dialog box where you can select a file name.  You can use the cursor
keys to navigate through the directory structure and select a file to be
overwritten.  If you want to create a new file, press <Tab> to get to
the 'File:' entry box and enter a new file name.

   After that, you will see a menu that asks you how the text should be
exported:

     +-----------------------------------------+
     |  As Plain Text                          |
     |  Binary (for re-importing into Msged)   |
     |  Cancel                                 |
     +-----------------------------------------+

   Normally you will want to select 'As Plain Text'.  This produces a
nice message header and nicely wrapped paragraphcs.  This format is
useful for reading with normal editors, for printing etc.  The 'Binary'
format (formerly known as 'Msged Format') will not write any headers,
and it will not break the paragraphs into lines.  This format is useful
if you intend to re-import the text into MsgEd TE or into another
application that works paragraph-oriented rather than line-oriented
(like a word processor).

   Note that this dialog box will not be shown if you try to export text
while you are _editing_ a message; in this case, the plain text mode
will always be used.

   When you have made your selection, the file will be written.  If you
selected a file that already exists.  you will see an additional dialog
box that asks if you want to append to the file, overwrite it, or cancel
the operation.

4.1.2 Printing a message
------------------------

In order to print a message, press <Alt>-<W>.  Select 'Print'.  That's
all about it, the message will be printed!  But how did MsgEd TE know
how to find your printer?  Well, on OS/2, DOS and Windows it just uses
the standard printer, known as 'PRN', which is usually connected to the
first parallel port.  On UNIX, it calls the 'lpr' command with no
special options, which will lead to the default queue being used.

   If you want to use a different printer for printing mails - for
example, you might have two printers, one for high quality office
correspondance, and one for quick printouts, and want to use the latter
one for printing Fidonet messages -, you can use the 'Printer' keyword
in the MsgEd TE configuration file to select a different printer.  See
The 'Printer' Configuration Keyword, for more information.

4.1.3 Piping message text into external programs
------------------------------------------------

What does "piping" mean?  This feature works as follows: MsgEd TE will
start an external command or program and feed the mail text into this
command's standard input stream.  This feature originally comes from the
Unix world.  For example, you could pipe the message text into a Perl or
Rexx script that analyses the text and does something with it (for
example, the script could store the text in a cooking recipe database).
The piping feature does not work in all versions of MsgEd TE. It only
works in the UNIX version and in those non-UNIX versions that have been
compiled with a GNU gcc compiler.

   In order to pipe message text into an external program, type
<Alt>-<W> and select 'Pipe into external program'.  You will then see a
dialog box that prompts you for a command to execute.  You can enter any
commands or programs in exactly the way as you would enter them at the
shell prompt of your operating system.  MsgEd TE will execute exactly
this command and provide the message contents as standard input to the
command.  For example, you could enter

     cat - >test.txt

   This of course is a stupid example, because the same result could be
achieved by selecting 'Write to File' and specifying 'text.txt' as file
name, but it shows how the mechanism works.

   After that, you will be prompted for the export mode (plain text or
binary).  See Saving message text into a plain text file,
for information on what this means.

4.2 Configuring and Using Message Area Groups.
==============================================

MsgEd TE 6.3 supports forming message areas into message area groups.
The main appliance of this feature is to ease arealist navigation - you
can have the areas sorted by groups, MsgEd TE can display separators
between the single groups, or you can make the area list display only
members of a certain group, and switch between the groups using hotkeys.
But you can also use the group feature to select different usernames or
template files based on which area you are writing in.

   The following subsections will first tell you how to set up groups
and assign areas to those groups, and will then go on and tell you how
you can make use of groups to ease your life with MsgEd TE.

4.2.1 Grouping Basics
---------------------

In MsgEd TE, a group is identified by a _group name_.  A group name can
be any string and may include spaces etc.  The group name is not case
sensitive, however.  MsgEd TE has no fundamental limit on the number of
groups that can be defined.

   Each message area can only be member of one group.  This means that
if you assign an area twice to different groups, it will only be a
member of the group that it has been last added.

4.2.2 Reading Group Definitions from the Tosser Configuration File
------------------------------------------------------------------

Setting up groups is very easy if you read all your area definitions
form a tosser configuration file (see Reading a Tosser Configuration File (Areafile)).
If your tosser stores group
information and MsgEd TE supports reading it, then MsgEd TE will
automatically take over the tosser's group definitions.  This is
currently supported for 'Fidoconfig' and 'Fastecho' type areafiles.

   For 'Fidoconfig', the names of the MsgEd TE area groups will be the
same names as the 'Fidoconfig' group names.  However, be aware that
fidoconfig group names are case sensitive, while MsgEd TE group names
are not.  So, members of two different groups with names that, in the
fidoconfig file, only differ in upper/lower case spelling will be
members of the same group in MsgEd TE.

   For 'Fastecho', the names of the MsgEd TE area groups will be the
names that you have defined in 'fesetup' in the 'System/Group names'
menu.  If you did not set up group names for some or all areas, those
areas will have a name of 'Fastecho Group X', where 'X' is the letter
that is used to identify the group in Fastecho.

   The easiest way to find out about which group names MsgEd TE has
created based on the areafile information is to press <Ctrl>-<G> in the
message area list.  This will show a menu of all groups.

   If you do _not_ want to read any sort of group setup from the tosser
configuration file, then you can turn off the 'UseTosserGroup' switch by
adding 'Switch UserTosserGroup Off' to your MsgEd TE configuration file.
This has to be done before the 'Areafile' statement to which this
setting should apply.

4.2.3 Manually Defining and Assigning Groups
--------------------------------------------

If MsgEd TE is not able to read group information from your 'Areafile',
or if you want to fine-tune that information, or also if you are
defining some or all areas manually in your MsgEd TE configuration file.
This is done using the 'Group' keyword.  Here is it's syntax:

Syntax:
     'Group "GROUPNAME" [PATTERN]'
Example:
     'Group "OS/2 Echos" *OS2*'

   The GROUPNAME parameter should be a string that uniquely identifies
this group.  It may contain spaces if you enclose it in quotation marks,
as shown above.

   The optional PATTERN argument specifies a wildcard pattern.  The
pattern may contain any number of stars and questionmarks, and works
like a wildcard on an OS/2 or Win32 command line.  This pattern is
matched against the area _tag_ (like for example OS2PROG), and all
matching areas will be added to that group.

   If the PATTERN argument is omitted, the group will be defined, but no
areas will be added to it yet.

   There can only be one PATTERN argument, but this is not a problem, as
the 'Group' keyword is cumulative.  This means that if you write
something like

     Group "Echos in German Language" *.GER
     Group "Echos in German Language" *.024
     Group "Echos in German Language" *.AUS

   then the group will contain all areas that match at least one of the
given patterns.

   However, each one area can only be member of a single group.  This
means that if you add an area to a group that has previously already
been added to a different group, that group will lose this area.
Example:

     Group "German Echos" *.GER
     Group "Linux Echos" *LINUX*

   Here, the 'LINUX.GER' echo area would be in the 'Linux Echos' group,
and not in the 'German Echos' group.

   You can put 'Group' statements anywhere in your configuration file.
Even if an area is defined after a 'Group' statement, it will still be
added to that group if the wildcard matches.  However, the relative
ordering of the 'Group' file statements may be important: Msged will
display groups (when areas are sorted by group, or in the group menu,
see later) in the order of first mention in the MsgEd TE configuration
file.  A group is _mentioned_ either when it's name first appears in a
'Group' statement, or when it is automatically defined when reading an
areafile.

   For example, let's assume you are using fidoconfig and get all group
information from the areafile.  But you want to put some groups that
attract your special interest into a group named 'Interesting Groups'.
Now you have to decide if you want to put see this group before all
other groups in the area list, or if you want to see it after all other
groups.  In the first case, write

     Group "Interesting Groups"
     Areafile fidoconfig
     Group "Interesting Groups" *LINUX* *OS2*

   In the second case, omit the definition before the 'Areafile'
statement and simply write

     Areafile fidoconfig
     Group "Interesting Groups" *LINUX* *OS2*

4.2.4 Group Functions in the Message Area List
----------------------------------------------

When you have set up groups, the message area list will make navigation
with many areas a lot easier.

4.2.4.1 Sorting Areas by Group
..............................

The most basic group feature of the area list is that it can display
areas grou-sorted, i.E. first all areas of the first group, then all
areas of the second group, and so on.  To achieve this, use the
'SortAreas' keyword as follows:

     SortAreas G

   Most probably, you will further want to sort the area inside the
group.  If, for example, you want to sort all netmail areas to the
beginning of each group, and then sort the areas alphabetically by
description, you would use

     SortAreas GND

   Once you have activated sorting areas by group, MsgEd TE will draw
horizontal bars between the groups to visually separate them.  If you do
not like this feature, you can disable it using:

     Switch GroupSeparators Off

4.2.4.2 Displaying only a certain group
.......................................

You can press <Ctrl>-<G> in the arealist and get a list of all groups
that have been defined.  When you select any of those groups, the area
list will then only display areas that are member of this group.
Further more, all other MsgEd TE functions, like area scanning, personal
mail scan, switching to the next/previous area in message reading mode,
etc., will also only work on those groups.  MsgEd TE will effectively
behave as if only those groups had been defined.  (An exception is when
moving/copying/forwarding mail or replying to a different area: there
you will still get a list of all areas).

   You can then again use the <Ctrl>-<G> menu or press the short cut
<Alt>-<0> to return to the display of all defined areas.  You can also
use the shortuts <Alt>-<1> ... <Alt>-<9> to quickly switch between the
first nine groups.

4.2.5 Group Default Templates and Usernames
-------------------------------------------

This feature is described in the documentation of the 'GroupSettings'
keyword.  See The 'GroupSettings' Keyword.

4.3 Using Special Characters like Umlauts or Cyrillics - The Charset Kludge
===========================================================================

Languages other than English often use special characters besides the
normal alphabet.  Examples are the accented letters in French or the
umlauts in German, or the cyrillic alphabet used in Russia and
elsewhere.  IBM block graphics are also called special characters.  This
section will describe what measures have to be taken in order to be able
to transmit special characters via Fidonet.

4.3.1 What is so special about special characters?
--------------------------------------------------

In order to be able to exchange text between computers, it was necessary
to agree on a scheme on how to encode letters into numbers, the so
called "character set".  The standard character set for transferring
text between a huge variety of computer systems is the ASCII character
set.  Unfortunately, the ASCII character set is only 7 bit wide and does
not leave room for national special characters.

   In order to be able to transfer special characters like accents and
umlauts, it was therefore necessary to use eight bit wide extended
character sets that defines how special characters are encoded.

   In contrast to the standard 7 bit ASCII character set, which is a
single character set used by nearly all computer systems, there exist
several pseudo-standard character sets that are 8 bits wide.  All of
them contain ASCII as an subset, but they all differ in how they encode
special characters.  DOS and OS/2 computers typically use the IBM PC
character set, but even there, dependent on what country you live in,
there are several different code pages of the IBM PC character set.
Unix computers and the Amiga in the western world typically use the
ISO8859-1 character set, also known as Latin-1.  Windows uses IBM PC for
console applications, but ISO8859 for graphical applications.  The
Macintosh uses the Macintosh character set.  In Russia, there is a
similiar problems: There exist four ways of encoding cyrillics, namedly
the KOI8-R fonts, the ISO 8859-5 fonts, the codepage 866 of the IBM PC
character set, and Windows Codepage 1251.

   The consequence of this is clear: If you write a text on a Unix or
Windows computer using special characters like accented letters or
umlauts, you cannot expect it to be properly displayed on a DOS or OS/2
computer, and vice versa, unless special measures are taken.

4.3.2 How has this problem been solved in Fidonet?
--------------------------------------------------

This issue of special characters has been a problem for Fidonet in the
past, but it has been solved by the Fidonet standard FSC 0054 and its
successor, FSP 1013, so that you can now safely use special characters
in Fidonet mail _if_ your message editor supports FSC 0054.  FSC 0054
basically works like this:

   Every Fidonet editor that wants to be compatible with FSC 0054 must
be delivered along with built-in or external character translation
tables that tell the editor how it can convert text that contains
special characters from one character set to another.

   When composing a message using a FSC 0054 compliant editor, you have
two choices: By default, the editor allows you to enter the full range
of special characters that your computer supports, but when saving the
message, the editor will use its character translation tables and
convert your text into a 7 bit clean representation that can be
displayed on _all_ computers even if they don't support FSC 0054.  For
example, a German sharp s would be converted into double s, an e with
accent would be converted into an e without accent, a cyrillic soft a
would be converted to its transliteration "ya", and so on.  This is the
maximum compatibility mode: It offers you the comfort of being able to
write text just as you would in a letter, using all special characters
that your language requries, but your mails will still be properly
displayed on all computers.  This might be an option for German users,
but it certainly is not for Russian users, as the transliteration of
cyrillic letters is not particularly easy to read.

   The other (better) possibility is that your editor leaves the special
characters that you typed in as is, or converts them to a common
transport charset (like codepage 866 in Russia, or codepage 850 in
Europe), but inserts a hidden kludge line, from here on referred to as
the "charset kludge", into the message, that designates which character
the mails stored in the message are composed in.  When your message is
read on another computer by a Fidonet message reader that also supports
FSC 0054, the message reader will see the charset kludge in your mail
and then use its charset translation tables to convert your message into
the character set that this computer uses.  The consequence is that even
if your computer and the computer of the receiver use different
character sets, everything that you typed in will look just the same on
the receiver's screen than on yours, including all special characters
that have been typed.

   A particular note to all Russian users of Msged: In Russia, it has
been commonly agreed on to transport all Fidonet mails in Codepage 866.
So you might ask what you do need a charset kludge for - could not just
MsgEd TE recode everything to codepage 866 when writing a mail and
importing from codepage 866 when reading a mail, and not care about that
kludge line?  But imagine a user in Germany who wants to read Russian
echomails.  His mail editor needs a way to know if a mail that it is
about to display contains German special letters, or if it contains
Russian ones.  (Or vice versa, imagine a Russian person who wants to
leran the German or English language).  Only if Russian mails contain
the proper charset kludge ('CP866'), it will be able to display both
languages correctly.

4.3.3 How do I configure MsgEd TE to support FSC 0054?
------------------------------------------------------

MsgEd TE fully supports FSC 0054.  It uses two binary files, a read map
and a write map.  The read map contains tables that define how to
convert all the known transport charsets to the local charset (this even
includes transliteration tables for displaying Russian text on Western
computers!), and similarly, the write map contains tables that define
how to convert the local character set to any allowed transport
character sets.

   The default name of the character set translation files are
'READMAPS.DAT' and 'WRITMAPS.DAT', and they are searched in the current
working directory when MsgEd TE starts.  (On Unix, the exact name and
location of these files are determined by the defaults you put into the
makefile, or '~/.msged.readmaps' and '~/msged.writmaps' for the
precompiled binaries, while the RPM distribution might use yet other
locations).  You can change the file names and location to use with the
'Readmap' and 'Writemap' keywords (see The Readmap and Writemap Keywords).

   The binary release of MsgEd TE ships with a variety of read maps and
write maps.  For each character set or codepage, there is a pair of read
map and write map file which contains tables to convert from any charset
set to this codepage and back.

   Now all you need to do in order to configure 'MSGED' to properly
encode and decode all sorts of special characters is to determine which
character set or codepage your computer is using, and copy the
corresponding pair of read map and write map file to the default name
and location as noted above, or use the 'Readmap' and 'Writemap'
keywords to point Msged to the correct pair of read map and write map
files.

   The following tables lists all read map and write map files that
MsgEd TE currently includes:

     Filename     | Type of font / character set / computer
     -------------------------------------------------------------------------
     READMAPS.850 | Any DOS or OS/2 computer, or Windows computer with the OEM
     WRITMAPS.850 | console fonts, that uses Codepage 850. This applies to most
                  | computers in Western Europe. Some badly configured Linux
                  | systems might also use this code page.
     -------------------------------------------------------------------------
     READMAPS.437 | Any DOS or OS/2 computer, or Windows computer with the OEM
     WRITMAPS.437 | fonts, that uses the standard codepage 437. This applies to
                  | most US-American installations, and also to some European
                  | ones that use Codepage 850 because it has some more IBM
                  | graphics characters.
     -------------------------------------------------------------------------
     READMAPS.865 | This is the "nordic" IBM Codepage 865 used in some
     WRITMAPS.865 | Northern European countries.
     -------------------------------------------------------------------------
     READMAPS.866 | This is IBM Codepage 866, used by DOS and OS/2 or Windows
     WRITMAPS.866 | text mode applications in Russia.
     -------------------------------------------------------------------------
     READMAPS.UKR | This is IBM Codepage 1125, used by some DOS and OS/2 or
     WRITMAPS.UKR | Windows installations for text mode applications in
                  | Ukraine and Belorussia.
     -------------------------------------------------------------------------
     READMAPS.IS1 | This is ISO 8859-1. It is the standard encoding for
     WRITMAPS.IS1 | X11 fonts and console fonts on Linux and Unix systems
                  | in Western Europe.
     -------------------------------------------------------------------------
     READMAPS.IS5 | This is ISO 8859-5. It is the encoding used for vendor
     WRITMAPS.IS5 | shipped additional fonts in Russian editions of commercial
                  | Unix systems.
     -------------------------------------------------------------------------
     READMAPS.KOI | This is KOI8-R, used by the cyrillic cronyx font set,
     WRITMAPS.KOI | which is in use in almost any Russian Linux or FreeBSD
                  | installation, and can of course also be installed on
                  | commercial Unix systems.
     -------------------------------------------------------------------------

   So, enabling character set translation is easy, but you have to pay
attention to use the _correct_ pair of read map and write map file.

   If you have the source code distribution of MsgEd TE, the 'bin'
subdiretory contains 'readmaps.dat' and 'writmaps.dat' files for all
supported code pages.  If you are compiling directly out of CVS, you can
go to the 'maps' subdirectory and compile and use the 'makemaps' utiltiy
to build the proper character set maps.

   The following table lists all level 2 transport character sets that
MsgEd TE understands when it finds them in mails (meaning all character
sets that are defined in the 'READMAPS.DAT' and 'WRITMAPS.DAT' files):

     @CHRS-Kludge: | Conventional Name:    | Used by these computers:
     --------------+-----------------------+---------------------------
     LATIN-1 2     | ISO 8859-1            | Western Unix, Amiga, Windows GUI
     MAC 2         | MAC                   | Macintosh computers
     CP437 2       | IBM PC, Codepage 437  | DOS, OS/2, Windows console
     CP850 2       | IBM PC, Codepage 850  | International / European versions
                   |                       |   of DOS, OS/2 and Windows.
     CP865 2       | IBM PC, Codepage 865  | Nordic versions of DOS, OS/2, Win
     CP866 2       | IBM PC, Codepage 866  | Russian OS/2, DOS, Windows
     CP1125 2      | IBM PC, Codepage 1125 | Ukrainian and Belorussian
                   |                       |  OS/2, DOS, Windows

   Apart from that, MsgEd TE also understands the (outdated) '@CODEPAGE'
kludge line.

   Most 'READMAPS.DAT' and 'WRITMAPS.DAT' files define some more charset
names, like 'KOI8-R', 'ISO-5', and so on, but these kludge lines are not
intended for message transport, but only as an internal name for MsgEd
TE to see what charset your computer uses locally.

   There are quite some other (though incorrect or obsolete) charset
kludges in widespread use in fidonet.  The most prominent one is 'IBMPC
2'.  Originaly, 'IBMPC 2' meant the DOS codepage 437, but in the
meantime, it has been used to simply denote the codepage that a "IBM"
computer is typically using.  This means that if a Russian user has a
kludge that says 'IBMPC 2', he probably means 'CP866 2', while if a
German user has 'IBMPC 2', he probably means 'CP850 2'.

   Msged supports use of those outdated or incorrect charset kludges
with the 'CharsetAlias' command.  A Western European user should
probably put the following comand into his config file:

     CharsetAlias IBMPC CP850

   An American user might prefer

     CharsetAlias IBMPC CP437

   A Russian user needs a whole bunch of commands:

     CharsetAlias IBMPC CP866
     CharsetAlias +7_FIDO CP866
     CharsetAlias RUFIDO CP866

   Once FSC 0054 is activated, MsgEd TE will be able to correctly
display all mails that have been created with one of the characters sets
listed above, as long as they contain the proper charset kludge line.

   Unfortunately, quite some still don't - do tell their authors to
correct their setup!  Until those users fix their editors, MsgEd TE
offers you two options.  The one is the 'AssumeCharset' keyword, which
sets a default character set kludge name for mails that do not contain
such a kludge line.  See The 'AssumeCharset' keyword,
for more information.  The other option is the <Alt>-<T> key combination
that you can press in message reading mode.  You will get a menu that
allows you to select from all supported codepages and character sets.
You can use this menu if you must read a mail that contains a wrong
character set kludge line, or one that does not contain such a kludge
and does not meet the assumption you made with 'AssumeCharset'.  See
Miscellaneous other Reader Functions, for more
information.

   Now that you have set up MsgEd TE so far, you are able to read almost
all mails with correct 8 bit characters, and mails that you write
yourself may also contain any special characters, but MsgEd TE will
convert them into a 7 bit ASCII character set when you save them.

   If you want to retain special characters in your mail by adding a
charset kludge (which is highly recommended), you have to do two things.
First, you have to define which character set to use for saving your
mails .  See The 'OutputCharset' Keyword, for
information on how to do this.  In most cases, you will simply want to
add the following line to your configuration file:

     OutputCharset IBMPC

   Although it would be better to use 'CP437', 'CP850', 'CP865' or
'CP866' (depending on your location), most readers still don't support
this, so using 'IBMPC' might be better for the moment.  If you use
'IBMPC', MsgEd TE will emit an addtional 'CODEPAGE' kludge line to make
clear which codepage you actually are using.

   Exporting in 'IBMPC' charset will even work on a Linux box, just if
you were wondering.

   Then, you have to tell MsgEd TE in which areas it is allowable to
send mails with special characters and charset kludges.  MsgEd TE will
only write special characters into areas that have the '8' flag set.  If
you are importing your message area configuration from a tosser
configuration file, you can simply put the following line to the
beginning of your configuration file:

     AreaFileFlags 8

   (If you already have an 'AreaFileFlags' statement, just add the '8'
character to its parameters).  See The 'AreaFileFlags' Keyword,
for more information.

   This will allow MsgEd TE to use special characters in conjunction
with a charset kludge in all message areas imported from a tosser
configuration file.

   If you only want to enable special characters for a few areas, you
have to define these areas manually, giving each of them the '8' flag
individually.  The same applies if you have to define your areas
manually for other reasons.  See Manual Area Definition,
for more information on this.

4.4 Internet Gateways - Using MsgEd TE for e-mail and newsgroups
================================================================

MsgEd TE has built-in support for Fidonet to Internet Gateways, allowing
for seemless coexistence of Fidonet mail and Internet mail.  When you
use MsgEd TE to talk to your Internet gateway, you do not even have to
know about all the nasty details of gateway addressing - MsgEd TE does
the job for you.  This makes MsgEd TE the ideal choice as an editor to
give to new users that want instant e-mail access without having to care
for klumsy gateway addressing rules.

4.4.1 How to properly address an Internet Gateway
-------------------------------------------------

There are various ways of designing Fidonet to Internet gateways.  The
most common is the "Gatebau" standard, which among others is implemented
in the excellent gateway software Fidogate by Martin Junius.  You can
find more information about Fidogate at <http://www.fido.de>.  Various
other gateway programs more or less conform to this standard as well.

   Addressing a Gatebau compatible gateway works like this: The gateway
has its own node- or point number.  When you wish to write an e-mail
using a standard Fidonet editor, you have to address your netmail to
this gateway node number.  As receiver's name, you can use the real name
of the receiver, or you can use 'UUCP', if the real name of the receiver
is unknown.  Some not-so-smart gateway software requires that you always
use 'UUCP' as receiver's name.  - In order to tell the gateway the
e-mail address that the mail should be delivered to, the very first line
of your message must contain the e-mail address of the receiver,
preceded by 'To:'.  The e-mail address can be specified in three
different forms.  Here are three possible first lines of
gateway-addressed netmails:

     To: juser@somedomain.com
     To: juser@somedomain.com (Joe User)
     To: Joe User <juser@somedomain.com>

   The last of these forms is not supported by some older gateway
software.  - The 'To:'-line must be followed by an empty line, and then
you can begin with your message text.  A complete e-mail addressed to an
internet gateway at '2:99/999.0' could look this:

     ==========Message Header==================
     From:    Bill Sysop, 2:99/123.0
     To:      UUCP, 2:99/999.0
     Subject: This is a test e-mail
     ==========Message Body====================
     To: juser@somedomain.com (Joe User)

     Hello Joe!

     This is a test.

     Regards,
     Bill.

   Receiving e-mail from the gateway is similar: You receive an e-mail
from the gateway node or point, and in the mail boday, the first line
will contain a 'From:'-line which designates the e-mail address the mail
was from.  Sometins, the 'From:'-line is followed by a 'Reply-to:' line,
which indicates that the sender wishes to receive any answers at the
e-mail address shown in the 'Reply-to:'-line rather than at the e-mail
address shown in the 'From:'-line.  Here is an example:

     ==========Message Header========================
     From:    Joe User, 2:99/999.0
     To:      Bill Sysop, 2:99/123.0
     Subject: Re: This is a test e-mail
     ==========Message Body==========================
     From: Joe User <joe@some-machine.somedomain.com>
     Reply-To: Joe User <juser@somedomain.com>

     Hello Bill!

     I received your test e-mail without problems.

     Regards,
     Joe.

   This interface works with every stone-age Fidonet editor, but it is
clumsy.  When replying to an e-mail that came through a gateway, for
example, you would have to remember the sender's e-mail address, and
when writing the reply, you would have to manually insert a correct
'To:'-line, just to name one problem.

   Therefore, MsgEd TE can do the work for you.  If properly configured,
MsgEd TE will to the job of interpreting and inserting 'From:',
'Reply-To:' and 'To:' lines.  With gateway support turned on, writing an
e-mail with MsgEd TE is just as easy as writing a fidonet netmail.  In
the following, we will see how to configure MsgEd TE for gateway support
and how to use these features.

4.4.2 How to configure MsgEd TE to use an Internet Gateway
----------------------------------------------------------

In order to do the gateway addressing stuff for you, MsgEd TE needs to
know which gateway you wish to use for sending e-mail.  MsgEd TE will
recognise gated e-mail no matter which gate it comes from, but it must
be told which gateway can be used to send replies and new e-mail,
because most gateways require that you pay some sort of registration fee
before you can use them for sending mail.

   The 'UUCP' keyword is used to tell MsgEd TE the node number of your
internet gateway (see The 'UUCP' Keyword). It simply takes this
node numer as argument.  Example:

     UUCP 242:4900/99.0

   The 'UucpName' keyword is used to tell MsgEd TE the name that must be
in the receiver's name field in a netmail sent to the gateway.  For
older gateways, you should use

     UucpName UUCP

   If your gateway is running Fidogate or another more advanced gateway
program, you should use

     UucpName *

   This enables real name mode, i.E., mail addressed to the gateway will
have the real name of the receiver in the receiver's name field instead
of the pseudo name 'UUCP'.  The advantage of this is that your message
templates will generate strings like 'Hello Joe!' instead of 'Hello
UUCP!' ...

   If you want to insert Reply-To lines into outgoing mail, and if your
gateway supports them, of course, you might also wish to use the
'UucpReplyTo' keyword.  Reply-To lines are used to tell the receiver's
software that replys should be directed to an alternative e-mail account
instead of the one you are mailing from.  See The 'UucpReplyTo' Keyword,
for more information.

   There is yet another task to be done before you can use the gateway
addressing features of MsgEd TE. For historical reasons, the gateway
addressing features are disabled by default, and you have to enable them
on a per-area basis.

   Unless you have special needs, it is best to enable the gateway
addressing features for _all_ areas, because a lot of fidonet areas are
gated to internet somewhere.  You do this by adding the 'u' flag to
every area that you have manually defined in the MsgEd TE configuration
file, and by specifying 'AreaFileFlags u' at the beginning of the
configuration file in order to set the 'u' flag for all area definitions
that are imported from your tosser configuration file.  See Defining Message Areas,
for more information on message area
flags.

4.4.3 Using Internet Gateays with MsgEd TE
------------------------------------------

Once you have configured MsgEd TE with the data of the gateways that you
wish to use and turned on the 'u' flag for all areas, writing e-mail is
very simple.  When entereing a message, you just have to enter a valid
e-mail address instead of a user name.  If MsgEd TE recognises a valid
e-mail address, it will not look up this name in the nodelist or prompt
you for a node number, but it will automatically address the mail to the
configured gateway nodenumber and generate the necessary 'To:'-line.
The 'To:'-line will not even be shown to you, unless you have the
'ShowNotes' switch on (see List of available switches).

   Reading e-mail that comes from any internet gateway is equally
simple.  If the 'u' flag is set for an area, MsgEd TE will automatically
recognise 'From:' and 'Reply-To:' lines and hide them from you.  Instead
of displaying the gateway pseudo user name and node numer, it will
display the e-mail address that the mail is coming from in the message
header field.

   MsgEd TE also supports newsgroups, i.E. echomail areas that are being
received from an internet gateway, as long as the 'u' flag ist turned on
for these areas.  In newsgroups, MsgEd TE will handle mails (postings)
just as in netmail areas, i.E. it will display the sender's e-mail
address in the message header.  If you do a private reply (i.E. a reply
to a netmail area using <Alt>-<N>), the e-mail reply will correctly be
addressed to your favorite internet gateway.

5 MsgEd TE Keyboard Reference
*****************************

This chapter gives a complete listing of available keystroke
combinations in MsgEd TE. After that, you will find instructions on how
you can redefine the keyboard to suit your preferences.

   Please note: MsgEd TE traditionally uses a DOS-ish PC keyboard with
<Alt> key and function keys.  Unix users should refer to the Unix
installation notes before reading this chapter (see Notes on UNIX keyboard input).

5.1 Keystroke Combinations in the Arealist Screen
=================================================

The arealist screen is the screen that normally shows up right after you
start MsgEd TE. It lists all areas that you have defined in the
configuration file (see Defining Message Areas).

   The arealist screen can be navigated with the cursor keys, or you can
also navigate through the area list by simply typing in the first few
letters of the area name that you are looking for.

   In addition, the following commands are available in the arealist
screen:

<Right>
<Enter>
     Enter the selected area

<Alt>-<X>
     Quit MsgEd TE

<*>
<Alt>-<T>
     Scan all message areas for new messages.  Depending on your setup,
     you will have to do this on program startup.  The scan process can
     be interrupted by pressing <ESC>.

<#>
<Alt>-<S>
     Scan message areas for new messages, but only scan areas that have
     not been scanned perviously.  Areas that have not yet been scanned
     for messages are listed with dashes instead of message numbers in
     the area list.

<Ctrl>-<G>
     Select a group.  Display a menu of all message area groups.
     Selecting any message are group here will result in the aralist
     only displaying areas that are member of this particular group,
     until you use <Ctrl>-<G> again to select another group, or to
     select to display members of all groups.

<Alt>-<0>
     Display all areas (no matter which group they belong to).

<Alt>-<1> ... <Alt>-<9>
     Only display areas that are member of the 1st ... 9th group.  The
     first group is the group which appears first in the <Ctrl>-<G>
     menu, and so on.

   The keyboard setup of the Arealist Screen cannot be modified by the
user.

5.2 Keyboard Commands and Functions in Message Reading mode
===========================================================

When you press <Enter> or <Right> in the arealist screen, you will enter
message reading mode.  (An exception to this is if you have turned the
'DirectList' switch on.  See List of available switches,
for more details.  In this case, you will enter the message
list mode instead).  In the message reading mode, one message is
displayed at a time.  You can scroll through the message, write new
messages, jump to other messages of the same message area, jump to other
message areas, and invoke numerous special functions.

   All functions that are accessible from this mode have a unique name.
Most functions are prebound to a reasonable keycode combination, but you
can redefine the keyboard mapping by assigning other keycode
combinations to these function names (see Redefining the Keyboard).

5.2.1 Reader Functions for Navigation
-------------------------------------

Function: 'down', bound to: <Down>
     Scrolls the text of the current message down.

Function: 'up', bound to: <Up>
     Scrolls the text of the current message up.

Function: 'help', bound to: <Alt>-<H>
     Displays online help on available keyboard commands.

Function: 'next', bound to: <Right>
     Go to the next message in this area.

Function: 'previous', bound to: <Left>
     Go to the previous message in this area.

Function: 'first', bound to: <Home>
     Go to the very first message in this area.

Function: 'slast', bound to: <End>
     Go to the very last message in this area.

Function: 'link_to', bound to: <Ctrl>-<Right>
     Go to the message that is a reply to this message.  If there is
     more than one reply to this message, you will be presented a select
     box.

Function: 'u-next', bound to: <Ctrl>-<I>
     Go to the message that is a reply to this message.  If there is
     more than one reply to this message, this function does not present
     a select box, but simply jumps to the first of all replies.

Function: 'link_from', bound to: <Ctrl>-<Left>
     Go to the message that this message is in reply to (if any).

Function: 'next_area', bound to: <+>
     Go to the next message area.

Function: 'prev_area', bound to: <->
     Go the the previous message area.

Function: 'list', bound to: <Alt>-<L>
     This will display a list of all messages in this area.  You can
     navigate through this list with the cursor keys, tag entries by
     pressing space, and apply a subset of the functions of the message
     reading mode (like delete, move, etc.)  to the tagged messages.
     You can leave the list by pressing either <Enter>, which will
     position you to the message that was selected in the list when
     pressing <Enter>, or by pressing <Esc>, which will position you to
     the message that was active before entering the message list mode.

Function: 'last', not pre-bound to any key
     Go to the last read message in this area (the message right before
     the first unread message).

Function: 'astart', not pre-bound to any key
     Go to the message that was active when you entered this message
     area.

Function: 'home', not pre-bound to any key
     Go to the first message in the current reply-chain.

Function: 'back', not pre-bound to any key.
     Goes back to where you were in the reply chain before using the
     'link_to' or 'link_from' functions.  Untested.

5.2.2 Reader Functions for Entering, Modifying and Deleting Messages
--------------------------------------------------------------------

Function: 'newmsg', bound to: <Alt>-<E> or <Ins>
     Enter a new message.

Function: 'reply', bound to: <Alt>-<R>
     Reply to the message currently displayed without quoting it.

Function: 'quote', bound to: <Alt>-<Q>
     Write a quoted reply to the message currently displayed.

Function: 'repoth', bound to: <Alt>-<N>
     Reply to this message in a different message area.  You can use
     this for netmail replies as well as for moving a thread from one
     area to a different one.

Function: 'followup', bound to: <Alt>-<U>
     Reply to this message, but address the reply to the recipient of
     the message you are replying to instead of the sender.

Function: 'change', bound to: <Alt>-<C>
     This allows you to edit an existing message.

Function: 'edithdr', bound to: <Ctrl>-<H>
     Edit the header of the current message (but not the text).

Function: 'move', bound to: <Alt>-<M>
     Move the message currently displayed to another area.

Function: 'delete', bound to: <Alt>-<D> or <Del>
     Delete the message currently being displayed.

5.2.3 Reader Functions for Scanning and Searching for Messages
--------------------------------------------------------------

Function: 'scan', bound to: <*>
     Scan all message areas for new messages.

Function: 'scan_unscanned', bound to: <#>
     Scan message areas for new messages, but only scan areas that have
     not been scanned previously.

Function: 'pmail', bound to: <Alt>-<P>
     Personal mail scan: this scans all message areas for messages
     addressed to you.

Function: 'spmail', not pre-bound to any key
     This scans for messages addressed to you in the current area only.

Function: 'search', bound to: <Alt>-<F>
     Allows you to search a message area for a specific keyword.  The
     search direction will be the direction that you previously moved
     into.  For example, in order to search a complete message area
     backwards for a certain mail, you must press <End> to go to the end
     of the area, then press <Left> in order to set the search direction
     to "backwards", and then press <Alt>-<F> to start the search.

Function: 'hdrsearch', bound to: <Alt>-<Z>
     This works like 'search', but only scans message headers.

5.2.4 Reader Functions for modifying MsgEd TE Options
-----------------------------------------------------

Function: 'view', bound to: <Alt>-<V>
     Toggle display of message control lines, kludge lines, etc.

Function: 'config', bound to: <Alt>-<S>
     This function allows you to set some (but not all) of the system
     switches.  See Switches, for more information.

Function: 'chngaddr', bound to: <Ctrl>-<W>
     Change the origination address used for writing mail.  You will not
     need this key in normal operation, as MsgEd TE employs an
     intelligent mechanism for AKA matching.

Function: 'chnodel', bound to: <Ctrl>-<N>
     Change the currently active nodelist.

Function: 'name', bound to: <Ctrl>-<U>
     If you have defined more than one user name with the 'Name'
     configuration keyword, you can use this function to select the name
     to use when writing messages.  If you have any 'GroupSettings'
     keyword in your config, this selection will only last until you
     enter a new area, because in such a scenario, the username which is
     used is defined by the area that you are in.  If you don't have any
     'GroupSettings' keyword in your config, this selection will last
     until you make a different one.  See The 'GroupSettings' keyword,
     for more information.

5.2.5 Miscellaneous other Reader Functions
------------------------------------------

Function: 'export', bound to: <Alt>-<W>
     Export the text of the current message to a file or printer port.
     You will be shown a dialog box where you can enter a filename and
     some other options.  See Exporting and Printing, for further
     information.

Function: 'selchs', bound to: <Alt>-<T>
     This will show a select box where you can manually select which
     codepage or character set you think the messages that you are
     reading are in.  You only need this in two cases: Either when some
     idiot is inserting a wrong CHRS kludge into this mail, or when a
     mail does not have a CHRS kludge and it is _not_ written in the
     character set that you have specified as argument to the
     'AssumeCharset' keyword (see The AssumeCharset Keyword.

     An example would be if you have configured your computer with
     'AssumeCharset 850' because you usually write in a Western European
     language, but ocasionally read Russian echomail.  Then, if the
     Russian mail does not have a charset kludge, you would need to
     press <Alt>-<T> and manually select 'CP866 2' in order to view the
     proper transcription of the cyrillic text.

     The selection that you make lasts until you make a differnt one, or
     until you quite MsgEd TE.

Function: 'shell', bound to: <Alt>-<O>
     Call an operating system shell (prompt).  Under DOS, MsgEd TE is
     swapped out of memory for this.

Function: 'dos', bound to: <!>
     Directly execute an operating system command.

Function: 'null', not pre-bound to any key.
     Simply does nothing.

Function: 'exit', bound to: <Alt>-<X>, <Alt>-<A> and <Esc>
     Leave the message reading mode.  Returns to the arealist screen.

5.3 Keyboard Commands and the internal Message Editor
=====================================================

MsgEd TE has a built in message editor.  It is suggested that, before
you start using an external editor for writing messages, you should at
least try to use the internal message editor, because it is best suited
for composing FTN-style messages.  The internal message editor is highly
configurable, so you should be able to use the internal message editor
with the same keyboard setup as your preferred external text editor.

   In the following, you will be shown a complete list of available
message editor functions.  These functions are pre-bound to sensible
keystrokes, which are also listed in the following table.  Each message
editor function has a unique name, and using this name, you can bind
this function to any keystroke that you might estimate to be adequate.
Instructions on how to do this will be given in the following section
(see Redefining the Keyboard bindings).

5.3.1 Editor Functions for Moving the Cursor
--------------------------------------------

Functions: 'left', 'right', 'up', 'down'
     These functions are pre-bound to the cursor keys and move the
     cursor left, right, up or down by one line.

Functions: 'wordleft', 'wordright'
     These functions are pre-bound to <Ctrl>-<Left> and <Ctrl>-<Right>
     and move the cursor to the beginning of the previous or the
     beginning of the next word respectively.

Functions: 'pgup', 'pgdn'
     These functions are pre-bound to the <PgUp> and <PgDn> (or on some
     Unix boxes, <Prev> and <Next>) keys and scroll the text up or down
     by one page and place the cursor accordingly.

Functions: 'gobol', 'goeol'
     These functions are pre-bound to the <HOME> and <END> keys and move
     the cursor to the beginning or end of the current line.

Functions: 'top', 'bottom'
     These functions are pre-bound to the <Ctrl>-<PgUp> and
     <Ctrl>-<PgDn> keys and move the cursor to the top or bottom line of
     the current screen.

Functions: 'first', 'last'
     These functions are pre-bound to the <Ctrl>-<Home> and <Ctrl>-<End>
     keys and move the cursor to the very first or very last line of the
     mail that is currently being edited.

Function: 'tab', pre-bound to: <Tab>
     This function moves the cursor to the next tabulator position by
     inserting whitespace characters (_not_ tabulator characters!)  into
     the mail.  The distance between tabulator postitions can be
     adjusted with the 'TabSize' keyword in the configuration file
     (see The 'TabSize' Keyword).

Function: 'newline', pre-bound to: <Enter>, <RET>
     This function inserts a _hard_ carriage return and places the
     cursor to the beginning of the next line.  Note: Normally, hard
     carriage returns are only inserted as paragraph delimiters or when
     posting formatted tables in fidonet.  For normal message text, you
     should _not_ press <Enter> near the end of the line, but you should
     type a continous text (and leave the wrapping to MsgEd TE) and only
     press <Enter> once or twice at the end of a paragraph.  This will
     allow the receivers of your message to format the message in a way
     that nicely fits their screen widths (not everybody is using 80
     column terminals!).

5.3.2 Editor Functions for Deleting text
----------------------------------------

Function: 'backspace', pre-bound to: <BS>
     Kills the character on the left side of the cursor and moves the
     cursor back one step.

Function: 'del', pre-bound to: <Del>
     Deletes the character at the current cursor position.

Function: 'deleol', pre-bound to: <Alt>-<K>
     Deletes all characters from the current cursor position to the end
     of the line.  This function has no effect if issued in an empty
     line.

Function: 'delline', pre-bound to: <Alt>-<D>, <Ctrl>-<Y>
     Deletes all characters in the current line and removes this line.

Function: 'emacskill', pre-bound to: <Ctrl>-<K>
     This function works like 'deleol', i.E. it kills all characters
     from the current cursor position to the end of the line, but if
     issued in an empty line, it removes that line.  This is just what
     pressing <Ctrl>-<K> does in the GNU Emacs editor.

Function: 'killword', pre-bound to: <Ctrl>-<T>
     Deletes all characters from the current cursor position to the end
     of the current word.

Function: 'undel', pre-bound to: <Ctrl>-<U>
     This is a rather limited undelete function.  It will restore lines
     that have previously been killed with the 'delline' function.  It
     will not restore single charactres that have been killed with
     'del', 'deleol', 'killword', 'emacskill' or similar functions.

Function: 'zap', pre-bound to: <Alt>-<L>
     This function is useful when using the quoted reply features.  It
     will kill all lines below the current cursor position that only
     contain quoted text (these will usually be highlighted in a
     different color) until the next unquoted line.  This is useful to
     easily kill quoted signature text etc.  Use this to reduce the
     number of unnecessary quoted lines in your mails!

5.3.3 Editor Functions dealing with Text Blocks
-----------------------------------------------

These functions provide cut'n'paste functionality:

Function: 'anchor', pre-bound to: <Alt>-<A>
     This drops an anchor at the current cursor position.  You have to
     drop two anchors at different places, then the text between the two
     anchors will be highlighted and treated as a selected text block.

Function: 'cut', pre-bound to: <Alt>-<C>
     This will cut the currently selected text block (use 'anchor' to
     select a text block), i.E., it will delete all selected characters
     and store them in an internal clipboard.  Text that previously was
     stored in the clipboard will of course be discarded.

Function: 'paste', pre-bound to: <Alt>-<P>
     This will paste (insert) the text block from the clipboard (i.E.
     the last text that has been cut with the 'cut' function) at the
     current cursor position.

Function: 'unblock', pre-bound to: <Alt>-<U>
     Any anchors that have been dropped with the 'anchor' function will
     be removed, that is, any previously highlighted text will again be
     displayed normally.

5.3.4 Miscellaneous Editor Functions
------------------------------------

Function: 'abort', pre-bound to: <ESC>
     Aborts the current message without saving.

Function: 'bytecount', pre-bound to: <Alt>-<B>
     Displays the number of bytes and the quote ratio in the current
     message.

Function: 'edithdr', pre-bound to: <Alt>-<E>
     Lets you edit the header of the message (recipient, sender and
     subject information) in case you made an error when first entering
     the header.

Function: 'export', pre-bound to: <Alt>-<W>
     Export the text of the current message to a file or printer port.
     You will be shown a dialog box where you can enter a filename.
     See Exporting and Printing, for further information.

Function: 'insert', pre-bound to: <Ins>
     This function toggles between the "insert" and "overwrite" modes of
     the editor.

Function: 'import', pre-bound to: <Alt>-<I>
     Imports text from a text file into the message.  You will be shown
     a dialog box where you can enter a filename.

Function: 'null', not pre-bound to any key.
     Simply does nothing.

Function: 'oscmd', pre-bound to: <Alt>-<1>
     This allows you to enter an operating system command that will be
     executed directly.

Function: 'setup', bound to: <Alt>-<T>
     This function allows you to set some (but not all) of the system
     switches.  See Switches, for more information.

Function: 'shell', bound to: <Alt>-<O>
     Call an operating system shell (prompt).  Under DOS, MsgEd TE is
     swapped out of memory for this.

Function: 'toggleq', bound to: <Alt>-<Q>
     This function toggles the quote state of the current line (whatever
     that means ...).

Function: 'quit', bound to: <Alt>-<S>
     This function saves the message currently being edited and quits
     the internal message editor.

5.4 Redefining the Keyboard Bindings
====================================

If you are dissatisfied with the default keyboard bindings, you can
easily change the keyboard layout.  Each of the message reader and
message editor keyboard functions that have been listed on the previous
pages can be assigned an arbitrary keystroke using the 'ReadKey' and
'EditKey' configuration keywords.  The syntax of these commands is as
follows:

     EditKey KEYCODE FUNCTION-NAME
     ReadKey KEYCODE FUNCTION-NAME

   The KEYCODE parameter designates wich keystroke you want to redefine.
In order to find out the key code matching a certain keystroke, invoke
the executable of MsgEd TE with the '-k' option.  You can then press the
desired keystroke, and MsgEd TE will print out the key code that you
have to use as KEYCODE parameter in the configuration file.  Here is an
example session:

     [R:\mailer\msged]msgedp -k
     Displaying keyboard scan codes in hexadecimal form.

     Press any key or key combination, or 'q' (lowercase 'Q') to exit.
     Key: 0x2100
     Key: 0x0071 (q)

   I pressed <Alt>-<F> and 'q' to reproduce this output.  From the
output, we can see that <Alt>-<F> has the keycode '0x2100', and 'q' has
the keycode '0x0071'.  Keycodes might vary depending on your hardware
and operating system.  Also, on UNIX consoles sometimes keys are not
mapped correctly at all, in which case different key combinations might
have the same key code.  If you find one where this is problematic,
contact me for a bug report.

   Now that you know the proper keycode, you can assign it to any reader
or editor function.  See Keyboard Commands and Functions in Message Reading mode,
for a complete list of available
keyboard functions for message reading mode.  See Keyboard Commands and Functions in the internal Message Editor,
for a
complete list of available keyboard functions in the built-in message
editor.

   As an example, let us assign the keystroke <Alt>-<F> to the
'wordright' editor function:

     EditKey 0x2100 wordright

   With this line in your configuration file, you will be able to press
<Alt>-<F> in order to move the cursor to the beginning of the next word.

6 MsgEd TE Configuration Reference
**********************************

MsgEd TE has to be configured using a configuration file.  This is a
plain text ASCII file containing a list of keywords, settings and
switches that define the behaviour of MsgEd TE. The configuration file
is named 'msged.cfg' and should normally be placed in the current
working directory of MsgEd TE. (On Linux/Unix, it is named '.msged'
instead and placed in your home directory).

   This chapter describes the syntax of the configuration file and lists
all avilable keywords and switches in alphabetical order.

6.1 Configuration File Syntax
=============================

Each line in the configuration file should start with a keyword.  Each
keyword can be followed by zero or more free-form parameters.

   A special case of a keyword is the 'switch' keyword.  Using the
'switch' keyword, a switch can be turned either on or off.  See
Switches, for more information.

   When parsing the config file, lines that start with a semicolon or
with a semicolon preceeded only by whitespace are treated as comments.

   Within the configuration file, you may use environment variables.
Enclose the name of the environment variable within percent signs.  For
example, if you give a command like '"Areafile
%MAILBOX%\squish\squish.cfg"', the string '%MAILBOX%' would be replaced
with the value of the environment variable 'MAILBOX'.

   You can also disable or enable certain parts of the configuration
file based on the value of environment variables or on the operating
system by using Conditionals.  See Conditional Statements in the Configuration File,
for more information.

6.2 Configuration File Keywords
===============================

The following keywords can be used in the configuration file.  Keywords
are generally case-insensitive.

6.2.1 Address
-------------

Syntax:
     'Address AKA'
Example:
     'Address 2:2476/418.0'

   The 'Address' command specifies your FTN network address.  AKA is a
FTN network address with up to five dimensions.  The 'Address' keyword
can be repeated as often as is desired to specify multiple addresses.

6.2.2 Alias
-----------

Syntax:
     'Alias ALIAS "NAME" ADDRESS [ATTRIBUTE ["SUBJECT"]]'
Examples:
          Alias tobias "Tobias Ernst" 2:2476/418.0
          Alias tobi "tobi@bland.fido.de" UUCP
          Alias af "Areafix" 2:2476/418.0 p "PASSWORT"

   Aliases are used to simplify the entry of new messages.  When you
enter a new message and type in the previously defined ALIAS into the
name field, all the other fields will be filled in with the values that
you have provided in the alias definition.  You must at least specify
the sysop's NAME in quotation marks and the corresponding FTN ADDRESS in
up to five dimensions.

   Alternatively, you may specify 'UUCP' as ADDRESS.  In this case, the
NAME field is interpreted as an internet e-mail address and the mail is
addressed to the corresponding gateway.

   Optionally, you may also specify one or more message attributes and a
message SUBJECT.  The ATTRIBUTE field is a combination of one or more of
the following letters:

'p'
     private
'h'
     hold
'c'
     crash
'k'
     kill/sent
'n'
     normal (no attributes)

   Note that you must always specify at least one message attribute (at
least 'n') if you want to specify a subject.

6.2.3 Alterfunc
---------------

This keyword is presently undocumented.

6.2.4 AreaExcl
--------------

Syntax:
     'AreaExcl PATTERN'
Example:
     'AreaExcl ALT.BINARIES.*'

   This keyword is used to exclude certain areas from the area selection
menu.  All area names that match PATTERN will not be displayed in the
area selection menu and thus will not be accessible.  The PATTERN
parameter may be a simple area name or a wildcard pattern containing the
joker characters '*' and '?'.

   You must specify the 'AreaExcl' keyword in the configuration file
_before_ the 'Squish', 'Fido', 'Quick' and 'Areafile' keywords.

6.2.5 Areafile, AreaFileFlags and AreaDesc
------------------------------------------

These keywords are documented in the section about area configuration
(see Reading a Tosser Configuration File (Areafile)).

6.2.6 AssumeCharset
-------------------

Syntax:
     'AssumeCharset CHARSET'
Example:
     'AssumeCharset IBMPC'

   In Fidonet mail, mails that contain special characters must carray a
charset kludge line (see Using Special Characters - The FSC 0054 Charset Kludge).
However, still a good percentage
of fidonetmail contains special characters, but no charset kludge line.
Also, people often use wrong charset kludge names.

   By default, MsgEd TE will replace all special characters with
question marks in mails without charset kludge or with unknown charset
kludge, because MsgEd TE does not know how to properly translate such
special characters.  If you do not like this, you can use the
'AssumeCharset' keyword to specify that MsgEd TE should assume that all
special characters in mails that do not contain a charset kludge, or
have a unknown charset kludge, have been composed using the character
set CHARSET, and translate the special characters accordingly.

   In Germany, for example, nearly all mail that contains special
characters but does not contain a charset kludge has been composed using
the IBMPC character set, so it makes sense to specify 'AssumeCharset
IBMPC' here.

   In Russia, it is best to use 'AssumeCharset CP866'.

6.2.7 CharsetAlias
------------------

Syntax:
     'CharsetAlias CHARSETINMAIL CHARSETASKNOWNTOMSGED'
Example:
     'CharsetAlias IBMPC CP850'

   As already noted in the previous section, a lot of mails in Fidonet
contain charset kludges that do not adhere to the current FTSC standard
for 8-bit character transport, 'FSP1013'.  Using the 'CharsetAlias'
keyword, you can tell MsgEd TE how to map character set kludge names
commonly found in mails to their official names.

   The most prominent example is the 'IBMPC' charset kludge.  This
kludge line is now obsoleted and should be replaced by 'CPxxx' charset
kludges, where 'xxx' stands for the codepage that is used.  MsgEd TE
_only_ knows about the new 'CPxxx' charset.  Therefore, you need to use
'CharsetAlias' to tell MsgEd TE how to interprete a 'IBMPC' charset
kludge.  Now this is difficult, because, if the 'IBMPC' charset kludge
is not followed by a '@CODEPAGE' kludge line, you do not know which
codepage the author of the mail has used.  According to 'FSC0054', he
should have used codepage 437, but in Western Europe for example the
majority of users put 'IBMPC' charset kludge lines into their mails, but
actually use codepage 850, and in Russia the same applies for codepage
866.  This means that you have to do assumptions.  A users who reads
mainly texts in Western European languages should probably use
'CharsetAlias IBMPC CP850', while when you intend to read Russian
echomail, 'CharsetAlias IBMPC CP866' is probably the right thing to do.

   Also, some users are simply using fantasy names for the 'CHRS' kludge
line.  The following commands have also proven to be handy:

     CharsetAlias +7_FIDO CP866
     CharsetAlias RUFIDO CP866
     CharsetAlias ASCII CP437

6.2.8 Color
-----------

Syntax:
     'Color ITEM FOREGROUND _BACKGROUND'
Example:
     'Color MainNorm White _Black'

   Use this to customize the colors that MsgEd TE uses.  For a list of
available color values and items, refer to the sample color scheme
files.

   If you are using the Unix version of MsgEd TE, you must also switch
on the 'Colors' switch in order to get a non-monochrome display.  See
Colors in the Unix version, for more
information.

6.2.9 Colour
------------

'Colour' is an alternative name for the keyword 'Color' (see The 'Color' Keyword.

6.2.10 CurStart, CurEnd
-----------------------

Syntax:
          CurStart ROW
          CurEnd ROW
Example:
          CurStart 5
          CurEnd 7

   This keyword is used to control the shape of the cursor (only on
terminals and operating systems that support it).  On typical DOS-like
consoles, the cursor constis of 8 rows, labelled top-down from zero to
seven.  You can specify a cursor start ROW and a cursor end ROW.  The
MsgEd TE default values of 6 (start) and 7 (end) result in a standard
"underline" cursor.

   If you are using MsgEd TE with a monochrome display adapter like MDA,
MGA or HGC, the cursor consists of 14 rows instead of 8.  There, you
will have to use the 'CurStart' and 'CurEnd' keywords to produce a
sensible cursor shape.  Values of 11 for start and 12 for end are
suggested for mono display adapters.

6.2.11 Domain
-------------

Syntax:
     'Domain 5D-ADDRESS'
Example:
     'Domain 8:123/45@rbbs'

   Messages sent with the destination domain equal to the domain of one
of the configured domain gates will always be sent to the domain gate
with a @DOMAIN kludge inserted into the message.  To enable domain
gating, you must configure all domain gates you are using in your config
file by using a 'Domain' keyword with the full 5D address of the domain
gateway (including the domain that this gate is gating for) as
5D-ADDRESS parameter for each domain gate.  You also must have the
'Gate' config verb set to either 'both' or 'domains'.  See The 'GAte' Keyword,
for more information.

   With this done, MsgEd TE will gate any messages being saved with a
destination domain listed as one of the gates.  Note that for this to
occur, the destination domain must be different than your own.

   Confused?  Luckily enough, most users don't have to deal with domain
gating ...

6.2.12 EditKey
--------------

Syntax:
     'EditKey KEY FUNCTION'

   This keyword is used to redefine the keyboard layout in the internal
message editor.  See Redefining the Keyboard,
for more information.

6.2.13 Editor
-------------

Syntax:
     'Editor PROGRAM-NAME'
Example:
     'Editor c:\boxer\b2.exe'

   This command allows you to specify an external editor to use when
writing messages.  The editor program (specified as executable filename
with full path as the PROGRAM-NAME parameter) must accept a filename as
the first and only parameter.

   Before you decide to use an external editor, you might first want to
look at the built-in editor of MsgEd TE. Using the 'EditKey' keyword,
the built-in editor is highly configurable to emulate the keystroke
combination that you are used to use from your preferred external
editor, and you can safe a lot of unnecessary overhead and gain a lot of
comfort when using the internal editor as compared to the external one.

6.2.14 EnableSC
---------------

Syntax:
     'EnableSC [STRING]'
Example:
     'EnableSC' TYPE-NATIONAL-CHARACTERS-HERE

   (The example from above will only look correct in the TeX ('.DVI' or
'.PS' or '.PDF') edition of this document.)

   This keyword is only relevant on UNIX. On UNIX, when using a VT100,
xterm, or similar terminal, <Alt> or <Meta> key combinations generate
the same key codes like national characters with ASCII values greater
than 127.  This is a problem, because on the one hand, MsgEd TE relies
on combinations of normal keys with Alt, but on the other hand, you
probably want to use national special characters in your mail.

   By default, the UNIX version of MsgEd TE enables all <Alt> key
combinations and disables all national special characters.

   You can revert this behaviour by specifying 'EnableSC' without
parameters.  This will cause MsgEd TE to interpret all high ASCII
keycodes as national special characters, instead of <Alt> key
combination.  You'll then have to use the <ESC> key to emulate all <Alt>
key cominations.  This is probably what users of complete high ASCII
alphabets, like the cyrillic alphabet, will wnat to do.

   On the other hand, if your language only has few special characters,
you can also use the 'EnableSC' keyword to selectively enable some
national special charcters.  All special characters that occur in the
STRING given as argument will be interpreted as charcters rather then
<Alt> key combinations.

   The example from above enables all German national charcters.  The
only relevant <Alt> key combination that you will loose by enabling
those characters is <Alt>-<V> ("show notes").  This function is also
available by pressing <Alt>-<K> ("show kludges"), so that isn't a
problem.

   Note that you will have to use an editor that allows the input of
national charcters in order to generate the necessary configuration file
entry.  'vi' should be able to do this, as well as 'joe -asis'.  If you
are not able to type those characters in vi, you should not even try to
type them in MsgEd TE ...

   If you need information on how to set up a FreeBSD system to
correctly process special national characters, you can f'req
'syscons.tgz' at 2:2476/418.

6.2.15 Fido
-----------

This keyword is described in the section about manual message area
definition (see Manual Area Definition).

6.2.16 FreqArea
---------------

Syntax:
     'FreqArea AREA-TAG'
Example:
     'FreqArea NETMAIL'

   This keyword defines the message area where file request messages
will be written when the <Ctrl>-<F> function is invoked.  If not
defined, 'NETMAIL' is the default areatag.  Only one file request area
may be defined.

6.2.17 FreqFlags
----------------

Syntax:
     'FreqFlags FLAG [FLAG ...]'
Example:
     'FreqFlags CRA K/S'

   This keyword defines the flags that are set for file request message
generated using the <Ctrl>-<F> feature.  If not defined, 'DIR K/S' is
the default.  The 'FRQ' flag will be appended in any case, so will the
local message area flags (usaually 'PVT LOC').  Any flags defined in FSC
0053 are electible, yet the only ones that are useful for file request
messages are listed below.

     HLD place file request on hold for the caller
     CRA crash delivery, dial out as soon cost setup permits it
     IMM immediate deilivery, dial out immediately
     DIR direct mail, you have do dial out manually
     K/S kill the file request mail after it has been sent

   You should at least specify one flag out of 'HLD CRA IMM DIR',
because if none of these is present, the file request will be routed and
consequently be ignored by the destination system.

   If you want to specify multiple file request flags, separate them by
white spaces, as shown in the example above.

6.2.18 Function
---------------

Syntax:
     'Function NUMBER KEYSTROKES'
Example:
     'Function 11 \0x17D:\\text\\*.*^M'

   A function key macro is a predefined keystroke sequence that is
assigned on a function key.  If you press this function key, MsgEd TE
will do exactly what it would have done if you have typed in all the
keystrokes of this macro manually.

   The following function key numbers (to be used as the NUMBER
parameter) are available:

'0'
     Execute this macro at program startup.
'1 .. 10'
     <F1> ..  <F10>
'11 .. 20'
     <Shift>-<F1> ..  <Shift>-<F10>
'21 .. 30'
     <Ctrl>-<F1> ..  <Ctrl>-<F10>
'31 .. 40'
     <Alt>-<F1> ..  <Alt>-<F10>

   Note that function key numbers 11 through 40 might not work on Unix.

   When using key scancodes in a macro, you must escape them with a
backslash character ('\').  If you wish to have a literal backspace
character appear in the macro string (e.g.  if it's needed as part of a
path to a file), use two backslash characters, like in the example
above.

   The example from above will assign <Shift>-<F1> to display a pick
list of the files in the 'D:\TEXT' directory.  After the list is
displayed, you may select a file to import into a message while in
Msged's internal editor.  Note that control characters in a macro such
as ^M (Enter) must be written in UPPER case.

6.2.19 Gate
-----------

Syntax:
     'Gate WHAT'
Examples:
          Gate Zones
          Gate Domains
          Gate Both
          Gate Ask

   The WHAT parameter to the 'Gate' keyword specifies if MsgEd TE should
do zone gating ('Gate Zones'), domain gating ('Gate Domains'), or both
('Gate Both').  If you specify 'Ask' as parameter (this is also the
default), you will be asked if you want to use zone gating for each
inter-zone mail that you write.

   This has nothing to do with internet gateways!

   Domain gating is explained in detail in the section about the
'Domain' keyword (see The 'Domain' Keyword).

   Zone gating works like this: If you write a mail to a node in a zone
different from your own, and zone gating is enabled, the mail will not
be addressed to the receiver in the other zone, but it will be addressed
to that zone's zone gate (which also has an address inside your own
zone).  The address of the true receiver will be encoded in an @INTL
kludge line.

   If you don't have a direct inter-zone link set up in your tosser, you
may always enable zone-gating on with the 'Zone' parameter.  All mail
that crosses zone boundaries will then be sent via the zone gate, which
is by far the most reliable mail to send inter-zone mail.  If, on the
other hand, you do have a direct inter-zone netmail link, you need the
'Ask' parameter, because then you must decide for each netmail
individually if it shall be sent directly via this link, or (probably
because it is for a zone not covered by this link, or because the link
partner has not agreed to forward mail not destined for himself) must be
sent via the zone gate.

   Turning zonegating off with the 'None' parameter is not at all
recommended.  If you send inter-zone mail wihtout zone-gating, there
only need be one single tosser on the routing path which does not
recognise 'INTL' kludges, and the mail will probably disappear.  So,
don't turn off zonegating unless you have direct links for the
destination zones you are writing mail to.

6.2.20 Group
------------

Syntax:
     'Group "GROUPNAME" [PATTERN]'
Example:
     'Group "OS/2 Echos" *OS2*'

   This command is used to set up area groups and add areas to those
groups.  See Manually Defining and Assigning Groups,
for a full documentation on how to use this keyword.  See Configuring and Using Message Area Groups,
for an overview on the group
concept of MsgEd TE.

6.2.21 GroupSettings
--------------------

Syntax:
     'GroupSettings "GROUPNAME" NAME-INDEX TEMPLATE-INDEX'
Example:
     'GroupSettings "OS/2 Echos" 0 1'

   This command allows you to select different user names and/or
template files based on the group a message area belongs to.  For
example, you might wish to use a different signoff in OS/2-related areas
(probably stating your TeamOS/2 number) than in other areas.  Or, if you
are moderator in a certain area, you might want to use the user name
"Moderator" instead of the user name that you are using in normal areas.

   The GROUPNAME parameter to the 'GroupSettings' command specifies the
name of the group.  See The 'Group' Keyword, for information on
how to define groups and add areas to those groups.

   The 'name-index' parameter then specifies the index number of the
user name that should be used for all areas in this group.  User names
are counted from zero upwards, so if you have two or more 'Name'
keywords in your config file, the name specified with the first 'Name'
keyword will have an index number of 0, the second will have 1, and so
one.  See The 'Name' Keyword, for more information.

   The 'template-index' number defines which message template file
should be used for areas belonging to this group.  The first message
template file that you have specified with the 'Template' keyword has
number 0, the second has number 1, and so on.  Note that if you want to
specify multiple template files, you have to repeat the 'Template'
keyword for each file.  The 'Template' keyword itself can only take one
argument.  See The 'Template' Keyword, for more information.

6.2.22 HelpFile
---------------

Syntax:
     'HelpFile FILE-NAME'
Example:
     'HelpFile e:\fido\msged\msghelp.dat'

   Specify the complete path and file name of the compiled MsgEd TE help
file here.  It is usally named 'msghelp.dat', or '~/.msged.help' on
Unix.

6.2.23 Include
--------------

Syntax:
     'Include FILE-NAME'
Example:
     'Include scheme.001'

   The file specified with the FILE-NAME parameter will be read in and
parsed as a normal config file.  This is often used for including color
scheme configuration files.

6.2.24 Jam
----------

This keyword is described in the section about manual message area
definition (see Manual Area Definition).

6.2.25 Lastread
---------------

Syntax:
     'Lastread LASTREAD-FILE'
Example:
     'Lastread lastread'

   The LASTREAD-FILE parameter of this keyword specifies the name of the
default "lastread file" that is used to store lastread pointers for Fido
*.MSG areas.  This keyword gives the default filename for those username
entries without individual lastread files configured via the 'Name'
keyword.  See The 'Name' Keyword, for more information.

   If you do not specify this keyword, a default value of 'lastread' is
assumed, which is a very resaonble default.  Hence, you normally do not
need this keyword.

6.2.26 MaxX, MaxY
-----------------

Syntax:
          MaxX COLUMNS
          MaxY ROWS
Example:
          MaxX 80
          MaxY 25

   The 'MaxX' and 'MaxY' keywords are used to define the screen or text
window size MsgEd TE is running in.  Normally this will be autodetected
and MsgEd TE will automatically use the full window size.  For example,
on OS/2, you could execute 'MODE CO100,40' and then start MsgEd TE, and
it will automatically use 100 columns and 40 rows.

   In some cases, however, the autodetection fails, or you might not
want MsgEd TE to use the full screen size.  In this case, you have to
define the screen or window size manually with the 'MaxX' and 'MaxY'
parameters.

6.2.27 MountDir
---------------

Syntax:
     'MountDir UNIX-PATH DOS-PATH'
Example:
     'MountDir /mnt/c c:\'

   This keyword is used to tell the Unix version of MsgEd TE how it can
translate DOSish pathnames found in 'squish.cfg', 'fastecho.cfg' or even
'msged.cfg' files that are mounted via NFS, rumba or smbfs from a DOS,
OS/2 or Windows machine.

   Suppose you are having a message base that is stored in 'c:\msgbase'
on your OS/2 or Windows machine.  Also suppose that your complete C:
drive on the OS/2 or Windows machine is mounted as /mnt/c on the UNIX
machine.  (The Windows machine and UNIX machine can be two distinct
machines connected via network, or a single machine with multi boot,
where UNIX can mount the OS/2 or DOS partitions).

   You can then install MsgEd TE on the Unix machine and let it read in
the same configuration files that are also used on the OS/2 or Windows
machine.  Simply put 'MountDir /mnt/c c:\' into your configuration file.
When MsgEd TE is running on OS/2 or Windows, it will ignore the keyword,
but when it is running on Unix, it will know how to translate the
DOS-like filenames found in the corresponding configuration files into
file names that are correct for the UNIX system.

   Please note that you can have only one 'MountDir' statement in the
configuration file.

6.2.28 Name
-----------

Syntax:
     'Name "NAME" [LASTREAD-FILE [USER-OFFSET]]'
Examples:
          Name "Tobias Ernst"
          Name "Joe Sysop"  lastread 0
          Name "Jane Sysop" lastread 1

   You can specify your user name as the NAME parameter inside quotation
marks here.  You can specify more than one user name by repeating the
'Name' keyword.  Then, you can select which name to use during program
execution by pressing <CTRL>-<U>.

   Optionally, you can use the LASTREAD-FILE parameter to specify the
name of the file that stores the lastread pointers in Fido *.MSG areas.
This one should be named 'lastread' for the sysop.  If you configure
other users with the same config file, e.g.  your wife, son etc., you
should give them separate lastread file names, so that each person can
have individual last read pointers.

   As a third parameter, you can specify a USER-OFFSET for each
individual name.  This is used for all message base formats excpet
*.MSG. Here, all users share the same lastread pointer file (with a
fixed name that cannot be configured), but each user has a different
offset into this file where he can store his personal lastread pointer.

   Normally, the sysop has a user offset of zero (which is the default
for the USER-OFFSET parameter), and each BBS user has his user number as
user offset.  However, if you have two or more sysops (in this context,
this simply means persons accessing your message base directly with
MsgEd TE instead of using the BBS), you must manually assign unique user
offset numbers for each person.

6.2.29 NodePath
---------------

Syntax:
     'NodePath PATH-NAME'
Example:
     'NodePath e:\fido\nodelist'

   MsgEd TE can use compiled version 7 nodelists to perform nodelist
lookups.  All files pertaining to all version 7 nodelists, i.E. the
compiled index files and the raw nodelist files, must be stored in the
V7 nodelist directory.  The 'NodePath' keyword is used to tell MsgEd TE
that all v7 nodelist files reside in the directory named PATH-NAME.
See The 'Nodelist' Keyword, for more information.

6.2.30 Nodelist
---------------

Syntax:
     'Nodelist DOMAIN-NAME BASE-NAME SYSOP-FILE'
Example:
     'Nodelist fidonet nodex sysop.ndx'

   MsgEd TE can use compiled version 7 nodelists to perform nodelist
lookups.  With the 'Nodelist' keyword, you specify the v7 nodelists that
MsgEd TE should use.  All three parameters are mandatory.

   The DOMAIN-NAME parameter specifies the name of the domain that is
used when picking which nodelist to use for address lookup if the zone
number is not unambiguous.  The BASE-NAME parameter specifies the base
name of the index file minus the extension (e.g.  'nodex' for
'nodex.idx'), and SYSOP-FILE is the name of the sysop lookup file.  You
must not specify any path names for the latter two parameters - these
files must always reside in the directory pointed specified as argument
to NODEPATH.  See The 'NodePath' Keyword, for more
information.

   Normally, you will compile all raw nodelists that you have into a
single v7 index.  In this case, simply use the example from above.  You
will only have to bother about separate indices, domain names and the
like if you have two distinct othernets with identical zone numbers.

6.2.31 Origin
-------------

Syntax:
     'Origin STRING'
Example:
     'Origin We love MsgEd TE!'

   The origin line terminates an echomail and tells the sender's FTN
address.  Thus it has an important technical function.  On the other
hand, the origin line also leaves space for about 55 bytes of free-form
text.  They can be used to place your BBS system's name there, but you
can also place other meaningful or meaningless messages there.  The text
that you specify as the STRING parameter may include whitespace
characters.  It will simply be copied into the origin line, but be aware
of the fact that MsgEd TE might have to truncate the text in order to
prevent the origin line from getting longer than 79 characters.

   You can use macro tokens in the origin line to provide some sort of
dynamic information.  The macros will be expanded to their value when
the message is saved.  The following macros can be used:

'@N'
     full name of message receiver
'@F'
     first name of message receiver
'@L'
     last name of message receiver
'@Y'
     full name of message author
'@D'
     complete message date (as for example: '24 Dec 97')
'@DD'
     message date, day number (as for example: '24')
'@DW'
     message date, week day (as for example: 'Mon')
'@DM'
     message date, month (as for example: 'Dec')
'@DY'
     message date, 2 digit year (as for example: '97')
'@D4'
     message date, 4 digit year (as for example: '1997')
'@DC'
     message date, century (as for example: '20')
'@T'
     complete message time (as for example: '12:30:24')
'@S'
     message subject
'@A'
     area tag
'@I'
     message size
'@Q'
     quote ratio
'@@'
     a single @ character

   In MsgEd TE, you can also specify more than one 'Origin' keyword in
the configuration file.  MsgEd TE will then automatically select a
random line out of those that you have specified each time that it has
to generate an origin line.  This feature is called "origin shuffling".

6.2.32 Outfile
--------------

Syntax:
     'Outfile FILE-NAME'
Example:
     'Outfile export.txt,t'

   This keyword is used to configure the default FILE-NAME that should
be used as a default selection for exporting mails as text by pressing
<Alt>-<W>.

6.2.33 OutputCharset
--------------------

Syntax:
     'OutputCharset CHARSET'
Example:
     'OutputCharset IBMPC'

   This specifies which character set should be used for writing
messages with special characters (like umlauts, accents, cyrillic
letters, IBM graphics).  The mail will be converted into the given
charset, and the proper charset kludge will be appended.  This does only
apply to areas which have the '8' flag set, because in all other areas,
the messages will always be converted into a 7-bit ASCII representation.

   The charset that you specify as CHARSET argument must be a level 2
charset, and a matching translation table must be contained in the
'writmaps.dat' file.  If there isn't such a table, you will only see
this from the fact that the written message will contain 8-bit
characters, but no charset kludge(!).  So be careful not to misspell the
option.

   See Using Special Characters like Umlauts or Cyrillics - The Charset Kludge,
for more information on the concept
of charset kludges.  You can list all charset kludges that are listed in
this section as arguments to the 'OutputCharset' keyword, but usually
'IBMPC' is the right option to choose, according with a proper
'CharsetAlias' definition (see The 'ChrasetAlias' Keyword).
Msged TE will then also emit a proper 'CODEPAGE'
kludge.  A Russian user will probably want to use 'CP866'.  Once the
'CPxxx' charset kludges have found more widesprad use in Europe,
'OutputCharset CP850' should replace 'OutputCharset IBMPC' also in
Western European countries.

   The character set that you use for output does not need to match the
charset that your computer is using internally; MsgEd TE will do all
necessary conversion.

6.2.34 Printer
--------------

Syntax:
     'Printer PRINTER'
Example:
          ; On UNIX:
          Printer -Phplj4
          ; On OS/2, DOS, Windows:
          Printer LPT3:

   This keyword is used to configure the printer that MsgEd TE will use
when printing a message (<Alt>-<W>).  The usage of this keyword depends
on your platform:

   On OS/2, DOS and Windows, it specifies the special device filename
for printing.  The default value is 'PRN'.  Other values that make sense
are 'LPT1:', 'LPT2:' and so on.

   On UNIX, MsgEd TE prints by piping the message text into the 'lpr'
command, and the 'Printer' keyword is used to configure additional
options to the 'lpr' command.  By default, no additional options are
used.  If, for example, you do not want to use the default queue, but
the queue named 'hpjl4', you would use 'Printer -Phplj4' in your
configuration file.

6.2.35 PrivateNet
-----------------

Syntax:
     'PrivateNet FAKENET-NUMBER'
Example:
     'PrivateNet 12345'
   Modern mailers, message reader/editors (including MsgEd TE), and mail
processing programs are fully 4D address aware and do not require the
'PrivateNet' keyword.  However, if you are operating a point system
whose boss node uses a "fakenet" to service points, this keyword should
be used.

   The FAKENET-NUMBER parameter specifies the private net number number
to use for non-4D points.  The fakenet point scheme was designed to work
with systems which were unable to support true points, such as
BinkleyTerm 2.40 and lower.  The actual "fakenet" number and address
must be assigned to you by your boss node.

6.2.36 Quick
------------

This keyword is described in the section about manual message area
definition (see Manual Area Definition).

6.2.37 QuickBBS
---------------

Syntax:
     'QuickBBS PATH-NAME'
Example:
     'QuickBBS e:\fido\hmb'

   In order to use a hudson message base (also known as Quick BBS
message base), you have to specify the path where the HMB files are
stored using the PATH-NAME parameter of the 'QuickBBS' keyword.  You
must specify the 'QuickBBS' keyword in the configuration file before any
'Quick' or 'AreaFile' keyword.

6.2.38 Quote
------------

Syntax:
     'Quote QUOTE-STRING'
Example:
     'Quote _&>_'

   When quoting a mail, every line of quoted text will be prefixed with
QUOTE-STRING.  The following tokens inside the quote string have special
meanings:

'&'
     will be replaced with all initials of the writer of the quoted
     message
'_'
     will be replaced with a whitespace
'^'
     will be replaced with the first initial of the writer of the quoted
     message
'*'
     will be replaced with the second initial of the writer of the
     quoted message

   Following common fidonet practice, you should use '_&>_' as quote
string.

6.2.39 QuoteRight
-----------------

Syntax:
     'QuoteRight COLUMN'
Example:
     'Quoteright 75'

   The COLUMN argument specifies the right margin to use when quoting
text.  Because quoted text - in contrast to normal text - is stored with
a carriage return after each line, you should not specify a value
greater than 75 in order to assure that the text can be displayed on
standard 80 columns displays without problems.

6.2.40 ReadKey
--------------

Syntax:
     'ReadKey KEY FUNCTION'

   This keyword is used to redefine the keyboard layout in message
reading mode.  See Redefining the Keyboard,
for more information.

6.2.41 Readmap and Writemap
---------------------------

Syntax:
          Readmap FILENAME
          Writemap FILENAME
Example:
          Readmap /usr/local/share/msged/readmaps.is1
          Readmap /usr/local/share/msged/writmaps.is1
     or
          Readmap  c:\msged\readmaps.850
          Writemap c:\msged\writmaps.850

   These keywords are used to tell MsgEd TE where to find the character
set translation map files.  See Using Special Characters like Umlauts or Cyrillics - The Charset Kludge,
for a detailed
explanation.

6.2.42 Right
------------

Syntax:
     'Right COLUMN'
Example:
     'Right 79'

   The COLUMN argument specifies the right margin to use when writing
normal text.  Normally, there is no reason to use this parameter, as
MsgEd TE will always simply use the width of the window or console it is
running in.  Please note that because of the way text is stored in
Fidonet messages (carriage returns are only placed at the end of a
paragraph), it is no problem to use right margins higher than 80.  Even
then, users with only 80 columns will still be able to read your message
nicely formatted.

6.2.43 RobotName
----------------

Syntax:
     'RobotName NAME'
Example:
     'RobotName Areafix'

   Using the NAME parameter of the 'RobotName' keyword, you can specify
names of robot machines like Areafix, Allfix, VoteMgr and so on.  Each
'RobotName' keyword only accepts a single NAME parameter, but you may
repat the 'RobotName' keyword as often as necessary.

   The reason for defining the names of common fidonet robots is the
following: When writing a mail that is addressed to a user name that
matches one of the defined robot names, MsgEd TE will not insert the
usual message template.  (VoteMgr will be confused if the first line in
your Message is "Hello VoteMgr" instead of the expected meta command
...).

6.2.44 Scan
-----------

Syntax:
     'Scan'

   If this keyword is specified, MsgEd TE will automatically scan all
message areas on startup.

6.2.45 SoftCrXlat
-----------------

Syntax:
     'SoftCrXlat ASCII-CODE'
Example:
     'SoftCrXlat 72'

   Fidonet, historically, has a problem with the character with ASCII
code 142 (0x8D). The FTS 0001 document says the following about this
code:

     So called 'soft' carriage returns, 8DH, may mark a previous
     processor's automatic line wrap, and should be ignored.

   Despite of the fact that I do not know any single mail editor which
adds stray 0x8D characters into a mail, without the SoftCrXlat keyword,
MsgEd TE behaves exactly like this: It ignores any 0x8D that it finds in
a message, i.E. it simply does not display it.

   This may be a problem for you because some languages need to use that
character.  For example, in codepage 866, this code represents the
cyrillic big en, or in codepage 437, it is an i with accent grave.

   Specifying the SoftCrXlat keyword changes the behaviour of MsgEd TE
in two ways.  First, as soon as this keyword is present and has a
non-zero numerical argument, Msged will no longer ignore any 0x8D
character in the input, but display it as a normal letter.  So if other
people use those characters in their mails, you will be able to see
them.

   Second, if you yourself type a character which, in the transport
character set that you have chosen (see The OutputCharset Keyword),
would result in a character with hex code 0x8D, it will
be replaced with the character that has the ASCII code which is
specified as argument when the message is being saved.  In the example
above, any 0x8D would be replaced with a character with code 72, which
is the latin big H. This would be the ideal setting for a user in
Russia, who has to use codepage 866 as transport character set, because
the latin big H looks exactly like the cyrillic big en.

   So a Russian user who specifies "SoftCrXLat 72" will be able to see
any big en character that other users write, and any big en character
that he writes will be replaced with it's low-ASCII-look alike, thus
avoiding problems at other message readers.

   Now suppose that you don't want to translate the 0x8D character to
any other value.  If your language uses the i with accent grave, for
example, there is no other equivalent of this character, so you could
only change it to an i without accent grave, which you might not like.
In this case, you can also instruct MsgEd TE to keep the 0x8D character
as is, by setting 'SoftCrXlat 141' (141 is the decimal representation of
0x8D). With 'SoftCrXlat 141', the 0x8d character becomes an ordinary
character for MsgEd TE, i.E. it does not behave different to any other
character any more.

   However, be aware of the fact that this might cause problems on other
systems that behave according to FTS 0001 and ignore any 0x8D
characters.  Another option specifically for the language that needs the
i with accent grave would of course be not to use codepage 437 or 850 as
transport character set, but to use Latin-1 (ISO 8859-1).  In this
charset, all printable characters are at non-critical positions.

6.2.46 SortAreas
----------------

Syntax:
     'SortAreas CRITERIA'
Example:
     'SortAreas GND'

   Normally, MsgEd TE displays all message areas in the order in that
they have been defined in the configuration file and/or in the area
files.

   With the 'SortAreas' keyword, you can instruct MsgEd TE to sort the
areas by certain criteria.  The CRITERIA parameter is a string that
consists of letters each specifying a sort criterium.  The leftmost
letter is the most significant.  The following letters can be used to
define sorting criteria:

'N'
     Sort netmail areas on top, then local areas, then echomail areas.
'T'
     Sort by area tag.
'D'
     Sort by area description.
'G'
     Sort by group.

   The meanings of 'D' and 'T' may vary depending on which area file you
imported the area from.  T is the true area tag, while D is what you
actually see on screen.  You will usually wish to use D, because
ordering by what you see seems to be more logical than ordering by what
you don't see.

   The 'G' criterium works on MsgEd TE area groups.  An area can belong
to a group either because you used the 'Group' statement to add it to a
group, or because the group setting has been imported from a tosser
configuration file.  When areas are sorted by group, those areas that do
not belong to any group will come first, followed by the members of the
group that has been defined first, then those of the group that has been
defined after that one, and so on.

   Please note that the arealist feature of displaying Group separators
can of course only work if the 'G' ciretrium is the first criterium in
your 'SortAreas' statement.

6.2.47 Squish
-------------

This keyword is described in the section about manual message area
definition (see Manual Area Definition).

6.2.48 SwapPath
---------------

Syntax:
     'SwapPath FILE-NAME'
Example:
     'SwapPath c:\temp\msged.swp'

   Use the filename and path to your swapfile as value vor the FILE-NAME
parameter.  This is only for DOS users but it should _definitely_ be
used.  If you don't use it, you must return to the Msged directory
before returning to the editor.

6.2.49 Switch
-------------

This keyword is explained in the section about configuration switches
(see Switches).

6.2.50 Tabsize
--------------

Syntax:
     'Tabsize SIZE'
Example:
     'Tabsize 8'

   When you enter a message and press the <TAB> key, it will be expanded
into the number of white space characters that you have specified as
SIZE argument to the 'Tabsize' keyword.  <TAB> characters in other
messages will not be expanded.

6.2.51 Template
---------------

Syntax:
     'Template FILE-NAME'
Example:
     'Template msged.tpl'

   The template file is used to define standard "hello strings", signoff
messages, and much more.  See the provided sample template file for
information on how to do this.  Specify the filename of your template
file as the FILE-NAME parameter to the 'Template' keyword.

   You can specify multiple template files by repeating the 'Template'
keyword on a new line for each filename, but the 'Template' keyword
itself can only take one argument.  See The 'Group' Keyword,
for applications of this.

6.2.52 TossLog
--------------

Syntax:
     'TossLog FILE-NAME'
Example:
     'TossLog echotoss.log'

   The log file named FILE-NAME will contain a list of area tags of all
areas into which you have entered messages.  Such files are usually
named ECHOTOSS.LOG or CONFMAIL.OUT and are used by tossers to accelerate
the scanning process.  In MsgEd TE, the echotoss log file is updated
immediately as soon as you have entered a new message.

6.2.53 UserList
---------------

Syntax:
     'UserList FILENAME'
Example:
     'UserList e:\nodelist\fidouser.lst'

   The fido user list file is a text file that contains all fidonet
sysop names and the corresponding node numbers.  It is used for looking
up node numbers by sysop name.  A fido user list file is typically named
'fidouser.lst'.  You can specify up to two fido user list files by
repeating the 'UserList' keyword.

   Note that even when you are using a version 7 lookup, it is still
preferable to also have a 'fidouser.lst' file and to use the 'UserList'
keyword, because only the fidouser list file lookup routines of MsgEd TE
can deal with multiple matching node numbers for one sysop name (they
will present you a list to select from), while the V7 lookup routines
currently cannot do this.

   The exact format of a fido user list file is as follows: Each line in
this file must have eactly the same length.  Sysop names are left
justified and node numbers are right justified.  Node Numbers must come
after column 40.  The file must be sorted alphabetically in a way like
the C 'strcmp()' function would do it.

6.2.54 UserOffset
-----------------

Syntax:
     'UserOffset USER-OFFSET'
Example:
     'UserOffset 0'

   See The 'Name' Keyword, for information about the meaning of
the USER-OFFSET parameter and lastread pointer principles.  The
'UserOffset' keyword specifies a default user offset number valid for
those users that do not have their individual user offset number
configured in their 'Name' statement.

6.2.55 UUCP
-----------

Syntax:
     'UUCP ADDRESS'
Example:
     'UUCP 242:4900/99.0'

   The ADDRESS parameter designates the FTN address of the gateway that
your are using to send Internet/Usenet e-mail.  See Using MsgEd TE for e-mail and newsgroups,
for more information.

6.2.56 UucpName
---------------

Syntax:
     'UucpName NAME'
Example:
     'UucpName UUCP'

   Some Internet gateway software requires that mail addressed to the
gateway must be addressed to a specific user name in order to be gated
into the Internet.  This specific user name is usually 'UUCP', and you
can specify it as the NAME parameter to the 'UUCP' keyword.

   If your gateway is using a better gateway software, like Fidogate, it
will not have this restriction.  Instead, such gateway software uses the
name fields in the FTN header to exchange real name information.  In
this case, you should specify 'UucpName *', which tells MsgEd TE that
the gateway software allows any name to be put into the FTN header
field.

   See Using MsgEd TE for e-mail and newsgroups,
for more information.

6.2.57 UucpName
---------------

Syntax:
     'UucpReplyTo EMAIL@ADDRESS'
Example:
     'UucpReplyTo user@some.domain.com (Joe Sysop)'

   The Internet e-mail standards specified so-called 'Reply-To:' header
lines.  The presence of such a header line speicifes that any reply to
this message should not be sent to the sender of the mail, but to the
alternate e-mail account that is specified in the 'Reply-To:' header.

   A common scenario is the following: You have two e-mail accounts, one
at home and one at your university or at your office.  You have set up
the account at your university to send copies of all incoming messages
to your account at home.  Then you want, of course, that all replies to
any e-mail you write are directed at your university account, because
you can read any mail that arrives at the university both at the
university or at home, while an e-mail that you receive at home won't be
visible at the university.  Therefore, if you are writing an e-mail from
your home account, you want to insert a 'Reply-To:' header line that
points at your university account.

   If you sepcify the 'UucpReplyTo' configuration keyword, Msged will
insert such header lines whenever a netmail is created that is addressed
to your UUCP gateway.  The e-mail address that you specify as arugment
to the 'UucpReplyTo' keyword may also include realname configuration in
parentheses, like shown in the example above.  The header line that is
created by the example above would look like

     Reply-To: user@some.domain.com (Joe Sysop)

   Please note that of course the whole thing can only work if your
gateway software can recognise 'Reply-To:' headers in fido netmail.  As
always, Fidogate can, while others probably can't.

6.2.58 Writemap
---------------

Syntax:
     'Writemap FILENAME'

   See The Readmap and Writemap Keywords, for more
information.

6.3 Switches
============

Switches are used to configure the behaviour of MsgEd TE. In contrast to
a full configuration keyword, which is used to pass detailed parameters
to MsgEd TE, a switch toggles a simple state that can be turned on or
off.  Switches are usually used to switch certain features on or off.

6.3.1 How to turn switches on and off
-------------------------------------

To turn a switch on or off, you can use the 'Switch' keyword, which has
the following syntax:

     Switch SWITCH-NAME On
     Switch SWITCH-NAME Off

   The SWITCH-NAME parameter must be the name of a valid switch (a
complete list of switches follows below).  The first line from above
turns the selected switch on, the second turns it off.  (You knew it
before, did'nt you?  <g>).

   For example, in order to turn the 'SEEN-BYs' switch on, you would add
the following line to your configuration file:

     Switch SEEN-BYs On

6.3.2 List of Available Switches
--------------------------------

The following switches are available:

'AdaptiveCase'
     The 'AdaptiveCase' switch is only relevant if you are running the
     Unix/Linux version of Msged.  It should be turned on if you are
     accessing DOSish file systems (via Samba, NFS or the FAT or HPFS
     file system drivers), from Msged running on Unix, or if DOS
     programs have access to your Unix file system.  DOSish fidonet
     programs usually create a really messed up message base with mixed
     case spelling (i.E. it might contain both '.MSG', '.msg' and '.Msg'
     file name extensions in a single netmail directory).  If the
     'AdaptiveCase' switch is turned on, each time that Msged tries to
     open or create a file, it will first do a search over the directory
     to determine the correct spelling of a file.  This enables Msged to
     cope with such mixed spelling as it is often found in DOSish
     message base directories.  - On the other hand, if only Unix
     programs have access to your message base and the message base is
     stored on a Unix file system, you can turn this switch off.  This
     will give you a little performance improvement and save you about
     200 kilobytes of memory (which is otherwise used for directory
     caching).  Default: Off.

'ArealistExactMatch'
     When the area list is displayed, you can search a message area by
     entering the first few characters of this name.  This is the
     default.  If you turn off the 'ArealistExactMatch' switch, _any_
     substring is matched in an area search; you don't have to type an
     area name from the beginning.  Default: On.

'ChopQuote'
     When set to on, and you are quoting a message for reply, this
     switch will cause all quoted lines at the end of the message to be
     removed (chopped) when the message is saved.  This works only when
     using the internal editor.  If you are using an external editor,
     ChopQuote has no effect.  When set to off, all quoted lines are
     saved, regardless of their location in the message.  Note that you
     can also manually chop quotes by pressing <Alt>-<L>.  Default: Off.

'BS127'
     Most UNIX consoles (xterm, syscons, and many others) return the
     ASCII code 8 (<Ctrl>+<H>) if you press the backspace key, and ASCII
     code 127 or an extended escape sequence if you press the <Del> key.
     However, there are some exceptions, notably the Linux system
     console.  The Linux console returns ASCII code 127 if you press the
     backspace key.  The result is that the backspace key behaves like
     <Del> in MsgEd TE, i.E. it deletes the character under the cursor
     instead of the character on the left.  As this is probably not what
     you want, you can change this behaviour by switching the 'BS127'
     switch on.  You will probably want to enclose the 'Switch BS127 On'
     statement in a Conditional that tests if the 'TERM' environment
     variable is set to 'Linux'.  See Conditional Statements in the Configuration File,
     for more information.  Default:
     Off:

'Carthy'
     This switch fine-tunes the behaviour of the 'delete_line' function
     of the internal message editor, which is usually bound to <Alt>-<D>
     and <Ctrl>-<Y>, for the special case that you delete the very last
     line of a message.  If the switch is on (default behaviour), the
     last line will be cleared, but the cursor will remain there.  This
     way, if you are in the middle of a message and press <Ctrl>-<Y>
     multiple times intending to zap the rest of the message, you will
     never delete anything that is above the line where you started to
     press <Ctrl>-<Y>.  If you turn the switch off (behaviour of older
     versions of Msged TE), the last line will be deleted completely,
     and the cursor will be moved to the previous line.  The switch name
     'Carthy' is an appreviation for the function description, "*C*ut
     *A*nd *R*emain *TH*ere when pressing Alt+*Y* on the very last
     line".  Or well ... the true reason is that there was a user named
     Matt Mc_Carthy who really got mad about the old behaviour of the
     editor, so I implemented the switch and the new behaviour for him.
     Default: On

'Colors'
     This switch is only relevant for the Unix versions of MsgEd TE. If
     it is disabled, MsgEd TE will not send any ANSI color codes to the
     terminal, but will restrict itself to the most basic monochrome
     text styles "normal", "bright" and "inverted".  This allows you to
     use MsgEd TE on terminals like the standard xterm, hardware VT100
     terminals, and others that do not understand color codes.  Note
     that you'd better not use the 'Color' configuration keyword, nor
     include any color scheme file, as long as this switch is disabled.
     See Colors in the Unix version, for more information.  Default:
     Off for Unix, On for all other versions.

'Confirm'
     By disabling this switch, you will put MsgEd TE into the "You asked
     for it, you got it!"-mode, that is, you will disable any kind of
     confirmation dialog boxes on critical actions like deleting
     messages, aborting message entry, and the like.  Default: On.
     (That is, by default, MsgEd TE _will_ display confirmation
     requests).

'DateArvd'
     If this switch is set to on, the date/time when a message arrived
     on your system will be displayed on the right side of the header
     information block below the date written information.  You might
     want to turn this off if your tosser should not fill in this date
     field correctly.  Default: On.

'DirectList'
     If you turn this switch on, you will directly drop into the message
     listing mode when entering a message area, instead of the
     individual message reading mode.  Default: Off.

'DMore'
     When set to on, this will display the message number of the message
     currently being read on the top line of the header after the area
     description in the form: '(currentmsg# of maxmsg#)'.  Default: Off.

'DomainMsgid'
     Controls if the address in a MSGID control line will be printed in
     5D with the domain identifier (On) or in 4D without.  When you are
     using an internet gateway which runs the Soupgate software by Tom
     Torfs, you should turn this switch to off in order to enable reply
     linking to self-written messages in newsgroups (Soupgate does not
     properly handles MSGID's with domain identifier, unfortunately).
     Default: On.

'DomainOrigin'
     If turned on, MsgEd TE will generate five dimensional origin lines
     (i.E., it will append the domain string to the address in the
     origin line).  It is suggested that you turn this switch off, but
     is is turned on by default.  Default: On.

'EchoFlags'
     When this switch is set to on, MsgEd TE will append a FLAGS control
     kludge line to messages entered in echomail areas whenever there
     are message attributes other than Loc, Snt and Rcv, and it will
     recognise FLAGS control lines in echomail areas.  (Note that Msged
     always writes FLAGS control lines in netmail areas when necessary
     and always recognises these lines for netmail messages).  Setting
     this switch to on allows the transportation of all sorts of message
     flags in echomail areas.  These flags, however, do not make too
     much sense in echomail areas (or why would you want to set a Pvt
     flag in an echo area for example?).  However, the default is On.

'EditCROnly'
     If turned on, the internal message editor will mark hard carriage
     returns with an ampersand sign.  Default: Off.

'EditTearLines'
'EditOriginLines'
     When these switches are turned off, the tearline and the origin
     line will be appended to an echomail message after you have entered
     and saved it.  When they are turned on, tearline and/or origin line
     will be appended to the message before you start to edit it, so
     that you have for example the chance to modify the origin text or
     similar.  Default: Both On.

'ExtFormat'
     Indicates if text created in an external editor should be
     reformatted by MsgEd TE. It is a good idea to leave this on when
     using an external editor.  Default: On.

'GroupSeparators'
     When this switch is turned on, MsgEd TE will draw horizontal bars
     between different area groups in the area list.  However, this will
     only work if the first area sort criterion is _sort by group_.
     Otherwise, this switch will have no efect.  See The 'SortAreas' Keyword,
     for information on how to make MsgEd TE sort
     your area list by area groups.  See Configuring and Using Message Area Groups,
     for an introduction on how to use groups
     with MsgEd TE. Default: On.

'HardQuote'
     When switched on, this option causes the column formatting to be
     preserved when quoting, i.e.  it doesn't reformat quotes.  Default:
     On.

'ImportFN'
     When using the built-in editor to import a text file into a
     message, this text file will be bracketet by some horizontal dashes
     and the name of the file like this one: '"------ test.txt begins
     -----"' before and '"----- test.txt ends -----"' after the file.
     You can disable these two lines by turning the 'ImportFN' switch
     off.  Default: On.

'LowerCase'
     If you turn the 'LowerCase' switch on, MsgEd TE will convert all
     file names that it reads from the configuration file or from any
     areafile to lower case before it attempts to read to, write from,
     or create any file.  This switch is not very helpful - if you think
     you need it, you should probably use 'AdaptiveCase' instead.

'MSGIDs'
     MSGIDs are used to uniquely identify a message coming from your
     system.  Unfortunately no two message editors use the same
     MSGID-generating algorithm, so you cannot guarantee that you
     conform to the MSGID specs unless you have used a specific message
     editor (only) for a particular address in a 3-year period.  Most
     people just ignore this potential problem and use them anyway.
     Leaving MSGIDs ON will help mail tossers in duplicate message
     checking and/or reply linking.  Default: On.

'NetmailVia'
     If this switch is turned on, MsgEd TE will append a Via control
     line to each netmail entered.  You should turn this switch on, if
     your tosser does not append Via lines to netmail that originates
     from your system (like Squish does), but you should switch it off
     if your tosser does append via lines to netmail even if the mail
     originates from your own system (like Fastecho does).

'OpusDate'
     The old MsgEd documentation states differently, but judging from
     the source code, turning this flag _on_ would _stop_ MsgEd TE from
     _reading_ the Opus date_written and date_arrived date fields of
     Fido *.MSG messages.  MsgEd TE will, however, always fill in those
     fields (in the worst case with the current timestamp).  Probably
     you should leave this flag as is.  Default: Off.

'Origins'
     This switch controls if echomail messages will be appended with an
     origin line.  You absolutely _must_ leave this switch turned on,
     because origin lines are technically necessary for a smooth
     operation of the network.  Default: On.

'PseudoGraphics'
     This switch is currently only of interest for the Unix version.  If
     turned on, MsgEd TE will query your termcap database to see if your
     terminal can draw nice pseudgraphics characters for frames around
     windows and dialog boxes, and if so, use them instead of the
     default "minus, plus, pipe" - style frames.  However, on a lot of
     Unix configurations the termcap database contains false information
     about this capability, or the TERM variable is not properly set.
     Turning on the switch may or may not work on your system.
     Therfore, the default is: Off.

'QQuotes'
     This switch controls how MsgEd TE will modify the quote string when
     quoting text that already is quoted.  When turned on, MsgEd TE will
     try to add another '>' character to the existing quote strings.  If
     turned off, MsgEd TE will not modify existing quote strings and
     thus behave much like Maximus 2.0 or TimEd do.  Default: On.

'RawCC'
     This switch is only of relevance if the 'SaveCC' switch is turned
     on.  Then, if 'RawCC' is on, the raw cc: msg is saved (along with
     the cc: header that you typed in, so that if you re-edit the
     message, also all carbon copies will be re-generated).  Otherwise,
     the first formatted cc: will NOT be marked kill/sent and will
     therefore remain as a future reference, but the original raw
     message will not be saved.  Default: On.

'RealMsgN'
     If this switch is turned on, the message list screen (<Alt>-<L>)
     will display the actual message number of each message instead of
     displaying the messages in sequential order, starting with 1.
     Default: Off.

'ReceiveAllNames and ReceiveAllAddresses'
     These switches control under which circumstances the 'Rvd' flag of
     a netmail is turned on, indicating that the mail has been received
     (read) by you.  When these switches are turned on, the flag is set
     whenever the destination address of the mail matches any of your
     AKAs, and whenever the destination user name of the mail mathes any
     of the user names that you have configured with the 'Name' keyword.
     Default: Both On.

     You should turn off 'ReceiveAllNames' if you have configured
     multiple user names that belong to different persons (i.E. you and
     your girl friend / boy friend <g>).  In this case, only the user
     name that currently is active will count when determining if the
     message is addressed to you or not.  You can switch the active user
     name by pressing <Ctrl>-<U>.

'RightNextUnreadArea'
     When in message reading mode, and this switch is set to on, and
     there are no more unread messages in the current message area,
     pressing the right arrow key will go to the next area with unread
     messages.  Default: Off.

'SaveCC'
     When generating carbon copies, and if this switch is turned on, a
     duplicate of the original message is saved with no kill/sent flag
     set for future reference, and possible re-editing and/or resending
     (along with the normal copied messages that are sent out and
     flagged kill/sent).  Default: On.

'Seen-Bys'
     This switch is a synonym for the 'ShowSeenBys' switch.  See below.

'Shadows'
     If this switch is enabled, MsgEd TE will draw nice shadows round
     dialog boxes and other popup windows.  You might want to disable
     this switch if you use the Unix version of MsgEd TE, because on a
     VT100 compatible terminal, drawing those borders can slow down the
     program considerably.  Default: On.

'ShowAddr'
     If this switch is enabled, the FTN address that you are currently
     using for the current area will be displayed on the left-hand side
     of the line that separates the message header from the message
     text.  Default: On.

'ShowCR'
     If turned on, MsgEd TE will mark the location of hard carriage
     returns with ASCII code 20, as known from common word processors.
     This might not work on a VT100 terminal.  Default: Off.

'ShowEOL'
     If turned on, MsgEd TE will mark the location of each end-of-line
     character with ASCII code 29.  This will only work if the 'ShowCR'
     switch is also turned on.  Default: Off.

'ShowNotes'
     If turned on, MsgEd TE will display kludge line information in
     message reading mode.  You can also toggle this switch during
     program execution by pressing <Alt>-<V>.  Unlike in older MsgEd
     versions, this switch does not pertain to origin and/or tear lines.
     Default: Off.

'ShowOrigins'
     This switch toggles the display of origin lines in message reading
     mode.  Default: On.

'ShowSystem'
     This enables the lookup and display of a system name in your
     compiled version 7 nodelists.  If set to on, the nodelisted system
     name will appear in the header, after the sender's name and
     address, in netmail and echomail message areas.  If switched off,
     the lookup will not be performed.  Default: On.

'ShowTearlines'
     This switch toggles the display of tearlines in message reading
     mode.  Default: On.

'ShowSeenBys'
     If this switch is turned on, MsgEd TE will display SEEN-BY lines in
     message reading mode.  This is probably only useful for echomail
     routing debugging purposes.  Default: Off.

'ShowTime'
     Shows the current time.  This isn't a real time clock; it simply
     shows what the current date and time were when the screen was last
     refreshed with a new message, or when other keyboard hits were
     detected.  Default: Off.

'SOTEOT'
     If this is set to on, MsgEd TE will add SOT and EOT (Start Of
     Text/End Of Text) kludge lines to bracket the text in the message
     body.  Please note that Paul Edwards' SOT/EOT specification does
     not permit domains in echomail origin lines.  If both the
     'DomainOrigin' and 'SOTEOT' configuration switches are enabled,
     MsgEd TE will exit and suggest to disable one or the other.
     Default: Off.

'SquishLock'
     If the 'SquishLock' switch is turned on, MsgEd TE will lock every
     message area that is entered (and of course unlock it when it is
     left), thus effectively denying access to this area to any other
     program.  This will result in a considerable speed increase when
     browsing message areas, but it has the drawback that the tosser
     will not be able to toss to an message area as long as it is open
     in MsgEd TE. Also, some other problems have been observed with this
     switch in network environments.  So you'd best leave this switch
     off unless you are running your Fido system on a non-networked,
     single tasking DOS machine.

     Note that this switch has nothing to do with data integrity
     concerns.  MsgEd will of course lock the Squish Message Base when
     writing a message in order to insure data integrity even if the
     SquishLock switch is turned off.

     The default value of the SquishLock switch is Off (in contrast to
     the mainstream MsgEd 4.30, where it is turned on by default).

'StatBar'
     Shows a status bar along the bottom of the screen.  Default: On.

'Tearlines'
     This switch controls if echomail messages will be appended with a
     tear line (three consecutive dashes) or not.  You should leave this
     switch on.  Default: On.

'TZUTC'
     Msged generates a TZUTC kludge line according to FSP-1001 by
     default.  This kludge line gives the recipients of your mail a hint
     as to in which timezone you are living.  This is important because
     message timestamps in fido messages always show local time, so they
     are useless for the recipient without this kludge line information.
     Msged automatically detects your timezone.  In case it is doing
     this wrong, please send a bug report and disable generation of this
     kludge line by setting the 'TZUTC' switch to off.  Default: On.

'UseLastr'
     You should leave this switch turned on.  It instructs MsgEd TE to
     use the lastread pointer for Fido *.MSG style areas.  On the other
     hand, turning this switch off probably does not disable _all_
     lastread pointer handling code in MsgEd TE ... Older MsgEd TE
     versions had this switch turned off by default and it was
     undocumented.  Hence a lot of problems with lastread pointers in
     those versions ... Default: On.

'UseMouse'
     Some features of MsgEd TE can be controlled through the use of a
     mouse.  This switch tells Msged whether or not you're using one.
     Note that the Windows NT and the Unix versions of MsgEd TE
     presently do not support a mouse at all.  - Default: On.

'UsePID'
     If this switch is turned on, MsgEd TE will put its version
     information in a @PID kludge line, and leave the tearline blank.
     If turned off, MsgEd TE will not generate a @PID kludge, but put
     its version information in the tear line.  Default: Off.

'UseTosserGroups'
     This switch controls if MsgEd TE will read any avialable group
     information from an 'Areafile' or not.  If turned on, and if the
     areafile contains group information that can be read by MsgEd TE
     (currently this is the case for Fastecho and Fidoconfig type area
     files), then each group defined in your areafile (tosser
     configuration) will become a MsgEd TE group, and all areas that
     according to the tosser configuration are member of this group will
     also be members of this group in MsgEd TE. See Configuring and Using Message Area Groups.
     Default: On.

'XXLTearline'
     If you set this, you can have a tearline of up to 79 characters
     (instead of 35), and the Unix version of MsgEd TE will print system
     information in the tearline.  But be aware that this violates FTSC
     rules, so using this is discouraged.  Default: Off.

6.4 Conditional Statements in the Configuration File
====================================================

If you use MsgEd TE with the same configuration file on different
operating systems, you will probably want to make some settings in the
configuration file dependent on the environment you are currently
running in.  This is where "Conditionals" come into place.  A
Conditional can be used to include a certain part of the configuration
file only if a certain version (OS/2, DOS, ...)  of MsgEd TE is running,
or only if an environment variable has a certain value.

6.4.1 Formulating Conditional Statements
----------------------------------------

The easiest form of a Conditional is as follows:

     IF CONDITION
       CONFIGURATION STATEMENTS ...
     ENDIF

   The CONDITION parameter can simply be an operating system name like
'OS/2' or 'Linux'.  You will soon see other conditions that can be
formulated (see Conditions that can be tested).  For
the moment, we will always use operating system names as conditions.

   For example, the following statement will only be evaluated on OS/2:

     IF OS2
        Editor c:\boxer\b2.exe
     ENDIF

   In addition, you can specify that an alternate block of statements
should be evaluated if the condition was not true:

     IF OS2
        ;OS/2 version of the Boxer Editor
        Editor c:\boxer\b2.exe
     ELSE
        ;DOS version of the Boxer Editor
        Editor c:\boxer\b.exe
     ENDIF

   If you want to test for multiple configurations, the ELSEIF statement
is handy.  Instead of writing a complicated statement like

     IF OS2
       Editor c:\boxer\b2.exe
     ELSE
       IF UNIX
         Editor /usr/bin/vi
       ELSE
         ;Must be DOS
         EDITOR c:\boxer\b.exe
       ENDIF
     ENDIF

   you can simply write:

     IF OS2
       Editor c:\boxer\b2.exe
     ELSEIF UNIX
       Editor /usr/bin/vi
     ELSE
       Editor c:\boxer\b.exe
     ENDIF

   For compatibility with other Fidonet editors, the 'ELIF' command can
be used instead of the 'ELSEIF' command.

   As you might already have guessed from the examples, conditionals can
be nested down to any depth, that is, inside an 'IF' - 'ENDIF' - block,
you can start another 'IF' block, and so on.

6.4.2 Conditions that can be tested
-----------------------------------

We already saw that operating system names can be used as conditions for
the 'IF' command.  Below, you see the complete list of conditions that
can be used:

'IF OS2'
'IF OS/2'
     These conditions are true if you are running the OS/2 version of
     MsgEd TE

'IF DOS'
     These conditions are true if you are running any DOS version (16
     bit or 32 bit) of MsgEd TE.

'IF DOS16'
     This condition is true if you are running the standard 16 bit DOS
     version of MsgEd TE.

'IF 386'
     This condition is true if you are running the 32 bit DOS version of
     MsgEd TE.

'IF W32'
     This condition is true if you are running the Windows 95/98/NT
     version of MsgEd TE.

'IF UNIX'
     This condition is true if you are running any Unix version (Linux,
     FreeBSD, AIX, Rhapsody, ...)  of MsgEd TE.

'IF LINUX'
     This condition is true for any version of MsgEd TE that announces
     itself as 'MsgEd/LNX TE'.

'IF 0'
     This condition is always false.  It is useful if you want to
     disable a large part of the configuration file, but do neither want
     to erase it nor to place semicolons in front of each line.  Simply
     place 'IF 0' and 'ENDIF' around such a part of the configuration
     file.

'IF 1'
     This condition is always true.

'IF VARIABLE=VALUE'
     This condition is true if the specified environment VARIABLE has
     the specified VALUE.  For example, on OS/2, 'IF
     HOSTNAME=mycomputer' will be true only if you have 'set
     HOSTNAME=mycomputer' in your 'config.sys' file, or if you have
     given the 'set HOSTNAME=mycomputer' command on the command line
     before starting MsgEd TE.

6.4.3 Usage example for Conditionals
------------------------------------

Here are some more useful examples for Conditionals in the configuration
file:

Specifying a swap file for the 16 bit version:
          IF DOS16
            Swappath c:\temp\msged.swp
          ENDIF

Selecting the proper Origin string:
          IF OS2
            Origin "Warp 4, Mister Sulu!"
          ELSEIF W32
            Origin "My employer forces me to use Windows ..."
          ELSEIF DOS
            Origin "DOSwidanja!"
          ELSEIF UNIX
            IF LINUX
              Origin "Penguins ahead!"
            ELSE
              Origin "UNIX - a professional's choice"
            ENDIF
          ENDIF

Fine-tuning the terminal setup on Unix
          IF UNIX

            ;By default, switch colors off (might cause problems with
            ;VT100 and xterm), as well as shadows (too slow)

            Switch Shadows Off
            Switch Colors Off

            IF TERM=linux
              ;The peculiarities of the Linux console ...
              switch bs127 on
              switch colors on
            ENDIF

            IF TERM=vt220
              switch colors on
            ENDIF

            IF TERM=ansi
              switch colors on
            ENDIF

          ENDIF

6.5 Defining Message Areas
==========================

One of the most important tasks in configuring MsgEd TE is to tell it
where it can find the message areas that you wish to read and to write
to.  There are basically two ways to do this: You can either manually
define each area in the configuration file using the 'Quick', 'Fido' and
'Squish' keyword, or you can tell MsgEd TE to read in the configuration
file of your tosser.  The latter method saves you much work, but
sometimes you will ned to use the manual method to do some fine-tuning.

   It is advisable to put all keywords that have to do with area
configuration at the end of your configuration file, because other
keywords (like 'QuickBbsPath', 'MountDir', et.  al.)  that change the
behaviour of the area definition keywords will only work if they are
read in before the area definition keywords.

6.5.1 Manual Area Definition
----------------------------

You can manually define a message area by putting a line of the
following format into your configuration file:

     FORMAT FLAGS "DESCRIPTION" PATH AREATAG [ADDRESS]

   Except for the ADDRESS parameter, all parameters are mandatory.  The
meaning of these parameters is as follows:

FORMAT
     The FORMAT parameter tells the message base format this message
     area is held in.  It can be either 'Fido', designating a message
     area in Fido *.MSG file format, 'Quick', desingating a message area
     held in a QuickBBS or Hudson Message Base, 'Squish', designating a
     message area in the Squish format, or 'Jam', designating a message
     area in the JAM format (Jam will only be enable when MsgEd TE was
     compiled with Smapi 2.0 or higher).

FLAGS
     The FLAGS parameter is a sequence of characters where each
     character is a flag that toggles a certain option.  The following
     flags can be used:

       1. Flags that specify the message area type.  You have to use
          exactly one of those:

          'm' - netmail area,
          'e' - echomail area,
          'l' - local mail area.

       2. Flags that toggle certain special features of MsgEd TE. All of
          these flags are optional.  See Advanced Concepts, for more
          information on the meaning of these flags.

          '8' - allow 8 bit characters with the proper '@CHRS' kludge,
          'u' - enable internet gateway support for this area,
          'n' - this flag is obsolete.

       3. Default message attributes for messages written in this area.
          You should specify 'p' for netmail areas.  The 'loc' flag will
          always be set, so you can't specify it here.

          'p' - private,
          'h' - hold,
          'k' - kill/sent,
          'd' - direct.

DESCRIPTION
     The DESCRIPTION parameter specifies the name under which the area
     will appear in the area selection screen.  It may contain white
     spaces if you place it between quotation marks.

PATH
     The PATH parameter gives the location of the message area.  For
     Fido *.MSG areas, this is the path name of the corresponding
     directory.  For QuickBBS areas, it is the area number.  For Squish
     and Jam areas, it is the base name of the area files without
     extension.

AREATAG
     The AREATAG parameter gives the official area tag of this area.
     You _must_ specify this parameter for echomail areas, and you _must
     not_ specify this for netmail areas!

ADDRESS
     Finally, the ADDRESS parameter specifies the FTN address to use for
     this area.  You must use this for othernet areas where you must use
     an AKA different to your main AKA.

   Here are some examples:

     Fido   mup "Fidonet Netmail" e:\fido\netmail   2:2476/418.0
     Squish eu  "MsgEd Support"   e:\fido\sq\msged  MSGED_ECHO
     Squish eu8 "OS/2 Debate"     e:\fido\sq\os2deb OS2.DEBATE.GER
     Squish eu  "c't conference"  e:\fido\sq\ctger  CT.GER  21:492/2851.0
     Quick  lp  "To Sysop Area"   1

6.5.2 Reading a Tosser Configuration File (Areafile)
----------------------------------------------------

MsgEd TE can read your area configuration from a tosser configuration
file.  Supported tossers currently include:

   * Fastecho 1.45 and above
   * GEcho 1.20 (but not older versions)
   * hpt / fidoconfig
   * Squish 1.11 and above
   * Generic AREAS.BBS file

   This saves you much work: You only have to declare an area once in
the tosser configuration file, and MsgEd will automatically always
display all areas that are configured in your tosser configuration file.

   The following three keywords are used to perform this goal:

6.5.2.1 AreaDesc
................

Syntax:
     'AreaDesc [HOW] WHAT ...'
Examples:
          AreaDesc tag
          AreaDesc tag desc
          AreaDesc upper tag asis desc

   The tosser configuration file normally stores two sorts if
information about a message area: its canonical area tag, like
'MSGED_ECHO', and a description of the area topic, like 'International
Msged support conference'.  The 'AreaDesc' keyword is used to tell MsgEd
TE how to make up the arealist entry of each area from this information.

   The WHAT parameter specifies what to include.  'TAG' means to use the
areatag, and 'DESC' means to use the description.  You can specify both
parameters separated by a blank like in the example above, in which case
both information will be displayed, separated by a dash.

   The HOW parameter is a modifier for all following WHAT parameters and
specifies how this information should be displayed.  It can be 'ASIS',
which means to display it as in the config file, or it can be 'UPPER',
which means to display anything in upper case, or 'LOWER', i.E. display
everything in lower case letters.

   The default value if no 'AreaDesc' keyword is given is 'asis tag
desc'.

6.5.2.2 AreafileFlags
.....................

Syntax:
     'AreafileFlags FLAGS'
Example:
     'AreafileFlags 8u'

   There is one big problem with reading echo definitions from tosser
configuration files: Those files do not contain all information that can
be specified in a manual area configuration.  Certain features of MsgEd
TE need a flag that has to be set for each area in order to enable that
feature.  For example, in order to be able to write mails with umlauts,
cyrillic characters etc., you must set the 8 flag for each area,
designating that high ASCII characters are allowable therin.  This is
where you use the 'AreafileFlags' keyword.

   The FLAGS parameter has the same syntax as the FLAGS parameter of the
'Fido', 'Quick' and 'Squish' keywords (see Manual Area Definition).

   You must specify the 'AreaFileFlags' keyword _before_ the 'AreaFile'
keyword which it should apply to.  Then, all areas imported from the
area files will have the specified FLAGS.

   If you want only a few, but not all areas form an areafile to have
some flags, you can manually redefine areas with the syntax described in
the preceding section.  For this to work, the manual redefinition must
come _after_ the 'AreaFile' keyword.  Vice versa, if you want almost all
areas from an areafile to have a certain flag, but want a few
exemptions, you should use the 'AreaFileFlags' and 'AreaFile' keywords
to import all areas from the areafile with the specific flag set.  After
that, you can redefine some areas manually without this flag.

   Note: Using 'AreaFileFlags' to globally turn on the 'u' flag probably
won't hurt you.  On the other hand, you should only use 'AreaFileFlags'
to globally turn on the '8' flag if you know that the moderators of the
echo areas that you are posting in do not forbid 8-bit-codes.

6.5.2.3 Areafile
................

Syntax:
     'Areafile TYPE FILENAME'
Examples:
          Areafile Fastecho c:\fastecho\fastecho.cfg
          Areafile Squish c:\squish\squish.cfg
          Areafile AreasBBS c:\squish\areas.bbs
          Areafile GEcho c:\gecho
          Areafile Fidoconfig

   This keyword tells MsgEd TE which areafile to use.  The TYPE
parameter designates the type of tosser configuration file to use.  It
can be 'Squish', 'Fastecho', 'GEcho', 'fidoconfig' or 'AreasBBS'.  The
FILENAME parameter specifies werhe to find the tosser configuration that
should be read.  It's useage depends on the type of your tosser:

   * 'AreasBBS', 'Fastecho'

     The path to and filename of the configuration file, like
     'c:\fastecho\fastecho.cfg'.
   * 'Gecho'

     You must specify the path to your GEcho installation directory
     rather than a configuration file name, e.g.  'c:\gecho'.  Only
     GEcho 1.20 is supported.
   * 'fidoconfig'

     According to the Husky policy of doing things, the path to the
     fidoconfig file is read from the default value or from the
     'FIDOCONFIG' environment variable.  Hence, for fidoconfig, the
     second parameter of this keyword is not used to configure the path
     to the config file.  Instead, it is used to configure how the
     config file should be treated.  This can be:

        * 'Areas'

          Only the mail area configuration (echo-, local and netmail
          areas) is read from fidoconfig, i.E. the fidoconfig file is
          only used like any other areafile.  This is also the default
          behaviour if you omit the second parameter.

        * 'Settings'

          If you specify 'Areafile Fidoconfig Settings', MsgEd TE will
          read as much configuration settings from the fidoconfig file
          as possible.  Among other things, this is the user name(s),
          the Fido AKA(s) and the echotoss log file position.  Mail area
          configuration, on the other hand, is _not_ read.

        * 'Both'

          With this setting, both the general configuration settings and
          the mail area configuration will be read from fidoconfig.

     The fidoconfig routines are able to follow include statements
     inside the fidoconfig file automatically.

   * 'Squish'

     The path to and name of the configuration file, like in
     'c:\squish\squish.cfg'.  Plase note that only the area definitions
     from this file itself will be read.  If the Squish configuration
     file references another 'areas.bbs' file, you have to define it
     separately for MsgEd TE using a second 'Areafile' statement.

Appendix A Compiling the Source Code
************************************

This appendix provides information on how to compile the source code of
MsgEd TE. Most of the information of this chapter applies to all
supported platfroms (including Unix, OS/2, Windows and DOS).

   This appendix only covers stand-alone compilation of MsgEd TE. You
can also decide to build MsgEd TE in the Husky environment, i.E. link
MsgEd TE against the fidoconfig library and use the 'huskymak.cfg'
compile configuration file.  If you want to do this, please refer to the
compliation and installation instructions which are provided by the
Husky team.  They can be found in the file 'INSTALL' in the 'huskybse'
package.

   In the following we are assuming you don't want to deal with
'huskymak.cfg', don't want to download 'fidoconfig' etc., but simply
build a standard MsgEd TE executable for your operating system.  It will
still be able to read a 'fidoconfig' type configuration file, as MsgEd
TE also has it's own fidoconfig access routines.

A.1 Step 1: Preparing the build directories; Obtaining the SMAPI
================================================================

Besides the source code of MsgEd TE, which is supplied in
'msged-te-6.3.tar.gz' or in 'MSGTE63S.ZIP', you need the source code of
the special edition of the Squish Message API, from here on called
"Smapi", that is required to build MsgEd TE.

   Unfortunately, there are a lot of different versions of the Smapi
floating around.  The best choice would be if you would use the same
version of Smapi that I used to compile the binary releases.  for MsgEd
TE 6.3, this is Smapi 1.6.3, which can be obtained as 'smapi-2.5.tar.gz'
or as 'smapi25.zip'.  You should be able to obtain these files from the
same location you got MsgEd TE from.

   Alternatively, you can use any _newer_ Smapi from the Husky
development stream.  All other versions of the Smapi or the Msgapi32 are
probably not suited for building MsgEd TE. They are definitely not
suited if you want to compile for Unix.

   After you have obtained 'SMAPI163.ZIP' and 'MSGTE6_S.ZIP', unzip them
into two directories at the same level.  The files in the archives stick
to the 8.3 notation, so you can even do this on FAT drives.  You should
use either Info-ZIP for unpacking these files, or use pkunzip with the
'-d' option, because the MsgEd TE archives contains subdirectories.

   On OS/2, this could look as follows:

     [C:\] mkdir compile
     [C:\] mkdir compile\smapi
     [C:\] mkdir compile\msged
     [C:\] cd compile\msged
     [C:\COMPILE\MSGED] unzip c:\download\msgte63s.zip
     [C:\COMPILE\MSGED] cd ..\smapi
     [C:\COMPILE\SMAPI] unzip c:\download\smapi25s.zip

   If you use the version in '.tar.gz' format, you don't need to make
the subdirectories - the '.tar.gz' files already contain them.  So, on
Unix, it would probably look like this:

     ~ $ mkdir ~/compile
     ~ $ cd ~/compile
     ~/compile $ tar xzf ~/downloads/msged-te-63.tar.gz
     ~/compile $ tar xzf ~/downloads/smapi-2.5.tar.gz

A.2 Configuring - Selecting the proper Makefile for your Compiler
=================================================================

MsgEd TE does not provide a 'configure' skript.  It rather provides a
set of different makefiles.  You "configure" the source code by
selecting the makefile of your choice.

   The following compilers and target operating systems are supported:

     Makefile     | Platform
     -------------+-----------------------------------------
     makefile.bcd | DOS with Borland C++ 3.1 or Turbo C
     makefile.bco | OS/2 with Borland C 2.0
     makefile.bcw | Windows 95/NT with Borland C++ 4.0
     makefile.djg | DOS/386 with DJGPP GCC 2.7.2
     makefile.emo | OS/2 with EMX 0.9c GCC 2.7.2
     makefile.ibo | OS/2 with IBM CSET/2 or Visual Age C++
     makefile.rxw | 95/NT with RSXNT + EMX GCC 2.7.2
     makefile.unx | Any UNIX, BSD or Linux with any compiler
     makefile.bsd | FreeBSD with GCC
     makefile.lnx | Linux with GCC
     makefile.mgw | 95/NT via Mingw32 cpd (running on Unix)

   The following makefiles are also provided, but they are not
supported, either because I do not have the appropriate compilers or
because I cannot give support for some special features they are using.
I try to update these makefiles along with the others, but I cannot make
any promises.

     Makefile     | Platform
     -------------+----------------------------------------------
     makefile.hco | OS/2 with Metware High C
     makefile.qcd | DOS with MS Quick C
     makefile.wcd | DOS with Watcom C
     makefile.wcw | NT with Watcom C
     makefile.wco | OS/2 with Watcom C
     makefile.wcx | DOS/386 with Watcom C

   There is also a file which is simply named 'Makefile'.  This file is
for building using a 'huskymak.cfg' environment, and will not be
described in this manual.

A.3 Selecting Path Names
========================

Msged has to know where to find its primary configuration file and the
character set translation files.  You must tell this at compile time
(the location of all other configuration files can then be configured in
the primary configuration file).  The following paths are selected per
default:

     What file               DOS/WIN/OS2     UNIX
     =========================================================
     Configuration file      msged.cfg       ~/.msged
     Charset Input Map       readmaps.dat    ~/.msged.readmaps
     Charset Output Map      writmaps.dat    ~/.msged.writmaps

   These path's will be different if you compile via 'huskymak.cfg'.

   On Non-Unix systems, you normally do not need to change the default
(which is finding everything in the current directoy).  On Unix, you
might want to change the locations if you are administrator and want to
provide a system-wide default configuration (that can then include files
in the user home directory if necessary).  You can do this by redefining
variables in the Makefile.  Just have a look at the first three lines of
'makefile.unx' to see how it works.

A.4 Building the Executables
============================

Now that you have done all necessary preparations, compilation is easy:

  1. Change into the 'smapi' directory and type 'make -f MAKEFILENAME'
     (replace 'MAKEFILENAME' with the name of the makefile that you have
     selected in the previous step).  This will generate a library, the
     name of which depends on the makefile you used.  For instance
     'libsmapiunx.a' or 'smapiibo.lib'.

  2. Change into the 'msged' directory and type 'make -f MAKEFILENAME'
     (again substituting the proper makefile name).  This will genereate
     the executable, whose name depends on the makefile you used.  For
     instance 'msgedp.exe' or 'msged' or 'msged.exe'.

  3. If, on Unix, you get errors about unresolved symbols when linking
     the MsgEd TE executable, change into the Smapi directory and run
     'ranlib smapiunx.a'.  Then change back to the Msged directory and
     try again.

A.5 Compiling the help file, the charset files and the documentation
====================================================================

After you have created the executables, you need to create some other
files, namedly the compiled online help file, the character set
translation files, and the manual.

   To compile the help file, call the MsgEd TE executable with the '-hc
<infile> <outfile>' options.  On OS/2:

     [C:\COMPILE\MSGED] msgedp -hc msghelp.src msghelp.dat

   and on Unix:

     ~/msged $ ./msged -hc msghelp.src msghelp.dat

   In order for MsgEd TE to behave smoothly in environments where mails
with special national characters are received and/or transmitted (i.E.:
everywhere in Europe, both Western Europe and particularly in Russia),
you must create 'readmaps.dat' and 'writmaps.dat' files _that match your
local character map settings_.  On Unix, this is easily done thanks to
the shell expansion feature:

     ~/msged $ cd ~/msged/maps
     ~/msged/maps $ gcc -o makemaps makemaps.c
     ~/msged/maps $ ./makemaps LATIN-1 *.CHS *.chs

   (If you have misconfigured your Unix to use CP850 or CP437 instead of
ISO-9660, you should enter 'IBMPC' instead of 'LATIN-1' in the example
above).

   On OS/2, DOS and NT it is a little more cumbersome.  First, you have
to compile the 'makemaps.c' file with your C compiler.  Then, you have
to specify all character map files that are to be included into
'readmaps.dat' and 'writmaps.dat' manually:

     [C:\COMPILE\MSGED] cd c:\compile\msged\maps
     [C:\COMPILE\MSGED\MAPS] icc makemaps.c
      (...)
     [C:\COMPILE\MSGED\MAPS] makemaps CP437 IBM_ISO.CHS ISO_IBM.CHS
     IBM_ASC.CHS IBM_MAC.CHS MAC_IBM.CHS IBM_850.CHS 850_IBM.CHS 866_IBM.CHS 1125_IBM.CHS

   Finally, you may want to create the documentation in your favourite
output format.  This requires quite some prerequisite software to be
installed on your system, so you probably might simply want to grab
'MSGTE6_M.ZIP'.

   But if you really want to compile the manual by hand, proceed as
follows: Change to the 'doc/manual' subdirectory:

     [C:\COMPILE\MSGED\MAPS] cd \compile\msged\doc\manual

   or on Unix:

     ~/msged/maps $ cd ~/msged/doc/manual

   There, you have various options.  You can type:

'make info'
     This creates the documentation in GNU info format.  It requires the
     'makeinfo' tool to be installed, and the 'info' viewer for viewing.
     Both should be part of any modern Unix installation.  For OS/2,
     they can be found in 'GNUINFO.ZIP'

'make html'
     This creates the documentation in HTML format.  This requires Perl
     5 to be installed as well as the texi2html.pl perl script.  (The
     latter script does also work on OS/2 with the Perl for OS/2 port).

'make dvi'
     This creates the documentation in DVI format.  DVI can be converted
     to PS with dvips and yields a very high-quality output.  However,
     this requires a working TeX installation and the 'texi2dvi' shell
     script.  (On OS/2, you need pdksh for executing the script and
     EmTeX. With a little manual work, it can also be done with Juergen
     Kleinboehls OS2TeX.

'make inf'
     This creates the documentation in OS/2 INF format.  It requires a
     Texi2Ipf tool as well as the IPFC compiler (which only runs on
     OS/2).

A.6 Installing
==============

You have now created all files that are necessary to install MsgEd TE.
See Installation Procedures and Release Notes, for
information on how to install these files.