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