1\input texinfo   @c -*-texinfo-*-
2
3@c %**start of header
4@setfilename msged.info
5@settitle MsgEd TE 6.3 - A Public Domain Fidonet Message Editor
6@setchapternewpage odd
7@set MSGED MsgEd TE
8@set VERSION 6.3
9@set EDITION 1
10@defindex kr
11@defindex ke
12@c %**end of header
13
14@iftex
15@parindent=0pt
16@end iftex
17@iftex
18@afourpaper
19@end iftex
20
21
22@titlepage
23@title @value{MSGED} @value{VERSION} Manual
24@subtitle A Public Domain Fidonet Message Reader/Editor
25@author Tobias Ernst @@ 2:2476/418.0
26@page
27@c{empty page to get the page numbering right}
28@end titlepage
29
30@dircategory Fidonet Software
31@direntry
32* Msged: (msged).               Msged is the message reader and editor.
33@end direntry
34
35@node Top
36@top @value{MSGED}
37This document describes @value{MSGED} @value{VERSION}, a Public Domain
38Fidonet Message Reader and Editor Software for OS/2, Windows, DOS and Unix.
39
40@menu
41* Overview::                    What is @value{MSGED}?
42* Installation::                Installation and Release Notes. @emph{Read this!}
43* Introduction::                Using @value{MSGED}. A guide for beginners.
44* Advanced Concepts::           Advanced features and concepts.
45* Keyboard Reference::          How to use and change the key combinations.
46* Configuration Reference::     Explanation of the configuration file.
47* Compiling::                   Appendix: How to compile the source code.
48* Concept Index::               General Index
49* Keyword Index::               Configuration File Keywords Index
50@end menu
51
52@node Overview, Installation, Top, Top
53@chapter An Overview on @value{MSGED} @value{VERSION}.
54
55@value{MSGED} is a message reader and editor software for Fidonet (and
56compatible) network(s), supporting Squish, Hudson, Jam and Fido *.MSG message
57bases. This program is released to the public domain.  There are absolutely
58no usage or distribution restrictions. This is truely free software.
59
60@value{MSGED} emerged from MsgEd, a public domain fidonet message reader
61initially written by Jim Nutt and thereafter maintained by numerous people
62(among them Paul Edwards, Andrew Clarke, and Kim Lykkegaard). @value{MSGED}
63is being developed by Tobias Ernst. You can reach me at 2:2476/418 or via
64e-mail at tobi@@bland.fido.de.
65
66@value{MSGED} tries to support a vast number ooperating system platforms by
67employing portable software design techniques. It is my policy to release
68executables and source code at the same time for all supported platforms,
69among them OS/2, Unix (Linux and FreeBSD as well as commercial Unix systems),
70Windows NT, 16- and 32-bit DOS.
71
72@value{MSGED} is developed with the GNU C compiler and GNU boundary checking,
73which assures high program stability.
74
75@value{MSGED} formerly was an alternative branch to the main Msged
76development line, which was evolving into a slightly different direction, but
77as that main development line seems to have ceased, you can now consider
78@value{MSGED} to be the most recent version of Msged. Since then, most of the
79features of the last incarnation of the main Msged development line, Msged
804.30, have been incorporated into @value{MSGED}.
81
82If you like @value{MSGED} and start to use it as your everyday Fidonet
83editor, please drop me a note saying that you do so at @samp{Tobias Ernst @
842:2476/418} or at @samp{tobi@@bland.fido.de}. I originally started to work on
85@value{MSGED} to create a Fidonet editor that fulfilled some special personal
86needs of mine. Since then, things evolved and I saw myself doing a lot of
87work that I would not have done just for my own needs. Writing this
88documentation is one such example, porting to Windows NT another. If I
89continue to do this work in the future and add new features to @value{MSGED}
90will strongly depend on how much feedback I receive from users that like and
91use @value{MSGED}. Therefore: Don't be shy - drop me a mail. :-)
92
93At this place, I also would like to express my thankfulness to all people
94that helped making @value{MSGED} what it is now, that being all the
95developers that haved worked on the Msged sources in the past, the Husky
96developers, and all the beta testers that used the Pre-Release of
97@value{MSGED} @value{VERSION}.
98
99@node Installation, Introduction, Overview, Top
100@chapter Installation Procedures and Release Notes
101This chapter provides you with information that is necessary to successfully
102install and use @value{MSGED}. Part of this chapter applies to all versions
103of @value{MSGED}, while some sections only apply to a particular operating
104system. If this is the case, the particular operating system is mentioned in
105the section title.
106
107You should carefully read this chapter because it might save you from a lot
108of pain, especially (but not only) when using @value{MSGED} in networked or
109UNIX environments.
110
111@menu
112* Distribution Archives::       Which archives do I need?
113* Non-Unix Installation::       Installing @value{MSGED} on OS/2, DOS, Windows
114* UNIX installation::           Installing @value{MSGED} on Linux or Unix
115* Network Notes::               Using Fido software in a network environment.
116* Known Bugs::                  Known bugs and shortcomings of @value{MSGED}
117* Contact::                     Contacting the author, support, bug reports.
118@end menu
119
120@node Distribution Archives, Non-Unix Installation, Installation, Installation
121@section Which Distribution Archives do I need?
122@value{MSGED} @value{VERSION} is shipped in various distribution
123archives. This section describes the contents of each. You normally do only
124need one of these files containing the executable and documentation for your
125platform, and maybe the file that contains the printable version of the
126documentation. In the following files, ??? must be replaced by the version
127number, e.g. @file{600} for version @samp{6.0.0}.
128
129@table @file
130@item MSGE???O.ZIP
131This archive contains an OS/2 executable, sample configuration files and a
132manual in OS/2 INF format.
133
134@item MSGE???D.ZIP
135This archive contains a 16-Bit DOS executable, sample configuration files and
136a manual in plain text format.
137
138@item MSGE???3.ZIP
139This archive contains a 32-Bit DPMI DOS executable, sample configuration
140files and a manual in plain text format.
141
142@item MSGE???W.ZIP
143This archive contains a Windows 32 bit console executable that should be your
144primary choice when running Windows NT or 2000, sample configuration files
145and a manual in HTML format.
146
147@item MSGE???L.ZIP
148This archive contains a statically linked, pre-compiled Linux executable,
149sample configuration files and a manual in GNU info format.
150
151@item MSGE???M.ZIP
152This archive contains the manual for @value{MSGED} in Postscript and in HTML
153format. If you intend to print the documentation of @value{MSGED}, then you
154should get this file and use the Postscript version, because printing the
155Postscript version of the manual (by copying it to the printer port of a
156postscript capable printer, or by using Ghostscript) will result in the best
157possible output that looks much nicer than if you would print the HTML or
158plain text documentations.
159
160@item MSGE???S.ZIP
161This archive contains the complete C source code for @value{MSGED},
162out-of-the-box makefiles for building @value{MSGED} on DOS, OS/2, Windows,
163and almost every imaginable Unix-like system (tested systems include Linux,
164FreeBSD and Tru64 Unix), sample configuration files, and the texinfo source
165code for the manual that can be used to build the manual in OS/2 INF, HTML,
166GNU info or DVI format.
167@end table
168
169For compiling @value{MSGED}, you also need the @samp{smapi} library. The
170@samp{fidoconfig} library is not needed, @value{MSGED} can now parse
171Fidoconfig without need for this library. The versions of @samp{smapi}
172libary that can be used to build @value{MSGED} @value{VERSION} are:
173
174@table @file
175@item smapi-stable-2.5-src.tar.gz
176or any other version from this stable branch
177@end table
178
179@emph{Attention:} Most of these ZIP-files contain subdirectories, so you
180should use the @samp{-d} option when unzipping them with @file{pkunzip}.!
181
182@node Non-Unix Installation, UNIX installation, Distribution Archives, Installation
183@section Installation on OS/2, DOS or Windows
184
185This section provides guidelines and additional notes for installing
186@value{MSGED} on OS/2, DOS or Windows.
187
188@menu
189* Non-Unix Installation Guide::
190* 16-Bit DOS Release Notes::
191* 32 Bit DOS Release Notes::
192* OS/2 Release Notes::
193* Windows Release Notes::
194@end menu
195
196@node Non-Unix Installation Guide, 16-Bit DOS Release Notes, Non-Unix Installation, Non-Unix Installation
197@subsection Installation Procedure
198@enumerate
199@item
200Obtain the distribution archive that contains the executable for your
201platform. (You might already have done this).
202
203@item
204Create a subdirectory like for example @file{C:\MSGED}, change into this
205subdiretory, and unzip the distribution archive. Be sure to use the @samp{-d}
206option when unzipping the archive, because some archives contain
207subdirectories. (You might already have done this).
208
209@item
210Find out which codepage you are using by issueing the @code{CHCP} command. It
211is probably 437, 850 or 866. Then, select the corressponding read map and
212write map files that are shipped with @value{MSGED} (the have names of the
213form @file{READMAPS.codepagenumber} and copy them over to @file{READMAPS.DAT}
214and @file{WRITMAPS.DAT}. For example, this could look like this:
215
216@example
217R:\MSGED> CHCP
218Active Codepage:   850
219Prepared System Codepages:   850;  437
220
221R:\MSGED> COPY READMAPS.850 READMAPS.DAT
222R:\MSGED> COPY WRITMAPS.850 WRITMAPS.DAT
223@end example
224
225Please note that the filenames for the Ukrainian codepage 1125 differ from
226this naming scheme, they are called @file{READMAPS.UKR} and
227@file{WRITMAPS.UKR}.
228
229If there is no @file{READMAPS.XXX} file corresponding to the @samp{Active
230Codepage} returned by the @code{CHCP} command, see if there is a
231@file{READMAPS.XXX} file for one of the prepared codepages. If there is, use
232that one, and use the @code{CHCP} command to change to this code page each
233time before starting @value{MSGED}. In the example above, this command would
234be @code{CHCP 437}. You probably would want to place this command in a batch
235file, together with the invoation of @value{MSGED}.
236
237If @value{MSGED} does not support the codepage that you want to use, please
238contact the author and ask him to add support for that particular codepage.
239
240@xref{Special Characters,,Using Special Characters like Umlauts or
241Cyrillics - The Charset Kludge}, for more information on read and write map
242files, charset kludge lines, codepages, and character set recoding.
243
244@item
245Rename the file @file{sample.cfg} to @file{msged.cfg} and modify it according
246to your needs with your favourite text editor.
247@xref{Configuration Reference,,Configuration Reference},
248for detailed descriptions of each keyword that can be used in this file.
249
250@item
251You should now refer to the platform specific release notes found below before trying to start @value{MSGED}. They can save you from a lot
252of headaches ;-).
253@c FIXME add xrefs
254
255@item
256Optionally create an icon on your desktop or a batch file that starts the
257proper executable (@file{MSGEDP.EXE} for OS/2, @file{MSGEDNT.EXE} for Windows
25895/98/NT, @file{MSGED.EXE} for DOS, or @file{MSGED32.EXE} for 32-Bit DOS with
259DOS extender) with the directory you created (@file{C:\MSGED} in the example
260above) as working directory).
261
262@item
263Start @value{MSGED}.
264@end enumerate
265
266@node 16-Bit DOS Release Notes, 32 Bit DOS Release Notes, Non-Unix Installation Guide, Non-Unix Installation
267@subsection Release Notes for the 16-Bit DOS version (@file{MSGED.EXE})
268@itemize @bullet
269@item
270The 16 bit DOS version cannot handle squish message areas where the
271@file{.SQI} file is larger than 64k. This limits the size of a message area
272to about 5000 messages. If this is a problem to you, you should use the 32
273bit DOS DPMI version instead.
274
275@item
276The 16 bit DOS version has been compiled with Borland C 3.1.
277
278@end itemize
279
280@node 32 Bit DOS Release Notes, OS/2 Release Notes, 16-Bit DOS Release Notes, Non-Unix Installation
281@subsection Release Notes for the 32 Bit DOS version (@file{MSGED32.EXE})
282@itemize @bullet
283@item
284The 32 bit DOS version should be used when the 16 bit DOS version runs out of
285conventional memory (which is very unlikely to happen) or if you want to use
286message areas with more than 5000 messages in them. In all other cases, the
28716 bit version is the better choice because it uses less memory
288
289@item
290If you have Windows NT, you should use the Windows NT executable rather than
291the 32 Bit DOS executable. On Windows NT, the native Windows 32 Bit version
292is much faster than the DOS version. - The 32 Bit DOS Version is primarily
293targeted on environments like DESQview, plain DOS or Windows 3.1.
294
295@item
296The 32 bit DOS version requries a functional DPMI server to run. Valid DPMI
297servers include the Windows and OS/2 DOS box, Quarterdeck QDPMI, and others.
298
299@item
300In case you are running plain DOS without any DPMI server, @file{CWSDPMI.EXE}
301is shipped in the distribution archive. Simply put it into the same path where
302you put @file{MSGED32.EXE}, and it will act as an DPMI server as long as no
303other one is installed already. Please note that CWSDPMI is not a public
304domain program. It is licensed under the GNU Public License instead. You can
305obtain the full source code for CWSDPMI and a copy of the GNU license from
306@url{ftp.simtel.net/pub/simtelnet/djgpp/v2misc}.
307
308@item
309The 32 bit DOS version has been compiled using the DJGPP GNU compiler.
310
311@end itemize
312
313@node OS/2 Release Notes, Windows Release Notes, 32 Bit DOS Release Notes, Non-Unix Installation
314@subsection Release Notes for the 32 Bit OS/2 version (@file{MSGEDP.EXE})
315@itemize @bullet
316@item
317The OS/2 version has been compiled with the EMX GNU compiler, but does no
318longer require the EMX runtime. It is a standalone OS/2 executable.
319
320@end itemize
321
322@node Windows Release Notes,  , OS/2 Release Notes, Non-Unix Installation
323@subsection Release Notes for the 32 Bit Windows version (@file{MSGEDNT.EXE})
324@itemize @bullet
325@item
326The Windows version is a 32 bit executable designed for Windows NT. Although
327it has only been tested on Windows NT, it should also work on Windows 95 and
328Windows 98. There have been reports that screen redrawing is very slow on
329Windows 9x, so you might have to use the 32 bit DOS executable there.
330
331@item
332The Windows version presently does not support mouse control (even though the
333mouse cursor is visible).
334
335@item
336The Windows version has been compiled with the Borland C++ 4.0 compiler.
337
338@end itemize
339
340
341@node UNIX installation, Network Notes, Non-Unix Installation, Installation
342@section Installation on Linux, FreeBSD, or other Unixes
343This section provides information on installing @value{MSGED} on Linux,
344FreeBSD or any other Unix-like system.
345
346@menu
347* UNIX Installation Procedure::   How to install @value{MSGED}.
348* Husky Installation Procedure::  Installing @value{MSGED} as part of Husky.
349* Notes on UNIX terminal I/O::    How @value{MSGED} handles the terminal.
350* Notes on UNIX keyboard input::  Escape Meta Alt Control Shift ;-)
351* Notes on Big Endian Hardware::  Running @value{MSGED} on RISC processors.
352* Colors in the Unix version::  How to enable colors.
353* Case Sensitivity::            About case sensitivity problems.
354@end menu
355
356@node UNIX Installation Procedure, Husky Installation Procedure, UNIX installation, UNIX installation
357@subsection Installation Procedure
358@xref{Husky Installation Procedure,,Installing @value{MSGED} as part of the
359Husky Project Tools}, if you want to use @value{MSGED} in conjunction with
360the hpt Tosser and other Husky Project tools.
361
362The rest of this subsection only covers manual installation of @value{MSGED}
363as a standalone message reader, and may be skipped if you are using
364@value{MSGED} in a Husky environemnt.
365
366If you are using Linux you can get the Linux distribution archive which
367contains a pre-compiled binary. If you are running any other Unix (including
368FreeBSD, which due to a strange problem in the termios code won't run the
369Linux binaries properly) you have to compile the source code on your own
370(which usually is not much of a problem).
371@xref{Compiling,, Compiling the Soruce Code}, for more information on this.
372
373Please note that this manual does not necessarily cover installation of the
374RPM archives of Msged created by other persons. Some tips of the following
375sections also apply when you install the RPM files, but others don't Please
376refer to the documentation of those RPM archives for more information.
377
378The following describes the installation of the files from the Linux
379distribution archive. If you have compiled @value{MSGED} yourself, you will
380find the files that are mentioned below in slightly different locations (much
381in the doc/ subdirectory), but they are all present somewhere in the source
382code archive as well, after you have done all build actions as described in
383the appendix.
384
385@enumerate
386@item
387Create a temporary working directory and change into it:
388
389@example
390~ $ mkdir ~/msged-work
391~ $ cd ~/msged-work
392@end example
393
394@item
395Unzip the Linux distribution archive:
396
397@example
398~/msged-work $ unzip ~/msgte63l.zip
399@end example
400
401@item
402Fix the file permissions of the executable file:
403
404@example
405~/msged-work $ chmod guo+x msged
406@end example
407
408@item
409The executable can be either installed system-globally in
410@file{/usr/local/bin} or some other location, or locally in the @file{~/bin}
411subdirectory of your home directory:
412
413@example
414~/msged-work $ su root
415Password:
416/home/someone/msged-work # cp msged /usr/local/bin
417/home/someone/msged-work # exit
418@end example
419
420@item
421@value{MSGED} by default searches it's configuration file in the current
422user's home directory, i.E. you need to copy the file @file{sample.cfg} to
423@file{~/.msged}:
424
425@example
426~/msged-work $ cp sample.cfg ~/.msged
427@end example
428
429If you are an administrator and want to install @value{MSGED} system-globally,
430you can make @value{MSGED} read a different configuration file either by
431re-compiling @value{MSGED} and define the @code{MSGEDCFG} macro (this is also
432done automatically when you compile @value{MSGED} with @file{huskymak.cfg} -
433in this case the default location is @file{msged.cfg} in the @file{etc}
434subdirectory that you defined in @file{huskymak.cfg}). Or you can simply
435create a script that calls the @value{MSGED} binary with the @code{-c}
436command line option. Specify the desired file name directly behind the
437@code{-c}.
438
439If you do this, you should, in the global configuration file, use a statement
440like @code{include ~/.msged}, so that each user can indivudally configure his
441own user name and other user specific settings.
442
443@item
444You have to copy some other files as well:
445
446@example
447~/msged-work $ cp msghelp.dat ~/.msged.hlp
448~/msged-work $ cp sample.tpl ~/.msged.tpl
449~/msged-work $ cp scheme.004 ~/.msged.colors
450~/msged-work $ cp readmaps.is1 ~/.msged.readmaps
451~/msged-work $ cp writmaps.is1 ~/.msged.writmaps
452@end example
453
454Note that this assumes that you are using ISO 8859-1 font encoding, as is
455usally the case on Western Unix systems. If you use ISO 8859-5 (Russian Unix
456vendor fonts), use @file{readmaps.is5} and @file{writmaps.is5} instead, and
457if you use KOI8-R (Russian Linux and FreeBSD with e.g. cronyx fonts), use
458@file{readmaps.koi} and @file{writmaps.koi} instead. @xref{Special
459Characters,,Using Special Characters like Umlauts or Cyrillics - The Charset
460Kludge}, for more information on read and write map files, charset kludge
461lines, and character set recoding.
462
463@item
464Modify the configuration file @file{~/.msged} with your favourite text editor
465according to your needs.
466@xref{Configuration Reference,,Configuration Reference}, for detailed
467descriptions of each keyword that can be used in this file.
468
469@item
470You should now refer to the Unix specific release notes found below
471before trying to start @value{MSGED}. They can save you from a lot
472of headaches ;-).
473
474@item
475Also, if you plan to share a message base between Non-Unix and Unix systems,
476you absolutely must read the chapter devoted to problems with shared message
477bases in heterogenous networks (@pxref{Network Notes,,Using Fidonet software
478in network environments}).
479@end enumerate
480
481@node Husky Installation Procedure, Notes on UNIX terminal I/O, UNIX Installation Procedure, UNIX installation
482@subsection Installiong @value{MSGED} as part of the Husky software
483@cindex Husky
484If you are using Husky sofware, e.g. the hpt tosser, you can also install
485@value{MSGED} as part of the Husky software. In this case, you should first
486follow the generic Husky installation instruction as found in the file
487@file{INSTALL} found in the @file{huskybse} package.
488
489These instructions essentially boil down to getting the source code packages
490of Huskybse, Smapi, Fidoconf and Msged (in this case, use the Husky Msged
491distribution, @file{msged-VERSION-src.tar.gz}), untar each file, create a
492@file{huskymak.cfg} based on the template found in the @file{huskybse}
493package, and then entering each of the subdirectories and typing @code{make;
494make install}. But be sure to read the file in detail.
495
496After you have done so, you already have a working installation of
497@value{MSGED}. The command @code{make install} entered in the @value{MSGED}
498subdirectory will already have taken care of installing a workable default
499configuration file @file{msged.cfg} into your Husky @file{etc}
500subdirectory. This file is set up to read most of the necessary settings for
501@value{MSGED} from your @file{fidoconfig} (the basic Husky configuration
502file), so that once you have configured @file{fidoconfig}, you can directly
503start using @value{MSGED}.
504
505The only thing that you need to adjust is the codepage setting. @value{MSGED}
506is designed to do codepage translation, so that if your computer uses a
507different characters set compared to what is commonly encountered in fidonet
508echos, @value{MSGED} will handle the job of translating those messages to a
509character set your local terminal can handle, and likewise translate text you
510type back so that it is stored in a way other users can read it. This is
511important for most non-English languages (like German, French, Russian
512etc.). If you use this feature of @value{MSGED}, you don't need to abuse your
513tosser to do codepage translation any more.
514
515In order to select the proper codepage for your terminal, simply load the
516@value{MSGED} configuration file @file{msged.cfg} into your favourite editor
517and uncomment the line that is correct for your location. The file is
518commented, and further instructions can be found there.
519@xref{Special Characters,,Using Special Characters like Umlauts or Cyrillics - The Charset Kludge},
520for further information.
521
522@node Notes on UNIX terminal I/O, Notes on UNIX keyboard input, Husky Installation Procedure, UNIX installation
523@subsection How Terminal I/O is handled on Unix
524@cindex TERM variable
525@cindex repainting the screen (UNIX only)
526@value{MSGED} does neither use the curses library for most of its tasks, nor
527does it make use of termcap or terminfo data bases. The way that
528@value{MSGED} uses to create its full screen interface is to emit ANSI x3.64
529character control sequences. This is a common subset of control sequences
530that is recognised, among others, by VT52, VT100, VT200 and higher VTxxx
531terminals, by xterm, by the FreeBSD and the Linux console, by the OS/2 telnet
532program, and others.  In order to enable special features like color support
533based on the @code{TERM} variable, you can use @code{IF} constructs in the
534configuration file, as shown in the sample configuration file.
535
536I have tested this on several Unix boxes and it worked remarkably well. For
537optimum results, you should use the @file{scheme.004} color scheme file found
538in the @file{doc/} resp. @file{samples/} subdirectory. If you have problems
539seeing the cursor in an xterm, you should start the xterm with the option
540@samp{-cr white}.
541
542If the display is corruped by system log daemon messages or similar, you can
543at any time during program execution press @key{Ctrl}-@key{L} to redraw the
544screen.
545
546@node Notes on UNIX keyboard input, Notes on Big Endian Hardware, Notes on UNIX terminal I/O, UNIX installation
547@subsection Special Notes on Keyboard Input
548Due to the history of @value{MSGED}, it heavily depends on typical PC
549keyboard combinations like @key{Alt}-keys, combinations of @key{Ctrl} with
550cursor keys, and so on. Not all of them are easy to reflect on a Unix console
551or in an xterm.
552
553As for the @key{Alt} keys (@key{Alt}-@key{X} and so on): @value{MSGED} tries
554to recognize all sorts of ways in which clients reflect @key{Alt} or
555@key{Meta} key combinations. If that still does not work on your console,
556besides contacting me so that I can fix it, you can emulate an @key{Alt} key
557with the @key{Esc} key: If you press and release the @key{Esc} key and then
558press a letter, @value{MSGED} will treat this as if you pressed @key{Alt} and
559that letter. However, you have to do this fast, because if no key is pressed
560after the @key{Esc} for more than 0.2 seconds, @value{MSGED} will assume that
561you really meant to press a single @key{Esc} key, which is also frequently
562used in @value{MSGED}.
563
564Some other key combinations, like @key{Ctrl}-@key{Left} and so on, are not
565reproducable in an xterm or on a Unix console at all. Therefore, the sample
566configuration file @file{sample.cfg} contains a bunch of settings that bind
567those functions that are by default bound to key combinations that cannot be
568keyed on Unix to other key combinations.
569
570A nasty little problem might occur with the backspace key. If, on your
571system, the backspace key deletes the character @emph{under} the cursor
572rather than the character on the left hand side of the cursor, you might have
573to turn the @code{BS127} switch on by adding @code{Switch BS127 On} to your
574configuration file. The sample configuration file already contains correct
575settings of the @code{BS127} switch for some widespread Unix consoles.
576
577Also, some xterm variants are really broken. For example, I have seen xterm's
578reporting code 127 for both Delete and Backspace, so you will only
579be able to have either Backspace or Delete working. Also, some xterms
580doe not report codes for @key{Home} and @key{End} at all. If you have such
581an xterm, a tip would be to install rxvt and use msged in an rxvt window
582instead of an xterm window.
583
584Entering national special characters like cyrillics, the German a dieresis,
585or the french accented characters, is always a problem on Unix. If you want
586to do that with @value{MSGED}, refer to the sample configuration file and the
587documentation on the @code{EnableSC} keyword (@pxref{EnableSC,,The
588@code{EnableSC} keyword}). The most easiest solution is to put the
589@code{EnableSC} keyword into the configuration file, but if you do this, you
590will loose the @key{Alt} key combination functionality and will have to
591emulate all @key{alt} keystorkes using the @key{ESC}-technique explained above.
592
593If all this sounds very clumsy to you, perhaps you might volunteer to create
594a more Unix-friendly keyboard layout for @value{MSGED}. @value{MSGED} allows
595to freely redefine the keyboard layout. @xref{Redefining the
596Keyboard,,Redifining the Keyboard Bindings}, for more information on
597this. The first person that provides me with a really Unix-friendly set of
598@samp{ReadKey} and @samp{EditKey} configuration statements will receive
599special honour in this manual @dots{}
600
601@node Notes on Big Endian Hardware, Colors in the Unix version, Notes on UNIX keyboard input, UNIX installation
602@subsection Notes on Big Endian Hardware
603A large part of @value{MSGED} and the underlying message API has been made
604independent of little/big endian or structure packing issues. This means that
605in principle you can compile @value{MSGED} on Alpha, PowerPC, Sparc, or
606whatever exotic hardware and it will read and write exactly the same binary
607format files like the Intel versions do. You do not even have to specify any
608special compile-time switch for compiling on big endian hardware.
609
610However, some things do not yet work on big on non-Intel machines. This
611includes:
612
613@itemize @bullet
614@item
615the QuickBBS / Hudson Message Base routines
616
617@end itemize
618
619This means that you presently must restrict yourself to a Squish message base
620and a @file{squish.cfg} configuration file if you want to run @value{MSGED}
621on big endian hardware. This will be definietly fixed in a future release.
622
623@node Colors in the Unix version, Case Sensitivity, Notes on Big Endian Hardware, UNIX installation
624@subsection Colors in the Unix version
625
626The UNIX verison of @value{MSGED}, by default, presents itself in spartanic
627black and white, because this is most compatible with any existing terminal
628type. Even if you use the @code{Color} configuration keyword to define custom
629colors, @value{MSGED} still will transform all your color definitions into a
630black and white equivalent.
631
632If you want to see @value{MSGED} displayed in nice colors, you need to enable
633extended ANSI color codes:
634
635@example
636Switch Colors On         # enable ANSI color codes
637Include ~/.msged.colors  # include the color configuration
638@end example
639
640Of course you need a terminal that supports ANSI color codes. Among others,
641these are the Linux console (but not the Linux xterm!), the FreeBSD console,
642the "color-xterm" or "xterm-color" or "nxterm" terminal emulators, and the
643FreeBSD xterm. You can use Conditionals to switch the @code{Colors} switch
644either on or off depending on the @code{TERM}
645variable. @xref{Conditionals,,Conditional Statements in the Configuration
646File}, for more information.
647
648The sample color scheme file @file{color.004}, that you copied to
649@file{~/.msged.colors} during the installation process, contains color
650settings with sensible values. If, after adding the two lines from the
651example above to your configuration file, parts of the screen or message text
652are invisible, your terminal probably does not correctly support ANSI color
653codes.
654
655@node Case Sensitivity,  , Colors in the Unix version, UNIX installation
656@subsection Case Sensitivity Problems
657By default, the Unix version of MsgEd TE behaves case-sensitively (like any
658program running on a Unix file system), i.E. it uses all filenames that it
659reads from configuration file exactly as they are spelled, and all filenames
660that it creates (i.E. by appending filename extensions) are created in lower
661case.
662
663This may lead to problems if you are sharing a message base between the Unix
664versin of MsgEd and DOSish fidonet programs (i.E. fidonet programms running
665on DOS, OS/2 or Windows, or simply a Windows or OS/2 fileserver that holds
666the message base). Those programs tend to create a real mess of filenames by
667mixing both lower-, upper- and mixed-case spelling. If you are running the
668Unix version of MsgEd in such an environment, you should add the line
669
670@example
671Switch AdaptiveCase On
672@end example
673
674as the first line in your configuration file. This
675will effectivly make MsgEd behave case-insensitive and should avoid most
676problems with case sensitivity (@pxref{List of Switches,,List of available
677switches}).
678
679@node Network Notes, Known Bugs, UNIX installation, Installation
680@section Using @value{MSGED} and other Fido software in networked environments
681@cindex samba
682@cindex peer network
683@cindex NFS
684@cindex lan manager
685@cindex access synchronization
686@cindex synchronizing message base access
687@cindex record locks
688@cindex locks, on the message base
689@cindex voluntary locks
690Sysops that have more than one computer often use network filesystems like
691SMB (also known as Lan Manager, OS/2 peer services, the Windows Network, et
692cetera), Novell or NFS to share their message base among multiple computers.
693Depending on your environment, there are some problems buried into this
694approach that might cause hidden data loss and might be unaware to you. These
695problems are not specific to @value{MSGED}, but pertain to @emph{any} Fidonet
696software that uses the Squish, JAM or Hudson message base format. I feel
697enforced to devote a section of this documentation to these problems to save
698you from encoutering severe unexpected problems in your installation,
699especially as with the addition of Linux or Unix to such a network, the
700problems tend to increase dramatically. - Another issue in such networks, case
701sensitivity problems, as already been described above (@pxref{Case
702Sensitivity,,About Case Sensitivity Problems}).
703
704@menu
705* Access Synchronisation::      Description of the general problem.
706* Samba::                       Access Sync. with Lan Manager / Samba
707* NFS::                         Access Synchronisation with NFS
708* Novell::                      Access Synchronisation with Novell
709* Network Essence::             Conclusions to draw from this chapter
710@end menu
711
712@node Access Synchronisation, Samba, Network Notes, Network Notes
713@subsection Description of the Problem: Why we need access synchronisation.
714The issue that we are talking about is access synchronisation.  In a
715multi-tasking or networked environment, it happens that two or more programs
716simultaneously access the message base. Therefore, the Squish Message API
717(this is the piece of software that all Fidonet programs internally use to
718access the message base files) needs a way to ensure that no other Fidonet
719program can gain access to the message base file while itself is doing vital
720modifications on it. Otherwise, data could be screwed up or even lost if two
721programs would modify the same file simultaneously.
722
723As long as your message base resides on a single computer, you do not have a
724big problem with access synchronisation. On OS/2, Windows NT and DOS, access
725synchronisation is done via so called @dfn{record locks}, which works
726reliably. On Linux and other Unix system, access control is performed using
727so called @dfn{voluntary locks} by all programs that use the @file{SMAPI}
728edition of the Squish Message API. This is not as safe as the "record locks"
729feature. Voluntary locks can only synchronize programs that use them,
730i.E. programs that use the @file{SMAPI}, like @value{MSGED} or hpt. If you
731wish to use other Fidonet programs on Unix, you should ask the author if he
732employs voluntary locks for access synchronisation. If he doesn't, do not use
733his software.
734
735Things get more complicated in a networked environment, because there, not
736only different applications have to synchronize among themselves, but
737different computers also have to be synchronized. Or in other words, the
738network file system that you use must correctly propagate record and/or
739voluntary locks that have been set on one computer to all other computers.
740
741@node Samba, NFS, Access Synchronisation, Network Notes
742@subsection Access synchronisation on a Lan Manager (SMB) network.
743The SMB network protocol (also known as Lan Manager protocol, or OS/2 Peer
744Network, or Windows network), in principle, has support for propagating
745record locks over the net. Tests proved that it works quite well in all
746systems except Linux (Unix). This means that as long as your network only has
747OS/2, Windows 3.11/95/NT and DOS (with @file{SHARE.EXE} loaded) systems, you
748do not have to worry about access synchronization.
749
750If you add a Linux box to a SMB network, things get more complicated. For
751adding Linux to a SMB network, the Samba program is used. The Samba server
752(as of version 1.9.18.p8, which has been used for all tests described below)
753has some support for record locks, but it has restrictions. The Samba server
754will not grant a program running on computer A access to a message base file
755while a program running on computer B has placed a record lock on this
756file. However, it will frankly grant a second program running on computer B
757access to this file even while the first program running on computer B still
758has a lock on this file. This is a bug in the Samba server. It hope
759it will get fixed in further releases. - A further shortcoming of the samba
760server is that it does not convert voluntary locks placed on the Unix side
761into record locks visible on the OS2/DOS/Windows side. This means that any
762OS/2 program, for example, can always access the message base file even if a
763Linux program holds a lock on the file.
764
765Also, neither of the available samba clients (smbfs, rumba) have support for
766propagating voluntary locks as record locks.
767
768The essence of this is: @emph{You cannot savely share a message base between
769Linux/Unix and Non-Unix systems using Samba}. All you can do is place the
770message base on a Samba server @emph{if} you assure that no other Linux
771program accesses the message base, and that only OS/2, DOS and Windows
772clients connect to the Samba server, and further more that on those clients,
773only one program at a time tries to access the message base (that is: a
774client with a multitasking OS that runs the tosser must not have any editor
775installed, and you should never start up two editors simultaneously on any
776client).
777
778This is harsh, but true. Write mails to the programmers of Samba
779and beg them to fix the problem with multiple programs on one clients, and to
780implement the feature to convert voluntary locks on Unix side into record
781locks on Non-Unix side. Perhaps the situation will then change in the future.
782
783@node NFS, Novell, Samba, Network Notes
784@subsection Access synchronisation on NFS
785As for NFS, NFS itself does not support any kind of access synchronization at
786all (!). Access synchronization on NFS is performed using an additional daemon
787software called @file{rpc.lockd}. So if you have a NFS server that has a
788functional @file{rpc.lockd} daemon @emph{and} all NFS clients support the
789rpc.lockd protocol, then you can use NFS to share a message base between
790multiple computers. The bad news is that I have not seen a working
791@file{rpc.lockd} on either FreeBSD or Linux, and at least the NFS client for
792OS/2 (as probably all other Non-Unix NFS clients) does not support the
793rpc.lockd protocol. If you want rpc.lockd to work, you currently must use AIX
794or Digital Unix or maybe also some other commercial Unix. Not an option for the
795home user, I fear.
796
797The essence is: @emph{You cannot use NFS to share a message base between
798multiple computers}.
799
800@node Novell, Network Essence, NFS, Network Notes
801@subsection Access synchronization on Novell networks
802Finally for Novell: I do not have any information on Novell networks. I
803suppose that they natively do support record locking, but I do not know if or
804how the existing Novell clients for Linux/Unix do support it.
805
806@node Network Essence,  , Novell, Network Notes
807@subsection The essence of this section about network usage is:
808@enumerate
809@item
810You can savely share a message base among multiple computers in a Lan Manager
811(OS/2 Peer, Windows Network, SMB Network, ...) network as long as no Linux
812or Unix computer is involved.
813
814@item
815You can place the message base on a Linux/Unix fileserver running samba only
816as long as no fidonet software is running on the file server, no Linux or
817Unix client is involved, and all other clients take care that only one
818Fidonet program at a time is being run. (This includes not only the tosser
819and maintenance programs, but also the mail editor itself).
820
821@item
822There currently is not any way to savely share a Squish, JAM or Hudson
823message base between computers if any of the computers is a Linux or Unix
824machine. If you want to run Fido on the Linux box, the Linux box has to have
825its own messagebase (usually meaning that you must install it as sysop point
826or similar).
827@end enumerate
828
829If you do not obey to these three rules, you sooner or later will experiences
830loss or corruption of mails and mail areas. Sorry to say so.
831
832But what if you absolutely have to share a message base between multiple
833Linux/Unix or Linux/Unix and Non-Unix computers? There is only one solution
834to this problem: Use a message base format that does not require access
835synchronisation. While the Squish, JAM and Hudson message base formats to
836require access synchronisation because they store multiple mails in a single
837file, the Fido *.MSG (also known as Opus) message base format does not have
838this restriction because each mail is stored in a separate file. So Fido
839*.MSG presently is the only way to go if you want to share your message base
840between Linux/Unix and Non-Unix or other Unix computers.
841
842
843@node Known Bugs, Contact, Network Notes, Installation
844@section Known Bugs and Non-Features
845This sections lists some shortcomings of the current release
846@value{MSGED} @value{VERSION}. Please do not complain to me about these
847problems, I am well aware of the problems and will try to solve them in the
848future to the best of my possibility. (If, on the other hand, you want to fix
849these problems on your own, go ahead and send me the changes you made. They
850will be greatly appreciated.).
851
852@itemize @bullet
853@item
854The documentation is lacking a chapter that provides the beginner with a
855quick overview on how to use @value{MSGED}
856
857@item
858Version 7 nodelist lookup is not always working correctly (if two sysops
859accidentally have the same name, it simply yields by random the nodenumber of
860the one or the other, but does not let you select between the two of them)
861and is lacking a lot of features. It is suggested that as long as things are
862like that, you instruct your nodelist compiler to generate a
863@file{FIDOUSER.LST} listing file. @xref{UserList,,The @code{UserList}
864Keyword}, for more information.
865
866@item
867The Windows NT version does not allow entry of special characters by ASCII
868code using the @key{Alt}-@var{numeric keypad} - Method. Also, under Windows
86995, you must use @key{AltGr} to create special characters.
870@key{Ctrl}+@key{Alt} will not work.
871
872@item
873On non Intel hardware, the routines for Fido and Hudson message bases as well
874as the routines for importing @file{fastecho.cfg} will not work properly.
875
876@end itemize
877
878@node Contact,  , Known Bugs, Installation
879@section Support, Contacting the Author, Reporting Bugs, Contributing Code
880There are numerous reasons why you might wish to establish contact with me,
881the author of @value{MSGED}.
882
883@enumerate
884@item
885You have decided to use @value{MSGED} on a regular basis. In this case,
886please do send me an e-mail at the address listed below. How much time I will
887spend on developing @value{MSGED} in the future will heavily depend on the
888number of mails I receive from users that tell me that they do use
889@value{MSGED}.
890
891@item
892You have a general questions on how to configure or on how to use a certain
893feature of @value{MSGED}. In other words, you need support. In this case,
894you'd best post your question to one of the following echos:
895
896@table @code
897@item MSGED_ECHO
898The international MsgEd conference. English is the preferred language here.
899@item OS2BBS.GER
900This German echo covers OS/2 Fidonet software. I monitor it regularly.
901@item OS2NET.BBS.GER
902The equivalent of OS2.BBS.GER in the German OS/2 net. I monitor it regularly.
903@end table
904
905If you do not have access to any of these echos, you may of course also
906contact me via netmail or e-mail at the addresses listed below.
907
908@item
909You want to report a bug. There are two sorts of bugs:
910
911@enumerate a
912@item Normal bugs.
913You think that a certain function of @value{MSGED} does not work as expected,
914e.g. it is producing garbage, or doing strange things, or similar. In this
915case, either post to the echos listed above, or contact me via
916netmail. Please do supply all information that is necessary to understand
917your problem.
918
919@item Fatal bugs.
920A fatal bug occurs if @value{MSGED} crashes. Depending on your operating
921system, the symptom might be a core dump, or a SYS 3175, or a general
922protection fault, or a system lockup, or a spontaneous reboot. I do consider
923a crash untolerable. No matter how stupid things you do, you should not be
924able to crash @value{MSGED}.
925
926If you are running the precompiled Linux binary, reporting a fatal bug is
927exceptionally easy. If you experience a crash, simply send me the @file{core}
928file that has been generated. You do not need to try to reproduce it or write
929extensive descriptions. Simply send the @file{core} file, and in most
930circumstances I will be able to fix the problem.
931
932If you are running any other binary version (like OS/2, DOS, Windows), you
933will not get a core file on a crash. (On OS/2, you can write me a mail and
934ask me for sending you a debugging executable. This will require the EMX
935runtime, but generate @file{core} files just like the Unix version
936does. On DOS and windows, you do not have this option). Write down as much
937information as you can, try to find a way to reproduce the crash and contact
938me at the addresses below.
939@end enumerate
940
941@item You want to contribute to @value{MSGED}.
942If you are a programmer and have fixed a problem in @value{MSGED} on your
943own, please submit your changes to me. The preferred way for doing so is to
944send me a difference file in GNU diff format. Your work will be highly
945appreceated and honored in an appropriate place. If you want to regularly
946work on @value{MSGED}, we also have a CVS server online that you can have
947access to if you like.
948
949If you want to write a new feature for @value{MSGED}, please contact me
950beforehand to avoid that we do duplicate work. Again, I will appreciate and
951honor eny efforts done by you. Please note that for writing a @value{MSGED}
952enhancement, you should be familiar with C. Also, @value{MSGED} uses a
953special indentaion style throughout the source code, that I would like you to
954adhere to.
955@end enumerate
956
957So here are my addresses if you want to get in contact with me:
958
959@itemize @bullet
960@item Fidonet:
961Tobias Ernst @ 2:2476/418
962
963@item e-mail:
964tobi@@bland.fido.de
965
966@item Telefax:
967+49 711 5000184
968
969@end itemize
970
971
972
973
974
975
976@node Introduction, Advanced Concepts, Installation, Top
977@chapter A quick tour through @value{MSGED}
978This chapter will be supplied in a future revision of this
979document. It will provide an introduction for beginners on using
980@value{MSGED}.
981
982As long as this chapter is not provided, you must help yourself using the
983online help. Nearly everywhere in @value{MSGED}, you can press
984@kbd{Alt}-@kbd{H} to get a somewhat context sensitive help screen.
985
986@node Advanced Concepts, Keyboard Reference, Introduction, Top
987@chapter Advanced Concepts in @value{MSGED}
988After you have managed to perform basic functions with @value{MSGED}, like
989reading messages, entering new messages, and replying to messages, this
990chapter will introduce you into some advanced concepts in
991@value{MSGED} that deserve special attention, like how to use a
992Fidonet-Internet gateway, how to use eight bit character sets, and similar.
993
994@menu
995* Exporting and Printing::      Exporting mails to text files or printers.
996* Grouping::                    Configuring and Using Message Area Groups.
997* Special Characters::          Umlauts, Cyrillics and Charset Kludges
998* Internet Gateways::           Using @value{MSGED} for e-mail correspondance.
999@end menu
1000
1001@node Exporting and Printing, Grouping, Advanced Concepts, Advanced Concepts
1002@section Exporting Mails to Text Files or to the Printer
1003
1004This section tells you how to export mail messages. Exporting in this sense
1005includes simply saving the message text into a file, but also printing the
1006message or feeding it into a pipe.
1007
1008@menu
1009* Exporting::                   Saving the message into a plain text file.
1010* Printing::                    Printing the message.
1011* Piping::                      Running an external command with the message
1012                                text as standard input.
1013@end menu
1014
1015@node Exporting, Printing, Exporting and Printing, Exporting and Printing
1016@subsection Saving message text into a plain text file
1017@cindex exporting message text
1018@cindex text file, exporting to
1019
1020In order to export the message text into a plain text file, you have to
1021invoke the @code{export} reader or editor function. If you did not change the
1022keyboard binding, this is done by pressing @key{Alt}-@key{W}. You will be
1023shown a menu that looks like this:
1024
1025@example
1026+-----------------------------------------+
1027|  Write to File                          |
1028|  Print                                  |
1029|  Pipe into external Program             |
1030|  Cancel                                 |
1031+-----------------------------------------+
1032@end example
1033
1034Select the first entry, @samp{Write to File}. You then will be shown a dialog
1035box where you can select a file name. You can use the cursor keys to navigate
1036through the directory structure and select a file to be overwritten. If you
1037want to create a new file, press @key{Tab} to get to the @samp{File:} entry
1038box and enter a new file name.
1039
1040After that, you will see a menu that asks you how the text should be
1041exported:
1042
1043@example
1044+-----------------------------------------+
1045|  As Plain Text                          |
1046|  Binary (for re-importing into Msged)   |
1047|  Cancel                                 |
1048+-----------------------------------------+
1049@end example
1050
1051Normally you will want to select @samp{As Plain Text}. This produces a nice
1052message header and nicely wrapped paragraphcs. This format is useful for
1053reading with normal editors, for printing etc. The @samp{Binary} format
1054(formerly known as @samp{Msged Format}) will not write any headers, and it
1055will not break the paragraphs into lines. This format is useful if you intend
1056to re-import the text into @value{MSGED} or into another application that
1057works paragraph-oriented rather than line-oriented (like a word processor).
1058
1059Note that this dialog box will not be shown if you try to export text while
1060you are @emph{editing} a message; in this case, the plain text mode will
1061always be used.
1062
1063When you have made your selection, the file will be written. If you selected
1064a file that already exists. you will see an additional dialog box that asks
1065if you want to append to the file, overwrite it, or cancel the operation.
1066
1067@node Printing, Piping, Exporting, Exporting and Printing
1068@subsection Printing a message
1069@cindex Printing
1070
1071In order to print a message, press @key{Alt}-@key{W}. Select
1072@samp{Print}. That's all about it, the message will be printed! But how did
1073@value{MSGED} know how to find your printer? Well, on OS/2, DOS and Windows
1074it just uses the standard printer, known as @samp{PRN}, which is usually
1075connected to the first parallel port. On UNIX, it calls the @samp{lpr}
1076command with no special options, which will lead to the default queue being
1077used.
1078
1079If you want to use a different printer for printing mails -- for example, you
1080might have two printers, one for high quality office correspondance, and one
1081for quick printouts, and want to use the latter one for printing Fidonet
1082messages --, you can use the @code{Printer} keyword in the @value{MSGED}
1083configuration file to select a different printer. @xref{Printer,,The
1084@code{Printer} Configuration Keyword}, for more information.
1085
1086@node Piping,  , Printing, Exporting and Printing
1087@subsection Piping message text into external programs
1088@cindex Piping
1089
1090What does @dfn{piping} mean? This feature works as follows: @value{MSGED}
1091will start an external command or program and feed the mail text into this
1092command's standard input stream. This feature originally comes from the Unix
1093world. For example, you could pipe the message text into a Perl or Rexx
1094script that analyses the text and does something with it (for example, the
1095script could store the text in a cooking recipe database). The piping feature
1096does not work in all versions of @value{MSGED}. It only works in the UNIX
1097version and in those non-UNIX versions that have been compiled with a GNU gcc
1098compiler.
1099
1100In order to pipe message text into an external program, type
1101@key{Alt}-@key{W} and select @samp{Pipe into external program}. You will then
1102see a dialog box that prompts you for a command to execute. You can enter
1103any commands or programs in exactly the way as you would enter them at the
1104shell prompt of your operating system. @value{MSGED} will execute exactly
1105this command and provide the message contents as standard input to the
1106command. For example, you could enter
1107
1108@example
1109cat - >test.txt
1110@end example
1111
1112This of course is a stupid example, because the same result could be achieved
1113by selecting @samp{Write to File} and specifying @file{text.txt} as file
1114name, but it shows how the mechanism works.
1115
1116After that, you will be prompted for the export mode (plain text or
1117binary). @xref{Exporting,,Saving message text into a plain text file}, for
1118information on what this means.
1119
1120@node Grouping, Special Characters, Exporting and Printing, Advanced Concepts
1121@section Configuring and Using Message Area Groups.
1122@cindex groups
1123@cindex area groups
1124@cindex message area groups
1125
1126@value{MSGED} @value{VERSION} supports forming message areas into message
1127area groups. The main appliance of this feature is to ease arealist
1128navigation - you can have the areas sorted by groups, @value{MSGED} can
1129display separators between the single groups, or you can make the area list
1130display only members of a certain group, and switch between the groups using
1131hotkeys. But you can also use the group feature to select different usernames
1132or template files based on which area you are writing in.
1133
1134The following subsections will first tell you how to set up groups and assign
1135areas to those groups, and will then go on and tell you how you can make use
1136of groups to ease your life with @value{MSGED}.
1137
1138@menu
1139* Group Basics::                How @value{MSGED} identifies a group.
1140* Tosser Groups::               Reading group information from the areafile.
1141* Manual Groups::               Manually assigning areas to groups.
1142* Arealist Group Functions::
1143* Group Templates::
1144@end menu
1145
1146@node Group Basics, Tosser Groups, Grouping, Grouping
1147@subsection Grouping Basics
1148In @value{MSGED}, a group is identified by a @emph{group name}. A group name
1149can be any string and may include spaces etc. The group name is not case
1150sensitive, however. @value{MSGED} has no fundamental limit on the number of
1151groups that can be defined.
1152
1153Each message area can only be member of one group. This means that if you
1154assign an area twice to different groups, it will only be a member of the
1155group that it has been last added.
1156
1157@node Tosser Groups, Manual Groups, Group Basics, Grouping
1158@subsection Reading Group Definitions from the Tosser Configuration File
1159
1160Setting up groups is very easy if you read all your area definitions form a
1161tosser configuration file (@pxref{Areafile Parsing,,Reading a Tosser
1162Configuration File (Areafile)}). If your tosser stores group information and
1163@value{MSGED} supports reading it, then @value{MSGED} will automatically take
1164over the tosser's group definitions. This is currently supported for
1165@samp{Fidoconfig} and @samp{Fastecho} type areafiles.
1166
1167For @samp{Fidoconfig}, the names of the @value{MSGED} area groups will be the
1168same names as the @samp{Fidoconfig} group names. However, be aware that
1169fidoconfig group names are case sensitive, while @value{MSGED} group names
1170are not. So, members of two different groups with names that, in the
1171fidoconfig file, only differ in upper/lower case spelling will be members of
1172the same group in @value{MSGED}.
1173
1174For @samp{Fastecho}, the names of the @value{MSGED} area groups will be the
1175names that you have defined in @file{fesetup} in the @samp{System/Group
1176names} menu. If you did not set up group names for some or all areas, those
1177areas will have a name of @samp{Fastecho Group X}, where @samp{X} is the
1178letter that is used to identify the group in Fastecho.
1179
1180The easiest way to find out about which group names @value{MSGED} has created
1181based on the areafile information is to press @key{Ctrl}-@key{G} in the
1182message area list. This will show a menu of all groups.
1183
1184If you do @emph{not} want to read any sort of group setup from the tosser
1185configuration file, then you can turn off the @code{UseTosserGroup} switch by
1186adding @code{Switch UserTosserGroup Off} to your @value{MSGED} configuration
1187file. This has to be done before the @code{Areafile} statement to which this
1188setting should apply.
1189
1190@node Manual Groups, Arealist Group Functions, Tosser Groups, Grouping
1191@subsection Manually Defining and Assigning Groups
1192@findex Group
1193If @value{MSGED} is not able to read group information from your
1194@code{Areafile}, or if you want to fine-tune that information, or also if you
1195are defining some or all areas manually in your @value{MSGED} configuration
1196file. This is done using the @code{Group} keyword. Here is it's syntax:
1197
1198@table @asis
1199@item Syntax:
1200@code{Group "@var{groupname}" [@var{pattern}]}
1201@item Example:
1202@code{Group "OS/2 Echos" *OS2*}
1203@end table
1204
1205The @var{groupname} parameter should be a string that uniquely identifies
1206this group. It may contain spaces if you enclose it in quotation marks, as
1207shown above.
1208
1209The optional @var{pattern} argument specifies a wildcard pattern. The pattern
1210may contain any number of stars and questionmarks, and works like a wildcard
1211on an OS/2 or Win32 command line. This pattern is matched against the area
1212@emph{tag} (like for example OS2PROG), and all matching areas will be added
1213to that group.
1214
1215If the @var{pattern} argument is omitted, the group will be defined, but no
1216areas will be added to it yet.
1217
1218There can only be one @var{pattern} argument, but this is not a problem, as
1219the @code{Group} keyword is cumulative. This means that if you write
1220something like
1221
1222@example
1223Group "Echos in German Language" *.GER
1224Group "Echos in German Language" *.024
1225Group "Echos in German Language" *.AUS
1226@end example
1227
1228then the group will contain all areas that match at least one of the given
1229patterns.
1230
1231However, each one area can only be member of a single group. This means that
1232if you add an area to a group that has previously already been added to a
1233different group, that group will lose this area. Example:
1234
1235@example
1236Group "German Echos" *.GER
1237Group "Linux Echos" *LINUX*
1238@end example
1239
1240Here, the @samp{LINUX.GER} echo area would be in the @samp{Linux Echos}
1241group, and not in the @samp{German Echos} group.
1242
1243You can put @code{Group} statements anywhere in your configuration file. Even
1244if an area is defined after a @code{Group} statement, it will still be added
1245to that group if the wildcard matches. However, the relative ordering of the
1246@code{Group} file statements may be important: Msged will display
1247groups (when areas are sorted by group, or in the group menu, see
1248later) in the order of first mention in the @value{MSGED} configuration
1249file. A group is @emph{mentioned} either when it's name first appears in a
1250@code{Group} statement, or when it is automatically defined when reading an
1251areafile.
1252
1253For example, let's assume you are using fidoconfig and get all group
1254information from the areafile. But you want to put some groups that attract
1255your special interest into a group named @samp{Interesting Groups}. Now you
1256have to decide if you want to put see this group before all other groups in
1257the area list, or if you want to see it after all other groups. In the first
1258case, write
1259
1260@example
1261Group "Interesting Groups"
1262Areafile fidoconfig
1263Group "Interesting Groups" *LINUX* *OS2*
1264@end example
1265
1266In the second case, omit the definition before the @code{Areafile} statement
1267and simply write
1268
1269@example
1270Areafile fidoconfig
1271Group "Interesting Groups" *LINUX* *OS2*
1272@end example
1273
1274@node Arealist Group Functions, Group Templates, Manual Groups, Grouping
1275@subsection Group Functions in the Message Area List
1276When you have set up groups, the message area list will make navigation with
1277many areas a lot easier.
1278
1279@subsubsection Sorting Areas by Group
1280The most basic group feature of the area list is that it can display areas
1281grou-sorted, i.E. first all areas of the first group, then all areas of the
1282second group, and so on. To achieve this, use the @code{SortAreas} keyword as
1283follows:
1284
1285@example
1286SortAreas G
1287@end example
1288
1289Most probably, you will further want to sort the area inside the group. If,
1290for example, you want to sort all netmail areas to the beginning of each
1291group, and then sort the areas alphabetically by description, you would use
1292
1293@example
1294SortAreas GND
1295@end example
1296
1297Once you have activated sorting areas by group, @value{MSGED} will draw
1298horizontal bars between the groups to visually separate them. If you do not
1299like this feature, you can disable it using:
1300
1301@example
1302Switch GroupSeparators Off
1303@end example
1304
1305@subsubsection Displaying only a certain group
1306You can press @key{Ctrl}-@key{G} in the arealist and get a list of all groups
1307that have been defined. When you select any of those groups, the area list
1308will then only display areas that are member of this group. Further more, all
1309other @value{MSGED} functions, like area scanning, personal mail scan,
1310switching to the next/previous area in message reading mode, etc., will also
1311only work on those groups. @value{MSGED} will effectively behave as if only
1312those groups had been defined. (An exception is when
1313moving/copying/forwarding mail or replying to a different area: there you
1314will still get a list of all areas).
1315
1316You can then again use the @key{Ctrl}-@key{G} menu or press the short cut
1317@key{Alt}-@key{0} to return to the display of all defined areas. You can also
1318use the shortuts @key{Alt}-@key{1} @dots{} @key{Alt}-@key{9} to quickly
1319switch between the first nine groups.
1320
1321@node Group Templates,  , Arealist Group Functions, Grouping
1322@subsection Group Default Templates and Usernames
1323This feature is described in the documentation of the @code{GroupSettings}
1324keyword. @xref{GroupSettings,,The @code{GroupSettings} Keyword}.
1325
1326@node Special Characters, Internet Gateways, Grouping, Advanced Concepts
1327@section Using Special Characters like Umlauts or Cyrillics - The Charset Kludge
1328@cindex FSC 0054
1329@cindex FSP 1013
1330@cindex special characters
1331@cindex charset kludge
1332@cindex character set conversion
1333@cindex russification
1334@cindex cyrillic letters
1335
1336Languages other than English often use special characters besides the normal
1337alphabet. Examples are the accented letters in French or the umlauts in
1338German, or the cyrillic alphabet used in Russia and elsewhere. IBM block
1339graphics are also called special characters. This section will describe what
1340measures have to be taken in order to be able to transmit special characters
1341via Fidonet.
1342
1343@menu
1344* Problems with Special Characters::  Description of the general problem.
1345* Special Characters in Fidonet::  FSC/FTS proposal to solve the problem.
1346* MsgEd TE and Special Characters::  How @value{MSGED} implements FSP 1013.
1347@end menu
1348
1349@node Problems with Special Characters, Special Characters in Fidonet, Special Characters, Special Characters
1350@subsection What is so special about special characters?
1351
1352In order to be able to exchange text between computers, it was necessary to
1353agree on a scheme on how to encode letters into numbers, the so called
1354@dfn{character set}. The standard character set for transferring text between
1355a huge variety of computer systems is the ASCII character set. Unfortunately,
1356the ASCII character set is only 7 bit wide and does not leave room for
1357national special characters.
1358
1359In order to be able to transfer special characters like accents and umlauts,
1360it was therefore necessary to use eight bit wide extended character sets
1361that defines how special characters are encoded.
1362
1363In contrast to the standard 7 bit ASCII character set, which is a single
1364character set used by nearly all computer systems, there exist several
1365pseudo-standard character sets that are 8 bits wide. All of them contain
1366ASCII as an subset, but they all differ in how they encode special
1367characters. DOS and OS/2 computers typically use the IBM PC character set,
1368but even there, dependent on what country you live in, there are several
1369different code pages of the IBM PC character set. Unix computers and the
1370Amiga in the western world typically use the ISO8859-1 character set, also
1371known as Latin-1. Windows uses IBM PC for console applications, but ISO8859
1372for graphical applications. The Macintosh uses the Macintosh character
1373set.  In Russia, there is a similiar problems: There exist four ways of
1374encoding cyrillics, namedly the KOI8-R fonts, the ISO 8859-5 fonts, the
1375codepage 866 of the IBM PC character set, and Windows Codepage 1251.
1376
1377The consequence of this is clear: If you write a text on a Unix or Windows
1378computer using special characters like accented letters or umlauts, you
1379cannot expect it to be properly displayed on a DOS or OS/2 computer, and vice
1380versa, unless special measures are taken.
1381
1382@node Special Characters in Fidonet, MsgEd TE and Special Characters, Problems with Special Characters, Special Characters
1383@subsection How has this problem been solved in Fidonet?
1384This issue of special characters has been a problem for Fidonet in the past,
1385but it has been solved by the Fidonet standard FSC 0054 and its successor,
1386FSP 1013, so that you can now
1387safely use special characters in Fidonet mail @emph{if} your message editor
1388supports FSC 0054. FSC 0054 basically works like this:
1389
1390Every Fidonet editor that wants to be compatible with FSC 0054 must be
1391delivered along with built-in or external character translation tables that
1392tell the editor how it can convert text that contains special characters from
1393one character set to another.
1394
1395When composing a message using a FSC 0054 compliant editor, you have two
1396choices: By default, the editor allows you to enter the full range of special
1397characters that your computer supports, but when saving the message, the
1398editor will use its character translation tables and convert your text into a
13997 bit clean representation that can be displayed on @emph{all} computers even
1400if they don't support FSC 0054. For example, a German sharp s would be
1401converted into double s, an e with accent would be converted into an e
1402without accent, a cyrillic soft a would be converted to its transliteration
1403"ya", and so on. This is the maximum compatibility mode: It offers
1404you the comfort of being able to write text just as you would in a letter,
1405using all special characters that your language requries, but your mails
1406will still be properly displayed on all computers. This might be an option
1407for German users, but it certainly is not for Russian users, as the
1408transliteration of cyrillic letters is not particularly easy to read.
1409
1410The other (better) possibility is that your editor leaves the special
1411characters that you typed in as is, or converts them to a common transport
1412charset (like codepage 866 in Russia, or codepage 850 in Europe), but inserts
1413a hidden kludge line, from here on referred to as the @dfn{charset kludge},
1414into the message, that designates which character the mails stored in the
1415message are composed in. When your message is read on another computer by a
1416Fidonet message reader that also supports FSC 0054, the message reader will
1417see the charset kludge in your mail and then use its charset translation
1418tables to convert your message into the character set that this computer
1419uses. The consequence is that even if your computer and the computer of the
1420receiver use different character sets, everything that you typed in will look
1421just the same on the receiver's screen than on yours, including all special
1422characters that have been typed.
1423
1424A particular note to all Russian users of Msged: In Russia, it has been
1425commonly agreed on to transport all Fidonet mails in Codepage 866. So you
1426might ask what you do need a charset kludge for - could not just @value{MSGED}
1427recode everything to codepage 866 when writing a mail and importing from
1428codepage 866 when reading a mail, and not care about that kludge line? But
1429imagine a user in Germany who wants to read Russian echomails. His mail
1430editor needs a way to know if a mail that it is about to display contains
1431German special letters, or if it contains Russian ones. (Or vice versa,
1432imagine a Russian person who wants to leran the German or English
1433language). Only if Russian mails contain the proper charset kludge
1434(@samp{CP866}), it will be able to display both languages correctly.
1435
1436@node MsgEd TE and Special Characters,  , Special Characters in Fidonet, Special Characters
1437@subsection How do I configure @value{MSGED} to support FSC 0054?
1438@value{MSGED} fully supports FSC 0054. It uses two binary files, a read map
1439and a write map. The read map contains tables that define how to convert all
1440the known transport charsets to the local charset (this even includes
1441transliteration tables for displaying Russian text on Western computers!),
1442and similarly, the write map contains tables that define how to convert the
1443local character set to any allowed transport character sets.
1444
1445The default name of the character set translation files are
1446@file{READMAPS.DAT} and @file{WRITMAPS.DAT}, and they are searched in the
1447current working directory when @value{MSGED} starts. (On Unix, the exact name
1448and location of these files are determined by the defaults you put into the
1449makefile, or @file{~/.msged.readmaps} and @file{~/msged.writmaps} for the
1450precompiled binaries, while the RPM distribution might use yet other
1451locations). You can change the file names and location to use with the
1452@samp{Readmap} and @samp{Writemap} keywords (@pxref{Readmap,,The Readmap and
1453Writemap Keywords}).
1454
1455The binary release of @value{MSGED} ships with a variety of read maps and
1456write maps. For each character set or codepage, there is a pair of read map
1457and write map file which contains tables to convert from any charset set to
1458this codepage and back.
1459
1460Now all you need to do in order to configure @code{MSGED} to properly encode
1461and decode all sorts of special characters is to determine which character
1462set or codepage your computer is using, and copy the corresponding pair of
1463read map and write map file to the default name and location as noted above,
1464or use the @samp{Readmap} and @samp{Writemap} keywords to point Msged to the
1465correct pair of read map and write map files.
1466
1467The following tables lists all read map and write map files that
1468@value{MSGED} currently includes:
1469
1470@example
1471Filename     | Type of font / character set / computer
1472-------------------------------------------------------------------------
1473READMAPS.850 | Any DOS or OS/2 computer, or Windows computer with the OEM
1474WRITMAPS.850 | console fonts, that uses Codepage 850. This applies to most
1475             | computers in Western Europe. Some badly configured Linux
1476             | systems might also use this code page.
1477-------------------------------------------------------------------------
1478READMAPS.437 | Any DOS or OS/2 computer, or Windows computer with the OEM
1479WRITMAPS.437 | fonts, that uses the standard codepage 437. This applies to
1480             | most US-American installations, and also to some European
1481             | ones that use Codepage 850 because it has some more IBM
1482             | graphics characters.
1483-------------------------------------------------------------------------
1484READMAPS.865 | This is the "nordic" IBM Codepage 865 used in some
1485WRITMAPS.865 | Northern European countries.
1486-------------------------------------------------------------------------
1487READMAPS.866 | This is IBM Codepage 866, used by DOS and OS/2 or Windows
1488WRITMAPS.866 | text mode applications in Russia.
1489-------------------------------------------------------------------------
1490READMAPS.UKR | This is IBM Codepage 1125, used by some DOS and OS/2 or
1491WRITMAPS.UKR | Windows installations for text mode applications in
1492             | Ukraine and Belorussia.
1493-------------------------------------------------------------------------
1494READMAPS.IS1 | This is ISO 8859-1. It is the standard encoding for
1495WRITMAPS.IS1 | X11 fonts and console fonts on Linux and Unix systems
1496             | in Western Europe.
1497-------------------------------------------------------------------------
1498READMAPS.IS5 | This is ISO 8859-5. It is the encoding used for vendor
1499WRITMAPS.IS5 | shipped additional fonts in Russian editions of commercial
1500             | Unix systems.
1501-------------------------------------------------------------------------
1502READMAPS.KOI | This is KOI8-R, used by the cyrillic cronyx font set,
1503WRITMAPS.KOI | which is in use in almost any Russian Linux or FreeBSD
1504             | installation, and can of course also be installed on
1505             | commercial Unix systems.
1506-------------------------------------------------------------------------
1507@end example
1508
1509So, enabling character set translation is easy, but you have to pay attention
1510to use the @emph{correct} pair of read map and write map file.
1511
1512If you have the source code distribution of @value{MSGED}, the @file{bin}
1513subdiretory contains @file{readmaps.dat} and @file{writmaps.dat} files for
1514all supported code pages. If you are compiling directly out of CVS, you can
1515go to the @file{maps} subdirectory and compile and use the @file{makemaps}
1516utiltiy to build the proper character set maps.
1517
1518The following table lists all level 2 transport character sets that
1519@value{MSGED} understands when it finds them in mails (meaning all character
1520sets that are defined in the @file{READMAPS.DAT} and @file{WRITMAPS.DAT}
1521files):
1522
1523@example
1524@@CHRS-Kludge: | Conventional Name:    | Used by these computers:
1525--------------+-----------------------+---------------------------
1526LATIN-1 2     | ISO 8859-1            | Western Unix, Amiga, Windows GUI
1527MAC 2         | MAC                   | Macintosh computers
1528CP437 2       | IBM PC, Codepage 437  | DOS, OS/2, Windows console
1529CP850 2       | IBM PC, Codepage 850  | International / European versions
1530              |                       |   of DOS, OS/2 and Windows.
1531CP865 2       | IBM PC, Codepage 865  | Nordic versions of DOS, OS/2, Win
1532CP866 2       | IBM PC, Codepage 866  | Russian OS/2, DOS, Windows
1533CP1125 2      | IBM PC, Codepage 1125 | Ukrainian and Belorussian
1534              |                       |  OS/2, DOS, Windows
1535@end example
1536
1537Apart from that, @value{MSGED} also understands the (outdated)
1538@code{@@CODEPAGE} kludge line.
1539
1540Most @file{READMAPS.DAT} and @file{WRITMAPS.DAT} files define some more
1541charset names, like @code{KOI8-R}, @code{ISO-5}, and so on, but these kludge
1542lines are not intended for message transport, but only as an internal name
1543for @value{MSGED} to see what charset your computer uses locally.
1544
1545There are quite some other (though incorrect or obsolete) charset kludges in
1546widespread use in fidonet. The most prominent one is @code{IBMPC 2}.
1547Originaly, @code{IBMPC 2} meant the DOS codepage 437, but in the meantime, it
1548has been used to simply denote the codepage that a "IBM" computer is
1549typically using. This means that if a Russian user has a kludge that says
1550@code{IBMPC 2}, he probably means @code{CP866 2}, while if a German user has
1551@code{IBMPC 2}, he probably means @code{CP850 2}.
1552
1553Msged supports use of those outdated or incorrect charset kludges with the
1554@code{CharsetAlias} command. A Western European user should
1555probably put the following comand into his config file:
1556
1557@example
1558CharsetAlias IBMPC CP850
1559@end example
1560
1561An American user might prefer
1562
1563@example
1564CharsetAlias IBMPC CP437
1565@end example
1566
1567A Russian user needs a whole bunch of commands:
1568
1569@example
1570CharsetAlias IBMPC CP866
1571CharsetAlias +7_FIDO CP866
1572CharsetAlias RUFIDO CP866
1573@end example
1574
1575Once FSC 0054 is activated, @value{MSGED} will be able to correctly display
1576all mails that have been created with one of the characters sets listed
1577above, as long as they contain the proper charset kludge
1578line.
1579
1580Unfortunately, quite some still don't - do tell their authors to correct
1581their setup! Until those users fix their editors, @value{MSGED} offers you
1582two options. The one is the @samp{AssumeCharset} keyword, which sets a
1583default character set kludge name for mails that do not contain such a kludge
1584line. @xref{AssumeCharset,,The @code{AssumeCharset} keyword}, for more
1585information. The other option is the @key{Alt}-@key{T} key combination that
1586you can press in message reading mode. You will get a menu that allows you to
1587select from all supported codepages and character sets. You can use this menu
1588if you must read a mail that contains a wrong character set kludge line, or
1589one that does not contain such a kludge and does not meet the assumption you
1590made with @samp{AssumeCharset}. @xref{Misc Reader Functions,,Miscellaneous
1591other Reader Functions}, for more information.
1592
1593Now that you have set up @value{MSGED} so far, you are able to read almost
1594all mails with correct 8 bit characters, and mails that you write yourself
1595may also contain any special characters, but @value{MSGED} will convert them
1596into a 7 bit ASCII character set when you save them.
1597
1598If you want to retain special characters in your mail by adding a charset
1599kludge (which is highly recommended), you have to do two things. First, you
1600have to define which character set to use for saving your mails
1601. @xref{OutputCharset,,The @code{OutputCharset} Keyword}, for information on
1602how to do this. In most cases, you will simply want to add the following line
1603to your configuration file:
1604
1605@example
1606OutputCharset IBMPC
1607@end example
1608
1609Although it would be better to use @code{CP437}, @code{CP850}, @code{CP865} or @code{CP866}
1610(depending on your location), most readers still don't support this, so using
1611@code{IBMPC} might be better for the moment. If you use @code{IBMPC},
1612@value{MSGED} will emit an addtional @code{CODEPAGE} kludge line to make
1613clear which codepage you actually are using.
1614
1615Exporting in
1616@code{IBMPC} charset will even work on a Linux box, just if you were wondering.
1617
1618Then, you have to tell @value{MSGED} in which areas it is allowable to send
1619mails with special characters and charset kludges. @value{MSGED} will only
1620write special characters into areas that have the @samp{8} flag set. If you
1621are importing your message area configuration from a tosser configuration
1622file, you can simply put the following line to the beginning of your
1623configuration file:
1624
1625@example
1626AreaFileFlags 8
1627@end example
1628
1629(If you already have an @code{AreaFileFlags} statement, just add the @samp{8}
1630character to its parameters). @xref{Areafile AreaFileFlags and AreaDesc, The @code{AreaFileFlags}
1631Keyword}, for more information.
1632
1633This will allow @value{MSGED} to use special characters in conjunction with a
1634charset kludge in all message areas imported from a tosser configuration
1635file.
1636
1637If you only want to enable special characters for a few areas, you have to
1638define these areas manually, giving each of them the @samp{8} flag
1639individually. The same applies if you have to define your areas manually for
1640other reasons. @xref{Manual Area Definition,,Manual Area Definition}, for
1641more information on this.
1642
1643@node Internet Gateways,  , Special Characters, Advanced Concepts
1644@section Internet Gateways - Using @value{MSGED} for e-mail and newsgroups
1645
1646@value{MSGED} has built-in support for Fidonet to Internet Gateways, allowing
1647for seemless coexistence of Fidonet mail and Internet mail. When you use
1648@value{MSGED} to talk to your Internet gateway, you do not even have to know
1649about all the nasty details of gateway addressing - @value{MSGED} does the
1650job for you. This makes @value{MSGED} the ideal choice as an editor to give
1651to new users that want instant e-mail access without having to care for
1652klumsy gateway addressing rules.
1653
1654@menu
1655* Gateway Principles::          How does a UUCP gateway work?
1656* Gateway Configuration::       How to configure @value{MSGED} for e-mail.
1657* Gateway Usage::               How to use @value{MSGED} to write e-mail.
1658@end menu
1659
1660@node Gateway Principles, Gateway Configuration, Internet Gateways, Internet Gateways
1661@subsection How to properly address an Internet Gateway
1662There are various ways of designing Fidonet to Internet gateways. The most
1663common is the @dfn{Gatebau} standard, which among others is
1664implemented in the excellent gateway software Fidogate by Martin Junius. You
1665can find more information about Fidogate at @url{http://www.fido.de}. Various
1666other gateway programs more or less conform to this standard as well.
1667
1668Addressing a Gatebau compatible gateway works like this: The gateway has its
1669own node- or point number. When you wish to write an e-mail using a standard
1670Fidonet editor, you have to address your netmail to this gateway node
1671number. As receiver's name, you can use the real name of the receiver, or you
1672can use @samp{UUCP}, if the real name of the receiver is unknown. Some
1673not-so-smart gateway software requires that you always use @samp{UUCP} as
1674receiver's name. - In order to tell the gateway the e-mail address that the
1675mail should be delivered to, the very first line of your message must contain
1676the e-mail address of the receiver, preceded by @samp{To:}. The e-mail
1677address can be specified in three different forms. Here are three possible
1678first lines of gateway-addressed netmails:
1679
1680@example
1681To: juser@@somedomain.com
1682To: juser@@somedomain.com (Joe User)
1683To: Joe User <juser@@somedomain.com>
1684@end example
1685
1686The last of these forms is not supported by some older gateway
1687software. - The @samp{To:}-line must be followed by an empty line, and then you
1688can begin with your message text. A complete e-mail addressed to an internet
1689gateway at @samp{2:99/999.0} could look this:
1690
1691@example
1692==========Message Header==================
1693From:    Bill Sysop, 2:99/123.0
1694To:      UUCP, 2:99/999.0
1695Subject: This is a test e-mail
1696==========Message Body====================
1697To: juser@@somedomain.com (Joe User)
1698
1699Hello Joe!
1700
1701This is a test.
1702
1703Regards,
1704Bill.
1705@end example
1706
1707Receiving e-mail from the gateway is similar: You receive an e-mail from the
1708gateway node or point, and in the mail boday, the first line will contain a
1709@samp{From:}-line which designates the e-mail address the mail was
1710from. Sometins, the @samp{From:}-line is followed by a @samp{Reply-to:} line,
1711which indicates that the sender wishes to receive any answers at the e-mail
1712address shown in the @samp{Reply-to:}-line rather than at the e-mail address
1713shown in the @samp{From:}-line. Here is an example:
1714
1715@example
1716==========Message Header========================
1717From:    Joe User, 2:99/999.0
1718To:      Bill Sysop, 2:99/123.0
1719Subject: Re: This is a test e-mail
1720==========Message Body==========================
1721From: Joe User <joe@@some-machine.somedomain.com>
1722Reply-To: Joe User <juser@@somedomain.com>
1723
1724Hello Bill!
1725
1726I received your test e-mail without problems.
1727
1728Regards,
1729Joe.
1730@end example
1731
1732This interface works with every stone-age Fidonet editor, but it is
1733clumsy. When replying to an e-mail that came through a gateway, for example,
1734you would have to remember the sender's e-mail address, and when writing the
1735reply, you would have to manually insert a correct @samp{To:}-line, just to
1736name one problem.
1737
1738Therefore, @value{MSGED} can do the work for you. If properly configured,
1739@value{MSGED} will to the job of interpreting and inserting @samp{From:},
1740@samp{Reply-To:} and @samp{To:} lines. With gateway support turned on,
1741writing an e-mail with @value{MSGED} is just as easy as writing a fidonet
1742netmail. In the following, we will see how to configure @value{MSGED} for
1743gateway support and how to use these features.
1744
1745@node Gateway Configuration, Gateway Usage, Gateway Principles, Internet Gateways
1746@subsection How to configure @value{MSGED} to use an Internet Gateway
1747In order to do the gateway addressing stuff for you, @value{MSGED} needs to
1748know which gateway you wish to use for sending e-mail. @value{MSGED} will
1749recognise gated e-mail no matter which gate it comes from, but it must be
1750told which gateway can be used to send replies and new e-mail, because most
1751gateways require that you pay some sort of registration fee before you can
1752use them for sending mail.
1753
1754The @code{UUCP} keyword is used to tell @value{MSGED} the node number of your
1755internet gateway (@pxref{UUCP,,The @code{UUCP} Keyword}). It simply takes
1756this node numer as argument. Example:
1757
1758@example
1759UUCP 242:4900/99.0
1760@end example
1761
1762The @code{UucpName} keyword is used to tell @value{MSGED} the name that must
1763be in the receiver's name field in a netmail sent to the gateway. For older
1764gateways, you should use
1765
1766@example
1767UucpName UUCP
1768@end example
1769
1770If your gateway is running Fidogate or another more advanced gateway program,
1771you should use
1772
1773@example
1774UucpName *
1775@end example
1776
1777This enables real name mode, i.E., mail addressed to the gateway will have
1778the real name of the receiver in the receiver's name field instead of the
1779pseudo name @samp{UUCP}. The advantage of this is that your message templates
1780will generate strings like @samp{Hello Joe!} instead of @samp{Hello UUCP!}
1781@dots{}
1782
1783If you want to insert Reply-To lines into outgoing mail, and if your gateway
1784supports them, of course, you might also wish to use the @samp{UucpReplyTo}
1785keyword. Reply-To lines are used to tell the receiver's software that replys
1786should be directed to an alternative e-mail account instead of the one you
1787are mailing from. @xref{UucpReplyTo,,The @code{UucpReplyTo} Keyword}, for more information.
1788
1789There is yet another task to be done before you can use the gateway
1790addressing features of @value{MSGED}. For historical reasons, the gateway
1791addressing features are disabled by default, and you have to enable them on a
1792per-area basis.
1793
1794Unless you have special needs, it is best to enable the gateway addressing
1795features for @emph{all} areas, because a lot of fidonet areas are gated to
1796internet somewhere. You do this by adding the @samp{u} flag to every area
1797that you have manually defined in the @value{MSGED} configuration file, and
1798by specifying @code{AreaFileFlags u} at the beginning of the configuration
1799file in order to set the @samp{u} flag for all area definitions that are
1800imported from your tosser configuration file. @xref{Area
1801Definitions,,Defining Message Areas}, for more information on message area
1802flags.
1803
1804@node Gateway Usage,  , Gateway Configuration, Internet Gateways
1805@subsection Using Internet Gateays with @value{MSGED}
1806Once you have configured @value{MSGED} with the data of the gateways that you
1807wish to use and turned on the @samp{u} flag for all areas, writing e-mail is
1808very simple. When entereing a message, you just have to enter a valid e-mail
1809address instead of a user name. If @value{MSGED} recognises a valid e-mail
1810address, it will not look up this name in the nodelist or prompt you for a
1811node number, but it will automatically address the mail to the configured
1812gateway nodenumber and generate the necessary @samp{To:}-line. The
1813@samp{To:}-line will not even be shown to you, unless you have the
1814@code{ShowNotes} switch on (@pxref{List of Switches,,List of available
1815switches}).
1816
1817Reading e-mail that comes from any internet gateway is equally simple. If the
1818@samp{u} flag is set for an area, @value{MSGED} will automatically recognise
1819@code{From:} and @code{Reply-To:} lines and hide them from you. Instead of
1820displaying the gateway pseudo user name and node numer, it will display
1821the e-mail address that the mail is coming from in the message header field.
1822
1823@value{MSGED} also supports newsgroups, i.E. echomail areas that are being
1824received from an internet gateway, as long as the @samp{u} flag ist turned on
1825for these areas. In newsgroups, @value{MSGED} will handle mails (postings)
1826just as in netmail areas, i.E. it will display the sender's e-mail address in
1827the message header. If you do a private reply (i.E. a reply to a netmail area
1828using @key{Alt}-@key{N}), the e-mail reply will correctly be addressed to
1829your favorite internet gateway.
1830
1831@node Keyboard Reference, Configuration Reference, Advanced Concepts, Top
1832@chapter @value{MSGED} Keyboard Reference
1833This chapter gives a complete listing of available keystroke combinations in
1834@value{MSGED}. After that, you will find instructions on how you can redefine
1835the keyboard to suit your preferences.
1836
1837Please note: @value{MSGED} traditionally uses a DOS-ish PC keyboard with
1838@key{Alt} key and function keys. Unix users should refer to the Unix
1839installation notes before reading this chapter (@pxref{Notes on UNIX keyboard
1840input}).
1841
1842@menu
1843* Arealist Keystrokes::         Keystroke combinations in the Arealist Screen
1844* Reader Keystrokes::           Keystroke combinations in message reading mode
1845* Editor Keystrokes::           Keystrokes in the internal message editor
1846* Redefining the Keyboard::     How to redefine the keyboard layout
1847@end menu
1848
1849@node Arealist Keystrokes, Reader Keystrokes, Keyboard Reference, Keyboard Reference
1850@section Keystroke Combinations in the Arealist Screen
1851
1852The arealist screen is the screen that normally shows up right after you
1853start @value{MSGED}. It lists all areas that you have defined in the
1854configuration file (@pxref{Area Definitions,,Defining Message Areas}).
1855
1856The arealist screen can be navigated with the cursor keys, or you can also
1857navigate through the area list by simply typing in the first few letters of
1858the area name that you are looking for.
1859
1860In addition, the following commands are available in the arealist screen:
1861
1862@table @asis
1863@item @key{Right}
1864@itemx @key{Enter}
1865Enter the selected area
1866
1867@item @key{Alt}-@key{X}
1868Quit @value{MSGED}
1869
1870@item @key{*}
1871@itemx @key{Alt}-@key{T}
1872Scan all message areas for new messages. Depending on your setup, you will
1873have to do this on program startup. The scan process can be interrupted by
1874pressing @key{ESC}.
1875
1876@item @key{#}
1877@itemx @key{Alt}-@key{S}
1878Scan message areas for new messages, but only scan areas that have not been
1879scanned perviously. Areas that have not yet been scanned for messages are
1880listed with dashes instead of message numbers in the area list.
1881
1882@item @key{Ctrl}-@key{G}
1883Select a group. Display a menu of all message area groups. Selecting any
1884message are group here will result in the aralist only displaying areas that
1885are member of this particular group, until you use @key{Ctrl}-@key{G} again
1886to select another group, or to select to display members of all groups.
1887
1888@item @key{Alt}-@key{0}
1889Display all areas (no matter which group they belong to).
1890
1891@item @key{Alt}-@key{1} @dots{} @key{Alt}-@key{9}
1892Only display areas that are member of the 1st @dots{} 9th group. The first group
1893is the group which appears first in the @key{Ctrl}-@key{G} menu, and so on.
1894
1895@end table
1896
1897The keyboard setup of the Arealist Screen cannot be modified by the user.
1898
1899
1900@node Reader Keystrokes, Editor Keystrokes, Arealist Keystrokes, Keyboard Reference
1901@section Keyboard Commands and Functions in Message Reading mode
1902When you press @key{Enter} or @key{Right} in the arealist screen, you will
1903enter message reading mode. (An exception to this is if you have turned the
1904@code{DirectList} switch on. @xref{List of Switches,,List of available
1905switches}, for more details. In this case, you will enter the message list
1906mode instead). In the message reading mode, one message is displayed at a
1907time. You can scroll through the message, write new messages, jump to other
1908messages of the same message area, jump to other message areas, and invoke
1909numerous special functions.
1910
1911All functions that are accessible from this mode have a unique name. Most
1912functions are prebound to a reasonable keycode combination, but you can
1913redefine the keyboard mapping by assigning other keycode combinations to
1914these function names (@pxref{Redefining the Keyboard,,Redefining the
1915Keyboard}).
1916
1917@menu
1918* Navigation Functions::        Keystrokes for navigating through messages.
1919* Message Functions::           Keystrokes for entering or changing messages.
1920* Scanning and Searching::      Keystrokes for scanning or searching mails.
1921* Options Functions::           Keystrokes for changing program behaviour.
1922* Misc Reader Functions::       Miscellaneous other functions.
1923@end menu
1924
1925@node Navigation Functions, Message Functions, Reader Keystrokes, Reader Keystrokes
1926@subsection Reader Functions for Navigation
1927
1928@table @asis
1929@item Function: @code{down}, bound to: @key{Down}
1930@krindex down
1931Scrolls the text of the current message down.
1932
1933@item Function: @code{up}, bound to: @key{Up}
1934@krindex up
1935Scrolls the text of the current message up.
1936
1937@item Function: @code{help}, bound to: @key{Alt}-@key{H}
1938@krindex help
1939Displays online help on available keyboard commands.
1940
1941@item Function: @code{next}, bound to: @key{Right}
1942@krindex next
1943Go to the next message in this area.
1944
1945@item Function: @code{previous}, bound to: @key{Left}
1946@krindex previous
1947Go to the previous message in this area.
1948
1949@item Function: @code{first}, bound to: @key{Home}
1950@krindex first
1951Go to the very first message in this area.
1952
1953@item Function: @code{slast}, bound to: @key{End}
1954@krindex slast
1955Go to the very last message in this area.
1956
1957@item Function: @code{link_to}, bound to: @key{Ctrl}-@key{Right}
1958@krindex link_to
1959Go to the message that is a reply to this message. If there is more than one
1960reply to this message, you will be presented a select box.
1961
1962@item Function: @code{u-next}, bound to: @key{Ctrl}-@key{I}
1963@krindex u-next
1964Go to the message that is a reply to this message. If there is more than one
1965reply to this message, this function does not present a select box, but
1966simply jumps to the first of all replies.
1967
1968@item Function: @code{link_from}, bound to: @key{Ctrl}-@key{Left}
1969@krindex link_from
1970Go to the message that this message is in reply to (if any).
1971
1972@item Function: @code{next_area}, bound to: @key{+}
1973@krindex next_area
1974Go to the next message area.
1975
1976@item Function: @code{prev_area}, bound to: @key{-}
1977@krindex prev_area
1978Go the the previous message area.
1979
1980@item Function: @code{list}, bound to: @key{Alt}-@key{L}
1981@krindex list
1982This will display a list of all messages in this area. You can navigate
1983through this list with the cursor keys, tag entries by pressing space, and
1984apply a subset of the functions of the message reading mode (like delete,
1985move, etc.) to the tagged messages. You can leave the list by pressing either
1986@key{Enter}, which will position you to the message that was selected
1987in the list when pressing @key{Enter}, or by pressing @key{Esc},
1988which will position you to the message that was active before entering the
1989message list mode.
1990
1991@item Function: @code{last}, not pre-bound to any key
1992@krindex last
1993Go to the last read message in this area (the message right before the first
1994unread message).
1995
1996@item Function: @code{astart}, not pre-bound to any key
1997@krindex astart
1998Go to the message that was active when you entered this message area.
1999
2000@item Function: @code{home}, not pre-bound to any key
2001@krindex home
2002Go to the first message in the current reply-chain.
2003
2004@item Function: @code{back}, not pre-bound to any key.
2005@krindex back
2006Goes back to where you were in the reply chain before using the
2007@code{link_to} or @code{link_from} functions. Untested.
2008@end table
2009
2010
2011
2012@node Message Functions, Scanning and Searching, Navigation Functions, Reader Keystrokes
2013@subsection Reader Functions for Entering, Modifying and Deleting Messages
2014
2015@table @asis
2016@item Function: @code{newmsg}, bound to: @key{Alt}-@key{E} or @key{Ins}
2017@krindex newmsg
2018Enter a new message.
2019
2020@item Function: @code{reply}, bound to: @key{Alt}-@key{R}
2021@krindex reply
2022Reply to the message currently displayed without quoting it.
2023
2024@item Function: @code{quote}, bound to: @key{Alt}-@key{Q}
2025@krindex quote
2026Write a quoted reply to the message currently displayed.
2027
2028@item Function: @code{repoth}, bound to: @key{Alt}-@key{N}
2029@krindex repoth
2030Reply to this message in a different message area. You can use this for
2031netmail replies as well as for moving a thread from one area to a different
2032one.
2033
2034@item Function: @code{followup}, bound to: @key{Alt}-@key{U}
2035@krindex followup
2036Reply to this message, but address the reply to the recipient of the message
2037you are replying to instead of the sender.
2038
2039@c{FIXME "repext", replyextra},
2040
2041@item Function: @code{change}, bound to: @key{Alt}-@key{C}
2042@krindex change
2043This allows you to edit an existing message.
2044
2045@item Function: @code{edithdr}, bound to: @key{Ctrl}-@key{H}
2046@krindex edithdr
2047Edit the header of the current message (but not the text).
2048
2049@item Function: @code{move}, bound to: @key{Alt}-@key{M}
2050@krindex move
2051Move the message currently displayed to another area.
2052
2053@item Function: @code{delete}, bound to: @key{Alt}-@key{D} or @key{Del}
2054@krindex delete
2055Delete the message currently being displayed.
2056@end table
2057
2058
2059@node Scanning and Searching, Options Functions, Message Functions, Reader Keystrokes
2060@subsection Reader Functions for Scanning and Searching for Messages
2061@cindex personal mail scan
2062@cindex new mail scan
2063@cindex mail scan
2064@cindex searching mails
2065
2066@table @asis
2067@item Function: @code{scan}, bound to: @key{*}
2068@krindex scan
2069Scan all message areas for new messages.
2070
2071@item Function: @code{scan_unscanned}, bound to: @key{#}
2072@krindex scan_unscanned
2073Scan message areas for new messages, but only scan areas that have not been
2074scanned previously.
2075
2076@item Function: @code{pmail}, bound to: @key{Alt}-@key{P}
2077@cindex personal mail cscan
2078@krindex pmail
2079Personal mail scan: this scans all message areas for messages addressed to you.
2080
2081@item Function: @code{spmail}, not pre-bound to any key
2082@krindex spmail
2083This scans for messages addressed to you in the current area only.
2084
2085@item Function: @code{search}, bound to: @key{Alt}-@key{F}
2086@krindex search
2087@cindex searching
2088Allows you to search a message area for a specific keyword. The search
2089direction will be the direction that you previously moved into. For example,
2090in order to search a complete message area backwards for a certain mail, you
2091must press @key{End} to go to the end of the area, then press
2092@key{Left} in order to set the search direction to ``backwards'', and
2093then press @key{Alt}-@key{F} to start the search.
2094
2095@item Function: @code{hdrsearch}, bound to: @key{Alt}-@key{Z}
2096@krindex hdrsearch
2097This works like @code{search}, but only scans message headers.
2098@end table
2099
2100@node Options Functions, Misc Reader Functions, Scanning and Searching, Reader Keystrokes
2101@subsection Reader Functions for modifying @value{MSGED} Options
2102
2103@table @asis
2104@item Function: @code{view}, bound to: @key{Alt}-@key{V}
2105@krindex view
2106@cindex kludge lines, showing or hiding
2107Toggle display of message control lines, kludge lines, etc.
2108
2109@item Function: @code{config}, bound to: @key{Alt}-@key{S}
2110@krindex config
2111This function allows you to set some (but not all) of the system
2112switches. @xref{Switches,,Switches}, for more information.
2113
2114@item Function: @code{chngaddr}, bound to: @key{Ctrl}-@key{W}
2115@krindex chngaddr
2116Change the origination address used for writing mail. You will not need this
2117key in normal operation, as @value{MSGED} employs an intelligent mechanism
2118for AKA matching.
2119
2120@item Function: @code{chnodel}, bound to: @key{Ctrl}-@key{N}
2121@krindex chnodel
2122Change the currently active nodelist.
2123
2124@item Function: @code{name}, bound to: @key{Ctrl}-@key{U}
2125@krindex name
2126If you have defined more than one user name with the @code{Name}
2127configuration keyword, you can use this function to select the name to use
2128when writing messages. If you have any @code{GroupSettings} keyword in your config,
2129this selection will only last until you enter a new area, because in such a
2130scenario, the username which is used is defined by the area that you are
2131in. If you don't have any @code{GroupSettings} keyword in your config, this selection
2132will last until you make a different one. @xref{GroupSettings,,The
2133@code{GroupSettings} keyword}, for more information.
2134@end table
2135
2136@node Misc Reader Functions,  , Options Functions, Reader Keystrokes
2137@subsection Miscellaneous other Reader Functions
2138
2139@table @asis
2140@item Function: @code{export}, bound to: @key{Alt}-@key{W}
2141@krindex export
2142@cindex printing messages
2143@cindex exporting message text
2144Export the text of the current message to a file or printer port. You will be
2145shown a dialog box where you can enter a filename and some other
2146options. @xref{Exporting and Printing}, for further information.
2147
2148@item Function: @code{selchs}, bound to: @key{Alt}-@key{T}
2149@krindex selchs
2150@cindex overriding CHRS kludge
2151@cindex CHRS kludge, override
2152This will show a select box where you can manually select which codepage or
2153character set you think the messages that you are reading are in. You only
2154need this in two cases: Either when some idiot is inserting a wrong CHRS
2155kludge into this mail, or when a mail does not have a CHRS kludge and it is
2156@emph{not} written in the character set that you have specified as argument
2157to the @code{AssumeCharset} keyword (@pxref{AssumeCharset,,The AssumeCharset
2158Keyword}.
2159
2160An example would be if you have configured your computer with
2161@samp{AssumeCharset 850} because you usually write in a Western European
2162language, but ocasionally read Russian echomail. Then, if the Russian mail
2163does not have a charset kludge, you would need to press @key{Alt}-@key{T} and
2164manually select @samp{CP866 2} in order to view the proper transcription of
2165the cyrillic text.
2166
2167The selection that you make lasts until you make a differnt one, or until you
2168quite @value{MSGED}.
2169
2170@item Function: @code{shell}, bound to: @key{Alt}-@key{O}
2171@krindex shell
2172Call an operating system shell (prompt). Under DOS, @value{MSGED} is swapped
2173out of memory for this.
2174
2175@item Function: @code{dos}, bound to: @key{!}
2176@krindex dos
2177Directly execute an operating system command.
2178
2179@item Function: @code{null}, not pre-bound to any key.
2180@krindex null
2181Simply does nothing.
2182
2183@item Function: @code{exit}, bound to: @key{Alt}-@key{X}, @key{Alt}-@key{A} and @key{Esc}
2184@krindex exit
2185Leave the message reading mode. Returns to the arealist screen.
2186@end table
2187
2188@node Editor Keystrokes, Redefining the Keyboard, Reader Keystrokes, Keyboard Reference
2189@section Keyboard Commands and the internal Message Editor
2190@value{MSGED} has a built in message editor. It is suggested that, before you
2191start using an external editor for writing messages, you should at least try
2192to use the internal message editor, because it is best suited for composing
2193FTN-style messages. The internal message editor is highly configurable, so you
2194should be able to use the internal message editor with the same keyboard
2195setup as your preferred external text editor.
2196
2197In the following, you will be shown a complete list of available message
2198editor functions. These functions are pre-bound to sensible keystrokes, which
2199are also listed in the following table. Each message editor function has a
2200unique name, and using this name, you can bind this function to any keystroke
2201that you might estimate to be adequate. Instructions on how to do this will
2202be given in the following section (@pxref{Redefining the Keyboard,,Redefining
2203the Keyboard bindings}).
2204
2205@menu
2206* Cursor Movement::             Keystrokes for moving the cursor.
2207* Killing Text::                Keystrokes for deleting text.
2208* Text Block Commands::         Keystrokes for cut and paste functionality.
2209* Miscellaneous Commands::      Other functions like saving, importing, etc.
2210@end menu
2211
2212@node Cursor Movement, Killing Text, Editor Keystrokes, Editor Keystrokes
2213@subsection Editor Functions for Moving the Cursor
2214
2215@table @asis
2216@item Functions: @code{left}, @code{right}, @code{up}, @code{down}
2217@keindex left
2218@keindex right
2219@keindex up
2220@keindex down
2221These functions are pre-bound to the cursor keys and move the cursor left,
2222right, up or down by one line.
2223
2224@item Functions: @code{wordleft}, @code{wordright}
2225@keindex wordleft
2226@keindex wordright
2227These functions are pre-bound to @key{Ctrl}-@key{Left} and
2228@key{Ctrl}-@key{Right} and move the cursor to the beginning of the
2229previous or the beginning of the next word respectively.
2230
2231@item Functions: @code{pgup}, @code{pgdn}
2232@keindex pgup
2233@keindex pgdn
2234These functions are pre-bound to the @key{PgUp} and @key{PgDn} (or on some
2235Unix boxes, @key{Prev} and @key{Next}) keys and scroll the text up or down by
2236one page and place the cursor accordingly.
2237
2238@item Functions: @code{gobol}, @code{goeol}
2239@keindex gobol
2240@keindex goeol
2241These functions are pre-bound to the @key{HOME} and @key{END} keys and move
2242the cursor to the beginning or end of the current line.
2243
2244@item Functions: @code{top}, @code{bottom}
2245@keindex top
2246@keindex bottom
2247These functions are pre-bound to the @key{Ctrl}-@key{PgUp} and
2248@key{Ctrl}-@key{PgDn} keys and move the cursor to the top or bottom
2249line of the current screen.
2250
2251@item Functions: @code{first}, @code{last}
2252@keindex first
2253@keindex last
2254These functions are pre-bound to the @key{Ctrl}-@key{Home} and
2255@key{Ctrl}-@key{End} keys and move the cursor to the very first or
2256very last line of the mail that is currently being edited.
2257
2258@item Function: @code{tab}, pre-bound to: @key{Tab}
2259@keindex tab
2260This function moves the cursor to the next tabulator position by inserting
2261whitespace characters (@emph{not} tabulator characters!) into the mail. The distance
2262between tabulator postitions can be adjusted with the @code{TabSize} keyword
2263in the configuration file (@pxref{Tabsize,,The @code{TabSize} Keyword}).
2264
2265@item Function: @code{newline}, pre-bound to: @key{Enter}, @key{RET}
2266This function inserts a @emph{hard} carriage return and places the cursor to
2267the beginning of the next line. Note: Normally, hard carriage returns are
2268only inserted as paragraph delimiters or when posting formatted tables in
2269fidonet. For normal message text, you should @emph{not} press @key{Enter}
2270near the end of the line, but you should type a continous text (and leave the
2271wrapping to @value{MSGED}) and only press @key{Enter} once or twice at the
2272end of a paragraph. This will allow the receivers of your message to format
2273the message in a way that nicely fits their screen widths (not everybody is
2274using 80 column terminals!).
2275@end table
2276
2277@node Killing Text, Text Block Commands, Cursor Movement, Editor Keystrokes
2278@subsection Editor Functions for Deleting text
2279
2280@table @asis
2281@item Function: @code{backspace}, pre-bound to: @key{BS}
2282@keindex backspace
2283Kills the character on the left side of the cursor and moves the cursor back
2284one step.
2285
2286@item Function: @code{del}, pre-bound to: @key{Del}
2287@keindex del
2288Deletes the character at the current cursor position.
2289
2290@item Function: @code{deleol}, pre-bound to: @key{Alt}-@key{K}
2291@keindex deleol
2292Deletes all characters from the current cursor position to the end of the
2293line. This function has no effect if issued in an empty line.
2294
2295@item Function: @code{delline}, pre-bound to: @key{Alt}-@key{D}, @key{Ctrl}-@key{Y}
2296@keindex delline
2297Deletes all characters in the current line and removes this line.
2298
2299@item Function: @code{emacskill}, pre-bound to: @key{Ctrl}-@key{K}
2300@keindex emacskill
2301This function works like @code{deleol}, i.E. it kills all characters from the
2302current cursor position to the end of the line, but if issued in an empty
2303line, it removes that line. This is just what pressing
2304@key{Ctrl}-@key{K} does in the GNU Emacs editor.
2305
2306@item Function: @code{killword}, pre-bound to: @key{Ctrl}-@key{T}
2307@keindex killword
2308Deletes all characters from the current cursor position to the end of the
2309current word.
2310
2311@item Function: @code{undel}, pre-bound to: @key{Ctrl}-@key{U}
2312@keindex undel
2313This is a rather limited undelete function. It will restore lines that have
2314previously been killed with the @code{delline} function. It will not
2315restore single charactres that have been killed with @code{del},
2316@code{deleol}, @code{killword}, @code{emacskill} or similar functions.
2317
2318@item Function: @code{zap}, pre-bound to: @key{Alt}-@key{L}
2319@keindex zap
2320This function is useful when using the quoted reply features. It will kill
2321all lines below the current cursor position that only contain quoted text
2322(these will usually be highlighted in a different color) until the next
2323unquoted line. This is useful to easily kill quoted signature text etc. Use
2324this to reduce the number of unnecessary quoted lines in your mails!
2325
2326@end table
2327
2328@node Text Block Commands, Miscellaneous Commands, Killing Text, Editor Keystrokes
2329@subsection Editor Functions dealing with Text Blocks
2330@cindex cut and paste
2331
2332These functions provide cut'n'paste functionality:
2333
2334@table @asis
2335@item Function: @code{anchor}, pre-bound to: @key{Alt}-@key{A}
2336This drops an anchor at the current cursor position. You have to drop two
2337anchors at different places, then the text between the two anchors will be
2338highlighted and treated as a selected text block.
2339
2340@item Function: @code{cut}, pre-bound to: @key{Alt}-@key{C}
2341This will cut the currently selected text block (use @code{anchor} to select
2342a text block), i.E., it will delete all selected characters and store them in
2343an internal clipboard. Text that previously was stored in the clipboard will
2344of course be discarded.
2345
2346@item Function: @code{paste}, pre-bound to: @key{Alt}-@key{P}
2347This will paste (insert) the text block from the clipboard (i.E. the last text
2348that has been cut with the @code{cut} function) at the current cursor
2349position.
2350
2351@item Function: @code{unblock}, pre-bound to: @key{Alt}-@key{U}
2352Any anchors that have been dropped with the @code{anchor} function will be
2353removed, that is, any previously highlighted text will again be displayed
2354normally.
2355
2356@end table
2357
2358@node Miscellaneous Commands,  , Text Block Commands, Editor Keystrokes
2359@subsection Miscellaneous Editor Functions
2360
2361@table @asis
2362@item Function: @code{abort}, pre-bound to: @key{ESC}
2363@keindex abort
2364Aborts the current message without saving.
2365
2366@item Function: @code{bytecount}, pre-bound to: @key{Alt}-@key{B}
2367@keindex bytecount
2368Displays the number of bytes and the quote ratio in the current message.
2369
2370@item Function: @code{edithdr}, pre-bound to: @key{Alt}-@key{E}
2371@keindex edithdr
2372Lets you edit the header of the message (recipient, sender and subject
2373information) in case you made an error when first entering the header.
2374
2375@item Function: @code{export}, pre-bound to: @key{Alt}-@key{W}
2376@keindex export
2377Export the text of the current message to a file or printer port. You will be
2378shown a dialog box where you can enter a filename. @xref{Exporting and
2379Printing}, for further information.
2380
2381@item Function: @code{insert}, pre-bound to: @key{Ins}
2382@keindex insert
2383This function toggles between the ``insert'' and ``overwrite'' modes of the
2384editor.
2385
2386@item Function: @code{import}, pre-bound to: @key{Alt}-@key{I}
2387@keindex import
2388@cindex importing text files into a message
2389Imports text from a text file into the message. You will be shown a dialog
2390box where you can enter a filename.
2391
2392@item Function: @code{null}, not pre-bound to any key.
2393@keindex null
2394Simply does nothing.
2395
2396@item Function: @code{oscmd}, pre-bound to: @key{Alt}-@key{1}
2397@keindex oscmd
2398This allows you to enter an operating system command that will be executed
2399directly.
2400
2401@item Function: @code{setup}, bound to: @key{Alt}-@key{T}
2402@keindex setup
2403This function allows you to set some (but not all) of the system
2404switches. @xref{Switches,,Switches}, for more information.
2405
2406@item Function: @code{shell}, bound to: @key{Alt}-@key{O}
2407@keindex shell
2408Call an operating system shell (prompt). Under DOS, @value{MSGED} is swapped
2409out of memory for this.
2410
2411@item Function: @code{toggleq}, bound to: @key{Alt}-@key{Q}
2412@keindex toggleq
2413This function toggles the quote state of the current line (whatever that
2414means ...).
2415
2416@item Function: @code{quit}, bound to: @key{Alt}-@key{S}
2417@keindex quit
2418This function saves the message currently being edited and quits the internal
2419message editor.
2420
2421@end table
2422
2423
2424
2425@node Redefining the Keyboard,  , Editor Keystrokes, Keyboard Reference
2426@section Redefining the Keyboard Bindings
2427@cindex keyboard bindings, redifining
2428@cindex redef
2429
2430If you are dissatisfied with the default keyboard bindings, you can easily
2431change the keyboard layout. Each of the message reader and message editor
2432keyboard functions that have been listed on the previous pages can be
2433assigned an arbitrary keystroke using the @code{ReadKey} and @code{EditKey}
2434configuration keywords. The syntax of these commands is as follows:
2435
2436@example
2437EditKey @var{keycode} @var{function-name}
2438ReadKey @var{keycode} @var{function-name}
2439@end example
2440
2441The @var{keycode} parameter designates wich keystroke you want to
2442redefine. In order to find out the key code matching a certain keystroke,
2443invoke the executable of @value{MSGED} with the @samp{-k} option. You can
2444then press the desired keystroke, and @value{MSGED} will print out the key
2445code that you have to use as @var{keycode} parameter in the configuration
2446file. Here is an example session:
2447
2448@example
2449[R:\mailer\msged]msgedp -k
2450Displaying keyboard scan codes in hexadecimal form.
2451
2452Press any key or key combination, or 'q' (lowercase 'Q') to exit.
2453Key: 0x2100
2454Key: 0x0071 (q)
2455@end example
2456
2457I pressed @key{Alt}-@key{F} and @kbd{q} to reproduce this
2458output. From the output, we can see that @key{Alt}-@key{F} has the
2459keycode @samp{0x2100}, and @kbd{q} has the keycode
2460@samp{0x0071}. Keycodes might vary depending on your hardware and operating
2461system. Also, on UNIX consoles sometimes keys are not mapped correctly at
2462all, in which case different key combinations might have the same key
2463code. If you find one where this is problematic, contact me for a bug report.
2464
2465Now that you know the proper keycode, you can assign it to any reader or
2466editor function. @xref{Reader Keystrokes,, Keyboard Commands and Functions in
2467Message Reading mode}, for a complete list of available keyboard functions
2468for message reading mode. @xref{Editor Keystrokes,, Keyboard Commands and
2469Functions in the internal Message Editor}, for a complete list of available
2470keyboard functions in the built-in message editor.
2471
2472As an example, let us assign the keystroke
2473@key{Alt}-@key{F} to the @samp{wordright} editor function:
2474
2475@example
2476EditKey 0x2100 wordright
2477@end example
2478
2479With this line in your configuration file, you will be able to press
2480@key{Alt}-@key{F} in order to move the cursor to the beginning of the
2481next word.
2482
2483@node Configuration Reference, Compiling, Keyboard Reference, Top
2484@chapter @value{MSGED} Configuration Reference
2485@value{MSGED} has to be configured using a configuration file. This is a
2486plain text ASCII file containing a list of keywords, settings and switches
2487that define the behaviour of @value{MSGED}. The configuration file is named
2488@file{msged.cfg} and should normally be placed in the current working
2489directory of @value{MSGED}. (On Linux/Unix, it is named @file{.msged} instead
2490and placed in your home directory).
2491
2492This chapter describes the syntax of the configuration file and lists all
2493avilable keywords and switches in alphabetical order.
2494
2495@menu
2496* Syntax::                      Configuration file syntax
2497* Keywords::                    Keywords for use in the configuration file.
2498* Switches::                    Switches for use in the configuration file.
2499* Conditionals::                Conditional Statements (IF/ELSE/ENDIF).
2500* Area Definitions::            How to define message areas
2501@end menu
2502
2503@node Syntax, Keywords, Configuration Reference, Configuration Reference
2504@section Configuration File Syntax
2505@cindex environment variables, using
2506@cindex comments, configuration file
2507Each line in the configuration file should start with a keyword. Each
2508keyword can be followed by zero or more free-form parameters.
2509
2510A special case of a keyword is the @samp{switch} keyword. Using the
2511@samp{switch} keyword, a switch can be turned either on or
2512off. @pxref{Switches}, for more information.
2513
2514When parsing the config file, lines that start with a semicolon or with a
2515semicolon preceeded only by whitespace are treated as comments.
2516
2517Within the configuration file, you may use environment
2518variables. Enclose the name of the environment variable within percent
2519signs. For example, if you give a command like @samp{"Areafile
2520%MAILBOX%\squish\squish.cfg"}, the string @samp{%MAILBOX%} would be
2521replaced with the value of the environment variable @samp{MAILBOX}.
2522
2523You can also disable or enable certain parts of the configuration file based
2524on the value of environment variables or on the operating system by
2525using Conditionals. @xref{Conditionals, Conditional Statements in the
2526Configuration File}, for more information.
2527
2528@node Keywords, Switches, Syntax, Configuration Reference
2529@section Configuration File Keywords
2530The following keywords can be used in the configuration file. Keywords
2531are generally case-insensitive.
2532
2533@menu
2534* Address::                     Specifying your FTN AKAs.
2535* Alias::                       Your personal address book.
2536* Alterfunc::
2537* AreaExcl::                    Excluding areas from the area list.
2538* Areafile AreaFileFlags and AreaDesc::  Reading a tosser config file.
2539* AssumeCharset::               Workaround for mails without CHRS kludges.
2540* CharsetAlias::                About IBMPC 2 and other wrong CHRS kludges.
2541* Color::                       Configuring the screen colors.
2542* Colour::
2543* CurStart/CurEnd::             Configuring the cursor shape.
2544* Domain::                      About Domain Gating.
2545* EditKey::                     Configurint the editor's keyboard layout.
2546* Editor::                      Selecting the internal or an external editor.
2547* EnableSC::                    Enabling input of ``Umlauts'' on Unix.
2548* Fido::                        Specifying a Fido *.MSG format mail area
2549* FreqArea::                    Specifying an area to place file requests in.
2550* FreqFlags::                   Specifying flags for file request messages.
2551* Function::                    Creating keyboard macros.
2552* Gate::                        Enabling Domain- and/or Zone gating.
2553* Group::                       Defining groups and adding areas to groups.
2554* GroupSettings::               Different templates for different areas.
2555* HelpFile::                    Enabling online help.
2556* Include::                     Including other configuration files.
2557* Jam::                         Specifying a Jam format mail area.
2558* Lastread::                    Handling of the lastread pointer.
2559* MaxX and MaxY::               Hard-wiring the terminal size.
2560* MountDir::                    DOS to Unix path translation.
2561* Name::                        Configuring the Sysop's name.
2562* NodePath::                    Where to find the nodelist files.
2563* Nodelist::                    Configuring a V7 nodelist index.
2564* Origin::                      Choosing one or multiple origin lines.
2565* Outfile::                     Selecting a default export file name.
2566* OutputCharset::               Selecting the charset to use for umlauts.
2567* Printer::                     Configuring the default printer.
2568* PrivateNet::                  Nobody needs this.
2569* Quick::                       Specifying a QuickBBS/Hudson format mail area.
2570* QuickBBS::                    Specifying a QuickBBS/Hudson format mail area.
2571* Quote::                       Configuring the quote characters.
2572* QuoteRight::                  Configuring the right margin for quoting.
2573* ReadKey::                     Modifying the keyboard layout.
2574* Readmap::                     Where READMAPS.DAT and WRITMAPS.DAT are found.
2575* Right::                       Selecting the right margin for message display.
2576* RobotName::                   Do not use templates for Areafix mails :-)
2577* Scan::                        Enabling auto-scan on program startup.
2578* SoftCrXlat::                  How to treat code 0x8D (e.g. cyrillic En).
2579* SortAreas::                   Sort message areas by name or group.
2580* Squish::                      Specifying a Squish format mail area.
2581* SwapPath::                    DOS users need this @dots{}
2582* Switch::                      Turning configuration switches on or off.
2583* Tabsize::                     How many spaces shall a @key{Tab} key insert?
2584* Template::                    Signoff, Signature, et cetera.
2585* TossLog::                     Creating @file{ECHOTOSS.LOG} entires.
2586* UserList::                    Using a @file{FIDOUSER.LST} sysop list.
2587* UserOffset::                  Each user has a different lastread pointer.
2588* UUCP::                        Configuring your internet gateway.
2589* UucpName::                    Configuring your internet gateway.
2590* UucpReplyTo::                 Redirecting e-mail replies.
2591* Writemap::                    Where READMAPS.DAT and WRITMAPS.DAT are found.
2592@end menu
2593
2594
2595@node Address, Alias, Keywords, Keywords
2596@subsection Address
2597@findex Address
2598@table @asis
2599@item Syntax:
2600@code{Address @var{AKA}}
2601@item Example:
2602@code{Address 2:2476/418.0}
2603@end table
2604
2605The @code{Address} command specifies your FTN network address.
2606@var{AKA} is a FTN network address with up to five dimensions. The
2607@code{Address} keyword can be repeated as often as is desired to specify
2608multiple addresses.
2609
2610@node Alias, Alterfunc, Address, Keywords
2611@subsection Alias
2612@findex Alias
2613@table @asis
2614@item Syntax:
2615@code{Alias @var{alias} "@var{name}" @var{address} [@var{attribute} ["@var{subject}"]]}
2616@item Examples:
2617@example
2618Alias tobias "Tobias Ernst" 2:2476/418.0
2619Alias tobi "tobi@@bland.fido.de" UUCP
2620Alias af "Areafix" 2:2476/418.0 p "PASSWORT"
2621@end example
2622@end table
2623
2624Aliases are used to simplify the entry of new messages. When you enter a new
2625message and type in the previously defined @var{alias} into the name field,
2626all the other fields will be filled in with the values that you have provided
2627in the alias definition. You must at least specify the sysop's @var{name} in
2628quotation marks and the corresponding FTN @var{address} in up to five
2629dimensions.
2630
2631Alternatively, you may specify @samp{UUCP} as @var{address}. In this case,
2632the @var{name} field is interpreted as an internet e-mail address and the
2633mail is addressed to the corresponding gateway.
2634
2635Optionally, you may also specify one or more message attributes and a message
2636@var{subject}. The @var{attribute} field is a combination of one or more of the
2637following letters:
2638
2639@table @code
2640@item p
2641private
2642@item h
2643hold
2644@item c
2645crash
2646@item k
2647kill/sent
2648@item n
2649normal (no attributes)
2650@end table
2651
2652Note that you must always specify at least one message attribute
2653(at least @samp{n}) if you want to specify a subject.
2654
2655
2656@node Alterfunc, AreaExcl, Alias, Keywords
2657@subsection Alterfunc
2658@findex Alterfunc
2659This keyword is presently undocumented.
2660
2661@node AreaExcl, Areafile AreaFileFlags and AreaDesc, Alterfunc, Keywords
2662@subsection AreaExcl
2663@cindex excluding certain areas
2664@cindex areas, excluding from display
2665@findex AreaExcl
2666
2667@table @asis
2668@item Syntax:
2669@code{AreaExcl @var{pattern}}
2670@item Example:
2671@code{AreaExcl ALT.BINARIES.*}
2672@end table
2673
2674This keyword is used to exclude certain areas from the area selection
2675menu. All area names that match @var{pattern} will not be displayed in the
2676area selection menu and thus will not be accessible. The @var{pattern}
2677parameter may be a simple area name or a wildcard pattern containing the
2678joker characters @samp{*} and @samp{?}.
2679
2680You must specify the @code{AreaExcl} keyword in the configuration file
2681@emph{before} the @code{Squish}, @code{Fido}, @code{Quick} and
2682@code{Areafile} keywords.
2683
2684@node Areafile AreaFileFlags and AreaDesc, AssumeCharset, AreaExcl, Keywords
2685@subsection Areafile, AreaFileFlags and AreaDesc
2686
2687These keywords are documented in the section about area configuration
2688(@pxref{Areafile Parsing,,Reading a Tosser Configuration File (Areafile)}).
2689
2690@node AssumeCharset, CharsetAlias, Areafile AreaFileFlags and AreaDesc, Keywords
2691@subsection AssumeCharset
2692@cindex default character set
2693@cindex character set, default for reading
2694@findex AssumeCharset
2695
2696@table @asis
2697@item Syntax:
2698@code{AssumeCharset @var{charset}}
2699@item Example:
2700@code{AssumeCharset IBMPC}
2701@end table
2702
2703In Fidonet mail, mails that contain special characters must carray a charset
2704kludge line (@pxref{Special Characters,,Using Special Characters -
2705The FSC 0054 Charset Kludge}). However, still a good percentage of
2706fidonetmail contains special characters, but no charset kludge line. Also,
2707people often use wrong charset kludge names.
2708
2709By default, @value{MSGED} will replace all special characters with question
2710marks in mails without charset kludge or with unknown charset kludge,
2711because @value{MSGED} does not know how to properly translate such special
2712characters. If you do not like this, you can use the @code{AssumeCharset}
2713keyword to specify that @value{MSGED} should assume that all special
2714characters in mails that do not contain a charset kludge, or have a unknown
2715charset kludge, have been composed using the character set @var{charset},
2716and translate the special characters accordingly.
2717
2718In Germany, for example, nearly all mail that contains special characters but
2719does not contain a charset kludge has been composed using the IBMPC character
2720set, so it makes sense to specify @samp{AssumeCharset IBMPC} here.
2721
2722In Russia, it is best to use @samp{AssumeCharset CP866}.
2723
2724@node CharsetAlias, Color, AssumeCharset, Keywords
2725@subsection CharsetAlias
2726@findex CharsetAlias
2727
2728@table @asis
2729@item Syntax:
2730@code{CharsetAlias @var{charsetInMail} @var{charsetAsKnownToMsged}}
2731@item Example:
2732@code{CharsetAlias IBMPC CP850}
2733@end table
2734
2735As already noted in the previous section, a lot of mails in Fidonet contain
2736charset kludges that do not adhere to the current FTSC standard for 8-bit
2737character transport, @code{FSP1013}. Using the @code{CharsetAlias} keyword,
2738you can tell @value{MSGED} how to map character set kludge names
2739commonly found in mails to their official names.
2740
2741The most prominent example is the @code{IBMPC} charset kludge. This kludge
2742line is now obsoleted and should be replaced by @code{CPxxx} charset
2743kludges, where @code{xxx} stands for the codepage that is used. @value{MSGED}
2744@emph{only} knows about the new @code{CPxxx} charset. Therefore, you need to
2745use @code{CharsetAlias} to tell @value{MSGED} how to interprete a
2746@code{IBMPC} charset kludge. Now this is difficult, because, if the
2747@code{IBMPC} charset kludge is not followed by a @code{@@CODEPAGE} kludge
2748line, you do not know which codepage the author of the mail has
2749used. According to @code{FSC0054}, he should have used codepage 437, but in
2750Western Europe for example the majority of users put @code{IBMPC} charset
2751kludge lines into their mails, but actually use codepage 850, and in Russia
2752the same applies for codepage 866. This means that you have to do
2753assumptions. A users who reads mainly texts in Western European languages
2754should probably use @code{CharsetAlias IBMPC CP850}, while when you intend to
2755read Russian echomail, @code{CharsetAlias IBMPC CP866} is probably the right
2756thing to do.
2757
2758Also, some users are simply using fantasy names for the @code{CHRS} kludge
2759line. The following commands have also proven to be handy:
2760
2761@example
2762CharsetAlias +7_FIDO CP866
2763CharsetAlias RUFIDO CP866
2764CharsetAlias ASCII CP437
2765@end example
2766
2767@node Color, Colour, CharsetAlias, Keywords
2768@subsection Color
2769@cindex color settings
2770@cindex colour settings
2771@findex Color
2772
2773@table @asis
2774@item Syntax:
2775@code{Color @var{item} @var{foreground} _@var{background}}
2776@item Example:
2777@code{Color MainNorm White _Black}
2778@end table
2779
2780Use this to customize the colors that @value{MSGED} uses. For a list of
2781available color values and items, refer to the sample color scheme files.
2782
2783If you are using the Unix version of @value{MSGED}, you must also switch on the
2784@code{Colors} switch in order to get a non-monochrome display. @xref{Colors
2785in the Unix version,, Colors in the Unix version}, for more information.
2786
2787@c FIXME better documentaiton of color shemes
2788
2789@node Colour, CurStart/CurEnd, Color, Keywords
2790@subsection Colour
2791@findex Colour
2792
2793@code{Colour} is an alternative name for the keyword @code{Color}
2794(@pxref{Color, The @code{Color} Keyword}.
2795
2796@node CurStart/CurEnd, Domain, Colour, Keywords
2797@subsection CurStart, CurEnd
2798@findex CurStart
2799@findex CurEnd
2800@cindex cursor shape
2801@table @asis
2802@item Syntax:
2803@example
2804CurStart @var{row}
2805CurEnd @var{row}
2806@end example
2807@item Example:
2808@example
2809CurStart 5
2810CurEnd 7
2811@end example
2812@end table
2813
2814This keyword is used to control the shape of the cursor (only on terminals
2815and operating systems that support it). On typical DOS-like consoles, the
2816cursor constis of 8 rows, labelled top-down from zero to seven. You can
2817specify a cursor start @var{row} and a cursor end @var{row}. The
2818@value{MSGED} default values of 6 (start) and 7 (end) result in a standard
2819"underline" cursor.
2820
2821If you are using @value{MSGED} with a monochrome display adapter like MDA,
2822MGA or HGC, the cursor consists of 14 rows instead of 8. There, you will have
2823to use the @code{CurStart} and @code{CurEnd} keywords to produce a sensible
2824cursor shape. Values of 11 for start and 12 for end are suggested for mono
2825display adapters.
2826
2827@node Domain, EditKey, CurStart/CurEnd, Keywords
2828@subsection Domain
2829@findex Domain
2830@cindex domain gateway
2831@table @asis
2832@item Syntax:
2833@code{Domain @var{5d-address}}
2834@item Example:
2835@code{Domain 8:123/45@@rbbs}
2836@end table
2837
2838Messages sent with the destination domain equal to the domain of one of the
2839configured domain gates will always be sent to the domain gate with a @@DOMAIN
2840kludge inserted into the message.  To enable domain gating, you must
2841configure all domain gates you are using in your config file by using a
2842@code{Domain} keyword with the full 5D address of the domain gateway
2843(including the domain that this gate is gating for) as @var{5d-address}
2844parameter for each domain gate. You also must have the @code{Gate} config
2845verb set to either @samp{both} or @samp{domains}. @xref{Gate,, The
2846@code{GAte} Keyword}, for more information.
2847
2848With this done, @value{MSGED} will gate any messages being saved with a
2849destination domain listed as one of the gates.  Note that for this to occur,
2850the destination domain must be different than your own.
2851
2852Confused? Luckily enough, most users don't have to deal with domain gating
2853@dots{}
2854
2855@node EditKey, Editor, Domain, Keywords
2856@subsection EditKey
2857@findex EditKey
2858@table @asis
2859@item Syntax:
2860@code{EditKey @var{key} @var{function}}
2861@end table
2862
2863This keyword is used to redefine the keyboard layout in the internal message
2864editor. @xref{Redefining the Keyboard,,Redefining the Keyboard}, for more information.
2865
2866@node Editor, EnableSC, EditKey, Keywords
2867@subsection Editor
2868@findex Editor
2869@cindex external editor
2870@table @asis
2871@item Syntax:
2872@code{Editor @var{program-name}}
2873@item Example:
2874@code{Editor c:\boxer\b2.exe}
2875@end table
2876
2877This command allows you to specify an external editor to use when writing
2878messages.  The editor program (specified as executable filename with full
2879path as the @var{program-name} parameter) must accept a filename as the first
2880and only parameter.
2881
2882Before you decide to use an external editor, you might first want to look at
2883the built-in editor of @value{MSGED}. Using the @code{EditKey} keyword, the
2884built-in editor is highly configurable to emulate the keystroke combination
2885that you are used to use from your preferred external editor, and you can
2886safe a lot of unnecessary overhead and gain a lot of comfort when using the
2887internal editor as compared to the external one.
2888
2889@node EnableSC, Fido, Editor, Keywords
2890@subsection EnableSC
2891@findex EnableSC
2892@cindex special characters, on UNIX
2893@table @asis
2894@item Syntax:
2895@code{EnableSC [@var{string}]}
2896@item Example:
2897@iftex
2898@code{EnableSC} "a@"o@"u@"A@"O@"U
2899@end iftex
2900@ifinfo
2901@code{EnableSC} @var{type-national-characters-here}
2902@end ifinfo
2903
2904@end table
2905
2906(The example from above will only look correct in the TeX (@file{.DVI} or
2907@file{.PS} or @file{.PDF}) edition of this document.)
2908
2909This keyword is only relevant on UNIX. On UNIX, when using a VT100, xterm, or
2910similar terminal, @key{Alt} or @key{Meta} key combinations generate the same
2911key codes like national characters with ASCII values greater than 127. This
2912is a problem, because on the one hand, @value{MSGED} relies on combinations
2913of normal keys with Alt, but on the other hand, you probably want to use
2914national special characters in your mail.
2915
2916By default, the UNIX version of @value{MSGED} enables all @key{Alt} key
2917combinations and disables all national special characters.
2918
2919You can revert this behaviour by specifying @code{EnableSC} without
2920parameters. This will cause @value{MSGED} to interpret all high ASCII
2921keycodes as national special characters, instead of @key{Alt} key
2922combination. You'll then have to use the  @key{ESC} key to emulate all
2923@key{Alt} key cominations. This is probably what users of complete
2924high ASCII alphabets, like the cyrillic alphabet, will wnat to do.
2925
2926On the other hand, if your language only has few special characters, you can
2927also use the @code{EnableSC} keyword to selectively enable some national
2928special charcters. All special characters that occur in the @var{string}
2929given as argument will be interpreted as charcters rather then @key{Alt} key
2930combinations.
2931
2932The example from above enables all German national charcters. The only
2933relevant @key{Alt} key combination that you will loose by enabling those
2934characters is @key{Alt}-@key{V} (``show notes''). This function is also
2935available by pressing @key{Alt}-@key{K} (``show kludges''), so that
2936isn't a problem.
2937
2938Note that you will have to use an editor that allows the input of national
2939charcters in order to generate the necessary configuration file
2940entry. @code{vi} should be able to do this, as well as @code{joe -asis}. If
2941you are not able to type those characters in vi, you should not even try to
2942type them in @value{MSGED} @dots{}
2943
2944If you need information on how to set up a FreeBSD system to correctly
2945process special national characters, you can f`req @file{syscons.tgz} at
29462:2476/418.
2947
2948@node Fido, FreqArea, EnableSC, Keywords
2949@subsection Fido
2950
2951This keyword is described in the section about manual message area definition
2952(@pxref{Manual Area Definition,, Manual Area Definition}).
2953
2954@node FreqArea, FreqFlags, Fido, Keywords
2955@subsection FreqArea
2956@findex FreqArea
2957@cindex file requests, message area
2958@table @asis
2959@item Syntax:
2960@code{FreqArea @var{area-tag}}
2961@item Example:
2962@code{FreqArea NETMAIL}
2963@end table
2964
2965This keyword defines the message area where file request messages will be
2966written when the @key{Ctrl}-@key{F} function is invoked.  If not
2967defined, @samp{NETMAIL} is the default areatag.  Only one file request area
2968may be defined.
2969
2970@node FreqFlags, Function, FreqArea, Keywords
2971@subsection FreqFlags
2972@findex FreqFlags
2973@cindex flavour, of file requests
2974@cindex flags, for file requests
2975@cindex file requests, flags
2976@table @asis
2977@item Syntax:
2978@code{FreqFlags @var{flag} [@var{flag} @dots{}]}
2979@item Example:
2980@code{FreqFlags CRA K/S}
2981@end table
2982
2983This keyword defines the flags that are set for file request message
2984generated using the @key{Ctrl}-@key{F} feature. If not defined, @samp{DIR
2985K/S} is the default. The @samp{FRQ} flag will be appended in any case, so
2986will the local message area flags (usaually @samp{PVT LOC}). Any flags
2987defined in FSC 0053 are electible, yet the only ones that are useful for file
2988request messages are listed below.
2989
2990@example
2991HLD @r{place file request on hold for the caller}
2992CRA @r{crash delivery, dial out as soon cost setup permits it}
2993IMM @r{immediate deilivery, dial out immediately}
2994DIR @r{direct mail, you have do dial out manually}
2995K/S @r{kill the file request mail after it has been sent}
2996@end example
2997
2998You should at least specify one flag out of @samp{HLD CRA IMM DIR}, because
2999if none of these is present, the file request will be routed and consequently
3000be ignored by the destination system.
3001
3002If you want to specify multiple file request flags, separate them by white
3003spaces, as shown in the example above.
3004
3005@node Function, Gate, FreqFlags, Keywords
3006@subsection Function
3007@findex Function
3008@cindex function key macros
3009@cindex macros
3010@cindex keyboard macros
3011@table @asis
3012@item Syntax:
3013@code{Function @var{number} @var{keystrokes}}
3014@item Example:
3015@code{Function 11 \0x17D:\\text\\*.*^M}
3016@end table
3017
3018A function key macro is a predefined keystroke sequence that is assigned on a
3019function key. If you press this function key, @value{MSGED} will do exactly what it
3020would have done if you have typed in all the keystrokes of this macro
3021manually.
3022
3023The following function key numbers (to be used as the @var{number} parameter)
3024are available:
3025
3026@table @code
3027@item 0
3028Execute this macro at program startup.
3029@item 1 .. 10
3030@key{F1} .. @key{F10}
3031@item 11 .. 20
3032@key{Shift}-@key{F1} .. @key{Shift}-@key{F10}
3033@item 21 .. 30
3034@key{Ctrl}-@key{F1} .. @key{Ctrl}-@key{F10}
3035@item 31 .. 40
3036@key{Alt}-@key{F1} .. @key{Alt}-@key{F10}
3037@end table
3038
3039Note that function key numbers 11 through 40 might not work on Unix.
3040
3041When using key scancodes in a macro, you must escape them with a backslash
3042character (@samp{\}).  If you wish to have a literal backspace character
3043appear in the macro string (e.g. if it's needed as part of a path to a
3044file), use two backslash characters, like in the example above.
3045
3046The example from above will assign @key{Shift}-@key{F1} to display a
3047pick list of the files in the @file{D:\TEXT} directory.  After the list is
3048displayed, you may select a file to import into a message while in Msged's
3049internal editor.  Note that control characters in a macro such as ^M
3050(Enter) must be written in UPPER case.
3051
3052@node Gate, Group, Function, Keywords
3053@subsection Gate
3054@findex Gate
3055@cindex zone gating
3056@table @asis
3057@item Syntax:
3058@code{Gate @var{what}}
3059@item Examples:
3060@example
3061Gate Zones
3062Gate Domains
3063Gate Both
3064Gate Ask
3065@end example
3066@end table
3067
3068The @var{what} parameter to the @code{Gate} keyword specifies if
3069@value{MSGED} should do zone gating (@code{Gate Zones}), domain gating
3070(@code{Gate Domains}), or both (@code{Gate Both}). If you specify @code{Ask}
3071as parameter (this is also the default), you will be asked if you want to use
3072zone gating for each inter-zone mail that you write.
3073
3074This has nothing to do with internet gateways!
3075
3076Domain gating is explained in detail in the section about the @code{Domain}
3077keyword (@pxref{Domain,,The @code{Domain} Keyword}).
3078
3079Zone gating works like this: If you write a mail to a node in a zone
3080different from your own, and zone gating is enabled, the mail will not be
3081addressed to the receiver in the other zone, but it will be addressed to that
3082zone's zone gate (which also has an address inside your own zone). The
3083address of the true receiver will be encoded in an @@INTL kludge
3084line.
3085
3086If you don't have a direct inter-zone link set up in your tosser, you may
3087always enable zone-gating on with the @code{Zone} parameter. All mail that
3088crosses zone boundaries will then be sent via the zone gate, which is by far
3089the most reliable mail to send inter-zone mail. If, on the other hand, you do
3090have a direct inter-zone netmail link, you need the @code{Ask} parameter,
3091because then you must decide for each netmail individually if it shall be
3092sent directly via this link, or (probably because it is for a zone not
3093covered by this link, or because the link partner has not agreed to forward
3094mail not destined for himself) must be sent via the zone gate.
3095
3096Turning zonegating off with the @code{None} parameter is not at all
3097recommended. If you send inter-zone mail wihtout zone-gating, there only need
3098be one single tosser on the routing path which does not recognise @code{INTL}
3099kludges, and the mail will probably disappear. So, don't turn off zonegating
3100unless you have direct links for the destination zones you are writing mail to.
3101
3102@node Group, GroupSettings, Gate, Keywords
3103@subsection Group
3104@findex Group
3105@table @asis
3106@item Syntax:
3107@code{Group "@var{groupname}" [@var{pattern}]}
3108@item Example:
3109@code{Group "OS/2 Echos" *OS2*}
3110@end table
3111
3112This command is used to set up area groups and add areas to those
3113groups. @xref{Manual Groups,,Manually Defining and Assigning Groups}, for a
3114full documentation on how to use this keyword. @xref{Grouping,,Configuring and
3115Using Message Area Groups}, for an overview on the group concept of
3116@value{MSGED}.
3117
3118@node GroupSettings, HelpFile, Group, Keywords
3119@subsection GroupSettings
3120@findex GroupSettings
3121@table @asis
3122@item Syntax:
3123@code{GroupSettings "@var{groupname}" @var{name-index} @var{template-index}}
3124@item Example:
3125@code{GroupSettings "OS/2 Echos" 0 1}
3126@end table
3127
3128This command allows you to select different user names and/or template files
3129based on the group a message area belongs to.  For example, you might wish to
3130use a different signoff in OS/2-related areas (probably stating your TeamOS/2
3131number) than in other areas. Or, if you are moderator in a certain area, you
3132might want to use the user name "Moderator" instead of the user name that you
3133are using in normal areas.
3134
3135The @var{groupname} parameter to the @code{GroupSettings} command specifies
3136the name of the group. @xref{Group,, The @code{Group} Keyword}, for
3137information on how to define groups and add areas to those groups.
3138
3139The @code{name-index} parameter then specifies the index number of the user
3140name that should be used for all areas in this group. User names are counted
3141from zero upwards, so if you have two or more @code{Name} keywords in your
3142config file, the name specified with the first @code{Name} keyword will have
3143an index number of 0, the second will have 1, and so one. @xref{Name,,The
3144@code{Name} Keyword}, for more information.
3145
3146The @code{template-index} number defines which message template file should
3147be used for areas belonging to this group. The first message template file
3148that you have specified with the @code{Template} keyword has number 0, the
3149second has number 1, and so on. Note that if you want to specify multiple
3150template files, you have to repeat the @code{Template} keyword for each
3151file. The @code{Template} keyword itself can only take one argument.
3152@xref{Template,,The @code{Template} Keyword}, for more information.
3153
3154@node HelpFile, Include, GroupSettings, Keywords
3155@subsection HelpFile
3156@findex HelpFile
3157@table @asis
3158@item Syntax:
3159@code{HelpFile @var{file-name}}
3160@item Example:
3161@code{HelpFile e:\fido\msged\msghelp.dat}
3162@end table
3163
3164Specify the complete path and file name of the compiled @value{MSGED} help
3165file here. It is usally named @file{msghelp.dat}, or @file{~/.msged.help} on
3166Unix.
3167
3168@node Include, Jam, HelpFile, Keywords
3169@subsection Include
3170@findex Include
3171@table @asis
3172@item Syntax:
3173@code{Include @var{file-name}}
3174@item Example:
3175@code{Include scheme.001}
3176@end table
3177
3178The file specified with the @var{file-name} parameter will be read in and
3179parsed as a normal config file. This is often used for including color scheme
3180configuration files.
3181
3182@node Jam, Lastread, Include, Keywords
3183@subsection Jam
3184
3185This keyword is described in the section about manual message area definition
3186(@pxref{Manual Area Definition,, Manual Area Definition}).
3187
3188@node Lastread, MaxX and MaxY, Jam, Keywords
3189@subsection Lastread
3190@findex Lastread
3191@table @asis
3192@item Syntax:
3193@code{Lastread @var{lastread-file}}
3194@item Example:
3195@code{Lastread lastread}
3196@end table
3197
3198The @var{lastread-file} parameter of this keyword specifies the name of the
3199default ``lastread file'' that is used to store lastread pointers for Fido
3200*.MSG areas. This keyword gives the default filename for those username
3201entries without individual lastread files configured via the @code{Name}
3202keyword. @xref{Name,,The @code{Name} Keyword}, for more information.
3203
3204If you do not specify this keyword, a default value of @samp{lastread} is
3205assumed, which is a very resaonble default. Hence, you normally do not need
3206this keyword.
3207
3208@node MaxX and MaxY, MountDir, Lastread, Keywords
3209@subsection MaxX, MaxY
3210@findex MaxX
3211@findex MaxY
3212@cindex screen size
3213@table @asis
3214@item Syntax:
3215@example
3216MaxX @var{columns}
3217MaxY @var{rows}
3218@end example
3219@item Example:
3220@example
3221MaxX 80
3222MaxY 25
3223@end example
3224@end table
3225
3226The @code{MaxX} and @code{MaxY} keywords are used to define the screen or
3227text window size @value{MSGED} is running in. Normally this will be
3228autodetected and @value{MSGED} will automatically use the full window
3229size. For example, on OS/2, you could execute @samp{MODE CO100,40} and then
3230start @value{MSGED}, and it will automatically use 100 columns and 40 rows.
3231
3232In some cases, however, the autodetection fails, or you might not want
3233@value{MSGED} to use the full screen size. In this case, you have to define
3234the screen or window size manually with the @code{MaxX} and @code{MaxY}
3235parameters.
3236
3237@node MountDir, Name, MaxX and MaxY, Keywords
3238@subsection MountDir
3239@findex MountDir
3240@table @asis
3241@item Syntax:
3242@code{MountDir @var{unix-path} @var{dos-path}}
3243@item Example:
3244@code{MountDir /mnt/c c:\}
3245@end table
3246
3247This keyword is used to tell the Unix version of @value{MSGED} how it can
3248translate DOSish pathnames found in @file{squish.cfg}, @file{fastecho.cfg} or
3249even @file{msged.cfg} files that are mounted via NFS, rumba or smbfs from a
3250DOS, OS/2 or Windows machine.
3251
3252Suppose you are having a message base that is stored in @samp{c:\msgbase} on
3253your OS/2 or Windows machine. Also suppose that your complete C: drive on the
3254OS/2 or Windows machine is mounted as /mnt/c on the UNIX machine. (The
3255Windows machine and UNIX machine can be two distinct machines connected via
3256network, or a single machine with multi boot, where UNIX can mount the OS/2
3257or DOS partitions).
3258
3259You can then install @value{MSGED} on the Unix machine and let it read in the
3260same configuration files that are also used on the OS/2 or Windows
3261machine. Simply put @code{MountDir /mnt/c c:\} into your configuration
3262file. When @value{MSGED} is running on OS/2 or Windows, it will ignore the
3263keyword, but when it is running on Unix, it will know how to translate the
3264DOS-like filenames found in the corresponding configuration files into file
3265names that are correct for the UNIX system.
3266
3267Please note that you can have only one @code{MountDir} statement in the
3268configuration file.
3269
3270@node Name, NodePath, MountDir, Keywords
3271@subsection Name
3272@findex Name
3273@table @asis
3274@item Syntax:
3275@code{Name "@var{name}" [@var{lastread-file} [@var{user-offset}]]}
3276@item Examples:
3277@example
3278Name "Tobias Ernst"
3279Name "Joe Sysop"  lastread 0
3280Name "Jane Sysop" lastread 1
3281@end example
3282@end table
3283
3284You can specify your user name as the @var{name} parameter inside quotation
3285marks here. You can specify more than one user name by repeating the
3286@code{Name} keyword. Then, you can select which name to use during program
3287execution by pressing @key{CTRL}-@key{U}.
3288
3289Optionally, you can use the @var{lastread-file} parameter to specify the name
3290of the file that stores the lastread pointers in Fido *.MSG areas. This one
3291should be named @samp{lastread} for the sysop. If you configure other users
3292with the same config file, e.g. your wife, son etc., you should give them
3293separate lastread file names, so that each person can have individual last
3294read pointers.
3295
3296As a third parameter, you can specify a @var{user-offset} for each individual
3297name. This is used for all message base formats excpet *.MSG. Here, all users
3298share the same lastread pointer file (with a fixed name that cannot be
3299configured), but each user has a different offset into this file where he can
3300store his personal lastread pointer.
3301
3302Normally, the sysop has a user offset of zero (which is the default for the
3303@var{user-offset} parameter), and each BBS user has his user number as user
3304offset. However, if you have two or more sysops (in this context, this simply
3305means persons accessing your message base directly with @value{MSGED} instead
3306of using the BBS), you must manually assign unique user offset numbers for
3307each person.
3308
3309@node NodePath, Nodelist, Name, Keywords
3310@subsection NodePath
3311@findex NodePath
3312@cindex nodelist path
3313@table @asis
3314@item Syntax:
3315@code{NodePath @var{path-name}}
3316@item Example:
3317@code{NodePath e:\fido\nodelist}
3318@end table
3319
3320@value{MSGED} can use compiled version 7 nodelists to perform nodelist
3321lookups. All files pertaining to all version 7 nodelists, i.E. the compiled
3322index files and the raw nodelist files, must be stored in the V7 nodelist
3323directory. The @code{NodePath} keyword is used to tell @value{MSGED} that all
3324v7 nodelist files reside in the directory named
3325@var{path-name}. @xref{Nodelist,,The @code{Nodelist} Keyword}, for more
3326information.
3327
3328@node Nodelist, Origin, NodePath, Keywords
3329@subsection Nodelist
3330@findex Nodelist
3331@cindex V7 nodelist
3332@cindex version 7 nodelist
3333@cindex compiled v7 nodelist
3334@table @asis
3335@item Syntax:
3336@code{Nodelist @var{domain-name} @var{base-name} @var{sysop-file}}
3337@item Example:
3338@code{Nodelist fidonet nodex sysop.ndx}
3339@end table
3340
3341@value{MSGED} can use compiled version 7 nodelists to perform nodelist
3342lookups. With the @code{Nodelist} keyword, you specify the v7 nodelists that
3343@value{MSGED} should use. All three parameters are mandatory.
3344
3345The @var{domain-name} parameter specifies the name of the domain that is
3346used when picking which nodelist to use for address lookup if the zone number
3347is not unambiguous. The @var{base-name} parameter specifies the base name of
3348the index file minus the extension (e.g. @samp{nodex} for @samp{nodex.idx}),
3349and @var{sysop-file} is the name of the sysop lookup file. You must not
3350specify any path names for the latter two parameters - these files must
3351always reside in the directory pointed specified as argument to
3352@var{NodePath}. @xref{NodePath,,The @code{NodePath} Keyword}, for more
3353information.
3354
3355Normally, you will compile all raw nodelists that you have into a single
3356v7 index. In this case, simply use the example from above. You will only have
3357to bother about separate indices, domain names and the like if you have two
3358distinct othernets with identical zone numbers.
3359
3360@node Origin, Outfile, Nodelist, Keywords
3361@subsection Origin
3362@findex Origin
3363@cindex origin line
3364@cindex origin shuffling
3365@table @asis
3366@item Syntax:
3367@code{Origin @var{string}}
3368@item Example:
3369@code{Origin We love @value{MSGED}!}
3370@end table
3371
3372The origin line terminates an echomail and tells the sender`s FTN
3373address. Thus it has an important technical function. On the other hand, the
3374origin line also leaves space for about 55 bytes of free-form text. They can
3375be used to place your BBS system's name there, but you can also place other
3376meaningful or meaningless messages there. The text that you specify as the
3377@var{string} parameter may include whitespace characters. It will simply be
3378copied into the origin line, but be aware of the fact that @value{MSGED}
3379might have to truncate the text in order to prevent the origin line from
3380getting longer than 79 characters.
3381
3382You can use macro tokens in the origin line to provide some sort of dynamic
3383information. The macros will be expanded to their value when the message is
3384saved. The following macros can be used:
3385
3386@table @code
3387@item @@N
3388full name of message receiver
3389@item @@F
3390first name of message receiver
3391@item @@L
3392last name of message receiver
3393@item @@Y
3394full name of message author
3395@item @@D
3396complete message date (as for example: @samp{24 Dec 97})
3397@item @@DD
3398message date, day number (as for example: @samp{24})
3399@item @@DW
3400message date, week day (as for example: @samp{Mon})
3401@item @@DM
3402message date, month (as for example: @samp{Dec})
3403@item @@DY
3404message date, 2 digit year (as for example: @samp{97})
3405@item @@D4
3406message date, 4 digit year (as for example: @samp{1997})
3407@item @@DC
3408message date, century (as for example: @samp{20})
3409@item @@T
3410complete message time (as for example: @samp{12:30:24})
3411@item @@S
3412message subject
3413@item @@A
3414area tag
3415@item @@I
3416message size
3417@item @@Q
3418quote ratio
3419@item @@@@
3420a single @@ character
3421@end table
3422
3423In @value{MSGED}, you can also specify more than one @code{Origin} keyword in
3424the configuration file. @value{MSGED} will then automatically select a random
3425line out of those that you have specified each time that it has to generate
3426an origin line. This feature is called @dfn{origin shuffling}.
3427
3428@node Outfile, OutputCharset, Origin, Keywords
3429@subsection Outfile
3430@findex Outfile
3431@cindex exporting mails as text
3432@cindex printing
3433@table @asis
3434@item Syntax:
3435@code{Outfile @var{file-name}}
3436@item Example:
3437@code{Outfile export.txt,t}
3438@end table
3439
3440This keyword is used to configure the default @var{file-name} that should be
3441used as a default selection for exporting mails as text by pressing
3442@key{Alt}-@key{W}.
3443
3444@node OutputCharset, Printer, Outfile, Keywords
3445@subsection OutputCharset
3446@findex OutputCharset
3447@cindex character set, for writing messages
3448@table @asis
3449@item Syntax:
3450@code{OutputCharset @var{charset}}
3451@item Example:
3452@code{OutputCharset IBMPC}
3453@end table
3454
3455This specifies which character set should be used for writing messages with
3456special characters (like umlauts, accents, cyrillic letters, IBM
3457graphics). The mail will be converted into the given charset, and the proper
3458charset kludge will be appended. This does only apply to areas which have the
3459@samp{8} flag set, because in all other areas, the messages will always be
3460converted into a 7-bit ASCII representation.
3461
3462The charset that you specify as @var{charset} argument must be a level 2
3463charset, and a matching translation table must be contained in the
3464@file{writmaps.dat} file. If there isn't such a table, you will only see this
3465from the fact that the written message will contain 8-bit characters, but no
3466charset kludge(!). So be careful not to misspell the option.
3467
3468@xref{Special Characters,,Using Special Characters like Umlauts or Cyrillics
3469- The Charset Kludge}, for more information on the concept of
3470charset kludges. You can list all charset kludges that are listed in this
3471section as arguments to the @code{OutputCharset} keyword, but usually
3472@code{IBMPC} is the right option to choose, according with a proper
3473@code{CharsetAlias} definition (@pxref{CharsetAlias,,The @code{ChrasetAlias}
3474Keyword}). Msged TE will then also emit a proper @code{CODEPAGE} kludge. A
3475Russian user will probably want to use @code{CP866}. Once the @code{CPxxx}
3476charset kludges have found more widesprad use in Europe, @code{OutputCharset
3477CP850} should replace @code{OutputCharset IBMPC} also in Western European
3478countries.
3479
3480The character set that you use for output does not need to match the charset
3481that your computer is using internally; @value{MSGED} will do all necessary
3482conversion.
3483
3484@node Printer, PrivateNet, OutputCharset, Keywords
3485@subsection Printer
3486@findex Printer
3487@cindex Printer, configuring
3488@cindex Printing
3489@table @asis
3490@item Syntax:
3491@code{Printer @var{printer}}
3492@item Example:
3493@example
3494; On UNIX:
3495Printer -Phplj4
3496; On OS/2, DOS, Windows:
3497Printer LPT3:
3498@end example
3499@end table
3500
3501This keyword is used to configure the printer that @value{MSGED} will use
3502when printing a message (@key{Alt}-@key{W}). The usage of this keyword
3503depends on your platform:
3504
3505On OS/2, DOS and Windows, it specifies the special device filename for
3506printing. The default value is @code{PRN}. Other values that make sense are
3507@code{LPT1:}, @code{LPT2:} and so on.
3508
3509On UNIX, @value{MSGED} prints by piping the message text into the @code{lpr}
3510command, and the @code{Printer} keyword is used to configure additional
3511options to the @code{lpr} command. By default, no additional options are
3512used. If, for example, you do not want to use the default queue, but the
3513queue named @samp{hpjl4}, you would use @code{Printer -Phplj4} in your
3514configuration file.
3515
3516
3517@node PrivateNet, Quick, Printer, Keywords
3518@subsection PrivateNet
3519@findex PrivateNet
3520@cindex privatenets
3521@cindex pointnets
3522@cindex fakenets
3523@table @asis
3524@item Syntax:
3525@code{PrivateNet @var{fakenet-number}}
3526@item Example:
3527@code{PrivateNet 12345}
3528@end table
3529Modern mailers, message reader/editors (including @value{MSGED}), and mail
3530processing programs are fully 4D address aware and do not require the
3531@code{PrivateNet} keyword.  However, if you are operating a point system
3532whose boss node uses a "fakenet" to service points, this keyword should be
3533used.
3534
3535The @var{fakenet-number} parameter specifies the private net number number to
3536use for non-4D points. The fakenet point scheme was designed to work with
3537systems which were unable to support true points, such as BinkleyTerm 2.40
3538and lower.  The actual "fakenet" number and address must be assigned to you
3539by your boss node.
3540
3541@node Quick, QuickBBS, PrivateNet, Keywords
3542@subsection Quick
3543
3544This keyword is described in the section about manual message area definition
3545(@pxref{Manual Area Definition,, Manual Area Definition}).
3546
3547@node QuickBBS, Quote, Quick, Keywords
3548@subsection QuickBBS
3549@findex QuickBBS
3550@cindex hudson message base path
3551@cindex HMB file path
3552@table @asis
3553@item Syntax:
3554@code{QuickBBS @var{path-name}}
3555@item Example:
3556@code{QuickBBS e:\fido\hmb}
3557@end table
3558
3559In order to use a hudson message base (also known as Quick BBS message base),
3560you have to specify the path where the HMB files are stored using the
3561@var{path-name} parameter of the @code{QuickBBS} keyword. You must specify
3562the @code{QuickBBS} keyword in the configuration file before any @code{Quick}
3563or @code{AreaFile} keyword.
3564
3565@node Quote, QuoteRight, QuickBBS, Keywords
3566@subsection Quote
3567@findex Quote
3568@cindex quote string
3569@table @asis
3570@item Syntax:
3571@code{Quote @var{quote-string}}
3572@item Example:
3573@code{Quote _&>_}
3574@end table
3575
3576When quoting a mail, every line of quoted text will be prefixed with
3577@var{quote-string}. The following tokens inside the quote string have special
3578meanings:
3579
3580@table @code
3581@item &
3582will be replaced with all initials of the writer of the quoted message
3583@item _
3584will be replaced with a whitespace
3585@item ^
3586will be replaced with the first initial of the writer of the quoted message
3587@item *
3588will be replaced with the second initial of the writer of the quoted message
3589@end table
3590
3591Following common fidonet practice, you should use @samp{_&>_} as quote string.
3592
3593@node QuoteRight, ReadKey, Quote, Keywords
3594@subsection QuoteRight
3595@findex QuoteRight
3596@cindex right margin, for quoted text
3597@table @asis
3598@item Syntax:
3599@code{QuoteRight @var{column}}
3600@item Example:
3601@code{Quoteright 75}
3602@end table
3603
3604The @var{column} argument specifies the right margin to use when quoting
3605text. Because quoted text - in contrast to normal text - is stored with a
3606carriage return after each line, you should not specify a value greater than
360775 in order to assure that the text can be displayed on standard 80 columns
3608displays without problems.
3609
3610@node ReadKey, Readmap, QuoteRight, Keywords
3611@subsection ReadKey
3612@findex ReadKey
3613@table @asis
3614@item Syntax:
3615@code{ReadKey @var{key} @var{function}}
3616@end table
3617
3618This keyword is used to redefine the keyboard layout in message reading
3619mode.  @xref{Redefining the Keyboard,,Redefining the Keyboard}, for more information.
3620
3621@node Readmap, Right, ReadKey, Keywords
3622@subsection Readmap and Writemap
3623@findex Readmap
3624@findex Writemap
3625@table @asis
3626@item Syntax:
3627@example
3628Readmap @var{filename}
3629Writemap @var{filename}
3630@end example
3631@item Example:
3632@example
3633Readmap /usr/local/share/msged/readmaps.is1
3634Readmap /usr/local/share/msged/writmaps.is1
3635@end example
3636or
3637@example
3638Readmap  c:\msged\readmaps.850
3639Writemap c:\msged\writmaps.850
3640@end example
3641@end table
3642
3643These keywords are used to tell @value{MSGED} where to find the character set
3644translation map files.
3645@xref{Special Characters,,Using Special Characters like Umlauts or Cyrillics
3646- The Charset Kludge}, for a detailed explanation.
3647
3648@node Right, RobotName, Readmap, Keywords
3649@subsection Right
3650@findex Right
3651@cindex right margin, for normal text
3652@table @asis
3653@item Syntax:
3654@code{Right @var{column}}
3655@item Example:
3656@code{Right 79}
3657@end table
3658
3659The @var{column} argument specifies the right margin to use when writing
3660normal text. Normally, there is no reason to use this parameter, as
3661@value{MSGED} will always simply use the width of the window or console it is
3662running in. Please note that because of the way text is stored in Fidonet
3663messages (carriage returns are only placed at the end of a paragraph), it is
3664no problem to use right margins higher than 80. Even then, users with only 80
3665columns will still be able to read your message nicely formatted.
3666
3667@node RobotName, Scan, Right, Keywords
3668@subsection RobotName
3669@findex RobotName
3670@table @asis
3671@item Syntax:
3672@code{RobotName @var{name}}
3673@item Example:
3674@code{RobotName Areafix}
3675@end table
3676
3677Using the @var{name} parameter of the @code{RobotName} keyword, you can
3678specify names of robot machines like Areafix, Allfix, VoteMgr and so on. Each
3679@code{RobotName} keyword only accepts a single @var{name} parameter, but you
3680may repat the @code{RobotName} keyword as often as necessary.
3681
3682The reason for defining the names of common fidonet robots is the following:
3683When writing a mail that is addressed to a user name that matches one of the
3684defined robot names, @value{MSGED} will not insert the usual message
3685template. (VoteMgr will be confused if the first line in your Message is
3686"Hello VoteMgr" instead of the expected meta command @dots{}).
3687
3688@node Scan, SoftCrXlat, RobotName, Keywords
3689@subsection Scan
3690@findex Scan
3691@table @asis
3692@item Syntax:
3693@code{Scan}
3694@end table
3695
3696If this keyword is specified, @value{MSGED} will automatically scan all
3697message areas on startup.
3698
3699@node SoftCrXlat, SortAreas, Scan, Keywords
3700@subsection SoftCrXlat
3701@findex SoftCrXlat
3702@table @asis
3703@item Syntax:
3704@code{SoftCrXlat @var{ascii-code}}
3705@item Example:
3706@code{SoftCrXlat 72}
3707@end table
3708
3709Fidonet, historically, has a problem with the character with ASCII code 142
3710(0x8D). The FTS 0001 document says the following about this code:
3711
3712@quotation
3713So   called  'soft'  carriage  returns,  8DH,  may  mark  a   previous
3714processor's  automatic line wrap, and should be ignored.
3715@end quotation
3716
3717Despite of the fact that I do not know any single mail editor which adds
3718stray 0x8D characters into a mail, without the SoftCrXlat keyword,
3719@value{MSGED} behaves exactly like this: It ignores any 0x8D that it finds in
3720a message, i.E. it simply does not display it.
3721
3722This may be a problem for you because some languages need to use that
3723character. For example, in codepage 866, this code represents the cyrillic
3724big en, or in codepage 437, it is an i with accent grave.
3725
3726Specifying the SoftCrXlat keyword changes the behaviour of @value{MSGED} in
3727two ways. First, as soon as this keyword is present and has a non-zero
3728numerical argument, Msged will no longer ignore any 0x8D character in the
3729input, but display it as a normal letter. So if other people use those
3730characters in their mails, you will be able to see them.
3731
3732Second, if you yourself type a character which, in the transport character
3733set that you have chosen (@pxref{OutputCharset,,The OutputCharset Keyword}),
3734would result in a character with hex code 0x8D, it will be replaced with the
3735character that has the ASCII code which is specified as argument when the
3736message is being saved. In the example above, any 0x8D would be replaced with
3737a character with code 72, which is the latin big H. This would be the ideal
3738setting for a user in Russia, who has to use codepage 866 as transport
3739character set, because the latin big H looks exactly like the cyrillic big
3740en.
3741
3742So a Russian user who specifies "SoftCrXLat 72" will be able to see any big
3743en character that other users write, and any big en character that he writes
3744will be replaced with it's low-ASCII-look alike, thus avoiding problems at
3745other message readers.
3746
3747Now suppose that you don't want to translate the 0x8D character
3748to any other value. If your language uses the i with accent grave, for
3749example, there is no other equivalent of this character, so you could only
3750change it to an i without accent grave, which you might not like. In this
3751case, you can also instruct @value{MSGED} to keep the 0x8D character as is,
3752by setting @code{SoftCrXlat 141} (141 is the decimal representation of
37530x8D). With @code{SoftCrXlat 141}, the 0x8d character becomes an ordinary
3754character for @value{MSGED}, i.E. it does not behave different to any other
3755character any more.
3756
3757However, be aware of the fact that this might cause problems on other systems
3758that behave according to FTS 0001 and ignore any 0x8D characters. Another
3759option specifically for the language that needs the i with accent grave would
3760of course be not to use codepage 437 or 850 as transport character set, but
3761to use Latin-1 (ISO 8859-1). In this charset, all printable characters are at
3762non-critical positions.
3763
3764@node SortAreas, Squish, SoftCrXlat, Keywords
3765@subsection SortAreas
3766@findex SortAreas
3767@table @asis
3768@item Syntax:
3769@code{SortAreas @var{criteria}}
3770@item Example:
3771@code{SortAreas GND}
3772@end table
3773
3774Normally, @value{MSGED} displays all message areas in the order in that they
3775have been defined in the configuration file and/or in the area
3776files.
3777
3778With the @code{SortAreas} keyword, you can instruct @value{MSGED} to sort the
3779areas by certain criteria. The @var{criteria} parameter is a string that
3780consists of letters each specifying a sort criterium. The leftmost letter is
3781the most significant. The following letters can be used to define sorting
3782criteria:
3783
3784@table @code
3785@item N
3786Sort netmail areas on top, then local areas, then echomail areas.
3787@item T
3788Sort by area tag.
3789@item D
3790Sort by area description.
3791@item G
3792Sort by group.
3793@end table
3794
3795The meanings of @samp{D} and @samp{T} may vary depending on which area file
3796you imported the area from.  T is the true area tag, while D is what you
3797actually see on screen.  You will usually wish to use D, because ordering by
3798what you see seems to be more logical than ordering by what you don't see.
3799
3800The @samp{G} criterium works on @value{MSGED} area groups. An area can belong
3801to a group either because you used the @code{Group} statement to add it to a
3802group, or because the group setting has been imported from a tosser
3803configuration file. When areas are sorted by group, those areas that do not
3804belong to any group will come first, followed by the members of the group
3805that has been defined first, then those of the group that has been defined
3806after that one, and so on.
3807
3808Please note that the arealist feature of displaying Group separators can of
3809course only work if the @samp{G} ciretrium is the first criterium in your
3810@code{SortAreas} statement.
3811
3812@node Squish, SwapPath, SortAreas, Keywords
3813@subsection Squish
3814
3815This keyword is described in the section about manual message area definition
3816(@pxref{Manual Area Definition,, Manual Area Definition}).
3817
3818@node SwapPath, Switch, Squish, Keywords
3819@subsection SwapPath
3820@findex SwapPath
3821@table @asis
3822@item Syntax:
3823@code{SwapPath @var{file-name}}
3824@item Example:
3825@code{SwapPath c:\temp\msged.swp}
3826@end table
3827
3828Use the filename and path to your swapfile as value vor the @var{file-name}
3829parameter. This is only for DOS users but it should @emph{definitely} be
3830used.  If you don't use it, you must return to the Msged directory before
3831returning to the editor.
3832
3833@node Switch, Tabsize, SwapPath, Keywords
3834@subsection Switch
3835
3836This keyword is explained in the section about configuration switches (@pxref{Switches,,Switches}).
3837
3838@node Tabsize, Template, Switch, Keywords
3839@subsection Tabsize
3840@findex Tabsize
3841@table @asis
3842@item Syntax:
3843@code{Tabsize @var{size}}
3844@item Example:
3845@code{Tabsize 8}
3846@end table
3847
3848When you enter a message and press the @key{TAB} key, it will be expanded
3849into the number of white space characters that you have specified as
3850@var{size} argument to the @code{Tabsize} keyword. @key{TAB} characters in
3851other messages will not be expanded.
3852
3853@node Template, TossLog, Tabsize, Keywords
3854@subsection Template
3855@findex Template
3856@table @asis
3857@item Syntax:
3858@code{Template @var{file-name}}
3859@item Example:
3860@code{Template msged.tpl}
3861@end table
3862
3863The template file is used to define standard "hello strings", signoff
3864messages, and much more. See the provided sample template file for
3865information on how to do this. Specify the filename of your template file as
3866the  @var{file-name} parameter to the @code{Template} keyword.
3867
3868You can specify multiple template files by repeating the @code{Template}
3869keyword on a new line for each filename, but the @code{Template} keyword
3870itself can only take one argument. @xref{Group,,The @code{Group} Keyword},
3871for applications of this.
3872
3873@node TossLog, UserList, Template, Keywords
3874@subsection TossLog
3875@findex TossLog
3876@cindex echotoss log file
3877@cindex confmail out file
3878@table @asis
3879@item Syntax:
3880@code{TossLog @var{file-name}}
3881@item Example:
3882@code{TossLog echotoss.log}
3883@end table
3884
3885The log file named @var{file-name} will contain a list of area tags of all
3886areas into which you have entered messages. Such files are usually named
3887@var{echotoss.log} or @var{confmail.out} and are used by tossers to
3888accelerate the scanning process. In @value{MSGED}, the echotoss log file is
3889updated immediately as soon as you have entered a new message.
3890
3891@node UserList, UserOffset, TossLog, Keywords
3892@subsection UserList
3893@findex UserList
3894@cindex user list
3895@cindex fidouser lst file
3896@cindex lookup, by sysop name
3897@cindex nodelist lookup, by sysop name
3898@table @asis
3899@item Syntax:
3900@code{UserList @var{filename}}
3901@item Example:
3902@code{UserList e:\nodelist\fidouser.lst}
3903@end table
3904
3905The fido user list file is a text file that contains all fidonet sysop names
3906and the corresponding node numbers. It is used for looking up node numbers by
3907sysop name. A fido user list file is typically named @file{fidouser.lst}. You
3908can specify up to two fido user list files by repeating the @code{UserList}
3909keyword.
3910
3911Note that even when you are using a version 7 lookup, it is still preferable
3912to also have a @file{fidouser.lst} file and to use the @code{UserList}
3913keyword, because only the fidouser list file lookup routines of @value{MSGED}
3914can deal with multiple matching node numbers for one sysop name (they will
3915present you a list to select from), while the V7 lookup routines currently
3916cannot do this.
3917
3918The exact format of a fido user list file is as follows: Each line in this
3919file must have eactly the same length. Sysop names are left justified and
3920node numbers are right justified. Node Numbers must come after column 40. The
3921file must be sorted alphabetically in a way like the C @code{strcmp()}
3922function would do it.
3923
3924@node UserOffset, UUCP, UserList, Keywords
3925@subsection UserOffset
3926@findex UserOffset
3927@table @asis
3928@item Syntax:
3929@code{UserOffset @var{user-offset}}
3930@item Example:
3931@code{UserOffset 0}
3932@end table
3933
3934@xref{Name,,The @code{Name} Keyword}, for information about the meaning of
3935the @var{user-offset} parameter and lastread pointer principles. The
3936@code{UserOffset} keyword specifies a default user offset number valid for
3937those users that do not have their individual user offset number configured
3938in their @code{Name} statement.
3939
3940@node UUCP, UucpName, UserOffset, Keywords
3941@subsection UUCP
3942@findex UUCP
3943@cindex UUCP gateway address
3944@cindex e-mail gateway address
3945@cindex internet gateway address
3946@table @asis
3947@item Syntax:
3948@code{UUCP @var{address}}
3949@item Example:
3950@code{UUCP 242:4900/99.0}
3951@end table
3952
3953The @var{address} parameter designates the FTN address of the gateway that
3954your are using to send Internet/Usenet e-mail.
3955@xref{Internet Gateways,,Using @value{MSGED} for e-mail and newsgroups},
3956for more information.
3957
3958@node UucpName, UucpReplyTo, UUCP, Keywords
3959@subsection UucpName
3960@findex UucpName
3961@cindex UUCP gateway name
3962@cindex e-mail gateway name
3963@cindex internet gateway name
3964@table @asis
3965@item Syntax:
3966@code{UucpName @var{name}}
3967@item Example:
3968@code{UucpName UUCP}
3969@end table
3970
3971Some Internet gateway software requires that mail addressed to the gateway
3972must be addressed to a specific user name in order to be gated into the
3973Internet. This specific user name is usually @samp{UUCP}, and you can specify
3974it as the @var{name} parameter to the @code{UUCP} keyword.
3975
3976If your gateway is using a better gateway software, like Fidogate, it will
3977not have this restriction. Instead, such gateway software uses the name
3978fields in the FTN header to exchange real name information. In this case, you
3979should specify @samp{UucpName *}, which tells @value{MSGED} that the gateway
3980software allows any name to be put into the FTN header field.
3981
3982@xref{Internet Gateways,,Using @value{MSGED} for e-mail and newsgroups},
3983for more information.
3984
3985@node UucpReplyTo, Writemap, UucpName, Keywords
3986@subsection UucpName
3987@findex UucpReplyTo
3988@cindex Reply-To: header lines
3989@cindex redirecting e-mail replies
3990@table @asis
3991@item Syntax:
3992@code{UucpReplyTo @var{email@@address}}
3993@item Example:
3994@code{UucpReplyTo user@@some.domain.com (Joe Sysop)}
3995@end table
3996
3997The Internet e-mail standards specified so-called @samp{Reply-To:} header
3998lines. The presence of such a header line speicifes that any reply to this
3999message should not be sent to the sender of the mail, but to the alternate
4000e-mail account that is specified in the @samp{Reply-To:} header.
4001
4002A common scenario is the following: You have two e-mail accounts, one at home
4003and one at your university or at your office. You have set up the account at
4004your university to send copies of all incoming messages to your account at
4005home. Then you want, of course, that all replies to any e-mail you write are
4006directed at your university account, because you can read any mail that
4007arrives at the university both at the university or at home, while an e-mail
4008that you receive at home won't be visible at the university. Therefore, if
4009you are writing an e-mail from your home account, you want to insert a
4010@samp{Reply-To:} header line that points at your university account.
4011
4012If you sepcify the @samp{UucpReplyTo} configuration keyword, Msged will
4013insert such header lines whenever a netmail is created that is addressed to
4014your UUCP gateway. The e-mail address that you specify as arugment to the
4015@samp{UucpReplyTo} keyword may also include realname configuration in
4016parentheses, like shown in the example above. The header line that is created
4017by the example above would look like
4018
4019@example
4020Reply-To: user@@some.domain.com (Joe Sysop)
4021@end example
4022
4023Please note that of course the whole thing can only work if your gateway
4024software can recognise @code{Reply-To:} headers in fido netmail. As always,
4025Fidogate can, while others probably can't.
4026
4027@node Writemap,  , UucpReplyTo, Keywords
4028@subsection Writemap
4029@table @asis
4030@item Syntax:
4031@code{Writemap @var{filename}}
4032@end table
4033
4034@xref{Readmap,,The Readmap and Writemap Keywords}, for more information.
4035
4036
4037@node Switches, Conditionals, Keywords, Configuration Reference
4038@section Switches
4039@findex Switch
4040@cindex switches
4041
4042Switches are used to configure the behaviour of @value{MSGED}. In contrast to
4043a full configuration keyword, which is used to pass detailed parameters to
4044@value{MSGED}, a switch toggles a simple state that can be turned on or
4045off. Switches are usually used to switch certain features on or off.
4046
4047@menu
4048* How to use Switches::         How to toggle switches on or off.
4049* List of Switches::            A complete list of available switches.
4050@end menu
4051
4052@node How to use Switches, List of Switches, Switches, Switches
4053@subsection How to turn switches on and off
4054
4055To turn a switch on or off, you can use the @code{Switch} keyword, which has
4056the following syntax:
4057
4058@example
4059Switch @var{switch-name} On
4060Switch @var{switch-name} Off
4061@end example
4062
4063The @var{switch-name} parameter must be the name of a valid switch (a
4064complete list of switches follows below). The first line from above turns the
4065selected switch on, the second turns it off. (You knew it before, did'nt you?
4066<g>).
4067
4068For example, in order to turn the @code{SEEN-BYs} switch on, you would add
4069the following line to your configuration file:
4070
4071@example
4072Switch SEEN-BYs On
4073@end example
4074
4075@node List of Switches,  , How to use Switches, Switches
4076@subsection List of Available Switches
4077
4078The following switches are available:
4079
4080@table @code
4081@item AdaptiveCase
4082@findex AdaptiveCase
4083@cindex case sensitivity
4084@cindex dos file systems, using from unix
4085The @code{AdaptiveCase} switch is only relevant if you are running the
4086Unix/Linux version of Msged. It should be turned on if you are accessing
4087DOSish file systems (via Samba, NFS or the FAT or HPFS file system drivers),
4088from Msged running on Unix, or if DOS programs have access to your Unix file
4089system. DOSish fidonet programs usually create a really messed up message base
4090with mixed case spelling (i.E. it might contain both @code{.MSG},
4091@code{.msg} and @code{.Msg} file name extensions in a single netmail
4092directory). If the @code{AdaptiveCase} switch is turned on, each time that
4093Msged tries to open or create a file, it will first do a search over the
4094directory to determine the correct spelling of a file. This enables Msged
4095to cope with such mixed spelling as it is often found in DOSish message
4096base directories. - On the other hand, if only Unix programs have access to
4097your message base and the message base is stored on a Unix file system, you can turn this
4098switch off. This will give you a little performance improvement and save you
4099about 200 kilobytes of memory (which is otherwise used for directory
4100caching).  Default: Off.
4101
4102@item ArealistExactMatch
4103@findex ArealistExactMatch
4104When the area list is displayed, you can search a message area by entering the
4105first few characters of this name. This is the default. If you turn off the
4106@code{ArealistExactMatch} switch, @emph{any} substring is matched in an area
4107search; you don't have to type an area name from the beginning. Default: On.
4108
4109@item ChopQuote
4110@findex ChopQuote
4111When set to on, and you are quoting a message for reply, this switch will
4112cause all quoted lines at the end of the message to be removed (chopped) when
4113the message is saved.  This works only when using the internal editor. If you
4114are using an external editor, ChopQuote has no effect.  When set to off, all
4115quoted lines are saved, regardless of their location in the message.  Note
4116that you can also manually chop quotes by pressing
4117@key{Alt}-@key{L}. Default: Off.
4118
4119@item BS127
4120@findex BS127
4121@cindex backspace, on Linux console
4122Most UNIX consoles (xterm, syscons, and many others) return the ASCII code 8
4123(@key{Ctrl}+@key{H}) if you press the backspace key, and ASCII code 127 or an
4124extended escape sequence if you press the @key{Del} key. However, there are
4125some exceptions, notably the Linux system console. The Linux console returns
4126ASCII code 127 if you press the backspace key. The result is that the
4127backspace key behaves like @key{Del} in @value{MSGED}, i.E. it deletes the
4128character under the cursor instead of the character on the left. As this is
4129probably not what you want, you can change this behaviour by switching the
4130@code{BS127} switch on. You will probably want to enclose the @code{Switch
4131BS127 On} statement in a Conditional that tests if the @code{TERM}
4132environment variable is set to @code{Linux}. @xref{Conditionals,,Conditional
4133Statements in the Configuration File}, for more information. Default: Off:
4134
4135@item Carthy
4136@findex Carthy
4137This switch fine-tunes the behaviour of the @code{delete_line} function of
4138the internal message editor, which is usually bound to @key{Alt}-@key{D} and
4139@key{Ctrl}-@key{Y}, for the special case that you delete the very last line
4140of a message. If the switch is on (default behaviour), the last line will be
4141cleared, but the cursor will remain there. This way, if you are in the middle
4142of a message and press @key{Ctrl}-@key{Y} multiple times intending to zap the
4143rest of the message, you will never delete anything that is above the line
4144where you started to press @key{Ctrl}-@key{Y}. If you turn the switch off
4145(behaviour of older versions of Msged TE), the last line will be deleted
4146completely, and the cursor will be moved to the previous line. The switch
4147name @samp{Carthy} is an appreviation for the function description,
4148``@strong{C}ut @strong{A}nd @strong{R}emain @strong{TH}ere when pressing
4149Alt+@strong{Y} on the very last line''. Or well @dots{} the true reason is
4150that there was a user named Matt Mc_Carthy who really got mad about the old
4151behaviour of the editor, so I implemented the switch and the new behaviour
4152for him. Default: On
4153
4154
4155@item Colors
4156@findex Colors
4157This switch is only relevant for the Unix versions of @value{MSGED}. If it is
4158disabled, @value{MSGED} will not send any ANSI color codes to the terminal,
4159but will restrict itself to the most basic monochrome text styles ``normal'',
4160``bright'' and ``inverted''. This allows you to use @value{MSGED} on
4161terminals like the standard xterm, hardware VT100 terminals, and others that
4162do not understand color codes. Note that you'd better not use the @code{Color}
4163configuration keyword, nor include any color scheme file, as long as this
4164switch is disabled. @xref{Colors in the Unix version}, for more
4165information. Default: Off for Unix, On for all other versions.
4166
4167@item Confirm
4168@findex Confirm
4169@cindex confirmations
4170By disabling this switch, you will put @value{MSGED} into the ``You asked for
4171it, you got it!''-mode, that is, you will disable any kind of confirmation
4172dialog boxes on critical actions like deleting messages, aborting message
4173entry, and the like. Default: On. (That is, by default, @value{MSGED}
4174@emph{will} display confirmation requests).
4175
4176@item DateArvd
4177@findex DateArvd
4178If this switch is set to on, the date/time when a message
4179arrived on your system will be displayed on the right side of the
4180header information block below the date written information. You might want
4181to turn this off if your tosser should not fill in this date field
4182correctly. Default: On.
4183
4184@item DirectList
4185@findex DirectList
4186If you turn this switch on, you will directly drop into the message listing
4187mode when entering a message area, instead of the individual message reading
4188mode. Default: Off.
4189
4190@item DMore
4191@findex DMore
4192When set to on, this will display the message number of the message currently
4193being read on the top line of the header after the area description in the
4194form: @samp{(currentmsg# of maxmsg#)}. Default: Off.
4195
4196@item DomainMsgid
4197@findex DomainMsgid
4198@cindex MSGID, generation
4199@cindex message IDs
4200@cindex soupgate compatibility
4201Controls if the address in a MSGID control line will be printed in 5D with the
4202domain identifier (On) or in 4D without.  When you are using an internet
4203gateway which runs the Soupgate software by Tom Torfs, you should turn this
4204switch to off in order to enable reply linking to self-written messages in
4205newsgroups (Soupgate does not properly handles MSGID's with domain identifier,
4206unfortunately). Default: On.
4207
4208@item DomainOrigin
4209@findex DomainOrigin
4210If turned on, @value{MSGED} will generate five dimensional origin lines
4211(i.E., it will append the domain string to the address in the origin
4212line). It is suggested that you turn this switch off, but is is turned on by
4213default. Default: On.
4214
4215@item EchoFlags
4216@findex EchoFlags
4217When this switch is set to on, @value{MSGED} will append a FLAGS control
4218kludge line to messages entered in echomail areas whenever there are message
4219attributes other than Loc, Snt and Rcv, and it will recognise FLAGS control
4220lines in echomail areas. (Note that Msged always writes FLAGS control lines
4221in netmail areas when necessary and always recognises these lines for netmail
4222messages). Setting this switch to on allows the transportation of all sorts
4223of message flags in echomail areas. These flags, however, do not make too
4224much sense in echomail areas (or why would you want to set a Pvt flag in an
4225echo area for example?). However, the default is On.
4226
4227@item EditCROnly
4228@findex EditCROnly
4229If turned on, the internal message editor will mark hard carriage returns
4230with an ampersand sign. Default: Off.
4231
4232@item EditTearLines
4233@item EditOriginLines
4234When these switches are turned off, the tearline and the origin line will be
4235appended to an echomail message after you have entered and saved it. When
4236they are turned on, tearline and/or origin line will be appended to the
4237message before you start to edit it, so that you have for example the chance
4238to modify the origin text or similar. Default: Both On.
4239
4240@item ExtFormat
4241@findex ExtFormat
4242Indicates if text created in an external editor should be reformatted by
4243@value{MSGED}. It is a good idea to leave this on when using an external
4244editor. Default: On.
4245
4246@item GroupSeparators
4247@findex GroupSeparators
4248When this switch is turned on, @value{MSGED} will draw horizontal bars
4249between different area groups in the area list. However, this will only work
4250if the first area sort criterion is @emph{sort by group}. Otherwise, this
4251switch will have no efect. @xref{SortAreas,,The @code{SortAreas} Keyword},
4252for information on how to make @value{MSGED} sort your area list by area
4253groups. @xref{Grouping,,Configuring and Using Message Area Groups}, for an
4254introduction on how to use groups with @value{MSGED}. Default: On.
4255
4256@item HardQuote
4257@findex HardQuote
4258When switched on, this option causes the column formatting to be preserved
4259when quoting, i.e. it doesn't reformat quotes. Default: On.
4260
4261@item ImportFN
4262@findex ImportFN
4263When using the built-in editor to  import a text file into a message, this
4264text file will be bracketet by some horizontal dashes and the name of the
4265file like this one: @samp{"------ test.txt begins -----"} before and
4266@samp{"----- test.txt ends -----"} after the file. You can disable these two
4267lines by turning the @code{ImportFN} switch off. Default: On.
4268
4269@item LowerCase
4270@findex LowerCase
4271@cindex lowercase filenames
4272@cindex case-sensitive file systems
4273If you turn the @code{LowerCase} switch on, @value{MSGED} will convert all
4274file names that it reads from the configuration file or from any areafile to
4275lower case before it attempts to read to, write from, or create any
4276file. This switch is not very helpful - if you think you need it, you should
4277probably use @code{AdaptiveCase} instead.
4278
4279@item MSGIDs
4280@findex MSGIDs
4281@cindex MSGID, generation
4282@cindex message IDs
4283MSGIDs are used to uniquely identify a message coming from your system.
4284Unfortunately no two message editors use the same MSGID-generating algorithm,
4285so you cannot guarantee that you conform to the MSGID specs unless you have
4286used a specific message editor (only) for a particular address in a 3-year
4287period.  Most people just ignore this potential problem and use them anyway.
4288Leaving MSGIDs ON will help mail tossers in duplicate message checking and/or
4289reply linking. Default: On.
4290
4291@item NetmailVia
4292@findex NetmailVia
4293@cindex via lines
4294If this switch is turned on, @value{MSGED} will append a Via control line to
4295each netmail entered. You should turn this switch on, if your tosser does not
4296append Via lines to netmail that originates from your system (like Squish
4297does), but you should switch it off if your tosser does append via lines to
4298netmail even if the mail originates from your own system (like Fastecho
4299does).
4300
4301@item OpusDate
4302@findex OpusDate
4303The old MsgEd documentation states differently, but judging from the source
4304code, turning this flag @emph{on} would @emph{stop} @value{MSGED} from
4305@emph{reading} the Opus date_written and date_arrived date fields of Fido
4306*.MSG messages. @value{MSGED} will, however, always fill in those fields (in
4307the worst case with the current timestamp). Probably you should leave this
4308flag as is. Default: Off.
4309
4310@item Origins
4311@findex Origins
4312This switch controls if echomail messages will be appended with an origin
4313line. You absolutely @emph{must} leave this switch turned on, because origin
4314lines are technically necessary for a smooth operation of the
4315network. Default: On.
4316
4317@item PseudoGraphics
4318@findex PseudoGraphics
4319This switch is currently only of interest for the Unix version. If turned on,
4320@value{MSGED} will query your termcap database to see if your terminal can
4321draw nice pseudgraphics characters for frames around windows and dialog
4322boxes, and if so, use them instead of the default "minus, plus, pipe" - style
4323frames. However, on a lot of Unix configurations the termcap database
4324contains false information about this capability, or the TERM variable is not
4325properly set. Turning on the switch may or may not work on your
4326system. Therfore, the default is: Off.
4327
4328@item QQuotes
4329@findex QQuotes
4330This switch controls how @value{MSGED} will modify the quote string when
4331quoting text that already is quoted. When turned on, @value{MSGED} will try
4332to add another @samp{>} character to the existing quote strings. If turned
4333off, @value{MSGED} will not modify existing quote strings and thus behave
4334much like Maximus 2.0 or TimEd do. Default: On.
4335
4336@item RawCC
4337@findex RawCC
4338@cindex carbon copies, saving the raw original message
4339This switch is only of relevance if the @code{SaveCC} switch is turned on.
4340Then, if @code{RawCC} is on, the raw cc:  msg is saved (along with the cc:
4341header that you typed in, so that if you re-edit the message, also all carbon
4342copies will be re-generated). Otherwise, the first formatted cc:  will NOT be
4343marked kill/sent and will therefore remain as a future reference, but the
4344original raw message will not be saved. Default: On.
4345
4346@item RealMsgN
4347@findex RealMsgN
4348If this switch is turned on, the message list screen (@key{Alt}-@key{L}) will
4349display the actual message number of each message instead of displaying the
4350messages in sequential order, starting with 1. Default: Off.
4351
4352@item ReceiveAllNames and ReceiveAllAddresses
4353@findex ReceiveAllNames
4354@findex ReceiveAllAddresses
4355These switches control under which circumstances the @code{Rvd} flag of a
4356netmail is turned on, indicating that the mail has been received (read) by
4357you. When these switches are turned on, the flag is set whenever the
4358destination address of the mail matches any of your AKAs, and whenever the
4359destination user name of the mail mathes any of the user names that you have
4360configured with the @code{Name} keyword.  Default: Both On.
4361
4362You should turn off @code{ReceiveAllNames} if you have configured multiple
4363user names that belong to different persons (i.E. you and your girl friend /
4364boy friend <g>). In this case, only the user name that currently is active
4365will count when determining if the message is addressed to you or not. You
4366can switch the active user name by pressing @key{Ctrl}-@key{U}.
4367
4368@item RightNextUnreadArea
4369@findex RightNextUnreadArea
4370When in message reading mode, and this switch is set to on, and there are no
4371more unread messages in the current message area, pressing the right arrow
4372key will go to the next area with unread messages. Default: Off.
4373
4374@item SaveCC
4375@findex SaveCC
4376@cindex carbon copies, saving the original message
4377When generating carbon copies, and if this switch is turned on, a duplicate
4378of the original message is saved with no kill/sent flag set for future
4379reference, and possible re-editing and/or resending (along with the normal
4380copied messages that are sent out and flagged kill/sent). Default: On.
4381
4382@item Seen-Bys
4383@findex Seen-Bys
4384This switch is a synonym for the @code{ShowSeenBys} switch. See below.
4385
4386@item Shadows
4387@findex Shadows
4388If this switch is enabled, @value{MSGED} will draw nice shadows round dialog
4389boxes and other popup windows. You might want to disable this switch if you
4390use the Unix version of @value{MSGED}, because on a VT100 compatible
4391terminal, drawing those borders can slow down the program
4392considerably. Default: On.
4393
4394@item ShowAddr
4395@findex ShowAddr
4396If this switch is enabled, the FTN address that you are currently using for
4397the current area will be displayed on the left-hand side of the line that
4398separates the message header from the message text. Default: On.
4399
4400@item ShowCR
4401@findex ShowCR
4402If turned on, @value{MSGED} will mark the location of hard carriage
4403returns with ASCII code 20, as known from common word processors. This might
4404not work on a VT100 terminal. Default: Off.
4405
4406@item ShowEOL
4407@findex ShowEOL
4408If turned on, @value{MSGED} will mark the location of each end-of-line
4409character with ASCII code 29. This will only work if the @code{ShowCR} switch
4410is also turned on. Default: Off.
4411
4412@item ShowNotes
4413@findex ShowNotes
4414@cindex kludge lines, displaying
4415@cindex notes, displaying
4416If turned on, @value{MSGED} will display kludge line information in message
4417reading mode. You can also toggle this switch during program execution by
4418pressing @key{Alt}-@key{V}. Unlike in older MsgEd versions, this switch
4419does not pertain to origin and/or tear lines. Default: Off.
4420
4421@item ShowOrigins
4422@findex ShowOrigins
4423This switch toggles the display of origin lines in message reading
4424mode. Default: On.
4425
4426@item ShowSystem
4427@findex ShowSystem
4428This enables the lookup and display of a system name in your compiled version
44297 nodelists. If set to on, the nodelisted system name will appear in the
4430header, after the sender's name and address, in netmail and echomail message
4431areas. If switched off, the lookup will not be performed. Default: On.
4432
4433@item ShowTearlines
4434@findex ShowTearlines
4435This switch toggles the display of tearlines in message reading
4436mode. Default: On.
4437
4438@item ShowSeenBys
4439@findex ShowSeenBys
4440@cindex SEEN-BY lines, showing
4441If this switch is turned on, @value{MSGED} will display SEEN-BY lines in
4442message reading mode. This is probably only useful for echomail routing
4443debugging purposes. Default: Off.
4444
4445@item ShowTime
4446@findex ShowTime
4447Shows the current time.  This isn't a real time clock; it simply shows what
4448the current date and time were when the screen was last refreshed with a new
4449message, or when other keyboard hits were detected.  Default: Off.
4450
4451@item SOTEOT
4452@findex SOTEOT
4453@cindex start of text / end of text
4454If this is set to on, @value{MSGED} will add SOT and EOT (Start Of Text/End
4455Of Text) kludge lines to bracket the text in the message body. Please note
4456that Paul Edwards' SOT/EOT specification does not permit domains in echomail
4457origin lines.  If both the @code{DomainOrigin} and @code{SOTEOT}
4458configuration switches are enabled, @value{MSGED} will exit and suggest to
4459disable one or the other. Default: Off.
4460
4461
4462@item SquishLock
4463@findex SquishLock
4464@cindex locking the message base, for performance reasons
4465@cindex message base locking, for performance reasons
4466If the @code{SquishLock} switch is turned on, @value{MSGED} will lock every
4467message area that is entered (and of course unlock it when it is left), thus
4468effectively denying access to this area to any other program. This will
4469result in a considerable speed increase when browsing message areas, but it
4470has the drawback that the tosser will not be able to toss to an message area
4471as long as it is open in @value{MSGED}. Also, some other problems have been
4472observed with this switch in network environments. So you'd best leave this
4473switch off unless you are running your Fido system on a non-networked, single
4474tasking DOS machine.
4475
4476Note that this switch has nothing to do with data integrity concerns. MsgEd
4477will of course lock the Squish Message Base when writing a message in order
4478to insure data integrity even if the SquishLock switch is turned off.
4479
4480The default value of the SquishLock switch is Off (in contrast to the
4481mainstream MsgEd 4.30, where it is turned on by default).
4482
4483@item StatBar
4484@findex StatBar
4485Shows a status bar along the bottom of the screen. Default: On.
4486
4487@item Tearlines
4488@findex Tearlines
4489@cindex tearlines, disabling
4490This switch controls if echomail messages will be appended with a tear
4491line (three consecutive dashes) or not. You should leave this switch
4492on. Default: On.
4493
4494@item TZUTC
4495@findex TZUTC
4496@cindex TZUTC kludge line
4497@cindex timezone information
4498Msged generates a TZUTC kludge line according to FSP-1001 by default. This
4499kludge line gives the recipients of your mail a hint as to in which timezone
4500you are living. This is important because message timestamps in fido
4501messages always show local time, so they are useless for the recipient
4502without this kludge line information. Msged automatically detects your
4503timezone. In case it is doing this wrong, please send a bug report and
4504disable generation of this kludge line by setting the @code{TZUTC} switch to
4505off. Default: On.
4506
4507@item UseLastr
4508@findex UseLastr
4509You should leave this switch turned on. It instructs @value{MSGED} to use the
4510lastread pointer for Fido *.MSG style areas. On the other hand, turning this
4511switch off probably does not disable @emph{all} lastread pointer handling
4512code in @value{MSGED} @dots{} Older @value{MSGED} versions had this switch
4513turned off by default and it was undocumented. Hence a lot of problems with
4514lastread pointers in those versions @dots{} Default: On.
4515
4516@item UseMouse
4517@findex USeMouse
4518Some features of @value{MSGED} can be controlled through the
4519use of a mouse.  This switch tells Msged whether or not you're using one.
4520Note that the Windows NT and the Unix versions of @value{MSGED} presently do
4521not support a mouse at all. - Default: On.
4522
4523@item UsePID
4524@findex UsePID
4525If this switch is turned on, @value{MSGED} will put its version information
4526in a @@PID kludge line, and leave the tearline blank. If turned off,
4527@value{MSGED} will not generate a @@PID kludge, but put its version
4528information in the tear line. Default: Off.
4529
4530@item UseTosserGroups
4531@findex UseTosserGroups
4532This switch controls if @value{MSGED} will read any avialable group
4533information from an @code{Areafile} or not. If turned on, and if the areafile
4534contains group information that can be read by @value{MSGED} (currently this
4535is the case for Fastecho and Fidoconfig type area files), then each group
4536defined in your areafile (tosser configuration) will become a @value{MSGED}
4537group, and all areas that according to the tosser configuration are member of
4538this group will also be members of this group in
4539@value{MSGED}. @xref{Grouping,,Configuring and Using Message Area
4540Groups}. Default: On.
4541
4542@item XXLTearline
4543@findex XXLTearline
4544If you set this, you can have a tearline of up to 79 characters (instead of
454535), and the Unix version of @value{MSGED} will print system information in
4546the tearline. But be aware that this violates FTSC rules, so using this is
4547discouraged. Default: Off.
4548
4549@end table
4550
4551@node Conditionals, Area Definitions, Switches, Configuration Reference
4552@section Conditional Statements in the Configuration File
4553@cindex conditionals
4554@cindex environment variables, testing
4555If you use @value{MSGED} with the same configuration file on different
4556operating systems, you will probably want to make some settings in the
4557configuration file dependent on the environment you are currently running
4558in. This is where @dfn{Conditionals} come into place. A Conditional can be
4559used to include a certain part of the configuration file only if a certain
4560version (OS/2, DOS, ...) of @value{MSGED} is running, or only if an environment
4561variable has a certain value.
4562
4563@menu
4564* Statements: cond-statements.  Formulating Conditional Statements.
4565* Conditions: cond-conditions.  Conditions that can be tested.
4566* cond-examples::
4567@end menu
4568
4569@node cond-statements, cond-conditions, Conditionals, Conditionals
4570@subsection Formulating Conditional Statements
4571The easiest form of a Conditional is as follows:
4572
4573@example
4574IF @var{condition}
4575  @var{configuration statements @dots{}}
4576ENDIF
4577@end example
4578
4579The @var{condition} parameter can simply be an operating system name like
4580@samp{OS/2} or @samp{Linux}. You will soon see other conditions that can be
4581formulated (@pxref{cond-conditions, Conditions that can be tested}). For the
4582moment, we will always use operating system names as conditions.
4583
4584For example, the following statement will only be evaluated on OS/2:
4585
4586@example
4587IF OS2
4588   Editor c:\boxer\b2.exe
4589ENDIF
4590@end example
4591
4592In addition, you can specify that an alternate block of statements should be
4593evaluated if the condition was not true:
4594
4595@example
4596IF OS2
4597   ;OS/2 version of the Boxer Editor
4598   Editor c:\boxer\b2.exe
4599ELSE
4600   ;DOS version of the Boxer Editor
4601   Editor c:\boxer\b.exe
4602ENDIF
4603@end example
4604
4605If you want to test for multiple configurations, the ELSEIF statement is
4606handy. Instead of writing a complicated statement like
4607
4608@example
4609IF OS2
4610  Editor c:\boxer\b2.exe
4611ELSE
4612  IF UNIX
4613    Editor /usr/bin/vi
4614  ELSE
4615    ;Must be DOS
4616    EDITOR c:\boxer\b.exe
4617  ENDIF
4618ENDIF
4619@end example
4620
4621you can simply write:
4622
4623@example
4624IF OS2
4625  Editor c:\boxer\b2.exe
4626ELSEIF UNIX
4627  Editor /usr/bin/vi
4628ELSE
4629  Editor c:\boxer\b.exe
4630ENDIF
4631@end example
4632
4633For compatibility with other Fidonet editors, the @code{ELIF} command can be
4634used instead of the @code{ELSEIF} command.
4635
4636As you might already have guessed from the examples, conditionals can be
4637nested down to any depth, that is, inside an @code{IF} - @code{ENDIF} -
4638block, you can start another @code{IF} block, and so on.
4639
4640
4641@node cond-conditions, cond-examples, cond-statements, Conditionals
4642@subsection Conditions that can be tested
4643We already saw that operating system names can be used as conditions for the
4644@code{IF} command. Below, you see the complete list of conditions that can be
4645used:
4646
4647@table @code
4648@item IF OS2
4649@itemx IF OS/2
4650These conditions are true if you are running the OS/2 version of @value{MSGED}
4651
4652@item IF DOS
4653These conditions are true if you are running any DOS version (16 bit or 32
4654bit) of @value{MSGED}.
4655
4656@item IF DOS16
4657This condition is true if you are running the standard 16 bit DOS version of
4658@value{MSGED}.
4659
4660@item IF 386
4661This condition is true if you are running the 32 bit DOS version of @value{MSGED}.
4662
4663@item IF W32
4664This condition is true if you are running the Windows 95/98/NT version of
4665@value{MSGED}.
4666
4667@item IF UNIX
4668This condition is true if you are running any Unix version (Linux, FreeBSD,
4669AIX, Rhapsody, ...) of @value{MSGED}.
4670
4671@item IF LINUX
4672This condition is true for any version of @value{MSGED} that announces itself
4673as @samp{MsgEd/LNX TE}.
4674
4675@item IF 0
4676This condition is always false. It is useful if you want to disable a large
4677part of the configuration file, but do neither want to erase it nor to place
4678semicolons in front of each line. Simply place @code{IF 0} and @code{ENDIF}
4679around such a part of the configuration file.
4680
4681@item IF 1
4682This condition is always true.
4683
4684@item IF @var{variable}=@var{value}
4685This condition is true if the specified environment @var{variable} has the
4686specified @var{value}. For example, on OS/2, @code{IF HOSTNAME=mycomputer}
4687will be true only if you have @code{set HOSTNAME=mycomputer} in your
4688@file{config.sys} file, or if you have given the @code{set
4689HOSTNAME=mycomputer} command on the command line before starting
4690@value{MSGED}.
4691
4692@end table
4693
4694@node cond-examples,  , cond-conditions, Conditionals
4695@subsection Usage example for Conditionals
4696Here are some more useful examples for Conditionals in the configuration
4697file:
4698
4699@table @asis
4700@item Specifying a swap file for the 16 bit version:
4701@example
4702IF DOS16
4703  Swappath c:\temp\msged.swp
4704ENDIF
4705@end example
4706
4707@item Selecting the proper Origin string:
4708@example
4709IF OS2
4710  Origin "Warp 4, Mister Sulu!"
4711ELSEIF W32
4712  Origin "My employer forces me to use Windows ..."
4713ELSEIF DOS
4714  Origin "DOSwidanja!"
4715ELSEIF UNIX
4716  IF LINUX
4717    Origin "Penguins ahead!"
4718  ELSE
4719    Origin "UNIX - a professional's choice"
4720  ENDIF
4721ENDIF
4722@end example
4723
4724@item Fine-tuning the terminal setup on Unix
4725@example
4726IF UNIX
4727
4728  ;By default, switch colors off (might cause problems with
4729  ;VT100 and xterm), as well as shadows (too slow)
4730
4731  Switch Shadows Off
4732  Switch Colors Off
4733
4734  IF TERM=linux
4735    ;The peculiarities of the Linux console ...
4736    switch bs127 on
4737    switch colors on
4738  ENDIF
4739
4740  IF TERM=vt220
4741    switch colors on
4742  ENDIF
4743
4744  IF TERM=ansi
4745    switch colors on
4746  ENDIF
4747
4748ENDIF
4749@end example
4750
4751@end table
4752
4753@node Area Definitions,  , Conditionals, Configuration Reference
4754@section Defining Message Areas
4755@cindex definining message areas
4756@cindex message area definition
4757@cindex area definition
4758
4759One of the most important tasks in configuring @value{MSGED} is to tell it
4760where it can find the message areas that you wish to read and to write
4761to. There are basically two ways to do this: You can either manually define
4762each area in the configuration file using the @code{Quick}, @code{Fido} and
4763@code{Squish} keyword, or you can tell @value{MSGED} to read in the
4764configuration file of your tosser. The latter method saves you much work, but
4765sometimes you will ned to use the manual method to do some fine-tuning.
4766
4767It is advisable to put all keywords that have to do with area configuration
4768at the end of your configuration file, because other keywords (like
4769@code{QuickBbsPath}, @code{MountDir}, et. al.) that change the behaviour of
4770the area definition keywords will only work if they are read in before the
4771area definition keywords.
4772
4773@menu
4774* Manual Area Definition::      Configuring areas one by one.
4775* Areafile Parsing::            Reading all areas from a tosser config file.
4776@end menu
4777
4778@node Manual Area Definition, Areafile Parsing, Area Definitions, Area Definitions
4779@subsection Manual Area Definition
4780@findex Squish
4781@findex Quick
4782@findex Fido
4783@findex Jam
4784
4785You can manually define a message area by putting a line of the following
4786format into your configuration file:
4787
4788@example
4789@var{format} @var{flags} "@var{description}" @var{path} @var{areatag} [@var{address}]
4790@end example
4791
4792Except for the @var{address} parameter, all parameters are mandatory. The
4793meaning of these parameters is as follows:
4794
4795@table @var
4796@item format
4797The @var{format} parameter tells the message base format this message area is
4798held in. It can be either @samp{Fido}, designating a message area in Fido
4799*.MSG file format, @samp{Quick}, desingating a message area held in a
4800QuickBBS or Hudson Message Base, @samp{Squish}, designating a message area
4801in the Squish format, or @samp{Jam}, designating a message area in the JAM
4802format (Jam will only be enable when @value{MSGED} was compiled with Smapi
48032.0 or higher).
4804
4805@item flags
4806The @var{flags} parameter is a sequence of characters where each character is
4807a flag that toggles a certain option. The following flags can be used:
4808
4809@enumerate
4810@item
4811Flags that specify the message area type. You have to use exactly one of
4812those:
4813
4814@format
4815@code{m} - netmail area,
4816@code{e} - echomail area,
4817@code{l} - local mail area.
4818@end format
4819
4820@item
4821Flags that toggle certain special features of @value{MSGED}. All of these
4822flags are optional. @xref{Advanced Concepts}, for more information on the
4823meaning of these flags.
4824
4825@format
4826@code{8} - allow 8 bit characters with the proper @code{@@CHRS} kludge,
4827@code{u} - enable internet gateway support for this area,
4828@code{n} - this flag is obsolete.
4829@end format
4830
4831@item
4832Default message attributes for messages written in this area. You should
4833specify @samp{p} for netmail areas. The @samp{loc} flag will always be set,
4834so you can't specify it here.
4835
4836@format
4837@code{p} - private,
4838@code{h} - hold,
4839@code{k} - kill/sent,
4840@code{d} - direct.
4841@end format
4842
4843@end enumerate
4844
4845@item description
4846The @var{description} parameter specifies the name under which the area will
4847appear in the area selection screen. It may contain white spaces if you place
4848it between quotation marks.
4849
4850@item path
4851The @var{path} parameter gives the location of the message area. For Fido *.MSG
4852areas, this is the path name of the corresponding directory. For QuickBBS
4853areas, it is the area number. For Squish and Jam areas, it is the base name of the
4854area files without extension.
4855
4856@item areatag
4857The @var{areatag} parameter gives the official area tag of this area. You
4858@emph{must} specify this parameter for echomail areas, and you @emph{must
4859not} specify this for netmail areas!
4860
4861@item address
4862Finally, the @var{address} parameter specifies the FTN address to use for
4863this area. You must use this for othernet areas where you must use an AKA
4864different to your main AKA.
4865
4866@end table
4867
4868Here are some examples:
4869
4870@example
4871Fido   mup "Fidonet Netmail" e:\fido\netmail   2:2476/418.0
4872Squish eu  "MsgEd Support"   e:\fido\sq\msged  MSGED_ECHO
4873Squish eu8 "OS/2 Debate"     e:\fido\sq\os2deb OS2.DEBATE.GER
4874Squish eu  "c't conference"  e:\fido\sq\ctger  CT.GER  21:492/2851.0
4875Quick  lp  "To Sysop Area"   1
4876@end example
4877
4878@node Areafile Parsing,  , Manual Area Definition, Area Definitions
4879@subsection Reading a Tosser Configuration File (Areafile)
4880@cindex tosser configuration, parsing
4881@cindex area file, of tosser
4882
4883@value{MSGED} can read your area configuration from a tosser configuration
4884file. Supported tossers currently include:
4885
4886@itemize @bullet
4887@item Fastecho 1.45 and above
4888@item GEcho 1.20 (but not older versions)
4889@item hpt / fidoconfig
4890@item Squish 1.11 and above
4891@item Generic AREAS.BBS file
4892@end itemize
4893
4894This saves you much work: You only have to declare an area once in the tosser
4895configuration file, and MsgEd will automatically always display all areas
4896that are configured in your tosser configuration file.
4897
4898The following three keywords are used to perform this goal:
4899
4900@menu
4901* Areadesc::                    How to display the area description
4902* AreafileFlags::               Enabling charset or uucp features for all areas
4903* Areafile::                    Which tosser config file shall be used
4904@end menu
4905
4906@node Areadesc, AreafileFlags, Areafile Parsing, Areafile Parsing
4907@subsubsection AreaDesc
4908@findex AreaDesc
4909@table @asis
4910@item Syntax:
4911@code{AreaDesc [@var{how}] @var{what} @dots{}}
4912@item Examples:
4913@example
4914AreaDesc tag
4915AreaDesc tag desc
4916AreaDesc upper tag asis desc
4917@end example
4918@end table
4919
4920The tosser configuration file normally stores two sorts if information about
4921a message area: its canonical area tag, like @code{MSGED_ECHO}, and a
4922description of the area topic, like @code{International Msged support
4923conference}. The @code{AreaDesc} keyword is used to tell @value{MSGED} how to
4924make up the arealist entry of each area from this information.
4925
4926The @var{what} parameter specifies what to include. @code{TAG} means to use
4927the areatag, and @code{DESC} means to use the description. You can specify
4928both parameters separated by a blank like in the example above, in which case
4929both information will be displayed, separated by a dash.
4930
4931The @var{how} parameter is a modifier for all following @var{what} parameters
4932and specifies how this information should be displayed. It can be
4933@code{ASIS}, which means to display it as in the config file, or it can be
4934@code{UPPER}, which means to display anything in upper case, or @code{LOWER},
4935i.E. display everything in lower case letters.
4936
4937The default value if no @code{AreaDesc} keyword is given is @code{asis tag desc}.
4938
4939@node AreafileFlags, Areafile, Areadesc, Areafile Parsing
4940@subsubsection AreafileFlags
4941@findex AreafileFlags
4942@table @asis
4943@item Syntax:
4944@code{AreafileFlags @var{flags}}
4945@item Example:
4946@code{AreafileFlags 8u}
4947@end table
4948
4949There is one big problem with reading echo definitions from tosser
4950configuration files: Those files do not contain all information that can be
4951specified in a manual area configuration. Certain features of @value{MSGED}
4952need a flag that has to be set for each area in order to enable that feature.
4953For example, in order to be able to write mails with umlauts, cyrillic
4954characters etc., you must set the 8 flag for each area, designating that
4955high ASCII characters are allowable therin. This is where you use the
4956@code{AreafileFlags} keyword.
4957
4958The @var{flags} parameter has the same syntax as the @var{flags} parameter of
4959the @code{Fido}, @code{Quick} and @code{Squish} keywords (@pxref{Manual Area
4960Definition,,Manual Area Definition}).
4961
4962You must specify the @code{AreaFileFlags} keyword @emph{before} the
4963@code{AreaFile} keyword which it should apply to. Then, all areas imported
4964from the area files will have the specified @var{flags}.
4965
4966If you want only a few, but not all areas form an areafile to have some
4967flags, you can manually redefine areas with the syntax described in the
4968preceding section. For this to work, the manual redefinition must come
4969@emph{after} the @code{AreaFile} keyword. Vice versa, if you want almost all
4970areas from an areafile to have a certain flag, but want a few exemptions, you
4971should use the @code{AreaFileFlags} and @code{AreaFile} keywords to import
4972all areas from the areafile with the specific flag set. After that, you can
4973redefine some areas manually without this flag.
4974
4975Note: Using @code{AreaFileFlags} to globally turn on the @samp{u} flag
4976probably won't hurt you. On the other hand, you should only use
4977@code{AreaFileFlags} to globally turn on the @samp{8} flag if you know that
4978the moderators of the echo areas that you are posting in do not forbid
49798-bit-codes.
4980
4981@node Areafile,  , AreafileFlags, Areafile Parsing
4982@subsubsection Areafile
4983@findex Areafile
4984@table @asis
4985@item Syntax:
4986@code{Areafile @var{type} @var{filename}}
4987@item Examples:
4988@example
4989Areafile Fastecho c:\fastecho\fastecho.cfg
4990Areafile Squish c:\squish\squish.cfg
4991Areafile AreasBBS c:\squish\areas.bbs
4992Areafile GEcho c:\gecho
4993Areafile Fidoconfig
4994@end example
4995@end table
4996
4997This keyword tells @value{MSGED} which areafile to use. The @var{type}
4998parameter designates the type of tosser configuration file to use. It can be
4999@samp{Squish}, @samp{Fastecho}, @samp{GEcho}, @samp{fidoconfig} or
5000@samp{AreasBBS}. The @var{filename} parameter specifies werhe to find the
5001tosser configuration that should be read. It's useage depends on the type of
5002your tosser:
5003
5004@itemize @bullet
5005@item @samp{AreasBBS}, @samp{Fastecho}
5006
5007The path to and filename of the configuration file, like
5008@code{c:\fastecho\fastecho.cfg}.
5009@item @samp{Gecho}
5010
5011You must specify the path to your GEcho installation directory rather than a
5012configuration file name, e.g. @code{c:\gecho}. Only GEcho 1.20 is supported.
5013@item @samp{fidoconfig}
5014
5015According to the Husky policy of doing things, the path to the fidoconfig
5016file is read from the default value or from the @samp{FIDOCONFIG} environment
5017variable. Hence, for fidoconfig, the second parameter of this keyword is not
5018used to configure the path to the config file. Instead, it is used to
5019configure how the config file should be treated. This can be:
5020
5021@itemize  @bullet
5022@item @samp{Areas}
5023
5024Only the mail area configuration (echo-, local and netmail areas) is read
5025from fidoconfig, i.E. the fidoconfig file is only used like any other
5026areafile. This is also the default behaviour if you omit the second
5027parameter.
5028
5029@item @samp{Settings}
5030
5031If you specify @samp{Areafile Fidoconfig Settings}, @value{MSGED} will read
5032as much configuration settings from the fidoconfig file as possible. Among
5033other things, this is the user name(s), the Fido AKA(s) and the echotoss log
5034file position. Mail area configuration, on the other hand, is @emph{not} read.
5035
5036@item @samp{Both}
5037
5038With this setting, both the general configuration settings and the mail area
5039configuration will be read from fidoconfig.
5040@end itemize
5041
5042The fidoconfig routines are able to follow include statements inside the
5043fidoconfig file automatically.
5044
5045@item @samp{Squish}
5046
5047The path to and name of the configuration file, like in
5048@code{c:\squish\squish.cfg}. Plase note that only the area definitions from
5049this file itself will be read. If the Squish configuration file references
5050another @file{areas.bbs} file, you have to define it separately for
5051@value{MSGED} using a second @code{Areafile} statement.
5052@end itemize
5053
5054
5055@node Compiling, Concept Index, Configuration Reference, Top
5056@appendix Compiling the Source Code
5057@cindex source code
5058@cindex compiling the source code
5059This appendix provides information on how to compile the source code of
5060@value{MSGED}. Most of the information of this chapter applies to all
5061supported platfroms (including Unix, OS/2, Windows and DOS).
5062
5063This appendix only covers stand-alone compilation of @value{MSGED}. You can
5064also decide to build @value{MSGED} in the Husky environment, i.E. link
5065@value{MSGED} against the fidoconfig library and use the @file{huskymak.cfg}
5066compile configuration file. If you want to do this, please refer to the
5067compliation and installation instructions which are provided by the Husky
5068team. They can be found in the file @file{INSTALL} in the @file{huskybse}
5069package.
5070
5071In the following we are assuming you don't want to deal with
5072@file{huskymak.cfg}, don't want to download @file{fidoconfig} etc., but
5073simply build a standard @value{MSGED} executable for your operating
5074system. It will still be able to read  a @file{fidoconfig}
5075type configuration file, as @value{MSGED} also has it's own fidoconfig access routines.
5076
5077@menu
5078* Preparations::                Obtaining and unpacking the files.
5079* Configuring::                 Selecting the proper Makefile.
5080* Path Names::                  Specifying the location of the config file.
5081* Building the Executables::    Invoking the compiler.
5082* Building the other Files::    Compiling the manual and help files.
5083* Installing::                  Installing the files you have created.
5084@end menu
5085
5086@node Preparations, Configuring, Compiling, Compiling
5087@section Step 1: Preparing the build directories; Obtaining the SMAPI
5088Besides the source code of @value{MSGED}, which is supplied in
5089@file{msged-te-6.3.tar.gz} or in @file{MSGTE63S.ZIP}, you need the source code
5090of the special edition of the Squish Message API, from here on called
5091@dfn{Smapi}, that is required to build @value{MSGED}.
5092
5093Unfortunately, there are a lot of different versions of the Smapi floating
5094around. The best choice would be if you would use the same version of Smapi
5095that I used to compile the binary releases. for @value{MSGED}
5096@value{VERSION}, this is Smapi 1.6.3, which can be obtained as
5097@file{smapi-2.5.tar.gz} or as @file{smapi25.zip}. You should be able to
5098obtain these files from the same location you got @value{MSGED} from.
5099
5100Alternatively, you can use any @emph{newer} Smapi from the Husky development
5101stream. All other versions of the Smapi or the Msgapi32 are probably not
5102suited for building @value{MSGED}. They are definitely not suited if you want
5103to compile for Unix.
5104
5105After you have obtained @file{SMAPI163.ZIP} and @file{MSGTE6_S.ZIP}, unzip
5106them into two directories at the same level.  The files in the archives stick
5107to the 8.3 notation, so you can even do this on FAT drives. You should use
5108either Info-ZIP for unpacking these files, or use pkunzip with the @samp{-d}
5109option, because the @value{MSGED} archives contains subdirectories.
5110
5111On OS/2, this could look  as follows:
5112
5113@example
5114[C:\] mkdir compile
5115[C:\] mkdir compile\smapi
5116[C:\] mkdir compile\msged
5117[C:\] cd compile\msged
5118[C:\COMPILE\MSGED] unzip c:\download\msgte63s.zip
5119[C:\COMPILE\MSGED] cd ..\smapi
5120[C:\COMPILE\SMAPI] unzip c:\download\smapi25s.zip
5121@end example
5122
5123If you use the version in @file{.tar.gz} format, you don't need to make the
5124subdirectories - the @file{.tar.gz} files already contain them. So, on Unix,
5125it would probably look like this:
5126
5127@example
5128~ $ mkdir ~/compile
5129~ $ cd ~/compile
5130~/compile $ tar xzf ~/downloads/msged-te-63.tar.gz
5131~/compile $ tar xzf ~/downloads/smapi-2.5.tar.gz
5132
5133@end example
5134
5135@node Configuring, Path Names, Preparations, Compiling
5136@section Configuring - Selecting the proper Makefile for your Compiler
5137
5138@value{MSGED} does not provide a @code{configure} skript. It rather provides
5139a set of different makefiles. You ``configure'' the source code by selecting
5140the makefile of your choice.
5141
5142The following compilers and target operating systems are supported:
5143
5144@example
5145Makefile     | Platform
5146-------------+-----------------------------------------
5147makefile.bcd | DOS with Borland C++ 3.1 or Turbo C
5148makefile.bco | OS/2 with Borland C 2.0
5149makefile.bcw | Windows 95/NT with Borland C++ 4.0
5150makefile.djg | DOS/386 with DJGPP GCC 2.7.2
5151makefile.emo | OS/2 with EMX 0.9c GCC 2.7.2
5152makefile.ibo | OS/2 with IBM CSET/2 or Visual Age C++
5153makefile.rxw | 95/NT with RSXNT + EMX GCC 2.7.2
5154makefile.unx | Any UNIX, BSD or Linux with any compiler
5155makefile.bsd | FreeBSD with GCC
5156makefile.lnx | Linux with GCC
5157makefile.mgw | 95/NT via Mingw32 cpd (running on Unix)
5158@end example
5159
5160The following makefiles are also provided, but they are not supported, either
5161because I do not have the appropriate compilers or because I cannot give
5162support for some special features they are using. I try to update these
5163makefiles along with the others, but I cannot make any promises.
5164
5165@example
5166Makefile     | Platform
5167-------------+----------------------------------------------
5168makefile.hco | OS/2 with Metware High C
5169makefile.qcd | DOS with MS Quick C
5170makefile.wcd | DOS with Watcom C
5171makefile.wcw | NT with Watcom C
5172makefile.wco | OS/2 with Watcom C
5173makefile.wcx | DOS/386 with Watcom C
5174@end example
5175
5176There is also a file which is simply named @file{Makefile}. This file is for
5177building using a @file{huskymak.cfg} environment, and will not be described
5178in this manual.
5179
5180@node Path Names, Building the Executables, Configuring, Compiling
5181@section Selecting Path Names
5182Msged has to know where to find its primary configuration file and the
5183character set translation files. You must tell this at compile time (the
5184location of all other configuration files can then be configured in the
5185primary configuration file). The following paths are selected per default:
5186
5187@example
5188What file               DOS/WIN/OS2     UNIX
5189=========================================================
5190Configuration file      msged.cfg       ~/.msged
5191Charset Input Map       readmaps.dat    ~/.msged.readmaps
5192Charset Output Map      writmaps.dat    ~/.msged.writmaps
5193@end example
5194
5195These path's will be different if you compile via @file{huskymak.cfg}.
5196
5197On Non-Unix systems, you normally do not need to change the default (which
5198is finding everything in the current directoy). On Unix, you might want to
5199change the locations if you are administrator and want to provide a
5200system-wide default configuration (that can then include files in the user
5201home directory if necessary). You can do this by redefining variables in the
5202Makefile. Just have a look at the first three lines of @file{makefile.unx}
5203to see how it works.
5204
5205@node Building the Executables, Building the other Files, Path Names, Compiling
5206@section Building the Executables
5207Now that you have done all necessary preparations, compilation is easy:
5208
5209@enumerate
5210@item Change into the @file{smapi} directory and type @code{make -f
5211MAKEFILENAME} (replace @code{MAKEFILENAME} with the name of the makefile that
5212you have selected in the previous step). This will generate a library, the
5213name of which depends on the makefile you used. For instance
5214@file{libsmapiunx.a} or @file{smapiibo.lib}.
5215
5216@item Change into the @file{msged} directory and type @code{make -f
5217MAKEFILENAME} (again substituting the proper makefile name). This will
5218genereate the executable, whose name depends on the makefile you used. For
5219instance @file{msgedp.exe} or @file{msged} or @file{msged.exe}.
5220
5221@item If, on Unix, you get errors about unresolved symbols when linking the
5222@value{MSGED} executable, change into the Smapi directory and run
5223@code{ranlib smapiunx.a}. Then change back to the Msged directory and try
5224again.
5225@end enumerate
5226
5227@node Building the other Files, Installing, Building the Executables, Compiling
5228@section Compiling the help file, the charset files and the documentation
5229
5230After you have created the executables, you need to create some other files,
5231namedly the compiled online help file, the character set translation files,
5232and the manual.
5233
5234To compile the help file, call the @value{MSGED} executable with the
5235@samp{-hc <infile> <outfile>} options. On OS/2:
5236
5237@example
5238[C:\COMPILE\MSGED] msgedp -hc msghelp.src msghelp.dat
5239@end example
5240
5241and on Unix:
5242
5243@example
5244~/msged $ ./msged -hc msghelp.src msghelp.dat
5245@end example
5246
5247In order for @value{MSGED} to behave smoothly in environments where mails
5248with special national characters are received and/or transmitted (i.E.:
5249everywhere in Europe, both Western Europe and particularly in Russia), you must
5250create @file{readmaps.dat} and @file{writmaps.dat} files @emph{that match
5251your local character map settings}. On Unix, this is easily done thanks to
5252the shell expansion feature:
5253
5254@example
5255~/msged $ cd ~/msged/maps
5256~/msged/maps $ gcc -o makemaps makemaps.c
5257~/msged/maps $ ./makemaps LATIN-1 *.CHS *.chs
5258@end example
5259
5260(If you have misconfigured your Unix to use CP850 or CP437 instead of
5261ISO-9660, you should enter @samp{IBMPC} instead of @samp{LATIN-1} in the
5262example above).
5263
5264On OS/2, DOS and NT it is a little more cumbersome. First, you have to
5265compile the @file{makemaps.c} file with your C compiler. Then, you have to
5266specify all character map files that are to be included into
5267@file{readmaps.dat} and @file{writmaps.dat} manually:
5268
5269@example
5270[C:\COMPILE\MSGED] cd c:\compile\msged\maps
5271[C:\COMPILE\MSGED\MAPS] icc makemaps.c
5272 (...)
5273[C:\COMPILE\MSGED\MAPS] makemaps CP437 IBM_ISO.CHS ISO_IBM.CHS
5274IBM_ASC.CHS IBM_MAC.CHS MAC_IBM.CHS IBM_850.CHS 850_IBM.CHS 866_IBM.CHS 1125_IBM.CHS
5275@end example
5276
5277Finally, you may want to create the documentation in your favourite output
5278format. This requires quite some prerequisite software to be installed on
5279your system, so you probably might simply want to grab @file{MSGTE6_M.ZIP}.
5280
5281But if you really want to compile the manual by hand, proceed as follows:
5282Change to the @file{doc/manual} subdirectory:
5283
5284@example
5285[C:\COMPILE\MSGED\MAPS] cd \compile\msged\doc\manual
5286@end example
5287
5288or on Unix:
5289
5290@example
5291~/msged/maps $ cd ~/msged/doc/manual
5292@end example
5293
5294There, you have various options. You can type:
5295
5296@table @code
5297@item make info
5298This creates the documentation in GNU info format. It requires the
5299@file{makeinfo} tool to be installed, and the @file{info} viewer for
5300viewing. Both should be part of any modern Unix installation. For OS/2, they
5301can be found in @file{GNUINFO.ZIP}
5302
5303@item make html
5304This creates the documentation in HTML format. This requires Perl 5 to be
5305installed as well as the texi2html.pl perl script. (The latter script does
5306also work on OS/2 with the Perl for OS/2 port).
5307
5308@item make dvi
5309This creates the documentation in DVI format. DVI can be converted to PS with
5310dvips and yields a very high-quality output. However, this requires a working
5311TeX installation and the @file{texi2dvi} shell script. (On OS/2, you need
5312pdksh for executing the script and EmTeX. With a little manual work, it can
5313also be done with Juergen Kleinboehls OS2TeX.
5314
5315@item make inf
5316This creates the documentation in OS/2 INF format. It requires a Texi2Ipf
5317tool as well as the IPFC compiler (which only runs on OS/2).
5318
5319@end table
5320
5321@node Installing,  , Building the other Files, Compiling
5322@section Installing
5323You have now created all files that are necessary to install
5324@value{MSGED}. @xref{Installation,,Installation Procedures and Release
5325Notes}, for information on how to install these files.
5326
5327@node Concept Index, Keyword Index, Compiling, Top
5328@appendix General Index
5329@printindex cp
5330
5331@node Keyword Index,  , Concept Index, Top
5332@appendix Configuration File Keyword Index
5333@printindex fn
5334
5335@bye
5336