MHonArc-2014-05-05-snap/0000755004705000001440000000000012332046112013346 5ustar ehoodusersMHonArc-2014-05-05-snap/mha-dbedit0000755004705000001440000000614107706405566015321 0ustar ehoodusers#!/usr/bin/perl ##---------------------------------------------------------------------------## ## File: ## $Id: mha-dbedit,v 1.8 2003/07/20 03:24:38 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Program to modify database w/o editing archive files. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1998-1999 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mha_dbedit; ##---------------------------------------------------------------------------## ## Main routine ## ##---------------------------------------------------------------------------## MAIN: { unshift(@INC, 'lib'); # Should I leave this line in? ## Initialize MHonArc require 'mhamain.pl' || die qq/ERROR: Unable to require "mhamain.pl"\n/; mhonarc::initialize(); ## Open archive unshift(@ARGV, '-readdb', '-lock'); if (!mhonarc::open_archive()) { die "ERROR: Unable to open archive\n"; } ## Write database print STDOUT "\nWriting database ...\n" unless $mhonarc::QUIET; my $status = mhonarc::output_db($mhonarc::DBPathName); mhonarc::close_archive(); exit($status ? 0 : 1); } ##---------------------------------------------------------------------------## 1; __END__ =head1 NAME mha-dbedit - make database edits to a MHonArc archive =head1 SYNOPSIS S [I]> =head1 DESCRIPTION B is a utility program that is part of the B software package. The program allows archive database edits to be made without causing HTML pages to be touched. The documentation for B is distributed in HTML format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see L<"AVAILABILITY"> on where you can access the documentation on the web. =head1 EXAMPLE Typical usage: shell> mha-dbedit -rcfile res.mrc -outdir /path/to/archive =head1 AVAILABILITY EIE =head1 AUTHOR Earl Hood, mhonarc@mhonarc.org MHonArc comes with ABSOLUTELY NO WARRANTY and MHonArc may be copied only under the terms of the GNU General Public License, which may be found in the MHonArc distribution. =cut MHonArc-2014-05-05-snap/META.yml0000644004705000001440000000105612332046112014621 0ustar ehoodusers--- #YAML:1.0 name: MHonArc abstract: Create HTML archives of mail/news messages version: 2014-05-05-snap authored_by: - Earl Hood license: gpl distribution_type: module requires: Fcntl: 0 File::Basename: 0 Getopt::Long: 0 Symbol: 0 Time::Local: 0 recommends: Digest::MD5: 0 Encode: 0 File::Temp: 0 MIME::Base64: 0 POSIX: 0 keywords: - MIME - Mail - HTML generated-by: Earl Hood version 2.00 MHonArc-2014-05-05-snap/INSTALL0000644004705000001440000007033012332046112014402 0ustar ehoodusers[Prev] [TOC][FAQ][Bugs][Home] [Next] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Installation The following section describes how to install MHonArc on your system. NOTE: Make sure to read the release notes before installing MHonArc, especially if you are upgrading from a previous release. If you are reading the text version of this installation document, a text version of the release notes, RELNOTES, exists within the root of the MHonArc distribution. • For the Impatient • Vendor Supplied Packages • System Requirements • Downloading MHonArc • RPM Installation • Extracting the MHonArc Distribution • Installing with install.me □ install.me Notes • The Perl 5 Way • Win32 Notes • Alternate Operating Systems • Manual Installation • Post Installation Configuration □ Default Resource File □ Site Initialization Library • Resource File Editing ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ For the Impatient If you cannot wait to get going, try one of the following: • Plaform independent install: ┌──────────────────────────────────────────────────────────────────────────┐ │prompt> wget 'http://www.mhonarc.org/release/MHonArc/MHonArc-X.X.X.tar.gz'│ │prompt> gzip -dc MHonArc-X.X.X.tar.gz | tar xvf - │ │prompt> cd MHonArc-X.X.X │ │prompt> perl install.me │ └──────────────────────────────────────────────────────────────────────────┘ • RPM install: ┌────────────────────────────────────────────────────────────────────────────────┐ │prompt> wget 'http://www.mhonarc.org/release/MHonArc/MHonArc-X.X.X-n.noarch.rpm'│ │prompt> rpm -Uvh MHonArc-X.X.X-1.noarch.rpm │ └────────────────────────────────────────────────────────────────────────────────┘ Where X.X.X represents the version number, and X.X.X-n represents the version and release number of the RPM. Generally, the release number is equal to '1'. If there were problems doing the above, then keep reading. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Vendor Supplied Packages Some software system vendors provide MHonArc, usually as an optional package. The following links provide vendor-supplied versions of MHonArc: Debian GNU/Linux Linux (multiple vendors/distros) NOTE: Choosing to go with a vendor-supplied package depends on your needs. Here are some things to consider: • Some vendors may have their own QA process along with their own support services while others may provide MHonArc as a contributed package with no additional support. • Vendor/distro versions of MHonArc tend not to reflect the latest release since there is a latency between a new release made available from mhonarc.org to when vendors are able to download and create their own packages. This difference can be important depending on what MHonArc features or fixes you need. In general, if your vendor provides their own QA and support services for the software they provide, it is usually best to use the vendor's version of MHonArc. However, if the vendor does not provide additional support, and/or you need the latest features and fixes, you may want go with what is provided from mhonarc.org. If you require professional support and consulting, see Contacts for contact information. This document does not cover any installation details for vendor supplied packages. See your vendor's supplied documentation for installation instructions. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ System Requirements The following is required to run MHonArc: • Perl 5 is installed. If you do not have Perl 5, goto for download information. Perl versions 5.6.1 and later are recommended. • The following standard modules are installed: □ Fcntl □ File::Basename □ Getopt::Long □ Symbol □ Time::Local NOTE: The installation program will verify that required modules are installed. • The following modules are optional (they are not required, but they will provided improved or enhanced functionality): □ Digest::MD5: Used for creating IDs for messages without message-ids. MHonArc uses message-IDs to detect for already-archived or duplicate messages. Digest::MD5 gives MHonArc this capability for messages without message-IDs. □ File::Temp: MHonArc uses temporary files when writing files to disk (for security and data integrity reasons). If File::Temp is not available, MHonArc will use its own internal implementation, which is not as secure as File::Temp, but adequate for most uses. □ MIME::Base64: Used for base64 decoding (base64 is the standard way to encoding binary data in mail). MIME::Base64 is normally provided with the standard perl distribution. If MIME::Base64 is not available, MHonArc will fallback to its own internal, less efficient, base64 decoder. □ POSIX: Used for setting locale as defined by the LANG resource and for formatting time strings if POSIXSTRFTIME resource is enabled. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Downloading MHonArc The homepage for MHonArc is . The homepage list various sites that you can download MHonArc. MHonArc is distributed in the following formats: • RPM: MHonArc-X.X.X-n.noarch.rpm • tar-bz2: MHonArc-X.X.X.tar.bz2 • tar-gzip: MHonArc-X.X.X.tar.gz • zip: MHonArc-X.X.X.zip Where X.X.X represents the version number, and X.X.X-n represents the version and release number of the RPM. Generally, the release number is equal to '1'. Choose the format that best suits your environment. NOTE: A source RPM, MHonArc-X.X.X-n.src.rpm, is also provided for those that need to create custom RPM bundles. NOTE: Alternate distribution formats for MHonArc may be available from third-parties. Alternate distribution formats are not covered in this document. If you downloaded the RPM distribution, goto RPM Installation. If you downloaded one of the other formats, goto Extracting the MHonArc Distribution. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ RPM Installation RPM is a widely used software package manager for various Linux-based systems and other Unix-based environments. If the software on your system is managed by RPM, you may prefer to install MHonArc via RPM: ┌─────────────────────────────────────────────────────────────────────────┐ │prompt> rpm -Uvh MHonArc-X.X.X-n.noarch.rpm │ └─────────────────────────────────────────────────────────────────────────┘ NOTE: RPM-based installation requires that the perl executable is located at /usr/bin/perl. If you have perl installed in a different location, you can download the src RPM and edit the RPM spec file to reflect your system's configuration. MHonArc files will be installed in the following locations: /usr/bin: Program files: mhonarc, mha-dbedit, ... /usr/lib/MHonArc: Library files. /usr/share/doc/MHonArc-X.X.X: Documentation, examples, and extras. /usr/share/man/man1: Manpages. It is highly likely that you will need to have root priviledges to install via RPM. If you do not have root access, or you want to install in a non-standard location, you either need to create a new RPM from the source RPM or install MHonArc from the non-RPM bundles. Once the install is completed, you can skip to Post Installation Configuration. NOTE: RPM distributions have been directly available starting with MHonArc v2.6.5. However, alternate RPM packages are available for current and older versions via third parties and some Linux distros. Goto to get a list of third-party RPM bundles. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Extracting the MHonArc Distribution NOTE: If doing an RPM-based install, goto RPM Installation above. After downloading the MHonArc distribution, move the file to a temporary location for extraction. For extraction under Unix-like systems, use one of the following commands based upon the distribution format you downloaded: tar-bz2 ┌─────────────────────────────────────────────────────────────────────┐ │prompt> bzip2 -dc MHonArc-X.X.X.tar.bz2 | tar xvf - │ └─────────────────────────────────────────────────────────────────────┘ tar-gzip ┌─────────────────────────────────────────────────────────────────────┐ │prompt> gzip -dc MHonArc-X.X.X.tar.gz | tar xvf - │ └─────────────────────────────────────────────────────────────────────┘ zip ┌─────────────────────────────────────────────────────────────────────┐ │prompt> unzip MHonArc-X.X.X.zip │ └─────────────────────────────────────────────────────────────────────┘ For Win32 systems, you can use a program like WinZip to extract the tar-gzip or zip formats. If using Cygwin, use the Unix-based extraction methods. NOTE: If your are using Cygwin and the cygwin build of Perl, then the installation and usage of MHonArc is the same as a Unix-based environment. After extraction, the subdirectory MHonArc-X.X.X will have been created containing all the files comprising MHonArc. NOTE: Please read the release notes before continuing for any news about compatibility with previous versions and/or important usage information. Now, change your current directory to MHonArc-X.X.X for the next step. On a Unix-type system, use the following command: ┌─────────────────────────────────────────────────────────────────────────┐ │prompt> cd MHonArc-X.X.X │ └─────────────────────────────────────────────────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Installing with install.me Provided in the MHonArc distribution is a Perl program, install.me, for installing MHonArc on your system. To run the program, type the following command: ┌─────────────────────────────────────────────────────────────────────────┐ │prompt> perl install.me │ └─────────────────────────────────────────────────────────────────────────┘ NOTE: You must be in the same directory as the install.me program when you run it. The installation program will ask you a series of questions on where the perl executable is and where to put MHonArc files. Just hit to accept the default values listed in ()'s. NOTE: The default values are determined by the configuration of perl on your system. If you choose the defaults, you may need root/admin privileges to successfully install MHonArc. install.me can take several options on the command-line to affect what is done during installation. The following is the list of options available: ┌─────────────────────────────────────────────────────────────────────────┐ │ -afs : Skip permission checks (useful if AFS) │ │ -batch : Run in batch mode (do not ask questions) │ │ -binpath : Directory path to install programs/scripts │ │ -docpath : Directory path to install documentation │ │ -help : A message summarizing options available │ │ -libpath : Directory path to install library files │ │ -filelist : List of files to install (def="FILELIST") │ │ -manpath : Directory path to manpages │ │ -nobin : Do not install programs │ │ -nodep : Skip module dependency check │ │ -nodoc : Do not install documentation │ │ -nolib : Do not install library files │ │ -noman : Do not install manpages │ │ -perl : Pathname of perl interpreter │ │ -prefix : Set prefix for installation directories │ └─────────────────────────────────────────────────────────────────────────┘ For example, if you do not want to install the documentation, do the following: ┌─────────────────────────────────────────────────────────────────────────┐ │prompt> perl install.me -nodoc │ └─────────────────────────────────────────────────────────────────────────┘ Later on, if you decide you want to install the documentation, but not re-install the other files, do the following: ┌─────────────────────────────────────────────────────────────────────────┐ │prompt> perl install.me -nobin -nolib -noman │ └─────────────────────────────────────────────────────────────────────────┘ If you want to install files relative to your home directory, do the following: ┌─────────────────────────────────────────────────────────────────────────┐ │prompt> perl install.me -prefix $HOME │ └─────────────────────────────────────────────────────────────────────────┘ install.me Notes • The "#!" line in the installed programs are set to point to the perl executable specified in the installation process. This is convienence for those using systems that support the "#!" notation. • The installation lib directory is added to each program's search path so each program can find the libaries needed for proper execution. Therefore, you do NOT have to set your PERL5LIB environment variable if you install the library files in a non-standard location. • If you specify paths that do not exist, the install.me program creates the paths for you. If running in interactive mode, install.me prompts you for confirmation before creating a path. • install.me supports environment variable interpolation in pathnames specified during interactive installation. For example, if you want to install program files into your local bin directory, you can enter the following when prompted for the location to install executables: $HOME/ bin. Also, if the '~' (tilde) character is the first character of the pathname specified, it will be expanded to the value of the HOME environment variable. Therefore, the following are equivalent: $HOME/ bin and ~/bin. • The -afs option should only be needed if installing MHonArc onto AFS and using an older version of Perl 5. It should not be needed for Perl 5.005 or later. • If you want to abort the installation, just enter the termination character, typically for Unix systems and for Win32 systems. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ The Perl 5 Way Of course, you can install MHonArc the standard way under Perl 5: ┌─────────────────────────────────────────────────────────────────────────┐ │prompt> perl Makefile.PL │ │prompt> make │ │prompt> make install │ └─────────────────────────────────────────────────────────────────────────┘ If you want to install in a specific directory, try: ┌─────────────────────────────────────────────────────────────────────────┐ │prompt> perl Makefile.PL PREFIX=/tmp/myperl5 │ │prompt> make │ │prompt> make install │ └─────────────────────────────────────────────────────────────────────────┘ NOTE: install.me is actually called "behind the scenes" in batch mode to install the files. Therefore, alternate variations of invoking perl Makefile.PL may not be supported. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Win32 Notes • The main programs will automatically be converted to DOS batch files. Hence, if the path location of the main programs is in your PATH, you should be able to invoke them like any other program. NOTE: The path to the perl executable must be in your PATH, also. • The main programs will also be copied to ".pl" files. Therefore, if you have .pl associated with Perl in the registry, you can invoke the programs directly (if the path location of the main programs are in your search path). For example: ┌─────────────────────────────────────────────────────────────────────┐ │prompt> mhonarc.pl ... │ └─────────────────────────────────────────────────────────────────────┘ This is known to work under WinNT's command shell and under the Cygwin bash shell. This is better than using the batch files since I/O redirection does not work with batch files. • In the logo directory of the distribution contain .ico files for associating the MHonArc logo with MHonArc .mrc resource files. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Alternate Operating Systems In many cases, install.me works for other operating systems. Please contact the author on any success stories for other operating systems, and please send any patches, if required. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Manual Installation If install.me does not work for your system, here is how to install MHonArc manually: • Copy files in the lib directory to the library location you desire. • Copy the program files to the location you want them installed. After copying, do the following: □ Edit the "#!/..." line for each program file to reference the complete pathname of your perl interpreter. The line should be the first line of each program file. NOTE: This step is only needed for systems (Unix) that support "#! ". □ Then do one of the following: ☆ Add a new line right after the "#!/..." line of each program file to contain the following: use lib '/path/to/lib/files'; where "/path/to/lib/files/" is the path to where copied the library files to. NOTE: If the location you copied the libraries are already part of Perl's standard library search path, you do not need to add the "use lib" statement. ☆ Or, set your PERL5LIB environment to include the path location you copied the library files to. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Post Installation Configuration After installation, you may want to do some site-specific configuration. Default Resource File You have the ability to create a default resource file to make site-wide defaults for MHonArc. See the DEFRCFILE resource on valid pathname locations for the default resource file. For more information on what can be put in a resource file, see the Resources section. NOTE: It is advisable to create some local documentation for users describing any settings you place in the site-wide resource file. This will avoid confusion if site settings vary from default settings described in the documentation, and it will help avoid invalid bug reports. Site Initialization Library If you do not know Perl, ignore this section. When MHonArc opens an archive for processing, MHonArc will attempt to execute the instructions in the file mhasiteinit.pl. This file allows you to make site customizations not possible through a default resource file. mhasiteinit.pl should be placed in the MHonArc library directory as specified during installation. A sample mhasiteinit.pl file is provied in the examples directory of the distribution to get you started, which includes comments on some of the things you can do with mhasiteinit.pl. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Resource File Editing If you are a Vim user, , a syntax file for MHonArc resource files is included in the examples directory: mhonarc.vim. Vim is known to run on a variety of operating systems, and is free software. To use mhonarc.vim, copy mhonarc.vim to an appropriate location and add something like the following to your .vimrc file: au BufNewFile,BufRead *.mrc so $HOME/share/vim/syntax/mhonarc.vim Of course, change the pathname to mhonarc.vim to wherever you copied it to. Now, any file with .mrc extension will put Vim into MHonArc resource file highlighting mode. The mode is best used with color-capable terminals. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [Prev] [TOC][FAQ][Bugs][Home] [Next] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $Date: 2005/05/13 00:00:35 $ MHonArc Copyright © 1997-2003,2005 Earl Hood, mhonarc@mhonarc.org MHonArc-2014-05-05-snap/Makefile.PL0000644004705000001440000000411511507475654015345 0ustar ehoodusers#!/usr/bin/perl # $Id: Makefile.PL,v 1.15 2011/01/01 00:56:12 ehood Exp $ # Pseudo Makefile.PL: Since MHonArc's history goes back to Perl 4 days, # it has its own installation process. This file generates a simple # Makefile to (paritally) satisfy the standard Perl 5 way to install # software. use Config; open(MAKEFILE, ">Makefile") || die "Unable to create Makefile: $!\n"; ## Map variable settings to install.me options %vars = ( ); foreach (@ARGV) { # make sure to only process arguments that look like variables if (/=/) { ($var, $value) = split(/=/, $_, 2); $vars{$var} = $value; } } my $opt_prefix = defined($vars{'PREFIX'}) ? "-prefix $vars{'PREFIX'}" : ""; my $opt_binpath = defined($vars{'INSTALLSCRIPT'}) ? "-binpath $vars{'INSTALLSCRIPT'}" : ""; my $opt_libpath = defined($vars{'LIB'}) ? "-libpath $vars{'LIB'}" : defined($vars{'INSTALLSITELIB'}) ? "-libpath $vars{'INSTALLSITELIB'}" : defined($vars{'INSTALLPRIVLIB'}) ? "-libpath $vars{'INSTALLPRIVLIB'}" : ""; my $opt_manpath = defined($vars{'INSTALLMAN1DIR'}) ? "-manpath $vars{'INSTALLMAN1DIR'}" : ""; $opt_manpath =~ s/man1$//; my $instme_args = "$opt_prefix $opt_binpath $opt_libpath $opt_manpath"; ## Determine which perl should be used my $perl = $Config{'perlpath'}; unless (-x $perl) { $perl = join('/', $Config{'installbin'}, $Config{'perl'}); } unless (-x $perl) { $perl = 'perl'; } ## Determine other commands that will be used my $chmod = $Config{'chmod'} || '/bin/chmod'; my $mkdir = $Config{'mkdir'} || '/bin/mkdir'; my $rm = $Config{'rm'} || '/bin/rm'; ## Print Makefile print MAKEFILE < Fix all open bugs. :-) => Add resource to disable use of MD5 if no message-id. => Generalize message page layout so converted header and body can be placed in any order. XXX: Old versions did not delimit converted head and body, so what should be done for this case or should any kind of compatibility be dropped? => Log-style output when showing progress. I.e. Prefix text with date/time stamp. => "Global" filter options. For example, have something like "subdir" be applied to all filters that write files. => Define $MhaStdout and $MhaStdin. Should help in embedded usage. => Support for text/uri-list. => XHTML defaults for resources (XXX: Browser impact?) => "00" year => 1900 (need test case that verifies this). => Add resource to set initial message number. XXX: Use of this? => Redo MHonArc using modules/class structure. Basically a redesign and implementation (MHonArc 3.x?). => Provide attachment listing at top of each messages page (suggested by Lars Aronsson). This can be tricky since filters have ultimate control of how parts are treated, including overriding attachment disposition. Would also require changes to how base parsing cooperates with content filters. => Subject-based threading enhancements: . Messages with no "Re:" are in different threads. Related to this is grouping follow-ups under proper message based upon date. => Support filter chains: pre- and port-filters to MIMEFILTERS. => Hashify all resources (part of code redesign). => Use message-IDs as filenames: Internal impacts, OS support problems. Should be configurable? =========================================================================== $Id: TODO,v 1.25 2003/08/02 06:15:36 ehood Exp $ MHonArc-2014-05-05-snap/man/0000755004705000001440000000000012332046111014120 5ustar ehoodusersMHonArc-2014-05-05-snap/man/mha-decode.10000644004705000001440000001402312332046111016170 0ustar ehoodusers.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MHA-DECODE 1" .TH MHA-DECODE 1 "2003-07-19" "MHonArc v2.6" "MHonArc Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" mha\-decode \- Decode MIME messages .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBmha-decode\fR\ [\fIoptions\fR]\ \fImailfolder\fR\ ... .PP \&\fBmha-decode\fR\ [\fIoptions\fR]\ \-single\ \fImsg.822\fR .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBmha-decode\fR is a utility program that is part of the \fBMHonArc\fR software package. \fBmha-decode\fR provides basic \s-1MIME\s0 decoding for mail messages. .PP If given mail folders as input, all messages within in the mail folders will be decoded. All message parts are written to files. If a filename is specified for a message part, that filename will be used when writing the part to a file. If no filename is specified in the message, a unique name will be used based upon the content-type of the message part. .PP A single message can be decoded by using the \f(CW\*(C`\-single\*(C'\fR option. .SH "OPTIONS" .IX Header "OPTIONS" \&\fBmha-decode\fR takes options available to \fBmhonarc\fR, but only those options affect parsing of mail folders are applicable: \&\f(CW\*(C`\-conlen\*(C'\fR, \&\f(CW\*(C`\-mhpattern\*(C'\fR, \&\f(CW\*(C`\-msgsep\*(C'\fR, \&\f(CW\*(C`\-noconlen\*(C'\fR, \&\f(CW\*(C`\-outdir\*(C'\fR, \&\f(CW\*(C`\-perlinc\*(C'\fR, \&\f(CW\*(C`\-rcfile\*(C'\fR, \&\f(CW\*(C`\-single\*(C'\fR, \&\f(CW\*(C`\-umask\*(C'\fR. .PP Also, \fBmha-decode\fR supports the following additional options: .ie n .IP """\-dcd\-digest""" 4 .el .IP "\f(CW\-dcd\-digest\fR" 4 .IX Item "-dcd-digest" Run in message digest mode. When this option is specified, any embedded \f(CW\*(C`message/rfc822\*(C'\fR and \f(CW\*(C`message/news\*(C'\fR parts will be saved instead of recursively decoding any parts contained within. .SH "NOTES" .IX Header "NOTES" The documentation for \fBMHonArc\fR is distributed in \s-1HTML\s0 format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see \*(L"\s-1AVAILABILITY\s0\*(R" on where you can access the documentation on the web. .SH "AVAILABILITY" .IX Header "AVAILABILITY" <\fIhttp://www.mhonarc.org/\fR> .SH "AUTHOR" .IX Header "AUTHOR" Earl Hood, mhonarc@mhonarc.org .PP MHonArc comes with \s-1ABSOLUTELY\s0 \s-1NO\s0 \s-1WARRANTY\s0 and MHonArc may be copied only under the terms of the \s-1GNU\s0 General Public License, which may be found in the MHonArc distribution. MHonArc-2014-05-05-snap/man/mha-dbedit.10000644004705000001440000001154012332046111016201 0ustar ehoodusers.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MHA-DBEDIT 1" .TH MHA-DBEDIT 1 "2003-07-19" "MHonArc v2.6" "MHonArc Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" mha\-dbedit \- make database edits to a MHonArc archive .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBmha-dbedit\fR\ [\fIoptions\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBmha-dbedit\fR is a utility program that is part of the \fBMHonArc\fR software package. The program allows archive database edits to be made without causing \s-1HTML\s0 pages to be touched. .PP The documentation for \fBMHonArc\fR is distributed in \s-1HTML\s0 format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see \*(L"\s-1AVAILABILITY\s0\*(R" on where you can access the documentation on the web. .SH "EXAMPLE" .IX Header "EXAMPLE" Typical usage: .PP .Vb 1 \& shell> mha\-dbedit \-rcfile res.mrc \-outdir /path/to/archive .Ve .SH "AVAILABILITY" .IX Header "AVAILABILITY" <\fIhttp://www.mhonarc.org/\fR> .SH "AUTHOR" .IX Header "AUTHOR" Earl Hood, mhonarc@mhonarc.org .PP MHonArc comes with \s-1ABSOLUTELY\s0 \s-1NO\s0 \s-1WARRANTY\s0 and MHonArc may be copied only under the terms of the \s-1GNU\s0 General Public License, which may be found in the MHonArc distribution. MHonArc-2014-05-05-snap/man/mhonarc.10000644004705000001440000001231012332046111015626 0ustar ehoodusers.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MHONARC 1" .TH MHONARC 1 "2005-07-10" "MHonArc v2.6" "MHonArc Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" mhonarc \- convert mail/news messages to HTML .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBmhonarc\fR\ [\fIoptions\fR]\ [\fIarguments\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBMHonArc\fR is a Perl program for converting mail, or news, messages into \s-1HTML\s0 archives. \fBMHonArc\fR can also be used to convert individual messages into \s-1HTML\s0 documents. .PP The documentation for \fBMHonArc\fR is distributed in \s-1HTML\s0 format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see \*(L"\s-1AVAILABILITY\s0\*(R" on where you can access the documentation on the web. .PP Running "\f(CW\*(C`mhonarc \-help\*(C'\fR" will give a summary of the command-line options available. .SH "PREREQUISITES" .IX Header "PREREQUISITES" \&\fBFcntl\fR, \&\fBFile::Basename\fR, \&\fBGetopt::Long\fR, \&\fBSymbol\fR, \&\fBTime::Local\fR .SH "COREQUISITES" .IX Header "COREQUISITES" \&\fBEncode\fR, \&\fBDigest::MD5\fR, \&\fBFile::Temp\fR, \&\fBMIME::Base64\fR, \&\fB\s-1POSIX\s0\fR .SH "OSNAMES" .IX Header "OSNAMES" any .SH "AVAILABILITY" .IX Header "AVAILABILITY" <\fIhttp://www.mhonarc.org/\fR> .SH "SCRIPT CATEGORIES" .IX Header "SCRIPT CATEGORIES" Mail .SH "AUTHOR" .IX Header "AUTHOR" Earl Hood, mhonarc@mhonarc.org .PP MHonArc comes with \s-1ABSOLUTELY\s0 \s-1NO\s0 \s-1WARRANTY\s0 and MHonArc may be copied only under the terms of the \s-1GNU\s0 General Public License, which may be found in the MHonArc distribution. MHonArc-2014-05-05-snap/man/mha-dbrecover.10000644004705000001440000001356112332046111016726 0ustar ehoodusers.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "MHA-DBRECOVER 1" .TH MHA-DBRECOVER 1 "2009-05-03" "MHonArc v2.6" "MHonArc Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" mha\-dbrecover \- rebuild a MHonArc archive database .SH "SYNOPSIS" .IX Header "SYNOPSIS" \&\fBmha-dbrecover\fR\ [\fIoptions\fR] .SH "DESCRIPTION" .IX Header "DESCRIPTION" \&\fBmha-dbrecover\fR is a utility program that is part of the \fBMHonArc\fR software package. The program allows can be used to rebuild a \&\fBMHonArc\fR archive database from the \s-1HTML\s0 message files. This allows database recovery if the database gets corrupted or accidentally deleted. .PP The documentation for \fBMHonArc\fR is distributed in \s-1HTML\s0 format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see \*(L"\s-1AVAILABILITY\s0\*(R" on where you can access the documentation on the web. .SH "OPTIONS" .IX Header "OPTIONS" \&\fBmha-dbrecover\fR takes all the options available to \fBmhonarc\fR along with the following additional options: .ie n .IP """\-dbr\-startnum"" \fI#\fR" 4 .el .IP "\f(CW\-dbr\-startnum\fR \fI#\fR" 4 .IX Item "-dbr-startnum #" The starting message number to recover data from. This option is useful if you have many message files in a directory, but you only want to recover a subset of the files. .Sp If this option is not specified, the starting number is 0. .ie n .IP """\-dbr\-endnum"" \fI#\fR" 4 .el .IP "\f(CW\-dbr\-endnum\fR \fI#\fR" 4 .IX Item "-dbr-endnum #" The ending message number to recover data from. This option is useful if you have many message files in a directory, but you only want to recover a subset of the files. .Sp If this option is not specified, all messages starting from \&\f(CW\*(C`\-dbr\-startnum\*(C'\fR will be recovered. .PP \&\fB\s-1NOTE:\s0\fR Only a subset of the options available to \fBmhonarc\fR are actually supported since many options are not applicable for recovering operations. .SH "AVAILABILITY" .IX Header "AVAILABILITY" <\fIhttp://www.mhonarc.org/\fR> .SH "AUTHOR" .IX Header "AUTHOR" Earl Hood, mhonarc@mhonarc.org .PP MHonArc comes with \s-1ABSOLUTELY\s0 \s-1NO\s0 \s-1WARRANTY\s0 and MHonArc may be copied only under the terms of the \s-1GNU\s0 General Public License, which may be found in the MHonArc distribution. MHonArc-2014-05-05-snap/mha-dbrecover0000755004705000001440000001450611177375157016044 0ustar ehoodusers#!/usr/bin/perl ##---------------------------------------------------------------------------## ## File: ## $Id: mha-dbrecover,v 1.9 2009/05/03 20:11:27 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Program to rebuild the MHonArc database file from message files. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1998,2001 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mha_dbrecover; use Getopt::Long; ##---------------------------------------------------------------------------## ## Main routine ## ##---------------------------------------------------------------------------## MAIN: { unshift(@INC, 'lib'); # Should I leave this line in? ## Grab options from @ARGV unique to this program my %opts = ( ); Getopt::Long::Configure('pass_through'); GetOptions(\%opts, 'dbr-startnum=i', 'dbr-endnum=i' ); my $startnum = $opts{'dbr-startnum'} || 0; my $endnum = $opts{'dbr-endnum'} || -1; ## Reset pass-through of options Getopt::Long::Configure('no_pass_through'); ## Initialize MHonArc require 'mhamain.pl' || die qq/ERROR: Unable to require "mhamain.pl"\n/; mhonarc::initialize(); ## Load library for reading message files require 'mhmsgfile.pl' || die qq/ERROR: Unable to require "mhmsgfile.pl"\n/; ## Open archive: We use special -noarg option to tell mhonarc ## to not do any processing, just open archive and lock it. unshift(@ARGV, '-noarg', '-lock'); if (!mhonarc::open_archive()) { # unable to open, so abort processing die "ERROR: Unable to open archive\n"; } ## do it eval { local(*DIR); if (!opendir(DIR, $mhonarc::OUTDIR)) { # unable to open archive directory die qq/ERROR: Unable to open "$mhonarc::OUTDIR": $!\n"/; } print STDOUT "Rebuilding database in $mhonarc::OUTDIR ...\n" unless $mhonarc::QUIET; ## Define regular expressing for matching message files: ## we use message prefix and extension settings as defined ## by mhonarc. Make sure to capture message number from ## filename. my $msgrex = '^'. "\Q$mhonarc::MsgPrefix". '(\d+)\.'. "\Q$mhonarc::HtmlExt". '$'; local($_); my(@file); foreach (readdir(DIR)) { # skip if not a message file next unless /$msgrex/o; # skip if number less than start next if $1 < $startnum; # skip if number greater than end next if ($endnum >= 0) && ($1 > $endnum); # add file to list to process push @file, $_; } closedir(DIR); if (!@file) { # nothing found to process die qq/ERROR: No message files found\n/; } ## Read files. Use function in mhmsgfile.pl to extract data. my($file, $num); foreach (@file) { # get number for loading into mhonarc data structures ($num) = $_ =~ /$msgrex/o; print STDOUT "." unless $mhonarc::QUIET; $file = join($mhonarc::DIRSEP, $mhonarc::OUTDIR, $_); # load date from message file into mhonarc mhonarc::load_data_from_msg_file($file, $num); } ## Define other data structures that need to be recovered. $mhonarc::NumOfMsgs = scalar(@file); @mhonarc::MListOrder = mhonarc::sort_messages(); $mhonarc::LastMsgNum = mhonarc::get_last_msg_num(); mhonarc::compute_follow_ups(\@mhonarc::MListOrder); mhonarc::compute_threads(); ## Output recovered database file print STDOUT "\nWriting database ...\n" unless $mhonarc::QUIET; mhonarc::output_db($mhonarc::DBPathName); }; my $ec = 0; if ($@) { warn $@; $ec = 1; } mhonarc::close_archive(); exit($ec); } ##---------------------------------------------------------------------------## 1; __END__ =head1 NAME mha-dbrecover - rebuild a MHonArc archive database =head1 SYNOPSIS S [I]> =head1 DESCRIPTION B is a utility program that is part of the B software package. The program allows can be used to rebuild a B archive database from the HTML message files. This allows database recovery if the database gets corrupted or accidentally deleted. The documentation for B is distributed in HTML format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see L<"AVAILABILITY"> on where you can access the documentation on the web. =head1 OPTIONS B takes all the options available to B along with the following additional options: =over =item C<-dbr-startnum> I<#> The starting message number to recover data from. This option is useful if you have many message files in a directory, but you only want to recover a subset of the files. If this option is not specified, the starting number is 0. =item C<-dbr-endnum> I<#> The ending message number to recover data from. This option is useful if you have many message files in a directory, but you only want to recover a subset of the files. If this option is not specified, all messages starting from C<-dbr-startnum> will be recovered. =back B Only a subset of the options available to B are actually supported since many options are not applicable for recovering operations. =head1 AVAILABILITY EIE =head1 AUTHOR Earl Hood, mhonarc@mhonarc.org MHonArc comes with ABSOLUTELY NO WARRANTY and MHonArc may be copied only under the terms of the GNU General Public License, which may be found in the MHonArc distribution. =cut MHonArc-2014-05-05-snap/extras/0000755004705000001440000000000012332046112014654 5ustar ehoodusersMHonArc-2014-05-05-snap/extras/README.txt0000644004705000001440000000044410243725163016365 0ustar ehoodusersMHonArc extras CONTENTS of directory --------------------------------------------------------------------------- mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages --------------------------------------------------------------------------- $Date: 2005/05/21 21:38:59 $ MHonArc-2014-05-05-snap/extras/mha-mhedit/0000755004705000001440000000000012332046112016671 5ustar ehoodusersMHonArc-2014-05-05-snap/extras/mha-mhedit/mha-repl.mrc0000644004705000001440000000462107576305426021130 0ustar ehoodusers . text/plain text/html application/octet-stream; m2h_null::filter; mhnull.pl application/*; m2h_null::filter; mhnull.pl application/x-patch; m2h_text_plain::filter; mhtxtplain.pl audio/*; m2h_null::filter; mhnull.pl chemical/*; m2h_null::filter; mhnull.pl model/*; m2h_null::filter; mhnull.pl image/*; m2h_null::filter; mhnull.pl message/delivery-status; m2h_text_plain::filter; mhtxtplain.pl message/external-body; m2h_msg_extbody::filter; mhmsgextbody.pl message/partial; m2h_text_plain::filter; mhtxtplain.pl text/*; m2h_text_plain::filter; mhtxtplain.pl text/enriched; m2h_text_enriched::filter; mhtxtenrich.pl text/html; m2h_text_html::filter; mhtxthtml.pl text/plain; m2h_text_plain::filter; mhtxtplain.pl text/richtext; m2h_text_enriched::filter; mhtxtenrich.pl text/setext; m2h_text_setext::filter; mhtxtsetext.pl text/tab-separated-values; m2h_text_tsv::filter; mhtxttsv.pl text/x-html; m2h_text_html::filter; mhtxthtml.pl text/x-setext; m2h_text_setext::filter; mhtxtsetext.pl video/*; m2h_null::filter; mhnull.pl x-sun-attachment; m2h_text_plain::filter; mhtxtplain.pl m2h_text_html::filter; disablerelated MHonArc-2014-05-05-snap/extras/mha-mhedit/INSTALL0000644004705000001440000000015407576305426017746 0ustar ehoodusersCopy the mha-mhedit program to somewhere in your search path. Copy mha-repl.mrc into your MH/nmh directory. MHonArc-2014-05-05-snap/extras/mha-mhedit/README.txt0000644004705000001440000000130310243725163020375 0ustar ehoodusersmha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages mha-mhedit nicely formats MIME messages for use with MH/nmh's repl(1) command. A big deficiency with MH/nmh's repl is that it is not MIME aware, or more technically, repl filters are not MIME aware. Consequently, if replying to a multipart, non-plain text message, and your repl filter includes the body of the message being replied to, all the MIME formatting is included, which can be messing for binary data, like images, and for quoted-printable text. Read mha-mhedit.html or run 'mha-mhedit -man' for full usage information. ----------------------------------------------------------------------- $Date: 2005/05/21 21:38:59 $ MHonArc-2014-05-05-snap/extras/mha-mhedit/mha-mhedit.html0000644004705000001440000003414207605646776021635 0ustar ehoodusers mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages
 mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages


NAME

mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages


SYNOPSIS

  repl -editor mha-mhedit


DESCRIPTION

mha-mhedit nicely formats MIME messages for use with MH/nmh's repl(1) command.

A big deficiency with MH/nmh's repl is that it is not MIME aware, or more technically, repl filters are not MIME aware. Consequently, if replying to a multipart, non-plain text message, and your repl filter includes the body of the message being replied to, all the MIME formatting is included, which can be messing for binary data, like images, and for quoted-printable text.

mha-mhedit is designed to be used as the repl editor:

  repl -editor mha-mhedit

mha-mhedit is designed to functional transparently. mha-mhedit formats and quotes the reply-to message body for editing in the message draft. After the formatting is complete, mha-mhedit invokes your regular editor for final composition.

mha-mhedit does its job by using MHonArc, <http://www.mhonarc.org>, with a specially crafted MHonArc resource file, and by using a text-based HTML viewer, like w3m, <http://w3m.sourceforge.net/>. Of course, a tool can be developed that does not depend on these types of tools, but I did not feel like developing one and these work well for what I wanted.

mha-mhedit can be invoke by default when using repl by having the following in your .mh_profile:

  repl: -editor mha-mhedit

However, since using mha-mhedit adds some extra initial overhead before your regular editor is invoked, you may choose to define a shell alias instead:

  (t)csh:
      alias mrepl repl -editor mha-mhedit
  bash:
      alias mrepl="repl -editor mha-mhedit"

Therefore, if replying to a MIME messages, you enter mrepl at your shell prompt and continue to use repl for plain text messages.

Note: It is recommended to have something like the following in your .mh_profile:

  mha-mhedit-next: <your-editor>

This way, at the What now? prompt, if you enter edit, it will invoke your regular editor again instead of calling mha-mhedit, which will cause all your edits to be lost.


OPTIONS

Options can be defined in your .mh_profile like any other MH/nmh component. For example:

  mha-mhedit: -editor vim

The following options are available:

-editor editor
Text editor to invoke at the end. If not specified, the value of the Editor profile component, the EDITOR environment variable, or vi is used.

Arguments to the editor can be defined by setting the mha-mhedit-editor profile component. For example, if your editor is set to vim, the following can be added to your .mh_profile to have vim start at the end of your reply:

  mha-mhedit-vim: +

-htmlconv command
Command that converts HTML to plain text. The command must be able to take HTML from stdin and dump plain text to stdout. If the command requires arguments. If not specified, then w3m is used.

You can define arguments to give the specified converter by defining the mha-mhedit-htmlconv profile component in your .mh_profile. For example, the following represents the default arguments used if -htmlconv is w3m:

  mha-mhedit-w3m: -dump -cols 76 -T text/html

The following works well if -htmlconv is set to lynx:

  mha-mhedit-lynx: -stdin -dump -force_html -nolist -width=76

-linelen number
Maxium line length of formated reply text. If the orginal message contains lines longer then -linelen, the lines will be wrapped. Default value is 76.

-mharc pathname
Pathname to mhonarc resource file. If not specified, the file mha-repl.mrc in your MH/nmh directory.

Note: If a resource file is not found, mha-mhedit aborts execution. If using a custom resource file, be careful of settings that could create extra files during mail-to-html conversion.

-mhonarc pathname
Pathname to mhonarc program. If not specified, mhonarc is used.

You can define extra arguments to give mhonarc by defining the mha-mhedit-mhonarc profile component in your .mh_profile. However, I'm unsure if you will ever need to.

-quotechars chars
List of characters denoting the start of a quoted line in a message. This option affects is used during line wrapping when detecting for quoted lines.

The default value is >.

-quoteprefix string
String to prepend to each line of text being responded to. The default value is ``> '' (greater-than sign followed by a space).

-tmpdir pathname
Pathname to directory to use for temporary files. If not specified, then the TMPDIR environment variable is used or the path location of Draft-Folder profile component.

-help
Display help information.

-man
Display entire manpage.


INSTALLATION

Copy the mha-mhedit program to somewhere in your search path. Copy mha-repl.mrc into your MH/nmh directory.


NOTES

  • mha-mhedit is designed to work friendly with your normal replcomps and repl filter. mha-mhedit reads the head of the draft created by repl in order to preserve it after formatting the initial message body. mha-mhedit preserves the replcomps message header and up-to the next 5 lines afterwards that does not look like quoted reply text generated from the repl filter (mha-mhedit assumes that the a line starting with a '>' denotes the begining of quoted reply text).

    If I have lost you, here is the replcomps I have:

      %(lit)%(formataddr %<{reply-to}%?{from}%?{sender}%?{return-path}%>)\
      %<(nonnull)%(void(width))%(putaddr To: )\n%>\
      %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\
      %<(nonnull)%(void(width))%(putaddr cc: )\n%>\
      %<{fcc}Fcc: %{fcc}\n%>\
      %<{subject}Subject: Re: %(putstr(trim{subject}))\n%>\
      From: Earl Hood \<earl@earlhood.com\>
      Reply-To: Earl Hood \<earl@earlhood.com\>
      %<{date}In-reply-to: %<{message-id}%{message-id}%>\n%>\
      %<{message-id}References: %<{references}%(void{references})%(trim)%(putstr) %>
                  %(void{message-id})%(trim)%(putstr)\n%>\
      --------
      On %(lmonth{date}) %(mday{date}), %(year{date}) at \
      %02(putnumf(hour{date})):%02(putnumf(min{date})), \
      %<{from}%(friendly{from})%|you%> wrote:

    And the repl filter (repl.filter) I use for quoting the body of the reply-to message:

      leftadjust,compwidth=14
      body:component=> ,overflowtext=> ,noleftadjust

    The replcomps file includes a preamble in the message body providing the date and person who wrote the message I am replying to.

    My repl.filter causes the reply-to message body to be included in the composition draft quoted with ``> '' before each line.

    mha-mhedit automatically reads the initial draft header (everything up to the --------). After that, mha-mhedit reads up-to the next 5 lines for potential inclusion. The body preamble in my replcomps takes up 2 lines (there is a trailing blank line that may not be easily noticed above). Therefore, mha-mhedit will preserve it. The third line will be the start of quoted text. mha-mhedit sees this, and stops reading the draft.

    Now, if I plan to make mha-mhedit my default repl editor, it will be more efficient if I remove the message body quoting since mha-mhedit will ignore and overwrite anyway.

  • Currently, no temporary files should be generated. However, this depends on the version of mhonarc you are using, the type of message being replied to, and any edits you may make to the mhonarc resource file.

    It may be possible that by-product files, like attachments, could be created. If so, manual deletion of the files in -tmpdir will be required.


FILES

$HOME/.mh_profile
Profile definitions.

<mh-dir>/mha-repl.mrc
MHonArc resource file. The resource file can be explicitly defined via the -mharc command-line option.


MH/nmh PROFILE COMPONENTS

mha-mhedit
Arguments to mha-mhedit.

mha-mhedit-editor
Arguments to pass to editor invoked by mha-mhedit, where editor is the name of the editor.

mha-mhedit-htmlconv
Arguments to pass to html-to-text converter, where htmlconv is the name of the html-to-text converter program.

mha-mhedit-mhonarc
Extra arguments to pass to mhonarc.

Editor
Text editor.


ENVIRONMENT

EDITOR
Default editor.

TMPDIR
Location of temporary files.


DEPENDENCIES

MHonArc
MHonArc, <http://www.mhonarc.org/>, is used to translate the raw message into HTML. MHonArc is used since it conveniently combines multipart, non-plain text, messages into a singe HTML document.

w3m
w3m, <http://w3m.sourceforge.net/>, is used to translate HTML generated by mhonarc into format plain text.

An alternate converter program can be used via the -htmlconv option. It must be able to take HTML as standard input and dump formated text to standard out.


VERSION

$Id: mha-mhedit.html,v 1.1 2003/01/04 21:11:26 ehood Exp $


AUTHOR

Earl Hood, earl@earlhood.com

Copyright (C), 2002. This program comes with ABSOLUTELY NO WARRANTY and may be copied only under the terms of the GNU General Public License.

 mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages
MHonArc-2014-05-05-snap/extras/mha-mhedit/mha-mhedit0000755004705000001440000003645707605646776020710 0ustar ehoodusers#!/usr/bin/perl ##------------------------------------------------------------------------## ## File: ## $Id: mha-mhedit,v 1.2 2003/01/04 21:11:26 ehood Exp $ ## Author: ## Earl Hood earl@earlhood.com ## Description: ## Program to help replying to MIME messages in MH/nmh. ## POD at __END__. ##------------------------------------------------------------------------## ## Copyright (C) 2002 Earl Hood, earl@earlhood.com ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##------------------------------------------------------------------------## package mha_mhedit; use Getopt::Long; use IPC::Open2; require 'shellwords.pl'; my $QuoteChars = q/>/; ##-----------------------------------------------------------------------## MAIN: { my $mhpath = `mhpath +`; chomp $mhpath; my $drafts = `mhparam Draft-Folder`; chomp $drafts; $drafts = join('/', $mhpath, $drafts); my $mheditor = `mhparam Editor`; chomp $mheditor; my @defargs = shellwords(`mhparam mha-mhedit`); unshift(@ARGV, @defargs); my %opt = ( ); GetOptions(\%opt, 'editor=s', 'htmlconv=s', 'linelen=i', 'mharc=s', 'mhonarc=s', 'quotechars=s', 'quoteprefix=s', 'tmpdir=s', 'help', 'man' ) || die qq/ERROR: Use -help for usage information\n/; usage(1, 0) if ($opt{'help'}); usage(2, 0) if ($opt{'man'}); my $file = shift @ARGV; my $orgmesg = $ENV{'editalt'}; my $editor = $opt{'editor'} || $mheditor || $ENV{'EDITOR'} || 'vi'; my $mharc = $opt{'mharc'} || join('/', $mhpath, 'mha-repl.mrc'); my $tmpdir = $opt{'tmpdir'} || $ENV{'TMPDIR'} || $drafts; my $mhonarc = $opt{'mhonarc'} || 'mhonarc'; my $w3m = $opt{'htmlconv'} || 'w3m'; my $maxlen = $opt{'linelen'} || 76; my $qprefix = $opt{'quoteprefix'} || '> '; my @w3margs = shellwords(`mhparam mha-mhedit-$w3m`); my @edargs = shellwords(`mhparam mha-mhedit-$editor`); my @mhaargs = shellwords(`mhparam mha-mhedit-mhonarc`); $QuoteChars = $opt{'quotechars'} || '<'; $QuoteChars = "\Q$QuoteChars\E"; if (!@w3margs && $w3m eq 'w3m') { @w3margs = qw(-dump -cols 76 -T text/html); } if (! -r $mharc) { die qq/ERROR: "$mharc" does not exist or is not readable!/; } my $header = get_header_components($file); my @mhacmd = ($mhonarc, '-single', '-rcfile', $mharc, '-outdir', $tmpdir, @mhaargs, $orgmesg); local(*DRAFT, *MHA, *W3M_IN, *W3M_OUT); open(DRAFT, '>'.$file) || die qq/ERROR: Unable to write to "$file": $!/; cmd_pipe_open(\*MHA, @mhacmd); $/ = undef; my $html = ; close(MHA); my $pid = open2(\*W3M_OUT, \*W3M_IN, $w3m, @w3margs); print W3M_IN $html; close(W3M_IN); my $text = ; close(W3M_OUT); if ($maxlen > 0) { $text =~ s/^(.*)$/break_line($1, $maxlen-length($qprefix))/gem; } $text =~ s/^/$qprefix/gm; print DRAFT $header; print DRAFT $text; close(DRAFT); exec($editor, @edargs, $file); } ##-----------------------------------------------------------------------## sub get_header_components { my $file = shift; local(*DRAFT); my $header = ''; open(DRAFT, $file) || die qq/ERROR: Unable to open "$file": $!/; while () { $header .= $_; last if /^--------/ || /^$/; } my $cache = ''; my $n = 0; while (defined($_ = ) && ($n < 5)) { last if /^>/; $cache .= $_; } close(DRAFT); $header .= $cache if ($n < 5); $header; } sub cmd_pipe_open { my $handle = shift; my @cmd = @_; my $child_pid = open($handle, '-|'); if ($child_pid) { # parent return $handle; } else { # child #open(STDERR, '>&STDOUT'); exec(@cmd) || die qq/ERROR: Cannot exec "@cmd": $!\n/; } } sub cmd_pipe_write { my $handle = shift; my @cmd = @_; my $child_pid = open($handle, '|-'); if ($child_pid) { # parent return $handle; } else { # child #open(STDERR, '>&STDOUT'); exec(@cmd) || die qq/ERROR: Cannot exec "@cmd": $!\n/; } } sub break_line { my($str) = shift; my($width) = shift; my($q, $new) = ('', ''); my($try, $trywidth, $len); ## Translate tabs to spaces 1 while $str =~ s/^([^\t]*)(\t+)/$1 . ' ' x (length($2) * 8 - length($1) % 8)/e; ## Do nothing if str <= width return $str if length($str) <= $width; ## See if str begins with a quote char if ($str =~ s/^([ ]?(?:[$QuoteChars][ ]?)+)//o) { $q = $1; $width -= length($q); } ## Create new string by breaking up str while ($str ne "") { # If $str less than width, break out if (length($str) <= $width) { $new .= $q . $str; last; } # handle case where no-whitespace line larger than width if (($str =~ /^(\S+)/) && (($len = length($1)) >= $width)) { $new .= $q . $1; substr($str, 0, $len) = ""; next; } # Break string at whitespace $try = ''; $trywidth = $width; $try = substr($str, 0, $trywidth); if ($try =~ /(\S+)$/) { $trywidth -= length($1); $new .= $q . substr($str, 0, $trywidth); } else { $new .= $q . $try; } substr($str, 0, $trywidth) = ''; } continue { $new .= "\n" if $str; } $new; } sub usage { require Pod::Usage; my $verbose = shift || 0; my $exit_code = shift; if ($verbose == 0) { Pod::Usage::pod2usage(-verbose => $verbose); } else { my $pager = $ENV{'PAGER'} || 'more'; local(*PAGER); my $fh = (-t STDOUT && open(PAGER, "|$pager")) ? \*PAGER : \*STDOUT; Pod::Usage::pod2usage(-verbose => $verbose, -output => $fh); close(PAGER) if ($fh == \*PAGER); } defined($exit_code) && exit($exit_code); } __END__ =head1 NAME mha-mhedit - MH/nmh reply editor for multipart, non-text/plain messages =head1 SYNOPSIS repl -editor mha-mhedit =head1 DESCRIPTION mha-mhedit nicely formats MIME messages for use with MH/nmh's repl(1) command. A big deficiency with MH/nmh's C is that it is not MIME aware, or more technically, repl filters are not MIME aware. Consequently, if replying to a multipart, non-plain text message, and your repl filter includes the body of the message being replied to, all the MIME formatting is included, which can be messing for binary data, like images, and for quoted-printable text. mha-mhedit is designed to be used as the C editor: repl -editor mha-mhedit mha-mhedit is designed to functional transparently. mha-mhedit formats and quotes the reply-to message body for editing in the message draft. After the formatting is complete, mha-mhedit invokes your regular editor for final composition. mha-mhedit does its job by using MHonArc, Ehttp://www.mhonarc.orgE, with a specially crafted MHonArc resource file, and by using a text-based HTML viewer, like w3m, Ehttp://w3m.sourceforge.net/E. Of course, a tool can be developed that does not depend on these types of tools, but I did not feel like developing one and these work well for what I wanted. mha-mhedit can be invoke by default when using C by having the following in your C<.mh_profile>: repl: -editor mha-mhedit However, since using mha-mhedit adds some extra initial overhead before your regular editor is invoked, you may choose to define a shell alias instead: (t)csh: alias mrepl repl -editor mha-mhedit bash: alias mrepl="repl -editor mha-mhedit" Therefore, if replying to a MIME messages, you enter C at your shell prompt and continue to use C for plain text messages. B It is recommended to have something like the following in your C<.mh_profile>: mha-mhedit-next: This way, at the C prompt, if you enter C, it will invoke your regular editor again instead of calling mha-mhedit, which will cause all your edits to be lost. =head1 OPTIONS Options can be defined in your C<.mh_profile> like any other MH/nmh component. For example: mha-mhedit: -editor vim The following options are available: =over =item -editor I Text editor to invoke at the end. If not specified, the value of the Editor profile component, the EDITOR environment variable, or C is used. Arguments to the editor can be defined by setting the C> profile component. For example, if your editor is set to C, the following can be added to your C<.mh_profile> to have vim start at the end of your reply: mha-mhedit-vim: + =item -htmlconv I Command that converts HTML to plain text. The command must be able to take HTML from stdin and dump plain text to stdout. If the command requires arguments. If not specified, then C is used. You can define arguments to give the specified converter by defining the C> profile component in your C<.mh_profile>. For example, the following represents the default arguments used if C<-htmlconv> is C: mha-mhedit-w3m: -dump -cols 76 -T text/html The following works well if C<-htmlconv> is set to C: mha-mhedit-lynx: -stdin -dump -force_html -nolist -width=76 =item -linelen I Maxium line length of formated reply text. If the orginal message contains lines longer then C<-linelen>, the lines will be wrapped. Default value is 76. =item -mharc I Pathname to mhonarc resource file. If not specified, the file C in your MH/nmh directory. B If a resource file is not found, mha-mhedit aborts execution. If using a custom resource file, be careful of settings that could create extra files during mail-to-html conversion. =item -mhonarc I Pathname to mhonarc program. If not specified, C is used. You can define extra arguments to give C by defining the C profile component in your C<.mh_profile>. However, I'm unsure if you will ever need to. =item -quotechars I List of characters denoting the start of a quoted line in a message. This option affects is used during line wrapping when detecting for quoted lines. The default value is C>. =item -quoteprefix I String to prepend to each line of text being responded to. The default value is "C >" (greater-than sign followed by a space). =item -tmpdir I Pathname to directory to use for temporary files. If not specified, then the TMPDIR environment variable is used or the path location of Draft-Folder profile component. =item -help Display help information. =item -man Display entire manpage. =back =head1 INSTALLATION Copy the mha-mhedit program to somewhere in your search path. Copy mha-repl.mrc into your MH/nmh directory. =head1 NOTES =over =item * mha-mhedit is designed to work friendly with your normal replcomps and repl filter. mha-mhedit reads the head of the draft created by repl in order to preserve it after formatting the initial message body. mha-mhedit preserves the replcomps message header and up-to the next 5 lines afterwards that does not look like quoted reply text generated from the repl filter (mha-mhedit assumes that the a line starting with a '>' denotes the begining of quoted reply text). If I have lost you, here is the replcomps I have: %(lit)%(formataddr %<{reply-to}%?{from}%?{sender}%?{return-path}%>)\ %<(nonnull)%(void(width))%(putaddr To: )\n%>\ %(lit)%(formataddr{to})%(formataddr{cc})%(formataddr(me))\ %<(nonnull)%(void(width))%(putaddr cc: )\n%>\ %<{fcc}Fcc: %{fcc}\n%>\ %<{subject}Subject: Re: %(putstr(trim{subject}))\n%>\ From: Earl Hood \ Reply-To: Earl Hood \ %<{date}In-reply-to: %<{message-id}%{message-id}%>\n%>\ %<{message-id}References: %<{references}%(void{references})%(trim)%(putstr) %> %(void{message-id})%(trim)%(putstr)\n%>\ -------- On %(lmonth{date}) %(mday{date}), %(year{date}) at \ %02(putnumf(hour{date})):%02(putnumf(min{date})), \ %<{from}%(friendly{from})%|you%> wrote: And the repl filter (repl.filter) I use for quoting the body of the reply-to message: leftadjust,compwidth=14 body:component=> ,overflowtext=> ,noleftadjust The replcomps file includes a preamble in the message body providing the date and person who wrote the message I am replying to. My repl.filter causes the reply-to message body to be included in the composition draft quoted with "> " before each line. mha-mhedit automatically reads the initial draft header (everything up to the C<-------->). After that, mha-mhedit reads up-to the next 5 lines for potential inclusion. The body preamble in my replcomps takes up 2 lines (there is a trailing blank line that may not be easily noticed above). Therefore, mha-mhedit will preserve it. The third line will be the start of quoted text. mha-mhedit sees this, and stops reading the draft. Now, if I plan to make mha-mhedit my default repl editor, it will be more efficient if I remove the message body quoting since mha-mhedit will ignore and overwrite anyway. =item * Currently, no temporary files should be generated. However, this depends on the version of mhonarc you are using, the type of message being replied to, and any edits you may make to the mhonarc resource file. It may be possible that by-product files, like attachments, could be created. If so, manual deletion of the files in C<-tmpdir> will be required. =back =head1 FILES =over =item C<$HOME/.mh_profile> Profile definitions. =item Cmh-dirE/mha-repl.mrc> MHonArc resource file. The resource file can be explicitly defined via the C<-mharc> command-line option. =back =head1 MH/nmh PROFILE COMPONENTS =over =item C Arguments to mha-mhedit. =item C> Arguments to pass to editor invoked by mha-mhedit, where I is the name of the editor. =item C> Arguments to pass to html-to-text converter, where I is the name of the html-to-text converter program. =item C Extra arguments to pass to mhonarc. =item C Text editor. =back =head1 ENVIRONMENT =over =item C Default editor. =item C Location of temporary files. =back =head1 DEPENDENCIES =over =item MHonArc MHonArc, Ehttp://www.mhonarc.org/E, is used to translate the raw message into HTML. MHonArc is used since it conveniently combines multipart, non-plain text, messages into a singe HTML document. =item w3m w3m, Ehttp://w3m.sourceforge.net/E, is used to translate HTML generated by mhonarc into format plain text. An alternate converter program can be used via the C<-htmlconv> option. It must be able to take HTML as standard input and dump formated text to standard out. =back =head1 VERSION C<$Id: mha-mhedit,v 1.2 2003/01/04 21:11:26 ehood Exp $> =head1 AUTHOR Earl Hood, earl@earlhood.com Copyright (C), 2002. This program comes with ABSOLUTELY NO WARRANTY and may be copied only under the terms of the GNU General Public License. =cut MHonArc-2014-05-05-snap/logo/0000755004705000001440000000000012332046077014320 5ustar ehoodusersMHonArc-2014-05-05-snap/logo/mhonarc32x32.xpm0000644004705000001440000001413710251713555017205 0ustar ehoodusers/* XPM */ static char *mhonarc32x32[] = { /* columns rows colors chars-per-pixel */ "32 32 247 2", " c #250400", ". c #280600", "X c #2c0900", "o c #28090a", "O c #2e1212", "+ c #330b00", "@ c #331300", "# c #32100c", "$ c #341800", "% c #3c1301", "& c #3b1c04", "* c #3e1b0c", "= c #391913", "- c #3b1d1a", "; c #3d2016", ": c #431e03", "> c #4b1e00", ", c #452103", "< c #43210f", "1 c #49240d", "2 c #40221e", "3 c #44281e", "4 c #4a2414", "5 c #522300", "6 c #562b06", "7 c #532e0c", "8 c #5a2b00", "9 c #502711", "0 c #562c18", "q c #5a2c13", "w c #573500", "e c #523213", "r c #503019", "t c #432522", "y c #442925", "u c #462c2a", "i c #4b2f2d", "p c #4e3020", "a c #4a302b", "s c #4a3431", "d c #55362a", "f c #55382b", "g c #5c3c22", "h c #543931", "j c #672600", "k c #602f0d", "l c #633000", "z c #6f3601", "x c #6b350b", "c c #6d3902", "v c #732d00", "b c #723b02", "n c #7d3704", "m c #5f462f", "M c #5c4135", "N c #5c433c", "B c #764608", "V c #744f02", "C c #7c4804", "Z c #735101", "A c #7b5700", "S c #7f500f", "D c #7d5e00", "F c #624727", "G c #664f2e", "H c #644f35", "J c #62483f", "K c #694a34", "L c #684c38", "P c #6c543c", "I c #72593a", "U c #634b42", "Y c #684f44", "T c #665243", "R c #6d5443", "E c #6f564a", "W c #6f594c", "Q c #6f5851", "! c #715649", "~ c #745c51", "^ c #725d59", "/ c #716047", "( c #786440", ") c #7f6b4c", "_ c #756354", "` c #7a6456", "' c #7a645d", "] c #7f6854", "[ c #813700", "{ c #823804", "} c #8a4300", "| c #894e00", " . c #865302", ".. c #825c03", "X. c #885307", "o. c #87571f", "O. c #924200", "+. c #974a00", "@. c #994700", "#. c #9e4d00", "$. c #925f0e", "%. c #866000", "&. c #8e6b00", "*. c #966e01", "=. c #996103", "-. c #937100", ";. c #8f622c", ":. c #9b7038", ">. c #a25200", ",. c #a75a00", "<. c #aa5300", "1. c #a95b00", "2. c #b05700", "3. c #b75f00", "4. c #ba5d00", "5. c #a67d00", "6. c #ac7205", "7. c #b56100", "8. c #bc6500", "9. c #b47402", "0. c #b67c01", "q. c #b87300", "w. c #be7e00", "e. c #806b4a", "r. c #8b6a49", "t. c #826b5b", "y. c #86734b", "u. c #847255", "i. c #887656", "p. c #8e7c53", "a. c #9e7640", "s. c #907458", "d. c #836d61", "f. c #887465", "g. c #8f7e76", "h. c #c56400", "j. c #c66d00", "k. c #cc6500", "l. c #ce6800", "z. c #c47b00", "x. c #c87100", "c. c #cc7d00", "v. c #d26500", "b. c #d16800", "n. c #d96600", "m. c #da6b00", "M. c #d67a00", "N. c #e57100", "B. c #e87100", "V. c #ad8903", "C. c #bc9b00", "Z. c #988a62", "A. c #928275", "S. c #988576", "D. c #9b8876", "F. c #a1956c", "G. c #b59e75", "H. c #c58202", "J. c #ce8100", "K. c #c19d01", "L. c #cb9200", "P. c #cf9800", "I. c #d28700", "U. c #d48900", "Y. c #de8100", "T. c #d29a00", "R. c #da9200", "E. c #dea000", "W. c #d7b002", "Q. c #dab301", "!. c #deba1b", "~. c #d8a023", "^. c #dca62b", "/. c #ddbc29", "(. c #dcbe31", "). c #e39c00", "_. c #e89800", "`. c #e3ad00", "'. c #eaa400", "]. c #eeaa00", "[. c #e0b500", "{. c #e3bc00", "}. c #e0bb13", "|. c #f0a600", " X c #f1a900", ".X c #faac00", "XX c #f7b100", "oX c #fcb200", "OX c #c9af59", "+X c #ceb44b", "@X c #d3b640", "#X c #c6ae68", "$X c #c9aa65", "%X c #c7ae71", "&X c #c9b260", "*X c #c8b372", "=X c #e7c601", "-X c #eac300", ";X c #ebc40c", ":X c #ecca00", ">X c #e8c110", ",X c #e8c31c", ".l T mXDXkXkXDXDX_ 8 #.#.o.a.z G.' t J mXDX", "DXDXDX] O [ m.4.,.h.B.N.+.F MX! d DXR } m.B.h.,.3.m.O.O R DXDXDX", "DXDXDXDX! 4 9.].XX).j.k.B.4.r.N t s.1.B.v.j.)..X].z.9 M MXDXDXDX", "DXDXDXDXcX3 .'.|.).T.V.h.n.b.% . h.m.h.0.P.T.'.].=.; dXDXDXDXDX", "DXDXDXDXDXt.o *.:X1X2X4X.+ . #.L.:X4X3X2X b | >.k.m.R.w & L.m.l.<.| b 5 # fXDXDXDXDXDXDX", "DXDXDXDXDXDX8X: U._.U.l.n.z.Q.7 * W.H.v.b.J._.R.6 A.DXDXDXDXDXDX", "DXDXDXDXDXDXaX* q.U.R.J.z.W.}.I L }.Q.c.c.R.I.z.1 qXDXDXDXDXDXDX", "DXDXDXDXDXDXDX' c '. X).`.-X,Xf.d./.:XQ.'.].'.B Y DXDXDXDXDXDXDX", "DXDXDXDXDXDXDXpXS oX).|.[.1X(.] U @X2XQ.].).oX=.wXDXDXDXDXDXDXDX", "DXDXDXDXDXDXDXDXL 6..X`.Q.3X+XiXeX&X3X{.`..XH.g DXDXDXDXDXDXDXDX", "DXDXDXDXDXDXDXDXg.9.oXQ.=X3X#XDXDXyX3X{.[.oXH.' DXDXDXDXDXDXDXDX", "DXDXDXDXDXDXDXDXeXB '.]orRY)(CVm'Pj@k6ANx>ޏ, ZAӄF[.cpÍ`@iAsl8l#c# 筧\[_jDܬ9ߚv񙻷y|t|\}U0jumm ͥ-&=9Ɲgڕ8'nڊo]X\;+gF_|=TZRڥ#@y6[7іՄ@S~^(q4s%F޹h|EIL`?)ے cc%5OR1Bི醡=_pH~JKq>7n_I? XTQx9FVk~>Cfӹxw% 5ӦuM˕UoLbd~Z0* ߧ OjNls16_ɍQ ,[v. cUHt&y˱乙Wsخo{y腖!G{>yt]]%ElzvO_QǑA͞~xc^C3cZvGoQۡc9OPIENDB`MHonArc-2014-05-05-snap/logo/monicon.png0000644004705000001440000000075507451276301016500 0ustar ehoodusersPNG  IHDRFBHPLTE$4-#&-W.OoKf2 _E1$n$HT'SbiUژƿ4tRNS@fbKGD ֘ IDATxev ED@O{]C[k$  ESڔWF+떒 R m̂'=NpSI cR2{\XVPxȤ_ 2rJ$bin:Ԡ !ОYH!a  S0uw9r9նnvxVX?F^}}jk)ۣ0}ְsɌP4~tmd|2-? EEjN.tEXtComment Imported from GIF image: mhonarc.gif.8IENDB`MHonArc-2014-05-05-snap/logo/index.html0000644004705000001440000002314107537547343016333 0ustar ehoodusers MHonArc Images

MHonArc Images

Introduction

This document provides the usage policy and creation history of the MHonArc butterfly and related images.

Usage

Since the various butterfly images are original creations, applicable copyrights apply. Use of these images are restricted within in the context of MHonArc. For example, it is okay to use the images when making a reference to MHonArc, but it is not okay to use these images in other contexts unrelated to MHonArc.

Creation History

The Butterfly

The first incarnation of the MHonArc logo was created back in September of 1994 for the first release of MHonArc, the compatible successor to the more utilitarian named mail2html. The name mail2html was non-unique, so I knew I had to come up with a unique name and a logo to have the program standout among the others like the comparable program Hypermail did (who says that free software does not need a little marketing).

My mother had an old animal encyclopedia set, so we went through it in the hope to get some ideas. But nothing clicked. So I played with related terms like "MH" (an MUA that I used and the main reason MHonArc exists because there was no program that supported MH mail folders), "mail", "archive", and "HTML" and thought, "What animals have names that have letters/syllables in common with those terms?" Then it clicked, "Monarch." I decided to move the 'h' to follow the 'M' and use a mixed-case name to make the spelling unique and to imply some meaning. The capitalized letters stand for "Mail", "HTML", and "Archive." An alternative meaning for "MH" is to represent the venerable MH mail program.

My mother did a line sketch of half of the butterfly based on a photo within the encyclopedia set. With an Atari MegaST, I scanned the sketch with a hand scanner. The image was then colored using Degas Elite and mirrored to make the complete butterfly. Some artistic license was used in the color choices since monarch butterflies typically do not have the kind of variations shown here within the main red/orange/yellow part of the wings.

All the pseudo anti-aliasing effects to smooth out the lines and edges were all done by hand, pixel-by-pixel.

Since the MegaST color-mode only supported 16 colors, the image only has 12 unique colors, even though it appears to have more.

All other MHonArc images are derived from this image.

MHonArc Stamp (version 1)

The stamp border and lettering was done with XPaint in September of 1994. I could not use my Atari MegaST since the maximum color resolution was 320x200, which the base butterfly image mostly filled. The transparent background version was done by using ImageMagick. Most of the main images have a non-transparent and transparent background version, and for brevity, I only display one or the other since the background is all that differs.

The number "1521" represent the main RFC that documented the MIME standard at the time the image was created (which has now been superceded by RFCs 2045-2049).

The Version 1 stamp was used in the table-of-contents of the Reference Manual, but was eventually replaced by the Version 2 stamp in 1998.

MHonArc Stamp (version 2)

In July of 1998, I had access to a system with Adobe Photoshop (version 4 I believe). So I played with it. The results is the second version of the stamp logo using some of the visual effects capabilities in Photoshop.

If you are wondering, "Why didn't you use Gimp?" at the time, I was not very familiar with Gimp, and I believe Gimp was in its pre-1.0 stage. I now use Gimp for all my fancy image editing needs.

This version of the stamp logo serves as the main logo for the homepage and the Reference Manual, and has done so for several years. Version 1 of the stamp is no longer used and only exists for historical reasons.

FAQ Logo

This version was generated by scaling down the butterfly with ImageMagick and then making the background transparent. The anti-aliasing effects of the scaling provided a nice side-effect of creating a blue halo around the image. The halo helps make the logo useful on any colored background (especially black).

Graphic Title

This image was also created using Photoshop in '98 by using the the text "MHonArc" as a stencil cut-out of the butterfly. The graphical title is used on the homepage.

Butterfly Background Tile

This image was also created using Photoshop in '98 by having a layer for the butterfly and a layer for the bumpy background with the butterfly being mostly transparent. It took me a long time to finally come up with a graphical background tile I liked. All the other variations and styles I tried are not shown here.

Note, this background tile is actually a 75% reduction of the original tile which was the same size as the butterfly image. This was done to avoid any alignment problems when the regular-sized butterfly appeared above this background.

The background tile is used for the homepage , and the table-of-contents page of the Reference Manual.

Icon

This version was generated by scaling down butterfly with ImageMagick. It also has the touch of blue.

This icon is used throughout the documentation and the homepage.

Navigation Icons

These images are the navigational buttons used in the Reference Manual. If I remember correctly. these are also done using Photoshop in 1998 when the Version 2 stamp was done.

Initially, large versions of the icons were created to make it easy to edit and work with. Once done, I used ImageMagick to scale down the images to what you see here.

The only thing borrowed when creating the icons was the little house for the home icon. The house was taken from Netscape. I have not gotten in trouble, yet, for doing this. The home icon is also the only navigational icon where the butterfly appears behind the symbolic graphic.

Powered By

The "Powered By" logo was contributed by Ian Richardson in the Novermber of 2000. I do not know what software was used, but the Icon and Graphic Title were used in its composition.


$Date: 2002/09/11 05:04:35 $
MHonArc
Copyright © 2002, Earl Hood, earl@earlhood.com
MHonArc-2014-05-05-snap/logo/mhonarc16x16.xpm0000644004705000001440000000451710251713555017212 0ustar ehoodusers/* XPM */ static char *mhonarc16x16[] = { /* columns rows colors chars-per-pixel */ "16 16 106 2", " c #571f00", ". c #522200", "X c #5f2501", "o c #572e1e", "O c #582c16", "+ c #4e3530", "@ c #543d37", "# c #6f2a00", "$ c #762f00", "% c #6e461d", "& c #734216", "* c #78461b", "= c #68573f", "- c #7a4b22", "; c #765c2c", ": c #765e35", "> c #675740", ", c #7f6352", "< c #834400", "1 c #874800", "2 c #855700", "3 c #855902", "4 c #8f5e00", "5 c #9e4e03", "6 c #825f38", "7 c #876103", "8 c #8b6202", "9 c #917101", "0 c #85623b", "q c #ab5a1e", "w c #ac5f24", "e c #ac7511", "r c #a97519", "t c #bc7700", "y c #a66c27", "u c #a36d2a", "i c #846b5c", "p c #896f5d", "a c #9c7443", "s c #9d794e", "d c #c65800", "f c #c95b00", "g c #cd6800", "h c #c37d00", "j c #ce7800", "k c #d06d00", "l c #d37d00", "z c #9c8132", "x c #af9400", "c c #b19500", "v c #a4882f", "b c #978274", "n c #9a8b7b", "m c #9e927f", "M c #b9924d", "N c #bb9550", "B c #b19c68", "V c #b9a362", "C c #d58203", "Z c #dcb921", "A c #debe2c", "S c #e39300", "D c #e69801", "F c #ed9f02", "G c #efa003", "H c #e9ad00", "J c #e7b100", "K c #ebb300", "L c #f1ab00", "P c #ecc002", "I c #efca00", "U c #f0cc01", "Y c #ffd602", "T c #918180", "R c #9b8d8d", "E c #a5989a", "W c #a89b99", "Q c #b6acad", "! c #bab0b2", "~ c #c1b6b6", "^ c #c4bcbb", "/ c #c1bec3", "( c #c8bfc0", ") c #cac1ba", "_ c #d0c7bf", "` c #cdc7c7", "' c #cccbcb", "] c #d4d4d2", "[ c #d7d6dc", "{ c #e1dee4", "} c #e9e1c4", "| c #e6e1dd", " . c #ece5d2", ".. c #e2e3e4", "X. c #eae5e1", "o. c #eae7eb", "O. c #ede9e6", "+. c #eeecea", "@. c #f0efec", "#. c #f2f0ed", "$. c #f6f4f2", "%. c #f6f9ff", "&. c #f9f7f4", "*. c #faf8f5", "=. c #fefdfd", "-. c None", /* pixels */ "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.", "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.", ") W E | -.-.O.-.-.O.-.-.X.E W ^ ", "@ # y > n { -.-.-.-...m > u $ + ", "` % M 0 & * ' -.-.] - & 0 M % ^ ", "-.' o j C f q i i y d C l O / -.", "-.-.R 2 Y P D # S K Y 4 b -.-.", "-.-.o.: x 9 3 . 2 9 x : { -.-.", "-.-.-.i < 5 g 4 3 g 5 & i -.-.-.", "-.-.-.R t G J v z J G C b -.-.-.", "-.-.-.{ r L U V B I L e [ -.-.-.", "-.-.-.-.s H U } .I K a -.-.-.-.", "-.-.-.-.^ 7 Z -.-.A 8 ~ -.-.-.-.", "-.-.-.-.-.! ) -.-.) Q -.-.-.-.-.", "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.", "-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-." }; MHonArc-2014-05-05-snap/logo/mhonarc16x16.ico0000644004705000001440000000217607533544061017162 0ustar ehoodusers h(  a!,cNyCtubhuw/2}t^lDOha[mMHRc5^vsY$U PXp,\vW%_W^.Wx[Z]o[k$_X},XþFmM;bCsFx"KzBs8_PGo7=T*o'l@Wgx?Wh*m/v05NDf MHonArc-2014-05-05-snap/logo/mhonarc.png0000644004705000001440000001512607451276301016463 0ustar ehoodusersPNG  IHDR$&$PLTE$H$mF$ڍmc58uIDATx흽wF ؛n0C.̀AڍI6΁ZK:ۍԸM*ĕYtݏ|%%;sI`5w.p+c?z7A+5PV/Ai]-?j Wp,OlYײ\Q9:+]2O[a$E#Qč @ъ#!V_Nx)"|9?jWV0*~/sCW0,$i|\~B_v**_-Q tHcG_:X:nGB՟˫B~߫zxa8˭?$!'Q*_+uY G'!Ar}ϯg_O:mHQhPHyV` {4Q:uFct@G#o\Plz}$sP ~$B٬2 ~` 0&yCxlR;:`Lx|7ig&T%Hy )@(4HoMJg3*d˰~ tr0 ߲ ;׫96@韃_|ߡrgUSN.oiRϠ>u?o qW'iсQw RSJ $' op\@tfhXdeS6 nDQ_8fƇ?HCIs =1"=Po/AحM}؃cÞw#APr4iLYçI)&[f]Y~YuևSR3%e&Oa=|J 2%!A~]2)YQ\N>!> )*Q甽UڐKB8a)+طg ]sZmƔh$AjAu|6|I2BؽV q]"I_#DNoe"%i2 =?AMW 4<ܐ擄!dgy ,& كimtnf3تu5Wzƽh1}鏉-V)`ZZ\"$0`-V|R)?`{i?FXp}H=g1i+mS[id> .X M, -S[ֹdq[gO73T1s[Ye$(|9=r3sTK4Mf!B>*%^M_ɥKDH#I&EW0Wgwd^Fu%vTX.@*+RIG-dTq4,#e8bxunj$:w:,~q*\m$ !vwzNlJnAo)M9ܟX0ZaG⺀|%58:Tr Ř#/eA(<(&:tHX..qv1hHs[$*!+E׊)QDP1ձL̀#Pet0n|p Ҙ<[_Tb Kg_(]?KAA  tC-"NŶ y$Ui]XBwu&ǁpVd"R?- :PJ.F.u/ T.$&BмҭRi)e0s) &UT.ZMɚ ( >Dѕ}(͂BL̲:T4DƋxD*]-QL#K]Pt"굊b=Rv ʮxȧew ,RCCf t%L#9"*h*Qq)RwY0=+0tZ͐ [b2Loth?' $$DֆH#->/L1-HKRxLsLe$ ^PS,+\TP]썪GȤb3m`c*!!QV=YV % Sy`! Dpʐ{#:J. jv!퍑 {q47hsHW!sew%Zw=Ҙr8Q.j'jug`!ep#E!ĵu RjLzr# !(pV"^qL)M.9DٺDm2%H4P1J+0mH'Ji[oa RIg ^=-Fj )F\DA6/e2"B h)j%I=4`5R:JMEI4𐪦VHCDZ( SF+[Bp`}QkGSᴭ)`nUr)̔}tmxK$:I%7 4TdVt.޵:H]6E2wҷjŜuF__IW(<йjI_~* P' #h"K.ޓ B#.dWvɩe"\h%܈m#/{OYKx<5(48hQה 44."7GGh:9/R6ٿAOf ,HVn{'#D_5 ,TeBT\r$ރSomAUۛ`yg P,C-_l>?ȈF̬e/XV7@DE"-6[V.ByݐvȓMz@-/#(TDE餖4z5׺Գ DK@~KZw>w^W/.8>bgq^֜ nĵHcE.a?\H"y_ΈR:,j-~HPN}8Eic}iQ(/$ԛI9()Tێ}.Hc4=rxף 3'jFj4F{H r"K.wD"U{3~V\Z};"9{HE4?+ʻ#%g9!MJz{vƊ>*in{Z4:ޗ~/B A.b +SSUpHpۘ7-wkޔ_fWP}!-D^ۿL:&=Z8"z3 s9x$98̛\Cso8Inu-mߦ\?5Ez$Kd`FeİOY{CJ͕ǬDR1lst|`i4`ƦtfƇ)&0e'9c2{#.*7Ar"Yt#*\1mA1' Ra7cۚl$  d`>0V$ofNv}O(&AI޽!4m>3L5H#޷e׺=PbH|0yNtzER2t$kLNER͝N2ޅa zW)E>9HguljvSi>OVqM,*ؼЧϝ%74K&? '?At;]hn:uIpOǶSNM‹z fsX)>6w dñ-M'J1LRMiK~XGbIOift#9S Cj[o}@PgP|,&VЊZ |E#9ԪʹTsjMwYZ2F}je.=>V,32a[/(#rhV8<,1rBVe?SuA;z WzC|K͉~,n-@AOSg?Bֿ~)B-]T\Cr}ٯOb2&BC=?~A+.u[P%^d4^^&AKUN>fǿN]P ҘNǎ~ AG {Rz_gh&t]:'AkfP!NW(}y;tE<|%ܴqE/H[+d8,fNUPnؠ*2TVor4D֭6Һ){ w*ۮp2zN&6c0 ]xP9X TcdXqat+ ༗v aߦB̖St#!S@yݩ z` f$} Kϊ5ԅ;~cUÌƣ a&JO)&ӈǺx(lZ*N/eQ @hvoxe<s%Pgl:(@)v (n:e@E*ѷt=]Ă[#8t`!wUwss0!){&XQxmA?9cSGEk&Ż'G398ZU~!8 ,.\7E~)UM=x CSߪvqhڇ:*&`3]na eJ ΪCXÚw4-v' -9#8/jviga^A,絣\qh$n QY RgI]ĒOj QHЉtfy  4;VoHU+/~$6%-ҜvDN@;BƯ,$);zD+%Uwл̥d t:XEn!жWz( ,7P3u3$iJE2iġd@FHw 3խjCcӣ4Dzb>Nic\r?OU-LN|kv3g!&?s8 wgsDAx0n/a[S=#0qAySwo>?_H84iĒ@`-(Ujc[!EC.FS=d HZ%AoJA➘^CafWu}CJ֌WUF ABH6}jaSb)t0sHzTFWƪt*tewSrA[{v:DݺԂ#8i9h9ս{.ƕA: L5 -f>#h:g~A?C*L|XniI#V:?m),dJJD^u)K≔@ ` L G셲B5ykO#Mxҥ6C| 0C2 m@ޜB?1F/t́ڱסnw/pv-LܛMFGh "Z.퇭(ZdH{*Q*/z\L97%5G($h[P 9xe ]ƒq,DCj8 ]{B?uI12kѤFbbA~зx`I@E+LD^Q _+p^vT,aB3dbT )|.ّ(-4)%d9)i{*Y~toM!&楛L% qJً#t4dF/UJ] AR-S<|՜-]nB䘳2%+jI7r0 O `H=4=eΞ A% ".i/ u <8sUbLmXbY͜ u-y:ffD:{` ,uPL:.H]Wt)iSexZWrW`}ӸsȜ:qB+@TXsV*uv"S[2CyRh _QqNh#DQT_ 0S h?_٭X9{:"OЄSιY ݢQ.JȈt]2eg`|h?EMЏ[ba 㒥~UkAwq0MbI*>-SgGUڱ4X-QQ.|.,>h&^ḰV%z#F"譿XN^Q 셑˽dق~KT+_'ɗCǴrh+4xQ`B3FKc.riW h~hReօ G04[,"5Stz3Ef7nٛ <`/O5a.#!lݨ VO& n;ڱ[eݽp;B5׎]Nh9eӂF'ĮNJE2Dz6L-<)'iY>FR׫}o]EA z RBz`~} b_ Sin;W$jv8{ZӛA{g1JI;ӏ8oM}JvR_oゴqշoe~ZIl镹fBôѢzW$o0pqwZFaL/ X3 )ti0k w"4 >AS@B6ƙ扺ۍNǖ#1x[ړQ>)erKg&҅ۂGc9≱%Xͳh5{GVۻx*3x&4 Dyl9fґXQ=Q:TY|&ڱFQd%FŸ&XjKW8R\\R6*4Dk6ZㅮJ;J?P'JlNVJN}v-J/,ttWvoY,4)n/^_{WHzl5xE0kKB*膁n*n~{`ucShmɚK%8R'14 KΈ7zG]ϲ9tгvUa VVB7VkCk{ꁁ1tGAek t,姡tB10HB uGStD(.> ^瘻5y,WwCo)}{ߦ7>^[A][90p5hLrZDe Uz3ځa #r0K\/hIDmL7U"max1q)h-Xx8bgc9/`:숯bڭ+=qi :Bo7JZpR360>g?q3x kk e<TF_t)ۃx =02-16G&DmBdgԄ5VϘmڕ&/je\b [7sUF.q'J4g([wXrqtU`G,2;j_y=P|;Gd#͇ꇉ.hn!]\kCǛ d2oCy<,;ۀnFz+)eWEhˠW]>.XgIiby}JKF<6Kz3&fC@7P 3(Л6c 9x[cԡnXFBursl' |`cKf@J:X8H#j{[0E)eWIlh|hCA dk1W>s;#]}e83 ({eܭ߳-4ꮽ TʿeeKgn0/kޣzD+Exk(HkYġ x#.+ʕx@XMcGYL/iA=YoT[H4e<_WA_4?m4`a'ۙ]ƪU κ :zO3]hLOC t3FASZ}jrNzW-. s_# Ѝqc^ȵ 6vYC5} A1hIt خ7N5tӷih| Z=\ўbWԗ56 C7z2+ո;v/kC;75#*dBz̓DNˏzT--+ B d+ќ~캳?)_ClICʢP7 J~lScL!2/[+6XRun]#C\zd??@‚Vqm7n' C6ǩb җg)JdC;;uhŝ1,*`V:j'E]* ,V,6ӿ{N.'Sk#MgAM\O}.}.hwngv|'vn٧G ]IENDB`MHonArc-2014-05-05-snap/logo/mhonarc_t.png0000644004705000001440000001505307451276301017005 0ustar ehoodusersPNG  IHDR$&$PLTE$$H$mFmڍ6tRNS@fbKGD nIDATx];sG#TnX.&aIiiȤ,"%$,l%PmvBF28ьŸ=n& t}^}ΙV֍0i[] E6H0iNB)46\XP>3$Bʰ,2/Hf}<3GD)$nTݧo,PgX=#aHIHO/?8NUJIF;3 !_LGk>L>|sU]!j"Tc^C!#j<P/F-ɺ/T3ooo((MՔ]Uy}8?x(o~ʱP.#$##7{A=]Z3""ɵ~IIfa {$Q%:q6cD5\nc^,o9 9XZjސϏ0UImV+ 2'4l oJM _2~{X}3'`jm#xb}c3T(  *'Զ@@pKK`@'A腘Jl/D:T{:hswKof/Q C"0}Ucj?֤YBSlytϼJ5d^X?l7 .ȩUHL:P+=Eaiu(q\9"F7>lx}#$8/]r ?Ǖ^H/x4v ~2)3h@cZ]z3X{|7m&[c~<(`ews/ZpCK4vP`1,L!6:Źs"Yǫ`8)V|2.?`{i\簿FXS>EOI?o) llx.LUfXM]N{I_`(-hG%'՟68eɉSR!mctwbtZN YKˤ[2,w6I)7j.-"Łs{lB/9I{3Az6ZoG$Nrlj&4~ } =O׏TQ$>50\:H|UKInR-9 *|2\"&zSHt3NI<=p7? e]h1nDWG!J.v߰&-0Vbmg%y)a1U#6IP'f`!Q{N􎘤爮cC|U?,h| 3EFU$XAdfSR*3\ɇgVnS ~[2LG{WP{3AL:Dv| ECy\Щ$cVSɭ,"siB?`"!\[]93Jٕyy?T 8&|NKMD#y\z,@M :Llz 04Jiur ;\𒽊ŭ :Ƣe RA5HYBT ,W#+|CIIH3:S ň7SADl2q2lؔ.>.r; e+{NU!V?AEC`w NH;/ !0EH-K-%^As",xK_9`qgA)B%&Q=rEIn_dA4%.`Ħ\x!zeRPS*?w3E XTS<hi6'PH}%DG43 0KqDؿjcDbLbN'1RV N6E=ΫD'\H*$ztfv1k;2P=Q:),f*,!0FUq Sew3"K@j$X<@杊Ȃ]BT5 e5KFt`_~(Vʛ{%Dޜ>vw~ ʉXJnRZ=1YHDtA(2+a.cHqh)QLQSn8<'LCJ vpX'ChNnq0FLY4 "G҂g$ut=a*CD3jey3 Q (*vڧIhRS "5 @!ٓKz%$$~a/ϢAAЕ ~7"!ZG~TEɯV " iK:J\Hr?&yAtj9UvW͞ YMdx"ZiHҐ!>Ed ρZ%r*_Q >@gR`A:S#䠟`Uwyg֫NL)EרbWBH5bHקJi IKGs|NxH O1p}39@!E^`zM9|ǢP!X!I|ǶtΨPpCQ$*xHU*>B*D ,tKܿ5Z R8?jhH/⎵>^R,ĭB. ӭ){Gک=nWS%SݍJ<_e{%ֺ ձ@wVqŻwwp'An J~c"~]$q_N\"=ґE 󠮁G{=K.3t Spl7 c,\)D܈hm#/{2Ȝ\xꮪJLaϟfP9[.}EaHJ( z_Y MM=ZOKԽLo q~}哓$"ݯoUj0TUΦ5 5tg6E$ާi\hg6Ah^j՛;wW-Y§?\6YʎP}u$:}>SIm_BlN"(|u-с\doF?R &JPQ85!^L.  gkBj^W/.(dHO(W?=­9ǧr]D{(]Z!I]>}9K( IlBKXۏ9ܢ Qi(m @'hULB˜B{`JHgVf9}5(χèz 0};k!ϰ‚˕_ ,9^:C.OMziIr\}ZVbZH$/I.$V&$ rLsYΰȦ9jS\.B'w8+ a=$L8  5R.$W M\ E s(a.~K!zHD~t͂kE(9wQ)B[tȅ,&]PoRNuIjy6<[(j )SH?|pbDYOr>:r=H-w__XH][yZ+^^0>")B"{ _ z?ZuE)$d)Ajb-$?:ss& >DŽV ^27FqOnH׹vFzK]aSx#+]ܤ+w;V00;B8VY+i#9!$V=b׍ #h49 %KX4Z=<RkK'a]@$ gz42vZjmTuԝ?\9M⃋;vHAGu]IN#*hKU ǐkӔ* `/'IPd$(;7 ~xtINH0MFnJ'f|XhSv3Q&#bݤ2 {>ۅdYݰѲs!?>qJ&`Gym <%g +9ؽφks̱i18XO+q7+ VGdיmZ6ZZfH-޷e!1\kiCJO7U3.뇮2FH* \ɝZN2օnNZZ]:ˑGmK XH'٨R n!1^?c M7AǢӳ 4޵h=^UszS /ߑ(kp4*~H7t7&%:=t5GjܢDɽ =Q I"k(9~trePAw{3p< dap'#ժ[4sf sR0,nic`/RNhkKDvKtCL+dFJdٓWMx@5ݗS7LӼr>ٴG/Ő8Kގ9jGd^١_{Us/u>˜kwĿM_}r\HqM.$ܢz9Xgʂt|%gyIӏGyYXb5nk!AJbgzr0Rę\wvrn 0C<+/+ i-@ȩ@ZDŽ)&LDE >ʻb cz;0`gwrR Mpqjr&{8UޏS_9uKWcPQǹyϝFb7.%!h--UڶopL!=R*-(U)Sdl`B=poS^mWje*)7RgSA@zUw 5ϛcIju(JHi߲X T^ .5vS!VՒA<<FJGKQTZX[QVYXY_UMdabklssqilq|w~zso+acfkhmwTxgwmΌȅҍ،˛™ڍڔޗ֒ǟΤҠ׬ܳڵWShxgxs`'_,f,c7l-m)h2n4s/r+z%})~%~2{Ir'*,*%'(#%Ƽµșѫݬo`tRNS@fbKGD︰^IDATx[CO03LN$@ {X%ϔԅM(Zx (PPDA*HHUWQH\Q{V{ ,ݍ/"*rMԯ~Z1}wU#CkV Sy;|;082;c9ݙިpG +L!spxޡ)Xj#m S+G 06b(CkjGGMl(:Hvv [\̔u76|QE؈߃G]q$[bLZ9:Fm9FnFmrtMۿ%FfB2? 'r:l(iwAQ N@cEFGߡQW6|% hdwc'}"=!-Pm28M\Jr! .Ze}Sb`ݎ=ŧQѷ\> blH Bpn6XQzgKIϟ,H<{D7rIN7)M=n!,|' _1I r󀭈Xam+v [`?32v%^%ݗ_d3(z6C1tq;{i$Gl]γ#Le.{㱧qnVlç:}S wLl 74&d%G]|q6W}Er}E%8+|oSd(?yo]痐ű Y+V-;fFz+zb_<[nbaXIw]iy D)N6r-N#yLOO֔` %% \%a<<}9I뿢f$ Ev'$nK\X* Iv <x߇-f|p>1>>qBS"@UU_W__ߴcظڸK~<;eGZ[{5:[2QU֤gO. $/.WSaIУCP,h#Vd<^}aJbtHKkWɂ ݗ//=}Z)E03L oaBDo=]Ct?%6=7ru܎W pB qXFx! O~3!)@]Hd Wrq\gAt3TMv7Opw؀HX9Eݻ+dg%6I\=xzFbU;eTJX)qr5H <_]|VVk痀Q! mHK/Ε;Fo(^`IX -9Zbe|WSy0.+֔X)8;RWt|+TD[v%JwEv9/@ea]$8ץO)/J^q!0LӫpZKA(y/(/+w+ sk7\- ,#yFiCL^?߇}B-L߬jo(|-J c%/Wmg~q&ddd+_jCs':uo9?_`[Bg/\.AJ/Q285*.\"{$_}P&HVlocߞ)p"ssqDi}v9pMiBfnxmd]*d^b@!i`܂T()pWI_&g+!!!)_W2=I.XcϺNNWt(|%=3 t?) 0Wfz—I_XE JAZV A4E3'ݕG}*{ۅ@ z]s߻IHڥg3# D'#9$4GUYWtXm!)IYMI#4Rjh{7UrBCa bPN:F:4`_p\ &*V&Yd b>aiimd* p7W5侨H<Ϝ#NOPS^@6kb#ր % s@%519u$Ǔc.J+e_b\HX>2xƪvjY #{Bl5r*SI!.޸Rd}]DicK6@us 㳸(Pi4e]e𵡁%K L6J}^\j"pXr`JUdysXy\u.&U@v}+Nܻg{Hi (Ν'Z}lJ1鎺'HWv߃3 PT>EmSC$F@;c;bt0GcUViEc{K9lhl6E@)oio(͢iyLG,1(?`kZNaaNniY @mj t&*'4w64rIGQ'!4P>e'5ޠQA }lƁP5wmhon>Q",bc݈Wż0:Zʳwc۝]1͖Fo Y"CciQ嗩50mv@`6M-=0 1攤.>r*ߢ}sly hѼ:jH;4wd@mַl HNۧ^}]x]9ŀ%.%tAl%Icf *bZ3Uz.y$@a˚BPǹs- f OH@5-lh9wn}Y|>3{1c m7DPPF"@'g4#y>t NI) [ r kF-u;^35ؕLp'BȍnEۤ~j1!;ko%M> h$76[35?{~8YB$Š_/Y-`=,Z;SlU}]A(xfko) v6j<646wx(ޕ71X9D4kb՛m4G%JW&), 'AR䞄Et߻(aCb:rQ CeɣV(SaaqvTLj|"jz~xCE A-bB]\X3v6B3q~瑤23(?]?L;3ܦ$$ }salsץ!)gHLrORSS]]fwOЦ"xˆW~P3q+J+,ݦ9ƶ-2SVuЏ9pw'"7fKm1J!"C:;LQ14 8jͱ}軿q|cA12f7 x h}wڽtP;Shl);AU6V'x1^Cd'Xڏ_O(8-YVZhjK4͡iV-G}pg[Fߖ (?tpߊ֪e-!6Kejum(@%8Bt[AHj?>F}`\QH{" ,nE 1걯ݦs&섦!cLDY;smUzC~n #gZ?1W!_SPQ Sۓr55 bއs6uYM=7i;gUTN+@XW霹 N 4S4M ͉f-jeZ[+ tsؙ:Yg!l\ V1vAiy^~ ^q7d_+Wk4Pqv0U<8͚Ei氉jfS50؜O]j6X`m.Szj 3v$sdhQHC&OND ZL9MMm'MZ[gm i94)UP9>_({F:Tw^LA2Dޡ-fP4'vAs9JKY쪍\\FIA**p~79}K+Ȩ*Q)! xSd:)Pj{-WĶw`=hcZHO˽\|cf熥G#\ 9srp|g) ͛~2:1g@0;Qd倣ug37RzpluEoXÅZ̛]t7?Qz>Ffbʻ;k)GMOyO,VT Y]]*g_m,u[h-jk赵/lGi<fр!$yڲڠjU#Ce1˓:Ba#ҝ̇r" g;j}$TKӜLwfcJ]ǔF@4gw1[JԐth)c趝047` )4TMs,_s7:0bs*\4^$hu}u^Xы(wfci ^f/gL QFX,KX`ifZ7ll?= SDҊӜe 4ؖe.QUj#DGJȹ|¤ 5<)S]0argBZvzbs\*k+|t#z l4瞄ıރh(^ SUI;JgʨURx"K&F2p^@b oN={75.N 1mac"Sʅσ՘K7jlp3Fʕѝ89c{RVds"eTndc|y\۩W:dKblXLK,}/[GéiixU^YBQofI J7&\ӾKp3!g&Nqg !|:4A EY?j0?ylsV"$*fKh.{BňEӪm\q͋+$>GkNC"B-*=>A;"06겐'xkIXs+}GsPLK&M#7WZ 1& n&V+oz0׆f\5/5\36|_gPDcmK2ҿ=oP?M^;&IENDB`MHonArc-2014-05-05-snap/logo/mhassbg75.jpg0000644004705000001440000001542707451276301016634 0ustar ehoodusersJFIFHH 4Photoshop 3.08BIMHH8BIM8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM WJFIFHH'File written by Adobe Photoshop 4.0Adobed            W"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?NɼC` Niku&I3t$Tֺ`FOwqN֓J`k#3kMK':j~: 8t&kg_꧅xH0;$Oo(3LŜC-:N:H05MATL5]IӘ#DdOKoGIDEޘ:?Oq<NH;@w=5@ێK=)> I`S?G>K%J<5*T- {ꞿ1 /0<'DAQeӍd_mHTCTGIOYC>dQ>ܜӽFPHD;SvGʋYkhsOg1OP)M:򒒖tcRx#S$wO&kfLxi୐d#^x@t>cODA>?IQTF qƞ|y$Ob~RS1(] Liq:g vI%Q S!)ԑ~)kJb彣S_>xG_IO{|iGvI5/ZǗ:s$A?(~"<jLןW$T'ŠW < O_:~>g^˥#&c| ~Ϥ^|J8BIM'File written by Adobe Photoshop 4.0Adobed            "?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?#Y $~Mx{wc"JP,HưtvRg|*PK|SIK F*mq18ޕ |4hϴ8!3|S3 qR"1 &$]B@t'>%8]#&:$#5%A#)PQB0IJ?D$HSXx ]& 8Oy<' Hs:)np0;wM) {u(cCG3Mڀ'YK4\!ψ:%s$5Inqiln Zcp> D4;GhZ~G4}1oĩ&!xG Hfy#Vd&y)⣤j>IƽvQJq#>)A>:ѣ!$( ? Jq'{5L#<%&÷%/$庂KG"ѦߓA﯏`4ӟ|Si`5.u?Kxmu2gtΚ2;?5I>GR8IInu“,k> hԓVXI'T՚?HAT>|>LA %#x'di 4GrޚcY NZ; HtsL| .ЉiL`$TX vnz'<ӓ:)}a\ qDxsBh}z${7Q}Muk~!_$&}9;:Qw?8IKxڈ#D{6~T[ @'=XdO1m\ v ]38Ȏ"&|N`JfGAO"pL-ry%} :|AHIL}FSِ5)üO&#CxFҒfNh?KF <4"Oh>|j A*lhόLԉ;&2^d<ɦI'?$t~ H#O<0K^F9j K q?JQᧈRSuw:S  x>du(GJP+̘L5a'H'ʍEU+m# l>Rr6>$5S4cdj1GUZ|4"l xB=Ι`':Y{A?awPl)Ic?v_J@GjR_Hʐ-Z>g;' &v'RGʊ3QQ>>.B[ )` vKH#NNZ|JAi|RO/t$h@:'Pww $ѵĴ*a{Nxyn'&:dmx:<|N[e-`pLHtAoh%D;~z“H" yN(9;:>wNXq:?z^D#~|G1IK`t M4>Ii%?AD}SˣX>]sZỎBG(`SLpRL$rg4-8R;kJ`~f|A>hn}Β|5A:7x 2[g&ĵp?h$ Z@IS@Wxy#Hi-ޒI2LK1hihcOvNT/*N7}r:H0T }ɧu=h>I ><)CwiqA{L3N)#RrJY#ÃvKHhȅ0v Sⴕ?<|h$~R嫒㤒;K ??4Sk^{|Hw$I4 1t&#p}'-P.AKt$R<#򔔩t>%>~^?Lb`vC Jc!xOXhIB\֝tM]['sO {IGQ >~Tϟ)ӧh<'h|5>D #.q=[l!S>&;0B j0 7O>I1qB{l{Go0."5x~ |W)99%>Lt=Jݤ4!Jxĕ.?آbu|I$J~/q$؁׷1ltnB|>ۏ'>BM'BJPqF$JIt5Ky?m%?|G4HN'I)Dǀ4'4D#:%/qh#R<@IKᨁ<<bK"yMpXĕcFЦ:4Q.vg'&paD-{PS $ iܨ0yKnx@HH@ঈ$58.3=S>QTk'1\Ƒ:iT #)8$G yw P%h=S.<$'?(HSO`OJ byLGxOX9AtTN?ײQ!%/ _jRy!<}؍S|;DfGr6|;S%>i)wyvĈoQwǑ#5NZK|tMxBDO& #- wQ1ƇvM\ VCGɈy9&I*1 LaܖIDOc)kIyX57#Q:4} "A`h$ih6I`'㧖Χ!8&J[؃1ZJtԘ 5?b`ZOc#I y'N_ՈL\'G.98#MG))~u >s̉#HxRxDyQݒS|᷅I_Kp&ϩ$#'XN&jω$9J-3$˰:{+ĒS H$vS;ϟ/IOzϗ ?hԯIO_|ưwRIOnvV1'I_>~[Lǔ|I$?A#4Wٔ%|J~RjuI) XKNs${̅(|JMHonArc-2014-05-05-snap/logo/monstamp_t.png0000644004705000001440000001672707451276301017225 0ustar ehoodusersPNG  IHDRh}'PLTE$mEH$$mڊoItRNS@fbKGD QcQIDATxOsF@{\@&h#_ 0 &%e-'E_-J-t }IY>uljvSi>OVqM,*ؼЧϝ%74K&? '?At;]hn:uIpOǶSNM‹z fsX)>6w dñ-M'J1LRMiK~XGbIOift#9S Cj[o}@PgP|,&VЊZ |E#9ԪʹTsjMwYZ2F}je.=>V,32a[/(#rhV8<,1rBVe?SuA;z WzC|K͉~,n-@AOSg?Bֿ~)B-]T\Cr}ٯOb2&BC=?~A+.u[P%^d4^^&AKUN>fǿN]P ҘNǎ~ AG {Rz_gh&t]:'AkfP!NW(}y;tE<|%ܴqE/H[+d8,fNUPnؠ*2TVor4D֭6Һ){ w*ۮp2zN&6c0 ]xP9X TcdXqat+ ༗v aߦB̖St#!S@yݩ z` f$} Kϊ5ԅ;~cUÌƣ a&JO)&ӈǺx(lZ*N/eQ @hvoxe<s%Pgl:(@)v (n:e@E*ѷt=]Ă[#8t`!wUwss0!){&XQxmA?9cSGEk&Ż'G398ZU~!8 ,.\7E~)UM=x CSߪvqhڇ:*&`3]na eJ ΪCXÚw4-v' -9#8/jviga^A,絣\qh$n QY RgI]ĒOj QHЉtfy  4;VoHU+/~$6%-ҜvDN@;BƯ,$);zD+%Uwл̥d t:XEn!жWz( ,7P3u3$iJE2iġd@FHw 3խjCcӣ4Dzb>Nic\r?OU-LN|kv3g!&?s8 wgsDAx0n/a[S=#0qAySwo>?_H84iĒ@`-(Ujc[!EC.FS=d HZ%AoJA➘^CafWu}CJ֌WUF ABH6}jaSb)t0sHzTFWƪt*tewSrA[{v:DݺԂ#8i9h9ս{.ƕA: L5 -f>#h:g~A?C*L|XniI#V:?m),dJJD^u)K≔@ ` L G셲B5ykO#Mxҥ6C| 0C2 m@ޜB?1F/t́ڱסnw/pv-LܛMFGh "Z.퇭(ZdH{*Q*/z\L97%5G($h[P 9xe ]ƒq,DCj8 ]{B?uI12kѤFbbA~зx`I@E+LD^Q _+p^vT,aB3dbT )|.ّ(-4)%d9)i{*Y~toM!&楛L% qJً#t4dF/UJ] AR-S<|՜-]nB䘳2%+jI7r0 O `H=4=eΞ A% ".i/ u <8sUbLmXbY͜ u-y:ffD:{` ,uPL:.H]Wt)iSexZWrW`}ӸsȜ:qB+@TXsV*uv"S[2CyRh _QqNh#DQT_ 0S h?_٭X9{:"OЄSιY ݢQ.JȈt]2eg`|h?EMЏ[ba 㒥~UkAwq0MbI*>-SgGUڱ4X-QQ.|.,>h&^ḰV%z#F"譿XN^Q 셑˽dق~KT+_'ɗCǴrh+4xQ`B3FKc.riW h~hReօ G04[,"5Stz3Ef7nٛ <`/O5a.#!lݨ VO& n;ڱ[eݽp;B5׎]Nh9eӂF'ĮNJE2Dz6L-<)'iY>FR׫}o]EA z RBz`~} b_ Sin;W$jv8{ZӛA{g1JI;ӏ8oM}JvR_oゴqշoe~ZIl镹fBôѢzW$o0pqwZFaL/ X3 )ti0k w"4 >AS@B6ƙ扺ۍNǖ#1x[ړQ>)erKg&҅ۂGc9≱%Xͳh5{GVۻx*3x&4 Dyl9fґXQ=Q:TY|&ڱFQd%FŸ&XjKW8R\\R6*4Dk6ZㅮJ;J?P'JlNVJN}v-J/,ttWvoY,4)n/^_{WHzl5xE0kKB*膁n*n~{`ucShmɚK%8R'14 KΈ7zG]ϲ9tгvUa VVB7VkCk{ꁁ1tGAek t,姡tB10HB uGStD(.> ^瘻5y,WwCo)}{ߦ7>^[A][90p5hLrZDe Uz3ځa #r0K\/hIDmL7U"max1q)h-Xx8bgc9/`:숯bڭ+=qi :Bo7JZpR360>g?q3x kk e<TF_t)ۃx =02-16G&DmBdgԄ5VϘmڕ&/je\b [7sUF.q'J4g([wXrqtU`G,2;j_y=P|;Gd#͇ꇉ.hn!]\kCǛ d2oCy<,;ۀnFz+)eWEhˠW]>.XgIiby}JKF<6Kz3&fC@7P 3(Л6c 9x[cԡnXFBursl' |`cKf@J:X8H#j{[0E)eWIlh|hCA dk1W>s;#]}e83 ({eܭ߳-4ꮽ TʿeeKgn0/kޣzD+Exk(HkYġ x#.+ʕx@XMcGYL/iA=YoT[H4e<_WA_4?m4`a'ۙ]ƪU κ :zO3]hLOC t3FASZ}jrNzW-. s_# Ѝqc^ȵ 6vYC5} A1hIt خ7N5tӷih| Z=\ўbWԗ56 C7z2+ո;v/kC;75#*dBz̓DNˏzT--+ B d+ќ~캳?)_ClICʢP7 J~lScL!2/[+6XRun]#C\zd??@‚Vqm7n' C6ǩb җg)JdC;;uhŝ1,*`V:j'E]* ,V,6ӿ{N.'Sk#MgAM\O}.}.hwngv|'vn٧G ]IENDB`MHonArc-2014-05-05-snap/logo/mhastampw_t.png0000644004705000001440000005154707451276301017367 0ustar ehoodusersPNG  IHDRh4/#PLTEsss!)B9J!ZckB!R)ckscksJ)c9sB{JkB{քތZ9sJ΄֌cBޜƽ)!!{)!!!!!!s{!{!tRNS@fbKGD`ŷ|QIDATx}{G/x(jfv1ĞX3v<3(+>n5xoS ùުh_I^@W3k㼁o|}|[oܿ͠qWo_ 7 GB*_)aRVׂ~Zk7.W_K}x}R+_9G+J>0ʭj_j[qjƅJYc&|ՠ&3Ц_Y1}cӊu`VW~7ݬVZGW Q?+[a_g+!M@oІ0[q z+_>0ׇׅ<[}Vk_[sj}~ܼ^EͽM~?3\Y% ~%rې(8~5MbWU noAn*nۀ7Wt}IBq|i:lwg}ŎPؔAx7+d y*J?[j$܁K D7_վKQ[]~~x~+4}K>*CMMݼwμf?__0ƛ?S,5̗b8ub ؾE7L"o"̯iƹZ3N&=DftKBo/q% u _ި0Q H回ӌպF'_yx\מ׌X]aǿvt/2ʵ l !2^N~?6s:٠a& zi|PwuǷcߙ.;. mF?fËk}/@ˬjM?3~}-;< 5@uh;-#y Dg2M>Gۍ_Hx++~g1 hClx0Ol_c6^L-ӛ(na}r"@XTJ5͟gBwE٠,oa oiw_ lfF8oTЈ-|r{as|2k%;I"ߢs9J6!^+ztSh۲hwvwܒd7tԢ?3ןM y6 uNDoIfjOkMqBnmoGnE$F3.dܹ/%][᏶&9þx+u _tdgg7X:݄nx-[sЗ]N-} \Rߒ]]Z޿M@Tzu3iG8!$i!+ [0VceKg6&&Ч|j]2J/^R6-$\x>aFLFX߸5Z]l1|]>ݎ gК;2q*07b T In[Ŕ.Z/1ђ!ǥ&dU?f B7uu@V^aQ+r )z^B#zyv9|=2Z᫼ Bn 8WYM-`}*ԣ!% 6+;B[>o'_%jMU49d|\js40bLFo䷷|em^F_EU ԣe!m;w_*]sG˄fj5F/*Ctd9!:bJt n(y}jؽes0;-UXwA DylGA 6k(Dˑt4'#̞$ oFHݾi"_:Lx_p M,0%0?_Ƿ_97!<W 9 U>x0A<~m]2<({l>N6zzCqDRmD ڹMޔV}@6&W"4J3|[/qmCH{wـjUA[F+g9v+וv{9ce~nt.D[P_J7gN(|f*;J_(͹{Q{ ;W%Vo k=P:hXJ=b]~l.ޣp׻wWI]u=Ϳ'|٭<$3z &Ɉd4C1H71lO}z^4ؘ$o[+cW³Rl\/՜FekNb5?Fq.zU< ss=zW7!}b~P1ͳ(|=NsƝ}`-O4)G^&}*eqztKv| e2π8#Fm[k]G#/БSyT dRb/߀н&`sKXrf}.LRr9ǿ]vw-.wGlp X_!3CKtd$sFqGp+zKoJhHm7E)ܼիwC(ܡ̰J.oz2vlsK#&Q9RExFU }țjt m۝` [ā3H'5 !͗moIeYHZH WؖI-ɆPZuy,h9"/n4m.aE߿^^~%cmyP߬ hnۯ6CD|T# 2aKX?$-Ϸ?|_?"))-GE<GȎж'1ZQs m/g+юZ+tԪmk}M頉70ࢫvHϏz>,ׂևWkl Ua'D8$k݉c|dI{#(I߿gvK;iPJڎ^>ڷ(G*Ia9Jå1(ۻԖ @ڬY4J@dQvi651e"J ?D+ipvDJJ/%7OK=)ұv= |?ڮ} 8EmHZmaJK[ :ATύiZdG>}|&K7='|?sj$ 36u΁1G(cT<@5K ང JIvͲOhjʷѾypG 'n|i1V$A_q/ЌX O6v r"J֨ޒb3&@\PB逗z[?|^' D>4+Jie ÞT簰g-=\u-Q-'7yDPs03G&{qd -"~.h|αsm}x oJZ?9<7XIӡ$t5Bla;"ДWHa7 Ӂr+0F%HB}yJz?EݕZ8}^Y-LҝVƟP0Ghjd*DbeH}$Ժ8y~ 2qb |I#rz8y.JAkZ@t MLjx$8 FAm; i_E'RjfpUy47g.4gE1woA@g|]ԣ - t}>Fok׭GߐCVĂ.~x=Ì8Me?k҈wNN9hg7xJkN"&nΉ4)t6 9="҆|H=e9Џ+v38I;qfV}x@иG4z$jr< bM7lѯnu0"[ғ(gJE: H].b19QÑ=.JCvq51t(Qkԣo Hs) R1mp#pi`^ ՒBǧԔF#PvɊʈA/rb%6nd#~( J(?i9 %ݘTdՋu~Em4G9ioWے(y*n4 _;YJ .-Ø;׿$Y?\;;Rw&Dm@9wÉ9g=M&DFI1:F~[wy mo؉EE!3Dt! '2aQF^#V239%.^@ ib[5+^3Y>be) 8څ9AsP#_3Y=l3 1x :sDęv9T~'w8cI3#e^-[QTsFd{\?Q>o@s%%0A4^`.(4}wk4g ߃r@Gmodswia'Af$& ݦ(穇Yذ<$^Ĵ@yo_}[^ɹFo?AD.)xhk+գu'EWX%xbvݢ_zgHMbp[ uPrL c![{0OqCcDb#: $9ZdWP*~̳"еZ@f~/(4>(QM`N"6ݜ܇ 黷E&"K2'[b*qx )`,i&iP6o>В V}k;#c\sk @Kcd[p=a<Ņn0qZ-%2u܇CaMgZh潌όE`sWB$s ]7w#!գU۹˭+}PY}Lmw7c # /֣7T9nBani R=ԯϻY)A1s-( 32-O-}6>xo1cDdBvfdWjyk PqVK#NTU  P 4158 BJcU#!ՈIK09v8YPϐ+;Lg_. ܙ^kkkkf^ sY4%:sFd$⼴['9p&9rF)gDiZUQ:,B]WXvȪ2n=:/瀘xBμ򰽄r@=AeM0 =%*x%" 8t% Ђ8^k]`=f6]cݿ %eZDg#֣a.TnS풄L8)znTcT|&ɳB)\z&Fׯo8@(Iw BVG{G)7Nf]+jͥO9ahb:LqYǹ`` )Ϳ]WˇdLiZn2i>@,sz2p=N/ j:n3<ӰGճX0A&xj1ht% g&Qat_T&X8 v}z{koM[o|s_@zq6^5BYOグoT^XQ> h|1'a f[ 81ij`6czMyG騿\'jT iQ0cBeXKH e&GBJ@;IbJQfm6摙`®(UI9húA" 8שGFe tdY]WTgd:l\4!>g/v^yY3L1G>XP>bIyU}-iʟ1\ҷ$Qϑ_W)0ҩ&\Jy>&r.-=ESI=" jp )&tԆ:͕њf^YeI2Ճu/.%edV.2̒ xoSaMӃ\J5 1 A$h*/(tFҎ5)5PWV-v}&4/6OzTvk'Du?R0oxEVtPz˗(ՙ8dDkDAOW"YShKko>xA bt^LZpj6}3'*nuCגDT_Ѳ=T1s}Gcr0/zrJuD&,`MT .oΜ1B`$SÕWGW]0z:؅]&u^ѾP4Bj/!5頒<,Oa:xoGO [+oԥ2 B{WGVt,lj(4<  cP;VqipA:@8j _TlL r\dk!J'exW&z^W_n^{o ~Sui9&Iv蝋d ҷ]rOR ~j6'J'GJgVvrGd G40N(=Zb',89fC.0Tbuv}\U!'=Gih1Pi0O[zs-HQsrHisEUi_mcyB EQ= S^&66ZߗE -2KDyv%qr$th!bA< Smm^Tpz4\D+م Mh.v~b&4?~|{{U.N&@8|rc$| (%@Q# OBKH N8W~Jg,]G^\gWU(3^=b57HG eJ+SkI:O!i~Q4;\&n l |jYP (}rhq|>!*`?.֦e,'-=!4[odkShM{?/gd]gFqe>x. I\s&gM %9UA5T8mDh {TFhҏ-+'ʴ^]и|]aDSMMN~Mh]n'l40fDf3y S2/fԭzEZ3H:M>|fC9`Kvzs/lC ~rFLfpyXƳCp4"I1h|lm j@9ѫף1}ThJy8YmxW5z ߕh4mԌϟ7p 7Hmju4~"ExZPADF\E)" gC7z6/d;&6#TA4?nSQ{4,t [߬T~MLt0Ui2/^pΔ߭3>3hCi/29Gsod3 hC",[*eR>G?>O%7r0e<-t~}P9*\I:@ȬD8(PbSh*( 1^"<žE͎zkk'rɴF2̺RkTooP 3yٳ6D̉^$ Dg(R*ы^Dhڅ4BHI=׭Go4t\:ʝ g(Mҕ]O8 l0)gϊq]lD6bA<9fFtlGg:e'f|C̣-t qoZhfivjK!y9&M=5 )1H-Bzk*됓lH]Тϲ()^X3jt.LF K]25tm!D]b+ 1[@UfQ!8 E/Rd䏠 D"{DC@ }ak"c%T@\eu7k#"$,Bg m =wQ۽onP@?7,3FEb6h]p5hz$ЋdA!:zO_P:BѓyPz4ɒ𡫤 ~<?<<\ƾc5t@L9WAs7 J#r3RkMۭVixMw0-ڍ­X|poL.o]S6%T-*{u 8:]pD\,Ԓd%pS5MPϊ(tBavl7[x_MgN9(b46昼|t'A$~xpu/ $t ́<'!d1Ձ$3sЊ+D4z%v猘'h5¡@M |(G @كbc^7ShowťXx<`juJP3kԣA3{B²XҗEqnzx1ľ#CI8ݹT8;|1M@F#Bb~E@\’hS.˽MV8ᣖF=..2a]7rI0S@fXua|& -n_ 6zǪHhrLX| ܃BTTNFU`D mL4Wx˒p8}r GpSZsACeoIJ7~_-:h}h %~Y )%62;j[ tNƁ?8lvL1GFEzJ4DzZ Zlmi@YnJ0$_\]V׸No%ٖ\g( "Pw"*S S'X ;*ort7Bn> ;n jk!^~]5y`e>zg`##wTudrVcAʢdY2:β=$:>xp/$44Ȋ{ y 8@聀ע $2tuDfiNN-FEYmHҌ"qM&hkGu ipGaBA !2. -Aͮu@d;6m9 DF5Xbz4C]{-zhqRg9!&ed =Ȏw @~@?J ΄5hu^/ Msx^{bpi4SZ4<`^-G^XM \dql tT8!Q) 4M|Bit@ ,^< }c[h*R ):)zI](%/Jt5 l'A&ӁN E8Nў6\:a.rD(_֦^Lf&zl#ᚌ/h_fn% Y"ϸ'̮Nv0h3NJg(:%YN{+TЮe + [s3vqgEzcZ3t6l{ shcr yx(q:ٽ=Icd:\ ZJY.>A 53RYRRv˰ǝʂM$4:aΞ'l=t Hwdn#3OC RfX`[͌2Jr إdw.Zneɂ7 )xݙ!hƺs6T9("641ZHl$0H2zf)+ϗW B&Ç><۝lOL B2m-SPьhvǍ삗n^hc:H;Emz4FKKt '@A+ph (ә2]ʽcG6,mi|FC/j4IG_&4R(2ŒfWGZU:X: +)9O0=m=SYf_FU_OS AdYhZ]d2opyIHlh@J0`U 'dvgsj:v)tpI4@vrC+q;6u%w,N?v)8T1]=µ)qkU-葝`:GhOP.M` ԟfwEhpsg|ǑG'Sq^`Ghzs(Ŀwu9?gZEa~M.VoJ 󅳰1e(#@;ʲ֟ 't=owlΑǝ{1??gvڇĿK|`~rȵtU=kԣg~4J Q̥gvA7 | 30*u*ҦLц0;>&Hǃ @|߉F&ILމk!Gk=:B͸$Uxd:Y \ZR‘J( \ΑT'b ;BY%-H5z8  գo!}BÕ ]yR->\"@J <=zlc~ށti0e|(YI(1^-3I/-:AK3C랉(Ҹw'93(ǬiܹCdf1 r]5Z|)ik@S 6 t uχ"8UshX -oZG:ϑi Vh@/1Ps.),55zmL.8g̘H> _ wIB;F::{mqGWG Ev?tENs;l/aq\L ϧD\ry:)gC(KXQ`vc Q6=1oAi]RH!pM< J^2CIL;L~i Én<afx .g ΀4$.l>.>l CCa Zu4I?[>bIf[RGivXʢP7_(Ci;iaѾ14>(H⁗M Fwŀh)/`x^h.GW)J`{nMO \)ar?3%DkЎ;qG#});$3mXln8 " AD>K^Lz*;TrۈBN = 2>OumYzĀ=q"0L4IRCc" }h#Źaq#BH!/5Y^ގLV=}-Pp)fG](x.Y*j HqKyGh{"4*Z ;]9m,C9^̭'o>![]QӼ6:B>#X?oDĴ"#Ә(zJw "Ҝ$> br=硡B]oݟ-/@TQ|Kt-1*ŭi.Sݞ&eq3Y)̌>NCHGH;J[GEAN&z dt2҄7kգkz[8N FP0E׻Ј4CMyp3\p⼰i<B?)5|[NQIJ 8 왐Z1:^Ѻq9eF~ S=Zn8> qx/(>K'~ٌWqY"D&3eml!%sJV1]~URiIu)xaXҡ{&$ %)D}A=*ΝMA6.О|,aڡ:|{pqCݠ vkd;/$OҔ*qT2zXdSh2Sr9P_<, 'tr Bˊ}yoICˮ:(UF=`U!0-㎷wOJ v:lm[רGol:Lmbh(xL fl @UF7< vEk(|E) Ζ"T*ܶF=z2 PZ*tV]CS)αWhJV:"D4/|qx(K(Sb(rH{@i><.\mtBh^3KTOIV泹6 G)=98 PWѢi1RѾ C^Ќ47l @fB^wb4)u }j }|j}ffrTgyez-ItI,,47ˑ9yF| 8\Q*aab-Yn/)r5 /g lA-ԞijPR!3Ѓ(6׉%$,'7c#H>ԧ* ,u Б;1SUjyLxF`?mvOj OFg*3Y/*A6J(C YJ4Zu p4+N ~DP';IP } $f13WF s\hÚգ9CQrEd'Z(Ju$XM7ۥ9HAH$R{h `i' ӧiڌe ma4tI9-Z 蟉~ Ŭp9NyYOGp9 MTwΆЪ!*0! /GgeG y^֎QQ9xeqL&6tc<Ϊ(%UNvC4`v -;))\,e} Eat?pj+գ_kt23gSO uh0"P0gtde')Ǚ;3q7:687/PObi9ұHP94uR'}cWFn@Y >Fd}Qtg\P-1#TxEZU5+iq<82D~X9T;)qk96wq3<4fDAx}B( ԣkpU0iWNU<;vѐWşF).HchR 9):/X0jп@J5 ^+jǩ &9藫ԣuF1oEFGөB))K9 hEQcFP}&Ѡ#^;pFs_LSK`Qnʔ%AH e , BcF9/It~:.O9/K4|І{f6F)4נNZhù9\vz933@#t,JiEk':/n,y /|6;i}VZ=E7OX>ˌX3'' hiQV W~žB~9 A"3!0v"ҞQ3n6ygxV|ސ_\Cvr-$93]\<tȋ$8s)dnv P. ^{nS#=¯Ĝ'rb 8]Q\&n.IyZot=ҬOY^XJXp.(h/>+I*NWO*NV NOu D:ZdWhv y7 4Z@0k:3i!ù]]I r@hN aʽ vI tG خ-#YhyftКB*QD<.dLe9iayKHovj ѵѲ KUBBBC8A;$R,}nUhȗn5X9Ы1^] k,lJ)C-1ExR: .J*J{tQ=Z>S)&Ӏ*ņ;eFjvt!&G ݴPtn[.4!%]T&FY&=A t~Mg$faCLи#p/mTg+ R*ڑD8;[hEnM!\a9( ?;CJ KfBsNASAzjdFy5; }:| ?y"Ͽv=9h}gTBq_i<zzk. sXs-1Z\3YgЁL/p0џ󡧴e^m) MDJ*0Z%CMe\h6r0"%Y!-r yY-tuf5 ֋w =UM<\( ^;F\AE;P9D+~ZNNYDu̗ڹӼ' wz{ P@!~`^*ԣϕרr'6Orюܕhю\NT>([:x!qW⠸xSJfxDJ*Snrјx8X9%gjnmv֏ P:ˌ%r* @Y`m̗(oƀsS xn'|^̈+$ Q~L@tF(JS ܯ~vrmshBJ1/2  ̕%@K$#piWDlHH#P87/ Z;,uh𓢇Sm~^' 7eV_w~9_&H[m}C4~[YwiY/1ɴO}3 E Qy_[hXvuv`OHd: (A)5ՓmP0uݕOrIf(:8E *!ic_WU Ms8>~^2}2|zG4  Bmjmjnjj < e;xc@sj&J2FahCHnGw67zW\-%yE_9!t%8i%97TsG78E 0f f Y 6 J yP9 ._7v){*I1 <]uک z@]ς`JЎ+{L3' qIBKʧ]~49 &LrSw䱩)k8NB2[MMѮ2S2^qb H$*D#zmPTgƥfD3|B-.Stqjkc뒞 iЉ c%@>#ǏG#R3,l a2 MSSSZK)ʤ, HeR,f=OGi"Lⴺ M)S Sm x)uxf`6[YdȨp2 ڝ9Z 8,~\?_Q,D$O1\ǁy{襡1ul/R4:(%n|ۛl(+.{+)))4u]Ctфv 6!ZL(hcyvXED$mY$5As.(p 2{aL)_PV}>F KE#b&\7tU1;d@O1b%7!f'7Kw!D٫t d_n2;.K1j9(C!RVxQz;NYf<"Moo @}D?}kǥÌQDr$`K))uA/Vb1di*Q]KC2-gt7$>/XN!P<VAEĝ06{ v@T2U"8>khdU0.Gy!}G!+Rx\8uWu5$C[Q$'GQ4ipAb "Jtab!b>ACr|Bs)Lk$h)M5N8zd@\D?BA4{JIFuzeϒfp~CuUe9+Aeso62X=Uk'0JL퐲=¥ B儡7'i)F Yf%,9sѣf3VOe]_W2\Ti=qv>R<G\>|dFp\oU%l –*Z&V! [[9|7R26 Պ vJ * ZѬt,ȒġG]cWxK-]elHV*WCt!M*m!zLˮn{E|I=qb< 1(:tG*CaDh+^LFeTdPRoj 6:b= ĮdcX?Us"CHee%}z*eMuh2v@zu@%n!RVmiˣΝ_ qս(C"@9J./fj%@A=w8[;h@K ʹC1:EU?6BXkY@sC!f$b!9cg dJD&0d,b;Ml>G !P A%|pvnl§h1yj S'-$ŐD`s49]&HJT $g_Y-,UP413 ~}c'^IGeA?14ArȝI4Qn1vq2.pi|7]m791|z@cz~^X(1DDoJ-y@e ЌZPU\αW籷eDNt~DÐ*""6,~eo#1@EPi9YgŃK 'GFd###g.KŘWyJ+u */OMݢ_"K˳S h߲\0WgcsV{ &'On[jsueonvh>r[T=*G%`r/m˖em:]KțyiO=|ޙxZ`HSn=ѱ6OjiP[[ۖ&y?Lvt^fIENDB`MHonArc-2014-05-05-snap/logo/monsmall.png0000644004705000001440000001551307451276301016656 0ustar ehoodusersPNG  IHDRd6h˽PLTE$#"%'&&)+' . - 22-+5;6;?==7+5<8?% :%,$-'&4+';5,<6.446("CDGA C!H$F"E&L&I)V)[5E$K,F*U7N6m4h:v=I,"L6)X;+R>4iCuF|F}MuNpM[D-]E7IK;fK)dI9r[4yi%|e;pd?_B(9H1A<>FLHLTV\Y\UWZZ\_XPfdelmttslms}x~|vp+bdglimxTygxmąΏɈՏ؍˟śڑڗޛ֔ǢΥӣ׮ܴڷXShxgxt`'_,f-c7l.m*h2n4s/rx+y&|*}%~2{Ir'*,+!&()$&$ڳƼ÷ʙҫެi0IDATxڽ[_gM&'@PmCH*H=X[.` X)-"TQP S@t)T+GP`w& Hh?>>3Bkb?Z~^!30X0 u]󮋋LkDTtWIN~;G>=ˮW '\!sqywڮ>#8HXa>_X,CnX{|.bb&ĻDA8 ;r [̊ptaH3UAXWI5PFgǑOѮl?ճ1MBEmRc|g<_6zo+`߯ kgO BmPnf1;h<с~EmQL##F<2zyw##O!`*0tN`S!m pyn%φmѫ7/ #BCQwE8/|#+@kā,C8`8M, H..]\R:|=Zqe4qGw!r|ew}4COE,MqW{'08La~=tk/F^{xz؁aL`}3 Oƿy^V|gq[V9~BLpSJk##W=ȥ>0Xz DM  E~ڥg/_<=,,-L@$鉔%?IF@,JVDiNJW?Y%xio`ݟo~C?^`oO:\z?_\W+v41uժ@J(/~'3w* A$Ugu:ț@! ݸqBnޭq Ҍ[l= /_qcp7##sOVIΦ` ELka0}E!ζ~ld ^f8g/pDfcjm$w؞>+x52ktu'maA5pǕ6DXݏΞ=wX_ $vp\poxy:1yk[3xg$ZpWx:86~cugx%sV=df2/@ij|'O.;D.|ށ;dǷZ7=bK+vv^7n\PE/sڡX!ỹ ֫e h-,K DZ%"V7}H'֚!`{]+]DzW񿗺}AE`0 b#`S?Š:F˿JfE0 =E؁H;pSv`#82>W(P~.}ϐA"HTg~6"@溏;xHJ 8@lWS}~,Ht t|%I<2:kk[l L|沬63Ҙg Q8sD݃&#ᾒ`$=yy@`;(^ZH$A(㭗Qy.,s=YI!aaI d$AWea#Vd@(|Bҳ kϹ,)}fArY񠐽Y)ay̽%$pp k)|Pf6UBScYa@NN`M 9\ p" 1%9$I[)h-&bkk;ӪGhJ INI pǹsnN:Ahr?Ttpwޱ3g ɐDp8S\K@Zr /qșcy\sW Q?yI&erƄ 84DfPaC5*^HߡVS΄a 9)EL1=A[q*{v$@<{_iن[RbHrybT_. X.p6Ԡq!҇C$ϸ`Z:*frjɈ}ɕ|ܛtg?d`:2ID9Fu\Ұ+l,Ȓ ida Zcr,D,iBtҧgv(2{;ZKᆲOE 2?%kԋRìFHϐ2pa!0j58-+ "K2EgT/<3-ăFZ'*lBYRI %M?`[nuXL9m9ouqb|7[,)w4APW\`@q.IA+kI7MOU\{A&&I.g. dIФmٌbuor(dwɾےBA "Ml"{ mz'm+#GӋs4״tMGPw'ysQb2,c EU5GF2[u%B+՚L{alcA124 Mc{Ap1z|G|lXT`FPPmcokc\'2c v_)*Ikִ.:|qmY9,]/`" a86OdR%P#6X=V.?k 6,WkcC̽"K >lB5'>||ÆA="B,41%?ƐQ9j`_{)MC+AͩvpL3r| D8 Q^HU^QuzV ޶'k.^. _Դ'o^IVzuQ^E )Md'!aTV^^ZJnZFӜJiزܰA9߬Ѵn:3+]UZ^4c*3X5tqBE ւ LX[*/je=Z]J;DT(UyŪ j{\6r[ ],t| (XӘXs5-TPvQjFlhj.Y)P y5z.Z ,Յ{{]X,/RXEjoV+ʠcҏG%h=w]_ ]~ hwԂCɬJFHMLe(y!ܠj3uPdAF8[ Đ,3IDZۡ"G:D Pl6 ~,Y F-$ڍ֭~[O* ~ԍkl 6Am%*S >WY:\{8 C4!PgTEw'E-]Lj:ڡh;y#᯽S}[+) hN]8־SʢM& ʕi[::D9Jy5Vo{]!@oee#dUQrHEorN7ݧq""Mnyo#h;Ǯ2u=q53(9w|J!|y M_ރ6/)_ )?=;8&LW `|-''6jQV=(@sϝE̜AFy$;v>r?}vgh[&x ,wQ =u$f-.G.E8mgBrU|uv:S.ti$kx .1!]!-GGač.f >TȤ:qtWe(]A2-NJef4A탧o.9MeTvf}tzo ]\i@N%֋̈A%K&5Ԝ(T #; s{~.9J]gr"QkyawYa3?`o̚W0bG9F`jp!UdVMN]}[@VN-RvӜBa t/a,oo_.ДS1ٛf0jy$Aclw +|Cwb, UcH3#anEA,Dt_Ē_p V͈2 qr# F1ALh;CWّ`LцVDn}s3ehy]#1sy;Xu@Rl~}| $IEhfz .S >el+Vv:K9oOOfj5WAkhSNRq9[k (nT7&N} (EUo(DSfih:(djd}a =GUn$Jtqdq\IjLYo;s8p,bGQ0cCRfTcu+ZNLW@v6ouVey!$DBIbIVp9q#G`q.Ofl64t"92b@dx5Od+z!C5A]̊!'D /`ze:Zp>KsJkLkS|"C'Gbq 5k"@v6C]#%B,V876JiUr=Umv́;SlVv9Lh7|8,Z(*G0:UZdzFUn18Q,/FY]rD_cy14J+0JJVoQ\t????@`9MHonArc-2014-05-05-snap/logo/mhaicon.bmp0000644004705000001440000000607007451276301016442 0ustar ehoodusersBM8 6(   -/K#<[2Ki%)D+8UOuYr\ 0NDOhPv `2:WFvSv~th^g}8LiuKΩ`~!=^P1Wd{?Hb@_Wdz:kdsam)H|BMe >sy;Xu@Rl~}| $IEhfz .S >el+Vv:K9oOOfj5WAkhSNRq9[k (nT7&N} (EUo(DSfih:(djd}a =GUn$Jtqdq\IjLYo;s8p,bGQ0cCRfTcu+ZNLW@v6ouVey!$DBIbIVp9q#ؒG`q.Ofl64t92b@dx5Od+z!C5A]񊜬!'D /`ze:Zp>KsJkLkS|"C'Gbq 5k"@v6C]#%B,V876JiUr=Umv;SlVv9Lh7|8,Z(*G0:UZdzFUn18Q,/FY]r־_cy14J+0JJVoQ\tMHonArc-2014-05-05-snap/ACKNOWLG0000644004705000001440000001022711177375157014524 0ustar ehoodusers ACKNOWLEDGEMENTS for MHonArc ---------------------------- I would like to thank everyone who has given feedback on MHonArc. Sorry for not listing everyone, but it has become too hard to keep track of all the names. However, I'd like to give special thanks to the following: [If you know of someone left out that deserves mentioning, please send a message to mhonarc(AT)mhonarc.org.] --------------------------------------------------------------------------- A. P. Barrett For developing a base64 library in pure Perl. The library has been adapted (with optimizations) to decode base64 messages by MHonArc. NOTE: Later releases leverage MIME::Base64 module if available for best performance due to its native implementation. A.R. Burgers For contributing the prsfrom.pl program (included in the extras/ directory). Susie Blackstock For helping me with the documentation. Any problems with the documentation is purely my fault. And she's cute too. Achim Bohnet For his help in testing, and contributing to, mhonarc and for setting up, and maintaining, the first mhonarc mailing list and archive. Jeff Breidenbach For his feedback and his usage of MHonArc at a scale that it was really never designed for, , that influenced the development MHonArc (which still has scalability problems :-) Steven M. Christey For performing a security audit on MHonArc source to help improve the security of MHonArc and to increase the awareness of security issues when developing MHonArc. Roman Czyborra For his help with the MosaicMail script (which has been removed in later releases since Mosaic is dead software). Brian Foster For his useful, detailed, bug reports. Timothy Finin Whose initial feedback on mbox2html (my first mail->HTML program) which caused the ball rolling on developing a more complete mail-to-HTML program. Stephen Franklin For providing the machine facilities for housing the first MHonArc home page: . Location still functions as a primary mirror/backup for MHonArc. Ken Harward For helping me tackle Perl problems and for bouncing ideas off during the early days. Phyllis Imperatrice For the initial sketch of the MHonArc logo. Eddie Kohler Provided useful set of patches and ideas to spark improvements in index ordering, thread slice formatting, and other features. Christoper Lindsey For providing hosting services for mhonarc.org and for taking over administration responsibilities of the mhonarc mailing list. Frank J. Manion For his contributions in improving date parsing. Steve Pacenka For his great help in getting MHonArc to run under MS-DOS, and for his help in trouble-shooting. Achille Petrilli For his initial patches for MacPerl support. John C. Ring, Jr. For tipping me off on how can be used by spammers, which lead to updates in mhtxthtml.pl to address this abuse. Olivier Salan For providing test case that consistantly caused perl to crash when MHonArc processes HTML messages. Crash due to regex engine bug exposed by the HTML comment declaration stripping expression. This problem could be culprit to mysterious stale archive locks reported by some users in the past. Code changed to avoid bug. NIIBE Yutaka For the initial contribution of a text/plain filter, iso2022jp.pl to process ISO-2022 (Japanese) encoded mail messages. --------------------------------------------------------------------------- $Date: 2009/05/03 20:11:27 $ Earl Hood, mhonarc(AT)mhonarc.org MHonArc-2014-05-05-snap/COPYING0000644004705000001440000004313107466542002014416 0ustar ehoodusers GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. MHonArc-2014-05-05-snap/contrib/0000755004705000001440000000000012332046076015017 5ustar ehoodusersMHonArc-2014-05-05-snap/contrib/mhastart.pl0000755004705000001440000005351310236513642017210 0ustar ehoodusers#!/usr/bin/perl package MHAStart; # $Id: mhastart.pl,v 1.34 2004/05/17 16:41:55 Gunnar Hjalmarsson Exp $ =head1 NAME mhastart.pl - Help script for the MHonArc Email-to-HTML converter =head1 DESCRIPTION This script, written in Perl, provides some help when using B Ehttp://www.mhonarc.org/E. It's particularly useful if you run MHonArc on a shared web server without shell access. By means of C you can invoke MHonArc from a browser, or let a mailing list archive be updated automatically. The script presupposes that the raw email messages are stored in mbox format. It can be renamed to whatever you like, as long as the server understands that it is a CGI script that shall be executed. A number of configuration variables need to be set before running C. =cut use strict; my ($name, $mhonarc, $lib, $archive, $mbox, $mrc, $indexURL, $errordir, $adminpw, $encrypt, $msgpw, $msgmaxsize, $pop3, $pophost, $user, $password, %in, $scriptname, $wrongpw); BEGIN { if ($ENV{HTTP_USER_AGENT} and $ENV{HTTP_USER_AGENT} !~ /^(?:libwww-perl|LWP::Simple)/ and $ENV{QUERY_STRING} ne 'update') { require CGI::Carp; require File::Spec; errordir(); if ($errordir) { import CGI::Carp 'carpout'; my $file = File::Spec->catfile($errordir, 'ERRORLOG.TXT'); open LOG, ">> $file" or mhaexit(prtheader(), "

Error

\n
Couldn't open $file\n$!");
            carpout(\*LOG);
        } else {
            unless ( eval { CGI::Carp -> VERSION(1.20) } ) {
                # previous versions don't handle eval properly with fatalsToBrowser
                mhaexit(prtheader(), "

Error

\n", $@, '

You should either upgrade to v1.20 or higher, or ', "use the 'carpout' routine by setting the \$errordir ", 'configuration variable.'); } import CGI::Carp 'fatalsToBrowser'; } } sub mhaexit { print @_ if @_; if ($ENV{MOD_PERL}) { if ($] < 5.006) { require Apache; Apache::exit(); } } exit; } sub prtheader { "Content-Type: text/html; charset=ISO-8859-1\n\n" } sub errordir { ##--------------------------------------------------------------------------- # Configuration variables # ======================= ## Path to directory to which error messages will be redirected # If this variable is empty, fatal error messages will be echoed to the # browser window instead. $errordir = ''; }} # BEGIN block ends here ## Name of archive $name = "Demo Mail Archive"; ## Path to MHonArc program directory $mhonarc = '/www/htdocs/gunnar/cgi-bin/mhonarc'; ## Path to MHonArc library $lib = $mhonarc.'/lib'; ## Path to archive directory $archive = '/www/htdocs/gunnar/mhonarc/demo'; ## Path to mbox file $mbox = $mhonarc.'/mbox/demo'; ## Path to resource file $mrc = $mhonarc.'/demo.mrc'; ## Full URL to main index file $indexURL = 'http://www.gunnar.cc/mhonarc/demo/maillist.html'; ## Admin password (to access the Admin menu) # Note: If you are able to set up HTTP authentication via the server, it's # advisable that you do so. In that case you should comment out the following # line. $adminpw = 'PASSWORD'; ## Enable if $adminpw is encrypted (basic auth) $encrypt = 0; # 1 = enabled, 0 = disabled ## Password for passing a message to this script # The password is presupposed to be a string on a separate line, preceeding # the message's "From " line. If you want to pipe incoming messages directly # to this script, for instance via a .forward file, you need to disable this # password check by commenting out the following line. $msgpw = 'abc'; ## Max size for a message to pass to this script $msgmaxsize = 128; # KiB (kibibytes, i.e. bytes / 1,024) ## Update $mbox from pop account (requires the Net::POP3 module) # Note: If the script shall be used to process forwarded messages, this # variable must be disabled. $pop3 = 0; # 1 = enabled, 0 = disabled ## Set if $pop3 is enabled $pophost = 'pop.domain.com'; $user = 'abc'; $password = 'xyz'; ##--------------------------------------------------------------------------- =head2 Control MHonArc from a browser If you call C from a browser, and after having entered a password, you end up at a page that allows you to execute MHonArc commands. If you just wish to add or remove messages, there are a couple of buttons that don't require all the arguments to be entered. When adding messages, and if C<$pop3> is enabled, the script automatically grabs the messages (if any) from the POP account, and adds them to the mbox file, before MHonArc is invoked. =head2 Automatic update You can also pipe messages directly to C, and let it update your mbox file and archive instantly each time a message arrives. Optionally, if the messages arrive on another server, you can pass them to this script through a HTTP request from a script on the other server. If you collect messages from a mailing list on a POP account, you can instead update the archive by invoking this script via cron. =head2 Refresh link If you use a POP account, but do not let cron invoke the script automatically, you can place a link to C on e.g. the main index page with the query string C appended to the URL. When clicking the link, the script grabs messages from the POP account, adds them to the mbox file and the archive, and loads the updated main index page. =head1 DEMO A demo installation of C is available at http://www.gunnar.cc/cgi-bin/mhonarc/mhastart.pl (password: C). Feel free to send a test message to C and add it to the archive. =head1 EXAMPLES =head2 Setting up a mailing list archive This is how a basic MHonArc archiving of a mailing list can be set up by means of C: =over 4 =item * Upload the four MHonArc program files (C and C) and the C directory to a directory designated for MHonArc, for instance C (no editing of any MHonArc files is necessary). =item * Upload a resource file to the MHonArc directory. It can be empty to start with. =item * Upload an empty file, for instance in a separate sub-directory to the MHonArc directory, in which the raw messages will be stored in mbox format. =item * Create a directory for the archive that is readable from the web. =item * Ensure that CGI scripts have write access to the archive directory and the mbox file. =item * Create a POP account, and subscribe the email address to that account to the mailing list. =item * Set the configuration variables in C, upload the script (in ASCII transfer mode), and make it executable (typically chmod 755). =back That's basically it. Now, when new messages arrive to the POP account, you can easily add them to the mbox file and the archive. To make use of MHonArc's extensive possibilities to customize the layout of your archive, you need to study the MHonArc documentation. =head2 Forwarding By forwarding incoming messages to C, you can make them update the archive instantly. One way to do it is through a C<.forward> file as described at Ehttp://www.mhonarc.org/MHonArc/doc/faq/archives.html#forwardE, replacing C with C. If you don't have root access to the server, you will likely need to ask your web host to create the forward. I'm maintaining a MHonArc archive on a server without email service. In that case, I'm forwarding incoming (to another server) email to a first script, which sends the messages to C as HTTP requests. The supplementary script is available at Ehttp://www.gunnar.cc/mhonarc/mailfwd.pl.txtE. Before sending a message, that script appends a password, and the subsequent password check prevents C from updating the archive with arbitrary messages. =head1 LATEST VERSION The latest version of C is available at: http://www.gunnar.cc/mhonarc/mhastart.pl.txt =head1 QUESTIONS / BUGS For questions or bug reports regarding this help script, please use the MHonArc Users mailing list: http://www.mhonarc.org/MHonArc/doc/contacts.html#mailinglist =head1 AUTHOR Copyright 2002-2004 Gunnar Hjalmarsson http://www.gunnar.cc/cgi-bin/contact.pl This script is free software and is provided "as is" without express or implied warranty. It may be used, redistributed and/or modified under the terms of the GNU GPL Licence Ehttp://www.gnu.org/licenses/gpl.htmlE. =cut checkpath(); $in{pw} = $in{routine} = ''; # prevents "uninitialized" warnings unshift @INC, $lib; use File::Basename; $scriptname = basename( $0 or $ENV{SCRIPT_FILENAME} ); unless ($ENV{HTTP_USER_AGENT}) { # autoupdate(''); # if not invoked mhaexit(); # from a browser } elsif ($ENV{HTTP_USER_AGENT} =~ /^(?:libwww-perl|LWP::Simple)/) { # autoupdate('fwd'); mhaexit(); } if ($ENV{QUERY_STRING} eq 'update') { # intended for update via hyperlink refresh(); # on the main index page mhaexit(); } readinput(); if (defined $adminpw and $adminpw ne '') { die "You need to set some other password than \"PASSWORD\".\n" if $adminpw eq 'PASSWORD'; mhaexit( loginpage() ) unless checkpw(); } unless ($in{routine}) { print frames() } elsif ($in{routine} eq 'forms') { print forms() } elsif ($in{routine} eq 'adminstart') { print adminstart() } elsif ($in{routine} eq 'add') { add() } elsif ($in{routine} eq 'Remove') { remove() } elsif ($in{routine} eq 'Remove latest msg') { remove_mbox() } elsif ($in{routine} eq 'shell') { shell() } else { print prtheader(), 'Incorrect routine value!'; } ##--------------------------------------------------------------------------- sub checkpath { die "Variable \$mhonarc: $mhonarc is not a directory.\n" unless -d $mhonarc; die "Variable \$lib: $lib is not a directory.\n" unless -d $lib; die "Variable \$archive: $archive is not a directory.\n" unless -d $archive; die "Variable \$archive: I don't have write access to $archive.\n" unless -r $archive and -w _ and -x _; die "Variable \$mbox: $mbox is not a file.\n" unless -f $mbox; die "Variable \$mbox: I don't have write access to $mbox.\n" unless -r $mbox and -w _; die "Variable \$mrc: $mrc is not a file.\n" unless -f $mrc; } sub autoupdate { my $fwd = shift; if ($pop3) { unless (eof STDIN) { mhaexit("Status: 403 Script Config Obstacle\n\n") if $fwd eq 'fwd'; die "Requested action aborted:\n", "$scriptname is not configured to process messages directly.\n\n"; } else { updatearchive('-add', '-quiet') if popretrieve(); # for invoking via cron } # (or the command line) } else { read STDIN, my $newmail, $msgmaxsize * 1024; # grabs message, that was passed to if (eof STDIN) { # this script, for instant update of $newmail =~ s/^(.+)\r?\n(From )/$2/; # the archive my $pw = ($1 or ''); if (defined $msgpw and $pw ne $msgpw) { mhaexit("Status: 403 Password Check Failed\n\n") if $fwd eq 'fwd'; die "Requested action aborted:\nPassword check failed\n\n"; } elsif ($newmail =~ /^From /) { updatembox(\$newmail); updatearchive('-add', '-quiet'); print "Status: 204 No Content\n\n" if $fwd eq 'fwd'; } else { die 'Unexpected request; no action taken'; } } else { mhaexit("Status: 413 Message Too Large\n\n") if $fwd eq 'fwd'; die "Requested action aborted:\n", "The message size exceeds the maximum size ($msgmaxsize KiB)\n", "as specified in $scriptname.\n\n"; } } } sub refresh { popretrieve() if $pop3; updatearchive('-add', '-quiet'); print "Location: $indexURL\n\n"; # loads the updated main index page } sub readinput { my $in = ''; if ($ENV{REQUEST_METHOD} eq 'POST') { my $len = $ENV{CONTENT_LENGTH}; $len <= 131072 or die "Too much data submitted.\n"; read(STDIN, $in, $len) == $len or die "Reading of posted data failed.\n"; } else { $in = $ENV{QUERY_STRING}; } $in =~ tr/+/ /; for (split /[&;]/, $in) { my ($name, $value) = split /=/, $_, 2; $value =~ s/%(..)/chr(hex $1)/eg if $value; $in{$name} = $value; } } sub checkpw { my $result; $wrongpw = ''; (my $cookiename = $name) =~ s/\W/_/g; if ($ENV{HTTP_COOKIE}) { for (split /; /, $ENV{HTTP_COOKIE}) { my ($key, $val) = split /=/; if ($key eq $cookiename) { $result = 1 if $val eq ($encrypt ? $adminpw : crypt $adminpw, 'pw'); last; } } } unless ($result) { if ($in{pw}) { my $pw = $encrypt ? crypt $in{pw}, $adminpw : $in{pw}; if ($pw eq $adminpw) { print "Set-cookie: $cookiename=", ($encrypt ? $pw : crypt $pw, 'pw'), "\n"; $result = 1; } else { $wrongpw = '

Incorrect password!

\n"; } } elsif ($in{routine} eq 'forms') { mhaexit(prtheader(), "Your browser is set to refuse cookies.
Change that\n", 'setting to accept at least session cookies, and try again.'); } elsif ($in{routine}) { mhaexit(prtheader(), ' '); } } $result } sub loginpage { return htmlbegin(), qq|Login to $name - Admin

Login to $name - Admin

$wrongpw

Enter password:


|; } sub frames { return prtheader(), qq| $name - Admin |; } sub htmlbegin { return prtheader(), qq| |; } sub forms { return htmlbegin(), qq|

$name - Admin

Add
message(s)
Remove message(s)
From archive (msg #):
From mailbox file:
Other MHonArc
command
MHonArc doc. Main Index
Path to resource file:
\$mrc
Path to archive
directory:
\$archive
Path to mailbox file:
\$mbox
|; } sub adminstart { return prtheader(), '
', 'Output will appear here';
}

sub add {
    print prtheader(), '
', "Add messages to $name\n\n";
    popretrieve() if $pop3;
    updatearchive('-add');
}

sub remove {
    print prtheader(), '
', "Remove messages from $name\n\n";
    updatearchive('-rmm', $in{msgnumber});
}

sub remove_mbox {
    my @msgs = read_mbox($mbox);
    my $deleted = $mbox . '_deleted';
    my $latestmsg = pop @msgs;

    open FILE, ">> $deleted" or die "Couldn't open $deleted\n$!";
    flock FILE, 2;
    print FILE @$latestmsg;
    close FILE;

    open FILE, "> $mbox" or die "Couldn't open $mbox\n$!";
    flock FILE, 2;
    print FILE @$_ for @msgs;
    close FILE;

    print prtheader(), '
', "Remove raw messages from $name\n\n",
          "The latest message was removed from $mbox\nand appended to $deleted.\n\n",
          'The mailbox file now includes ', scalar @msgs, ' message',
          (scalar @msgs == 1 ? '.' : 's.');
}

sub shell {
    my $checkpop;
    require 'shellwords.pl';
    @ARGV = shellwords($in{command});    # the list of entered options is assigned
    my $command = shift @ARGV;           # to @ARGV, and with that passed to MHonArc
    for my $element (@ARGV)	{
        if    ($element eq '$archive') { $element = $archive }
        elsif ($element eq '$mbox')    { $element = $mbox }
        elsif ($element eq '$mrc')     { $element = $mrc }
        elsif ($element eq '-add')     { $checkpop = 1 }
    }
    print prtheader(), '
';
    if ( $command =~ /^(?:mhonarc|mha-d)/ ) {
        print "Command executed:\n$command @ARGV\n\nOutput:\n";
        popretrieve() if $pop3 and $checkpop;
        require File::Spec->catfile($mhonarc, $command)
          or die "Couldn't invoke $command\n$!";
    } else {
        print "That wasn't a MHonArc command, was it?";
    }
}

##---------------------------------------------------------------------------

sub updatembox {
    my $msgref = shift;
    open FILE, ">> $mbox" or die "Couldn't open $mbox\n$!";
    flock FILE, 2;
    print FILE ($pop3 ? join '', @$msgref : $$msgref), "\n\n";
    close FILE;
}

sub updatearchive {
    @ARGV = (@_, '-outdir', $archive);
    push @ARGV, $mbox unless $in{routine} eq 'remove';
    require 'mhamain.pl' or die "Couldn't require mhamain.pl\n$!";
    mhonarc::initialize();         # skipped the 'mhonarc' program file in
    mhonarc::process_input();      # order to avoid the ending exit call
}

sub popretrieve {
    require Net::POP3;
    my $pop = Net::POP3->new($pophost);
    my $cnt;

    POP: {
        $cnt = $pop->login($user, $password);
        my $msgs = $pop->list();
        last POP unless $cnt > 0;

        my ($msg, $msgnum, $line, $list, $to, $subject, $tmp, $key, $aref, %header);

        ## Loop thru each message and append to $newmail
        foreach $msgnum (sort { $a <=> $b } keys %$msgs) {
            $msg = $pop->get($msgnum);
            next unless defined $msg;

            ## Grab message header
            %header = ( );  $aref = undef;
            foreach $line (@$msg) {
                last if $line =~ /^$/;
                $tmp = $line; chomp $tmp;
                if ($tmp =~ s/^\s//)  {
                    next unless defined $aref;
                    $aref->[$#$aref] .= $tmp;
                    next;
                }
                if ($tmp =~ s/^([^:]+):\s*//) {
                    $key = lc $1;
                    if (defined $header{$key}) { $aref = $header{$key} }
                    else                       { $aref = $header{$key} = [ ] }
                    push @$aref, $tmp;
                    next;
                }
            }

            unshift @$msg, "From username\@domain.com Sat Jan  1 00:00:00 2000\n";
            updatembox($msg);
            $pop->delete($msgnum);
        }
        $pop->quit();
        undef $pop;
        print "$cnt message".($cnt > 1 ? 's' : '')." from $user\@$pophost\n",
              "appended to $mbox\n\n" if $in{routine} eq ('add' or 'shell');
    }
    $pop->quit() if defined $pop;
    $cnt
}

sub read_mbox {
# This subroutine returns a list of references, each of which is a
# reference to an array containing one message. The routine was copied
# from Mail::Util.pm v1.51, included in the CPAN library MailTools.
    my $file  = shift;
    my @mail  = ();
    my $mail  = [];
    my $blank = 1;
    local *FH;
    local $_;
    open FH, "< $file" or die "Couldn't open '$file'\n$!";
    while () {
        if ($blank and /\AFrom .*\d{4}/) {
            push @mail, $mail if @$mail;
            $mail = [ $_ ];
            $blank = 0;
        } else {
            $blank = m#\A\Z#o ? 1 : 0;
            push @$mail, $_;
        }
    }
    push @mail, $mail if @$mail;
    close FH;
    @mail
}

MHonArc-2014-05-05-snap/contrib/README.txt0000644004705000001440000000313710243725163016521 0ustar  ehoodusersREADME for MHonArc/contrib

  The files in this directory are contributed by others and are not
  directly supported by the MHonArc development team.  They are
  provided AS-IS and on the terms specified by the contributers
  themselves.

CONTENTS of directory:
---------------------------------------------------------------------------
mhastart.pl	Contributer: Gunnar Hjalmarsson, mailbox(AT)gunnar.cc

		CGI program for maintaining MHonArc archives.  Its
		intended for users that utilize a web hosting service
		that does not provide shell access.

		Documentation in POD format included in the source.
		HTML version is available at
		

		Latest version of script is available at
		

---------------------------------------------------------------------------
mhn2mbox.pl	Contributer: Anthony W, anthonyw(AT)albany.net

		A utility for converting MHonArc html archives into
		pseudo mbox format.

		See script source code for configuration information.

		NOTE: Original location of this script is no longer
		valid.  A version has been included here for the
		benefit of MHonArc users.

---------------------------------------------------------------------------
prsfrom.pl	Contributer: A.R. Burgers, burgers(AT)ecn.nl

		Supply missing Date: and From: fields to mailboxes.

		Documentation in POD format included in the source.
		Use the pod2* utilities provided with Perl to convert
		POD documentation into desired format.

---------------------------------------------------------------------------
$Date: 2005/05/21 21:38:59 $
MHonArc-2014-05-05-snap/contrib/prsfrom.pl0000755004705000001440000001277207451301020017045 0ustar  ehoodusers#!/net/nf/bin/perl
#$Id: prsfrom.pl 1.2 1998/01/21 12:09:26 aburgers Exp aburgers $
# parse command-line arguments

require('getopt.pl');&Getopt('o');

# print a help message

if ($opt_h) {
	print <From sender date

The new Date: and From: fields are written
directly after the message separator. A new mailbox is written to
standard output or the file specified with the -o option. If the -o
option is used some statistics are reported to standard output.
HELP
}

# open output-file

if ($opt_o) {
	open(OUT,">$opt_o") || die "Error opening file $opt_o\n";
	select OUT;
}

$msg = 0;
$inheader=0;
$date_found = 0;
$received_found = 0;
$from_found = 0;

# method
#
# The message header is assumed to start at a line starting with /^From /
# and end at the next blank line.
# The sender and the date are extracted from the /^From / line. The
# lines of the header are stored in array @headerlines and checked
# for the presence of Date:, Received: and From: fields.
#
# $inheader=1 means we are processing a header
# $inheader=0 means we are outside the a header

while (<>) {
	if ($inheader) { # process message-header
		push(@headerlines,$_);
		study;
		if      (/^date:/i) { 		# check for date field
			$date_found = 1;
		} elsif (/^received:/i) {	# check for received field
			$received_found = 1;
		} elsif (/^from:/i) {		# check for from field
			$from_found = 1;
		} elsif (/^\s*$/) {		# blank line ending header
			unless($date_found || $received_found) {
				if ($date) {
					print "Date: $date\n";
					$print_date++;
				} else {
					warn "No date in From field\n";
				}
			}
			unless($from_found) {
				if ($adress) {
					print "From: $adress\n";
					$print_from++;
				} else {
					warn "No adress in From field\n";
				}
			}

			# Copy header to new mailbox

			for $line (@headerlines) {
				print $line;
			}

			# Reset counters

			$inheader = 0;
			undef @headerlines;
			$date_found = 0;
			$received_found = 0;
			$from_found = 0;
		}
	}
	else { # process message-body and message separator
		if (/^From /) { #test for message-header
			($dum,$adress,$date) = split(' ',$_,3);
			$date   =~ s/\s*$//;
			$adress =~ s/\s*$//;
			$inheader = 1;
			$msg++;
		}
		print;
	}
}

# print statistics

if ($opt_o) {
	select STDOUT;
	print "Total number of messages found: $msg\n";
	print "Added a Date field to $print_date messages\n" if ($print_date);
	print "Added a From field to $print_from messages\n" if ($print_from);
}

__END__

=head1 NAME

B - supply missing Date: and From: fields to mailboxes

=head1 SYNOPSIS

B [B<-o> F] [F]

B [B<-h>]

=head1 DESCRIPTION

B is a tool meant to be used in conjunction with B.
B extracts the date from a message from Date: or Received:
fields from the message-header. The sender is extracted from a From:
field. There are several cases when these fields are missing ( e.g.
out-boxes of Eudora, DEC-mailx). In all these cases it is possible to
extract the sender and the date from the message separator line.

B checks messages in mailbox F (or standard input
if F is not specified) for the presence of Date:,
Received:  and From: fields. If information is missing B
attempts to construct these fields from the message separator.
B assumes the message are separated by a line of the following
form.

>From sender date

The new Date: and From: fields are written directly after the message
separator. A new mailbox is written to standard output or the file
specified with the -o option. If the -o option is used some statistics
are reported to standard output.

If the -h option is specified a usage summary is written to standard
output.

=head2 Options

=over

=item B<-h>

A usage summary is written to standard output. No further processing is
done

=item B<-o> F

Default the new mailbox is written to standard output. With the
-o option a file to receive the new mailbox can be specified.
If the -o option is specified, some statistics are written
to standard output.

=back

=head1 RESTRICTIONS

B also changes the headers of message in
mailboxes included as attachments in other message.

=head1 RETURN VALUE

The return value of B is always 0

=head1 SEE ALSO

=for html
See the mhonarc home-page.

=head1 AUTHOR

=begin latex

A.R. Burgers\\
Netherlands Energy Research Foundation ECN\\
P.O. Box 1, 1755 ZG Petten, The Netherlands\\
e-mail: burgers@ecn.nl

=end latex

=for text
 A.R. Burgers
 Netherlands Energy Research Foundation ECN
 P.O. Box 1, 1755 ZG Petten, The Netherlands
 e-mail: burgers@ecn.nl

=for html
A.R. Burgers 
Netherlands Energy Research Foundation ECN
P.O. Box 1, 1755 ZG Petten, The Netherlands
e-mail: burgers@ecn.nl MHonArc-2014-05-05-snap/contrib/mhn2mbox.pl0000755004705000001440000002560110241527714017115 0ustar ehoodusers#!/usr/bin/perl ##---------------------------------------------------------------------------## ## File: ## mhn2mbox ## Version: ## 0.38 Nov 28 12:36:27 EST 2002 ## Author: ## Anthony W anthonyw@albany.net ## Description: ## A utility for converting MHonArc html archives into pseudo mbox ## format. ## Usage: ## mhn2mbox /path/to/mhonarc/archives [ your-output-file ] ## ##---------------------------------------------------------------------------## ## Copyright (C) 2000 AnthonyW anthonyw@albany.net ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## # Library where MHonArc libs # are located. CHANGE THIS TO MATCH YOUR SITE use lib '/usr/lib/perl5/site_perl/5.6.0'; use HTML::Entities; require 'mhamain.pl'; require 'base64.pl'; use strict; my $NoArgs = 1; my $USAGE = "Usage: $0 html_dir [output_file]\n"; my $HTML_DIR = shift || die $USAGE ; my $OUTPUT_FILE = shift || '-'; # write to STDOUT by default my $debug = $ENV{'CMD_DEBUG'}; print STDERR "HTML_DIR=$HTML_DIR\n" if $debug; MAIN: { mhonarc::initialize(); #mhonarc::get_resources(); print STDERR "MHonArc initialized.\n" if $debug; require 'ewhutil.pl'; require 'mhtime.pl'; require 'mhutil.pl'; local(*DIR); print STDERR "Reading $HTML_DIR.\n" if $debug; opendir(DIR, $HTML_DIR) || die qq/Unable to open "$HTML_DIR": $!/; my @files = grep(/^msg/i, readdir(DIR)); closedir(DIR); open (MBOXFILE,">$OUTPUT_FILE") || die qq/Unable to open "$OUTPUT_FILE": $!/; foreach (sort @files) { my $name = "$HTML_DIR/" . $_ ; print STDERR "working on: $name\n" if $debug; &load_data($name); print MBOXFILE "\n\n"; # sometimes necessary to seperate messages } close (MBOXFILE); } ##---------------------------------------------------------------------------## ## load_data: Function to read information from the headers of the html ## files produced by mhonarc. Adapted from mhmsgfile.pl ## sub load_data { my $addendum = my $contype = my $index = my $datestr = ""; my $from_addr = my $email_addr = my $binfile = ""; my $description = my $docname = my $boundary = ""; my $filename = shift; # Name of file to read local(*MSGFILE); my @Derived = (); my @bodytext = (); my @array = (); if (!open(MSGFILE, $filename)) { warn qq/Warning: Unable to open "$filename": $!\n/; return 0; } my $href = parse_data(\*MSGFILE); close(MSGFILE); my $date = $href->{'date'}[0]; # $day[$wday].', '.$d2[$mday].' '.$month[$mon].' '.($year+1900).' '.$d2[$hour].':'.$d2[$min].':'.$d2[$sec].' GMT'; ## Determine date of message if (($date =~ /\S/) && (@array = mhonarc::parse_date($date))) { $index = mhonarc::get_time_from_date(@array[1..$#array]); } else { $index = time; $date = mhonarc::time2str("", $index, 1) unless $date =~ /\S/; } if (defined($href->{'from-r13'})) { $from_addr = mhonarc::mrot13($href->{'from-r13'}[0]); $email_addr = &extract_email_address($from_addr); #$email_addr = mhonarc::extract_email_address($from_addr); print MBOXFILE "From $email_addr $date\n"; print MBOXFILE "From: $from_addr\n"; } elsif (defined($href->{'from'})) { $from_addr = $href->{'from'}[0]; $email_addr = &extract_email_address($from_addr); #$email_addr = mhonarc::extract_email_address($from_addr); print MBOXFILE "From $email_addr $date\n"; print MBOXFILE "From: $from_addr\n"; } else { print STDERR "WARNING: From Anonymous\n" if $debug; $from_addr = 'Anonymous'; $email_addr = mhonarc::extract_email_address($from_addr); print MBOXFILE "From $email_addr $date\n"; print MBOXFILE "From: $from_addr\n"; } print MBOXFILE "Date: $date\n"; if (defined($href->{'msgtoheader'})) { print MBOXFILE "To: $href->{'msgtoheader'}[0]\n"; } if (defined($href->{'subject'})) { print MBOXFILE "Subject: $href->{'subject'}[0]\n"; } if (defined($href->{'reference'})) { print MBOXFILE "In-Reply-To: <$href->{'reference'}[0]>\n"; } if (defined($href->{'message-id'})) { print MBOXFILE "Message-ID: <$href->{'message-id'}[0]>\n"; } print MBOXFILE "MIME-Version: 1.0\n"; if (defined($href->{'content-type'})) { $contype = $href->{'content-type'}[0]; } elsif (defined($href->{'contenttype'})) { # older versions $contype = $href->{'contenttype'}[0]; } if (defined($href->{'msgbodytext'})) { push(@bodytext, @{$href->{'msgbodytext'}}) ; } if ($contype =~ /multipart/i ) { $boundary = join("", $$,'.',time,'.',$contype); if (defined($href->{'derived'})) { print MBOXFILE "Content-Type: $contype; boundary=\"Boundary..$boundary\"\n"; push (@Derived, @{$href->{'derived'}}); print STDERR "Attachments: ",join(',',@Derived),"\n" if $debug; pop (@bodytext); foreach $binfile (reverse @Derived) { $description = pop(@bodytext); $docname = $binfile; $addendum .= "\n--Boundary..$boundary\n"; $addendum .= "Content-Type: application\/octet-stream\; name=\"$docname\"\n"; $addendum .= "Content-Transfer-Encoding: base64\n"; $addendum .= "Content-Disposition: attachment\; filename=\"$docname\"\n"; $addendum .= "Content-Description: \"$description\"\n\n"; $addendum .= join("", mime_encode("$HTML_DIR/$binfile")); } print MBOXFILE "\n--Boundary..$boundary\n"; print MBOXFILE "Content-Type: text/plain\n"; print MBOXFILE "Content-Transfer-Encoding: 7bit\n"; print MBOXFILE join("\n", @bodytext); print MBOXFILE "\n"; print MBOXFILE "$addendum"; print MBOXFILE "--Boundary..$boundary--\n\n"; } else { print MBOXFILE "Content-Type: text\/plain\n"; print MBOXFILE join("\n", @bodytext); } } else { print MBOXFILE "Content-Type: $contype\n\n"; print MBOXFILE join("\n", @bodytext); } } ##---------------------------------------------------------------------------## ## parse_data(): Function to parse the initial comment ## declarations of a MHonArc message file into a hash. A refernce ## to resulting hash is returned. Keys are the field names, and ## values are arrays of field values. Adapted from mhmsgfile.pl ## sub parse_data { my $fh = shift; # An open filehandle my $start = "true"; my $head = "false"; my $subj = "false"; my $tail = "false"; my $body = "false"; my ($field, $value); my $AddrExp = '[^()<>@,;:\/\s"\'&|]+@[^()<>@,;:\/\s"\'&|]+'; my %field = (); local($_); while (<$fh>) { if (/^/) { $start = "false"; next; } if (/^/) { $subj = "true"; } if (/^$//; s/(.*)<\/a>/$7/ig; s/<//g; s/"/"/g; ($field, $value) = split(/: /, $_, 2); push(@{$field{lc $field}}, mhonarc::uncommentize($value)); next; } if ($head eq "true") { if (/^
  • To<.*?>:/i) { s/<\/li>//ig; s/<\/ul>//ig; s/(.*)<\/a>/$3/ig; s/<//g; s/"/"/g; chomp; ($field, $value) = split(/: /, $_, 2); $field = "msgtoheader"; push(@{$field{lc $field}}, $value); $head = "false" ; } next; } if ($body eq "true") { # Extract URLs chomp; next if //; next if /^<(.*?)ul>$/i; $_=decode_html($_); s/(.*)<\/a>/$4/ig ; $field = "msgbodytext"; $value = $_ ; chomp; push(@{$field{lc $field}}, $value); next; } } \%field; } ##---------------------------------------------------------------------------## ## subroutine to base64 encode a file ##---------------------------------------------------------------------------## sub mime_encode { my $file = shift ; my @encoded_data = (); local $/; # enable data slurp open (MMENCODE, "$file"); print STDERR "MIME-encoding: $file\n" if $debug; @encoded_data = base64::b64encode() ; close MMENCODE; return @encoded_data; } ##---------------------------------------------------------------------------## ## Subroutine to remove html tags from a string ##---------------------------------------------------------------------------## sub decode_html { s/<[^>]*>//gs; # from page 716 of the "Perl Cookbook" $_=decode_entities($_); return $_; } ##---------------------------------------------------------------------------## ## Subroutine to extract email addresses. Taken from mhutil.pl ##---------------------------------------------------------------------------## sub extract_email_address { ## Regexp for address/msg-id detection (looks like cussing in cartoons) my $AddrExp = '[^()<>@,;:\/\s"\'&|]+@[^()<>@,;:\/\s"\'&|]+'; return '' unless defined $_[0]; my $str = shift; if ($str =~ /($AddrExp)/o) { return $1; } if ($str =~ /<(\S+)>/) { return $1; } if ($str =~ s/\([^\)]+\)//) { $str =~ /\s*(\S+)\s*/; return $1; } $str =~ /\s*(\S+)\s*/; return $1; } ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/examples/0000755004705000001440000000000012332046112015164 5ustar ehoodusersMHonArc-2014-05-05-snap/examples/utf-8-encode.mrc0000644004705000001440000000502510025415406020072 0ustar ehoodusers utf-8; MHonArc::UTF8::to_utf8; MHonArc/UTF8.pm <-- With data translated to UTF-8, it simplifies CHARSETCONVERTERS --> default; mhonarc::htmlize <-- Need to also register UTF-8-aware text clipping function --> MHonArc::UTF8::clip; MHonArc/UTF8.pm $IDXTITLE$

    $IDXTITLE$

    $TIDXTITLE$

    $TIDXTITLE$

    $SUBJECTNA$ MHonArc-2014-05-05-snap/examples/def-mime.mrc0000644004705000001440000002675607740363347017415 0ustar ehoodusers application/ms-tnef; m2h_null::filter; mhnull.pl application/octet-stream; m2h_external::filter; mhexternal.pl application/*; m2h_external::filter; mhexternal.pl application/x-patch; m2h_text_plain::filter; mhtxtplain.pl audio/*; m2h_external::filter; mhexternal.pl chemical/*; m2h_external::filter; mhexternal.pl model/*; m2h_external::filter; mhexternal.pl image/*; m2h_external::filter; mhexternal.pl message/delivery-status; m2h_text_plain::filter; mhtxtplain.pl message/external-body; m2h_msg_extbody::filter; mhmsgextbody.pl message/partial; m2h_text_plain::filter; mhtxtplain.pl text/*; m2h_text_plain::filter; mhtxtplain.pl text/enriched; m2h_text_enriched::filter; mhtxtenrich.pl text/html; m2h_text_html::filter; mhtxthtml.pl text/plain; m2h_text_plain::filter; mhtxtplain.pl text/richtext; m2h_text_enriched::filter; mhtxtenrich.pl text/tab-separated-values; m2h_text_tsv::filter; mhtxttsv.pl text/x-html; m2h_text_html::filter; mhtxthtml.pl video/*; m2h_external::filter; mhexternal.pl x-sun-attachment; m2h_text_plain::filter; mhtxtplain.pl m2h_external::filter; inline 7bit; as-is; 8bit; as-is; binary; as-is; base64; base64::b64decode; base64.pl quoted-printable; quoted_printable::qprdecode; qprint.pl x-uuencode; base64::uudecode; base64.pl xuue; base64::uudecode; base64.pl uuencode; base64::uudecode; base64.pl plain; mhonarc::htmlize; us-ascii; mhonarc::htmlize; iso-8859-1; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-2; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-3; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-4; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-5; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-6; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-7; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-8; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-9; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-10; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-11; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-13; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-14; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-15; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-8859-16; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-2022-jp; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm iso-2022-kr; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm euc-jp; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm utf-8; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp866; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp932; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp936; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp949; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp950; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1250; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1251; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1252; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1253; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1254; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1255; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1256; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1257; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm cp1258; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm koi-0; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm koi-7; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm koi8-a; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm koi8-b; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm koi8-e; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm koi8-f; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm koi8-r; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm koi8-u; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm gost-19768-87; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm viscii; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm big5-eten; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm big5-hkscs; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm gb2312; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm macarabic; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm maccentraleurroman; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm maccroatian; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm maccyrillic; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm macgreek; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm machebrew; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm macicelandic; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm macromanian; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm macroman; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm macthai; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm macturkish; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm hp-roman8; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm default; -ignore- us-ascii; ascii us-ascii; ansi_x3.4-1968 us-ascii; iso646 us-ascii; iso646-us us-ascii; iso646.irv:1991 us-ascii; cp367 us-ascii; ibm367 us-ascii; csascii us-ascii; iso-ir-6 us-ascii; us iso-8859-1; latin1 iso-8859-1; l1 iso-8859-1; iso_8859_1 iso-8859-1; iso_8859-1:1987 iso-8859-1; iso8859-1 iso-8859-1; iso8859_1 iso-8859-1; 8859-1 iso-8859-1; 8859_1 iso-8859-1; cp819 iso-8859-1; ibm819 iso-8859-1; x-mac-latin1 iso-8859-1; iso-ir-100 iso-8859-2; latin2 iso-8859-2; l2 iso-8859-2; iso_8859_2 iso-8859-2; iso_8859-2:1987 iso-8859-2; iso8859-2 iso-8859-2; iso8859_2 iso-8859-2; 8859-2 iso-8859-2; 8859_2 iso-8859-2; iso-ir-101 iso-8859-3; latin3 iso-8859-3; l3 iso-8859-3; iso_8859_3 iso-8859-3; iso_8859-3:1988 iso-8859-3; iso8859-3 iso-8859-3; iso8859_3 iso-8859-3; 8859-3 iso-8859-3; 8859_3 iso-8859-3; iso-ir-109 iso-8859-4; latin4 iso-8859-4; l4 iso-8859-4; iso_8859_4 iso-8859-4; iso_8859-4:1988 iso-8859-4; iso8859-4 iso-8859-4; iso8859_4 iso-8859-4; 8859-4 iso-8859-4; 8859_4 iso-8859-4; iso-ir-110 iso-8859-5; iso_8859-5:1988 iso-8859-5; cyrillic iso-8859-5; iso-ir-144 iso-8859-6; iso_8859-6:1987 iso-8859-6; arabic iso-8859-6; asmo-708 iso-8859-6; ecma-114 iso-8859-6; iso-ir-127 iso-8859-7; iso_8859-7:1987 iso-8859-7; greek iso-8859-7; greek8 iso-8859-7; ecma-118 iso-8859-7; elot_928 iso-8859-7; iso-ir-126 iso-8859-8; iso-8859-8-i iso-8859-8; iso_8859-8:1988 iso-8859-8; hebrew iso-8859-8; iso-ir-138 iso-8859-9; latin5 iso-8859-9; l5 iso-8859-9; iso_8859_9 iso-8859-9; iso-8859_9:1989 iso-8859-9; iso8859-9 iso-8859-9; iso8859_9 iso-8859-9; 8859-9 iso-8859-9; 8859_9 iso-8859-9; iso-ir-148 iso-8859-10; latin6 iso-8859-10; l6 iso-8859-10; iso_8859_10 iso-8859-10; iso_8859-10:1993 iso-8859-10; iso8859-10 iso-8859-10; iso8859_10 iso-8859-10; 8859-10 iso-8859-10; 8859_10 iso-8859-10; iso-ir-157 iso-8859-13; latin7 ,l7 iso-8859-14; latin8 ,l8 iso-8859-15; latin9 iso-8859-15; latin0 iso-8859-15; l9 iso-8859-15; l0 iso-8859-15; iso_8859_15 iso-8859-15; iso8859-15 iso-8859-15; iso8859_15 iso-8859-15; 8859-15 iso-8859-15; 8859_15 iso-2022-jp; iso-2022-jp-1 utf-8; utf8 cp932; shiftjis cp932; shift_jis cp932; shift-jis cp932; x-sjis cp932; ms_kanji cp932; csshiftjis cp936; gbk cp936; ms936 cp936; windows-936 cp949: euc-kr cp949: ks_c_5601-1987 cp949: ks_c_5601-1989 cp949: ksc_5601 cp949: iso-ir-149 cp949: windows-949 cp949: ms949 cp949: korean cp950; windows-950 cp1250; windows-1250 cp1251; windows-1251 cp1252; windows-1252 cp1253; windows-1253 cp1254; windows-1254 cp1255; windows-1255 cp1256; windows-1256 cp1257; windows-1257 cp1258; windows-1258 koi-0; gost-13052 koi8-e; iso-ir-111 koi8-e; ecma-113:1986 koi8-r; cp878 gost-19768-87; ecma-cyrillic gost-19768-87; ecma-113 gost-19768-87; ecma-113:1988 big5-eten; big5 big5-eten; csbig5 big5-eten; tcs-big5 big5-eten; tcsbig5 big5-hkscs; big5hk big5-hkscs; big5hkscs big5-hkscs; hkscs-big5 big5-hkscs; hk-big5 gb2312; gb_2312-80 gb2312; csgb2312 gb2312; hz-gb-2312 gb2312; iso-ir-58 gb2312; euc-cn gb2312; chinese gb2312; csiso58gb231280 macarabic; apple-arabic maccentraleurroman; apple-centeuro maccroatian; apple-croatian maccyrillic; apple-cyrillic macgreek; apple-greek machebrew; apple-hebrew macicelandic; apple-iceland macromanian; apple-romanian macroman; apple-roman macthai; apple-thai macturkish; apple-turkish macarabic; x-mac-arabic maccentraleurroman; x-mac-centraleurroman maccroatian; x-mac-croatian maccyrillic; x-mac-cyrillic macgreek; x-mac-greek machebrew; x-mac-hebrew macicelandic; x-mac-icelandic macromanian; x-mac-romanian macroman; x-mac-roman macthai; x-mac-thai macturkish; x-mac-turkish MHonArc-2014-05-05-snap/examples/mhonarc.vim0000644004705000001440000007262312332046112017342 0ustar ehoodusers" Vim syntax file " Language: MHonArc Resource File " Maintainer: Earl Hood " Last change: $Date: 2010/12/31 20:56:38 $ " Adapted from the following: " Language: HTML " Maintainer: Claudio Fleiner " URL: http://www.fleiner.com/vim/syntax/html.vim " Last change: 1998 Mar 28 " Differences " o HTML tags and arguments are highlighted with " Function to separate them from MHonArc markup. " o html_no_rendering is hardcoded to 1. " o htmlSpecialChar is highlighted with Function since " Special is used for resource variables. let html_no_rendering = 1 " Remove any old syntax stuff hanging around syn clear syn case ignore " Known tag names and arg names are colored the same way " as statements and types, while unknwon ones as function. " mark illegal characters syn match htmlError "[<>&]" " tags syn match htmlSpecial contained "\\[0-9][0-9][0-9]\|\\." syn region htmlString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=mhaRcVar,htmlSpecial,javaScriptExpression syn region htmlString contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=mhaRcVar,htmlSpecial,javaScriptExpression syn match htmlValue contained "=[\t ]*[^'" \t>][^ \t>]*"hs=s+1 contains=mhaRcVar,javaScriptExpression syn region htmlEndTag start=++ contains=mhaRcVar,mhaTagName,htmlTagName,htmlTagError syn region htmlTag start=+<[^/]+ end=+>+ contains=mhaTagName,mhaArg,mhaRcVar,htmlString,htmlTagName,htmlArg,htmlValue,htmlTagError,htmlEvent syn match htmlTagError contained "[^>]<"ms=s+1 syn region mhaRcVar start=+\$+ end=+\$+ contains=mhaRcVarArg syn region mhaRcVarArg contained start=+(+ end=+)+ " syn match mhaRcVar "\$[^$]*\$" " BEGIN: MHonArc Tags syn keyword mhaTagName contained addressmodifycode syn keyword mhaTagName contained attachmentdir syn keyword mhaTagName contained attachmenturl syn keyword mhaTagName contained authorbegin syn keyword mhaTagName contained authorend syn keyword mhaTagName contained authsort syn keyword mhaTagName contained noauthsort syn keyword mhaTagName contained botlinks syn keyword mhaTagName contained charsetaliases syn keyword mhaTagName contained charsetconverters syn keyword mhaTagName contained checknoarchive syn keyword mhaTagName contained nochecknoarchive syn keyword mhaTagName contained conlen syn keyword mhaTagName contained noconlen syn keyword mhaTagName contained datefields syn keyword mhaTagName contained daybegin syn keyword mhaTagName contained dayend syn keyword mhaTagName contained dbfileperms syn keyword mhaTagName contained decodeheads syn keyword mhaTagName contained nodecodeheads syn keyword mhaTagName contained defcharset syn keyword mhaTagName contained definederived syn keyword mhaTagName contained definevar syn keyword mhaTagName contained doc syn keyword mhaTagName contained nodoc syn keyword mhaTagName contained docurl syn keyword mhaTagName contained excs syn keyword mhaTagName contained expireage syn keyword mhaTagName contained expiredate syn keyword mhaTagName contained fasttempfiles syn keyword mhaTagName contained nofasttempfiles syn keyword mhaTagName contained fieldorder syn keyword mhaTagName contained fieldsbeg syn keyword mhaTagName contained fieldsend syn keyword mhaTagName contained fieldstore syn keyword mhaTagName contained fieldstyles syn keyword mhaTagName contained fileperms syn keyword mhaTagName contained firstpglink syn keyword mhaTagName contained fldbeg syn keyword mhaTagName contained fldend syn keyword mhaTagName contained followsymlinks syn keyword mhaTagName contained nofollowsymlinks syn keyword mhaTagName contained folrefs syn keyword mhaTagName contained nofolrefs syn keyword mhaTagName contained folupbegin syn keyword mhaTagName contained folupend syn keyword mhaTagName contained foluplitxt syn keyword mhaTagName contained fromfields syn keyword mhaTagName contained gmtdatefmt syn keyword mhaTagName contained gzipexe syn keyword mhaTagName contained gzipfiles syn keyword mhaTagName contained nogzipfiles syn keyword mhaTagName contained gziplinks syn keyword mhaTagName contained nogziplinks syn keyword mhaTagName contained headbodysep syn keyword mhaTagName contained htmlext syn keyword mhaTagName contained icons syn keyword mhaTagName contained iconurlprefix syn keyword mhaTagName contained idxfname syn keyword mhaTagName contained idxlabel syn keyword mhaTagName contained idxpgbegin syn keyword mhaTagName contained idxpgend syn keyword mhaTagName contained idxpgssmarkup syn keyword mhaTagName contained idxprefix syn keyword mhaTagName contained idxsize syn keyword mhaTagName contained include syn keyword mhaTagName contained labelbeg syn keyword mhaTagName contained labelend syn keyword mhaTagName contained labelstyles syn keyword mhaTagName contained lang syn keyword mhaTagName contained lasttpglink syn keyword mhaTagName contained listbegin syn keyword mhaTagName contained listend syn keyword mhaTagName contained litemplate syn keyword mhaTagName contained localdatefmt syn keyword mhaTagName contained lockmethod syn keyword mhaTagName contained mailto syn keyword mhaTagName contained nomailto syn keyword mhaTagName contained mailtourl syn keyword mhaTagName contained main syn keyword mhaTagName contained nomain syn keyword mhaTagName contained maxsize syn keyword mhaTagName contained mhpattern syn keyword mhaTagName contained mimealtprefs syn keyword mhaTagName contained mimeargs syn keyword mhaTagName contained mimedecoders syn keyword mhaTagName contained mimeexcs syn keyword mhaTagName contained mimefilters syn keyword mhaTagName contained mimeincs syn keyword mhaTagName contained modifybodyaddresses syn keyword mhaTagName contained nomodifybodyaddresses syn keyword mhaTagName contained modtime syn keyword mhaTagName contained monthsabr syn keyword mhaTagName contained months syn keyword mhaTagName contained msgbodyend syn keyword mhaTagName contained msgexcfilter syn keyword mhaTagName contained msgfoot syn keyword mhaTagName contained msggmtdatefmt syn keyword mhaTagName contained msghead syn keyword mhaTagName contained msgidlink syn keyword mhaTagName contained msglocaldatefmt syn keyword mhaTagName contained msgpgbegin syn keyword mhaTagName contained msgpgend syn keyword mhaTagName contained msgpgs syn keyword mhaTagName contained nomsgpgs syn keyword mhaTagName contained msgpgssmarkup syn keyword mhaTagName contained msgprefix syn keyword mhaTagName contained msgsep syn keyword mhaTagName contained multipg syn keyword mhaTagName contained news syn keyword mhaTagName contained nonews syn keyword mhaTagName contained newsurl syn keyword mhaTagName contained nextbuttonia syn keyword mhaTagName contained nextbutton syn keyword mhaTagName contained nextlinkia syn keyword mhaTagName contained nextlink syn keyword mhaTagName contained nextpglinkia syn keyword mhaTagName contained nextpglink syn keyword mhaTagName contained nosubjecttxt syn keyword mhaTagName contained notedir syn keyword mhaTagName contained noteia syn keyword mhaTagName contained note syn keyword mhaTagName contained otherindexes syn keyword mhaTagName contained perlinc syn keyword mhaTagName contained posixstrftime syn keyword mhaTagName contained prevbuttonia syn keyword mhaTagName contained prevbutton syn keyword mhaTagName contained prevlinkia syn keyword mhaTagName contained prevlink syn keyword mhaTagName contained prevpglinkia syn keyword mhaTagName contained prevpglink syn keyword mhaTagName contained printxcomments syn keyword mhaTagName contained noprintxcomments syn keyword mhaTagName contained refsbegin syn keyword mhaTagName contained refsend syn keyword mhaTagName contained refslitxt syn keyword mhaTagName contained reverse syn keyword mhaTagName contained noreverse syn keyword mhaTagName contained saveresources syn keyword mhaTagName contained nosaveresources syn keyword mhaTagName contained sort syn keyword mhaTagName contained nosort syn keyword mhaTagName contained spammode syn keyword mhaTagName contained nospammode syn keyword mhaTagName contained ssmarkup syn keyword mhaTagName contained subjectarticlerxp syn keyword mhaTagName contained subjectbegin syn keyword mhaTagName contained subjectend syn keyword mhaTagName contained subjectheader syn keyword mhaTagName contained subjectreplyrxp syn keyword mhaTagName contained subjectstripcode syn keyword mhaTagName contained subjectthreads syn keyword mhaTagName contained nosubjectthreads syn keyword mhaTagName contained subsort syn keyword mhaTagName contained nosubsort syn keyword mhaTagName contained tcontbegin syn keyword mhaTagName contained tcontend syn keyword mhaTagName contained tendbuttonia syn keyword mhaTagName contained tendbutton syn keyword mhaTagName contained tendlinkia syn keyword mhaTagName contained tendlink syn keyword mhaTagName contained textclipfunc syn keyword mhaTagName contained textencode syn keyword mhaTagName contained tfirstpglink syn keyword mhaTagName contained tfoot syn keyword mhaTagName contained thead syn keyword mhaTagName contained thread syn keyword mhaTagName contained nothread syn keyword mhaTagName contained tidxfname syn keyword mhaTagName contained tidxlabel syn keyword mhaTagName contained tidxpgbegin syn keyword mhaTagName contained tidxpgend syn keyword mhaTagName contained tidxpgssmarkup syn keyword mhaTagName contained tidxprefix syn keyword mhaTagName contained timezones syn keyword mhaTagName contained tindentbegin syn keyword mhaTagName contained tindentend syn keyword mhaTagName contained title syn keyword mhaTagName contained tlasttpglink syn keyword mhaTagName contained tlevels syn keyword mhaTagName contained tliend syn keyword mhaTagName contained tlinoneend syn keyword mhaTagName contained tlinone syn keyword mhaTagName contained tlitxt syn keyword mhaTagName contained tnextbuttonia syn keyword mhaTagName contained tnextbutton syn keyword mhaTagName contained tnextinbuttonia syn keyword mhaTagName contained tnextinbutton syn keyword mhaTagName contained tnextinlinkia syn keyword mhaTagName contained tnextinlink syn keyword mhaTagName contained tnextlinkia syn keyword mhaTagName contained tnextlink syn keyword mhaTagName contained tnextpglinkia syn keyword mhaTagName contained tnextpglink syn keyword mhaTagName contained tnexttopbuttonia syn keyword mhaTagName contained tnexttopbutton syn keyword mhaTagName contained tnexttoplinkia syn keyword mhaTagName contained tnexttoplink syn keyword mhaTagName contained toplinks syn keyword mhaTagName contained tprevbuttonia syn keyword mhaTagName contained tprevbutton syn keyword mhaTagName contained tprevinbuttonia syn keyword mhaTagName contained tprevinbutton syn keyword mhaTagName contained tprevinlinkia syn keyword mhaTagName contained tprevinlink syn keyword mhaTagName contained tprevlinkia syn keyword mhaTagName contained tprevlink syn keyword mhaTagName contained tprevpglinkia syn keyword mhaTagName contained tprevpglink syn keyword mhaTagName contained tprevtopbuttonia syn keyword mhaTagName contained tprevtopbutton syn keyword mhaTagName contained tprevtoplinkia syn keyword mhaTagName contained tprevtoplink syn keyword mhaTagName contained treverse syn keyword mhaTagName contained notreverse syn keyword mhaTagName contained tsingletxt syn keyword mhaTagName contained tslicebeg syn keyword mhaTagName contained tslicecontbegin syn keyword mhaTagName contained tslicecontend syn keyword mhaTagName contained tsliceend syn keyword mhaTagName contained tsliceindentbegin syn keyword mhaTagName contained tsliceindentend syn keyword mhaTagName contained tslicelevels syn keyword mhaTagName contained tsliceliendcur syn keyword mhaTagName contained tsliceliend syn keyword mhaTagName contained tslicelinoneend syn keyword mhaTagName contained tslicelinone syn keyword mhaTagName contained tslicelitxtcur syn keyword mhaTagName contained tslicelitxt syn keyword mhaTagName contained tslice syn keyword mhaTagName contained tslicesingletxtcur syn keyword mhaTagName contained tslicesingletxt syn keyword mhaTagName contained tslicesubjectbeg syn keyword mhaTagName contained tslicesubjectend syn keyword mhaTagName contained tslicesublistbeg syn keyword mhaTagName contained tslicesublistend syn keyword mhaTagName contained tslicetopbegincur syn keyword mhaTagName contained tslicetopbegin syn keyword mhaTagName contained tslicetopendcur syn keyword mhaTagName contained tslicetopend syn keyword mhaTagName contained tsort syn keyword mhaTagName contained notsort syn keyword mhaTagName contained tsubjectbeg syn keyword mhaTagName contained tsubjectend syn keyword mhaTagName contained tsublistbeg syn keyword mhaTagName contained tsublistend syn keyword mhaTagName contained tsubsort syn keyword mhaTagName contained notsubsort syn keyword mhaTagName contained ttitle syn keyword mhaTagName contained ttopbegin syn keyword mhaTagName contained ttopbuttonia syn keyword mhaTagName contained ttopbutton syn keyword mhaTagName contained ttopend syn keyword mhaTagName contained ttoplinkia syn keyword mhaTagName contained ttoplink syn keyword mhaTagName contained umask syn keyword mhaTagName contained uselocaltime syn keyword mhaTagName contained nouselocaltime syn keyword mhaTagName contained usinglastpg syn keyword mhaTagName contained nousinglastpg syn keyword mhaTagName contained weekdaysabr syn keyword mhaTagName contained weekdays " END: MHonArc Tags " MHonArc legal arg names syn keyword mhaArg contained chop override " tag names syn keyword htmlTagName contained address applet area a base basefont syn keyword htmlTagName contained big blockquote br caption center syn keyword htmlTagName contained cite code dd dfn dir div dl dt font syn keyword htmlTagName contained form hr html img syn keyword htmlTagName contained input isindex kbd li link map menu syn keyword htmlTagName contained meta ol option param pre p samp span syn keyword htmlTagName contained select small strike style sub sup syn keyword htmlTagName contained table td textarea th tr tt ul var syn match htmlTagName contained "\<\(b\|i\|u\|h[1-6]\|em\|strong\|head\|body\|title\)\>" " legal arg names syn keyword htmlArg contained action syn keyword htmlArg contained align alink alt archive background bgcolor syn keyword htmlArg contained border bordercolor cellpadding syn keyword htmlArg contained cellspacing checked clear code codebase color syn keyword htmlArg contained cols colspan content coords enctype face syn keyword htmlArg contained gutter height hspace syn keyword htmlArg contained link lowsrc marginheight syn keyword htmlArg contained marginwidth maxlength method name prompt syn keyword htmlArg contained rel rev rows rowspan scrolling selected shape syn keyword htmlArg contained size src start target text type url syn keyword htmlArg contained usemap ismap valign value vlink vspace width wrap syn match htmlArg contained "http-equiv" syn match htmlArg contained "href" " Netscape extensions syn keyword htmlTagName contained frame frameset nobr syn keyword htmlTagName contained layer ilayer nolayer spacer syn keyword htmlArg contained frameborder noresize pagex pagey above below syn keyword htmlArg contained left top visibility clip id noshade syn match htmlArg contained "z-index" " special characters syn match htmlSpecialChar "&[^;]*;" " The real comments (this implements the comments as defined by html, " but not all html pages actually conform to it. Errors are flagged. syn region htmlComment start=++ contains=htmlCommentPart,htmlCommentError syn region htmlComment start=++ syn match htmlCommentError contained "[^>+ if !exists("html_no_rendering") " rendering syn region htmlBold start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlBoldUnderline,htmlBoldItalic syn region htmlBold start="" end=""me=e-9 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlBoldUnderline,htmlBoldItalic syn region htmlBoldUnderline contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlBoldUnderlineItalic syn region htmlBoldItalic contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlBoldItalicUnderline syn region htmlBoldItalic contained start="" end="
    "me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlBoldItalicUnderline syn region htmlBoldUnderlineItalic contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlBoldUnderlineItalic contained start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlBoldItalicUnderline contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlBoldUnderlineItalic syn region htmlUnderline start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlUnderlineBold,htmlUnderlineItalic syn region htmlUnderlineBold contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlUnderlineBoldItalic syn region htmlUnderlineBold contained start="" end=""me=e-9 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlUnderlineBoldItalic syn region htmlUnderlineItalic contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmUnderlineItalicBold syn region htmlUnderlineItalic contained start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmUnderlineItalicBold syn region htmlUnderlineItalicBold contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlUnderlineItalicBold contained start="" end=""me=e-9 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlUnderlineBoldItalic contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlUnderlineBoldItalic contained start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlItalic start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlItalicBold,htmlItalicUnderline syn region htmlItalic start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlItalicBold contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlItalicBoldUnderline syn region htmlItalicBold contained start="" end=""me=e-9 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlItalicBoldUnderline syn region htmlItalicBoldUnderline contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlItalicUnderline contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript,htmlItalicUnderlineBold syn region htmlItalicUnderlineBold contained start="" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlItalicUnderlineBold contained start="" end=""me=e-9 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlLink start="[^>]*href\>" end=""me=e-4 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript syn region htmlH1 start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlH2 start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlH3 start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlH4 start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlH5 start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlH6 start="" end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,javaScript syn region htmlHead start="" end=""me=e-7 end=""me=e-5 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,htmlLink,htmlTitle,javaScript syn region htmlTitle start="" end=""me=e-8 contains=htmlTag,htmlEndTag,htmlSpecialChar,htmlPreProc,htmlComment,javaScript endif " JAVA SCRIPT syn keyword htmlTagName contained noscript " html events (i.e. arguments that include javascript commands) syn region htmlEvent contained start=+on[a-z]\+\s*=[\t ]*'+ skip=+\\\\\|\\'+ end=+'+ contains=javaScriptSpecial,javaScriptNumber,javaScriptLineComment,javaScriptComment,javaScriptStringD,javaStringCharacter,javaStringSpecialCharacter,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptFunction,javaScriptBoolean,javaScriptBraces,javaScriptParen,javaScriptParenError syn region htmlEvent contained start=+on[a-z]\+\s*=[\t ]*"+ skip=+\\\\\|\\"+ end=+"+ contains=javaScriptSpecial,javaScriptNumber,javaScriptLineComment,javaScriptComment,javaScriptStringS,javaStringCharacter,javaStringSpecialCharacter,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptFunction,javaScriptBoolean,javaScriptBraces,javaScriptParen,javaScriptParenError " a javascript expression is used as an arg value syn region javaScriptExpression start=+&{+ end=+};+ contains=javaScriptSpecial,javaScriptNumber,javaScriptLineComment,javaScriptComment,javaScriptStringS,javaScriptStringD,javaStringCharacter,javaScriptSpecialCharacter,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptBoolean,javaScriptFunction " javascript starts with + contains=javaScriptSpecial,javaScriptNumber,javaScriptLineComment,javaScriptComment,javaScriptStringS,javaScriptStringD,javaStringCharacter,javaStringSpecialCharacter,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptFunction,javaScriptBoolean,javaScriptBraces,javaScriptParen,javaScriptParenError syn match javaScriptLineComment contained "\/\/.*$" syn match javaScriptCommentSkip contained "^\s*\*\($\|\s\+\)" syn region javaScriptCommentString contained start=+"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1,he=s-1 contains=javaScriptSpecial,javaScriptCommentSkip syn region javaScriptComment2String contained start=+"+ skip=+\\\\\|\\"+ end=+$\|"+ contains=javaScriptSpecial syn region javaScriptComment contained start="/\*" end="\*/" contains=javaScriptCommentString,javaScriptCharacter,javaScriptNumber syn match javaScriptSpecial contained "\\[0-9][0-9][0-9]\|\\." syn region javaScriptStringD contained start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=javaScriptSpecial syn region javaScriptStringS contained start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=javaScriptSpecial syn match javaScriptSpecialCharacter contained "'\\.'" syn match javaScriptNumber contained "-\=\<[0-9]\+L\=\>\|0[xX][0-9a-fA-F]\+\>" syn keyword javaScriptConditional contained if else syn keyword javaScriptRepeat contained while for syn keyword javaScriptBranch contained break continue syn keyword javaScriptOperator contained new in syn keyword javaScriptType contained this var syn keyword javaScriptStatement contained return with syn keyword javaScriptFunction contained function syn keyword javaScriptBoolean contained true false syn match javaScriptBraces contained "[{}]" " catch errors caused by wrong parenthesis syn region javaScriptParen contained start="(" end=")" contains=javaScriptSpecial,javaScriptNumber,javaScriptLineComment,javaScriptComment,javaScriptStringS,javaScriptStringD,javaStringCharacter,javaStringSpecialCharacter,javaScriptConditional,javaScriptRepeat,javaScriptBranch,javaScriptOperator,javaScriptType,javaScriptStatement,javaScriptFunction,javaScriptBoolean,javaScriptBraces,javaScriptParen syn match javaScriptParenError contained ")" syn match javaScriptInParen contained "[{}]" " synchronizing (does not always work if a comment includes legal " html tags, but doing it right would mean to always start " at the first line, which is too slow) syn sync match htmlHighlight groupthere NONE "<[/a-zA-Z]" syn sync match htmlHighlight groupthere javaScript " ##---------------------------------------------------------------------------## ## Copyright (C) 2010 Earl Hood, earl@earlhood.com ## This program is free software; you can redistribute it and/or modify ## it under the same terms as MHonArc itself. ##---------------------------------------------------------------------------## # Modify the following to specify pathname to mhonarc libraries. use lib qw( /usr/lib/MHonArc ); use Symbol; use File::Temp; # Set to pathname of openssl executable. my $openssl = 'openssl'; my @argv = @ARGV; require 'mhamain.pl' || die qq/ERROR: Unable to require "mhamain.pl"\n/; # Variable that holds the raw header text of the current message my $current_header_txt = ''; #$mhonarc::Debug = 1; &mhonarc::initialize(); # Message head callback function to capture raw header text. # This is needed so we can print it out to temp file when openssl # is used to extract signed message # $mhonarc::CBMessageHeadRead = sub { my $fields = shift; $current_header_txt = shift; $current_header_txt .= "\n"; }; # Raw message body read callback: If application/x-pkcs7-mime signed # data, openssl used to extract contents and then we replace # body variable to extracted contents for mhonarc to parse and archive. # $mhonarc::CBRawMessageBodyRead = sub { my $fields = shift; my $data_ref = shift; my $ctype = $fields->{'content-type'}[0]; # If not signed-data, we return immediately if (!$ctype || $ctype !~ m{application/x-pkcs7-mime} || $ctype !~ m{signed-data}) { return 1; } # Get here, use openssl to extract main data. # Write input data to temp file for use by openssl. my $tmp = new File::Temp(); syswrite($tmp, $current_header_txt); # openssl requires mail headers syswrite($tmp, $$data_ref); # Open pipe to openssl to extract the data: The command-line # options to make this work is non-intuitive. Luckily, I found # a page on the web that listed the right options for extracting # the content w/o the need to validate the signature. my $handle = gensym; mhonarc::cmd_pipe_open($handle, $openssl, 'smime', '-verify', '-in', $tmp->filename, '-noverify'); my $new_data = join('', <$handle>); close($handle); close($tmp); # Parse the sub-header from extracted data and update # main fields to use them over original fields. my($sub_header, $txt) = readmail::MAILread_header(\$new_data); foreach my $key (keys %$sub_header) { $fields->{$key} = $sub_header->{$key}; } if ($sub_header->{'content-type'}) { # Make sure update mhonarc's meta field for content-type my $ctype = $sub_header->{'content-type'}[0]; if ($ctype =~ m%^\s*([\w\-\./]+)%) { $fields->{'x-mha-content-type'} = $1; } } # IMPORTANT: Make sure CTE is adjusted to reflect extracted data if (!$sub_header->{'content-transfer-encoding'}) { $fields->{'content-transfer-encoding'} = [ '7bit' ]; } # Replace message data to what was extracted and let mhonarc parse it. $$data_ref = $new_data; return 1; }; &mhonarc::process_input(@argv); MHonArc-2014-05-05-snap/examples/icons.mrc0000644004705000001440000000527007740363347017031 0ustar ehoodusers
    Last update: $LOCALDATE$
    $NUMOFMSG$ messages

    Messages listed in chronological order. Listing format is the following:

    * Subject From


    * $SUBJECT$ $FROMNAME$
    -default- subject:strong from:strong -default- subject:strong from:strong */*;[20x22]/icons/generic.gif application/*;[20x22]/icons/generic.gif application/msword;[20x22]/icons/layout.gif application/octet-stream;[20x22]/icons/binary.gif application/pdf;[20x22]/icons/pdf.gif application/postscript;[20x22]/icons/ps.gif application/rtf;[20x22]/icons/layout.gif application/x-csh;[20x22]/icons/script.gif application/x-dvi;[20x22]/icons/dvi.gif application/x-gtar;[20x22]/icons/tar.gif application/x-gzip;[20x22]/icons/compressed.gif application/x-ksh;[20x22]/icons/script.gif application/x-latex;[20x22]/icons/tex.gif application/x-patch;[20x22]/icons/patch.gif application/x-script;[20x22]/icons/script.gif application/x-sh;[20x22]/icons/script.gif application/x-tar;[20x22]/icons/tar.gif application/x-tex;[20x22]/icons/tex.gif application/x-zip-compressed;[20x22]/icons/compressed.gif application/zip;[20x22]/icons/compressed.gif audio/*;[20x22]/icons/sound1.gif chemical/*;[20x22]/icons/sphere2.gif image/*;[20x22]/icons/image2.gif message/external-body;[20x22]/icons/link.gif multipart/*;[20x22]/icons/layout.gif text/*;[20x22]/icons/text.gif video/*;[20x22]/icons/movie.gif m2h_external::filter; useicon inline MHonArc-2014-05-05-snap/examples/frames.mrc0000644004705000001440000003751107740363347017176 0ustar ehoodusers FRAME-MAIN target="MAIN" FRAME-IDX target="INDEX" NAV-LINKS
    Thread Links Date Links
    $BUTTON(TPREV)$ $BUTTON(TNEXT)$ Index $BUTTON(PREV)$ $BUTTON(NEXT)$ Index
    IDXPG-TBL-LINKS-ATTRS width="100%" border=0 cellpadding=0 cellspacing=0
    50 frm$MSGNUM$.html Message View nav$MSGNUM$.html Message Navigation $NAV-LINKS$ $MAIN-TITLE$ (thread) >> >> << <<
    Page $PAGENUM$ of $NUMOFPAGES$
    <<<< $PGLINK(TPREV)$ $PGLINK(TNEXT)$ >>>>


    <<<< $PGLINK(TPREV)$ $PGLINK(TNEXT)$ >>>>
    Page $PAGENUM$ of $NUMOFPAGES$
  • $SUBJECTNA$
    $FROMNAME$
  • $FROMNAME$
  • $SUBJECTNA$, $FROMNAME$
  • Possible follow-ups
  • $SUBJECTNA$, (continued)
    $MAIN-TITLE$ (date) >> >> << <<
    Page $PAGENUM$ of $NUMOFPAGES$
    <<<< $PGLINK(PREV)$ $PGLINK(NEXT)$ >>>>


    <<<< $PGLINK(PREV)$ $PGLINK(NEXT)$ >>>>
    Page $PAGENUM$ of $NUMOFPAGES$
  • $SUBJECTNA$
    • $FROMNAME$
  • $SUBJECTNA$


    subject xref -default-:strong -default-:

    $MSGID$ Partial thread listing: $TSLICE$ 0:4
    Next Next Prev Prev Next Next Prev Prev text/plain:quote maxwidth=78 iso-8859-1:-decode- MHonArc-2014-05-05-snap/examples/secure.mrc0000644004705000001440000000304011512243115017153 0ustar ehoodusers text/plain text/html text/html; m2h_text_plain::filter; mhtxtplain.pl text/x-html; m2h_text_plain::filter; mhtxtplain.pl text/html; disableflowed text/x-html; disableflowed MHonArc-2014-05-05-snap/examples/utf-8.mrc0000644004705000001440000000376210025415406016645 0ustar ehoodusers plain; mhonarc::htmlize; default; MHonArc::UTF8::str2sgml; MHonArc/UTF8.pm MHonArc::UTF8::clip; MHonArc/UTF8.pm $IDXTITLE$

    $IDXTITLE$

    $TIDXTITLE$

    $TIDXTITLE$

    $SUBJECTNA$ MHonArc-2014-05-05-snap/examples/date.mrc0000644004705000001440000000263407740363347016634 0ustar ehoodusers %B %d, %y
    $MSGLOCALDATE$
    $MSGLOCALDATE(CUR;%H:%M)$ $SUBJECT$ $FROMNAME$ $NOTE$
    MHonArc-2014-05-05-snap/examples/mha-preview0000755004705000001440000001774010262365435017363 0ustar ehoodusers#!/usr/local/bin/perl ##---------------------------------------------------------------------------## ## File: ## $Id: mha-preview,v 1.4 2005/07/05 02:06:21 ehood Exp $ ## Author: ## Earl Hood earl@earlhood.com ## Description: ## Custom MHonArc-based program that supports $X-MSG-PREVIEW$ ## resource variable using the callback API. ## ## Invoke program with -man option to see manpage. ##---------------------------------------------------------------------------## ## Copyright (C) 2002,2005 Earl Hood, earl@earlhood.com ## This program is free software; you can redistribute it and/or modify ## it under the same terms as MHonArc itself. ##---------------------------------------------------------------------------## # Uncomment and modify the following if MHonArc libraries were not # installed in a perl's site directory or in perl's normal search path. #use lib qw(/path/to/mhonarc/libraries); package MHAPreview; use Getopt::Long; # Max size of preview text: This is the maximum amount that will be # saved for each message. The resource variable length modifier can # be used to always display less than max, but it is best to avoid # doing that since it is a slow operation. We have a custom command-line # option to set the max size if code change is not desired. my $PreviewLen = 256; ##-----------------------------------------------------------------------## ## Main Block ##-----------------------------------------------------------------------## MAIN: { unshift(@INC, 'lib'); # Should I leave this line in? ## Grab options from @ARGV unique to this program my %opts = ( ); Getopt::Long::Configure('pass_through'); GetOptions(\%opts, 'prv-maxlen=i', 'help', 'man' ); usage(1) if $opts{'help'}; usage(2) if $opts{'man'}; if ($opts{'prv-maxlen'} && ($opts{'prv-maxlen'} > 0)) { $PreviewLen = $opts{'prv-maxlen'}; } ## Reset pass-through of options Getopt::Long::Configure('no_pass_through'); ## Initialize MHonArc require 'mhamain.pl' || die qq/ERROR: Unable to require "mhamain.pl"\n/; mhonarc::initialize(); ## Register callbacks for handling preview text register_callbacks(); ## Process input. mhonarc::process_input() ? exit(0) : exit($mhonarc::CODE); } ##-----------------------------------------------------------------------## ## Callback Functions ##-----------------------------------------------------------------------## sub register_callbacks { $mhonarc::CBMessageBodyRead = \&msg_body_read; $mhonarc::CBRcVarExpand = \&rc_var_expand; $mhonarc::CBDbSave = \&db_save; } sub msg_body_read { my($fields, $html, $files) = @_; my $mha_index = $fields->{'x-mha-index'}; my $preview = extract_preview($html, $PreviewLen); $X_MessagePreview{$mha_index} = $preview; 1; } sub rc_var_expand { my($mha_index, $var_name, $arg_str) = @_; # $X-MSG-PREVIEW(mesg_spec)$ if ($var_name eq 'X-MSG-PREVIEW') { # Use MHonArc function to support a mesg_spec argument my ($lref, $key, $pos, $opt) = mhonarc::compute_msg_pos($mha_index, $var_name, $arg_str); return ($X_MessagePreview{$key}||"", 0, 1); } # If we do not recognize $var_name, make sure to tell # MHonArc we do not so it will try. (undef, 0, 0); } sub db_save { my($db_fh) = @_; # Make sure variable is package qualified! mhonarc::print_var($db_fh, 'MHAPreview::X_MessagePreview', \%X_MessagePreview); } ##-----------------------------------------------------------------------## ## Support Functions ##-----------------------------------------------------------------------## sub extract_preview { # Extracting the preview text of the message body is not as # trivial as you may expect. We have to deal with HTML tags # and entity references, but want to avoid the overhead of # using a full-blown HTML parser. We also want to skip any # quoted text, otherwise preview text of replies would mainly # contain quoted text, making preview less useful. my $html_ref = shift; # reference to HTML message body my $prev_len = shift; # length of preview to extract # Make copy since we will be pre-process data to make extraction easier my $html = $$html_ref; # Normalize EOLs to make other patterns simplier $html =~ s/\r\n/\n/g; # Strip out quoting using
    (for flowed and/or fancy-quoting) $html =~ s/]*>.*?<\/blockquote\s*>//gis; # Strip tags $html =~ s/<[^>]*>//g; # Quoting using > and other common styles $html =~ s/^(?:>|[\|:\+]).*$//gm; # Outhouse method of quoting $html =~ s/^-----Original Message-----.*\Z//; # Remove signatures $html =~ s/\n-- \n.*\z//s; # Preamble side comments $html =~ s/\A(?:\s*\[[^\]]*\])+//; # Common quote preambles $html =~ s/\A\s*In\s+article.*?(?:wrote|writes|said|says):[^\S\n]*\n//si; $html =~ s/\A.*(?:wrote|writes|said|says):[^\S\n]*\n//si; # Minimize whitespace $html =~ s/\s+/ /g; my $text = ""; my $html_len = length($html); my($pos, $sublen, $erlen, $real_len); for ( $pos=0, $sublen=$prev_len; $pos < $html_len; ) { $text .= substr($html, $pos, $sublen); $pos += $sublen; # check for clipped entity reference while (($pos < $html_len) && ($text =~ s/\&[^;]*\Z//)) { $text .= substr($html, $pos, 1); ++$pos; } # compute entity reference lengths to determine "real" character # count and not raw character count. $er_len = 0; while ($text =~ /(\&[^;]+);/g) { $er_len += length($1); } # done if we have enough $real_len = length($text)-$er_len; if ($real_len >= $prev_len) { if ($real_len < $html_len) { $text .= '...'; } last; } $sublen = $prev_len - (length($text)-$er_len); } $text; } sub usage { require Pod::Usage; my $verbose = shift; if ($verbose == 0) { Pod::Usage::pod2usage(-verbose => $verbose); } else { my $pager = $ENV{'PAGER'} || 'more'; local(*PAGER); my $fh = (-t STDOUT && open(PAGER, "|$pager")) ? \*PAGER : \*STDOUT; Pod::Usage::pod2usage(-verbose => $verbose, -output => $fh); } exit 0; } ##-----------------------------------------------------------------------## __END__ =head1 NAME mha-preview - MHonArc front-end to support message preview variable =head1 SYNOPSIS S [I] [I]> =head1 DESCRIPTION B is an example program the utilizes MHonArc's callback API to support the special resource variable C<$X-MSG-PREVIEW$>. The C<$X-MSG-PREVIEW$> represents the initial text of a message body. With this variable, index pages can contain be customized to give a listing like some MUAs that provide a glimpse of the message body in the mail listing of a mail folder. When extracting the preview text of the message body, all HTML tags are removed and whitespace is compressed. B: If B is used for an archive, it should always be used to process the archive. Otherwise, the message preview data will be lost. =head1 OPTIONS B takes the same options available to B along with the following additional options: =over =item C<-help> Print a usage summary of this program (this option overrides B's C<-help> option). =item C<-man> Print the manpage for this program. =item C<-prv-maxlen> Maximum amount of characters of the message body to store for each message. The default value is 256. =back =head1 NOTES =over =item * The functionality of this program could be placed into the C library to avoid the need for this program and to make it part of the locally installed B. This would avoid the problem noted in the CAUTION mentioned in the L. =item * The body preview resource variable may be worth putting into the MHonArc code base directly. =back =head1 SEE ALSO mhonarc(1) =head1 LICENSE B comes with ABSOLUTELY NO WARRANTY and can be distributed under the same terms as MHonArc itself. =head1 AUTHOR Earl Hood, earl@earlhood.com =cut MHonArc-2014-05-05-snap/examples/mhasiteinit.pl0000644004705000001440000000426011510267737020060 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhasiteinit.pl,v 1.6 2011/01/03 06:42:39 ehood Exp $ ## Description: ## Site-specific initialization code for MHonArc. If used, it ## should be place in the MHonArc library directory as specified ## during initialization, or in a directory that perl checks ## when requiring libraries. ## ## >>> THE EXPRESSIONS IN THIS FILE ARE EXECUTED EVERYTIME AN ## >>> ARCHIVE IS OPENED FOR PROCESSING. ## ## Note, it is recommended to use a default resource file when ## possible. ##---------------------------------------------------------------------------## ## Set package to something other than "mhonarc" to protect ourselves ## from unintentionally screwing with MHonArc's internals package mhonarc_site_init; ##--------------------------------------------------------------------------- ## Uncomment the following to set the default LOCKMETHOD to flock. ## Flock is better than the directory file method if flock() is supported ## by your system. If using NFS mounted filesystems, make sure flock() ## under Perl works reliable over NFS. See the LOCKMETHOD resource ## page of the documentation for more information. #&mhonarc::set_lock_mode(&mhonarc::MHA_LOCK_MODE_FLOCK); ##--------------------------------------------------------------------------- ## The following are callback functions that you can register ## for all instances of mhonarc. See the Application Programming ## Interface appendix of the documentation for a complete list ## of available callbacks and how they are invoked. #require 'head_routine.pl'; # make sure source of routine is loaded #$mhonarc::CBMessageHeadRead = \&your_head_routine_name; #require 'raw_body_routine.pl'; # make sure source of routine is loaded #$mhonarc::CBRawMessageBodyRead = \&your_raw_body_routine_name; #require 'body_routine.pl'; # make sure source of routine is loaded #$mhonarc::CBMessageBodyRead = \&your_body_routine_name; ##---------------------------------------------------------------------------## ## Make sure to return a true value for require(). ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/examples/blog.mrc0000644004705000001440000000663010025415406016622 0ustar ehoodusers index.shtml $IDXTITLE$

    $IDXTITLE$

    $MSGID$

    $SUBJECTNA$

    Date: $MSGLOCALDATE$
    From: $FROM$

    :

    in-reply-to references MHonArc-2014-05-05-snap/examples/mhasiteinit-p7m.pl0000644004705000001440000000746411510057057020562 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhasiteinit-p7m.pl,v 1.1 2011/01/02 11:14:55 ehood Exp $ ## Description: ## A mhasiteinit.pl example for supporting application/x-pkcs7-mime ## messages. ## ## If used, it should be copied into the MHonArc library directory ## as specified during initialization, or in a directory that ## perl checks when requiring libraries. ## ## IMPORTANT: The file must be named "mhasiteinit.pl" for mhonarc ## to load it. ## ## More Info: ## ##---------------------------------------------------------------------------## ## Copyright (C) 2010 Earl Hood, earl@earlhood.com ## This program is free software; you can redistribute it and/or modify ## it under the same terms as MHonArc itself. ##---------------------------------------------------------------------------## ## Set package to something other than "mhonarc" to protect ourselves ## from unintentionally screwing with MHonArc's internals package mhonarc_site_init; use Symbol; use File::Temp; my $openssl = '/usr/bin/openssl'; # Variable that holds the raw header text of the current message my $current_header_txt = ''; # Message head callback function to capture raw header text. # This is needed so we can print it out to temp file when openssl # is used to extract signed message # $mhonarc::CBMessageHeadRead = sub { my $fields = shift; $current_header_txt = shift; $current_header_txt .= "\n"; }; # Raw message body read callback: If application/x-pkcs7-mime signed # data, openssl used to extract contents and then we replace # body variable to extracted contents for mhonarc to parse and archive. # $mhonarc::CBRawMessageBodyRead = sub { my $fields = shift; my $data_ref = shift; my $ctype = $fields->{'content-type'}[0]; # If not signed-data, we return immediately if (!$ctype || $ctype !~ m{application/x-pkcs7-mime} || $ctype !~ m{signed-data}) { return 1; } # Get here, use openssl to extract main data. # Write input data to temp file for use by openssl. my $tmp = new File::Temp(); syswrite($tmp, $current_header_txt); # openssl requires mail headers syswrite($tmp, $$data_ref); # Open pipe to openssl to extract the data: The command-line # options to make this work is non-intuitive. Luckily, I found # a page on the web that listed the right options for extracting # the content w/o the need to validate the signature. my $handle = gensym; mhonarc::cmd_pipe_open($handle, $openssl, 'smime', '-verify', '-in', $tmp->filename, '-noverify'); my $new_data = join('', <$handle>); close($handle); close($tmp); # Parse the sub-header from extracted data and update # main fields to use them over original fields. my($sub_header, $txt) = readmail::MAILread_header(\$new_data); foreach my $key (keys %$sub_header) { $fields->{$key} = $sub_header->{$key}; } if ($sub_header->{'content-type'}) { # Make sure update mhonarc's meta field for content-type my $ctype = $sub_header->{'content-type'}[0]; if ($ctype =~ m%^\s*([\w\-\./]+)%) { $fields->{'x-mha-content-type'} = $1; } } # IMPORTANT: Make sure CTE is adjusted to reflect extracted data if (!$sub_header->{'content-transfer-encoding'}) { $fields->{'content-transfer-encoding'} = [ '7bit' ]; } # Replace message data to what was extracted and let mhonarc parse it. $$data_ref = $new_data; return 1; }; ##---------------------------------------------------------------------------## ## Make sure to return a true value for require(). ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/examples/subject.mrc0000644004705000001440000000155207740363347017354 0ustar ehoodusers
  • $SUBJECTNA$
  • $FROMNAME$
  • MHonArc-2014-05-05-snap/mhonarc0000755004705000001440000000604210264334614014736 0ustar ehoodusers#!/usr/bin/perl ##---------------------------------------------------------------------------## ## File: ## $Id: mhonarc,v 2.11 2005/07/11 00:13:00 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## MHonArc is a Perl program to convert mail to HTML. See ## accompany documentation for full details. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1995-1999 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## ##---------------------------------------------------------------------------## ## Main routine ## ##---------------------------------------------------------------------------## MAIN: { unshift(@INC, 'lib'); # Should I leave this line in? require 'mhamain.pl' || die qq/ERROR: Unable to require "mhamain.pl"\n/; mhonarc::initialize(); mhonarc::process_input() ? exit(0) : exit($mhonarc::CODE); } ##---------------------------------------------------------------------------## 1; __END__ =head1 NAME mhonarc - convert mail/news messages to HTML =head1 SYNOPSIS S [I] [I]> =head1 DESCRIPTION B is a Perl program for converting mail, or news, messages into HTML archives. B can also be used to convert individual messages into HTML documents. The documentation for B is distributed in HTML format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see L<"AVAILABILITY"> on where you can access the documentation on the web. Running "C" will give a summary of the command-line options available. =head1 PREREQUISITES B, B, B, B, B =head1 COREQUISITES B, B, B, B, B =head1 OSNAMES any =head1 AVAILABILITY EIE =head1 SCRIPT CATEGORIES Mail =head1 AUTHOR Earl Hood, mhonarc@mhonarc.org MHonArc comes with ABSOLUTELY NO WARRANTY and MHonArc may be copied only under the terms of the GNU General Public License, which may be found in the MHonArc distribution. =cut MHonArc-2014-05-05-snap/README.txt0000644004705000001440000001066012325352346015062 0ustar ehoodusers--------------------------------------------------------------------------- README for MHonArc v2.6 Copyright (C) 1995-2014 Earl Hood, mhonarc(AT)mhonarc.org --------------------------------------------------------------------------- USING/COPYING MHonArc is distributed under the GNU General Public License (GPL). The rules for using and copying MHonArc are explained in the file COPYING. If you cannot agree to the conditions of the GPL but still want to use/copy the program, you must contact the author of MHonArc, mhonarc(AT)mhonarc.org, about arranging an alternative license. --------------------------------------------------------------------------- SUMMARY MHonArc is a Perl program for converting mail or news messages into HTML archives. It can also be used to convert individual messages into HTML documents. Other capabilities include robust MIME support and powerful user customization features. --------------------------------------------------------------------------- FILE CONTENTS ACKNOWLG Thanks to people BUGS Bug history CHANGES Revision history of MHonArc COPYING GNU General Public License FILELIST File listing used by install.me INSTALL Instructions on how to install MHonArc README The file you are reading RELNOTES Release notes for MHonArc (PLEASE READ BEFORE INSTALL) TODO TODO list for MHonArc development (probably not complete) contrib/ Contributed programs doc/ Documentation for MHonArc examples/ Example files for use with MHonArc extras/ Extra programs for use with MHonArc (See extras/README) install.me Installation program for MHonArc lib/ MHonArc libraries logo/ MHonArc images mha-dbedit* Modify database without regenerating pages mha-dbrecover* Rebuild database from HTML message pages mha-decode* MIME message decoder mhonarc* The MHonArc program --------------------------------------------------------------------------- INSTALLATION Please read RELNOTES, or load doc/relnotes.html into your favorite web client, before installing MHonArc for any news about compatibility with previous versions and/or important usage information. Read the file INSTALL, or load doc/install.html into your favorite web client, for instructions on how to install MHonArc. --------------------------------------------------------------------------- DOCUMENTATION Documentation for MHonArc is located in the doc/ directory. The main documentation for MHonArc is in multiple HTML files. Load index.html in the doc/ directory into your Web browser to get started. --------------------------------------------------------------------------- MAILING LIST A MHonArc mailing list exists to provide a general discussion forum for users and developers. The list is the main source for the latest news about MHonArc. To subscribe to the mailing list, send mail to majordomo@mhonarc.org with the text, subscribe mhonarc-users as the message body. More information about MHonArc mailing lists, include web-accessible archives, is provided in doc/contacts.html. --------------------------------------------------------------------------- BUGS/COMMENTS/SUGGESTIONS? If you have any comments and suggestions about MHonArc, you may send mail to the MHonArc mailing list, , or to the author at if you are not subscribed to the list. NOTE: The author of MHonArc *IS* subscribed to the list so there is no need to carbon-copy the author. See doc/app-bugs.html for bug information and how to submit bug reports. --------------------------------------------------------------------------- DONATIONS If you are so inclined, feel free to send the author a donation if you feel guilty on using a program that that cost you nothing, but some poor soul sweated over. The author is more than happy to provide address information to prospective donors inorder to ease their conscience. Plus, requests from donors are more likely to get more timely responses ;-) and help insure the continued development of the program. The author can be reached at mhonarc(AT)mhonarc.org. --------------------------------------------------------------------------- Earl Hood, mhonarc(AT)mhonarc.org $Date: 2014/04/22 02:33:10 $ MHonArc-2014-05-05-snap/.htaccess0000644004705000001440000000064110243725162015155 0ustar ehoodusers# $Id: .htaccess,v 1.1 2005/05/21 21:38:58 ehood Exp $ # .htaccess file for browsing source via Apache HTTP server. # Main purpose of this file is to undo any configurations at the # server level that will cause files to be interpreted as # (CGI) programs. Of course, this file is pointless if .htaccess # is disabled at the server config level. # RemoveType .pl RemoveHandler .pl RemoveType .cgi RemoveHandler .cgi MHonArc-2014-05-05-snap/BUGS0000644004705000001440000000557212332046112014042 0ustar ehoodusers[Prev] [TOC][FAQ][Bugs][Home] [Next] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Appendix: Bugs • Reporting Bugs • Open Bugs • Fixed Bugs ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Reporting Bugs Before reporting a bug, please do the following: • Make sure it is not a usage problem: check the documentation and FAQ. • Check that you are running the latest version of MHonArc. If not, it is likely the problem has been fixed in a newer version. • If you are not sure if the problem is a bug or not, send a message to the mailing list to get confirmation. The prefered way to report bugs is to use the bug submission form for MHonArc located at . Please check and search the existing bugs to verify that the bug has not already been reported. If the bug you discovered has not been reported, select the Submit Bug link to get the bug submission form. Hopefully, the form fields are self-explanatory, but if you are not sure what to select in some of the option items, leave it with the default value or make a best guess. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Open Bugs Goto , select "Open" for the Open/Closed choice, and then activate the Apply button to list all open bugs. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Fixed Bugs Goto , select "Closed" for the Open/Closed choice, and then activate the Apply button to list all closed/fixed bugs. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [Prev] [TOC][FAQ][Bugs][Home] [Next] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $Date: 2005/05/13 19:07:56 $ MHonArc Copyright © 1997-2002, Earl Hood, mhonarc@mhonarc.org MHonArc-2014-05-05-snap/FILELIST0000644004705000001440000000302207613060013014503 0ustar ehoodusersname:MHonArc dep:Fcntl dep:File::Basename dep:Getopt::Long dep:Symbol dep:Time::Local bin:mhonarc bin:mha-dbedit bin:mha-dbrecover bin:mha-decode lib:lib/base64.pl lib:lib/ewhutil.pl lib:lib/iso2022jp.pl lib:lib/iso8859.pl lib:lib/mhamain.pl lib:lib/mhdb.pl lib:lib/mhdysub.pl lib:lib/mhexternal.pl lib:lib/mhfile.pl lib:lib/mhidxrc.pl lib:lib/mhindex.pl lib:lib/mhinit.pl lib:lib/mhlock.pl lib:lib/mhmimetypes.pl lib:lib/mhmsgextbody.pl lib:lib/mhmsgfile.pl lib:lib/mhnote.pl lib:lib/mhnull.pl lib:lib/mhopt.pl lib:lib/mhrcfile.pl lib:lib/mhrcvars.pl lib:lib/mhrmm.pl lib:lib/mhscan.pl lib:lib/mhsingle.pl lib:lib/mhthread.pl lib:lib/mhtime.pl lib:lib/mhtxtenrich.pl lib:lib/mhtxthtml.pl lib:lib/mhtxtplain.pl lib:lib/mhtxttsv.pl lib:lib/mhusage.pl lib:lib/mhutil.pl lib:lib/osinit.pl lib:lib/qprint.pl lib:lib/readmail.pl lib:lib/MHonArc man:man/mhonarc.1 man:man/mha-dbedit.1 man:man/mha-dbrecover.1 man:man/mha-decode.1 doc:doc/app-api.html doc:doc/app-bugs.html doc:doc/app-diagnos.html doc:doc/app-mimeconf.html doc:doc/app-rcfileexs.html doc:doc/app-rcidx.html doc:doc/app-utilsprg.html doc:doc/blank.png doc:doc/bug.png doc:doc/commontasks.html doc:doc/contacts.html doc:doc/faq doc:doc/faq.png doc:doc/home.png doc:doc/index.html doc:doc/install.html doc:doc/intro.html doc:doc/layout.html doc:doc/mhonarc.html doc:doc/monicon.png doc:doc/next.png doc:doc/prev.png doc:doc/quickstart.html doc:doc/rcfileexs doc:doc/rcvars.html doc:doc/relnotes.html doc:doc/resources doc:doc/resources.html doc:doc/ssbg75.jpg doc:doc/stampwb2.png doc:doc/up.png MHonArc-2014-05-05-snap/mha-decode0000755004705000001440000001174107706405566015313 0ustar ehoodusers#!/usr/bin/perl ##---------------------------------------------------------------------------## ## File: ## $Id: mha-decode,v 1.8 2003/07/20 03:24:38 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Program to decode MIME messages. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1998 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mha_decode; use Getopt::Long; ##---------------------------------------------------------------------------## ## Main routine ## ##---------------------------------------------------------------------------## MAIN: { unshift(@INC, 'lib'); # Should I leave this line in? ## Grab options from @ARGV unique to this program my %opts = ( ); Getopt::Long::Configure('pass_through'); GetOptions(\%opts, 'dcd-digest' ); my $digest_mode = $opts{'dcd-digest'} || 0; ## Reset pass-through of options Getopt::Long::Configure('no_pass_through'); ## Initialize MHonArc require 'mhamain.pl' || die qq/ERROR: Unable to require "mhamain.pl"\n/; unshift(@ARGV, '-noarchive', '-nolock'); mhonarc::initialize(); mhonarc::open_archive() || exit($mhonarc::CODE); ## Set resources %readmail::MIMEFilters = ( 'application/*' => 'm2h_external::filter', 'audio/*' => 'm2h_external::filter', 'chemical/*' => 'm2h_external::filter', 'image/*' => 'm2h_external::filter', 'model/*' => 'm2h_external::filter', 'text/*' => 'm2h_external::filter', 'video/*' => 'm2h_external::filter', ); %readmail::MIMEFiltersSrc = ( 'application/*' => 'mhexternal.pl', 'audio/*' => 'mhexternal.pl', 'chemical/*' => 'mhexternal.pl', 'image/*' => 'mhexternal.pl', 'model/*' => 'mhexternal.pl', 'text/*' => 'mhexternal.pl', 'video/*' => 'mhexternal.pl', ); %readmail::MIMEFiltersArgs = ( 'm2h_external::filter' => 'usename', ); if ($digest_mode) { $readmail::MIMEFilters{'message/*'} = 'm2h_external::filter'; $readmail::MIMEFiltersSrc{'message/*'} = 'mhexternal.pl'; } mhonarc::process_input() || exit($mhonarc::CODE); mhonarc::close_archive() || exit($mhonarc::CODE); exit(0); } ##---------------------------------------------------------------------------## 1; __END__ =head1 NAME mha-decode - Decode MIME messages =head1 SYNOPSIS S [I] I ...> S [I] -single I> =head1 DESCRIPTION B is a utility program that is part of the B software package. B provides basic MIME decoding for mail messages. If given mail folders as input, all messages within in the mail folders will be decoded. All message parts are written to files. If a filename is specified for a message part, that filename will be used when writing the part to a file. If no filename is specified in the message, a unique name will be used based upon the content-type of the message part. A single message can be decoded by using the C<-single> option. =head1 OPTIONS B takes options available to B, but only those options affect parsing of mail folders are applicable: C<-conlen>, C<-mhpattern>, C<-msgsep>, C<-noconlen>, C<-outdir>, C<-perlinc>, C<-rcfile>, C<-single>, C<-umask>. Also, B supports the following additional options: =over =item C<-dcd-digest> Run in message digest mode. When this option is specified, any embedded C and C parts will be saved instead of recursively decoding any parts contained within. =back =head1 NOTES The documentation for B is distributed in HTML format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see L<"AVAILABILITY"> on where you can access the documentation on the web. =head1 AVAILABILITY EIE =head1 AUTHOR Earl Hood, mhonarc@mhonarc.org MHonArc comes with ABSOLUTELY NO WARRANTY and MHonArc may be copied only under the terms of the GNU General Public License, which may be found in the MHonArc distribution. =cut MHonArc-2014-05-05-snap/CHANGES0000644004705000001440000032321112325352345014355 0ustar ehoodusers Change History for MHonArc ========================== --------------------------------------------------------------------------- | PLEASE READ RELNOTES FOR CHANGES THAT CAN HAVE COMPATIBILITY IMPACTS | | FOR ARCHIVES CREATED FROM PAST RELEASES OF MHONARC. | --------------------------------------------------------------------------- Some change notes are brief; consult the documentation for further information/clarification. It is possible that some changes to MHonArc are not documented here, but every effort is made to list all visible changes. YYYY/MM/DD ============================================================================ 2014/04/21 (2.6.19) * Security Fixes: Bug ID Summary ------ ------------------------------------------------------------ 35388 commentized subjects allow PHP code injection ------ ------------------------------------------------------------ * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 32987 Lots of deprecation warnings with Perl 5.12 42155 MHonArc crashed with message/external-body and RFC 2231 encoded parameters ------ ------------------------------------------------------------ ============================================================================ 2011/01/09 (2.6.18) * Update to HTML filter to improve filtering of event-based attributes. ============================================================================ 2011/01/09 (2.6.17) * Security Fixes: Bug ID Summary ------ ------------------------------------------------------------ 32013 CVE-2010-4524: Improper escaping of certain HTML sequences (XSS) 32014 CVE-2010-1677: DoS when processing html messages with deep tag nesting 32080 Specially crafted can lead to XSS exploit ------ ------------------------------------------------------------ * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 13853 Creation of archive with attachments writes over symlinks 14747 major (10X) memory savings possible in some situations 15433 relative attachmentdir is relative to current working dir, not outdir 17660 Threaded index resource ordering doesn't allow well formed XML output 17860 incorrect nested HTML Tags for references 17904 FieldOrder affects AddressModifyCode 18113 Inconsistant thread slices w/ poor man's windowing 18908 X-Subject data get split in separate lines 20074 extra space in subject 20142 strip backslash in rfc822 From: field 23198 Incorrect Setting Installation Directory 24247 iso2022jp.pl: unneeded ESC ( B remains in message body 25225 dir_create() fails to make temporary directories (PATCH) 25486 Resource FieldStore causes .mhonarc.db to grow over bounds 26577 Changed semantic for unpack breaks UTF-8 32032 TextEncode related resource information not saved correctly in db file ------ ------------------------------------------------------------ * Added FOLLOWSYMLINKS resource (Bug #13853). * When KEEPONRMM is enabled, messages that are removed from the archive do not cause linked messages to be updated. This allows for pages that use $TSLICE$ to maintain thread links for messages that "fall off" of the maintained list of archived messages. * Added pre-extraction of From name and From address. This provides a performance improvement for archives that make use of the $FROMADDR$ and $FROMADDRNAME$ resource variables along with author sorting. * Added mapping of message index keys to time stamp. This should provide some performance gain since parsing out of time stamp from index is no longer required. * Cache last message number in db to avoid directory scan of archive each time an add operation is performed. This provides a performance improvement for large archives and on file systems where directory reading with many files may not be optimal. Thanks go to Christopher Lindsey for patch. * Added References and In-Reply-To to as-is fields list to avoid automatic modification of message IDs if address-rewriting is in effect. * Simplified regular expression for detecting addresses. New expression performs significantly better than the previous expression, but still matches the vast majority of addresses used today. ============================================================================ 2006/06/09 (2.6.16) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 14704 HTML mail does not get its charset converted (patch included) 14713 qprint.pl should be able to handle a soft line break at the end of the string 14813 MIMEFILTERS settings not retained in database 16368 in urlize change %X to %02X ------ ------------------------------------------------------------ ============================================================================ 2005/07/27 (2.6.15) * Removed debugging statement introduced during v2.6.14 development which caused the filename of each message to be printed to stderr when processing MH-style folders. * Fixed META.yml for CPAN: YAML is picky about tab characters, and there was a couple of tab characters causing CPAN's YAML parser to abort with an error. ============================================================================ 2005/07/23 (2.6.14) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 2641 Additional Callbacks 3225 CHARSETCONVERTERS not reset across multi-archive process 11759 email address exposed in subject line ------ ------------------------------------------------------------ * New resources: PRINTXCOMMENTS Print comments in generated pages. * Added "Performance Tips" document: Provides configuration tips to improve the execution performance of mhonarc. ============================================================================ 2005/07/06 (2.6.13) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 12314 linebreak not utf-8 aware ------ ------------------------------------------------------------ * mha-preview example script changes: - If preview data not available for message, the empty string is used. Before, undef was returned to mhonarc, causing warning messages and $X-MSG-PREVIEW$ to show up on index pages. - Beefed up preview text extraction to skip past quoted text. Someday, mha-preview functionality will be intrinisic to mhonarc. ============================================================================ 2005/06/08 (2.6.12) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 11761 spammode causes broken mailto: links in message body 13316 No warning generated when RCFILE set to non-existent file 13317 POSIX::setlocale() not invoked with LANG resource setting ------ ------------------------------------------------------------ * New resources: MIMEINCS Content-types to allow. * Beefed up filtering of UTF-8 messages: "Malformed UTF-8 ..." warnings are now suppressed with such sequences being converted to U+FFFD (�), which should normally cause an HTML viewer to render a question-mark-like glyph. Earlier version passed malformed utf-8 sequences through. No bug/security problems have been reported against this, but it was a bad practice that has now been corrected. * The return value for $mhonarc::CBMessageBodyRead and $mhonarc::CBRawMessageBodyRead is no longer N/A. If the return value evaluates to false, the current message will be excluded from the archive and further processing. A true value must be returned if the message is to not be excluded. ============================================================================ 2005/05/20 (2.6.11) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 9050 Regex abort error in mhmimetypes.pl under Win32 11187 incorrectly parsing UTF-8 encoded messages 11207 usenameext option to m2h_external::filter has no effect 11760 spammode false positives on some HTML mail 11762 rel=nofollow attribute support in message body hyperlinks 11977 TSLICETOPBEGCUR ignored 12512 Consecutive spaces not displayed in some cases 12802 SubjectStripCode not working on message file 12930 Cross site scripting bug in m2h_text_html::filter ------ ------------------------------------------------------------ ============================================================================ 2004/05/17 (2.6.10) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 8982 Can't use global $1 in "my" at base64.pl ------ ------------------------------------------------------------ ============================================================================ 2004/05/07 (2.6.9) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 5473 directory separator for attachments on W2K 5643 New ressource - newsserver 5758 MULTIPG and NOSAVERESOURCES cause archive to be rewritten 5905 Modification of non-creatable array value attempted 6208 Mhonarc creates slightly incorrect HTML-code 7571 element doesn't look for resource files in $OUTDIR$ 7628 typo in mhrcfile.pl ------ ------------------------------------------------------------ * New resources: ATTACHMENTDIR Directory to save attachments. ATTACHMENTURL Web URL to attachment directory. NEWSURL URL template for linking to newsgroups. * Attachment filenames have changed from the numeric-style <#####>. to . where is a random string. The change corresponds with a change to the API to mhonarc::write_attachment() function in mhmimetypes.pl. * m2h_text_plain::filter: . Changed default quoting styles: Left rule changed from 0.1em to 0.2em and the color changed from #0000FF to #5555EE. . Minor changes to flowed formatting in order to provide consistancy with how Mozilla's Gecko engine renders flowed text. * base64.pl will use MIME::Base64 module if present. MIME::Base64 uses an underly C implementation for decoding, so it is noticably faster than the pure-Perl approach. ============================================================================ 2003/08/12 (2.6.8) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 4719 Spurious read_fmt_file call ------ ------------------------------------------------------------ ============================================================================ 2003/08/07 (2.6.7) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 4569 Problem with unfolding can mess up boundary processing in multipart messages. 4594 Initial space on lines removed when using fancyquote. ------ ------------------------------------------------------------ * Added LANG resource to define locale. Affects resource filename resolution and message subject and author sorting. * readmail.pl updated to define the following special header field keys passed to filter routines: x-mha-content-type The media type of the entity extracted from content-type entity header x-mha-part-number The relative part number of the entity with respect to parent entity. To get the absolute part number, use readmail::get_full_part_number($fields). x-mha-parent-header Reference to parent header fields hash. This, and other data structures, are now mentioned in the MIMEFILTERS resource page. * Text/richtext tag, , is quietly dropped in mhtxtenrich.pl. ============================================================================ 2003/07/21 (2.6.6) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 4387 m2h_text_plain::filter maxwidth usage can lead to crash with a certain kind of input ------ ------------------------------------------------------------ ============================================================================ 2003/07/19 (2.6.5) * Bug Fixes: Bug ID Summary ------ ------------------------------------------------------------ 4126 Typo in mhopt.pl causes error message for big5 character set 4315 allowcomments' directive to filter() is ignored ------ ------------------------------------------------------------ * An architecture independent RPM package is now provided for installation. Because of this, the package name format has slightly changed to be consistent RPM, and other, package managers: Old format New Format ------------- ------------- MHonArcX.X.X MHonArc-X.X.X Installation document has been updated to reflect this change. If you create third-party distribution bundles for MHonArc, you may need to update your bundling process to take account of this change, mainly because the directory created when extracting the tar or zip bundles now include the hyphen. ============================================================================ 2003/06/20 (2.6.4) * Bug Fixes: + Official: Bug ID Summary ------ ------------------------------------------------------------ 3478 Quoted-Printable decoding should also work with lowercase hex numbers ------ ------------------------------------------------------------ + Unoffical: - It appears that the UTF8 mapping table for cp1252, MHonArc::UTF8::CP1252, had bad data. This has been fixed. * Management of character mapping tables have been changed. The various .pm module tables are now auto-generated by ucm, and similiar, map files. For the end-user, the change should be transparent. The change only affects how developers maintain the tables, and the change should make it much easier to make fixes to any mappings. ============================================================================ 2003/04/05 (2.6.3) * Bug Fixes: Bug ID Summary ------ -------------------------------------------------------------- 3020 Trailing \ in regex 3128 XSS Vulnerabilies 2971 spammode option interferes with iso-2022-jp ------ -------------------------------------------------------------- ============================================================================ 2003/03/11 (2.6.2) * Bug Fixes: Bug Resolution Fixed Summary ID Release 2738 Fixed 2.6.2 An illegal From: address can cause MHonArc to hang ============================================================================ 2003/02/22 (2.6.1) * Bug Fixes: See * Corrected character mapping tables for VISCII based on a message to the perl-unicode mailing list. * Added FASTTEMPFILES resource which causes MHonArc to use non-random temporary files. This is less secure, but provides a little bit of speed improvement. ============================================================================ 2003/02/10 (2.6.0) * Bug Fixes: See * New resources: DEFCHARSET Default character set of message text data. CHARSETALIASES Define aliases for base charset names. DBFILEPERMS File permissions for DBFILE. FIELDSTORE Message header fields to store in database. FILEPERMS File permissions for archive files. ICONURLPREFIX URL string to prepend to ICONS URLs. MODIFYBODYADDRESSES Apply ADDRESSMODIFYCODE to text message bodies. RECONVERT Reconvert existing messages. TENDBUTTON Button to last message in thread. TENDBUTTONIA Inactive button to last message in thread. TENDLINKIA Inactive link to last message in thread. TENDLINK Link to last message in thread. TEXTENCODE Encode message text to given character encoding. TTOPBUTTON Button to first message in thread. TTOPBUTTONIA Inactive button to first message in thread. TTOPLINKIA Inactive link to first message in thread. TTOPLINK Link to first message in thread. * New resource variables: $ICONURLPREFIX$ Value of ICONURLPREFIX resource. $MSGHFIELD$ Retrieve header field value stored via FIELDSTORE. * MHonArc::CharEnt: + Several charset mappings added to MHonArc::CharEnt with the default value for CHARSETCONVERTERS updated to reflect the new mappings. New charset supported include UTF-8, various Cyrillic sets, VISCII, Chinese sets, Japanese (iso-2022-jp and euc-jp), Korean, Apple-based charsets, etc. See the documentation for the CHARSETCONVERTERS and CHARSETALIASES for complete list of character sets supported. Note: Sets that have bidirectional rendering (Hebrew, Arabic) exist, but automatic directional re-ording for rendering is currently not supported. . Some existing mappings have been updated to use Unicode numeric character entity references (&#xHHHH;) instead of standard SGML character entity references (eg. &Aelig;). Most, if not all, web browsers only support the set of SGML entity references defined in the HTML 4.0 specification. All existing tables should now generate entity references recognized by all HTML 4.0 compliant browsers. * MHonArc::UTF8: . Module completely redone to support various versions of Perl. utf8 support code added to all conversion to utf8 with perl installations that do not have utf8 support, but to also leverage perl installations with utf8-related modules. * Default filter for iso-8859-1 and iso-2022-jp changed to MHonArc::CharEnt::str2sgml. This helps keep MHonArc locale neutral in its default configuration. Special note added to release notes for Japanese users about the change. * m2h_text_plain::filter (mhtxtplain.pl): + Added more robust handling of format=flowed data. By default, all text is rendered in a monospaced font to provide visual consistency between flowed and fixed text. Proportional spaced font can be generated using the "nonfixed" option (where "keepspace" option should also be used to help preserve the formatting characteristics of the data). + Added "fancyquote" option to provide highlight of quoted text similiar to text/plain;format=flowed data. + Added "disableflowed" option to disable the flowed data conversion. Data will be converted as regular text/plain. This option is useful for archives that cater to text-based browsers. + Added "quoteclass=" option to specify a CSS classname to assign to BLOCKQUOTE elements added when processing flowed data or when "fancyquote" is active. This suppresses inline style generation. + Added "subdir" option for use when "uudecode" is enabled. - Reduced set of quote characters to just '>'. Other characters are used by some people (eg. '}', '|', '+'), especially on the USENET, but supporting them tends to produce undesirable results, especially when using fancyquote. (Maybe make it configurable?) + If uudecode and usename specified, check if file ends in .s?html?, and if so, pass data to HTML filter. . Make sure to return a non-empty string for an empty body when in uudecode mode. Avoids bogus warning message that data could not be converted. * MIMEEXCS automatically handles unofficial version of a media type. For example: text/html Will exclude text/html and text/x-html data. * m2h_text_html::filter (mhtxthtml.pl): + CHARSETCONVERTERS is used for converting character data. - Removed default=charset option. This option is no longer needed with new character encoding processing features and CHARSETALIASES resource. + Convert javascript:... URLs to "_javascript_:..." when scripting is disabled (the default). This is an extra measure ontop of element and attribute stripping. * 's are now preserved when cid: only URLs enabled (the default). This prevents regular hyperlinks in HTML messages from getting stripped, which I think most people desire. Otherwise, the allownoncidurls option must be used, and then this opens one up to potential XSS attacks. Due to the javascript: URL munging, preserving 's should be safe from auto-XSS attacks. Readers should still be careful about any links they activate. + Added "subdir" option to specify that MHTML referenced data (e.g. images) are saved in a subdirectory. + Added "disablerelated" to disable cid: URL resolution. . STYLE and CLASS attributes stripped if nofont argument specified. * m2h_text_enriched::filter (mhtxtenrich.pl): + CHARSETCONVERTERS is used for converting character data. + lang is now mapped to . + Added handling of some text/richtext tags. . Escape unrecognized tags. * Archive file creation modified to minimize the local symlink exploits: 1. A temp file with a random name is first created and written to. 2. Temp file is compressed if GZIPFILES is active. 3. Temp file is renamed to final filename. 4. File permissions are set according to FILEPERMS/DBFILEPERMS. Using a random temp filename makes it difficult for someone to predict filenames to execute a symlink exploit. The rename operation is immune to symlink exploits, hence trying to using well-known names (e.g. maillist.html, threads.html) for exploitation will not work. A similiar technique is used for directory creation for filters that support the "subdir" option. Generation of temp files is done via the File::Temp module, if installed. If not installed, a homegrown implementation is used. Although not as secure and robust as File::Temp, it's better than nothing and should provide a decent deterrent. * Setuid/setgid execution causes mhonarc to terminate with an error. Mhonarc does not pass taint checks, so we abort with an error that setuid/setgid execution is not supported. MHonArc is too insecure for setuid operation and trying to make it setuid-safe would require alot of work and potentially limit a large amount of functionality. * More robust parsing used for determining $FROMNAME$ and $FROMADDR*$ resource variables. * rfc822.pl library removed and replaced with MHonArc::RFC822 module. * Warning message, "Unable to process data..." removed from message page when unable to convert any part of a message (usually due to user-defined MIMEFILTERS settings). Instead, a warning message is generated to standard error (like other mhonarc warnings) and the resulting message page will have a blank message body. * m2h_msg_extbody::filter: (mhmsgextbody.pl) + Added support for http/x-http access type. This appears to be an experimental access type since the general URI type can be used instead. . Properly sanitize parameter data. . Some minor cosmetic changes in the HTML generated. * m2h_text_tsv::filter (mhtxttsv.pl): . Sanitize field data. * m2h_text_setext::filter (mhtxtsetext.pl) has been removed. It appears this media-type is part of document history. ============================================================================ 2002/12/21 (2.5.14) * Security patch release: This release fixes a cross-site scripting (XSS) vulnerability in m2h_text_html::filter (the HTML filter). A specially crafted HTML message can have scripting markup get by the script filtering done by m2h_text_html::filter. ============================================================================ 2002/10/21 (2.5.13) * Bug Fixes: See * DBFILE resource can now be set to an absolute pathname. This allows the database file to be located in a separate location than in the archive directory. If not an absolute pathname, then value is treated relative to OUTDIR. * readmail.pl updated to handle MHTML messages better. mhtxthtml.pl changed accordingly. * readmail.pl handling of malformed multipart messages improved. Cases were a the terminating boundary delimiter did not exist would generate a warning message in the converted message body that data could not be converted. This case should now be handled so that end of entitiy implies a terminating boundary delimiter, (Thanks goto Randy Blaustein for providing real-world test cases). * Fixed problem where some message attachments were "lost". This mainly occurs when using mha-decode with the -dcd-digest option, or if you have registered the m2h_external::filter for message/* data types. (Thanks goto Steve Johnson for finding this problem.) * m2h_external::filter will now include the subject of a message in the attachment link if saving message/* data to a file. * m2h_external::filter properly escapes the filename parameter when displaying it in the attachment link. This is done to avoid any possible XSS exploits. Note, no exploits have been reported by using the filename parameter in messages, so this change is more of a preemptive measure. * m2h_external::filter will fall back to a "txt" extension for unknown text types instead of a "bin" extension. * m2h_text_plain::filter: Removed hardcoded 'as-is' for US-ASCII data. This is so a user could define a converter if having to deal with mislabeled character data. (Thanks goto Mooffie for finally finding a real-world case to not hardcode us-ascii). ============================================================================ 2002/09/03 (2.5.12) * Strip more tags and attributes that could potentially be used for XSS exploits in the HTML filter. This is a more of a preemptive change since no new exploits have been reported. * DATEFIELDS resource now supports indexed field names. For example: received[1]:received[0]:date The example says that mhonarc should check the second received field, then the first received field, and then the first date field to determine the date of a message. ============================================================================ 2002/08/03 (2.5.11) * Bug Fixes: See * Applied Takashi P.KATOH's patch for iso_2022_jp::clip function to support $has_tag flag as defined by TEXTCLIPFUNC resource. * The following mail header fields added to list of fields that can contain mail addresses: mail-reply-to, original-bcc, original-cc, original-from, original-sender, original-to, resent-bcc, x-envelope. Applicable to MAILTO, MAILTOURL, and ADDRESSMODIFYCODE resources. * Added documentation for TEXTCLIPFUNC resource. Forgot to add it for v2.5.10 release. ============================================================================ 2002/07/28 (2.5.10) * Bug Fixes: See * Added TEXTCLIPFUNC resource: Defines the text clipping function that should be used by MHonArc. This function is mainly used in resource variable expansion where clipping has been specified, for example, "$SUBJECT:72$". * Added clip() function in MHonArc::UTF8 that can be registed via TEXTCLIPFUNC resource to handling clipping of UTF-8 text. * Example utf-8.mrc updated to include some corrections and to define TEXTCLIPFUNC resource. * Improved navigation links to resource reference pages which should help their usability. ============================================================================ 2002/07/19 (2.5.9) * Bug Fixes: See * Added MHonArc::UTF8 CHARSETCONVERTER module as recommended at . However, module redone to use utf8 pragma in Perl where appropriate and to remove unnecessary code. Use of module does require that the Unicode::MapUTF8 module is installed and the utf8 pragma is supported in the version of Perl you are using. A example resource file, "utf-8.mrc", has been added to the resource file example appendix section on how UTF-8 output can be done in MHonArc. NOTE: The MHonArc core is still not UTF-8-aware, so some text processing may not work as expected on UTF-8 data. Possible problem points: . Auto-URL hyperlinking in text/plain messages in mhtxtplain.pl. . Auto-message-id detection in messages. . Resource variable text clipping. There may be others, but in general, if there is a problem, it should be uncommon and should not affect the overall functionality of MHonArc. Problems can be avoided by not using, or disabling, various resources. * mhtxtplain.pl: . Removed exception case of iso-2022-jp character data since it does not allow alternative iso-2022-jp character set conversion functions via CHARSETCONVERTERS. NOTE: This does eliminate the smart handling of URL detection for the variable-width character set. Hence, the URL detection could technically match non-URLs, or munge a character at URL boundaries, but it is unknown on how likely this is. If it is a problem, the "nourl" argument should be specified to this filter. NOTE: The old-style "smart" URL functionality can be re-enabled by writing a custom CHARSETCONVERTER for iso-2022-jp that just calls iso_2022_jp::jp2022_to_html in iso2022jp.pl. . Minor modification to flowed text/plain formatting that hopefully makes quoted text look better than before. * FAQ changes: + Added, "Does MHonArc support Unicode?" * Changed, "Can MHonArc create non-English archives?" + Added, "Can MHonArc process Evolution folders?" ============================================================================ 2002/06/28 (2.5.8) * Added MIMEALTPREFS resource: Content-type preferences for multipart/alternative data. You can now tell MHonArc to use the text/plain part over a text/html part in multipart/alternative messages. * Added the following resources: IDXPGSSMARKUP Markup at the beginning of all index pages. MSGPGSSMARKUP Markup at the beginning of all message pages. TIDXPGSSMARKUP Markup at the beginning of all thread index pages. Each resource will default to the value of the SSMARKUP resource if not defined. * Removed resource element since it useless since an archive database is read before any resource files are parsed. The proper way to specify an alternative DBFILE is via the -dbfile command-line option or the M2H_DBFILE envariable. * Release notes updated about upgrading from v2.1.x, or earlier archive. Running a later version is safe, but all MIME-related resources will be reset to default values. For v2.5.8, and later, the MIMEARGS setting will preserved. * Removed references to HEADER and FOOTER resources in the docs. Resources removed in v2.5.0. * Updated default resource layout settings in docs to use lowercase tag names since MHonArc changed to use lowercase in defaults in v2.4.7. * FAQ updates: . Mention MIMEALTPREFS. . Added MIMEARGS examples in MIME section. ============================================================================ 2002/06/21 (2.5.7) * Bug Fixes: See * Updated docs to reflect address change of users' mailing list: mhonarc@ncsa.uiuc.edu -> mhonarc-users@mhonarc.org. * Some minor FAQ changes, mainly mentioning mharc as a possible solution to some questions. ============================================================================ 2002/06/18 (2.5.6) * Bug Fixes: See * Added NOSUBJECTTXT resource: Defines raw subject text to use for messages that do not have a subject. ============================================================================ 2002/05/28 (2.5.5) * Bug Fixes: See * Incorporated format=flowed support into mhtxtplain.pl contributed by Ken Hirsch, with some minor improvements. * MODTIME resource is set to off if setting modification date on files is not supported for given platform. A warning message will be generated. * Added mha-preview program in examples/: A front-end program to MHonArc that provides support for the resource variable $X-MSG-PREVIEW$ that expands to first part of a message body. This program illustrated the usage of the callback API. NOTE: It is probable that support for message preview text may become a supported feature within the standard mhonarc program. There are no guarantees that when implemented, it will be compatible with how mha-preview does it. * Added blog.mrc in examples/: A resource file that generates a page containing the content of all messages. This example is also listed in the resource file examples appendix. * Some documentation updates and enhancements. ============================================================================ 2002/05/03 (2.5.4) * Added more API callback functions: $CBDbPreLoad Right before database file is loaded. $CBDbPreSave Right before database file is written. $CBDbSave When data has been written. $CBRawMessageBodyRead After message body is read from input $CBRcVarExpand When a resource variable is being expanded. See API appendix of the documentation for more information. * mha-decode now supports the following option: -dcd-digest. This tells mha-decode to not recursively process attached message/rfc822 and message/news entities. This option is useful to extract out all the individual messages of a message digest. * Added message/rfc822 and message/news to mhmimetypes.pl content-type => extension/description hash. The extension used is ".822". * Added ISO-8859-15 to default value of CHARSETCONVERTERS. This should have been done in the previous release. * A readmail:: variable is not written to database file if it is the default value. The readmail:: variables that can be saved are controled by the CHARSETCONVERTERS, MIMEFILTERS, and MIMEARGS resources. ============================================================================ 2002/04/18 (2.5.3) * Added 'use locale' pragmas to be applied when sorting messages. This is considered experimental, but it appears to give better results when sorting text that contains 8-bit-non-English characters. This is far from any real locale support, but hopefully it is better than nothing. * Beefed up HTML filtering in mhtxthtml.pl to eliminate some security exploits. CAUTION: If you are worried about security, it is recommended that you disable support of text/html messages in your mail archives. There is no guarantee that the mhtxthtml.pl library is robust enough to eliminate all possible exploits that can occur with HTML data. Thanks goto Jason Molenda and Hiromitsu Takagi for spotting more exploit cases. * mhtxtplain.pl checks MIMEXCS if text/html data is excluded when the htmlcheck option is specified. Seems unnecessary because someone use excludes HTML data will probably not use the htmlcheck option to m2h_text_plain::filter. * Modified mail address extraction for $FROMADDR$ resource variable to help deal with malformed From: header fields. Thanks to Eugene Eric Kim for the recommendation. * Fixed uudecoding support in mhtxtplain.pl to handle spaces in filenames and \r\n EOLs. Thanks to Jordan Russell for spotting this. * Added ISO-8859-15 mappings. Thanks goto Jan Kraeber for the contribution. * Removed GIF images from distribution. All GIF images have been converted to PNG format. Transparency of PNG images may only be supported in the latest versions of various graphical web browsers. See for reasons why GIF images should not be used. * Source code imported into CVS. CVS respository is currently not available publicly. Stilling wondering if a site like savannah.gnu.org should be used or if the respository should be hosted independently, like at www.mhonarc.org. * Fixed regex patterns in readmail.pl to avoid Perl warning messages. * Created a contrib/ directory to contain any contributed programs imported into the MHonArc distribution. Moved prsfrom.pl from extras/ to contrib/. * Added Security section to FAQ. Provided more information to question, "Why does a message get split into mulitple messages with no headers?", mainly information contributed by users. ============================================================================ 2001/11/24 (2.5.2) o mha-dbrecover new options: -dbr-startnum # The starting message number to recover data from. This option is useful if you have many message files in a directory, but you only want to recover a subset of the files. If this option is not specified, the starting number is 0. -dbr-endnum # The ending message number to recover data from. This option is useful if you have many message files in a directory, but you only want to recover a subset of the files. If this option is not specified, all messages starting from -dbr-startnum will be recovered. o MSGPGBEGIN default value changed where $SUBJECTNA:72$ has been replaced with $SUBJECTNA$. This is so default values do not have any possible conflicts with variable-width character sets. ============================================================================ 2001/11/13 (2.5.1) o Added special note within the release notes about downgrading. o Some documentation corrections. ============================================================================ 2001/10/14 (2.5.0) [This is non-beta release of 2.5.0. See the change notes below and for the various beta release for a complete list of changes from the last v2.4 release.] o The ICONS resource has been updated to support the association of icons at the base type level (e.g. text/*) and to specify width and height hints. The example icon resource file listed in an appendix of the documentation updated to to use changes to ICONS resource. o Formatting of attachment links within the m2hexternal.pl filter has been updated to provide more verbose information. Description of the format provided in the MIMEFILTERS documentation. Also, a 'frame' filter argument is now supported to instruct the filter to draw a frame around the link. o Default value for MIMEArgs has been changed to the following: m2h_external::filter; inline This is more concise then previous default value. On a resource file maintenance standpoint, it is generally best to specify filter arguments at the filter level and not at the content-type level. o Value of Perl's $^O variable printed with version information for -V, -v, -help command-line options. o The count of new messages added to archive are now printed along with the total message count when QUIET is not active. ============================================================================ 2001/09/05 (2.5.0b2) o Long overdue update of ACKNOWLG file. o New resources: TSLICELEVELS -- Maximum depth for thread slices. o New resource variables: $TLEVEL$ -- Numeric level of message in thread. o Added recognition of windows-1250 and windows-1252 charsets into MHonArc::CharEnt and to default value of CHARSETCONVERTERS resource. To apply to existing archives, use mha-dbedit with examples/def-mime.mrc resource file. o SUBJECTREPLYRXP now used to determine if "Re: " is added when $SUBJECT$ is used within MAILTOURL. o Code cleanup to eliminate perl -w warnings. Cleanup not required for running MHonArc, but convenient for those that use MHonArc with perl's -w option. ============================================================================ 2001/08/26 (2.5.0b) o API for MIMEFILTERS has been changed. Content filters are now called as follows: ($html, @files) = &filter($fields_hash_ref, $body_data_ref, $is_decoded, $filter_args); Paramaters: $fields_hash_ref A reference to hash of message/part header fields. Keys are field names in lowercase and values are array references containing the field values. For example, to obtain the content-type, if defined, you would do: $fields_hash_ref->{'content-type'}[0] Values for a fields are stored in arrays since duplication of fields are possible. For example, the Received: header field is typically repeated multiple times. For fields that only occur once, then array for the field will only contain one item. $body_data_ref Reference to body data. It is okay for the filter to modify the text in-place. $is_decoded Boolean flag if body data has been decoded. This is normally true unless some non-standard content-transfer-encoding is used. $filter_args String containing filter args as defined by MIMEARGS resource. Return: The return value is still treated in the same manner as previous releases. The first item in the return list is the text that should printed to the message page. Any other items in the return list are derived filenames created by the filter. If undef, or the empty string, is returned, readmail.pl assumes the filter was unable to filter the data. All the filters provided in the MHonArc distribution have been modified to use the new calling convention. o The HEADER and FOOTER resources are no longer supported. o The default value of DEFRCNAME is now ".mhonarc.mrc" ("mhonarc.mrc" for Win/DOS). o ISO8859 character set data processing now defaults to using the MHonArc::CharEnt module. The old iso8859.pl library is still provided for compatibility with older archives. To update archives to use the new settings, you can run the following command, mha-dbedit -rcfile examples/def-mime.mrc \ -outdir /path/to/archive where "examples/def-mime.mrc" represents the default MIME processing resources for MHonArc provided within the MHonArc distribution. The new module is more efficient in memory usage by only loading mappings for character sets actually processed. The old iso8859.pl library preloads all mappings. Also, the module is designed to be easily extensible for processing any 8-bit-based character sets. o Reference, follow-up, and derived file information of a message is now stored in a different format in the database (and internally). MHonArc will auto-update older archives to the new format. The newer format should provide some performance improvement. o Messages with no subjects are now stored with no subjects. In previous releases, the text "No Subject" was automatically added as a message was parsed, hence there was no real indicator that a message had no real subject. A related change is that messages without subject text are skipped in subject-based thread detection. Therefore, a no-subject message will never be a possible follow-up, but it is still possible for it to be an explicit follow-up if it includes reference message-ids. NOTE: This functionality does not apply to messages processed by earlier versions where the text "No Subject" was auto-applied to messages when parsed. A recreation of an archive from the original message data would have to be done to have new behavior applied to message processed by earlier releases. A messages with no subject will now have the string "[no subject]" displayed any time the $SUBJECT$ resource variable is used for the message. o New resources: FIRSTPGLINK Link markup for first page of main index. LASTPGLINK Link markup for last page of main index. TFIRSTPGLINK Link markup for first page of thread index. TLASTPGLINK Link markup for last page of thread index. TNEXTINBUTTON Button markup for next message within a thread. TNEXTINBUTTONIA Inactive button markup for next message within a thread. TNEXTINLINK Link markup for next message within a thread. TNEXTINLINKIA Inactive link markup for next message within a thread. TNEXTTOPBUTTON Button markup for first message in the next thread. TNEXTTOPBUTTONIA Inactive button markup for first message in the next thread. TPREVINBUTTON Button markup for previous message within a thread. TPREVINBUTTONIA Inactive button markup for previous message within a thread. TPREVINLINK Link markup for previous message within a thread. TPREVINLINKIA Inactive link markup for previous message within a thread. TPREVTOPBUTTON Button markup for first message in the previous thread. TPREVTOPBUTTONIA Inactive button markup for first message in the previous thread. TSLICECONTBEGIN Thread slice markup before the continuation of a broken thread. TSLICECONTEND Thread slice markup after the continuation of a broken thread. TSLICEINDENTBEGIN Thread slice markup for opening a level when continuing a broken thread. TSLICEINDENTEND Thread slice markup for closing a level when continuing a broken thread. TSLICELIEND Ending markup for a thread slice message listing. TSLICELIENDCUR Ending markup for a thread slice message listing. TSLICELINONE Thread slice markup for a missing message in thread slice. TSLICELINONEEND Ending markup for a missing message in thread slice. TSLICELITXT Markup for a thread slice message listing. TSLICELITXTCUR Markup for a thread slice message listing if current message. TSLICESINGLETXT Markup for a thread slice listing with no follow-ups. TSLICESINGLETXTCUR Markup for a thread slice listing with no follow-ups if current message. TSLICESUBJECTBEG Markup before a subject based thread slice listing. TSLICESUBJECTEND Markup after a subject based thread slice listing. TSLICESUBLISTBEG Thread slice markup for starting a sub-thread. TSLICESUBLISTEND Thread slice markup for ending a sub-thread. TSLICETOPBEGIN Thread slice markup for the root/start of a thread. TSLICETOPBEGINCUR Thread slice markup for the root/start of a thread. TSLICETOPEND Thread slice markup for the end of a thread. TSLICETOPENDCUR Thread slice markup for the end of a thread if current message. o $TSLICE$ resource variable can now take up to three arguments: $TSLICE(;;)$ where, : Number indicated the maximum number of message to print before the current message. If empty, the before value specified in TSLICE resource will be used. : Number indicated the maximum number of message to print after the current message. If empty, the after value specified in TSLICE resource will be used. : If `1', only messages within the current thread will be printed. If `0', messages from the previous and next threads can be printed if the values for and would go beyond the current thread. o TSLICE resource updated to allow specification of default value of inclusive flag. o The following new message specifications can be used for message data-related resource variables: TNEXTIN Next message within current thread. TNEXTTOP Start of next thread. TPREVIN Next message within current thread. TPREVTOP Start of previous thread. When used as arguments to the the $BUTTON$ and $LINK$ resource variables, the TNEXTINBUTTON(IA), TNEXTTOPBUTTON(IA), TPREVINBUTTON(IA), TPREVTOPBUTTON(IA), TNEXTINLINK(IA), TNEXTTOPLINK(IA), TPREVINLINK(IA), TPREVTOPLINK(IA) resources are respectively applied. o The use of TNEXT, TPREV (and new TNEXTTOP and TPREVTOP) message specifications in resource variables behave more intuitively when TREVERSE is active. If at the boundaries of a thread, TNEXT and TPREV will reference the first message of the next thread by date and the first message of the previous thread by date, respectively. o Version of MHonArc and Perl are printed when MHonArc starts unless QUIET is active. o mhtxtplain.pl (text/plain) filter changes: . If the htmlcheck option is set and it is detected that the data is HTML, an attempt is first made to use the registered text/html filter via MIMEFILTERS. If none is defined, mhtxthtml.pl will be used. . When uudecode option is set, an attempt is to use the registered decoder for uuencode via MIMEDECODERS. If not defined, then base64::uudecode is used from base64.pl. o mhtxthtml.pl (text/html) filter changes: . Elements that have URL attributes that auto-load data -- IMG, BODY, IFRAME, FRAME, OBJECT, SCRIPT, INPUT -- have the atributes converted to 'javascript:void(0);' URLs. See new 'allownoncidurls' filter argument below for more details. . The follow filter arguments have been added: allownoncidurls Preserve URL-based attributes that are not cid: URLs. Normally, any URL-based attribute -- href, src, background, classid, data, longdesc -- will be converted to 'javascript:void(0);' if it is not a cid: URL. This is to prevent malicious URLs that verify mail addresses for spam purposes, secretly set cookies, or gather some statistical data automatically with the use of elements that cause browsers to automatically fetch data: IMG, BODY, IFRAME, FRAME, OBJECT, SCRIPT, INPUT. notitle Do not print title. o Searching for OTHERINDEXES resource files has been modified. The following lists the search order for an OTHERINDEXES resource file: 1. Current working directory. 2. Same directory that the first resource file was read as specified by the RCFILE resource. 3. User's home directory. 4. Archive directory. 5. Perl's @INC. o FIRST, LAST, TFIRST, and TLAST idx_page_spec arguments to $PGLINK$ are now supported via the FIRSTPGLINK, LASTPGLINK, TFIRSTPGLINK, and TLASTPGLINK resources. o $PGLINKLIST$ resource variable changed to print entire list of page links if no arguments are provided. To get the entire list for thread indexes, use: $PGLINKLIST(T)$. o Date parsing routine updated to recognize dates in the following format: Weekday, Month DD, YYYY HH:MM Zone. Apparently, this is useful if converting mail saved to a file in text format from MS Outlook. o Support for defining Perl function callbacks when a new message header is read and just after a message body has been converted. Documentation about the callbacks is provided in a new API appendix section in the documentation and is provided in comments in the example mhasiteinit.pl provided in the examples/ directory. o Various internal changes have been made to try to eradicate Perl 4-based conventions. For example, the use of typeglobs to pass by "reference" has been replaced by using real references. Assuming nothing was screwed up, this change should be transparent to most users (with the notable exception of the API changes to MIMEFILTERS registered routines). However, if you have mucked with MHonArc internals, or created custom modifications, you may need to be aware that changes have been made. ============================================================================ 2001/06/10 (2.4.9) o Added the following resources: MIMEEXCS List of content-types to exclude from processing. Exclusion occurs before data is passed to filters. o mhtxtplain.pl: If decoding uuencoded data, the data will be excluded if application/octet-stream is listed the MIMEEXCS resource. o mhtxthtml.pl: If a CID URL is not available, the CID URL is no longer preserved in the converted output. The CID URL is stripped. o Added the following to mhmimetypes.pl content-type table: application/ms-excel => xls:MS-Excel spreadsheet application/ms-powerpoint => ppt:MS-Powerpoint presentation application/ms-project => mpp:MS-Project file The "vnd." official versions are already present, but some application use the above. o TODO list added to distribution. ======================================================================= 2001/04/13 (2.4.8) o Added the following resources: KEEPONRMM Do not remove message files from disk when messages are removed from the archive. o m2h_text_plain::filter now uses CHARSETCONVERTERS for translating text data with a specified charset parameter. The only exception is iso-2022-jp, which is handled directly to properly support nourl flag. o m2h_external::filter new arguments: excludeexts=ext1,... A comma separated list of message specified filename extensions to exclude. I.e. If the filename extension matches an extension in excludeexts, the content will not be written. The return markup will contain the name of the attachment, but no link to the data. This option is best used with application/octet-stream to exclude unwanted data that is not tagged with the proper content-type. The m2h_null::filter can be used to exclude content by content-type. o m2h_null::filter will now output a one line description of the excluded content. This is so the reader knows that there was message content not saved within the archive. o m2h_text_plain::filter new arguments: usename If extracting uuencoded data, the filename specified should be used. o m2h_text_html::filter new arguments: allowcomments Preserve any comment declarations. Normally Comment declarations are munged to prevent SSI attacks or comments that can conflict with MHonArc processing. Use this option with care. (NOTE: Comment declarations were completely stripped before, but the regex used was known to crash perl on large comment declarations, so a simplier expression is now used to modify comment declarations to prevent possible attacks.) ======================================================================= 2000/10/28 (2.4.7) o Added the following options to m2h_text_plain::filter: attachcheck Honor attachment disposition. By default, all text/plain data is displayed inline on the message page. If attachcheck is specified and Content-Disposition specifies the data as an attachment, the data is saved to a file with a link to it from the message page. htmlcheck Check if message is actually an HTML message (to get around abhorrent MUAs). The message is treated as HTML if the first non-whitespace data looks like the start of an HTML document. o FROMFIELD resource default value is now: from:mail-reply-to:reply-to:return-path:apparently-from: sender:resent-sender The change is the addition of "mail-reply-to." o Added the following resource variables: $MSGTORDNUM$ Ordinal number of message in current thread. o Added the following resource variable message specificiers: TEND Last message of current discussion thread. TTOP Top/root message of current discussion thread. o Changes to readmail.pl: - %Cid hash keys are now URLs. Content-Ids are denoted as "cid:..." Hash also contains Content-Location values of message parts. This allows filters (like the HTML filter) to check for external URL references where the data for the reference is included with the message. - More robust handling of malformed multipart messages. o The null filter is applied to application/ms-tnef by default. o Lowercase tag names are now used in default resource values that contain HTML markup. o Bug fixes to the documentation. ======================================================================= 2000/04/24 (2.4.6) o Stricter check is made when decoded quoted-printable data. An escape sequence is only converted to a raw character if a it is a valid escape sequence. I.e. Any '=' not followed by two hexadecimal characters is left as-is. o Call to Digest::MD5::md5_hex() wrapped in eval block in case of bad installations of Digest::MD5 module. ======================================================================= 2000/02/14 (2.4.5) o Following changes to m2h_text_html::filter: - All comment declarations are removed. This avoid potential SSI attacks and declarations that may conflict with MHonArc. - Additional tags have been added to the to-strip list to avoid potential client-side scripting attacks. See MIMEFILTERS docs for list. - Added "nofont" option to strip out any tags. o Added application/x-bzip2 to known mime types (mhmimetypes.pl). o Simple modification to get_time_from_date() in mhutil.pl to handle abhorrent case of message date using a 2 digit year. o Under VMS, the default lock file name has been changed to "mhonarc_lck" for directory based locking will work. o mhonarc::htmlize/entify now translates the double-quote character (") to ". o Added VARREGEX resource to allow customization of resource variable matching. Mainly for use with resource files written on multibyte charsets like SJIS. Use with caution. ======================================================================= 1999/10/01 (2.4.4) o Added the following resources: MIMEDECODERS Content-Transfer-Encoding decoding functions. o Added the following resource variables: $PGLINKLIST$ Print out a list of index page links. o New content filter for message/external-body. o Message/delivery-status content handled by mhtxtplain.pl o Support for "Zone[+-]DDDD" timezone specification. o MAILparse_parameter_str() function added to readmail.pl. Function supports parsing parameter value strings with support for RFC 2184 extensions. Function added to provide support for message/external-body filter. ======================================================================= 1999/08/15 (2.4.3) o Added the following resources: POSIXSTRFTIME Use POSIX::strftime() or not for processing time format strings o The "latin[1-6]" character sets defined in the default value of CHARSETCONVERTERS. iso8859::str2sgml modified to use proper iso8859 map for specified latin[1-6] specification. o The text/html filter now strips out scripting markup by default. To allow scripting markup to be preserved, the "allowscript" option can be used. o Unknown media-types are now treated as application/octet-stream, which will invoke the application/octet-stream filter. Because of this, an explicit entry for application/octet-stream has been added to the default value of MIMEFILTERS. o If in a multipart/alternative entity, and no known media-types exists, the last part is treated as application/octet-stream. ======================================================================= 1999/08/11 (2.4.2) o Added the following resources: STDIN Source for standard input o Added the following resource variables: $ENV$ Print an environment variable o Added support for decoding uuencoded data within text messages in mhtxtplain.pl. Decoding activated via the "uudecode" option. o For processing time format strings, POSIX::strftime() is used, if available. If not, MHonArc implementation is used. o The default value of FROMFIELDS now includes "return-path". o Description section moved before Options section in -help message. ======================================================================= 1999/07/25 (2.4.1) o Added the following resources: MSGEXCFILTER Perl expressions for excluding messages from archive. SAVERESOURCES Flag if resource values should be saved in database. o Added the following resource variables: $HTMLEXT$ Value of HTMLEXT resource. o Documentation corrections an additions. o Use of typeglobs removed from mhdb.pl. o mhtime.pl explicitly defined in mhonarc package. ======================================================================= 1999/06/25 (2.4.0) o Added the following resources: ADDRESSMODIFYCODE Perl expressions to apply to addresses during message header conversion. CHECKNOARCHIVE Check "no archive" flag in messages. LOCKMETHOD The type of archive locking performed. SPAMMODE Perform actions to deter email address harvesters. SSMARKUP Markup at the *very* beginning of any generated page. STDOUT Destination of stdout messages/data. STDERR Destination of stderr messages/data. SUBJECTTHREADS To check, or not to check, subjects when computing threads. o Added the following resource variables: $FROMADDRNAME$ Username portion of From email address. $FROMADDRDOMAIN$ Domain portion of From email address. $TOADDRNAME$ Username portion of an email address (applicable in MAILTOURL only). $TOADDRDOMAIN$ Domain portion of an email address (applicable in MAILTOURL only). o A new utility program: mha-decode. The program functions as a MIME message decoder. Can be used against mail folders or single messages. o The "PARENT" argument to applicable resource variables is now called "TPARENT". This change should not affect anyone since the "PARENT" argument did not work properly in previous releases. o SUBJECTHEADER and HEADBODYSEP resource changes will now affect existing messages that are edited during normal operations or via EDITIDX. Note, messages created from old versions of MHonArc may not be affected. o The default TIMEZONES settings now has a more complete list. o Timezone acronym settings now support [+-]HHMM specifications. o Support for ISO-2022-JP encoded strings in message headers is now supported. It does assume that HTML viewer supports ISO-2022-JP. o If Digest::MD5 is installed, md5_hex() will be used to create message-ids for messages without message-ids. This allows MHonArc to ignore non-message-id archived messages in ADD mode. The MD5 digest is computed only on message header for efficieny. If Digest::MD5 is not installed, a message-id will still be assigned if none present, but MHonArc will not be able to detect if message has already been archived in subsequent ADD operations. o Text/html filter supports the "noscript" option. If specified, any script-related markup will be removed. This provides added security to avoid sites being compromised with foreign client-side scripting. o Added the following options to mhexternal.pl (the save-to-file filter): forceattach, forceinline, and inlineexts. o Recognize mailing list headers as defined by RFC 2369 and hyperlink URLs listed. o If no boundaries exist in a multipart message (even though a boundary is defined in the header), MHonArc will treat the entire body as the first part. This prevents "unable to process" warnings. o The "" is now inserted between the message header and body. Helps in the building of some search indexes to restrict searches on message data. o Many resource settings are no longer stored in database if the resource is the default value. Save some disk space and allows resources to self adjust when a dependent resource is changed. o The text/plain filter in mhtxtplain.pl has the following enhancements: - Check for charset to control character conversion. - Integrated iso-2022-jp filter (keys off charset) - Filter option "quote" cause quoted text in message to be italicized. - Filter option "asis" defines a list of charsets to not convert to sgml entitites. Example usage: asis=iso-8859-1:iso-8859-2 o mhtxt2022.pl has been removed since the code has been integrated into mhtxtplain.pl. o Resource file elements that have textual content (ie. no line oriented content) can specify the "chop" attribute to have the last end-of-line stripped from the content. Example usage: [Next] o Fixed bug in creating links of message-ids. Mhonarc blindingly made links of message-ids when editting messages w/o consideration that the message-ids may already be linked. This caused markup like the following to occur: ...... Browsers handle the invalid markup with no problems, causing the bug to go unnoticed for a long time. Now, only new added message-ids are scanned for when creating links. o $readmail'FieldSep should now be used instead of $FieldSep for separating duplicate fields in a parsed message header. o The -scan output now prints a 4 digit year. o Bogus space no longer appears in subjects and dates. o Outdir permissions are not checked if -single specified. o Some internal changes to how data is stored in databases (needed for 1522 support). v2.0 will automatically modify 1.x databases to the 2.0 format. o The -single option utilizes the same mail output routine utilized by regular archive processing. o MhonArc will now handle numbers with leading zeros when the -rmm option is specified. o New resources: CHARSETCONVERTERS - Specify character set filters CONLEN - Honor content-lengths DECODEHEADS - Decode 1522 encoded data, set for decode only, as message headers are read (see note below) DEFINEVAR - Define resource variables DEFINEDERIVED - Define user defined derived file EXPIREDATE - Message cut-off date EXPIREAGE - Time in seconds from current if msg expires FIELDSBEG - Begin markup of converted mail header FIELDSEND - End markup of converted mail header FLDBEG - Begin markup of mail header field text FLDEND - End markup of mail header field text FOLREFS - Print links to explicit follow-ups & refs GMTDATEFMT - Format of $GMTDATE$ HEADBODYSEP - Markup between converted mail header & body IDXPREFIX - Prefix for multi-page main index filenames INCLUDE - Read resources from other files LABELBEG - Begin markup of mail header label LABELEND - End markup of mail header label LOCALDATEFMT - Format of $LOCALDATE$ MAIN - Create main index MHPATTERN - Expression for mesg files in a directory MODTIME - Set file times to message dates MONTHS - Full month names: EOL or ':' separated MONTHSABR - Abbrieviated month names: EOL or ':' separated MULTIPG - Create multi-page indexes NEXTPGLINK - Link to next page in main index NEXTPGLINK - Inactive link to next page in main index NOCONLEN - Ignore content-lengths NODECODEHEADS - Leave message headers "as is" when read (see note below) NOFOLREFS - Do not print links to follow-ups & refs NOMAIN - Do not create main index NOMODTIME - Do not set file times to message dates NOMULTIPG - Do not create multi-page indexes PREVPGLINK - Link to previous page in main index PREVPGLINKIA - Inactive link to previous page in main index SUBJECTHEADER - Markup for subject header in converted mail TIDXPREFIX - Prefix for multi-page thread index filenames TSUBLISTBEG - List begin in sub-thread TSUBLISTEND - List end in sub-thread TSUBJECTBEG - Begin markup for subject-based sub-thread TSUBJECTEND - End markup for subject-based sub-thread TSINGLETXT - Markup for mesg not part of a thread TTOPBEGIN - Begin for top of a thread TTOPEND - End for a thread TLINONE - Markup for missing message in a thread TLIEND - Thread idx list item end TNEXTBUTTON - Thread next button template TNEXTBUTTONIA - Inactive thread next button template TNEXTLINK - Thread next link template TNEXTLINKIA - Inactive thread next link template TNEXTPGLINK - Link to next page in thread index TNEXTPGLINKIA - Inactive link to next page in thread index TPREVBUTTON - Thread previous button template TPREVBUTTONIA - Inactive thread previous button template TPREVLINK - Thread previous link template TPREVLINKIA - Inactive thread previous link template TPREVPGLINK - Link to prev page in thread index TPREVPGLINKIA - Inactive link to prev page in thread index WEEKDAYS - Full weekday names: EOL or ':' separated WEEKDAYSABR - Abbrieviated weekday names: EOL or ':' separated NOTE 1522 processing is done when creating HTML output and the (relevant) data stored in the database stays in encoded form. The DECODEHEADS resource can be set to decode decode-only charsets when message headers are read. Hence, the decode-only charsets will be stored in decoded form. Regular 1522 processing is still done to still-encoded data when generating output. The default is NODECODEHEADS. o List of removed resources: NOTSUBSORT, TSUBSORT o New resource variables: (NOTE: Some variables are only valid in certain contexts) $FIRSTPG$ - Filename of first page of main index $IDXPREFIX$ - Prefix to main index pages' filenames $LASTPG$ - Filename of last page of main index $NEXTPG$ - Filename of next main index page $NEXTPGLINK$ - Link to next page of main index $NUMOFPAGES$ - Total number of pages in index $PAGENUM$ - Current page number of index $PREVPG$ - Filename of previous main index page $PREVPGLINK$ - Link to previous page of main index $TFIRSTPG$ - Filename of first page of thread index $TIDXPREFIX$ - Prefix to thread index pages' filenames $TLASTPG$ - Filename of last page of thread index $TNEXTBUTTON$ - Button for next mesg in thread $TNEXTFROM$ - From of next mesg in thread $TNEXTFROMADDR$ - From address of next mesg in thread $TNEXTFROMNAME$ - From name of next mesg in thread $TNEXTLINK$ - Link for next mesg in thread $TNEXTMSG$ - Next mesg filename in thread $TNEXTMSGNUM$ - Next mesg number in thread $TNEXTPG$ - Filename of next thread index page $TNEXTPGLINK$ - Link to next page of thread index $TNEXTSUBJECT$ - Next mesg subject in thread $TPREVBUTTON$ - Button for prev mesg in thread $TPREVFROM$ - From of previous mesg in thread $TPREVFROMADDR$ - From address of previous mesg in thread $TPREVFROMNAME$ - From name of previous mesg in thread $TPREVLINK$ - Link for prev mesg in thread $TPREVMSG$ - Previous mesg filename in thread $TPREVMSGNUM$ - Previous mesg number in thread $TPREVPG$ - Filename of previous thread index page $TPREVPGLINK$ - Link to previous page of thread index $TPREVSUBJECT$ - Previous mesg subject in thread o Removed resources: NOTSUBSORT, TSUBSORT o Some changes to default resource settings. o Reorganized code. Some new libraries have been created to help in maintenance. o Source code has been put under SCCS revision control. ======================================================================= 1996/07/12 (1.2.3) o Extracted initialization of data structures into mhinit.pl. The file is just required from the main source. o Use q{} instead of qq{} when trying to read database file. Should fix require problem under MS-DOS. o Added comments at beginning of messages. May aid in database recovery techniques. o ';'s are now deleted in filenames in mhexternal.pl (applicable only when "usename" option specified) o Added recognition of '/' when converted e-mail addresses to mailto links in message headers. o Simple fix to mhtxt2022.pl for execution under Perl 5. ======================================================================= 1996/04/18 (1.2.2) o Increased the speed performance of base64 decoding. Speed increase is much greater under Perl 4 than Perl 5. o Added -time option to print out total CPU execution time. Mainly used for debugging reasons (like checking on base64 decoding times). Time information is sent to standard error. o Added M2H_LOCKDELAY envariable and -lockdelay option. Either can be used to adjust the sleep time between attempts to lock the archive. o Added -force option to override a lock on an archive if attempts to lock fail. o Added image/x-bmp and image/x-pcx to the default supported MIME types. o Ignore "Sv:" at the beginning of subjects when sorting by subject. "Sv:" is Danish for "Re:". o Fixed bug in mhutil.pl where TIDXPGEND actually set TIDXPGBEG. o Dynamically define exclude_field routine after reading user options. exclude_field is utilized when formatting a message header in HTML. Defining the routine at run-time helps reduce the regular expression overhead the old version of the routine entailed. There should be an increase in overall execution time. ======================================================================= 1996/03/22 (1.2.1) o Added support for x-uuencode content-transfer-encoding. o Added -locktries command-line option. o Added the resource variable $OUTDIR$. o mhexternal.pl filter will use the name parameter string on the content-type field as the anchor text to the file if there is no content-description. o application/x-patch is recognized and processed by the text/plain filter (mhtxtplain.pl). o Fixed bug in install.me and osinit.pl where setting $'PROG caused perl to terminate if $'DIRSEP was a backslash (occured under MS-DOS usage). o Fixed bug in install.me in the create_dir routine. If $DIRSEP was a backslash, the regular expression setting @a would cause perl to abort with an error. o Fixed database bug where the MIMEARGS resource setting was not being stored. o Fixed index listing bug where a reverse listing was not correct if an index size was specified less than the current size of the archive. ======================================================================= 1996/03/01 (1.2.0) o Rewrote message parser routine so it will work under Perl 5 for multipart messages. The rewrite also allows some additional features that are mentioned below. o The -mbox and -mh options are no longer required. MHonArc will automatically determine which mode to operate in based upon the file arguments. Hence, one can specify MH folders and mailbox files on the same command-line. Both options are ignored if specified. o An HTML index of an archive contents can be generated to standard output (-genidx). o Message header lines not conforming to RFC 822 are ignored. (Eg: Those pesky "From " lines should not show up anymore -- please do not confuse this with the regular "From:" lines; note the colon vs the space). o New resources: BOTLINKS - May be used to completely customize the links at the bottom of messages. IDXPGBEGIN - Opening markup for main index page. Allows one to redefine opening HTML element, HEAD element, TITLE element, opening BODY element, etc. IDXPGEND - Closing markup for main index page. IDXSIZE - Set the maximum number of messages listed in index. This is different in MAXSIZE where MAXSIZE will remove older messages when the MAXSIZE limit is reached in the archive. MIMEARGS - Define arguments to filters MSGPGBEGIN - Opening markup for message pages. Allows one to redefine opening HTML element, HEAD element, TITLE element, opening BODY element, etc. MSGPGEND - Closing markup for message pages. NEXTBUTTON - Defines the 'Next' button. NEXTBUTTONIA - Defines the 'Next' button when it is inactive. NEXTLINK - Defines the 'Next' link. NEXTLINKIA - Defines the 'Next' link when it is inactive. NOTSUBSORT - Do not sort threads by subject. OTHERINDEXES - List other resource files defining other indexes to create when creating, or updating, an archive. PREVBUTTON - Defines the 'Prev' button. PREVBUTTONIA - Defines the 'Prev' button when it is inactive. PREVLINK - Defines the 'Prev' link. PREVLINKIA - Defines the 'Prev' link when it is inactive. TIDXPGBEGIN - Opening markup for thread index page. Allows one to redefine opening HTML element, HEAD element, TITLE element, opening BODY element, etc. TIDXPGEND - Closing markup for thread index page. TOPLINKS - May be used to completely customize the buttons at the top of messages. TSUBSORT - Sort threads listed by subject. o Removed resources: INDEXBL, INDEXFL, MBOX, MH, NEXTBL, NEXTFL, PREVBL, PREVFL, TINDEXBL, TINDEXFL Resource were removed because they were no longer applicable and/or have been superceded by other resources. MHonArc will still honor old resource settings (where applicable) of older archives and incorporate them into the new resource settings. o When specifying the resource file, mhonarc will now do the following to determine its location: 1. If its an absolute pathname, mhonarc uses it. 2. If it is a relative pathname, mhonarc checks for it relative to the current working directory. 3. Otherwise, mhonarc checks for it relative to location of the archive as specified by outdir. This resolution will allow you to place resource files with the archive if desired (can be useful when using the OTHERINDEXES resource element). o Because of the new resources available, many
    's are no longer hard-coded and are controllable by resources.
    's are still used in message pages to separate message data from mhonarc data. o Added resource variables: (NOTE: Some variables are only valid in certain contexts) $DDMMYY$ - Date of message in dd/mm/yy format $IDXSIZE$ - Max size of index list $MMDDYY$ - Date of message in mm/dd/yy format $MSGID$ - Message id $NEXTBUTTON$ - Next button markup $NEXTFROM$ - From field of next listed message $NEXTFROMADDR$ - From e-mail address of next listed message $NEXTFROMNAME$ - From name of next listed message $NEXTLINK$ - Next link markup $NEXTMSGNUM$ - Number of next listed message $NEXTSUBJECT$ - Subject text of next listed message $NUMOFIDXMSG$ - Number of messages in index list $PREVBUTTON$ - Previous button markup $PREVFROM$ - From field of previous listed message $PREVFROMADDR$ - From e-mail address of prev listed message $PREVFROMNAME$ - From name of previous listed message $PREVLINK$ - Previous link markup $PREVMSGNUM$ - Number of previous message $PREVSUBJECT$ - Subject text of previous listed message $YYMMDD$ - Date of message in yy/mm/dd format o Can specify a 'U' with variable length specifier to denote replacement string is to be used in a URL. Examples: $SUBJECTNA:40U$ $MSGID:U$ The 'U' causes the replace text to have special characters escaped as denoted by the URL spec. NOTE: Specify ":U" should NOT be used in the MAILTOURL resource; the variables will automatically be expanded according to the URL spec. Specifyind ":U" or a length specifier in the MAILTOURL resource will prevent mhonarc from detecting the variable. o New command-line options: -genidx - Generate HTML index of archive contents to stdout. -idxsize - Maximum number of messages shown in indexes -notsubsort - Do not sort threads listed by subject. -savemem - Write message data while processing -tsubsort - Sort threads listed by subject. o The library mhtxt2022.pl has been added that provides a filter to process ISO-2022 (Japanese) encoded mail messages. See mhtxt2022.pl on how to hook it in. o The mhexternal.pl filter by default ignores any filename specification in the message for creating derived files. This avoids name conflicts and security problems. The "usename" filter option may be used to override this. o Mime filters are now called with two additional arguments: $converted_data = &function( $header, *parsed_header_assoc_array, *message_data, $decoded_flag, $optional_filter_arguments); The $decoded_flag is set to 1 if the *message_data has been decoded. $optional_filter_arguments contains an optional argument string as determined by the filter. o Mime filters can now be registered for multipart types and message types. This allows one to override mhonarc's conversion of these types, and completely replace mhonarc's message->HTML conversion process. o Mime filters should now use $'FieldSep instead of $'X for accessing parsed message headers. o Mime filters can be registered for a base type. Ie. It is no longer required to explicitly list each possible subtype if a single filter is to be used for them all. Example: image/*:myfilter'imagefilter:myfilter.pl Registers "myfilter'filter" for all image data types, regardless of subtype. However, if an explicit entry exists for a subtype, then that filter is called. Example: image/*:myfilter'imagefilter:myfilter.pl image/gif:myfilter'giffilter:myfilter.pl "myfilter'giffilter" is called for all image/gif data. "myfilter'imagefilter" is called for all other image data. o A new resource, MIMEARGS, may be used to pass optional arguments to filters to control their behavior. The format of the argument string is controlled by the various filters. The arguments can be specified by a specific content-type, or for the filter routine in general. A content-type argument will be used over any arguments specified for a filter. Example usage: image/gif:inline usename m2h_external'filter:usename See the documentation for possible arguments to filters. o Installation program can now be invoked in batch mode. o Thread index properly includes docurl as main index. -nodocurl will prevent the inclusion as with the main index. o Fixed bug in mhtxthtml.pl on properly propogating a base URL to relative URLs starting with a "/". o Fixed bug where single quotes, and backslashed in keys of associative arrays in the database file were not getting escaped. o Fixed bug where spaces and special characters were not properly escaped in URL strings: spaces were left as-is, and special characters were deleted. o Removed illegal invocation choices in the Synopsis of the documentation. ======================================================================= 1995/04/24 (1.1.1) o Fixed bug in -scan output where month in date was off by one. ======================================================================= 1995/04/21 (1.1.0) o Made modifications to make MHonArc suitable to run under MS-DOS without modification. MHonArc will automatically detect if it is running under Unix or MS-DOS. o Added support for a thread index. MHonArc will create a complimentary index to the main index showing message threads. o Archive messages can be deleted. o A listing to stdout of an archives contents can be generated. o Maximum number of messages for an archive can be set. Older messages (based on sort method) are removed automatically during add operations. o MHonArc will now recognize if you try to add in a message that already exists in an archive. o The -editdx option will now also cause a updating of all mail messages. Guarantees resource changes to affect all messages. o Added the following resource file elements: MSGFOOT -- Footer text for converted messages MSGHEAD -- Header text for converted messages NODOC -- Do not put link to documentation NOTHREAD -- Do not create thread index TFOOT -- Text at bottom of thread index page THEAD -- Text at top of thread index page THREAD -- Create thread index TLEVELS -- Depth of thread listing TLITXT -- Template text for entry in thread index TIDXFNAME -- Thread index filename TINDEXBL -- Top button label in messages to thread index TINDEXFL -- Verbose label in message to thread index TTITLE -- Title of thread index page o Added the following command-line options: -maxsize -- Maxinum # messages in an archive -nodoc -- Do not put link to documentation -nothread -- Do not create thread index -rmm -- Remove messages from an archive -scan -- Listing of archive to stdout -thread -- Create thread index -tidxfname -- Thread index filename -tlevels -- Depth of thread listing -ttitle -- Title of thread index page o Added the following environment variables: M2H_MAXSIZE -- Maxinum # messages in an archive M2H_THREAD -- If non-zero, create thread index M2H_TIDXFNAME -- Thread index filename M2H_TLEVELS -- Depth of thread listing M2H_TTITLE -- Title of thread index page o Added the following variables for template resources (applicability of variables vary depending on the resource): $DOCURL$ -- URL to documentation $IDXFNAME$ -- Main index page filename $IDXTITLE$ -- Main index page title $NEXTMSG$ -- Next message filename $PREVMSG$ -- Previous message filename $PROG$ -- Program name $TIDXFNAME$ -- Thread index page filename $TIDXTITLE$ -- Thread index page title $VERSION$ -- Version number of the program o Added $FROM$, $MSGID$, and $SUBJECT$ variables to be used in the MAILTOURL resource. o The string `$$' in template resources will produce a `$' in the output. o Fixed problem with messages (with follow-ups) getting unnecessarily updated when messages are added to an archive. o Only a CR/LF, or LF, pair will terminate a message head. Before, MHonArc was terminating message heads when encountering an empty line or a line that only contained whitespace (which was incorrect behavior). o Fixed bug in mhexternal.pl dealing with the `name' parameter in the content-type field. Surrounding "s or 's were not being deleted causing filenames with quotes to be written. o mhexternal.pl: The head of a pathname in the `name' parameter in the content-type field is stripped off before writing the external file. I.e. Only the base filename is used. o Only one
    after the H1 subject in messages will appear if no message header fields are printed. o Added recognition of the following content-types in mhexternal.pl: application/mac-binhex40 o Added a extras/ directory containing useful programs for MHonArc. See README in the directory for information on the programs contained in there. o To support -rmm, MIME filters now return an array. The first array value is the HTML for the message, and any other array values are filenames of files generated by the filter. This allows MHonArc to know of any extra files that must be deleted when a message is removed. o Some routines from the main mhonarc source file have been moved into a separate librarys: readmail.pl, mhdb.pl, mhutil.pl o The default URL to the documentation is now, http://www.oac.uci.edu/indiv/ehood/mhonarc.html The old URL, http://www.oac.uci.edu/indiv/ehood/mhonarc.doc.html is still valid. o There's probably other stuff, but I cannot remember. ======================================================================= 1994/10/01 (1.0.0) o First release -- See RELNOTES about compatibility issues with mail2html. ======================================================================= Earl Hood, mhonarc@mhonarc.org $Id: CHANGES,v 1.161 2014/04/22 02:33:09 ehood Exp $ MHonArc-2014-05-05-snap/admin/0000755004705000001440000000000012332046076014447 5ustar ehoodusersMHonArc-2014-05-05-snap/admin/mhaadmin.html0000644004705000001440000000055706734637462017140 0ustar ehoodusers MHonArc Archive Admin MHonArc-2014-05-05-snap/admin/mhaadmin.rc0000644004705000001440000000204606754302706016563 0ustar ehoodusers#!/usr/local/bin/perl ## mhaadmin.cgi resource file ## The syntax of this file is Perl. mhaadmin.cgi will require this file ## at start-up. This file should be in the same directory as mhaadmin.cgi. ## Location of MHonArc libraries use lib qw( /home/ehood/work/perl/MHonArc/lib ); +{ ## Type of archive locking performed ## --------------------------------- 'lockmethod' => 'directory', # Directory file method (default) #'lockmethod' => 'flock', # Flock() method (use it if you can) ## Hash of archives to manage ## -------------------------- 'archive' => { ## 'full/pathname/to/archive' => ## [ "Label to appear in admin program", "Base URL to archive"], '/home/ehood/work/perl/MHonArc/work/cgitest' => [ 'Cgi Test', 'http://localhost/mha-bin/cgitest/' ], '/home/ehood/work/perl/MHonArc/work/out' => [ 'MIME Test', 'http://localhost/mha-bin/out/' ], }, ## Image URL: Where icons are located ## ---------------------------------- 'iconurl' => 'images', }; ## NOTHING GOES BELOW THIS LINE MHonArc-2014-05-05-snap/admin/mhaadmin.cgi0000755004705000001440000006234707411627115016731 0ustar ehoodusers#!/usr/local/bin/perl ##---------------------------------------------------------------------------## ## File: ## $Id: mhaadmin.cgi,v 1.3 2001/12/24 13:31:57 ehood Exp $ ## Author: ## Earl Hood mhonarc@pobox.com ## Description: ## CGI program for MHonArc archive administration. ##---------------------------------------------------------------------------## ## Copyright (C) 1998,1999 Earl Hood, mhonarc@pobox.com ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package MHAHttpAdmin; use lib qw ( . ./lib ); use CGI; use CGI::Carp; ##---------------------------------------------------------------------------## ## Main routine ## ##---------------------------------------------------------------------------## use vars qw( $JSMenuBar $JSIndexPage $JSMesgPage ); BEGIN: { jscript_define(); $ENV{'M2H_USELOCALTIME'} = 1; } my $Debug = 0; # set to 1 for debug mode, messages sent to server log my $Rc; my $menulogo; my $noteicon; my $query; my $action; my $archive; my $pagesize; my @body_attr = ( '-bgcolor' => "#dddddd", '-text' => "#000000", '-link' => "#0000ee", '-vlink' => "#551a8b", '-alink' => "#ff0000", ); MAIN: { $Rc = require 'mhaadmin.rc' or croak qq/Error: Unable to require resource file\n/; if ($Debug) { warn '@INC=', join(':', @INC), "\n"; } $menulogo = "$Rc->{'iconurl'}/mhaicon.png"; $noteicon = "$Rc->{'iconurl'}/mhanote_s.png"; $ENV{'M2H_LOCKMETHOD'} = $Rc->{'lockmethod'} if defined($Rc->{'lockmethod'}); ## Load main MHonArc library require 'mhamain.pl'; if ($Debug) { warn qq/MHonArc version = $mhonarc::VERSION\n/; } if ($Debug) { warn qq/lockmethod = $ENV{'M2H_LOCKMETHOD'}\n/; } ## Initialize CGI environment $query = new CGI; ## Initialize MHonArc mhonarc::initialize(); ## Get archive $archive = $query->param('archive'); if ($archive !~ /\S/) { $archive = $query->param('archive') || (sort { $Rc->{archive}{$a}[0] cmp $Rc->{archive}{$b}[0] } keys %{$Rc->{archive}})[0]; } ## Get action $action = $query->param('action'); if ($Debug) { warn qq/(archive=$archive, action=$action)/; } ## Check if deleting messages if ($action eq 'delete') { my %dup = (); my @msgnum = grep { /\S/ && ($dup{$_}++ < 1 ) } $query->param('msgnum'); if (@msgnum) { mhonarc::process_input( '-outdir', $archive, '-quiet', '-rmm', @msgnum); } $action = 'index'; } ## Print menubar if ($action eq 'menubar') { do_menu_bar(); last MAIN; } ## Viewing a message if ($action eq 'show') { do_mesg_view(); last MAIN; } ## Showing index do_index(); } ## End: MAIN ##---------------------------------------------------------------------------## ## Subroutines ##---------------------------------------------------------------------------## ##---------------------------------------------------------------------------## ## do_menu_bar outputs the menubar. Output is targeted to the ## menubar frame. ## sub do_menu_bar { if ($Debug) { warn qq/do_menu_bar/; } print $query->header( '-target' => 'mhaMenuBar'); print $query->start_html( '-title' => 'MHonArc Admin: Menubar', '-script' => $JSMenuBar, @body_attr); print $query->startform( '-name' => 'menuBarForm', '-method' => 'post', '-action' => $query->url()); print_main_menus(); print $query->endform(); print $query->end_html(); } ##---------------------------------------------------------------------------## ## do_index display the message index. Output is targeted to ## the main window frame. ## sub do_index { if ($Debug) { warn qq/do_index/; } my $page = $query->param('page'); my $pagenum = $query->param('pagenum'); my $pagesize = $query->param('pagesize') || 50; my $sort = $query->param('sort') || 'sort'; my $thread = ($sort =~ /^t/ ? 1 : 0); ## Print header print $query->header( '-target' => 'mhaWorkArea'); print $query->start_html( '-title' => 'MHonArc Admin: Message Index', '-script' => $JSIndexPage, @body_attr); #print $query->dump; print $query->startform( '-name' => 'listForm', '-method' => 'post', '-action' => $query->url()); ## Write some hidden fields $action = 'index'; $query->param('action', $action); print $query->hidden( '-name' => 'action', '-value' => $action), "\n"; $query->param('archive', $archive); print $query->hidden( '-name' => 'archive', '-value' => $archive), "\n"; $query->param('pagesize', $pagesize); print $query->hidden( '-name' => 'pagesize', '-value' => $pagesize), "\n"; $query->param('sort', $sort); print $query->hidden( '-name' => 'sort', '-value' => $sort), "\n"; $query->param('page', 'cur'); print $query->hidden( '-name' => 'page', '-value' => $page), "\n"; ## Open archive mhonarc::open_archive( '-nolock', '-outdir', $archive, '-quiet', '-nodoc', '-multipg', '-idxsize', $pagesize, "-$sort", $thread ? ('-nomain', '-thread') : ('-nothread', '-main'), '-genidx'); mhonarc::close_archive(); ## Set index resources set_resources(); $thread ? set_thread_idx_resources($sort) : set_main_idx_resources($sort); mhonarc::compute_threads() if $thread; ## Figure out what index page to print my $totalpgs; if ($pagesize == 0) { $totalpgs = 1; } else { $totalpgs = int($mhonarc::NumOfMsgs/$pagesize); ++$totalpgs if ($mhonarc::NumOfMsgs/$pagesize) > $totalpgs; $totalpgs = 1 if $totalpgs == 0; } $pagenum = 1 unless $pagenum; PAGENUM: { if ($page =~ /first/i) { $pagenum = 1; last PAGENUM; } if ($page =~ /last/i) { $pagenum = $totalpgs; last PAGENUM; } if ($page =~ /next/i) { ++$pagenum; last PAGENUM; } if ($page =~ /prev/i) { --$pagenum; last PAGENUM; } } $pagenum = $totalpgs if $pagenum > $totalpgs; $pagenum = 1 if $pagenum < 1; $query->param('pagenum', $pagenum); print $query->hidden( '-name' => 'pagenum', '-value' => $pagenum); ## Print index $thread ? mhonarc::write_thread_index($pagenum) : mhonarc::write_main_index($pagenum); ## Done print $query->endform(); print $query->end_html(); } ##---------------------------------------------------------------------------## ## do_mesg_view displays message(s). Output is targeted to the ## message view frame/window. ## sub do_mesg_view { if ($Debug) { warn qq/do_mesg_view/; } my %dup = (); my @msgnum = grep { /\S/ && ($dup{$_}++ < 1 ) } $query->param('msgnum'); ## Print header print $query->header( '-target' => 'mhaMesgView'); print $query->start_html( '-title' => "MHonArc Admin: Message View", '-script' => $JSMesgPage, '-onload' => 'window.focus();', @body_attr); print $query->startform( '-name' => 'listForm', '-method' => 'post', '-action' => $query->url()); ## Open archive (just to load db and routines) mhonarc::open_archive( '-outdir', $archive, '-nolock', '-readdb', '-quiet'); mhonarc::close_archive(); ## Print message foreach (@msgnum) { print_mha_mesg($archive, $_, "$archive/" . mhonarc::msgnum_filename($_)); print "
    \n"; } print '
    ', $query->button( '-name' => 'closeBtn', '-value' => 'Close', '-onClick' => 'window.close();'), "
    \n"; print $query->endform(); print $query->end_html(); } ############################################################################### ##---------------------------------------------------------------------------## ## print_mha_mesg() outputs the message data part of a message ## page in an archive. ## sub print_mha_mesg { my $arch = shift; my $msgnum = shift; my $filename = shift; if (!open(MHAMESG, $filename)) { my $errstr = qq/Unable to open "$filename"\n/; carp $errstr; print html_error($errstr); return 0; } ## Get URL to archive my $base = $Rc->{archive}{$arch}[1]; ## Read header comments and print them. my %field = (); my @field = (); my $field; while () { last if /^/; if (/^/) { push(@field, $1); push(@{$field{$1}}, mhonarc::entify(mhonarc::uncommentize($2))); } } my $atitle = $Rc->{archive}{$arch}[0]; print < $atitle: $msgnum EOT my %printed = (); foreach $field (@field) { next if $printed{$field}; $printed{$field} = 1; print qq(\n), qq($field \n), qq(); print join(",
    ", @{$field{$field}}); print qq(\n); } print "\n"; ## Just extract the message header and body part of the page. Adjust ## relative URLs so links to derived files will work. my $replsub = sub { my $url = shift; unless ($url =~ /^[\w]+:/ or $url =~ /^\// or $url =~ /^#/) { return $base . $url; } $url; }; while () { next unless /^/i; while () { last if /^/i; s/(href\s*=\s*["'])([^"']+)(["']) /join("",$1,&$replsub($2),$3) /xgei; s/(src\s*=\s*["'])([^"']+)(["']) /join("",$1,&$replsub($2),$3) /xgei; print; } last; } close MHAMESG; ## Done 1; } ##---------------------------------------------------------------------------## sub set_resources { my $cgiurl = $query->url() . "?archive=$archive"; $mhonarc::NOTE =<<'EOT';
    $NOTETEXT$
    EOT $mhonarc::NOTEIA = ""; $mhonarc::NOTEICON =< EOT $mhonarc::NOTEICONIA=''; } ##---------------------------------------------------------------------------## sub set_main_idx_resources { my $sort = shift; my $cgiurl = $query->url() . "?archive=$archive"; $mhonarc::IDXPGBEG = ''; $mhonarc::IDXPGEND = ''; $mhonarc::LIBEG =<
    \$IDXTITLE\$
    \$NUMOFIDXMSG\$/\$NUMOFMSG\$ by \$SORTTYPE\$ Page \$PAGENUM\$/\$NUMOFPAGES\$
    EOT $mhonarc::LIEND =<<'EOT'; EOT my $colheads, $colcnt; my @col = (); $col[0] =< EOT if ($sort eq 'authsort') { $colheads = ''; $col[1] = ''; $col[2] = ''; } elsif ($sort eq 'subsort') { $colheads = ''; $col[1] = ''; $col[2] = ''; } elsif ($sort eq 'nosort') { $colheads = ''; $col[1] = ''; $col[2] = ''; $col[3] = ''; } else { $colheads = ''; $col[1] = ''; $col[2] = ''; $col[3] = ''; } $colcnt = scalar(@col); $mhonarc::LIBEG .= $colheads; $mhonarc::LIEND .= $colheads; $mhonarc::LIEND .=<<'EOT';
    Number
    Number
    \$NOTEICON\$ \$MSGNUM\$
    DateSubject
    $YYYYMMDD$$SUBJECTNA$DateFrom
    $YYYYMMDD$$FROMNAME$DateFromSubject
    $YYYYMMDD$$FROMNAME$$SUBJECTNA$DateFromSubject
    $MSGLOCALDATE(;%H:%M)$$FROMNAME$$SUBJECTNA$
    $NUMOFIDXMSG$/$NUMOFMSG$ by $SORTTYPE$ Page $PAGENUM$/$NUMOFPAGES$
    EOT $mhonarc::LITMPL = join("", @col); $mhonarc::NOTEICONIA='   '; $mhonarc::AUTHBEG =< \$FROMNAME\$ EOT $mhonarc::AUTHEND =< EOT $mhonarc::DAYBEG =< \$MSGLOCALDATE(;%B %d, %Y)\$ EOT $mhonarc::DAYEND =< EOT $mhonarc::SUBJECTBEG =< \$SUBJECTNA\$ EOT $mhonarc::SUBJECTEND =< EOT } ##---------------------------------------------------------------------------## sub set_thread_idx_resources { my $cgiurl = $query->url() . "?archive=$archive"; $mhonarc::TIDXPGBEG = ''; $mhonarc::TIDXPGEND = ''; $mhonarc::THEAD =<
    \$TIDXTITLE\$
    \$NUMOFIDXMSG\$/\$NUMOFMSG\$ by \$SORTTYPE\$ Page \$PAGENUM\$/\$NUMOFPAGES\$
    EOT $mhonarc::TFOOT =<<'EOT';
    $NUMOFIDXMSG$/$NUMOFMSG$ by $SORTTYPE$ Page $PAGENUM$/$NUMOFPAGES$
    EOT $mhonarc::TSINGLETXT =< \$NOTEICON\$\$MSGNUM\$, \$SUBJECTNA\$, \$FROMNAME\$ EOT $mhonarc::TTOPBEG =< \$SUBJECTNA\$
    \$NOTEICON\$\$MSGNUM\$, \$FROMNAME\$ EOT $mhonarc::TTOPEND =<<'EOT';
    EOT $mhonarc::TLITXT =< \$NOTEICON\$\$MSGNUM\$, \$FROMNAME\$ EOT $mhonarc::TLIEND =<<'EOT'; EOT $mhonarc::TSUBLISTBEG =<<'EOT';
    EOT $mhonarc::TSUBLISTEND =<<'EOT';
    EOT $mhonarc::TSUBJECTBEG =<<'EOT'; Possible follow-ups EOT $mhonarc::TSUBJECTEND =<<'EOT'; EOT $mhonarc::TLINONE =<<'EOT';
    Message not available EOT $mhonarc::TLINONEEND =<<'EOT';
    EOT $mhonarc::TINDENTBEG =<<'EOT';
    EOT $mhonarc::TINDENTEND =<<'EOT';
    EOT $mhonarc::TCONTBEG =<<'EOT';
    $SUBJECTNA$ (continued)
    EOT $mhonarc::TCONTEND =<<'EOT';
    EOT } ##---------------------------------------------------------------------------## sub print_main_menus { print < MHonArc        EOT } ##---------------------------------------------------------------------------## sub html_error { print <<'EOT';
    Note
    EOT; print $query->p(@_); print <<'EOT';
    EOT } ##---------------------------------------------------------------------------## ## JavaScript Code ##---------------------------------------------------------------------------## sub jscript_define { ## JavaScript for main index page ##-----------------------------------------------------------------------## $JSMenuBar =<<'EOJS'; // Set the selection of all messages function checkAll (form, val) { var i; for (i=0; i < form.elements.length; ++i) { if (form.elements[i].name == 'msgnum') { form.elements[i].checked = val; } } } // Process Archive menu selection function process_file_menu (menu) { var choice = menu.options[menu.selectedIndex].value; var text = menu.options[menu.selectedIndex].text; var list_form = parent.mhaWorkArea.document.listForm; var type = choice.substr(0,4); var val = choice.substr(5); if (choice != "title") { list_form.archive.value = val; parent.defaultStatus = text; parent.status = text; list_form.action.value = 'index'; list_form.submit(); } menu.options[menu.selectedIndex].selected = false; menu.options[0].selected = true; } // Process Edit menu selection function process_edit_menu (menu) { var choice = menu.options[menu.selectedIndex].value; var list_form = parent.mhaWorkArea.document.listForm; menu.options[menu.selectedIndex].selected = false; menu.options[0].selected = true; if (choice == "selectAll") { checkAll(list_form, true); } else if (choice == "unselectAll") { checkAll(list_form, false); } else if (choice == "reset") { list_form.reset(); } else if (choice == "show") { list_form.action.value = 'show'; window.open('javascript:void(0)', 'mhaMesgView', 'menubar=0,resizable=1,toolbar=0,scrollbars=1'); list_form.submit(); } else if (choice == "delete") { if (window.confirm("Delete selected messages?")) { list_form.action.value = 'delete'; list_form.submit(); } } } // Process View menu selection function process_view_menu (menu) { var choice = menu.options[menu.selectedIndex].value; var list_form = parent.mhaWorkArea.document.listForm; var type = choice.substr(0,4); var val = choice.substr(5); var n; menu.options[menu.selectedIndex].selected = false; menu.options[0].selected = true; if (type == "sort") { list_form.sort.value = val; list_form.action.value = 'index'; list_form.submit(); } else if (type == "rfsh") { list_form.action.value = 'index'; list_form.submit(); } else if (type == "pgsz") { n = parseInt( window.prompt( "Maximum number of message listed per page:", list_form.pagesize.value)); if ((!isNaN(n)) && (n >= 0) && (n != list_form.pagesize.value)) { list_form.pagesize.value = n; list_form.action.value = 'index'; list_form.submit(); } } else if (type == "page") { list_form.page.value = val; list_form.action.value = 'index'; list_form.submit(); } } EOJS ## JavaScript for main index page ##-----------------------------------------------------------------------## $JSIndexPage =<<'EOJS'; // Handle button navigation function changePage (f, val) { f.page.value = val; f.action.value = 'index'; f.submit(); } // Set the selection of all messages in a group function checkGroup (topmesg) { var val = topmesg.checked; var i; for (i=0; i < topmesg.form.elements.length; ++i) { if (topmesg.form.elements[i] == topmesg) { break; } } ++i; if (i >= topmesg.form.elements.length) { return; } while (topmesg.form.elements[i].name == 'msgnum') { topmesg.form.elements[i].checked = val; ++i; } } // Open a message view window for a message function open_mesg_view (cgiurl) { window.open(cgiurl, 'mhaMesgView', 'menubar=0,resizable=1,toolbar=0,scrollbars=1'); } EOJS } MHonArc-2014-05-05-snap/admin/README.txt0000644004705000001440000000112710243726724016152 0ustar ehoodusersREADME for MHonArc/admin **NOTE**: The contents of this directory are experimental. --------------------------------------------------------------------------- CONTENTS of directory: mhaadmin.cgi Experimental web-based administrative tool for MHonArc archives. mhaadmin.rc Example resource file for mhaadmin.cgi. mhaadmin.html Start document for admin tool. Creates initial frameset. images/ Images used by mhaadmin.cgi. README.txt This file. --------------------------------------------------------------------------- Earl Hood, mhonarc(AT)mhonarc.org $Date: 2005/05/21 21:53:24 $ MHonArc-2014-05-05-snap/admin/images/0000755004705000001440000000000012332046076015714 5ustar ehoodusersMHonArc-2014-05-05-snap/admin/images/mhaicon.png0000644004705000001440000000075507457463514020063 0ustar ehoodusersPNG  IHDRFBHPLTE$4-#&-W.OoKf2 _E1$n$HT'SbiUژƿ4tRNS@fbKGD ֘ IDATxev ED@O{]C[k$  ESڔWF+떒 R m̂'=NpSI cR2{\XVPxȤ_ 2rJ$bin:Ԡ !ОYH!a  S0uw9r9նnvxVX?F^}}jk)ۣ0}ְsɌP4~tmd|2-? EEjN.tEXtComment Imported from GIF image: mhonarc.gif.8IENDB`MHonArc-2014-05-05-snap/admin/images/mhanote_s.png0000644004705000001440000000132107457463514020410 0ustar ehoodusersPNG  IHDR qPLTE553;===>--3355/44<>H?HGGAOII[[Y\]]^^aacc||-II(RR7UWD?P8BACCZZdekk*yy/tt2ww=~s?zz;||=GGPNNSHVVPPGYSSYYSYYU\\V^^^YYfVaaeeFiikkkmtthwwxzzu{Ux}3?ALYw^Wji7N_\aopsbju J%tRNS@fbKGDz8ՅjIDATxc`dCh !,Ř10[hE\nUb 0b+!fVBKk[4I>n)s@io$2P d202(Tq(DdBDr5")^yHvZj!YEr0ꨆE{r1![OQȕ9$*McL(1m 4.tEXtComment Imported from GIF image: mhanote.gifܲIENDB`MHonArc-2014-05-05-snap/RELNOTES0000644004705000001440000004040712332046112014531 0ustar ehoodusers[Prev] [TOC][FAQ][Bugs][Home] [Next] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Release Notes This section highlights important changes that have occurred and important usage details which you should be aware of before using MHonArc. If you are upgrading from a previous release, make sure to check for the highlighted incompatibilites from earlier releases. NOTE: Read the CHANGES document included in the distribution for a more complete summary of changes to MHonArc. • Compatibility Notes □ UPGRADING FROM v2.6.11 OR EARLIER: Handling of return value for $mhonarc::CB{Raw}MessageBodyRead Changed □ UPGRADING FROM v2.5.x OR EARLIER: Default iso-2022-jp Converter Changed □ UPGRADING FROM v2.4.x OR EARLIER: DEFRCNAME Change □ UPGRADING FROM v2.4.x OR EARLIER: HEADER and FOOTER Removed □ UPGRADING FROM v2.4.x OR EARLIER: MIMEFILTERS API Change □ UPGRADING FROM v2.1.x OR EARLIER: Database Format Change □ DOWNGRADING TO OLDER VERSIONS • v2.6.9 Notes □ Attachment filename format change □ mhonarc::write_attachment: API change • v2.6.0 Notes □ m2h_text_html::filter: default argument removed □ SPAMMODE: Applies to message body text. □ readmail::MAILhead_get_disposition: API change. • General Notes □ Japanese and MHonArc □ Auto-loaded URL attributes stripped in HTML messages □ iso8859.pl deprecated □ TSLICE range setting □ MHonArc code under the mhonarc namespace □ HTMLEXT and MSGPREFIX usage warning □ Applying new MIMEFILTERS settings ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Compatibility Notes This sections provides notes dealing with compatibility issues if upgrading from a previous release of MHonArc: UPGRADING FROM v2.6.11 OR EARLIER: Handling of return value for $mhonarc::CB{Raw}MessageBodyRead Changed NOTE: If you do not utilize MHonArc's callback API, you can ignore this compatibility item. However, if you use the mha-preview example script, continuing reading. In v2.6.12, the return value for the $mhonarc::CBMessageBodyRead and $mhonarc::CBRawMessageBodyRead is now checked to see if the message should be excluded from further processing. In previous versions, the return value was N/A. Therefore, if you use either of these callbacks, and the return value of your routines evaluates to false for a given message, the message will be excluded from the archive. If you never want to exclude messages with either of these callbacks, have your routines always return 1. NOTE: The example mha-preview script provided in the MHonArc distribution has been updated to reflect the change in return value handling. Even though it is statistically unlikely messages will be quietly excluded with older versions of the script; it is recommended to replace your copy with the latest version. UPGRADING FROM v2.5.x OR EARLIER: Default iso-2022-jp Converter Changed In v2.6, the default charset converter for iso-2022-jp has changed to the following: iso-2022-jp; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm This filter converts all Japanese characters into Unicode character entity references (e.g. 特) removing the iso-2022-jp encoding. For some Japanese locales, this type of conversion may not be desired since some Japanese-aware processing tools may not support Unicode character entity references. If you want to preserve the iso-2022-jp encoding, you must explicitly specify the use of iso_2022_jp::str2html via the CHARSETCONVERTERS resource as follows: iso-2022-jp; iso_2022_jp::str2html; iso2022jp.pl The change to MHonArc::CharEnt::str2sgml as the default converter for iso-2022-jp was done to make MHonArc as locale neutral as possible in its default configuration. For more information about using MHonArc in a Japanese locale, see (documents in Japanese): UPGRADING FROM v2.4.x OR EARLIER: DEFRCNAME Change The default value for the DEFRCNAME is now called ".mhonarc.mrc", or "mhonarc.mrc" under Windows and VMS. The old value was ".mhonarc.rc", or "mhonarc.rc". If you use the default resource file, you will need to rename the file to match the filenames used for v2.5 and later. UPGRADING FROM v2.4.x OR EARLIER: HEADER and FOOTER Removed The HEADER and FOOTER resources are no longer supported. If you are using these resources, the HEADER content and FOOTER content will be lost once v2.5, or later, of MHonArc processes an archive containing these resources. The HEADER and FOOTER resources have been deprecated for a long time since they only applied to the main index; the thread index has no equivalent. The IDXPGBEGIN or LISTBEGIN resources can be used to achieve the same effect of HEADER. The IDXPGEND or LISTEND can be used to achieve the same effect of FOOTER. UPGRADING FROM v2.4.x OR EARLIER: MIMEFILTERS API Change The API for data filters registered via MIMEFILTERS is not capability with filters written for v2.4.x and earlier. See CHANGES and the documentation for the MIMEFILTERS resource for the API. If you use custom style filters written for v2.4.x, or earlier, you will need to update them for them to work properly under v2.5, and later. UPGRADING FROM v2.1.x OR EARLIER: Database Format Change If you have archives created with v2.1.x, or earlier, the format of mime-related resources is not compatible with v2.2, and later, versions. MHonArc will reset the mime-related resources CHARSETCONVERTERS and MIMEFILTERS to their default values. MIMEARGS will also be reset to the default value unless you are upgrading to v2.5.8, or later, where the MIMEARGS settings will be preserved. To avoid the resetting of the mime-related resource if you are using customized settings, you will need to re-specify your settings the next time you update an archive. If you always specify your resource settings each time you invoke MHonArc, then your settings should to still take effect. You can also use the mha-dbedit program to apply your settings directly without processing the archive. DOWNGRADING TO OLDER VERSIONS CAUTION: Downgrading to an earlier version of MHonArc can corrupt your archives, especially when downgrading to an older version that used different database file storage formats from the current version in use. Changes in archive format are not common, so downgrading can be okay depending on the versions involved. The key versions to watch out for are the ones noted in this section where database format changes have occured. The following lists release numbers where a format change occured: • 2.0.0 • 2.2.0 • 2.5.0 For example, if an archive was last updated with v2.5.0, processing the archive with a previous release will cause problems. A possible method for successfully downgrading to a release with differences in the database format, is to try to reconstruct the database file using the mha-dbrecover utility contained in the MHonArc version the archive is being downgraded to. TIP: The safest way to downgrade is to recreate an archive from the original raw mail data. It is good practice to preserve the raw mail data for cases like this and for general archive recovering situations due to file corruption or other system failures. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ v2.6.9 Notes Attachment filename format change Attachment filenames have changed from the numeric-style <#####>. to . where is a random string. For example, a jpeg image in the older format would have a filename like "jpg00001.jpg", and in the new style, it would be something like "jpgAOMySzCNIE.jpg". The change should be transparent and was done to provide support for the ATTACHMENTDIR resource and as a performance enhancement. However, if you perform any custom post-processing on archives that depends on the old numeric-style format, you will need to take this change into account. mhonarc::write_attachment: API change mhonarc::write_attachment is the main routine for filters that save data to an external file. The signature of the routine was changed while fixing bug #5473. See the API appendix for more information. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ v2.6.0 Notes m2h_text_html::filter: default argument removed The default argument for the m2h_text_plain::filter has been removed. The DEFCHARSET can be used instead. SPAMMODE: Applies to message body text. If SPAMMODE resource is enabled, it enables the new MODIFYBODYADDRESSES resource, which enables ADDRESSMODIFYCODE to rewrite addresses in message text bodies. If you prefer to not have addresses in message bodies modified when SPAMMODE is enabled, you must explicitly disable the MODIFYBODYADDRESSES resource. readmail::MAILhead_get_disposition: API change. The calling interface to readmail::MAILhead_get_disposition has been changed to the following: ($disp, $file, $raw, $html_name) = readmail::MAILhead_get_disposition($fields_hash_ref, $do_html); The $file return value now has special, or invalid, filename characters converted to underscores. The $do_html is optional. If a true value, $html_name will be returned as a representation of the filename suited for inclusion HTML and with character conversion processing done. The $raw return value is the raw filename value as specified in the message header, which may include pathname components. This return value is mainly for informative reasons and it should not be used by filter code for security reasons. The changes are backward compatible, but if you have written custom filters, you may want to use the new calling convention if you display the filename in the HTML generated. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ General Notes Japanese and MHonArc Information on using MHonArc in a Japanese locale is available at the following location (documents in Japanese): . Auto-loaded URL attributes stripped in HTML messages For v2.5, the default text/html filter (mhtxthtml.pl) will disable auto-loaded URL attributes for some HTML elements -- IMG, BODY, IFRAME, FRAME, OBJECT, SCRIPT, INPUT -- except for cid: URLs. This behavior can be disabled if the 'allownoncidurls' filter argument is specified. The new behavior prevents malicious URLs being used to verify mail addresses, secretly setting cookies, or gather some statistical data without the explicit consent of the reader. iso8859.pl deprecated ISO-8859 character set data processing now defaults to using the MHonArc::CharEnt module in v2.5. The old iso8859.pl library is still provided for compatibility with older archives, and with v2.6, iso8859.pl directly invokes MHonArc::CharEnt. To update archives to use the new settings, you can run the following command, ┌─────────────────────────────────────────────────────────────────────────┐ │mha-dbedit -rcfile examples/def-mime.mrc \ │ │ -outdir /path/to/archive │ └─────────────────────────────────────────────────────────────────────────┘ where examples/def-mime.mrc represents the default MIME processing resources for MHonArc provided within the MHonArc distribution. NOTE: v2.5.4, and later, generated archives will automatically inherit new CHARSETCONVERTERS if the built-in defaults are being used. However, if you have defined CHARSETCONVERTERS for your archives, you will need to explicitly update your archives if you want the new settings applied to your archives. TSLICE range setting The value of the TSLICE resource is used to determine the number of messages to update, before and after by thread, of each new message added. To insure that messages within a thread slice are updated when a new message is added, make sure the before and after ranges specified for TSLICE is equal to the maximum-before and the maximum-after range arguments specifed in the uses of the $TSLICE$ resource variable. For example, if you have $TSLICE(0;4)$ and $TSLICE(3;3)$ in message layout resources, you should set TSLICE to 3:4. If you only use $TSLICE$ once, it is best to set options for thread slice formatting via the TSLICE resource so you will not have anything to worry about. MHonArc code under the mhonarc namespace If upgrading from v2.1.x, or earlier, any custom filters you have developed may need to modified. If your filter accessed some main variables, your filter will not operate properly. All variables that used to be in package "main" are no longer. The major variables are now in package "mhonarc". For example, $::OUTDIR is now $mhonarc::OUTDIR. See the MIMEFILTERS resource page for more information. HTMLEXT and MSGPREFIX usage warning See the warnings in the documentation for the HTMLEXT and MSGPREFIX resources before using them. Applying new MIMEFILTERS settings Occasionally, a new release of MHonArc may contain new MIME filters. See the CHANGES file to check if any new filters have been added. If you confirm that new filters have been added, and you want to apply them to your archives, you use the mha-dbedit program using the def-mime.mrc in the examples directory. NOTE: v2.5.4, and later, generated archives will automatically inherit new MIMEFILTERS if the built-in defaults are being used. However, if you have defined MIMEFILTERS for your archives, you will need to explicitly update your archives if you want the new settings applied to your archives. Example usage of mha-dbedit: ┌─────────────────────────────────────────────────────────────────────────┐ │mha-dbedit -rcfile examples/def-mime.mrc \ │ │ -outdir /path/to/archive │ └─────────────────────────────────────────────────────────────────────────┘ Change the -rcfile and -outdir pathnames to reflect where you are running mhonarc and where your archive is located, respectively. Note, if your archives are using custom settings of MIMEFILTERS, MIMEARGS, and/or CHARSETCONVERTERS resources, you will need to create a variant version of def-mime.mrc (included in the examples directory) to include your settings and use the variant version when updating your archives. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [Prev] [TOC][FAQ][Bugs][Home] [Next] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ $Date: 2005/07/11 00:13:53 $ MHonArc Copyright © 1997-2005, Earl Hood, mhonarc@mhonarc.org MHonArc-2014-05-05-snap/lib/0000755004705000001440000000000012332046112014114 5ustar ehoodusersMHonArc-2014-05-05-snap/lib/mhindex.pl0000644004705000001440000001566411177375157016145 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhindex.pl,v 1.14 2009/05/03 20:11:27 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Main index routines for mhonarc ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1995-2001 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mhonarc; ##--------------------------------------------------------------------------- ## write_main_index outputs main index of archive ## sub write_main_index { my $onlypg = shift; my($outhandle, $tmpfile, $i, $i_p0, $tmpl, $isfirst, $tmp, $offstart, $offend); local($PageNum, $PageSize); # XXX: Use in replace_li_vars() my($totalpgs); local(*a); &compute_page_total(); $PageNum = $onlypg || 1; $totalpgs = $onlypg || $NumOfPrintedPages; if (!scalar(@MListOrder)) { @MListOrder = &sort_messages(); %Index2MLoc = (); @Index2MLoc{@MListOrder} = (0 .. $#MListOrder); } for ( ; $PageNum <= $totalpgs; ++$PageNum) { next if $PageNum < $IdxMinPg; $isfirst = 1; if ($MULTIIDX) { $offstart = ($PageNum-1) * $IDXSIZE; $offend = $offstart + $IDXSIZE-1; $offend = $#MListOrder if $#MListOrder < $offend; @a = @MListOrder[$offstart..$offend]; if ($PageNum > 1) { $IDXPATHNAME = join("", $OUTDIR, $DIRSEP, $IDXPREFIX, $PageNum, ".", $HtmlExt); } else { $IDXPATHNAME = join($DIRSEP, $OUTDIR, $IDXNAME); } } else { if ($IDXSIZE && (($i = ($#MListOrder+1) - $IDXSIZE) > 0)) { if ($REVSORT) { @a = @MListOrder[0..($IDXSIZE-1)]; } else { @a = @MListOrder[$i..$#MListOrder]; } } else { *a = *MListOrder; } $IDXPATHNAME = join($DIRSEP, $OUTDIR, $IDXNAME); } $PageSize = scalar(@a); ## Open/create index file if ($IDXONLY) { $outhandle = \*STDOUT; } else { ($outhandle, $tmpfile) = file_temp('midxXXXXXXXXXX', $OUTDIR); } print STDOUT "Writing $IDXPATHNAME ...\n" unless $QUIET; ## Print top part of index &output_maillist_head($outhandle); ## Output links to messages if ($NOSORT) { foreach $index (@a) { ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } } elsif ($SUBSORT) { my($prevsub) = ''; foreach $index (@a) { if (($tmp = get_base_subject($index)) ne $prevsub) { $prevsub = $tmp; if (!$isfirst) { ($tmpl = $SUBJECTEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } else { $isfirst = 0; } ($tmpl = $SUBJECTBEG) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } ($tmpl = $SUBJECTEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } elsif ($AUTHSORT) { local($prevauth) = ''; foreach $index (@a) { if (($tmp = &get_base_author($index)) ne $prevauth) { $prevauth = $tmp; if (!$isfirst) { ($tmpl = $AUTHEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } else { $isfirst = 0; } ($tmpl = $AUTHBEG) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } ($tmpl = $AUTHEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } else { my($prevdate) = ''; my($time); foreach $index (@a) { $time = $Time{$index}; $tmp = join("", $UseLocalTime ? (localtime($time))[3,4,5] : (gmtime($time))[3,4,5]); if ($tmp ne $prevdate) { $prevdate = $tmp; if (!$isfirst) { ($tmpl = $DAYEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } else { $isfirst = 0; } ($tmpl = $DAYBEG) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } ($tmpl = $DAYEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $outhandle $tmpl; } ## Print bottom part of index &output_maillist_foot($outhandle); if (!$IDXONLY) { close($outhandle); file_gzip($tmpfile) if $GzipFiles; file_chmod(file_rename($tmpfile, $IDXPATHNAME)); } } } ##--------------------------------------------------------------------------- ## output_maillist_head() outputs the beginning of the index page. ## sub output_maillist_head { my $handle = shift; local $index = ""; my($tmp); $tmp = ($IDXPGSSMARKUP ne '') ? $IDXPGSSMARKUP : $SSMARKUP; if ($tmp ne '') { $tmp =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmp; } print $handle "\n"; ## Output title ($tmp = $IDXPGBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmp; ## Output start of index ($tmp = $LIBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmp; } ##--------------------------------------------------------------------------- ## output_maillist_foot() outputs the end of the index page. ## sub output_maillist_foot { my $handle = shift; local $index = ""; my($tmp); ## Close message listing ($tmp = $LIEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmp; &output_doclink($handle); ## Close document ($tmp = $IDXPGEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmp; print $handle "\n"; } ##--------------------------------------------------------------------------- ## Output link to documentation, if specified ## sub output_doclink { local($handle) = ($_[0]); if (!$NODOC && $DOCURL) { print $handle "
    \n"; print $handle "
    \n", "Mail converted by ", qq|MHonArc\n|, "
    \n"; } } ##--------------------------------------------------------------------------- 1; MHonArc-2014-05-05-snap/lib/mhnull.pl0000644004705000001440000000373107620046507015770 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhnull.pl,v 1.8 2003/02/04 23:31:19 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Library defines the null filter routine for MHonArc. Its use ## is for dropping unwanted data from messages. ## Filter routine can be registered with the following: ## ## some-type/some-subtype;m2h_null::filter;mhnull.pl ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1998,1999 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package m2h_null; sub filter { my($fields, $data, $isdecode, $args) = @_; my($ctype) = $fields->{'content-type'}[0] =~ m%^\s*([\w\-\./]+)%; my($disp, $nameparm, $raw_name, $html_name) = readmail::MAILhead_get_disposition($fields, 1); join("", '

    <<', ($disp ? "$disp: " : ""), ($html_name ? $html_name : $ctype), '>>

    '); } ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/lib/mhamain.pl0000644004705000001440000012334312332042737016102 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhamain.pl,v 2.104 2014/05/06 02:15:59 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Main library for MHonArc. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1995-2012,2014 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mhonarc; require 5; $VERSION = '2.6.19+'; $VINFO =< ) || ( $( != $) ))) { ## We do not support setuid since there are too many ## security problems to handle, and if we did, mhonarc ## would probably not be very useful. die "ERROR: setuid/setgid execution not supported!\n"; #$TaintMode = 1; #$ENV{'PATH'} = '/bin:/usr/bin'; #$ENV{'SHELL'} = '/bin/sh' if exists $ENV{'SHELL'}; #delete @ENV{qw(IFS CDPATH ENV BASH_ENV)}; } } ############################################################################### $DEBUG = 0; $CODE = 0; $ERROR = ""; @OrgARGV = (); $ArchiveOpen = 0; $_msgid_cnt = 0; my %_sig_org = (); my @_term_sigs = qw( ABRT ALRM BUS FPE HUP ILL INT IOT PIPE POLL PROF QUIT SEGV TERM TRAP USR1 USR2 VTALRM XCPU XFSZ ); ############################################################################### ## Public routines ############################################################################### ##--------------------------------------------------------------------------- ## initialize() does some initialization stuff. Should be called ## right after mhamain.pl is called. ## sub initialize { ## Turn off buffered I/O to terminal my($curfh) = select(STDOUT); $| = 1; select($curfh); ## Require essential libraries require 'mhlock.pl'; require 'mhopt.pl'; ## Init some variables $ISLOCK = 0; # Database lock flag $StartTime = 0; # CPU start time of processing $EndTime = 0; # CPU end time of processing } ##--------------------------------------------------------------------------- ## open_archive opens the archive ## sub open_archive { eval { $StartTime = (times)[0]; }; ## Set @ARGV if options passed in if (@_) { @OrgARGV = @ARGV; @ARGV = @_; } ## Get options my($optstatus); eval { set_handler(); $optstatus = get_resources(); }; ## Check for error if ($@ || $optstatus <= 0) { if ($@) { if ($@ =~ /signal caught/) { $CODE = 0; } else { $CODE = int($!) ? int($!) : 255; } $ERROR = $@; warn "\n", $ERROR; } else { if ($optstatus < 0) { $CODE = $! = 255; $ERROR = "ERROR: Problem loading resources\n"; } else { $CODE = 0; } } close_archive(); return 0; } $ArchiveOpen = 1; 1; } ##--------------------------------------------------------------------------- ## close_archive closes the archive. ## sub close_archive { my $reset_sigs = shift; ## Remove lock &$UnlockFunc() if defined(&$UnlockFunc); ## Reset signal handlers reset_handler() if $reset_sigs; ## Stop timing eval { $EndTime = (times)[0]; }; my $cputime = $EndTime - $StartTime; ## Output time (if specified) if ($TIME) { printf(STDERR "\nTime: %.2f CPU seconds\n", $cputime); } ## Restore @ARGV if (@OrgARGV) { @ARGV = @OrgARGV; } $ArchiveOpen = 0; ## Return time $cputime; } ##--------------------------------------------------------------------------- ## Routine to process input. If no errors, routine returns the ## CPU time taken. If an error, returns undef. ## sub process_input { ## Do processing if ($ArchiveOpen) { # archive already open, so doit eval { doit(); }; } else { # open archive first (implictely pass @_ to open_archive) if (&open_archive) { eval { doit(); }; } else { return undef; } } # check for error if ($@) { if ($@ =~ /signal caught/) { $CODE = 0 unless $CODE; } else { $CODE = (int($!) ? int($!) : 255) unless $CODE; } $ERROR = $@; close_archive(); warn "\n", $ERROR; return undef; } ## Cleanup close_archive(); } ############################################################################### ## Private routines ############################################################################### ##--------------------------------------------------------------------------- ## Routine that does the work ## sub doit { ## Check for non-archive modification modes. ## Just converting a single message to HTML if ($SINGLE) { single(); return 1; } ## Text message listing of archive to standard output. if ($SCAN) { scan(); return 1; } ## Annotating messages if ($ANNOTATE) { print STDOUT "Annotating messages in $OUTDIR ...\n" unless $QUIET; if (!defined($NoteText)) { print STDOUT "Please enter note text (terminated with EOF char):\n" unless $QUIET; $NoteText = join("", <$MhaStdin>); } return annotate(@ARGV, $NoteText); } ## Removing messages if ($RMM) { print STDOUT "Removing messages from $OUTDIR ...\n" unless $QUIET; return rmm(@ARGV); } ## HTML message listing to standard output. if ($IDXONLY) { IDXPAGE: { compute_page_total(); if ($IdxPageNum && $MULTIIDX) { if ($IdxPageNum =~ /first/i) { $IdxPageNum = 1; last IDXPAGE; } if ($IdxPageNum =~ /last/i) { $IdxPageNum = $NumOfPages; last IDXPAGE; } $IdxPageNum = int($IdxPageNum); last IDXPAGE if $IdxPageNum; } $MULTIIDX = 0; $IdxPageNum = 1; $NumOfPages = 1; $NumOfPrintedPages = 1; } if ($THREAD) { compute_threads(); write_thread_index($IdxPageNum); } else { write_main_index($IdxPageNum); } return 1; } ## Get here, we are processing mail folders my($index, $fields, $fh, $cur_msg_cnt); $cur_msg_cnt = $NumOfMsgs; ##-------------------## ## Read mail folders ## ##-------------------## ## Just editing pages if ($EDITIDX) { print STDOUT "Editing $OUTDIR layout ...\n" unless $QUIET; ## Adding a single message } elsif ($ADDSINGLE) { print STDOUT "Adding message to $OUTDIR\n" unless $QUIET; $handle = $ADD; ## Read mail head ($index, $fields) = read_mail_header($handle); if ($index) { if (defined(read_mail_body( $handle, $index, $fields, $NoMsgPgs))) { $AddIndex{$index} = 1; ## Invoke callback if defined if (defined($CBMessageConverted) && defined(&$CBMessageConverted)) { &$CBMessageConverted($fields, +{ folder => undef, file => '-', }); } } } ## Adding/converting mail{boxes,folders} } else { print STDOUT ($ADD ? "Adding" : "Converting"), " messages to $OUTDIR" unless $QUIET; my($mbox, $mesgfile, @files); MAILFOLDER: foreach $mbox (@ARGV) { ## MH mail folder (a directory) if (-d $mbox) { if (!opendir(MAILDIR, $mbox)) { warn "\nWarning: Unable to open $mbox\n"; next; } $MBOX = 0; $MH = 1; print STDOUT "\nReading $mbox " unless $QUIET; @files = sort { $a <=> $b } grep(/$MHPATTERN/o, readdir(MAILDIR)); closedir(MAILDIR); local($_); MHFILE: foreach (@files) { $mesgfile = join($DIRSEP, $mbox, $_); eval { $fh = file_open($mesgfile); }; if ($@) { warn $@, qq/...Skipping "$mesgfile"\n/; next MHFILE; } print STDOUT "." unless $QUIET; ($index, $fields) = read_mail_header($fh); # Process message if valid if ($index) { if (defined(read_mail_body( $fh, $index, $fields, $NoMsgPgs))) { if ($ADD && !$SLOW) { $AddIndex{$index} = 1; } # Check if conserving memory if ($SLOW && $DoArchive) { output_mail($index, 1, 1); $Update{$IndexNum{$index}} = 1; } if ($SLOW || !$DoArchive) { delete $MsgHead{$index}; delete $Message{$index}; } ## Invoke callback if defined if (defined($CBMessageConverted) && defined(&$CBMessageConverted)) { &$CBMessageConverted($fields, +{ folder => $mbox, file => $mesgfile, }); } } else { $index = undef; } } close($fh); } ## UUCP mail box file } else { if ($mbox eq "-") { $fh = $MhaStdin; } else { eval { $fh = file_open($mbox); }; if ($@) { warn $@, qq/...Skipping "$mbox"\n/; next MAILFOLDER; } } $MBOX = 1; $MH = 0; print STDOUT "\nReading $mbox " unless $QUIET; # while (<$fh>) { last if /$FROM/o; } MBOX: while (!eof($fh)) { print STDOUT "." unless $QUIET; ($index, $fields) = read_mail_header($fh); if ($index) { if (defined(read_mail_body( $fh, $index, $fields, $NoMsgPgs))) { if ($ADD && !$SLOW) { $AddIndex{$index} = 1; } if ($SLOW && $DoArchive) { output_mail($index, 1, 1); $Update{$IndexNum{$index}} = 1; } if ($SLOW || !$DoArchive) { delete $MsgHead{$index}; delete $Message{$index}; } ## Invoke callback if defined if (defined($CBMessageConverted) && defined(&$CBMessageConverted)) { &$CBMessageConverted($fields, +{ folder => $mbox, file => undef, }); } } else { $index = undef; } } else { # skip passed message body read_mail_body($fh, $index, $fields, 1); } } close($fh); } # END: else UUCP mailbox ## Invoke callback if defined if (defined($CBMailFolderRead) && defined(&$CBMailFolderRead)) { &$CBMailFolderRead($mbox); } } # END: foreach $mbox } # END: Else converting mailboxes print "\n" unless $QUIET; ## All done if not creating an archive if (!$DoArchive) { return 1; } ## Check if there are any new messages if (!$EDITIDX && ($cur_msg_cnt > 0) && !scalar(%AddIndex) && !scalar(%Update)) { print STDOUT "No new messages\n" unless $QUIET; return 1; } $NewMsgCnt = $NumOfMsgs - $cur_msg_cnt; ## Write pages &write_pages(); 1; } ##--------------------------------------------------------------------------- ## write_pages writes out all archive pages and db ## sub write_pages { my($i, $j, $key, $index, $tmp, $tmp2); my(@array2); my($mloc, $tloc); ## Remove old message if hit maximum size or expiration if (($MAXSIZE && ($NumOfMsgs > $MAXSIZE)) || $ExpireTime || $ExpireDateTime) { ## Set @MListOrder and %Index2MLoc for properly marking messages ## to be updated when a related messages are removed. Thread ## data should be around from db. @MListOrder = sort_messages(); @Index2MLoc{@MListOrder} = (0 .. $#MListOrder); # Ignore termination signals &ign_signals(); ## Expiration based upon time foreach $index (sort_messages(0,0,0,0)) { last unless ($MAXSIZE && ($NumOfMsgs > $MAXSIZE)) || (&expired_time($Time{$index})); &delmsg($index); # Mark messages that need to be updated if (!$NoMsgPgs && !$KeepOnRmm) { $mloc = $Index2MLoc{$index}; $tloc = $Index2TLoc{$index}; $Update{$IndexNum{$MListOrder[$mloc-1]}} = 1 if $mloc-1 >= 0; $Update{$IndexNum{$MListOrder[$mloc+1]}} = 1 if $mloc+1 <= $#MListOrder; $Update{$IndexNum{$TListOrder[$tloc-1]}} = 1 if $tloc-1 >= 0; $Update{$IndexNum{$TListOrder[$tloc+1]}} = 1 if $tloc+1 <= $#TListOrder; for ($i=2; $i <= $TSliceNBefore; ++$i) { $Update{$IndexNum{$TListOrder[$tloc-$i]}} = 1 if $tloc-$i >= 0; } for ($i=2; $i <= $TSliceNAfter; ++$i) { $Update{$IndexNum{$TListOrder[$tloc+$i]}} = 1 if $tloc-$i >= $#TListOrder; } foreach (@{$FollowOld{$index}}) { $Update{$IndexNum{$_}} = 1; } } # Mark where index page updates start if ($MULTIIDX) { $tmp = int($Index2MLoc{$index}/$IDXSIZE)+1; $IdxMinPg = $tmp if ($tmp < $IdxMinPg || $IdxMinPg < 0); $tmp = int($Index2TLoc{$index}/$IDXSIZE)+1; $TIdxMinPg = $tmp if ($tmp < $TIdxMinPg || $TIdxMinPg < 0); } } } ## Reset MListOrder @MListOrder = sort_messages(); @Index2MLoc{@MListOrder} = (0 .. $#MListOrder); ## Compute follow up messages compute_follow_ups(\@MListOrder); ## Compute thread information (sets ThreadList, TListOrder, Index2TLoc) compute_threads(); ## Check for which messages to update when adding to archive if ($ADD) { if ($UPDATE_ALL) { foreach $index (@MListOrder) { $Update{$IndexNum{$index}} = 1; } $IdxMinPg = 0; $TIdxMinPg = 0; } else { $i = 0; foreach $index (@MListOrder) { ## Check for New follow-up links if (is_follow_ups_diff($index)) { $Update{$IndexNum{$index}} = 1; } ## Check if new message; must update links in prev/next msgs if ($AddIndex{$index}) { # Mark where main index page updates start if ($MULTIIDX) { $tmp = int($Index2MLoc{$index}/$IDXSIZE)+1; $IdxMinPg = $tmp if ($tmp < $IdxMinPg || $IdxMinPg < 0); } # Mark previous/next messages $Update{$IndexNum{$MListOrder[$i-1]}} = 1 if $i > 0; $Update{$IndexNum{$MListOrder[$i+1]}} = 1 if $i < $#MListOrder; } ## Check for New reference links foreach (@{$Refs{$index}}) { $tmp = $MsgId{$_}; if (defined($IndexNum{$tmp}) && $AddIndex{$tmp}) { $Update{$IndexNum{$index}} = 1; } } $i++; } $i = 0; foreach $index (@TListOrder) { ## Check if new message; must update links in prev/next msgs if ($AddIndex{$index}) { # Mark where thread index page updates start if ($MULTIIDX) { $tmp = int($Index2TLoc{$index}/$IDXSIZE)+1; $TIdxMinPg = $tmp if ($tmp < $TIdxMinPg || $TIdxMinPg < 0); } # Mark previous/next message in thread $Update{$IndexNum{$TListOrder[$i-1]}} = 1 if $i > 0; $Update{$IndexNum{$TListOrder[$i+1]}} = 1 if $i < $#TListOrder; $tloc = $Index2TLoc{$index}; for ($j=2; $j <= $TSliceNBefore; ++$j) { $Update{$IndexNum{$TListOrder[$tloc-$j]}} = 1 if $tloc-$j >= 0; } for ($j=2; $j <= $TSliceNAfter; ++$j) { $Update{$IndexNum{$TListOrder[$tloc+$j]}} = 1 if $tloc-$j >= $#TListOrder; } } $i++; } } } ## Compute total number of pages $i = $NumOfPages; compute_page_total(); ## Update all pages for $LASTPG$ if ($UsingLASTPG && ($i != $NumOfPages)) { $IdxMinPg = 0; $TIdxMinPg = 0; } ##------------## ## Write Data ## ##------------## ign_signals(); # Ignore termination signals print STDOUT "\n" unless $QUIET; ## Write indexes and mail write_mail() unless $NoMsgPgs; write_main_index() if $MAIN; write_thread_index() if $THREAD; ## Write database print STDOUT "Writing database ...\n" unless $QUIET; output_db($DBPathName); ## Write any alternate indexes $IdxMinPg = 0; $TIdxMinPg = 0; my($rc, $rcfile); OTHERIDX: foreach $rc (@OtherIdxs) { $THREAD = 0; ## find other index resource file IDXFIND: { if (-e $rc) { # in current working directory $rcfile = $rc; last IDXFIND; } if (defined $MainRcDir) { # check if located with main resource file $rcfile = join($DIRSEP, $MainRcDir, $rc); last IDXFIND if -e $rcfile; } if (defined $ENV{'HOME'}) { # check if in home directory $rcfile = join($DIRSEP, $ENV{'HOME'}, $rc); last IDXFIND if -e $rcfile; } # check if in archive directory $rcfile = join($DIRSEP, $OUTDIR, $rc); last IDXFIND if -e $rcfile; # look thru @INC to find file local($_); foreach (@INC) { $rcfile = join($DIRSEP, $_, $rc); if (-e $rcfile) { last IDXFIND; } } warn qq/Warning: Unable to find resource file "$rc"\n/; next OTHERIDX; } ## read resource file and print index if (read_resource_file($rcfile)) { if ($THREAD) { @TListOrder = (); write_thread_index(); } else { @MListOrder = (); write_main_index(); } } } unless ($QUIET) { print STDOUT "$NewMsgCnt new messages\n" if $NewMsgCnt > 0; print STDOUT "$NumOfMsgs total messages\n"; } } ## End: write_pages() ##--------------------------------------------------------------------------- ## Compute follow-ups ## sub compute_follow_ups { my $idxlst = shift; my($index, $tmp, $tmp2); %Follow = (); foreach $index (@$idxlst) { $FolCnt{$index} = 0 unless $FolCnt{$index}; if (defined($Refs{$index}) && scalar(@{$Refs{$index}})) { $tmp2 = $Refs{$index}->[-1]; next unless defined($MsgId{$tmp2}) && defined($IndexNum{$MsgId{$tmp2}}); $tmp = $MsgId{$tmp2}; if ($Follow{$tmp}) { push(@{$Follow{$tmp}}, $index); } else { $Follow{$tmp} = [ $index ]; } ++$FolCnt{$tmp}; } } } ##--------------------------------------------------------------------------- ## Compute total number of pages ## sub compute_page_total { if ($MULTIIDX && $IDXSIZE) { $NumOfPages = int($NumOfMsgs/$IDXSIZE); ++$NumOfPages if ($NumOfMsgs/$IDXSIZE) > $NumOfPages; $NumOfPages = 1 if $NumOfPages == 0; $NumOfPrintedPages = $NumOfPages; if (($MAXPGS > 0) && ($MAXPGS < $NumOfPages)) { $NumOfPrintedPages = $MAXPGS; } } else { $NumOfPages = 1; $NumOfPrintedPages = 1; } } ##--------------------------------------------------------------------------- ## write_mail outputs converted mail. It takes a reference to an ## array containing indexes of messages to output. ## sub write_mail { my($hack) = (0); print STDOUT "Writing mail " unless $QUIET; if ($SLOW && !$ADD) { $ADD = 1; $hack = 1; } foreach $index (@MListOrder) { print STDOUT "." unless $QUIET; output_mail($index, $AddIndex{$index}, 0); } if ($hack) { $ADD = 0; } print STDOUT "\n" unless $QUIET; } ##--------------------------------------------------------------------------- ## read_mail_header() is responsible for parsing the header of ## a mail message and loading message information into hash ## structures. ## ## ($index, $header_fields_ref) = read_mail_header($filehandle); ## sub read_mail_header { my $handle = shift; my($date, $tmp, $i, $field, $value); my($from, $sub, $msgid, $ctype); local($_); my $index = undef; my $msgnum = undef; my @refs = (); my @array = (); my($fields, $header) = readmail::MAILread_file_header($handle); ##---------------------------## ## Check for no archive flag ## ##---------------------------## if ( $CheckNoArchive && ((defined($fields->{'restrict'}) && grep { /no-external-archive/i } @{$fields->{'restrict'}}) || (defined($fields->{'x-no-archive'}) && grep { /yes/i } @{$fields->{'x-no-archive'}})) ) { return undef; } ##----------------------------------## ## Check for user-defined exclusion ## ##----------------------------------## if ($MsgExcFilter) { return undef if mhonarc::message_exclude($header); } ##------------## ## Get Msg-ID ## ##------------## $msgid = $fields->{'message-id'}[0] || $fields->{'msg-id'}[0] || $fields->{'content-id'}[0]; if (defined($msgid)) { if ($msgid =~ /<([^>]*)>/) { $msgid = $1; } else { $msgid =~ s/^\s+//; $msgid =~ s/\s+$//; } } else { # create bogus ID if none exists eval { # create message-id using md5 digest of header; # can potentially skip over already archived messages w/o id require Digest::MD5; $msgid = join("", Digest::MD5::md5_hex($header), '@NO-ID-FOUND.mhonarc.org'); }; if ($@) { # unable to require, so create arbitary message-id $msgid = join("", $$,'.',time,'.',$_msgid_cnt++, '@NO-ID-FOUND.mhonarc.org'); } } ## Return if message already exists in archive if ($msgid && defined($index = $MsgId{$msgid})) { if ($Reconvert) { $msgnum = $IndexNum{$index}; delmsg($index); $index = undef; } else { return undef; } } ##----------## ## Get date ## ##----------## $date = ""; foreach (@_DateFields) { ($field, $i) = @{$_}[0,1]; next unless defined($fields->{$field}) && defined($value = $fields->{$field}[$i]); ## Treat received field specially if ($field eq 'received') { @array = split(/;/, $value); # if ((scalar(@array) <= 1) || (scalar(@array) > 2)) { # warn qq/\nWarning: Received header field looks improper:\n/, # qq/ Received: $value\n/, # qq/ Message-Id: <$msgid>\n/; # } $date = pop @array; ## Any other field should just be a date } else { $date = $value; } $date =~ s/^\s+//; $date =~ s/\s+$//; ## See if time_t can be determined. if (($date =~ /\w/) && (@array = parse_date($date))) { $index = get_time_from_date(@array[1..$#array]); last; } } if (!$index) { warn qq/\nWarning: Could not parse date for message\n/, qq/ Message-Id: <$msgid>\n/, qq/ Date: $date\n/; # Use current time $index = time; # Set date string to local date if not defined $date = &time2str("", $index, 1) unless $date =~ /\S/; } ## Return if message too old to add (note, $index just contains time). if (&expired_time($index)) { return undef; } ##-------------## ## Get Subject ## ##-------------## if (defined($fields->{'subject'})) { ($sub = $fields->{'subject'}[0]) =~ s/\s+$//; if ($SubStripCode) { $fields->{'x-mha-org-subject'} = $sub; $sub = subject_strip($sub); } $fields->{'subject'} = [ $sub ]; # Make sure only one subject } else { $sub = ''; } ##----------## ## Get From ## ##----------## $from = ""; foreach (@FromFields) { next unless defined $fields->{$_}; $from = $fields->{$_}[0]; last; } $from = 'Unknown' unless $from; ##----------------## ## Get References ## ##----------------## if (defined($fields->{'references'})) { $tmp = $fields->{'references'}[0]; while ($tmp =~ s/<([^<>]+)>//) { push(@refs, $1); } } if (defined($fields->{'in-reply-to'})) { my $irtoid; foreach (@{$fields->{'in-reply-to'}}) { $tmp = $_; $irtoid = ""; while ($tmp =~ s/<([^<>]+)>//) { $irtoid = $1 }; push(@refs, $irtoid) if $irtoid; } } @refs = remove_dups(\@refs); # Remove duplicate msg-ids ##------------------## ## Get Content-Type ## ##------------------## if (defined($fields->{'content-type'})) { ($ctype = $fields->{'content-type'}[0]) =~ m%^\s*([\w\-\./]+)%; $ctype = lc ($1 || 'text/plain'); } else { $ctype = 'text/plain'; } ## Insure uniqueness of index my $t = $index; $index .= $X . sprintf('%d',(defined($msgnum)?$msgnum:($LastMsgNum+1))); ## Set mhonarc fields. Note how values are NOT arrays. $fields->{'x-mha-index'} = $index; $fields->{'x-mha-message-id'} = $msgid; $fields->{'x-mha-from'} = $from; $fields->{'x-mha-subject'} = $sub; $fields->{'x-mha-content-type'} = $ctype; ## Invoke callback if defined if (defined($CBMessageHeadRead) && defined(&$CBMessageHeadRead)) { return undef unless &$CBMessageHeadRead($fields, $header); } $Time{$index} = $t; $From{$index} = $from; $FromName{$index} = extract_email_name($from) if $DoFromName; $FromAddr{$index} = extract_email_address($from) if $DoFromAddr; $Date{$index} = $date; $Subject{$index} = $sub; $MsgHead{$index} = htmlize_header($fields); $ContentType{$index} = $ctype; if ($msgid) { $MsgId{$msgid} = $index; $NewMsgId{$msgid} = $index; # Track new message-ids $Index2MsgId{$index} = $msgid; } if (defined($msgnum)) { $IndexNum{$index} = $msgnum; ++$NumOfMsgs; # Counteract decrement by delmsg } else { $IndexNum{$index} = getNewMsgNum(); } $Refs{$index} = [ @refs ] if (@refs); ## Grab any extra fields to store foreach $field (@ExtraHFields) { next unless $fields->{$field}; if (!defined($tmp = $ExtraHFields{$index})) { $tmp = $ExtraHFields{$index} = { }; } if ($HFieldsAddr{$field}) { $tmp->{$field} = join(', ', @{$fields->{$field}}); } else { $tmp->{$field} = join(' ', @{$fields->{$field}}); } } ($index, $fields); } ##--------------------------------------------------------------------------- ## read_mail_body() reads in the body of a message. The returned ## filtered body is in $ret. ## ## $html = read_mail_body($fh, $index, $fields_hash_ref, ## $skipConversion); ## sub read_mail_body { my($handle, $index, $fields, $skip) = @_; my($ret, $data) = ('', ''); my(@files); local($_); ## Slurp up message body ## UUCP mailbox if ($MBOX) { if ($CONLEN && defined($fields->{"content-length"})) { my($len, $cnt) = ($fields->{"content-length"}[0], 0); if ($len) { while (<$handle>) { $cnt += length($_); # Increment byte count $data .= $_ unless $skip; # Save data last if $cnt >= $len # Last if hit length } } # Slurp up bogus data if required (should I do this?) while (!/$FROM/o && !eof($handle)) { $_ = <$handle>; } } else { # No content-length while (<$handle>) { last if /$FROM/o; $data .= $_ unless $skip; } } ## MH message file } elsif (!$skip) { local $/ = undef; $data = <$handle>; } if ($DEBUG) { print STDERR "read_mail_body(): Body data loaded into memory\n"; } return '' if $skip; ## Invoke callback if defined if (defined($CBRawMessageBodyRead) && defined(&$CBRawMessageBodyRead)) { if ($DEBUG) { print STDERR "read_mail_body(): Calling CBRawMessageBodyRead\n"; } if (!&$CBRawMessageBodyRead($fields, \$data)) { # reverse effect of read_mail_header() delmsg_from_hashes($index); return undef; } } ## Define "globals" for use by filters ## NOTE: This stuff can be handled better, and will be done ## when/if I get around to rewriting mhonarc in (OO) Perl 5. $MHAindex = $index; $MHAmsgnum = &fmt_msgnum($IndexNum{$index}); $MHAmsgid = $Index2MsgId{$index}; ## Filter data if ($DEBUG) { print STDERR "read_mail_body(): Calling readmail::MAILread_body\n"; } ($ret, @files) = &readmail::MAILread_body($fields, \$data); if ($DEBUG) { print STDERR "read_mail_body(): readmail::MAILread_body DONE\n"; } $ret = '' unless defined $ret; @files = ( ) unless @files; ## Invoke callback if defined if (defined($CBMessageBodyRead) && defined(&$CBMessageBodyRead)) { if (!&$CBMessageBodyRead($fields, \$ret, \@files)) { # reverse effect of read_mail_header() delmsg_from_hashes($index); return undef; } $Message{$index} = $ret; } else { $Message{$index} = $ret; } if (!defined($ret) || $ret eq '') { warn qq/\n/, qq/Warning: Empty body data generated:\n/, qq/ Message-Id: $MHAmsgid\n/, qq/ Message Subject: /, $fields->{'x-mha-subject'}, qq/\n/, qq/ Message Number: $MHAmsgnum\n/, qq/ Content-Type: /, ($fields->{'content-type'}[0] || 'text/plain'), qq/\n/; $ret = ''; } if (@files) { $Derived{$index} = [ @files ]; } $ret; } ##--------------------------------------------------------------------------- ## Output/edit a mail message. ## $index => current index (== $array[$i]) ## $force => flag if mail is written and not editted, regardless ## $nocustom => ignore sections with user customization ## ## This function returns ($msgnum, $filename) if everything went ## okay, but no calls to this routine check the return values. ## sub output_mail { my($index, $force, $nocustom) = @_; my($msgi, $tmp, $tmp2, $template, @array2); my($msghandle, $msginfh); my $msgnum = $IndexNum{$index}; if (!$SINGLE && !defined($msgnum)) { # Something bad must have happened to message, so we just # quietly return. return; } my $adding = ($ADD && !$force && !$SINGLE); my $i_p0 = fmt_msgnum($msgnum); my $filename = msgnum_filename($msgnum); my $filepathname = join($DIRSEP, $OUTDIR, $filename); my $tmppathname; if ($adding) { return ($i_p0, $filename) unless $Update{$msgnum}; #&file_rename($filepathname, $tmppathname); eval { $msginfh = file_open($filepathname); }; if ($@) { # Something is screwed up with archive: We try to delete # message from database since message file appears to have # disappeared warn $@, qq/...Will attempt to remove message and continue on\n/; delmsg($index); # Nothing else to do, so return. return; } } if ($SINGLE) { $msghandle = \*STDOUT; } else { ($msghandle, $tmppathname) = file_temp('tmsg'.$i_p0.'_XXXXXXXXXX', $OUTDIR); } ## Output HTML header if ($adding) { while (<$msginfh>) { last if /\n"; if ($PrintXComments) { print $msghandle "\n", "\n", "\n", "\n", "\n"; if (defined($Refs{$index})) { foreach (@{$Refs{$index}}) { print $msghandle "\n"; #Reference-Id } } if (defined($Derived{$index})) { foreach (@{$Derived{$index}}) { print $msghandle "\n"; } } } print $msghandle "\n"; # Add in user defined markup ($template = $MSGPGBEG) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } print $msghandle "\n"; ## Output header if ($adding) { while (<$msginfh>) { last if /\n"; if (!$nocustom) { ($template = $MSGHEAD) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } print $msghandle "\n"; ## Output Prev/Next/Index links at top if ($adding) { while (<$msginfh>) { last if /\n"; if (!$nocustom && !$SINGLE) { ($template = $TOPLINKS) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } print $msghandle "\n\n"; ## Output message data if ($adding) { $tmp2 = ""; while (<$msginfh>) { # check if subject header delimited if (/\n"; if (!$nocustom) { ($template = $SUBJECTHEADER) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } print $msghandle "\n"; next; } # check if head/body separator delimited if (/\n"; if (!$nocustom) { ($template = $HEADBODYSEP) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } print $msghandle "\n"; next; } $tmp2 .= $_; last if /\n"; print $msghandle "\n"; ($template = $SUBJECTHEADER) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; print $msghandle "\n"; $MsgHead{$index} =~ s/($HAddrExp)/&link_refmsgid($1)/geo; $Message{$index} =~ s/($HAddrExp)/&link_refmsgid($1)/geo; print $msghandle "\n"; print $msghandle $MsgHead{$index}; print $msghandle "\n"; print $msghandle "\n"; ($template = $HEADBODYSEP) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; print $msghandle "\n"; print $msghandle "\n"; print $msghandle $Message{$index}, "\n"; print $msghandle "\n"; print $msghandle "\n"; } ## Output any followup messages if ($adding) { while (<$msginfh>) { last if /\n"; ($template = $MSGBODYEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; if (!$nocustom && $DoFolRefs && defined($Follow{$index})) { if (scalar(@{$Follow{$index}})) { ($template = $FOLUPBEGIN) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; foreach (@{$Follow{$index}}) { ($template = $FOLUPLITXT) =~ s/$VarExp/&replace_li_var($1,$_)/geo; print $msghandle $template; } ($template = $FOLUPEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } } print $msghandle "\n"; ## Output any references if ($adding) { while (<$msginfh>) { last if /\n"; if (!$nocustom && $DoFolRefs && defined($Refs{$index})) { $tmp2 = 0; # flag for when first ref printed if (scalar(@{$Refs{$index}})) { my($ref_msgid, $ref_index, $ref_num); foreach $ref_msgid (@{$Refs{$index}}) { next unless defined($ref_index = $MsgId{$ref_msgid}); next unless defined($ref_num = $IndexNum{$ref_index}); if (!$tmp2) { ($template = $REFSBEGIN) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; $tmp2 = 1; } ($template = $REFSLITXT) =~ s/$VarExp/&replace_li_var($1,$ref_index)/geo; print $msghandle $template; } if ($tmp2) { ($template = $REFSEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } } } print $msghandle "\n"; ## Output verbose links to prev/next message in list if ($adding) { while (<$msginfh>) { last if /\n"; if (!$nocustom && !$SINGLE) { ($template = $BOTLINKS) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } print $msghandle "\n\n"; ## Output footer if ($adding) { while (<$msginfh>) { last if /\n"; if (!$nocustom) { ($template = $MSGFOOT) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } print $msghandle "\n"; if (!$nocustom) { ($template = $MSGPGEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; } close($msghandle) if (!$SINGLE); if ($adding) { close($msginfh); #&file_remove($tmppathname); } if (!$SINGLE) { file_gzip($tmppathname) if $GzipFiles; file_chmod(file_rename($tmppathname, $filepathname)); } ## Create user defined files my($drvfh); foreach (keys %UDerivedFile) { ($tmp = $_) =~ s/$VarExp/&replace_li_var($1,$index)/geo; ($drvfh, $tmppathname) = file_temp('drvXXXXXXXXXX', $OUTDIR); ($template = $UDerivedFile{$_}) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $drvfh $template; close($drvfh); file_gzip($tmppathname) if $GzipFiles; file_chmod(file_rename($tmppathname, join($DIRSEP, $OUTDIR, $tmp))); if (defined($Derived{$index})) { push(@{$Derived{$index}}, $tmp); } else { $Derived{$index} = [ $tmp ]; } } if (defined($Derived{$index})) { $Derived{$index} = [ remove_dups($Derived{$index}) ]; } ## Set modification times -- Use eval incase OS does not support utime. if ($MODTIME && !$SINGLE) { eval { $tmp = $Time{$index}; if (defined($Derived{$index})) { @array2 = @{$Derived{$index}}; grep($_ = $OUTDIR . $DIRSEP . $_, @array2); } else { @array2 = ( ); } unshift(@array2, $filepathname); file_utime($tmp, $tmp, @array2); }; if ($@) { warn qq/\nWarning: Your platform does not support setting file/, qq/ modification times\n/; $MODTIME = 0; } } ($i_p0, $filename); } ############################################################################# ## Miscellaneous routines ############################################################################# ##--------------------------------------------------------------------------- ## delmsg deletes a message from the archive. ## sub delmsg { my $key = shift; my($filename, $derived) = delmsg_from_hashes($key); return 0 unless defined($filename); if (!$KeepOnRmm) { file_remove($filename); if (defined($derived)) { my $pathname; foreach $filename (@{$derived}) { $pathname = (OSis_absolute_path($filename)) ? $filename : join($DIRSEP, $OUTDIR, $filename); if (-d $pathname) { dir_remove($pathname); } else { file_remove($pathname); } } } } 1; } ##--------------------------------------------------------------------------- ## delmsg_from_hashes deletes all message info from db hashes. ## Return value is a list of two items: pathname to message ## file and array ref to any derived files. ## sub delmsg_from_hashes { my $key = shift; #&defineIndex2MsgId(); my $msgnum = $IndexNum{$key}; return (undef, undef) if ($msgnum eq ''); my $filename = join($DIRSEP, $OUTDIR, &msgnum_filename($msgnum)); delete $ContentType{$key}; delete $Date{$key}; delete $ExtraHFields{$key}; delete $FromAddr{$key}; delete $From{$key}; delete $FromName{$key}; delete $IndexNum{$key}; delete $MsgId{$Index2MsgId{$key}}; delete $Refs{$key}; delete $Subject{$key}; delete $Time{$key}; my $derived = $Derived{$key}; delete $Derived{$key}; $NumOfMsgs--; ($filename, $derived); } ##--------------------------------------------------------------------------- ## Routine to convert a msgid to an anchor ## sub link_refmsgid { my $refmsgid = dehtmlize(shift); my $onlynew = shift; if (defined($MsgId{$refmsgid}) && defined($IndexNum{$MsgId{$refmsgid}}) && (!$onlynew || $NewMsgId{$refmsgid})) { my($lreftmpl) = $MSGIDLINK; $lreftmpl =~ s/$VarExp/&replace_li_var($1,$MsgId{$refmsgid})/geo; return $lreftmpl; } htmlize($refmsgid); } ##--------------------------------------------------------------------------- ## Retrieve next available message number. Should only be used ## when an archive is locked. ## sub getNewMsgNum { $NumOfMsgs++; $LastMsgNum++; $LastMsgNum; } ##--------------------------------------------------------------------------- ## ign_signals() sets mhonarc to ignore termination signals. This ## routine is called right before an archive is written/edited to ## help prevent archive corruption. ## sub ign_signals { @SIG{@_term_sigs} = ('IGNORE') x scalar(@_term_sigs); } ##--------------------------------------------------------------------------- ## set_handler() sets up the signal_catch() routine to be called when ## termination signals are sent to mhonarc. ## sub set_handler { %_sig_org = ( ); @_sig_org{@_term_sigs} = @SIG{@_term_sigs}; @SIG{@_term_sigs} = (\&mhonarc::signal_catch) x scalar(@_term_sigs); } ##--------------------------------------------------------------------------- ## reset_handler() resets the original signal handlers. ## sub reset_handler { @SIG{@_term_sigs} = @_sig_org{@_term_sigs}; } ##--------------------------------------------------------------------------- ## signal_catch(): Function for handling signals that would cause ## termination. ## sub signal_catch { my $signame = shift; close_archive(1); &{$_sig_org{$signame}}($signame) if defined(&{$_sig_org{$signame}}); reset_handler(); die qq/Processing stopped, signal caught: SIG$signame\n/; } ##--------------------------------------------------------------------------- ## Create Index2MsgId if not defined ## sub defineIndex2MsgId { no warnings qw(deprecated); if (!defined(%Index2MsgId)) { foreach (keys %MsgId) { $Index2MsgId{$MsgId{$_}} = $_; } } } ##--------------------------------------------------------------------------- 1; MHonArc-2014-05-05-snap/lib/readmail.pl0000644004705000001440000012767512325352346016264 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: readmail.pl,v 2.45 2014/04/22 02:33:10 ehood Exp $ ## Author: ## Earl Hood mhonarc AT mhonarc DOT org ## Description: ## Library defining routines to parse MIME e-mail messages. The ## library is designed so it may be reused for other e-mail ## filtering programs. The default behavior is for mail->html ## filtering, however, the defaults can be overridden to allow ## mail->whatever filtering. ## ## Public Functions: ## ---------------- ## $data = MAILdecode_1522_str($str); ## ($data, @files) = MAILread_body($fields_hash_ref, $body_ref); ## $hash_ref = MAILread_file_header($handle); ## $hash_ref = MAILread_header($mesg_str_ref); ## ## ($disp, $file, $raw, $html_name) = ## MAILhead_get_disposition($fields_hash_ref, $do_html); ## $boolean = MAILis_excluded($content_type); ## $parm_hash_ref = MAILparse_parameter_str($header_field); ## $parm_hash_ref = MAILparse_parameter_str($header_field, 1); ## ##---------------------------------------------------------------------------## ## Copyright (C) 1996-2003 Earl Hood, mhonarc AT mhonarc DOT org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package readmail; no warnings qw(deprecated); $DEBUG = 0; ############################################################################### ## Private Globals ## ############################################################################### #my $Url = '(\w+://|\w+:)'; my @_MIMEAltPrefs = (); my %_MIMEAltPrefs = (); ############################################################################### ## Public Globals ## ############################################################################### ##---------------------------------------------------------------------------## ## Constants ## ## String for matching the start of a URL: It seems unnecessary to # try to recognize all valid schemes, so we use a simplier regex. # Keep the old one around just in case we need to resurrect it. #$UrlRxStr = # '(?:(?:https?|ftp|afs|wais|telnet|ldap|gopher|z39\.50[rs]|vemmi|imap|'. # 'nfs|acap|rtspu?|tip|pop|sip|(?:soap|xmlrpc)\.beeps?|go|ipp|'. # 'tftp)://|'. # 'news:(?://)?|'. # '(?:nntp|mid|cid|mailto|prospero|data|service|tel|fax|modem|h\.323):)'; $UrlRxStr = '(?:(?:https?|ftp|ldap|gopher)://|news:(?://)?|(?:nntp|mailto):)'; ## Constants for use as second argument to MAILdecode_1522_str(). sub JUST_DECODE() { 1; } sub DECODE_ALL() { 2; } sub TEXT_ENCODE() { 3; } ##---------------------------------------------------------------------------## ##---------------------------------------------------------------------------## ## Scalar Variables ## ## Flag if message headers are decoded in the parse header routines: ## MAILread_header, MAILread_file_header. This only affects the ## values of the field hash created. The original header is still ## passed as the return value. ## ## The only 1522 data that will be decoded is data encoded with charsets ## set to "-decode-" in the %MIMECharSetConverters hash. $DecodeHeader = 0; ##---------------------------------------------------------------------------## ## Variables for holding information related to the functions used ## for processing MIME data. Variables are defined in the scope ## of main. ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## %MIMEDecoders is the associative array for storing functions for ## decoding mime data. ## ## Keys => content-transfer-encoding (should be in lowercase) ## Values => function name. ## ## Function names should be qualified with package identifiers. ## Functions are called as follows: ## ## $decoded_data = &function($data); ## ## The value "as-is" may be used to allow the data to be passed without ## decoding to the registered filter, but the decoded flag will be ## set to true. %MIMEDecoders = () unless %MIMEDecoders; %MIMEDecodersSrc = () unless %MIMEDecodersSrc; ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## %MIMECharSetConverters is the associative array for storing functions ## for converting data in a particular charset to a destination format ## within the MAILdecode_1522_str() routine. Destination format is defined ## by the function. ## ## Keys => charset (should be in lowercase) ## Values => function name. ## ## Charset values take on a form like "iso-8859-1" or "us-ascii". ## NOTE: Values need to be in lower-case. ## ## The key "default" can be assigned to define the default function ## to call if no explicit charset function is defined. ## ## The key "plain" can be set to a function for decoded regular text not ## encoded in 1522 format. ## ## Function names are name of defined perl function and should be ## qualified with package identifiers. Functions are called as follows: ## ## $converted_data = &function($data, $charset); ## ## A function called "-decode-" implies that the data should be ## decoded, but no converter is to be invoked. ## ## A function called "-ignore-" implies that the data should ## not be decoded and converted. Ie. For the specified charset, ## the encoding will stay unprocessed and passed back in the return ## string. %MIMECharSetConverters = () unless %MIMECharSetConverters; %MIMECharSetConvertersSrc = () unless %MIMECharSetConvertersSrc; ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## %MIMEFilters is the associative array for storing functions that ## process various content-types in the MAILread_body routine. ## ## Keys => Content-type (should be in lowercase) ## Values => function name. ## ## Function names should be qualified with package identifiers. ## Functions are called as follows: ## ## $converted_data = &function($header, *parsed_header_assoc_array, ## *message_data, $decoded_flag, ## $optional_filter_arguments); ## ## Functions can be registered for base types. Example: ## ## $MIMEFilters{"image/*"} = "mypackage'function"; ## ## IMPORTANT: If a function specified is not defined when MAILread_body ## tries to invoke it, MAILread_body will silently ignore. Make sure ## that all functions are defined before invoking MAILread_body. %MIMEFilters = () unless %MIMEFilters; %MIMEFiltersSrc = () unless %MIMEFiltersSrc; ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## %MIMEFiltersArgs is the associative array for storing any optional ## arguments to functions specified in MIMEFilters (the ## $optional_filter_arguments from above). ## ## Keys => Either one of the following: content-type, function name. ## Values => Argument string (format determined by filter function). ## ## Arguments listed for a content-type will be used over arguments ## listed for a function if both are applicable. %MIMEFiltersArgs = () unless %MIMEFiltersArgs; ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## %MIMEExcs is the associative array listing which data types ## should be auto-excluded during parsing: ## ## Keys => content-type, or base-type ## Values => %MIMEExcs = () unless %MIMEExcs; ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## %MIMEIncs is the associative array listing which data types ## should be auto-included during parsing: ## ## Keys => content-type, or base-type ## Values => ## ## If there are any keys defined in %MIMEIncs, then any content-type ## not in the hash is automatically excluded. I.e. %MIMEIncs can ## be used to only allow a well-defined set of content-types. %MIMEIncs = () unless %MIMEIncs; ## - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## %MIMECharsetAliases is a mapping of charset names to charset names. ## The MAILset_charset_aliases() routine should be used to set the ## values of this hash. ## ## Keys => charset name ## Values => real charset name ## %MIMECharsetAliases = () unless %MIMECharsetAliases; ##--------------------------------------------------------------------------- ## Text entity-related variables ## ## Default character set if none specified. $TextDefCharset = 'us-ascii' unless defined($TextDefCharset); ## Destination character encoding for text entities. $TextEncode = undef unless defined($TextEncode); ## Text encoding function. $TextEncoderFunc = undef unless defined($TextEncoderFunc); ## Text encoding function source file. $TextEncoderSrc = undef unless defined($TextEncoderSrc); ## Prefilter function $TextPreFilter = undef unless defined($TextPreFilter); ##--------------------------------------------------------------------------- ## Variables holding functions for generating processed output ## for MAILread_body(). The default functions generate HTML. ## However, the variables can be set to functions that generate ## a different type of output. ## ## $FormatHeaderFunc has no default, and must be defined by ## the calling program. ## ## Function that returns a message when failing to process a part of a ## a multipart message. The content-type of the message is passed ## as an argument. $CantProcessPartFunc = \&cantProcessPart unless(defined($CantProcessPartFunc)); ## Function that returns a message when a part is excluded via %MIMEExcs. $ExcludedPartFunc = \&excludedPart unless(defined($ExcludedPartFunc)); ## Function that returns a message when a part is unrecognized in a ## multipart/alternative message. I.e. No part could be processed. ## No arguments are passed to function. $UnrecognizedAltPartFunc = \&unrecognizedAltPart unless(defined($UnrecognizedAltPartFunc)); ## Function that returns a string to go before any data generated generating ## from processing an embedded message (message/rfc822 or message/news). ## No arguments are passed to function. $BeginEmbeddedMesgFunc = \&beginEmbeddedMesg unless(defined($BeginEmbeddedMesgFunc)); ## Function that returns a string to go after any data generated generating ## from processing an embedded message (message/rfc822 or message/news). ## No arguments are passed to function. $EndEmbeddedMesgFunc = \&endEmbeddedMesg unless(defined($EndEmbeddedMesgFunc)); ## Function to return a string that is a result of the functions ## processing of a message header. The function is called for ## embedded messages (message/rfc822 and message/news). The ## arguments to function are: ## ## 1. Pointer to associative array representing message header ## contents with the keys as field labels (in all lower-case) ## and the values as field values of the labels. ## ## 2. Pointer to associative array mapping lower-case keys of ## argument 1 to original case. ## ## Prototype: $return_data = &function(*fields, *lower2orig_fields); $FormatHeaderFunc = undef unless(defined($FormatHeaderFunc)); ############################################################################### ## Public Routines ## ############################################################################### ##---------------------------------------------------------------------------## ## MAILdecode_1522_str() decodes a string encoded in a format ## specified by RFC 1522. The decoded string is the return value. ## If no MIMECharSetConverters is registered for a charset, then ## the decoded data is returned "as-is". ## ## Usage: ## ## $ret_data = &MAILdecode_1522_str($str, $dec_flag); ## ## If $dec_flag is JUST_DECODE, $str will be decoded for only ## the charsets specified as "-decode-". If it is equal to ## DECODE_ALL, all encoded data is decoded without any conversion. ## If $dec_flag is TEXT_ENCODE, then all data will be converted ## and encoded according to $readmail::TextEncode and ## $readmail::TextEncoderFunc. ## sub MAILdecode_1522_str { my $str = shift; my $dec_flag = shift || 0; my $ret = (''); my($charset, $encoding, $pos, $dec, $charcnv, $real_charset, $plaincnv, $plain_real_charset, $strtxt, $str_before); # Get text encoder my $encfunc = undef; if ($dec_flag == TEXT_ENCODE) { $encfunc = load_textencoder(); if (!defined($encfunc)) { $encfunc = undef unless defined($encfunc); $dec_flag = 0; } } # Get plain converter ($plaincnv, $plain_real_charset) = MAILload_charset_converter('plain'); $plain_real_charset = 'us-ascii' if $plain_real_charset eq 'plain'; # Decode string my $firsttime = 1; while ($str =~ /(=\?([^?]+)\?(.)\?([^?]*)\?=)/g) { # Grab components $pos = pos($str); ($charset, $encoding, $strtxt) = (lc($2), lc($3), $4); $str_before = substr($str, 0, $pos-length($1)); substr($str, 0, $pos) = ''; pos($str) = 0; # Check encoding method and grab proper decoder if ($encoding eq 'b') { $dec = &load_decoder('base64'); } else { $dec = &load_decoder('quoted-printable'); } # Convert before (unencoded) text if ($firsttime || $str_before =~ /\S/) { if (defined($encfunc)) { # encoding &$encfunc(\$str_before, $plain_real_charset, $TextEncode); $ret .= $str_before; } elsif ($dec_flag) { # ignore if just decode $ret .= $str_before; } elsif (defined(&$plaincnv)) { # decode and convert $ret .= &$plaincnv($str_before, $plain_real_charset); } else { # ignore $ret .= $str_before; } } $firsttime = 0; # Encoding text if (defined($encfunc)) { $real_charset = $MIMECharsetAliases{$charset} ? $MIMECharsetAliases{$charset} : $charset; $strtxt =~ s/_/ /g; $strtxt = &$dec($strtxt); $strtxt =~ s/[\r\n]/ /g; &$encfunc(\$strtxt, $real_charset, $TextEncode); $ret .= $strtxt; # Regular conversion } else { if ($dec_flag == DECODE_ALL) { $charcnv = '-decode-'; } else { ($charcnv, $real_charset) = MAILload_charset_converter($charset); } # Decode only if ($charcnv eq '-decode-') { $strtxt =~ s/_/ /g; $strtxt = &$dec($strtxt); $strtxt =~ s/[\r\n]/ /g; $ret .= $strtxt; # Ignore if just decoding } elsif ($dec_flag) { $ret .= "=?$charset?$encoding?$strtxt?="; # Decode and convert } elsif (defined(&$charcnv)) { $strtxt =~ s/_/ /g; $strtxt = &$dec($strtxt); $strtxt =~ s/[\r\n]/ /g; $ret .= &$charcnv($strtxt, $real_charset); # Fallback is to ignore } else { $ret .= "=?$charset?$encoding?$strtxt?="; } } } # Convert left-over unencoded text if (defined($encfunc)) { # encoding &$encfunc(\$str, $plain_real_charset, $TextEncode); $ret .= $str; } elsif ($dec_flag) { # ignore if just decode $ret .= $str; } elsif (defined(&$plaincnv)) { # decode and convert $ret .= &$plaincnv($str, $plain_real_charset); } else { # ignore $ret .= $str; } $ret; } ##---------------------------------------------------------------------------## ## MAILread_body() parses a MIME message body. ## Usage: ## ($data, @files) = ## MAILread_body($fields_hash_ref, $body_data_ref); ## ## Parameters: ## $fields_hash_ref ## A reference to hash of message/part header ## fields. Keys are field names in lowercase ## and values are array references containing the ## field values. For example, to obtain the ## content-type, if defined, one would do: ## ## $fields_hash_ref->{'content-type'}[0] ## ## Values for a fields are stored in arrays since ## duplication of fields are possible. For example, ## the Received: header field is typically repeated ## multiple times. For fields that only occur once, ## then array for the field will only contain one ## item. ## ## $body_data_ref ## Reference to body data. It is okay for the ## filter to modify the text in-place. ## ## Return: ## The first item in the return list is the text that should ## printed to the message page. Any other items in the return ## list are derived filenames created. ## ## See Also: ## MAILread_header(), MAILread_file_header() ## sub MAILread_body { my($fields, # Parsed header hash $body, # Reference to raw body text $inaltArg) = @_; # Flag if in multipart/alternative my($type, $subtype, $boundary, $content, $ctype, $pos, $encoding, $decodefunc, $args, $part, $uribase); my(@parts) = (); my(@files) = (); my(@array) = (); my $ret = ""; ## Get type/subtype if (defined($fields->{'content-type'})) { $content = $fields->{'content-type'}->[0]; } $content = 'text/plain' unless $content; ($ctype) = $content =~ m%^\s*([\w\-\./]+)%; # Extract content-type $ctype =~ tr/A-Z/a-z/; # Convert to lowercase if ($ctype =~ m%/%) { # Extract base and sub types ($type,$subtype) = split(/\//, $ctype, 2); } elsif ($ctype =~ /text/i) { $ctype = 'text/plain'; $type = 'text'; $subtype = 'plain'; } else { $type = $subtype = ''; } $fields->{'x-mha-content-type'} = $ctype; ## Check if type is excluded if (MAILis_excluded($ctype)) { return (&$ExcludedPartFunc($ctype)); } ## Get entity URI base if (defined($fields->{'content-base'}) && ($uribase = $fields->{'content-base'}[0])) { $uribase =~ s/['"\s]//g; } elsif (defined($fields->{'content-location'}) && ($uribase = $fields->{'content-location'}[0])) { $uribase =~ s/['"\s]//g; } $uribase =~ s|(.*/).*|$1| if $uribase; ## Load content-type filter if ( (!defined($filter = &load_filter($ctype)) || !defined(&$filter)) && (!defined($filter = &load_filter("$type/*")) || !defined(&$filter)) && (!$inaltArg && (!defined($filter = &load_filter('*/*')) || !defined(&$filter)) && $ctype !~ m^\bmessage/(?:rfc822|news)\b^i && $type !~ /\bmultipart\b/) ) { warn qq|Warning: Unrecognized content-type, "$ctype", |, qq|assuming "application/octet-stream"\n|; $filter = &load_filter('application/octet-stream'); } ## Check for filter arguments $args = get_filter_args($ctype, "$type/*", $filter); ## Check encoding if (defined($fields->{'content-transfer-encoding'})) { $encoding = lc $fields->{'content-transfer-encoding'}[0]; $encoding =~ s/\s//g; $decodefunc = &load_decoder($encoding); } else { $encoding = undef; $decodefunc = undef; } my $decoded = 0; if (defined($decodefunc) && defined(&$decodefunc)) { $$body = &$decodefunc($$body); $decoded = 1; } elsif ($decodefunc =~ /as-is/i) { $decoded = 1; } ## Convert text encoding if ($type eq 'text') { my $charset = extract_charset($content, $subtype, $body); $fields->{'x-mha-charset'} = $charset; my $textfunc = load_textencoder(); if (defined($textfunc)) { if ($DEBUG) { print STDERR "MAILread_body: have textfunc: $textfunc\n"; } $fields->{'x-mha-charset'} = $TextEncode if defined(&$textfunc($body, $charset, $TextEncode)); } if (defined($TextPreFilter) && defined(&$TextPreFilter)) { if ($DEBUG) { print STDERR 'MAILread_body: have TextPreFilter: ', $TextPreFilter, "\n"; } &$TextPreFilter($fields, $body); } } else { # define x-mha-charset in case text filter associated with # a non-text type $fields->{'x-mha-charset'} = $TextDefCharset; } if ($DEBUG) { print STDERR 'MAILread_body: charset: ',$fields->{'x-mha-charset'},"\n"; } ## A filter is defined for given content-type if ($filter && defined(&$filter)) { @array = &$filter($fields, $body, $decoded, $args); ## Setup return variables $ret = shift @array; # Return string push(@files, @array); # Derived files ## No filter defined for given content-type } else { ## If multipart, recursively process each part if ($type =~ /\bmultipart\b/i) { local(%Cid) = ( ) unless scalar(caller) eq 'readmail'; my($isalt) = $subtype =~ /\balternative\b/i; ## Get boundary $boundary = ""; if ($content =~ m/\bboundary\s*=\s*"([^"]*)"/i) { $boundary = $1; } else { ($boundary) = $content =~ m/\bboundary\s*=\s*([^\s;]+)/i; $boundary =~ s/;$//; # chop ';' if grabbed } ## If boundary defined, split body into parts if ($boundary =~ /\S/) { my $found = 0; my $have_end = 0; my $start_pos = 0; substr($$body, 0, 0) = "\n"; substr($boundary, 0, 0) = "\n--"; my $blen = length($boundary); my $bchkstr; while (($pos = index($$body, $boundary, $start_pos)) > -1) { # have to check for case when boundary is a substring # of another boundary, yuck! $bchkstr = substr($$body, $pos+$blen, 2); unless ($bchkstr =~ /\A\r?\n/ || $bchkstr =~ /\A--/) { # incomplete match, continue search $start_pos = $pos+$blen; next; } $found = 1; push(@parts, substr($$body, 0, $pos)); $parts[$#parts] =~ s/^\r//; # prune out part data just grabbed substr($$body, 0, $pos+$blen) = ""; # check if hit end if ($$body =~ /\A--/) { $have_end = 1; last; } # remove EOL at the beginning $$body =~ s/\A\r?\n//; $start_pos = 0; } if ($found) { if (!$have_end) { warn qq/Warning: No end boundary delimiter found in /, qq/message body\n/; push(@parts, $$body); $parts[$#parts] =~ s/^\r//; $$body = ""; } else { # discard front-matter shift(@parts); } } else { # no boundary separators in message! warn qq/Warning: No boundary delimiters found in /, qq/multipart body\n/; if ($$body =~ m/\A\n[\w\-]+:\s/) { # remove \n added above if part looks like it has # headers. we keep if it does not to avoid body # data being parsed as a header below. substr($$body, 0, 1) = ""; } push(@parts, $$body); } ## Else treat body as one part } else { @parts = ($$body); } ## Process parts my(@entity) = (); my($cid, $href, $pctype); my %alt_exc = ( ); my $have_alt_prefs = $isalt && scalar(@_MIMEAltPrefs); my $partno = 0; @parts = \(@parts); while (defined($part = shift(@parts))) { $href = { }; $partfields = $href->{'fields'} = (MAILread_header($part))[0]; $href->{'body'} = $part; $href->{'filtered'} = 0; $partfields->{'x-mha-part-number'} = ++$partno; $pctype = extract_ctype( $partfields->{'content-type'}, $ctype); ## check alternative preferences if ($have_alt_prefs) { next if ($alt_exc{$pctype}); my $pos = $_MIMEAltPrefs{$pctype}; if (defined($pos)) { for (++$pos; $pos <= $#_MIMEAltPrefs; ++$pos) { $alt_exc{$_MIMEAltPrefs[$pos]} = 1; } } } ## only add to %Cid if not excluded if (!&MAILis_excluded($pctype)) { if ($isalt) { unshift(@entity, $href); } else { push(@entity, $href); } $cid = $partfields->{'content-id'}[0] || $partfields->{'message-id'}[0]; if (defined($cid)) { $cid =~ s/[\s<>]//g; $Cid{"cid:$cid"} = $href if $cid =~ /\S/; } $cid = undef; if (defined($partfields->{'content-location'}) && ($cid = $partfields->{'content-location'}[0])) { my $partbase = $uribase; $cid =~ s/['"\s]//g; if (defined($partfields->{'content-base'})) { $partbase = $partfields->{'content-base'}[0]; } $cid = apply_base_url($partbase, $cid); if ($cid =~ /\S/ && !$Cid{$cid}) { $Cid{$cid} = $href; } } if ($cid) { $partfields->{'content-location'} = [ $cid ]; } elsif (!defined($partfields->{'content-base'})) { $partfields->{'content-base'} = [ $uribase ]; } $partfields->{'x-mha-parent-header'} = $fields; } } my($entity); ENTITY: foreach $entity (@entity) { if ($entity->{'filtered'}) { next ENTITY; } ## If content-type not defined for part, then determine ## content-type based upon multipart subtype. $partfields = $entity->{'fields'}; if (!defined($partfields->{'content-type'})) { $partfields->{'content-type'} = [ ($subtype =~ /digest/) ? 'message/rfc822' : 'text/plain' ]; } ## Process part @array = MAILread_body( $partfields, $entity->{'body'}, $isalt); ## Only use last filterable part in alternate if ($isalt) { $ret = shift @array; if ($ret) { push(@files, @array); $entity->{'filtered'} = 1; last ENTITY; } } else { if (!$array[0]) { $array[0] = &$CantProcessPartFunc( $partfields->{'content-type'}[0]); } $ret .= shift @array; } push(@files, @array); $entity->{'filtered'} = 1; } ## Check if multipart/alternative, and no success if (!$ret && $isalt) { warn qq|Warning: No recognized part in multipart/alternative; |, qq|will try to decode last part\n|; $entity = $entity[0]; @array = &MAILread_body( $entity->{'fields'}, $entity->{'body'}); $ret = shift @array; if ($ret) { push(@files, @array); } else { $ret = &$UnrecognizedAltPartFunc(); } } ## Aid garbage collection(?) foreach $entity (@entity) { delete $entity->{'fields'}{'x-mha-parent-header'}; } ## Else if message/rfc822 or message/news } elsif ($ctype =~ m^\bmessage/(?:rfc822|news)\b^i) { $partfields = (MAILread_header($body))[0]; # propogate parent and part no to message/* header $partfields->{'x-mha-parent-header'} = $fields->{'x-mha-parent-header'}; $partfields->{'x-mha-part-number'} = $fields->{'x-mha-part-number'}; $ret = &$BeginEmbeddedMesgFunc(); if ($FormatHeaderFunc && defined(&$FormatHeaderFunc)) { $ret .= &$FormatHeaderFunc($partfields); } else { warn "Warning: readmail: No message header formatting ", "function defined\n"; } @array = MAILread_body($partfields, $body); $ret .= shift @array || &$CantProcessPartFunc( $partfields->{'content-type'}[0] || 'text/plain'); $ret .= &$EndEmbeddedMesgFunc(); push(@files, @array); delete $partfields->{'x-mha-parent-header'}; ## Else cannot handle type } else { $ret = ''; } } ($ret, @files); } ##---------------------------------------------------------------------------## ## MAILread_header reads (and strips) a mail message header from the ## variable $mesg. $mesg is a reference to the mail message in ## a string. ## ## $fields is a reference to a hash to put field values indexed by ## field labels that have been converted to all lowercase. ## Field values are array references to the values ## for each field. ## ## ($fields_hash_ref, $header_txt) = MAILread_header($mesg_data); ## sub MAILread_header { my $mesg = shift; my $fields = { }; my $label = ''; my $header = ''; my($value, $tmp, $pos); ## Read a line at a time. for ($pos=0; $pos >= 0; ) { $pos = index($$mesg, "\n"); if ($pos >= 0) { $tmp = substr($$mesg, 0, $pos+1); substr($$mesg, 0, $pos+1) = ""; last if $tmp =~ /^\r?$/; # Done if blank line $header .= $tmp; chop $tmp; # Chop newline $tmp =~ s/\r$//; # Delete characters } else { $tmp = $$mesg; $header .= $tmp; } ## Check for continuation of a field if ($tmp =~ /^\s/) { $fields->{$label}[-1] .= $tmp if $label; next; } ## Separate head from field text if ($tmp =~ /^([^:\s]+):\s*([\s\S]*)$/) { ($label, $value) = (lc($1), $2); if ($fields->{$label}) { push(@{$fields->{$label}}, $value); } else { $fields->{$label} = [ $value ]; } } } decode_1522_fields($fields); ($fields, $header); } ##---------------------------------------------------------------------------## ## MAILread_file_header reads (and strips) a mail message header ## from the filehandle $handle. The routine behaves in the ## same manner as MAILread_header; ## ## ($fields_hash, $header_text) = MAILread_file_header($filehandle); ## sub MAILread_file_header { my $handle = shift; my $encode = shift; my $label = ''; my $header = ''; my $fields = { }; local $/ = "\n"; my($value, $tmp); while (($tmp = <$handle>) !~ /^[\r]?$/) { ## Save raw text $header .= $tmp; ## Delete eol characters $tmp =~ s/[\r\n]//g; ## Check for continuation of a field if ($tmp =~ /^\s/) { $fields->{$label}[-1] .= $tmp if $label; next; } ## Separate head from field text if ($tmp =~ /^([^:\s]+):\s*([\s\S]*)$/) { ($label, $value) = (lc($1), $2); if (defined($fields->{$label})) { push(@{$fields->{$label}}, $value); } else { $fields->{$label} = [ $value ]; } } } decode_1522_fields($fields); ($fields, $header); } ##---------------------------------------------------------------------------## ## MAILis_excluded() checks if specified content-type has been ## specified to be excluded. ## sub MAILis_excluded { my $ctype = lc($_[0]) || 'text/plain'; my $btype = undef; $ctype =~ s/\/x-/\//; if ($ctype =~ m|([^/]+)/|) { $btype = $1; } MIMEINCS: { # Treat multipart special: It is always included unless present # in MIMEExcs. last MIMEINCS if ($ctype =~ /^multipart\b/); if (%MIMEIncs) { if ($MIMEIncs{$ctype} || (defined($btype) && $MIMEIncs{$btype})) { last MIMEINCS; } else { return 1; } } } if ($MIMEExcs{$ctype} || (defined($btype) && $MIMEExcs{$btype})) { return 1; } 0; } ##---------------------------------------------------------------------------## ## MAILhead_get_disposition gets the content disposition and ## filename from $hfields, $hfields is a hash produced by the ## MAILread_header and MAILread_file_header routines. ## sub MAILhead_get_disposition { my $hfields = shift; my $do_html = shift; my($disp, $filename, $raw) = ('', '', ''); my $html_name = undef; local($_); if (defined($hfields->{'content-disposition'}) && ($_ = $hfields->{'content-disposition'}->[0])) { ($disp) = /^\s*([^\s;]+)/; if (/filename="([^"]+)"/i) { $raw = $1; } elsif (/filename=(\S+)/i) { ($raw = $1) =~ s/;\s*$//g; } } if (!$raw && defined($_ = $hfields->{'content-type'}[0])) { if (/name="([^"]+)"/i) { $raw = $1; } elsif (/name=(\S+)/i) { ($raw = $1) =~ s/;\s*$//g; } } $filename = MAILdecode_1522_str($raw, DECODE_ALL); $filename =~ s%.*[/\\:]%%; # Remove any path component $filename =~ s/^\s+//; # Remove leading whitespace $filename =~ s/\s+$//; # Remove trailing whitespace $filename =~ tr/\0-\40\t\n\r?:*"'<>|\177-\377/_/; # Remove questionable/invalid characters # Only provide HTML display version if requested $html_name = MAILdecode_1522_str($raw) if $do_html; ($disp, $filename, $raw, $html_name); } ##---------------------------------------------------------------------------## ## MAILparse_parameter_str(): parses a parameter/value string. ## Support for RFC 2184 extensions exists. The $hasmain flag tells ## the method if there is an intial main value for the sting. For ## example: ## ## text/plain; charset=us-ascii ## ----^^^^^^^^^^ ## ## The "text/plain" part is not a parameter/value pair, but having ## an initial value is common among some header fields that can have ## parameter/value pairs (egs: Content-Type, Content-Disposition). ## ## Return Value: ## Reference to a hash. Each key is the attribute name. ## The special key, 'x-main', is the main value if the ## $hasmain flag is set. ## ## Each hash value is a hash reference with three keys: ## 'charset', 'lang', 'value'. 'charset' and 'lang' may be ## undef if character set or language information is not ## specified. ## ## Example Usage: ## ## $content_type_field = 'text/plain; charset=us-ascii'; ## $parms = MAILparse_parameter_str($content_type_field, 1); ## $ctype = $parms->{'x-main'}; ## $mesg_body_charset = $parms->{'charset'}{'value'}; ## sub MAILparse_parameter_str { my $str = shift; # Input string my $hasmain = shift; # Flag if there is a main value to extract require MHonArc::RFC822; my $parm = { }; my @toks = MHonArc::RFC822::uncomment($str); my($tok, $name, $value, $charset, $lang, $isPart); $parm->{'x-main'} = shift @toks if $hasmain; ## Loop thru token list while ($tok = shift @toks) { next if $tok eq ";"; ($name, $value) = split(/=/, $tok, 2); ## Check if charset/lang specified if ($name =~ s/\*$//) { if ($value =~ s/^([^']*)'([^']*)'//) { ($charset, $lang) = ($1, $2); } else { ($charset, $lang) = (undef, undef); } } ## Check if parameter is only part if ($name =~ s/\*(\d+)$//) { $isPart = 1; } else { $isPart = 0; } ## Set values for parameter $name = lc $name; $parm->{$name} = {} unless defined($parm->{$name}); $parm->{$name}{'charset'} = $charset; $parm->{$name}{'lang'} = $lang; ## Check if value is next token if ($value eq "") { ## If value next token, than it must be quoted $value = shift @toks; $value =~ s/^"//; $value =~ s/"$//; $value =~ s/\\//g; } if ($isPart && defined($parm->{$name}{'vlist'})) { push(@{$parm->{$name}{'vlist'}}, $value); } else { $parm->{$name}{'vlist'} = [ $value ]; } } ## Now we loop thru each parameter and define the final values from ## the parts foreach $name (keys %$parm) { next if $name eq 'x-main'; $parm->{$name}{'value'} = join("", @{$parm->{$name}{'vlist'}}); } $parm; } ##---------------------------------------------------------------------------## ## MAILset_alternative_prefs() is used to set content-type ## preferences for multipart/alternative entities. The list ## specified will supercede the prefered format as denoted by ## the ording of parts in the entity. ## ## A content-type listed earlier in the array will be prefered ## over one later. For example: ## ## MAILset_alternative_prefs('text/plain', 'text/html'); ## ## States that if a multipart/alternative entity contains a ## text/plain part and a text/html part, the text/plain part will ## be prefered over the text/html part. ## sub MAILset_alternative_prefs { @_MIMEAltPrefs = map { lc } @_; %_MIMEAltPrefs = (); my $i = 0; my $ctype; foreach $ctype (@_MIMEAltPrefs) { $_MIMEAltPrefs{$ctype} = $i++; } } ##---------------------------------------------------------------------------## ## MAILset_charset_aliases() is used to define name aliases for ## charset names. ## ## Example usage: ## MAILset_charset_aliases( { ## 'iso-8859-1' => [ 'latin1', 'iso_8859_1', '8859-1' ], ## 'iso-8859-15' => [ 'latin9', 'iso_8859_15', '8859-15' ], ## }, $override ); ## sub MAILset_charset_aliases { my $map = shift; my $override = shift; %MIMECharsetAliases = () if $override; my($charset, $aliases, $alias); while (($charset, $aliases) = each(%$map)) { $charset = lc $charset; foreach $alias (@$aliases) { $MIMECharsetAliases{lc $alias} = $charset; } } } ##---------------------------------------------------------------------------## ## MAILload_charset_converter() loads the charset converter function ## associated with given charset name. ## ## Example usage: ## ($func, $real_charset) = MAILload_charset_converter($charset); ## ## $func is the reference to the converter function, which may be ## undef. $real_charset is the real charset name that should be ## used when invoking the function. ## sub MAILload_charset_converter { my $charset = lc shift; $charset = $MIMECharsetAliases{$charset} if $MIMECharsetAliases{$charset}; my $func = load_charset($charset); if (!defined($func) || !defined(&$func)) { $func = load_charset('default'); } ($func, $charset); } ############################################################################### ## Private Routines ############################################################################### ##---------------------------------------------------------------------------## ## Default function for unable to process a part of a multipart ## message. ## sub cantProcessPart { my($ctype) = $_[0]; warn "Warning: Could not process part with given Content-Type: ", "$ctype\n"; "
    <<< $ctype: Unrecognized >>>
    \n"; } ##---------------------------------------------------------------------------## ## Default function returning message for content-types excluded. ## sub excludedPart { my($ctype) = $_[0]; "
    <<< $ctype: EXCLUDED >>>
    \n"; } ##---------------------------------------------------------------------------## ## Default function for unrecognizeable part in multipart/alternative. ## sub unrecognizedAltPart { warn "Warning: No recognizable part in multipart/alternative\n"; "
    <<< multipart/alternative: ". "No recognizable part >>>
    \n"; } ##---------------------------------------------------------------------------## ## Default function for beggining of embedded message ## (ie message/rfc822 or message/news). ## sub beginEmbeddedMesg { qq|
    --- Begin Message ---\n|; } ##---------------------------------------------------------------------------## ## Default function for end of embedded message ## (ie message/rfc822 or message/news). ## sub endEmbeddedMesg { qq|
    --- End Message ---
    \n|; } ##---------------------------------------------------------------------------## sub load_charset { require $MIMECharSetConvertersSrc{$_[0]} if defined($MIMECharSetConvertersSrc{$_[0]}) && $MIMECharSetConvertersSrc{$_[0]}; $MIMECharSetConverters{$_[0]}; } sub load_decoder { my $enc = lc shift; $enc =~ s/\s//; require $MIMEDecodersSrc{$enc} if defined($MIMEDecodersSrc{$enc}) && $MIMEDecodersSrc{$enc}; $MIMEDecoders{$enc}; } sub load_filter { require $MIMEFiltersSrc{$_[0]} if defined($MIMEFiltersSrc{$_[0]}) && $MIMEFiltersSrc{$_[0]}; $MIMEFilters{$_[0]}; } sub get_filter_args { my $args = ''; my $s; foreach $s (@_) { next unless defined $s; $args = $MIMEFiltersArgs{$s}; last if defined($args) && ($args ne ''); } $args; } sub load_textencoder { return undef unless $TextEncode; TRY: { if (!defined($TextEncoderFunc)) { last TRY; } if (defined(&$TextEncoderFunc)) { return $TextEncoderFunc; } if (!defined($TextEncoderSrc)) { last TRY; } require $TextEncoderSrc; if (defined(&$TextEncoderFunc)) { return $TextEncoderFunc; } } warn qq/Warning: Unable to load text encode for "$TextEncode"\n/; $TextEncode = undef; $TextEncoderFunc = undef; $TextEncoderSrc = undef; } ##---------------------------------------------------------------------------## ## extract_ctype() extracts the content-type specification from ## the beginning of given string. ## sub extract_ctype { if (!defined($_[0]) || (ref($_[0]) && ($_[0][0] !~ /\S/)) || ($_[0] !~ /\S/)) { return 'message/rfc822' if (defined($_[1]) && ($_[1] eq 'multipart/digest')); return 'text/plain'; } if (ref($_[0])) { $_[0][0] =~ m|^\s*([\w\-\./]+)|; return lc($1); } $_[0] =~ m|^\s*([\w\-\./]+)|; lc($1); } ##---------------------------------------------------------------------------## ## apply_base_url(): Convert a relative URL to a full URL with ## specific base; ## sub apply_base_url { my $b = shift; # Base URL my $u = shift; # URL to apply base to ## If no base, nothing to do return $u if !defined($b) || $b !~ /\S/; ## If absolute URL or scroll link; do nothing $u =~ s/^\s+//; if ($u =~ /^$UrlRxStr/o || $u =~ m/^#/) { return $u; } ## Check if base URL allows relative resolution my($host_part, $scheme); if ($b =~ s{^((https?|ftp|file|nfs|acap|tftp)://[\w\-:\d.\@\%=~&]+)/?}{}) { $host_part = $1; $scheme = lc $2; } else { warn qq/Warning: Invalid base url, "$b" to apply to "$u"\n/; return $u; } ## If "/---", just use hostname:port of base. if ($u =~ /^\//) { return $host_part . $u; } ## Clean up base URL SCHEME: { if ($scheme eq 'http' || $scheme eq 'https' || $scheme eq 'acap') { $b =~ s/\?.*$//; last SCHEME; } if ($scheme eq 'ftp') { $b =~ s/;type=.$//; last SCHEME; } if ($scheme eq 'tftp') { $b =~ s/;mode=\w+$//; last SCHEME; } } $b =~ s/\/$//; # strip any trailing '/' (we add it back later) ## "./---" or "../---": Need to remove and adjust base accordingly. my $cnt = 0; while ( $u =~ s|^(\.{1,2})/|| ) { ++$cnt if length($1) == 2; } if ($b eq '') { # base is just host return join('/', $host_part, $u); } if ($cnt > 0) { # trim path my @a = split(/\//, $b); if ($cnt <= scalar(@a)) { splice(@a, -$cnt); return join('/', $host_part, @a, $u); } # invalid relative path, tries to go past root return join('/', $host_part, $u); } return join('/', $host_part, $b, $u); } ##---------------------------------------------------------------------------## sub extract_charset { my $content = shift; # Content-type string of entity my $subtype = shift; # Text sub-type my $body = shift; # Reference to entity text my $charset = $TextDefCharset; if ($content =~ /\bcharset\s*=\s*([^\s;]+)/i) { $charset = lc $1; $charset =~ s/['";\s]//g; } # If HTML, check tag since it # can be different than what is specified in the entity header. if (($subtype eq 'html' || $subtype eq 'x-html') && ($$body =~ m/(]*>)/xi)) { my $meta = $1; if ($meta =~ m/\bcharset\s*=\s*['"]?([\w\.\-]+)/i) { $charset = lc $1; } } $charset = $MIMECharsetAliases{$charset} if $MIMECharsetAliases{$charset}; # If us-ascii, but 8-bit chars in body, we change to iso-8859-1 if ($charset eq 'us-ascii') { $charset = 'iso-8859-1' if $$body =~ /[\x80-\xFF]/; } $charset; } ##---------------------------------------------------------------------------## ## gen_full_part_number creates a full part number of an entity ## from the given entity header. ## sub gen_full_part_number { my $fields = shift; my @number = ( ); while (defined($fields->{'x-mha-parent-header'})) { unshift(@number, ($fields->{'x-mha-part-number'} || '1')); $fields = $fields->{'x-mha-parent-header'}; } if (!scalar(@number)) { return $fields->{'x-mha-part-number'} || '1'; } join('.', @number); } ##---------------------------------------------------------------------------## sub decode_1522_fields { my $fields = shift; my $encfunc = load_textencoder(); my $mode = defined($encfunc) ? TEXT_ENCODE : ($DecodeHeader ? JUST_DECODE : -1); if ($mode == -1) { return $fields; } my ($label, $value, $v); while (($label, $value) = each %$fields) { foreach $v (@$value) { $v = &MAILdecode_1522_str($v, $mode); } } $fields; } ##---------------------------------------------------------------------------## sub dump_header { my $fh = shift; my $fields = shift; my($key, $a, $value); foreach $key (sort keys %$fields) { $a = $fields->{$key}; if (ref($a)) { foreach $value (@$a) { print $fh "$key: $value\n"; } } else { print $fh "$key: $a\n"; } } } ##---------------------------------------------------------------------------## 1; # for require MHonArc-2014-05-05-snap/lib/mhtxtplain.pl0000644004705000001440000005207711507437070016666 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhtxtplain.pl,v 2.48 2010/12/31 20:34:00 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Library defines routine to filter text/plain body parts to HTML ## for MHonArc. ## Filter routine can be registered with the following: ## ## text/plain:m2h_text_plain'filter:mhtxtplain.pl ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1995-2005 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package m2h_text_plain; require 'readmail.pl'; sub Q_FIXED() { 0; } sub Q_SIMPLE() { 1; } sub Q_FANCY() { 2; } sub Q_FLOWED() { 3; } $UrlExp = $readmail::UrlRxStr . q/[^\s\(\)\|<>"'\0-\037]+/ . q/[^\.?!;,"'\|\[\]\(\)\s<>\0-\037]/; $HUrlExp = $readmail::UrlRxStr . q/(?:&(?![gl]t;)|[^\s\(\)\|<>"'\&\0-\037])+/ . q/[^\.?!;,"'\|\[\]\(\)\s<>\&\0-\037]/; $QuoteChars = '[>]'; $HQuoteChars = '>'; $StartFlowedQuote = '
    '; $EndFlowedQuote = "
    "; $StartFixedQuote = '
    ';
    $EndFixedQuote    = '
    '; ##---------------------------------------------------------------------------## ## Text/plain filter for mhonarc. The following filter arguments ## are recognized ($args): ## ## asis=set1:set2:... ## Colon separated lists of charsets to leave as-is. ## Only HTML special characters will be converted into ## entities. ## ## attachcheck Honor attachment disposition. By default, ## all text/plain data is displayed inline on ## the message page. If attachcheck is specified ## and Content-Disposition specifies the data as ## an attachment, the data is saved to a file ## with a link to it from the message page. ## ## disableflowed ## Ignore flowed formatting for message text ## denoted with flowed formatting. ## ## fancyquote Highlight quoted text with vertical bar in left ## margin. ## ## inlineexts="ext1,ext2,..." ## A comma separated list of message specified filename ## extensions to treat as inline data. ## Applicable only when uudecode options specified. ## ## htmlcheck Check if message is actually an HTML message ## (to get around abhorrent MUAs). The message ## is treated as HTML if the first non-whitespace ## data looks like the start of an HTML document. ## ## keepspace Preserve whitespace if nonfixed ## ## link="scheme1,scheme2,..." ## A comma separate list of URL schemes to hyperlink. ## Only URL with the given schemes will be linked. ## ## nolink="scheme1,scheme2,..." ## A comma separate list of URL schemes to not ## hyperlink. URLs with the given scheme will not ## converted into hyperlinks. ## ## nourl Do not hyperlink URLs. ## ## nonfixed Use normal typeface ## ## maxwidth=# Set the maximum width of lines. Lines exceeding ## the maxwidth will be broken up across multiple lines. ## ## quote Italicize quoted message text ## ## quoteclass CSS classname for quoted text in flowed data or ## if fancyquote specified. Overrides builtin style. ## ## subdir Place derived files in a subdirectory (only ## applicable if uudecode is specified). ## ## target=name Set TARGET attribute for links if converting URLs ## to links. Defaults to _top. ## ## usename Use filename specified in uuencoded data when ## converting uuencoded data. This option is only ## applicable of uudecode is specified. ## ## uudecode Decoded any embedded uuencoded data. ## ## All arguments should be separated by at least one space ## sub filter { my($fields, $data, $isdecode, $args) = @_; local($_); ## Parse arguments $args = "" unless defined($args); ## Check if content-disposition should be checked if ($args =~ /\battachcheck\b/i) { my($disp, $nameparm, $raw) = readmail::MAILhead_get_disposition($fields); if ($disp =~ /\battachment\b/i) { require 'mhexternal.pl'; return (m2h_external::filter( $fields, $data, $isdecode, readmail::get_filter_args('m2h_external::filter'))); } } ## Check if decoding uuencoded data. The implementation chosen here ## for decoding uuencoded data was done so when uudecode is not ## specified, there is no extra overhead (besides the $args check for ## uudecode). However, when uudecode is specified, more overhead may ## exist over other potential implementations. ## I.e. We only try to penalize performance when uudecode is specified. if ($args =~ s/\buudecode\b//ig) { # $args has uudecode stripped out for recursive calls my $subdir = $args =~ /\bsubdir\b/i; my $atdir = $subdir ? $mhonarc::MsgPrefix.$mhonarc::MHAmsgnum : ""; # Make sure we have needed routines my $decoder = readmail::load_decoder("uuencode"); if (!defined($decoder) || !defined(&$decoder)) { require 'base64.pl'; $decoder = \&base64::uudecode; } require 'mhmimetypes.pl'; # Grab any filename extensions that imply inlining my $inlineexts = ''; if ($args =~ /\binlineexts=(\S+)/) { $inlineexts = ',' . lc($1) . ','; $inlineexts =~ s/['"]//g; } my $usename = $args =~ /\busename\b/; my($pdata); my($inext, $uddata, $file, $urlfile); my @files = ( ); my $ret = ""; my $i = 0; # => to make parsing easier $$data =~ s/\r\n/\n/g; # Split on uuencoded data. For text portions, recursively call # filter to convert text data: makes it easier to handle all # the various formatting options. foreach $pdata (split(/^(begin\s+\d\d\d\s+[^\n]+\n[!-M].*?\nend\n)/sm, $$data)) { if ($i % 2) { # uuencoded data # extract filename extension ($file) = $pdata =~ /^begin\s+\d\d\d\s+([^\n]+)/; if ($file =~ /\.(\w+)$/) { $inext = $1; } else { $inext = ""; } # decode data $uddata = &$decoder($pdata); # save to file if (readmail::MAILis_excluded('application/octet-stream')) { $ret .= &$readmail::ExcludedPartFunc($file); } elsif ($file =~ /\.s?html?$/i) { my @ha = do_html($fields, \$uddata, 1, $args); $ret .= shift(@ha); push(@files, @ha); } else { push(@files, mhonarc::write_attachment( 'application/octet-stream', \$uddata, { '-dirpath' => $atdir, '-filename' => ($usename?$file:''), '-ext' => $inext })); $urlfile = mhonarc::htmlize($files[$#files]); # create link to file if (index($inlineexts, ','.lc($inext).',') >= $[) { $ret .= qq|| . qq|
    \n|; } else { $ret .= qq|| . mhonarc::htmlize($file) . qq|
    \n|; } } } elsif ($pdata =~ /\S/) { # plain text my(@subret) = filter($fields, \$pdata, $isdecode, $args); $ret .= shift @subret; push(@files, @subret); } ++$i; } ## Done with uudecode $ret = ' ' if $ret eq ''; return ($ret, @files); } ## Check for HTML data if requested if ($args =~ s/\bhtmlcheck\b//i && $$data =~ /\A\s*<(?:html\b|x-html\b|!doctype\s+html\s)/i) { return do_html($fields, $data, $isdecode, $args); } my($charset, $nourl, $igncharset, $nonfixed, $keepspace, $maxwidth, $target, $xhtml); my(%asis) = ( ); $nourl = ($mhonarc::NOURL || ($args =~ /\bnourl\b/i)); $nonfixed = ($args =~ /\bnonfixed\b/i); $keepspace = ($args =~ /\bkeepspace\b/i); if ($args =~ /\bmaxwidth=(\d+)/i) { $maxwidth = $1; } else { $maxwidth = 0; } $target = ""; if ($args =~ /\btarget="([^"]+)"/i) { $target = $1; } elsif ($args =~ /\btarget=(\S+)/i) { $target = $1; } $target =~ s/['"]//g; if ($target) { $target = qq/target="$target"/; } ## Grab charset parameter $charset = $fields->{'x-mha-charset'}; ## Grab format parameter (if defined) my $textformat = 'fixed'; if ( ($args !~ /\bdisableflowed\b/i) && (defined($fields->{'content-type'}[0])) && ($fields->{'content-type'}[0] =~ /\bformat\s*=\s*([^\s;]+)/i) ) { $textformat = lc $1; $textformat =~ s/['";\s]//g; } my $startq = ""; my $endq = ""; my $startfixq = ""; my $endfixq = ""; my $css_class = ""; if ($args =~ /\bquoteclass=(\S+)/i) { $css_class = $1; $css_class =~ s/[^\w\.\-]//g; } my $quote_style = Q_FIXED; my $fancyquote = $args =~ /\bfancyquote\b/i; if ($fancyquote || ($textformat eq 'flowed')) { $quote_style = ($textformat eq 'flowed') ? Q_FLOWED : Q_FANCY; $startq = ($css_class) ? qq|
    | : $StartFlowedQuote; $endq = $EndFlowedQuote; if (!$nonfixed) { $startfixq = $StartFixedQuote; $endfixq = $EndFixedQuote; } } elsif ($args =~ /\bquote\b/i) { $quote_style = Q_SIMPLE; } ## Check if certain charsets should be left alone if ($args =~ /\basis=(\S+)/i) { my $t = lc $1; $t =~ s/['"]//g; local($_); foreach (split(':', $t)) { $asis{$_} = 1; } } ## Check MIMECharSetConverters if charset should be left alone my($charcnv, $real_charset_name) = readmail::MAILload_charset_converter($charset); if (defined($charcnv) && $charcnv eq '-decode-') { $asis{$charset} = 1; } ## Fixup any EOL mess $$data =~ s/\r?\n/\n/g; $$data =~ s/\r/\n/g; ## Check if max-width set if (($maxwidth > 0) && ($quote_style != Q_FLOWED)) { break_lines($data, $charset, $maxwidth); } ## Convert data according to charset if (!$asis{$charset}) { # Registered in CHARSETCONVERTERS if (defined($charcnv) && defined(&$charcnv)) { $$data = &$charcnv($$data, $real_charset_name); # Other } else { warn qq/\n/, qq/Warning: Unrecognized character set: $charset\n/, qq/ Message-Id: <$mhonarc::MHAmsgid>\n/, qq/ Message Subject: /, $fields->{'x-mha-subject'}, qq/\n/, qq/ Message Number: $mhonarc::MHAmsgnum\n/; mhonarc::htmlize($data); } } else { mhonarc::htmlize($data); } # XXX: Initial algorithms for flowed and fancy processing # used the s/// operator. However, for large messages, this could # cause perl to crash (seg fault) (verified with perl v5.6.1 and # v5.8.0). Hence, code changed to use m//g and substr(), which # appears to avoid perl crashing (ehood, Dec 2002). # # To fix bug #12512, flowed code changed to process each quote # chunk line-by-line instead of as one entity. The reason is # that RFC-2646 does not define a "paragraph" by two consective # CRLF sequences but by flowed vs non-flowed, which can occur # with no blank lines in between (ehood, May 2005). # # Initial code for format=flowed contributed by Ken Hirsch (May 2002), # but it has drastically changes since then. # # text/plain; format=flowed defined in RFC-2646 if ($quote_style == Q_FLOWED) { my($chunk, $qd, $offset); my $currdepth = 0; my $ret=''; $$data =~ s!^\n!!mg; while (length($$data) > 0) { # Divide message into chunks by "quote-depth", # which is the number of leading > signs ($qd) = $$data =~ /^((?:>)*)/; $chunk = ''; pos($$data) = 0; if ($qd eq '') { # Non-quoted text: We special case this since we can # use a fixed pattern to grab the chunk. if ($$data =~ /^(?=>)/mgo) { $offset = pos($$data); $chunk = substr($$data, 0, $offset); substr($$data, 0, $offset) = ''; } else { $chunk = $$data; $$data = ''; } $chunk =~ s/^[ ]//mg; # remove space-stuffing } else { # Quoted text: It would be nice to not have # to compile a new pattern each time. if ($$data =~ /^(?!$qd(?!>))/mg) { $offset = pos($$data); $chunk = substr($$data, 0, $offset); substr($$data, 0, $offset) = ''; } else { $chunk = $$data; $$data = ''; } $chunk =~ s/^$qd ?//mg; # remove quote indi and space-stuffing } $chunk =~ s/^-- $/--/mg; # special case for '-- ' # Parse chunk line at a time to determine how it is rendered. my $new_chunk = ""; my $line = ""; my $inflow = 0; my $infixed = 0; FLOWED_LINE: while ($chunk ne "") { # Grab next line: Pattern should always match. $chunk =~ s/(\A.*(?:\n|\Z))//; $line = $1; if ($line =~ /[ ]\n\Z/) { # Have a flowed line $inflow = 1; if ($infixed) { $new_chunk .= $endfixq; $infixed = 0; } if ($nonfixed) { $new_chunk .= $line; } else { $new_chunk .= '' . $line . ''; } next FLOWED_LINE; } if ($inflow) { # Last line of flowed text may not have SP CRLF if ($nonfixed) { $new_chunk .= $line . "
    "; } else { $new_chunk .= '' . $line . ''; } $inflow = 0; next FLOWED_LINE; } # Fixed line if (!$infixed) { # Begin fixed rendering if at start $new_chunk .= $startfixq . "\n"; $infixed = 1; $inflow = 0; } if ($maxwidth > 0) { # Fixed lines should be clipped to specified max. $line = break_lines($line, $charset, $maxwidth, 1); } if ($nonfixed) { # Proportional font desired $line =~ s/(\n)/
    $1/g; if ($keepspace) { $line =~ s/^(.*)$/&preserve_space($1)/gem; } } $new_chunk .= $line; } # End: FLOWED_LINE: while() # Make sure to close tags if ($infixed) { $new_chunk .= $endfixq; } # Add quote markup my $newdepth = length($qd)/length('>'); if ($currdepth < $newdepth) { $new_chunk = $startq x ($newdepth - $currdepth) . $new_chunk; } elsif ($currdepth > $newdepth) { $new_chunk = $endq x ($currdepth - $newdepth) . $new_chunk; } $currdepth = $newdepth; $ret .= $new_chunk; } if ($currdepth > 0) { $ret .= $endq x $currdepth; } $$data = $ret; } elsif ($quote_style == Q_FANCY) { # Fancy quoting supports alternative quote characters besides # '>' as defined by ${HQuoteChars}. my($chunk, $qd, $qd_re, $offset); my $currdepth = 0; my $ret=''; # Compress '>'s to have no spacing, makes latter patterns # simplier. $$data =~ s/(?:^[ ]?|\G)(${HQuoteChars})[ ]?/$1/gmo; while (length($$data) > 0) { ($qd) = $$data =~ /\A((?:${HQuoteChars})*)/o; $chunk = ''; pos($$data) = 0; if ($qd eq '') { # Non-quoted text: We special case this since we can # use a fixed pattern to grab the chunk. if ($$data =~ /^(?=${HQuoteChars})/mgo) { $offset = pos($$data); $chunk = substr($$data, 0, $offset); substr($$data, 0, $offset) = ''; } else { $chunk = $$data; $$data = ''; } } else { # Quoted text: Make sure any regex specials are escaped # before using in pattern. It would be nice to not have # to compile a new pattern each time. $qd_re = "\Q$qd\E"; if ($$data =~ /^(?!$qd_re(?!${HQuoteChars}))/mg) { $offset = pos($$data); $chunk = substr($$data, 0, $offset); substr($$data, 0, $offset) = ''; } else { $chunk = $$data; $$data = ''; } $chunk =~ s/^$qd_re//mg; } if ($nonfixed) { $chunk =~ s/(\n)/
    $1/g; if ($keepspace) { $chunk =~ s/^(.*)$/&preserve_space($1)/gem; } } else { # GUI browsers ignore first \n after
    , so we double it
    		# to make sure a blank line is rendered
    		$chunk =~ s/\A\n/\n\n/;
    		$chunk = $startfixq . $chunk . $endfixq;
    	    }
    
    	    $qd =~ s/\s+//g;
    	    my $newdepth = html_length($qd);
    	    if ($currdepth < $newdepth) {
    		$chunk = $startq x ($newdepth - $currdepth) . $chunk;
    	    } elsif ($currdepth > $newdepth) {
    		$chunk = $endq   x ($currdepth - $newdepth) . $chunk;
    	    }
    	    $currdepth = $newdepth;
    	    $ret .= $chunk;
    	}
    	if ($currdepth > 0) {
    	    $ret .= $endq x $currdepth;
    	}
    
    	$$data = $ret;
    
        } else {
    	## Check for simple quoting
    	if ($quote_style == Q_SIMPLE) {
    	    $$data =~ s@^( ?${HQuoteChars})(.*)$@$1$2@gom;
    	}
    
    	## Check if using nonfixed font
    	if ($nonfixed) {
    	    $$data =~ s/(\r?\n)/
    $1/g; if ($keepspace) { $$data =~ s/^(.*)$/&preserve_space($1)/gem; } } else { $$data = '
    ' . $$data . '
    '; } } ## Convert URLs to hyperlinks if (!$nourl) { my $nolink = undef; my $link = undef; if ($args =~ /\bnolink\s*=(\S+)/) { $nolink = lc(','.$1.','); $nolink =~ s/['"]//g; } if ($args =~ /\blink\s*=(\S+)/) { $link = lc(','.$1.','); $link =~ s/['"]//g; } $$data =~ s{ ($HUrlExp) }{ if (!defined($nolink) && !defined($link)) { join('', '', $1, ''); } else { my $url_match = $1; my $scheme; $url_match =~ /^([^:]+)/; $scheme = ',' . lc($1) . ','; if ((defined($nolink) && (index($nolink, $scheme) >= $[)) || (defined($link) && (index($link, $scheme) < $[))) { $url_match; } else { join('', '', $url_match, ''); } } }gxeso; } $$data = ' ' if $$data eq ''; ($$data); } ##---------------------------------------------------------------------------## sub do_html { my($fields, $data, $isdecode, $args) = @_; if (readmail::MAILis_excluded('text/html')) { return (&$readmail::ExcludedPartFunc('text/plain HTML')); } my $html_filter = readmail::load_filter('text/html'); if (defined($html_filter) && defined(&$html_filter)) { return (&$html_filter($fields, $data, $isdecode, readmail::get_filter_args( 'text/html', 'text/*', $html_filter))); } else { require 'mhtxthtml.pl'; return (m2h_text_html::filter($fields, $data, $isdecode, readmail::get_filter_args( 'text/html', 'text/*', 'm2h_text_html::filter'))); } } ##---------------------------------------------------------------------------## sub preserve_space { my($str) = shift; 1 while $str =~ s/^([^\t]*)(\t+)/$1 . ' ' x (length($2) * 8 - length($1) % 8)/e; $str =~ s/ /\ /g; $str; } ##---------------------------------------------------------------------------## sub break_lines { my $data_in = shift; my $charset = shift; my $maxwidth = shift; my $is_html = shift; # hack for flowed processing return unless $maxwidth > 0; my $data = ref($data_in) ? $data_in : \$data_in; my $do_encode = 0; eval { require Encode; # Only translate to Perl's utf-8 if not an 8-bit charset. # No harm if done for 8-bit, but try to avoid unnecesary # overhead. Translation done so line breaking is done # on characters, not octets. if ($charset !~ /us-ascii/i && $charset !~ /8859/i && !Encode::is_utf8($$data)) { $$data = Encode::decode($charset, $$data); $do_encode = 1; } }; $$data =~ s{ ^(.*)$ }{ _break_line($1, ($is_html ? $maxwidth+(length($1)-html_length($1)) : $maxwidth)) }gemx; if ($do_encode) { # Translate back to current encoding. $$data = Encode::encode($charset, $$data); } $$data; } sub _break_line { my($str) = shift; my($width) = shift; my($q, $new) = ('', ''); my($try, $trywidth, $len); ## Translate tabs to spaces 1 while $str =~ s/^([^\t]*)(\t+)/$1 . ' ' x (length($2) * 8 - length($1) % 8)/e; ## Do nothing if str <= width return $str if length($str) <= $width; ## See if str begins with a quote char if ($str =~ s/^([ ]?(?:$QuoteChars[ ]?)+)//o) { $q = $1; if (length($q) >= $width) { # too many quote chars, so treat line as-is $str = $q . $str; } else { $width -= length($q); } } ## Create new string by breaking up str while ($str ne "") { # If $str less than width, break out if (length($str) <= $width) { $new .= $q . $str; last; } # handle case where no-whitespace line larger than width if (($str =~ /^(\S+)/) && (($len = length($1)) >= $width)) { $new .= $q . $1; substr($str, 0, $len) = ""; next; } # Break string at whitespace $try = ''; $trywidth = $width; $try = substr($str, 0, $trywidth); if ($try =~ /(\S+)$/) { $trywidth -= length($1); $new .= $q . substr($str, 0, $trywidth); } else { $new .= $q . $try; } substr($str, 0, $trywidth) = ''; } continue { $new .= "\n" if $str; } $new; } sub html_length { local $_; my $len = length($_[0]); foreach ($_[0] =~ /(\&[^;]+);/g) { $len -= length($_); } $len; } ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/lib/mhrcvars.pl0000644004705000001440000006655711177375157016345 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhrcvars.pl,v 2.29 2009/05/03 20:11:27 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Defines routine for expanding resource variables. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1996-2001 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mhonarc; ## Mapping of old resource variables to current versions. my %old2new = ( 'FIRSTPG' => [ 'PG', 'FIRST' ], 'LASTPG' => [ 'PG', 'LAST' ], 'NEXTBUTTON' => [ 'BUTTON', 'NEXT' ], 'NEXTFROM' => [ 'FROM', 'NEXT' ], 'NEXTFROMADDR' => [ 'FROMADDR', 'NEXT' ], 'NEXTFROMNAME' => [ 'FROMNAME', 'NEXT' ], 'NEXTLINK' => [ 'LINK', 'NEXT' ], 'NEXTMSG' => [ 'MSG', 'NEXT' ], 'NEXTMSGNUM' => [ 'MSGNUM', 'NEXT' ], 'NEXTPG' => [ 'PG', 'NEXT' ], 'NEXTPGLINK' => [ 'PGLINK', 'NEXT' ], 'NEXTSUBJECT' => [ 'SUBJECT', 'NEXT' ], 'PREVBUTTON' => [ 'BUTTON', 'PREV' ], 'PREVFROM' => [ 'FROM', 'PREV' ], 'PREVFROMADDR' => [ 'FROMADDR', 'PREV' ], 'PREVFROMNAME' => [ 'FROMNAME', 'PREV' ], 'PREVLINK' => [ 'LINK', 'PREV' ], 'PREVMSG' => [ 'MSG', 'PREV' ], 'PREVMSGNUM' => [ 'MSGNUM', 'PREV' ], 'PREVPGLINK' => [ 'PGLINK', 'PREV' ], 'PREVPG' => [ 'PG', 'PREV' ], 'PREVSUBJECT' => [ 'SUBJECT', 'PREV' ], 'TFIRSTPG' => [ 'PG', 'TFIRST' ], 'TLASTPG' => [ 'PG', 'TLAST' ], 'TNEXTBUTTON' => [ 'BUTTON', 'TNEXT' ], 'TNEXTFROM' => [ 'FROM', 'TNEXT' ], 'TNEXTFROMADDR' => [ 'FROMADDR', 'TNEXT' ], 'TNEXTFROMNAME' => [ 'FROMNAME', 'TNEXT' ], 'TNEXTLINK' => [ 'LINK', 'TNEXT' ], 'TNEXTMSG' => [ 'MSG', 'TNEXT' ], 'TNEXTMSGNUM' => [ 'MSGNUM', 'TNEXT' ], 'TNEXTPGLINK' => [ 'PGLINK', 'TNEXT' ], 'TNEXTPG' => [ 'PG', 'TNEXT' ], 'TNEXTSUBJECT' => [ 'SUBJECT', 'TNEXT' ], 'TPREVBUTTON' => [ 'BUTTON', 'TPREV' ], 'TPREVFROM' => [ 'FROM', 'TPREV' ], 'TPREVFROMADDR' => [ 'FROMADDR', 'TPREV' ], 'TPREVFROMNAME' => [ 'FROMNAME', 'TPREV' ], 'TPREVLINK' => [ 'LINK', 'TPREV' ], 'TPREVMSG' => [ 'MSG', 'TPREV' ], 'TPREVMSGNUM' => [ 'MSGNUM', 'TPREV' ], 'TPREVPGLINK' => [ 'PGLINK', 'TPREV' ], 'TPREVPG' => [ 'PG', 'TPREV' ], 'TPREVSUBJECT' => [ 'SUBJECT', 'TPREV' ], ); ##--------------------------------------------------------------------------- ## replace_li_var() is used to substitute vars to current ## values. This routine relies on some variables being set by the ## calling routine or as globals. ## sub replace_li_var { my($val, $index) = ($_[0], $_[1]); my($var,$len,$canclip,$raw,$isurl,$tmp,$ret) = ('',0,0,0,0,'',''); my($jstr) = (0); my($expand) = (0); my($n) = (0); my($lref, $key, $pos); my($arg, $opt) = ("", ""); my $isaddr = 0; my $mailto = 0; ## Get variable argument string if ($val =~ s/\(([^()]*)\)//) { $arg = $1; } ## Get length specifier (if defined) ($var, $len) = split(/:/, $val, 2); $len = -1 unless defined $len; ## Check for old resource variables and map to new ($var, $arg) = @{$old2new{$var}} if defined($old2new{$var}); ## Check if variable in a URL string $isurl = 1 if ($len =~ s/U//g); ## Check if variable in a JavaScript string $jstr = 1 if ($len =~ s/J//g); ## Check if variable in a JavaScript string $mailto = 1 if ($len =~ s/M//g); ## Do variable replacement REPLACESW: { ## Invoke callback if defined if (defined($CBRcVarExpand) && defined(&$CBRcVarExpand)) { ($tmp, $expand, $canclip) = &$CBRcVarExpand($index, $var, $arg); last REPLACESW if defined($tmp); } ## -------------------------------------- ## ## Message information resource variables ## ## -------------------------------------- ## if ($var eq 'DATE') { ## Message "Date:" ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = defined($key) ? $Date{$key} : ""; last REPLACESW; } if ($var eq 'DDMMYY' || $var eq 'DDMMYYYY' || $var eq 'MMDDYY' || $var eq 'MMDDYYYY' || $var eq 'YYMMDD' || $var eq 'YYYYMMDD') { ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = defined($key) ? &time2mmddyy((split(/$X/o, $key))[0], lc $var) : ""; last REPLACESW; } if ($var eq 'FROM') { ## Message "From:" $canclip = 1; $raw = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = defined($key) ? $From{$key} : '(nil)'; $isaddr = 1; last REPLACESW; } if ($var eq 'FROMADDR') { ## Message from mail address $canclip = 1; $raw = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (!defined($key)) { $tmp = '(nil)'; last REPLACESW; } my $caddr = $FromAddr{$key}; $tmp = defined($caddr) ? $caddr : extract_email_address($From{$key}); $isaddr = 1; last REPLACESW; } if ($var eq 'FROMNAME') { ## Message from mail name $canclip = 1; $raw = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (!defined($key)) { $tmp = '(nil)'; last REPLACESW; } my $cname = $FromName{$key}; $tmp = defined($cname) ? $cname : extract_email_name($From{$key}); if ($SpamMode) { $tmp =~ s/($AddrExp)/rewrite_raw_address($1)/geo; } else { $isaddr = 1; } last REPLACESW; } my($cnd1, $cnd2) = (0,0); if ( ($cnd1 = ($var eq 'FROMADDRNAME')) || ($cnd2 = ($var eq 'FROMADDRDOMAIN')) ) { ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (!defined($key)) { $tmp = ""; last REPLACESW; } my $caddr = $FromAddr{$key}; my @a; if (defined($caddr)) { @a = split(/@/, $caddr, 2); } else { @a = split(/@/, extract_email_address($From{$key}), 2); } if ($cnd1) { $tmp = $a[0]; last REPLACESW; } $tmp = defined($a[1]) ? $a[1] : ""; last REPLACESW; } if ($var eq 'ICON') { ## Message icon ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (!defined($key)) { $tmp = ""; last REPLACESW; } my($iconurl, $iw, $ih) = mhonarc::get_icon_url($ContentType{$key}); my $alttext = $iconurl ? $ContentType{$key} : 'unknown'; $tmp = qq|[$alttext]{$opt})) { last HFIELD; } if ($opt eq 'subject') { $tmp = $Subject{$key}; $tmp = $NoSubjectTxt if $tmp eq ''; last HFIELD; } $tmp = ''; } if (!$HFieldsAsIsList{$opt}) { $isaddr = 1; } last REPLACESW; } if ($var eq 'MSGGMTDATE') { ## Message GMT date ($lref, $key, $pos, $opt) = compute_msg_pos($index, $var, $arg); $tmp = &time2str($opt || $MsgGMTDateFmt, $Time{$key}, 0); last REPLACESW; } if ($var eq 'MSGID') { ## Message-ID ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = defined($key) ? $Index2MsgId{$key} : ""; last REPLACESW; } if ($var eq 'MSGLOCALDATE') { ## Message local date ($lref, $key, $pos, $opt) = compute_msg_pos($index, $var, $arg); $tmp = &time2str($opt || $MsgLocalDateFmt, $Time{$key}, 1); last REPLACESW; } if ($var eq 'MSGNUM') { ## Message number ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = defined($key) ? &fmt_msgnum($IndexNum{$key}) : ""; last REPLACESW; } if ($var eq 'MSGTORDNUM') { ## Message ordinal num in cur thread # Some form of optimization should be done here since # computation can degrade to n^2 (where n is size of thread) # if variable is referenced for each message on thread index # page. ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg, 1); $tmp = 1; my $level = $ThreadLevel{$key}; for (--$pos ; ($level > 0) && ($pos >= 0); --$pos, ++$tmp ) { $level = $ThreadLevel{$TListOrder[$pos]}; } last REPLACESW; } if ($var eq 'NOTE') { ## Annotation template markup $expand = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = note_exists($key) ? $NOTE : $NOTEIA; last REPLACESW; } if ($var eq 'NOTEICON') { ## Annotation ICON (HTML markup) $expand = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = note_exists($key) ? $NOTEICON : $NOTEICONIA; last REPLACESW; } if ($var eq 'NOTETEXT') { ## Annotation text ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = get_note($key); last REPLACESW; } if ($var eq 'NUMFOLUP') { ## Number of explicit follow-ups ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = defined($key) ? $FolCnt{$key} : ""; last REPLACESW; } if ($var eq 'ORDNUM') { ## Sort order number of message ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = defined($key) ? $pos+1 : -1; last REPLACESW; } if ($var eq 'SUBJECT') { ## Message subject $canclip = 1; $raw = 1; $isurl = 0; $isaddr = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (defined($key)) { $tmp = $Subject{$key}; $tmp = $NoSubjectTxt if $tmp eq ""; } else { $tmp = ""; } last REPLACESW; } if ($var eq 'SUBJECTNA') { ## Message subject (not linked) $canclip = 1; $raw = 1; $isaddr = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (defined($key)) { $tmp = $Subject{$key}; $tmp = $NoSubjectTxt if $tmp eq ""; } else { $tmp = ""; } last REPLACESW; } if ($var eq 'TLEVEL') { ## Thread level ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); $tmp = $ThreadLevel{$key}; last REPLACESW; } ## ------------------------------------- ## ## Message navigation resource variables ## ## ------------------------------------- ## if ($var eq 'BUTTON') { $expand = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); SW: { if ($arg eq 'NEXT') { $tmp = defined($key) ? $NEXTBUTTON : $NEXTBUTTONIA; last SW; } if ($arg eq 'PREV') { $tmp = defined($key) ? $PREVBUTTON : $PREVBUTTONIA; last SW; } if ($arg eq 'TNEXT') { $tmp = defined($key) ? $TNEXTBUTTON : $TNEXTBUTTONIA; last SW; } if ($arg eq 'TPREV') { $tmp = defined($key) ? $TPREVBUTTON : $TPREVBUTTONIA; last SW; } if ($arg eq 'TNEXTIN') { $tmp = defined($key) ? $TNEXTINBUTTON : $TNEXTINBUTTONIA; last SW; } if ($arg eq 'TPREVIN') { $tmp = defined($key) ? $TPREVINBUTTON : $TPREVINBUTTONIA; last SW; } if ($arg eq 'TNEXTTOP') { $tmp = defined($key) ? $TNEXTTOPBUTTON : $TNEXTTOPBUTTONIA; last SW; } if ($arg eq 'TPREVTOP') { $tmp = defined($key) ? $TPREVTOPBUTTON : $TPREVTOPBUTTONIA; last SW; } if ($arg eq 'TTOP') { $tmp = ($key ne $index) ? $TTOPBUTTON : $TTOPBUTTONIA; last SW; } if ($arg eq 'TEND') { $tmp = ($key ne $index) ? $TENDBUTTON : $TENDBUTTONIA; last SW; } } last REPLACESW; } if ($var eq 'LINK') { $expand = 1; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); SW: { if ($arg eq 'NEXT') { $tmp = defined($key) ? $NEXTLINK : $NEXTLINKIA; last SW; } if ($arg eq 'PREV') { $tmp = defined($key) ? $PREVLINK : $PREVLINKIA; last SW; } if ($arg eq 'TNEXT') { $tmp = defined($key) ? $TNEXTLINK : $TNEXTLINKIA; last SW; } if ($arg eq 'TPREV') { $tmp = defined($key) ? $TPREVLINK : $TPREVLINKIA; last SW; } if ($arg eq 'TNEXTIN') { $tmp = defined($key) ? $TNEXTINLINK : $TNEXTINLINKIA; last SW; } if ($arg eq 'TPREVIN') { $tmp = defined($key) ? $TPREVINLINK : $TPREVINLINKIA; last SW; } if ($arg eq 'TNEXTTOP') { $tmp = defined($key) ? $TNEXTTOPLINK : $TNEXTTOPLINKIA; last SW; } if ($arg eq 'TPREVTOP') { $tmp = defined($key) ? $TPREVTOPLINK : $TPREVTOPLINKIA; last SW; } if ($arg eq 'TTOP') { $tmp = ($key ne $index) ? $TTOPLINK : $TTOPLINKIA; last SW; } if ($arg eq 'TEND') { $tmp = ($key ne $index) ? $TENDLINK : $TENDLINKIA; last SW; } } last REPLACESW; } if ($var eq 'TSLICE') { my($bcnt, $acnt, $inclusive); if ($arg) { ($bcnt, $acnt, $inclusive) = split(/[;:]/, $arg); $bcnt = $TSliceNBefore if (!defined($bcnt) || $bcnt !~ /^\d+$/); $acnt = $TSliceNAfter if (!defined($acnt) || $acnt !~ /^\d+$/); $inclusive = $TSliceInclusive if (!defined($inclusive)); } else { $bcnt = $TSliceNBefore; $acnt = $TSliceNAfter; $inclusive = $TSliceInclusive; } $tmp = &make_thread_slice($index, $bcnt, $acnt, $inclusive) if ($bcnt != 0 || $acnt != 0); last REPLACESW; } ## -------------------------------- ## ## Index related resource variables ## ## -------------------------------- ## if ($var eq 'A_ATTR') { ## Anchor attrs to link to message $isurl = 0; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (!defined($key)) { $tmp = ""; last REPLACESW; } $tmp = qq/name="/ . &fmt_msgnum($IndexNum{$key}) . qq/" href="/ . &msgnum_filename($IndexNum{$key}) . qq/"/; last REPLACESW; } if ($var eq 'A_NAME') { ## Anchor name for message position $isurl = 0; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (!defined($key)) { $tmp = ""; last REPLACESW; } $tmp = qq/name="/ . &fmt_msgnum($IndexNum{$key}) . qq/"/; last REPLACESW; } if ($var eq 'A_HREF') { ## Anchor href to link to message $isurl = 0; ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); if (!defined($key)) { $tmp = ""; last REPLACESW; } $tmp = qq/href="/ . &msgnum_filename($IndexNum{$key}) . qq/"/; last REPLACESW; } if ($var eq 'IDXFNAME') { ## Filename of index page if ($MULTIIDX && (($n = int($Index2MLoc{$index}/$IDXSIZE)+1) > 1) && (($MAXPGS <= 0) || ($n <= $MAXPGS))) { $tmp = sprintf("%s%d.$HtmlExt", $IDXPREFIX, $index ne '' ? $n : 1); } else { $tmp = $IDXNAME; } $tmp .= ".gz" if $GzipLinks; last REPLACESW; } if ($var eq 'IDXLABEL') { ## Label for main index $tmp = $IDXLABEL; last REPLACESW; } if ($var eq 'IDXSIZE') { ## Index page size $tmp = $IDXSIZE; last REPLACESW; } if ($var eq 'IDXTITLE') { ## Main index title $canclip = 1; $expand = 1; $tmp = $TITLE; last REPLACESW; } if ($var eq 'NUMOFIDXMSG') { ## Number of items on the index page $tmp = $PageSize; last REPLACESW; } if ($var eq 'NUMOFMSG') { ## Total number of messages $tmp = $NumOfMsgs; last REPLACESW; } if ($var eq 'SORTTYPE') { ## Sort type of index SORTTYPE: { if ($NOSORT) { $tmp = 'Number'; last SORTTYPE; } if ($AUTHSORT) { $tmp = 'Author'; last SORTTYPE; } if ($SUBSORT) { $tmp = 'Subject'; last SORTTYPE; } $tmp = 'Date'; last SORTTYPE; } last REPLACESW; } if ($var eq 'TIDXFNAME') { if ($MULTIIDX && (($n = int($Index2TLoc{$index}/$IDXSIZE)+1) > 1) && (($MAXPGS <= 0) || ($n <= $MAXPGS))) { $tmp = sprintf("%s%d.$HtmlExt", $TIDXPREFIX, $index ne '' ? $n : 1); } else { $tmp = $TIDXNAME; } $tmp .= ".gz" if $GzipLinks; last REPLACESW; } if ($var eq 'TIDXLABEL') { $tmp = $TIDXLABEL; last REPLACESW; } if ($var eq 'TIDXTITLE') { $canclip = 1; $expand = 1; $tmp = $TTITLE; last REPLACESW; } if ($var eq 'TSORTTYPE') { TSORTTYPE: { if ($TNOSORT) { $tmp = 'Number'; last TSORTTYPE; } if ($TSUBSORT) { $tmp = 'Subject'; last TSORTTYPE; } $tmp = 'Date'; last TSORTTYPE; } last REPLACESW; } if ($var eq 'PGLINK') { $expand = 1; SW: { if ($arg eq 'NEXT') { $tmp = $PageNum < $NumOfPrintedPages ? $NEXTPGLINK : $NEXTPGLINKIA; last SW; } if ($arg eq 'PREV') { $tmp = $PageNum > 1 ? $PREVPGLINK : $PREVPGLINKIA; last SW; } if ($arg eq 'TNEXT') { $tmp = $PageNum < $NumOfPrintedPages ? $TNEXTPGLINK : $TNEXTPGLINKIA; last SW; } if ($arg eq 'TPREV') { $tmp = $PageNum > 1 ? $TPREVPGLINK : $TPREVPGLINKIA; last SW; } if ($arg eq 'FIRST') { $tmp = $FIRSTPGLINK; last SW; } if ($arg eq 'LAST') { $tmp = $LASTPGLINK; last SW; } if ($arg eq 'TFIRST') { $tmp = $TFIRSTPGLINK; last SW; } if ($arg eq 'TLAST') { $tmp = $TLASTPGLINK; last SW; } } last REPLACESW; } if ($var eq 'PGLINKLIST') { my $num = $PageNum; my $t = $arg =~ s/T//gi; my($before, $after) = split(/;/, $arg); my $prefix = $t ? $TIDXPREFIX : $IDXPREFIX; my $suffix = $HtmlExt; $suffix .= '.gz' if $GzipLinks; if ($before ne "") { $before = $num - abs($before); $before = 1 unless $before > 1; } else { $before = 1; } if ($after ne "") { $after = $num + abs($after); $after = $NumOfPrintedPages unless $after < $NumOfPrintedPages; } else { $after = $NumOfPrintedPages; } $tmp = ""; for ($i=$before; $i < $num; ++$i) { if ($i == 1) { $tmp .= sprintf('%d | ', ($t ? $TIDXNAME : $IDXNAME), ($GzipLinks ? '.gz' : ""), $i); next; } $tmp .= sprintf('%d | ', $prefix, $i, $suffix, $i); } $tmp .= $num; for ($i=$num+1; $i <= $after; ++$i) { $tmp .= sprintf(' | %d', $prefix, $i, $suffix, $i); } last REPLACESW; } if ($var eq 'PAGENUM') { $tmp = $PageNum; last REPLACESW; } if ($var eq 'NUMOFPAGES') { #$tmp = $NumOfPages; $tmp = $NumOfPrintedPages; last REPLACESW; } if ($var eq 'PG') { my $num = $PageNum; my $t = ($arg =~ s/^T//); my $prefix = $t ? $TIDXPREFIX : $IDXPREFIX; SW: { if ($arg eq 'NEXT') { $num = $PageNum+1; last SW; } if ($arg eq 'PREV') { $num = $PageNum-1; last SW; } if ($arg eq 'FIRST') { $num = 0; last SW; } if ($arg eq 'LAST') { $num = $NumOfPrintedPages; last SW; } if ($arg =~ /^-?\d+$/) { $num = $PageNum+$arg; last SW; } } if ($num < 2) { $tmp = $t ? $TIDXNAME : $IDXNAME; } else { $num = $NumOfPrintedPages if $num > $NumOfPrintedPages; $tmp = sprintf("%s%d.$HtmlExt", $prefix, $num); } $tmp .= ".gz" if $GzipLinks; last REPLACESW; } ## -------------------------------- ## ## Miscellaneous resource variables ## ## -------------------------------- ## if ($var eq 'ATTACHMENTURL') { $isurl = 0; $tmp = $AttachmentUrl; last REPLACESW; } if ($var eq 'DOCURL') { $isurl = 0; $tmp = $DOCURL; last REPLACESW; } if ($var eq 'ENV') { $tmp = htmlize($ENV{$arg}); last REPLACESW; } if ($var eq 'GMTDATE') { $tmp = &time2str($arg || $GMTDateFmt, time, 0); last REPLACESW; } if ($var eq 'HTMLEXT') { $tmp = $HtmlExt; last REPLACESW; } if ($var eq 'IDXPREFIX') { $tmp = $IDXPREFIX; last REPLACESW; } if ($var eq 'LOCALDATE') { $tmp = &time2str($arg || $LocalDateFmt, time, 1); last REPLACESW; } if ($var eq 'MSGPREFIX') { $tmp = $MsgPrefix; last REPLACESW; } if ($var eq 'OUTDIR') { $tmp = $OUTDIR; last REPLACESW; } if ($var eq 'PROG') { $tmp = $PROG; last REPLACESW; } if ($var eq 'TIDXPREFIX') { $tmp = $TIDXPREFIX; last REPLACESW; } if ($var eq 'VERSION') { $tmp = $VERSION; last REPLACESW; } if ($var eq '') { $tmp = '$'; last REPLACESW; } ## --------------------------- ## ## User defined variable check ## ## --------------------------- ## if (defined($CustomRcVars{$var})) { $expand = 1; $tmp = $CustomRcVars{$var}; last REPLACESW; } warn qq/Warning: Unrecognized variable: "$val"\n/; #return "\$$val\$"; return ""; } ## Check if string needs to be expanded again if ($expand) { $tmp =~ s/$VarExp/&replace_li_var($1,$index)/geo; } ## Check if URL text specifier is set if ($isurl) { $ret = &urlize($tmp); } else { if ($raw) { $ret = &$MHeadCnvFunc($tmp); if ($isaddr) { if (!$mailto) { $ret =~ s/($HAddrExp)/htmlize(rewrite_address($1))/geo; } else { $ret =~ s/($HAddrExp) /mailUrl($1, $Index2MsgId{$key}, $Subject{$key}, $From{$key})/gexo; $canclip = 0; } } } else { $ret = $tmp; } # Check for clipping if ($len > 0 && $canclip && (length($ret) > 0)) { $ret = &$TextClipFunc($ret, $len, 1); } # Check if JavaScript string if ($jstr) { $ret =~ s/\\/\\\\/g; # escape backslashes $ret =~ s/(["'])/\\$1/g; # escape quotes $ret =~ s/\n/\\n/g; # escape newlines $ret =~ s/\r/\\r/g; # escape returns } } ## Check for subject link $ret = qq|$ret| if $var eq 'SUBJECT' && $arg eq "" && !$mailto; $ret; } ##---------------------------------------------------------------------------## ## compute_msg_pos(): Get message location data. ## Return: ## ($aref, : Reference to message listing array. ## $key, : Message index key ## $pos, : Integer offset location in $aref ## $opt) : Left-over option string ## $key will be undefined and $post will be set to -1 if message ## position cannot be computed or is out-of-bounds. ## sub compute_msg_pos { my($idx, $var, $arg, $usethread) = @_; my($ofs, $pos, $aref, $href, $key); my $opt = undef; my $flip = 0; my $orgarg = $arg; ## Determine what list type if (($arg =~ s/^T//) || $usethread) { $aref = \@TListOrder; $href = \%Index2TLoc; $usethread = 1; } else { $aref = \@MListOrder; $href = \%Index2MLoc; $flip = $REVSORT; } ## Extract out optional data ($arg, $opt) = split(/;/, $arg, 2); SW: { if ($usethread && $TREVERSE) { # when threads are listed in reverse, we preserve the # sematics of "next/prev thread" if ($arg eq 'NEXTTOP') { $arg = 'PREVTOP'; } elsif ($arg eq 'PREVTOP') { $arg = 'NEXTTOP'; } } $ofs = 0, last SW if (!defined($arg)) || ($arg eq '') || ($arg eq 'CUR'); $ofs = ($flip ? -$arg : $arg), last SW if $arg =~ /^-?\d+$/; if ($arg eq 'NEXT') { # next message if (!$usethread || !$TREVERSE) { $ofs = ($flip ? -1 : 1); last SW; } # get here, it is thread and reverse undef $ofs; $pos = $href->{$idx}; if (($pos < $#$aref) && ($ThreadLevel{$aref->[$pos+1]} > 0)) { ++$pos; last SW; } # get here, must goto physical previous top # note no `last SW' statement $arg = 'PREVTOP'; } if ($arg eq 'PREV') { # prev message if (!$usethread || !$TREVERSE) { $ofs = ($flip ? 1 : -1); last SW; } # get here, it is thread and reverse undef $ofs; if ($ThreadLevel{$idx} > 0) { $pos = $href->{$idx}; if (($pos > 0) && ($ThreadLevel{$aref->[$pos-1]} >= 0)) { --$pos; last SW; } } # get here, must goto physical next top # note no `last SW' statement $arg = 'NEXTTOP'; } if ($arg eq 'FIRST') { $pos = $flip ? $#$aref : 0; undef $ofs; last SW; } if ($arg eq 'LAST') { $pos = $flip ? 0 : $#$aref; undef $ofs; last SW; } # if not thread variable, no more checking if (!$usethread) { warn qq/Warning: $var: Invalid variable argument: "$orgarg"\n/; $ofs = 0; last SW; } if ($arg eq 'NEXTIN') { # next message within a thread $pos = $href->{$idx} + 1; if ($pos > $#$aref || $ThreadLevel{$aref->[$pos]} <= 0) { $pos = -1; } undef $ofs; last SW; } if ($arg eq 'PREVIN') { # previous message within a thread undef $ofs; $pos = $href->{$idx}; if ($ThreadLevel{$aref->[$pos]} <= 0) { $pos = -1; last SW; } --$pos; $pos = -1 if ($pos < 0); last SW; } if ($arg eq 'PARENT') { # parent message in thread undef $ofs; my $level = $ThreadLevel{$idx}; $pos = $Index2TLoc{$idx}; last SW if ($level <= 0); for (--$pos; $pos >= 0; --$pos) { last if $ThreadLevel{$aref->[$pos]} < $level; } last SW; } if ($arg eq 'TOP') { undef $ofs; $pos = $Index2TLoc{$idx}; for (; $pos >= 0; --$pos) { last if $ThreadLevel{$aref->[$pos]} <= 0; } last SW; } if (($arg eq 'NEXTTOP') ){ # start of next thread undef $ofs; $pos = $Index2TLoc{$idx}; for (++$pos; $pos <= $#$aref; ++$pos) { last if $ThreadLevel{$aref->[$pos]} <= 0; } last SW; } if (($arg eq 'PREVTOP') ){ # start of previous thread undef $ofs; # Find current top first, then find previous top for ($pos = $Index2TLoc{$idx}; $pos >= 0; --$pos) { last if $ThreadLevel{$aref->[$pos]} <= 0; } if ($pos >= 0) { for (--$pos; $pos >= 0; --$pos) { last if $ThreadLevel{$aref->[$pos]} <= 0; } } last SW; } if ($arg eq 'END') { # last message of thread undef $ofs; $pos = $Index2TLoc{$idx}; for (; $pos < $#$aref; ++$pos) { last if $ThreadLevel{$aref->[$pos+1]} <= 0; } last SW; } warn qq/Warning: $var: Unrecognized variable argument: "$orgarg"\n/; $ofs = 0; } $pos = $href->{$idx} + $ofs if defined($ofs); if (($pos > $#$aref) || ($pos < 0)) { $pos = -1; $key = undef; } else { $key = $aref->[$pos]; } ($aref, $key, $pos, $opt); } ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/lib/mhtxtenrich.pl0000644004705000001440000001605411507437070017026 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhtxtenrich.pl,v 2.11 2010/12/31 20:34:00 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Library defines a routine for MHonArc to filter text/enriched ## data. ## ## Filter routine can be registered with the following: ## ## ## text/enriched;m2h_text_enriched::filter;mhtxtenrich.pl ## text/richtext;m2h_text_enriched::filter;mhtxtenrich.pl ## ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1997-2002 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package m2h_text_enriched; my %enriched_tags = ( 'bigger' => 1, 'bold' => 1, 'center' => 1, 'color' => 1, 'comment' => 1, 'excerpt' => 1, 'fixed' => 1, 'flushboth' => 1, 'flushleft' => 1, 'flushright' => 1, 'fontfamily' => 1, 'indent' => 1, 'indentright' => 1, 'italic' => 1, 'lang' => 1, 'lt' => 1, 'nl' => 1, 'nofill' => 1, 'paraindent' => 1, 'param' => 1, 'samepage' => 1, 'signature' => 1, 'smaller' => 1, 'subscript' => 1, 'superscript' => 1, 'underline' => 1, ); my %special_to_char = ( 'lt' => '<', 'gt' => '>', ); ##--------------------------------------------------------------------------- ## Filter routine. ## XXX: Need to update this filter. However, does anyone still use ## text/enriched anymore. ## sub filter { my($fields, $data, $isdecode, $args) = @_; my($innofill, $chunk); my $charset = $fields->{'x-mha-charset'}; my($charcnv, $real_charset_name) = readmail::MAILload_charset_converter($charset); my $ret = ""; $args = "" unless defined($args); ## Get content-type my($ctype) = $fields->{'content-type'}[0] =~ m%^\s*([\w\-\./]+)%; my $richtext = $ctype =~ /\btext\/richtext\b/i; if (defined($charcnv) && defined(&$charcnv)) { $$data = &$charcnv($$data, $real_charset_name); } else { mhonarc::htmlize($data); warn qq/\n/, qq/Warning: Unrecognized character set: $charset\n/, qq/ Message-Id: <$mhonarc::MHAmsgid>\n/, qq/ Message Subject: /, $fields->{'x-mha-subject'}, qq/\n/, qq/ Message Number: $mhonarc::MHAmsgnum\n/ unless ($charcnv eq '-decode-'); } ## Fixup any EOL mess $$data =~ s/\r?\n/\n/g; $$data =~ s/\r/\n/g; # translate back <>'s for tag processing $$data =~ s/&([lg]t);/$special_to_char{$1}/g; ## Convert specials if (!$richtext) { $$data =~ s/<]*)>} { my $eot = $1; my $tag = lc $2; $tag =~ s/\s+//g; ($enriched_tags{$tag}) ? '<'.$eot.$tag.'>' : '<'.$eot.$tag.'>'; }gexs; $innofill = 0; foreach $chunk (split(m|()|i, $$data)) { if ($chunk =~ m||i) { $ret .= '
    ';
    	    $innofill = 1;
    	    next;
    	}
    	if ($chunk =~ m||i) {
    	    $ret .= '
    '; $innofill = 0; next; } convert_tags(\$chunk, $richtext); if (!$richtext && !$innofill) { $chunk =~ s/(\n\s*)/&nl_seq_to_brs($1)/ge; } $ret .= $chunk; } $ret; } ##--------------------------------------------------------------------------- ## convert_tags translates text/enriched commands to HTML tags. ## sub convert_tags { my $str = shift; my $richtext = shift; $$str =~ s{.*?}{}gis; $$str =~ s{<(/?)bold\s*>}{<$1b>}gi; $$str =~ s{<(/?)italic\s*>}{<$1i>}gi; $$str =~ s{<(/?)underline\s*>}{<$1u>}gi; $$str =~ s{<(/?)fixed\s*>}{<$1tt>}gi; $$str =~ s{<(/?)smaller\s*>}{<$1small>}gi; $$str =~ s{<(/?)bigger\s*>}{<$1big>}gi; $$str =~ s{<(/?)signature\s*>}{<$1pre>}gi; $$str =~ s{\s*([^<]+)} {}gix; $$str =~ s|||gi; $$str =~ s{\s*\s*(\S+)\s*} {}gix; $$str =~ s|||gi; $$str =~ s||

    |gi; $$str =~ s||

    |gi; $$str =~ s||

    |gi; $$str =~ s||

    |gi; $$str =~ s||

    |gi; $$str =~ s||

    |gi; $$str =~ s||

    |gi; $$str =~ s||

    |gi; $$str =~ s|\s*([^<]*)|
    |gi; $$str =~ s||
    |gi; $$str =~ s|\s*(([^<]*))?|
    |gi; $$str =~ s||
    |gi; $$str =~ s|\s*([^<]*)|
    |gi; $$str =~ s||
    |gi; # richtext commands $$str =~ s{}{}gi; $$str =~ s{<(/?)subscript\s*>}{<$1sub>}gi; $$str =~ s{<(/?)superscript\s*>}{<$1sup>}gi; $$str =~ s{}{<}gi; $$str =~ s{}{\f}gi; $$str =~ s{}{

    }gi; $$str =~ s{\n?}{

    }gis; $$str =~ s{}{

    }gi; $$str =~ s{}{

    }gi; $$str =~ s{}{

    }gi; $$str =~ s{}{

    }gi; if ($richtext) { $$str =~ s{\n?}{
    }gis; } else { $$str =~ s{}{}gis; } # Cleanup bad tags $$str =~ s{}{}g; } ##--------------------------------------------------------------------------- ## nl_seq_to_brs returns a "
    " string based on the number ## of eols in a string. ## sub nl_seq_to_brs { my($str) = shift; my($n); $n = $str =~ tr/\n/\n/; --$n; if ($n <= 0) { return " "; } else { return "
    \n" x $n; } } ##--------------------------------------------------------------------------- ## preserve_space returns a string with all spaces and tabs ## converted to nbsps. ## sub preserve_space { my($str) = shift; 1 while $str =~ s/^([^\t]*)(\t+)/$1 . ' ' x (length($2) * 8 - length($1) % 8)/e; $str =~ s/ /\ /g; $str; } ##--------------------------------------------------------------------------- 1; MHonArc-2014-05-05-snap/lib/mhutil.pl0000644004705000001440000004720111510035170015756 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhutil.pl,v 2.34 2011/01/02 08:42:32 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Utility routines for MHonArc ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1995-1999 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mhonarc; use MHonArc::RFC822; ## RFC 2369 header fields to check for URLs %HFieldsList = ( 'list-archive' => 1, 'list-help' => 1, 'list-owner' => 1, 'list-post' => 1, 'list-subscribe' => 1, 'list-unsubscribe' => 1, ); ## Do not apply ADDRESSMODIFYCODE headerfields %HFieldsAsIsList = ( %HFieldsList, 'content-disposition' => 1, 'content-id' => 1, 'content-type' => 1, 'message-id' => 1, 'references' => 1, 'in-reply-to' => 1, ); ## Header fields that contain addresses %HFieldsAddr = ( 'apparently-from' => 1, 'apparently-to' => 1, 'bcc' => 1, 'cc' => 1, 'dcc' => 1, 'from' => 1, 'mail-followup-to' => 1, 'mail-reply-to' => 1, 'notify-bcc' => 1, 'notify-cc' => 1, 'notify-to' => 1, 'original-bcc' => 1, 'original-cc' => 1, 'original-from' => 1, 'original-sender' => 1, 'original-to' => 1, 'reply-to' => 1, 'resent-bcc' => 1, 'resent-cc' => 1, 'resent-from' => 1, 'resent-sender' => 1, 'resent-to' => 1, 'return-path' => 1, 'sender' => 1, 'to' => 1, 'x-envelope' => 1, ); ##--------------------------------------------------------------------------- ## Convert message header string to HTML encoded in ## $readmail::TextEncode encoding. ## sub htmlize_enc_head { my($cnvfunc, $charset) = readmail::MAILload_charset_converter($readmail::TextEncode); return htmlize($_[0]) if ($cnvfunc eq '-decode-' || $cnvfunc eq '-ignore-'); return &$cnvfunc($_[0], $charset); } ##--------------------------------------------------------------------------- ## Clip text to specified length. ## sub clip_text { my $str = \shift; # Prevent unnecessary copy. my $len = shift; # Clip length my $is_html = shift; # If entity references should be considered my $has_tags = shift; # If html tags should be stripped if (!$is_html) { return substr($$str, 0, $len); } my $text = ""; my $subtext = ""; my $html_len = length($$str); my($pos, $sublen, $real_len, $semi); my $er_len = 0; for ( $pos=0, $sublen=$len; $pos < $html_len; ) { $subtext = substr($$str, $pos, $sublen); $pos += $sublen; # strip tags if ($has_tags) { # Strip full tags $subtext =~ s/<[^>]*>//g; # Check if clipped part of a tag if ($subtext =~ s/<[^>]*\Z//) { my $gt = index($$str, '>', $pos); $pos = ($gt < 0) ? $html_len : ($gt+1); } } # check for clipped entity reference if (($pos < $html_len) && ($subtext =~ /\&[^;]*\Z/)) { my $semi = index($$str, ';', $pos); if ($semi < 0) { # malformed entity reference $subtext .= substr($$str, $pos); $pos = $html_len; } else { $subtext .= substr($$str, $pos, $semi-$pos+1); $pos = $semi+1; } } # compute entity reference lengths to determine "real" character # count and not raw character count. while ($subtext =~ /(\&[^;]+);/g) { $er_len += length($1); } $text .= $subtext; # done if we have enough $real_len = length($text)-$er_len; if ($real_len >= $len) { last; } $sublen = $len - (length($text)-$er_len); } $text; } ##--------------------------------------------------------------------------- ## Get an e-mail address from (HTML) $str. ## sub extract_email_address { return '' unless defined $_[0]; scalar(MHonArc::RFC822::first_addr_spec(shift)); } ##--------------------------------------------------------------------------- ## Get an e-mail name from $str. ## sub extract_email_name { my @tokens = MHonArc::RFC822::tokenise(shift); my @bare = ( ); my $possible = undef; my $skip = 0; my $tok; foreach $tok (@tokens) { next if $skip; if ($tok =~ /^"/) { # Quoted string $tok =~ s/^"//; $tok =~ s/"$//; $tok =~ s/\\(.)/$1/g; return $tok; } if ($tok =~ /^\(/) { # Comment $tok =~ s/^\(//; $tok =~ s/\)$//; $tok =~ s/\\(.)/$1/g; return $tok; } if ($tok =~ /^<$/) { # Address spec, skip $skip = 1; next; } if ($tok =~ /^>$/) { $skip = 0; next; } push(@bare, $tok); # Bare name } my $str; if (@bare) { $str = join(' ', @bare); $str =~ s/@.*//; $str =~ s/^\s+//; $str =~ s/\s+$//; return $str; } $str = MHonArc::RFC822::first_addr_spec(@tokens); $str =~ s/@.*//; $str; } ##--------------------------------------------------------------------------- ## Routine to sort messages ## sub sort_messages { my($nosort, $subsort, $authsort, $revsort) = @_; $nosort = $NOSORT if !defined($nosort); $subsort = $SUBSORT if !defined($subsort); $authsort = $AUTHSORT if !defined($authsort); $revsort = $REVSORT if !defined($revsort); if ($nosort) { ## Process order if ($revsort) { return sort { $IndexNum{$b} <=> $IndexNum{$a} } keys %Subject; } else { return sort { $IndexNum{$a} <=> $IndexNum{$b} } keys %Subject; } } elsif ($subsort) { ## Subject order my(%sub, $idx, $sub); use locale; eval { my $hs = scalar(%Subject); $hs =~ s|^[^/]+/||; keys(%sub) = $hs; }; while (($idx, $sub) = each(%Subject)) { $sub = lc $sub; 1 while $sub =~ s/$SubReplyRxp//io; $sub =~ s/$SubArtRxp//io; $sub{$idx} = $sub; } if ($revsort) { return sort { ($sub{$a} cmp $sub{$b}) || ($Time{$b} <=> $Time{$a}) } keys %Subject; } else { return sort { ($sub{$a} cmp $sub{$b}) || ($Time{$a} <=> $Time{$b}) } keys %Subject; } } elsif ($authsort) { ## Author order my(%from, $idx, $from); use locale; eval { my $hs = scalar(%From); $hs =~ s|^[^/]+/||; keys(%from) = $hs; }; if ($DoFromName && %FromName) { while (($idx, $from) = each(%FromName)) { $from{$idx} = lc $from; } } else { while (($idx, $from) = each(%From)) { $from{$idx} = lc extract_email_name($from); } } if ($revsort) { return sort { ($from{$a} cmp $from{$b}) || ($Time{$b} <=> $Time{$a}) } keys %Subject; } else { return sort { ($from{$a} cmp $from{$b}) || ($Time{$a} <=> $Time{$a}) } keys %Subject; } } else { ## Date order if ($revsort) { return sort { ($Time{$b} <=> $Time{$a}) || ($IndexNum{$b} <=> $IndexNum{$a}) } keys %Subject; } else { return sort { ($Time{$a} <=> $Time{$b}) || ($IndexNum{$a} <=> $IndexNum{$b}) } keys %Subject; } } } ##--------------------------------------------------------------------------- ## Message-sort routines for sort(). ## sub increase_index { (&get_time_from_index($a) <=> &get_time_from_index($b)) || ($IndexNum{$a} <=> $IndexNum{$b}); } ##--------------------------------------------------------------------------- ## Routine for formating a message number for use in filenames or links. ## sub fmt_msgnum { sprintf("%05d", $_[0]); } ##--------------------------------------------------------------------------- ## Routine to get filename of a message number. ## sub msgnum_filename { my($fmtstr) = "$MsgPrefix%05d.$HtmlExt"; $fmtstr .= ".gz" if $GzipLinks; sprintf($fmtstr, $_[0]); } ##--------------------------------------------------------------------------- ## Routine to get filename of an index ## sub get_filename_from_index { &msgnum_filename($IndexNum{$_[0]}); } ##--------------------------------------------------------------------------- ## Routine to get time component from index ## sub get_time_from_index { $Time{$_[0]} || (split(/$X/o, $_[0], 2))[0]; } ##--------------------------------------------------------------------------- ## Routine to get annotation of a message ## sub get_note { my $index = shift; my $file = join($DIRSEP, get_note_dir(), msgid_to_filename($Index2MsgId{$index})); if (!open(NOTEFILE, $file)) { return ""; } my $ret = join("", ); close NOTEFILE; $ret; } ##--------------------------------------------------------------------------- ## Routine to determine if a message has an annotation ## sub note_exists { my $index = shift; -e join($DIRSEP, get_note_dir(), msgid_to_filename($Index2MsgId{$index})); } ##--------------------------------------------------------------------------- ## Routine to get full pathname to annotation directory ## sub get_note_dir { if (!OSis_absolute_path($NoteDir)) { return join($DIRSEP, $OUTDIR, $NoteDir); } $NoteDir; } ##--------------------------------------------------------------------------- ## Routine to get lc author name from index ## sub get_base_author { if ($DoFromName && %FromName) { return lc $FromName{$_[0]}; } lc extract_email_name($From{$_[0]}); } ##--------------------------------------------------------------------------- ## Determine time from date. Use %Zone for timezone offsets ## sub get_time_from_date { my($mday, $mon, $yr, $hr, $min, $sec, $zone) = @_; my($time) = 0; $yr -= 1900 if $yr >= 1900; # if given full 4 digit year $yr += 100 if $yr <= 37; # in case of 2 digit years if (($yr < 70) || ($yr > 137)) { warn "Warning: Bad year (", $yr+1900, ") using current\n"; $yr = (localtime(time))[5]; } ## If $zone, grab gmt time, else grab local if ($zone) { $zone =~ tr/a-z/A-Z/; $time = &timegm($sec,$min,$hr,$mday,$mon,$yr); # try to modify time/date based on timezone OFFSET: { # numeric timezone if ($zone =~ /^[\+-]\d+$/) { $time -= &zone_offset_to_secs($zone); last OFFSET; } # Zone if (defined($Zone{$zone})) { # timezone abbrev $time += &zone_offset_to_secs($Zone{$zone}); last OFFSET; } # Zone[+-]DDDD if ($zone =~ /^([A-Z]\w+)([\+-]\d+)$/) { $time -= &zone_offset_to_secs($2); if (defined($Zone{$1})) { $time += &zone_offset_to_secs($Zone{$1}); last OFFSET; } } # undefined timezone warn qq|Warning: Unrecognized time zone, "$zone"\n|; } } else { $time = &timelocal($sec,$min,$hr,$mday,$mon,$yr); } $time; } ##--------------------------------------------------------------------------- ## Routine to check if time has expired. ## sub expired_time { ($ExpireTime && (time - $_[0] > $ExpireTime)) || ($_[0] < $ExpireDateTime); } ##--------------------------------------------------------------------------- ## Get HTML tags for formatting message headers ## sub get_header_tags { my($f) = shift; my($ftago, $ftagc, $tago, $tagc); ## Get user specified tags (this is one funcky looking code) $tag = (defined($HeadHeads{$f}) ? $HeadHeads{$f} : $HeadHeads{"-default-"}); $ftag = (defined($HeadFields{$f}) ? $HeadFields{$f} : $HeadFields{"-default-"}); if ($tag) { $tago = "<$tag>"; $tagc = ""; } else { $tago = $tagc = ''; } if ($ftag) { $ftago = "<$ftag>"; $ftagc = ""; } else { $ftago = $ftagc = ''; } ($tago, $tagc, $ftago, $ftagc); } ##--------------------------------------------------------------------------- ## Format message headers in HTML. ## $html = htmlize_header($fields_hash_ref); ## sub htmlize_header { my $fields = shift; my($key, $tago, $tagc, $ftago, $ftagc, $item, @array); my($tmp); my $mesg = ""; my %hf = %$fields; foreach $item (@FieldOrder) { if ($item eq '-extra-') { foreach $key (sort keys %hf) { next if $FieldODefs{$key}; next if $key =~ /^x-mha-/; delete $hf{$key}, next if &exclude_field($key); @array = @{$hf{$key}}; foreach $tmp (@array) { $tmp = $HFieldsList{$key} ? mlist_field_add_links($tmp) : &$MHeadCnvFunc($tmp); $tmp = field_add_links($key, $tmp, $fields) unless $HFieldsAsIsList{$key}; ($tago, $tagc, $ftago, $ftagc) = get_header_tags($key); $mesg .= join('', $LABELBEG, $tago, htmlize(ucfirst($key)), $tagc, $LABELEND, $FLDBEG, $ftago, $tmp, $ftagc, $FLDEND, "\n"); } delete $hf{$key}; } } else { if (!&exclude_field($item) && $hf{$item}) { @array = @{$hf{$item}}; foreach $tmp (@array) { $tmp = $HFieldsList{$item} ? mlist_field_add_links($tmp) : &$MHeadCnvFunc($tmp); $tmp = field_add_links($item, $tmp, $fields) unless $HFieldsAsIsList{$item}; ($tago, $tagc, $ftago, $ftagc) = &get_header_tags($item); $mesg .= join('', $LABELBEG, $tago, htmlize(ucfirst($item)), $tagc, $LABELEND, $FLDBEG, $ftago, $tmp, $ftagc, $FLDEND, "\n"); } } delete $hf{$item}; } } if ($mesg) { $mesg = $FIELDSBEG . $mesg . $FIELDSEND; } $mesg; } ##--------------------------------------------------------------------------- sub mlist_field_add_links { my $txt = shift; my $ret = ""; local($_); foreach (split(/(<[^<>]+>)/, $txt)) { if (/^<\w+:/) { chop; substr($_, 0, 1) = ""; $ret .= qq|<$_>|; } else { $ret .= &$MHeadCnvFunc($_); } } $ret; } ##--------------------------------------------------------------------------- ## Routine to add mailto/news links to a message header string. ## sub field_add_links { my $label = lc shift; my $fld_text = shift; my $fields = shift; LBLSW: { if (!$NONEWS && ($label eq 'newsgroup' || $label eq 'newsgroups')) { $fld_text = newsurl($fld_text, $fields->{'x-mha-message-id'}); last LBLSW; } if (!$NOMAILTO) { $fld_text =~ s{($HAddrExp)} {&mailUrl($1, $fields->{'x-mha-message-id'}, $fields->{'x-mha-subject'}, $fields->{'x-mha-from'}); }gexo; } else { $fld_text =~ s{($HAddrExp)} {&htmlize(&rewrite_address($1)) }gexo; } last LBLSW; } $fld_text; } ##--------------------------------------------------------------------------- ## Routine to add news links of newsgroups names ## sub newsurl { my $str = shift; my $msgid_u = urlize(shift); my $h = ""; local $_; if ($str =~ s/^([^:]*:\s*)//) { $h = $1; } $str =~ s/[\s<>]//g; my @groups = split(/,/, $str); my $group; foreach $group (@groups) { my $url = $NewsUrl; my $group_u = urlize($group); $url =~ s/\$NEWSGROUP(?::U)?\$/$group_u/g; $url =~ s/\$MSGID(?::U)?\$/$msgid_u/g; $group = qq{$group}; } $h . join(', ', @groups); # Rejoin string } ##--------------------------------------------------------------------------- ## $html = mailUrl($email_addr, $msgid, $subject, $from); ## sub mailUrl { my $eaddr = shift || ''; my $msgid = shift || ''; my $sub = shift || ''; my $from = shift || ''; dehtmlize(\$eaddr); local $_; my($url) = ($MAILTOURL); my($to) = (&urlize($eaddr)); my($toname, $todomain) = map { urlize($_) } split(/@/,$eaddr,2); my($froml, $msgidl) = (&urlize($from), &urlize($msgid)); my($fromaddrl) = (&extract_email_address($from)); my($faddrnamel, $faddrdomainl) = map { urlize($_) } split(/@/,$fromaddrl,2); $fromaddrl = &urlize($fromaddrl); my($subjectl); # Add "Re:" to subject if not present if ($sub !~ /^$SubReplyRxp/io) { $subjectl = 'Re:%20' . &urlize($sub); } else { $subjectl = &urlize($sub); } $url =~ s/\$FROM\$/$froml/g; $url =~ s/\$FROMADDR\$/$fromaddrl/g; $url =~ s/\$FROMADDRNAME\$/$faddrnamel/g; $url =~ s/\$FROMADDRDOMAIN\$/$faddrdomainl/g; $url =~ s/\$MSGID\$/$msgidl/g; $url =~ s/\$SUBJECT(?:NA)?\$/$subjectl/g; $url =~ s/\$TO\$/$to/g; $url =~ s/\$TOADDRNAME\$/$toname/g; $url =~ s/\$TOADDRDOMAIN\$/$todomain/g; $url =~ s/\$ADDR\$/$to/g; qq|| . &htmlize(&rewrite_address($eaddr)) . q||; } ##---------------------------------------------------------------------------## ## Routine to parse variable definitions in a string. The ## function returns a list of variable/value pairs. The format of ## the string is similiar to attribute specification lists in ## SGML, but NAMEs are any non-whitespace character. ## sub parse_vardef_str { my($org) = shift; my($lower) = shift; my(%hash) = (); my($str, $q, $var, $value); ($str = $org) =~ s/^\s+//; while ($str =~ s/^([^=\s]+)\s*=\s*//) { $var = $1; if ($str =~ s/^(['"])//) { $q = $1; if (!($q eq "'" ? $str =~ s/^([^']*)'// : $str =~ s/^([^"]*)"//)) { warn "Warning: Unclosed quote in: $org\n"; return (); } $value = $1; } else { if ($str =~ s/^(\S+)//) { $value = $1; } else { warn "Warning: No value after $var in: $org\n"; return (); } } $str =~ s/^\s+//; $hash{$lower? lc($var): $var} = $value; } if ($str =~ /\S/) { warn "Warning: Trailing characters in: $org\n"; } %hash; } ##---------------------------------------------------------------------------## sub msgid_to_filename { my $msgid = shift; if ($VMS) { $msgid =~ s/([^\w\-])/sprintf("=%02X",unpack("C",$1))/geo; } else { $msgid =~ s/([^\w.\-\@])/sprintf("=%02X",unpack("C",$1))/geo; } $msgid; } ##---------------------------------------------------------------------------## ## Check if new follow up list for a message is different from ## old follow up list. ## sub is_follow_ups_diff { my $f = $Follow{$_[0]}; my $o = $FollowOld{$_[0]}; if (defined($f) && defined($o)) { return 1 unless @$f == @$o; local $^W = 0; my $i; for ($i=0; $i < @$f; ++$i) { return 1 if $f->[$i] ne $o->[$i]; } return 0; } return (defined($f) || defined($o)); } ##---------------------------------------------------------------------------## ## Retrieve icon URL for specified content-type. ## sub get_icon_url { my $ctype = shift; my $icon = $Icons{$ctype}; ICON: { last ICON if defined $icon; if ($ctype =~ s|/.*||) { $ctype .= '/*'; $icon = $Icons{$ctype}; last ICON if defined $icon; } $icon = $Icons{'*/*'} || $Icons{'unknown'}; } if (!defined($icon)) { return (undef, undef, undef); } if ($icon =~ s/\[(\d+)x(\d+)\]//) { return ($IconURLPrefix.$icon, $1, $2); } ($IconURLPrefix.$icon, undef, undef); } ##---------------------------------------------------------------------------## sub log_mesg { my $fh = shift; my $doDate = shift; if ($doDate) { my($sec,$min,$hour,$mday,$mon,$year) = localtime(time); print $fh sprintf("[%4d-%02d-%02d %02d:%02d:%02d] ", $year+1900, $mon+1, $mday, $hour, $min, $sec); } print $fh @_; } ##---------------------------------------------------------------------------## sub dump_hash { my $fh = shift; my $h = shift; local $_; foreach (sort keys %$h) { print $fh "$_ => ", $h->{$_}, "\n"; } } ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/lib/mhfile.pl0000644004705000001440000002251611507444451015736 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhfile.pl,v 2.13 2010/12/31 21:20:41 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## File routines for MHonArc ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1997-1999 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mhonarc; use Symbol; use Fcntl; use File::Basename; my $_have_File_Temp; BEGIN { # If File::Temp is installed, we will use it for temporary file # generation. eval { require File::Temp; }; $_have_File_Temp = scalar($@) ? 0 : 1; # Increase File::Temp safety level if setuid if ($_have_File_Temp && $UNIX && $TaintMode) { File::Temp->safe_level(File::Temp::MEDIUM); } # Perl <5.004 did not auto-call srand(). eval { require 5.004; }; srand(time ^ ($$ + ($$ << 15))) if scalar($@); } # Characters to use for home-grown temporay file generation. We stick to # basic alphanumerics to avoid OS-specific filename limitations. my @TEMP_CHARS = qw( A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 _ ); # Maximum tries to create a temporary file in home-grown implementation sub TEMP_MAX_TRIES() { 10; } ##---------------------------------------------------------------------------## sub file_open { my($file) = shift; my($handle) = gensym; my($gz) = $file =~ /\.gz$/i; if ($gz) { cmd_pipe_open($handle, $GzipExe, '-cd', $file); return $handle; } return $handle if open($handle, $file); if (-e "$file.gz") { cmd_pipe_open($handle, $GzipExe, '-cd', "$file.gz"); return $handle; } die qq/ERROR: Failed to open "$file": $!\n/; } sub cmd_pipe_open { my $handle = shift; my @cmd = @_; if (!$UNIX) { return $handle if open($handle, join(' ', @cmd, '|')); die qq/ERROR: Failed to exec @cmd: $!\n/; } my $child_pid = open($handle, '-|'); if ($child_pid) { # parent return $handle; } else { # child #open(STDERR, '>&STDOUT'); exec(@cmd) || die qq/ERROR: Cannot exec "@cmd": $!\n/; } } sub file_gzip { my $file = shift; return if ($file =~ /\.gz$/i); if (system($GzipExe, $file) != 0) { die qq/ERROR: Failed to exec "$GzipExe $file": $! $?\n/; } } ## This function is currently not used anymore sub file_create { my($file) = shift; my($gz) = shift; my($handle) = gensym; if ($gz) { $file .= ".gz" unless $file =~ /\.gz$/; return $handle if open($handle, "| $GzipExe > $file"); die qq{ERROR: Failed to exec "| $GzipExe > $file": $!\n}; } return $handle if open($handle, "> $file"); die qq{ERROR: Failed to create "$file": $!\n}; } sub file_exists { (-e $_[0]) || (-e "$_[0].gz"); } sub file_copy { my($src, $dst) = ($_[0], $_[1]); my($gz) = $src =~ /\.gz$/i; if ($gz || (-e "$src.gz")) { $src .= ".gz" unless $gz; $dst .= ".gz" unless $dst =~ /\.gz$/i; } &cp($src, $dst); } sub file_rename { my($src, $dst) = ($_[0], $_[1]); my($gz) = $src =~ /\.gz$/i; if ($gz || (-e "$src.gz")) { $src .= ".gz" unless $gz; $dst .= ".gz" unless $dst =~ /\.gz$/i; } if (!rename($src, $dst)) { die qq/ERROR: Unable to rename "$src" to "$dst": $!\n/; } $dst; } sub file_remove { my($file) = shift; unlink($file); unlink("$file.gz"); } sub file_utime { my($atime) = shift; my($mtime) = shift; foreach (@_) { utime($atime, $mtime, $_, "$_.gz"); } } sub file_temp { my $template = shift; # Filename template my $dir = shift || $CURDIR; # Where to write the file my $suffix = shift; # Required suffix (optional) my($handle, $tmpfile); MKTEMP: { # Do not honor FASTTEMPFILES if a suffix is required, mainly # because things like attachment writing will not work with # FASTTEMPFILES. if ($FastTempFiles && !defined($suffix)) { $handle = gensym; $tmpfile = join($DIRSEP, $dir, $template.$$); if (!sysopen($handle, $tmpfile, (O_WRONLY|O_EXCL|O_CREAT), 0600)) { die qq/ERROR: Unable to create temp file "$tmpfile": $!\n/; } last MKTEMP; } # Use File::Temp when at all possible if ($_have_File_Temp) { my @tf_opts = ('DIR' => $dir, 'UNLINK' => 0); push(@tf_opts, 'SUFFIX' => $suffix) if $suffix; ($handle, $tmpfile) = File::Temp::tempfile($template, @tf_opts); last MKTEMP; } $handle = gensym; my($i); for ($i=0; $i < TEMP_MAX_TRIES; ++$i) { ($tmpfile = $template) =~ s/X/$TEMP_CHARS[int(rand($#TEMP_CHARS))]/ge; $tmpfile = join($DIRSEP, $dir, $tmpfile); $tmpfile .= $suffix if defined($suffix); last if sysopen($handle, $tmpfile, (O_WRONLY|O_EXCL|O_CREAT), 0600); } if ($i >= TEMP_MAX_TRIES) { die qq/ERROR: Unable to create temp file "$tmpfile": $!\n/; } } ($handle, $tmpfile); } sub file_chmod { my $file = shift; my $perm = shift || $FilePermsOct; ## Capture any die's in case chmod not supported. eval { if (chmod(($perm &~ umask), $file) < 1) { warn qq/Warning: Unable to change "$file" permissions to "/, sprintf('%o'. $perm), qq/": $!\n/; } }; } ##---------------------------------------------------------------------------## sub dir_create { my $path = shift; my $perms = shift || 0777; if (!$UNIX) { ## Non-Unix OS's do not have symlinks return if (-e $path); if (!mkdir($path, $perms)) { die qq/ERROR: Unable to create "$path": $!\n/; } return; } ## Check if $path is a symlink if (-l $path) { if ($FollowSymlinks) { # Symlinks allowed, so we check if symlink is to a directory die qq/ERROR: "$path" is not a directory: $!\n/ if !(-d $path); return; } # symlink, try to delete warn qq/Warning: "$path" is a symlink, will try to replace...\n/; if (!unlink($path)) { die qq/ERROR: "$path" is a symlink, unable to remove: $!\n/; } } elsif (-e $path) { die qq/ERROR: "$path" is not a directory: $!\n/ if !(-d _); # already exists, nothing to do return; } my $dirname = dirname($path); my @info = stat($dirname); if ($info[2] & Fcntl::S_IWGRP || $info[2] & Fcntl::S_IWOTH) { my($i, $errstr, $tmpdir); for ($i=0; $i < TEMP_MAX_TRIES; ++$i) { $tmpdir = dir_temp('dirXXXXXXXXXX', $dirname); if (!rename($tmpdir, $path)) { $errstr = "$!"; rmdir($tmpdir); if (-l $path) { # hmmmm, somone trying to so something malicious? warn qq/Warning: Possible symlink attack attempted with /, qq/"$path"\n/; die qq/ERROR: "$path" is a symlink, unable to remove: $!\n/ unless unlink $path; } elsif (-d $path) { # somebody snuck in and created it return; } elsif (-e _) { die qq/ERROR: "$path" exists, but it did not before, /, qq/and it is not a directory!\n/; } } else { last; } } if ($i >= TEMP_MAX_TRIES) { die qq/ERROR: Unable to rename "$tmpdir" to "$path": $errstr\n/; } } else { if (!mkdir($path, $perms)) { die qq/ERROR: Unable to create "$path": $!\n/; } } chmod(($perms &~ umask), $path); } sub dir_temp { my $template = shift; my $dir = shift || $CURDIR; my($tmpdir); MKTEMP: { if ($_have_File_Temp) { $tmpdir = File::Temp::tempdir($template, 'DIR' => $dir, 'CLEANUP' => 0); last MKTEMP; } my($i); for ($i=0; $i < TEMP_MAX_TRIES; ++$i) { ($tmpdir = $template) =~ s/X/$TEMP_CHARS[int(rand($#TEMP_CHARS))]/ge; $tmpdir = join($DIRSEP, $dir, $tmpdir); last if mkdir $tmpdir, 0700; } if ($i >= TEMP_MAX_TRIES) { die qq/ERROR: Unable to create temp dir "$tmpdir": $!\n/; } } $tmpdir; } sub dir_remove { my($file) = shift; if (-d $file) { local(*DIR); local($_); if (!opendir(DIR, $file)) { warn qq{Warning: Unable to open "$file"\n}; return 0; } my @files = grep(!/^(\.|\..)$/i, readdir(DIR)); closedir(DIR); foreach (@files) { &dir_remove($file . $mhonarc::DIRSEP . $_); } if (!rmdir($file)) { warn qq{Warning: Unable to remove "$file": $!\n}; return 0; } } else { if (!unlink($file)) { warn qq{Warning: Unable to delete "$file": $!\n}; return 0; } } 1; } ##---------------------------------------------------------------------------## sub rand_string { my $template = shift; $template =~ s/X/$TEMP_CHARS[int(rand($#TEMP_CHARS))]/ge; $template; } ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/lib/mhtime.pl0000644004705000001440000002424007351420077015751 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhtime.pl,v 2.10 2001/09/17 16:09:35 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Time related routines for mhonarc ##---------------------------------------------------------------------------## ## Copyright (C) 1996-1999 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mhonarc; ##---------------------------------------------------------------------------## ## Date variables for date routines ## my %Month2Num = ( 'jan', 0, 'feb', 1, 'mar', 2, 'apr', 3, 'may', 4, 'jun', 5, 'jul', 6, 'aug', 7, 'sep', 8, 'oct', 9, 'nov', 10, 'dec', 11, 'january', 0, 'february', 1, 'march', 2, 'april', 3, 'may', 4, 'june', 5, 'july', 6, 'august', 7, 'september', 8, 'october', 9, 'november', 10, 'december', 11, ); my %WDay2Num = ( 'sun', 0, 'mon', 1, 'tue', 2, 'wed', 3, 'thu', 4, 'fri', 5, 'sat', 6, 'sunday', 0, 'monday', 1, 'tuesday', 2, 'wednesday', 3, 'thursday', 4, 'friday', 5, 'saturday', 6, ); my @wdays = ('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); my @Wdays = ('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'); my @mons = ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); my @Mons = ('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'); ## The following used in parse_date() regexes my $p_weekdays = 'Mon|Tue|Wed|Thu|Fri|Sat|Sun'; my $p_Weekdays = 'Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday'; my $p_months = 'Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec'; my $p_Months = 'January|February|March|April|May|June|July|August'. '|September|October|November|December'; my $p_hrminsec = '\d{1,2}:\d\d:\d\d'; my $p_hrmin = '\d{1,2}:\d\d'; my $p_day = '\d{1,2}'; my $p_year = '\d\d\d\d|\d\d'; ##--------------------------------------------------------------------------- ## Set weekday and month names. This allows localization of ## names. ## sub set_date_names { my($in_wd, $in_Wd, $in_m, $in_M) = @_; @wdays = @$in_wd if defined($in_wd) && scalar(@$in_wd); @Wdays = @$in_Wd if defined($in_Wd) && scalar(@$in_Wd); @mons = @$in_m if defined($in_m) && scalar(@$in_m); @Mons = @$in_M if defined($in_M) && scalar(@$in_M); } ##--------------------------------------------------------------------------- ## Get date in date(1)-like format. $local flag is if local time ## should be used. ## sub getdate { &time2str('', time, $_[0]); } ##--------------------------------------------------------------------------- ## Convert a calander time to a string. ## sub time2str { my($fmt, $time, $local) = @_; my($date) = ""; ## Get current date/time my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = ($local ? localtime($time) : gmtime($time)); ## If format string blank, use default format if ($fmt !~ /\S/) { $fmt = '%a %b %d %H:%M:%S'; $fmt .= ' GMT' unless $local; $fmt .= ' %Y'; } POSIXMODCHK: { last POSIXMODCHK unless $POSIXstrftime; eval { require POSIX; }; last POSIXMODCHK if ($@) || !defined(&POSIX::strftime); return POSIX::strftime($fmt, $sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst); } ## Get here, we have to do it ourselves. my($yearfull, $hour12); $yearfull = $year + 1900; $year = $year % 100; $hour12 = $hour > 12 ? $hour-12 : $hour; ## Format output $fmt =~ s/\%c/\%a \%b \%d \%H:\%M:\%S \%Y/g; $fmt =~ s/\%a/$wdays[$wday]/g; $fmt =~ s/\%A/$Wdays[$wday]/g; $fmt =~ s/\%[bh]/$mons[$mon]/g; $fmt =~ s/\%B/$Mons[$mon]/g; $sec = sprintf("%02d", $sec); $min = sprintf("%02d", $min); $hour = sprintf("%02d", $hour); $hour12 = sprintf("%02d", $hour12); $mday = sprintf("%02d", $mday); $mon = sprintf("%02d", $mon+1); $year = sprintf("%02d", $year); $yearfull = sprintf("%04d", $yearfull); $wday = sprintf("%02d", $wday+1); $yday = sprintf("%03d", $yday); $fmt =~ s/\%d/$mday/g; $fmt =~ s/\%H/$hour/g; $fmt =~ s/\%I/$hour12/g; $fmt =~ s/\%j/$yday/g; $fmt =~ s/\%m/$mon/g; $fmt =~ s/\%M/$min/g; $fmt =~ s/\%n/\n/g; $fmt =~ s/\%p/am/g if ($hour < 12); $fmt =~ s/\%p/pm/g if ($hour >= 12); $fmt =~ s/\%P/AM/g if ($hour < 12); $fmt =~ s/\%P/PM/g if ($hour >= 12); $fmt =~ s/\%S/$sec/g; $fmt =~ s/\%w/$wday/g; $fmt =~ s/\%y/$year/g; $fmt =~ s/\%Y/$yearfull/g; $fmt =~ s/\%\%/\%/g ; $date = $fmt ; $date ; } ##--------------------------------------------------------------------------- ## parse_date takes a string date specified like the output of ## date(1) into its components. Parsing a string for a date is ## ugly since we have to watch out for differing formats. ## ## The following date formats are looked for: ## ## Wdy DD Mon YY HH:MM:SS Zone ## DD Mon YY HH:MM:SS Zone ## Wdy Mon DD HH:MM:SS Zone YYYY ## Wdy Mon DD HH:MM:SS YYYY ## ## The routine keys off of the day of time field "HH:MM:SS" and ## scans realtive to its location. ## ## If the parse fails, a null array is returned. Thus the routine ## may be used as follows: ## ## if ( (@x = &parse_date($date)) ) { Success } ## else { Fail } ## ## If success the array contents are as follows: ## ## (Weekday (0-6), Day of the month (1-31), Month (0-11), ## Year, Hour, Minutes, Seconds, Time Zone) ## ## Contributer(s): Frank J. Manion ## sub parse_date { my($date) = $_[0]; my($wday, $mday, $mon, $yr, $time, $hr, $min, $sec, $zone); my(@array); my($start, $rest); # Try to find the date by focusing on the "\d\d:\d\d" field. # All parsing is then done relative to this location. # $date =~ s/^\s+//; $time = ""; $rest = ""; # Don't use $p_hrmin(sec) vars in split due to bug in perl 5.003. ($start, $time, $rest) = split(/(\b\d{1,2}:\d\d:\d\d)/o, $date, 2); ($start, $time, $rest) = split(/(\b\d{1,2}:\d\d)/o, $date, 2) if !defined($time) or $time eq ""; return () unless defined($time) and $time ne ""; ($hr, $min, $sec) = split(/:/, $time); $sec = 0 unless $sec; # Sometimes seconds not defined # Strip $start of all but the last 4 tokens, # and stuff all tokens in $rest into @array # @array = split(' ', $start); $start = join(' ', ($#array-3 < 0) ? @array[0..$#array] : @array[$#array-3..$#array]); @array = split(' ', $rest); $rest = join(' ', ($#array >= 1) ? @array[0..1] : $array[0]); # Wdy DD Mon YY HH:MM:SS Zone if ( $start =~ /($p_weekdays),*\s+($p_day)\s+($p_months)\s+($p_year)$/io ) { ($wday, $mday, $mon, $yr, $zone) = ($1, $2, $3, $4, $array[0]); # DD Mon YY HH:MM:SS Zone } elsif ( $start =~ /($p_day)\s+($p_months)\s+($p_year)$/io ) { ($mday, $mon, $yr, $zone) = ($1, $2, $3, $array[0]); # Wdy Mon DD HH:MM:SS Zone YYYY # Wdy Mon DD HH:MM:SS YYYY } elsif ( $start =~ /($p_weekdays),?\s+($p_months)\s+($p_day)$/io ) { ($wday, $mon, $mday) = ($1, $2, $3); if ( $rest =~ /^(\S+)\s+($p_year)/o ) { # Zone YYYY ($zone, $yr) = ($1, $2); } elsif ( $rest =~ /^($p_year)/o ) { # YYYY ($yr) = ($1); } else { # zilch, use current year warn "Warning: No year in date ($date), using current\n"; $yr = (localtime(time))[5]; } # Weekday Month DD YYYY HH:MM Zone } elsif ( $start =~ /($p_Weekdays),?\s+($p_Months)\s+($p_day),?\s+($p_year)$/ ) { ($wday, $mon, $mday, $yr, $zone) = ($1, $2, $3, $4, $array[0]); # All else fails! } else { return (); } # Modify month and weekday for lookup $mon = $Month2Num{lc $mon} if defined($mon); $wday = $WDay2Num{lc $wday} if defined($wday); ($wday, $mday, $mon, $yr, $hr, $min, $sec, $zone); } ##--------------------------------------------------------------------------- ## Routine to convert time in seconds to a month, day, and year ## format. The format can be "mmddyy", "yymmdd", "ddmmyy". The ## year can be specifed as "yyyy" if a 4 digit year is needed. ## sub time2mmddyy { my($time, $fmt) = ($_[0], $_[1]); my($day,$mon,$year,$ylen,$tmp); if ($time) { ($day,$mon,$year) = (localtime($time))[3,4,5]; $year += 1900; ## Compute length for year field $ylen = $fmt =~ s/y/y/g; substr($year, 0, 4 - $ylen) = ''; ## Create string if ($fmt =~ /ddmmyy/i) { # DDMMYY $tmp = sprintf("%02d/%02d/%0${ylen}d", $day, $mon+1, $year); } elsif ($fmt =~ /yymmdd/i) { # YYMMDD $tmp = sprintf("%0${ylen}d/%02d/%02d", $year, $mon+1, $day); } else { # MMDDYY $tmp = sprintf("%02d/%02d/%0${ylen}d", $mon+1, $day, $year); } } else { $tmp = "--/--/--"; } } ##--------------------------------------------------------------------------- ## zone_offset_to_secs translates a [+-]HHMM zone offset to ## seconds. ## sub zone_offset_to_secs { my($off) = shift; my($sign, $min); ## Check if just an hour specification if (length($off) < 4) { return $off * 3600; } ## Check for sign if ($off =~ s/-//) { $sign = -1; } else { $sign = 1; s/\+//; } ## Extract minutes $min = substr($off, -2, 2); substr($off, -2, 2) = ""; # Just leave hour in $off ## Translate to seconds $sign * (($off * 3600) + ($min * 60)); } ##---------------------------------------------------------------------------## 1; MHonArc-2014-05-05-snap/lib/mhtxthtml.pl0000644004705000001440000004620411512357136016522 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhtxthtml.pl,v 2.42 2011/01/09 16:12:14 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Library defines routine to filter text/html body parts ## for MHonArc. ## Filter routine can be registered with the following: ## ## text/html:m2h_text_html'filter:mhtxthtml.pl ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1995-2010 Earl Hood, mhonarc@mhonarc.org ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ##---------------------------------------------------------------------------## package m2h_text_html; # Script related attributes: Basically any attribute that starts with "on" my $SAttr = q/\bon\w+\b/; # Script/questionable related elements my $SElem = q/\b(?:applet|embed|form|ilayer|input|layer|link|meta|/. q/object|option|param|select|textarea)\b/; # Elements with auto-loaded URL attributes my $AElem = q/\b(?:img|body|iframe|frame|object|script|input)\b/; # URL attributes my $UAttr = q/\b(?:action|background|cite|classid|codebase|data|datasrc|/. q/dynsrc|for|href|longdesc|lowsrc|profile|src|url|usemap|/. q/vrml)\b/; # Used to reverse the effects of CHARSETCONVERTERS my %special_to_char = ( 'lt' => '<', 'gt' => '>', 'amp' => '&', 'quot' => '"', ); ##--------------------------------------------------------------------------- ## The filter must modify HTML content parts for merging into the ## final filtered HTML messages. Modification is needed so the ## resulting filtered message is valid HTML. ## ## CAUTION: Some of these options can open up a site to attacks. ## The MIMEFILTERS reference page provide additional ## information on the risks associated with enabling ## a given option. ## ## Arguments: ## ## allowcomments Preserve any comment declarations. Normally ## Comment declarations are munged to prevent ## SSI attacks or comments that can conflict ## with MHonArc processing. Use this option ## with care. ## ## allownoncidurls Preserve URL-based attributes that are not ## cid: URLs. Normally, any URL-based attribute ## -- href, src, background, classid, data, ## longdesc -- will be stripped if it is not a ## cid: URL. This is to prevent malicious URLs ## that verify mail addresses for spam purposes, ## secretly set cookies, or gather some ## statistical data automatically with the use of ## elements that cause browsers to automatically ## fetch data: IMG, BODY, IFRAME, FRAME, OBJECT, ## SCRIPT, INPUT. ## ## allowscript Preserve any markup associated with scripting. ## This includes elements and attributes related ## to scripting. The default is to delete any ## scripting markup for security reasons. ## ## attachcheck Honor attachment disposition. By default, ## all text/html data is displayed inline on ## the message page. If attachcheck is specified ## and Content-Disposition specifies the data as ## an attachment, the data is saved to a file ## with a link to it from the message page. ## NOTE: This option can expose your site to ## XSS attacks. ## ## disablerelated Disable MHTML processing. ## ## nofont Remove tags. ## ## notitle Do not print title. ## ## subdir Place derived files in a subdirectory ## # CAUTION: # The script stripping code is probably not complete. Since a # whitelist model is not being used -- because full HTML parsing # would be required (and possible reliance on non-standard modules) -- # Future scripting extensions added to HTML could get by the filtering. # The FAQ mentions the problems with HTML messages and recommends # disabling HTML in archives. sub filter { my($fields, $data, $isdecode, $args) = @_; $args = '' unless defined $args; # Bug-32013 (CVE-2010-4524): Invalid tags cause immediate rejection. # Bug-32014 (CVE-2010-1677): Prevents DoS if massively nested. my $allowcom = $args =~ /\ballowcomments\b/i; strip_comments($fields, $data) unless $allowcom; if ($$data =~ /<[^>]*{'x-mha-charset'}; my($charcnv, $real_charset_name) = readmail::MAILload_charset_converter($charset); if (defined($charcnv) && defined(&$charcnv)) { $$data = &$charcnv($$data, $real_charset_name); # translate HTML specials back $$data =~ s/&([lg]t|amp|quot);/$special_to_char{$1}/g; } elsif ($charcnv ne '-decode-') { do_warn($fields, "Unrecognized character set: $charset"); } ## Unescape ascii letters to simplify strip code dehtmlize_ascii($data); ## Strip out scripting markup: Do this early on so scripting ## data does not infect subsequent filtering operations if ($noscript) { # remove scripting elements and attributes $$data =~ s|]*>.*?||gios; $$data =~ s|]*>.*?||gios; for ($i=0; $$data =~ s|]*>||gio; ++$i) { return bad_html_reject("Nested
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Contacts


    Professional Consulting

    Professional consulting is available. Services provided include, but not limited to: software installation, custom development, and professional support services.

    Contact Earl Hood at earl@earlhood.com for more information.


    Mailing Lists

    Legal Stuff

    Unfortunately, in today's society, we have to have the following:

    User's List

    The mailing list, mhonarc-users@mhonarc.org, provides a forum to discuss the usage of MHonArc.

    Subscribing

    To subscribe to the mailing list, send mail to majordomo@mhonarc.org with the command,

    subscribe mhonarc-users

    as the message body. A confirmation message will be sent to you. Once you confirm your subscription request, you will be subscribed to the list.

    If you send a message to mhonarc-users@mhonarc.org, your message will be distributed to all subscribers on the list.

    NOTE:

    Before posting to the list, make sure to read the legal notice above.

    The list is restricted to subscribers only.

    If you are a subscriber and want to send messages to the list from different addresses, you can register your alternate addresses to the mhonarc-allow@mhonarc.org list.

    To subscribe, send mail to majordomo@mhonarc.org with the body of your message containing the single line

    subscribe mhonarc-allow
    

    You can now send messages to mhonarc-users@mhonarc.org from the address you specified in the subscribe request.

    NOTE:

    The special mhonarc-allow list applies to all mhonarc.org mailing lists. For example, if you subscribe your address to mhonarc-allow, you can also send messages to the development list.

    Unsubscribing

    If you want to unsubscribe to the list, send mail to majordomo@mhonarc.org with the command,

    unsubscribe mhonarc-users

    as the message body.

    List Problems

    If you are having problems with the mailing list -- e.g. problems subscribing, unsubscribing, not receiving messages -- your messages should be directed to mhonarc-users-owner@mhonarc.org

    Archives

    Web archives of the mailing list are available at the following URLs:

    NOTE:

    Archives may not include address obfsucation measures.

    Release Announcements

    All new releases of MHonArc are announced on the user's mailing list. However, if all you want to do is receive release announcements and no other messages, you can subscribe to the MHonArc project at Freshmeat.

    Development List

    The development mailing list for MHonArc is mhonarc-dev@mhonarc.org. This list is for technical discussions about MHonArc development. Appropriate topics include discussions about MHonArc internals, design and analysis, and bug reports.

    NOTE:

    Before posting to the list, make sure to read the legal notice above.

    If you are not sure if you should be subscribed to mhonarc-dev@mhonarc.org, then do not subscribe to it. If you do not know if your message is appropriate for mhonarc-dev@mhonarc.org then send it to the user's list instead. The MHonArc development team will then redirect discussion to the development list or keep it on the user's list.

    People subscribed to the user's list are able to send messages to the development list.

    Subscribing

    To subscribe to the mailing list, send mail to majordomo@mhonarc.org with the command,

    subscribe mhonarc-dev

    as the message body. A confirmation message will be sent to you. Once you confirm your subscription request, you will be subscribed to the list.

    Unsubscribing

    If you want to unsubscribe to the list, send mail to majordomo@mhonarc.org with the command,

    unsubscribe mhonarc-dev

    as the message body.

    List Problems

    If you are having problems with the mailing list -- e.g. problems subscribing, unsubscribing, not receiving messages -- your messages should be directed to mhonarc-dev-owner@mhonarc.org

    Archives

    Web archives of the development mailing list are available at the following URLs:

    NOTE:

    Archives may not include address obfsucation measures.

    CVS Commits List

    The cvs commits mailing list for MHonArc is mhonarc-commits@mhonarc.org. This list receives a summary of commits made to the MHonArc CVS repository.

    Subscribing

    To subscribe to the mailing list, send mail to majordomo@mhonarc.org with the command,

    subscribe mhonarc-commits

    as the message body. A confirmation message will be sent to you. Once you confirm your subscription request, you will be subscribed to the list.

    Unsubscribing

    If you want to unsubscribe to the list, send mail to majordomo@mhonarc.org with the command,

    unsubscribe mhonarc-commits

    as the message body.

    List Problems

    If you are having problems with the mailing list -- e.g. problems subscribing, unsubscribing, not receiving messages -- your messages should be directed to mhonarc-commits-owner@mhonarc.org

    Archives

    Web archives of the cvs commits mailing list are available at the following URLs:

    NOTE:

    Archives may not include address obfsucation measures.


    People

    The people listed here are those responsible for development and support of MHonArc:

    Achim Bohnet
    ach@mpe.mpg.de

    Maintainer of the original MHonArc mailing list archive and user's mailing list. Archive and list are now hosted at mhonarc.org.

    Earl Hood
    earl@earlhood.com

    Creator and developer of MHonArc. Also author of the documention, for what it is worth.

    Christopher Lindsey
    lindsey@mallorn.com

    Administrator of the MHonArc mailing list and the person providing the hosting services for mhonarc.org via Mallorn Computing.

    Steve Pacenka
    sp17@cornell.edu

    Contributer: Helped in making MHonArc run under MS-DOS/Windows environments and help test (in the early days).

    MHonArc users
    mhonarc-users@mhonarc.org

    Everyone who helps answer questions and make comments to improve the quality of MHonArc.


    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    $Date: 2010/12/31 23:39:13 $
    MHonArc
    Copyright © 1997-2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/rcvars.html0000644004705000001440000013277212332046112016315 0ustar ehoodusers MHonArc Reference -- Resource Variables
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Resource Variables


    Overview

    Resource variables are used to represent dynamic data in MHonArc resources. Take the following LITEMPLATE resource setting for example:

    <LiTemplate>
    <li><strong>$SUBJECT$</strong>
    <ul><li><em>From</em>: $FROM$</li></ul>
    </li>
    </LiTemplate>
    

    The LITEMPLATE resource defines how each message listing is displayed in the main index page. The $SUBJECT$ and $FROM$ are resource variables. $SUBJECT$ will get expanded to the current message's subject, hyperlinked to the message page. $FROM$ will be replaced with the message's author's name and address.

    Some resource variables take arguments. Take the following NEXTLINK resource setting for example:

    <li>Next by Date:
    <strong><a href="$MSG(NEXT)$">$SUBJECT(NEXT)$</a></strong>
    </li>
    

    The resource setting uses two resource variables: $MSG$ and $SUBJECT$. However, an argument is given to each resource variable delimited by ( ). $SUBJECT$ will get expanded to the current message's subject[*]. With the "NEXT" argument, we are instructing MHonArc to use the next message's subject. $MSG(NEXT)$ will get expanded to the next message's filename. Therefore, the above resource value is creating a link to the next message in the archive.

    * NOTE:

    In the two examples given, the replacement value of $SUBJECT$ is different (excluding the variable argument difference). For compatibility of older versions of MHonArc, when $SUBJECT$ is used without any arguments, it will be expanded to the current message's subject hyperlinked to the current message page. If an argument is given to $SUBJECT$, then the variable will get expanded only to the subject text of the applicable message. NO hyperlink is automatically created.


    Resource Variable Syntax

    The syntax of resource variables in resources is as follows:

    $VARIABLE[[:[N][J][M][U]][(arglist)]]$
    	  ^----------^^---------^ 
             ^-----------------------^
    

    The items in []'s are optional. The "^---^" are used to highlight the nested optional groupings.

    Definition of each part:

    $

    The start of a resource variable. Everything (including line breaks) up to the next $ is part of the resource variable.

    VARIABLE

    The name of the variable. Variable names are case-sensitive.

    :[N][J][U][M] (optional)

    The optional grouping starting with a colon are variable modifiers. The definition of each modifier is as follows:

    N

    Length specification. MHonArc will clip the expanded text to N if the text length is greater than N.

    NOTE: Not all resource variables support clipping. If a length specification is given for these variables, then it will be ignored.

    How MHonArc clips text is determined by the TEXTCLIPFUNC resource.

    J

    Treat the text as a JavaScript string. MHonArc will escape any quote characters so the text can be part of a JavaScript string.

    M

    Enable mailto linking on expanded string. This modifier is only applicable for the following resource variables: $MSGHFIELD$, $SUBJECT$, $SUBJECTNA$.

    U

    Treat the text as part of a URL string. MHonArc will escape any characters that are considered special in a URL.

    (arglist) (optional)
    An optional argument list delimited by parentheses: ( ). Some resource variables can take arguments which modify how the variable is expanded. If a variable can take more than one argument, each argument will be separated by a semi-colon. For example: $MSGLOCALDATE(NEXT;%H:%M)$. In the example, there are two arguments to the $MSGLOCALDATE$ variable: "NEXT" and "%H:%M".
    $

    The end of a resource variable.

    If an unrecognized variable is encountered, it gets replaced with an empty string, and a warning is generated. If a literal "$" is needed, use "$$".

    NOTE:

    The MAILTOURL and NEWSURL resources have different rules for variable expansion:

    • If a variable does not exactly match the set of variables available for each resource, the variable text will be taken literally as part of the element content. Therefore, a single "$" can be used to represent a "$" character.

    • Variables should NOT have ":NJMU" modifiers. This will prevent the variables from being recognized. MHonArc automatically treats the replacement value as a part of a URL string, so the ":U" modifier is not needed.


    Resource Variable Index

    This sections lists all the resource variables supported by MHonArc. Since many resource variables can take arguments, the following notations are used to represent argument values:

    mesg_spec

    A message specification determines which message the variable's expanded value will be based upon. Possible values are:

    Value -Meaning
    CUR - Current message.
    FIRST - First message listed in main index.
    LAST - Last message listed in main index.
    NEXT - Next message by main sort order.
    PREV - Previous message by main sort order.
    TEND - Last message of current discussion thread.
    TFIRST - First message listed in thread index.
    TLAST - Last message listed in thread index.
    TNEXT - Next message by thread.
    TNEXTIN - Next message within current thread. This differs from TNEXT in that it does not cross discussion thread boundaries.
    TNEXTTOP - First message of next discussion thread.
    TPARENT - Parent message of current thread.
    TPREV - Previous message by thread.
    TPREVIN - Previous message within current thread. This differs from TPREV in that it does not cross discussion thread boundaries.
    TPREVTOP - First message of previous discussion thread.
    TTOP - Top/root message of current discussion thread.

    "CUR" is the default if nothing is specified for mesg_spec.

    idx_page_spec

    An index page specification denoting the index page to use when determing the value of the variable. The possible values are:

    Value- Meaning
    FIRST- First page of main index.
    LAST- Last page of main index.
    NEXT- Next page of main index.
    PREV- Previous page of main index.
    TFIRST- First page of thread index.
    TLAST- Last page of thread index.
    TNEXT- Next page of thread index.
    TPREV- Previous page of thread index.

    If no value is given for idx_page_spec, the resource variable's value is undefined.

    time_fmt_str

    A time format string specifies how a date/time will be printed for a date/time related variable. The syntax of the format string is the same as the conversion specification as defined in the GMTDATEFMT and LOCALDATEFMT resources.

    Variables

    $A_ATTR$
    Arguments: N/A
    Description: The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute provides a destination location when a message links to the index page. This resource variable is equivalent to "$A_NAME$ $A_HREF$".

    $A_HREF$
    Arguments: N/A
    Description: The HREF attribute to use in an anchor to link to the archived message. This variable is equivalent to "href="$MSG$"".

    $A_NAME$
    Arguments: N/A
    Description: The NAME attribute to use in an anchor for messages to link to the index page. This variable is equivalent to "name="$MSGNUM$"".

    $ATTACHMENTURL$
    Arguments: N/A
    Description: The value of the ATTACHMENTURL resource.

    $BUTTON$
    Arguments: mesg_spec
    Description: Button markup linking to a message. The value of $BUTTON$ is determined by the following resources based on mesg_spec value: NEXTBUTTON, NEXTBUTTONIA, PREVBUTTON, PREVBUTTONIA, TENDBUTTON, TENDBUTTONIA, TNEXTBUTTON, TNEXTBUTTONIA, TNEXTINBUTTON, TNEXTINBUTTONIA, TNEXTTOPBUTTON, TNEXTTOPBUTTONIA, TPREVBUTTON, TPREVBUTTONIA, TPREVINBUTTON, TPREVINBUTTONIA, TPREVTOPBUTTON, TPREVTOPBUTTONIA, TTOPBUTTON, TTOPBUTTONIA.

    $DATE$
    Arguments: mesg_spec
    Description: The (raw) date of the message. This variable will expanded to the date string used within the message itself. If you want to customize the formatting of the date, use $MSGLOCALDATE$ or $MSGGMTDATE$ instead.

    $DDMMYYYY$
    Arguments: mesg_spec
    Description: Message date (according to local time) in dd/mm/yyyy format.

    $DOCURL$
    Arguments: N/A
    Description: URL to MHonArc documentation. Value of variable set by the DOCURL resource.

    $ENV$
    Arguments: variable_name
    Description: The value of the environment variable specified by variable_name. For example, $ENV(HOME)$ would expand to the value of the HOME environment variable.

    $FROM$
    Arguments: mesg_spec
    Description: The complete text in the From: field of the message.

    $FROMADDR$
    Arguments: mesg_spec
    Description: The full mail address in the From: field of the message.

    $FROMADDRNAME$
    Arguments: mesg_spec
    Description: The username/local-part of the mail address in the From: field of the message. For example, given the address "someuser@example.com", $FROMADDRNAME$ would equal "someuser".

    $FROMADDRDOMAIN$
    Arguments: mesg_spec
    Description: The domain part of the mail address in the From: field of the message. For example, given the address "someuser@mhonarc.org", $FROMADDRDOMAIN$ would equal "mhonarc.org".

    $FROMNAME$
    Arguments: mesg_spec
    Description: The human name of the person in the From: field of the message. If no human name is found, the local-part specified in the mail address is used.

    $GMTDATE$
    Arguments: time_fmt_str
    Description: Current system GMT date. If no time_fmt_str argument is provided, the format specifed by the GMTDATEFMT resource is used.

    $ICON$
    Arguments: mesg_spec
    Description: The content-type sensistive icon. The type of icon displayed is determined by the ICONS resource.

    $ICONURL$
    Arguments: mesg_spec
    Description: The URL to the content-type sensistive icon. The URL value is determined by the ICONS and ICONURLPREFIX resources.

    $ICONURLPREFIX$
    Arguments: N/A
    Description: Value of the ICONURLPREFIX resource.

    $IDXFNAME$
    Arguments: N/A
    Description: Filename of main index page. The value is set by the IDXFNAME or IDXPREFIX and HTMLEXT resources. If the first page, IDXFNAME is used. For other pages, the filename is IDXPREFIXpage-number.HTMLEXT.

    $IDXLABEL$
    Arguments: N/A
    Description: Label for main index page. Value set by the IDXLABEL resource.

    $IDXPREFIX$
    Arguments: N/A
    Description: Prefix of filenames of main index pages. Value set by the IDXPREFIX resource.

    $IDXSIZE$
    Arguments: N/A
    Description: Max number of messages that may be listed in index page. Value set by the IDXSIZE resource.

    $IDXTITLE$
    Arguments: N/A
    Description: The title of the main index page. Value set by the TITLE resource.

    $LINK$
    Arguments: mesg_spec
    Description: Link markup linking to a message. The value of $LINK$ is determined by the following resources based on mesg_spec value: NEXTLINK, NEXTLINKIA, PREVLINK, PREVLINKIA, TENDLINK, TENDLINKIA, TNEXTLINK, TNEXTLINKIA, TNEXTINLINK, TNEXTINLINKIA, TNEXTTOPLINK, TNEXTTOPLINKIA, TPREVLINK, TPREVLINKIA, TPREVINLINK, TPREVINLINKIA, TPREVTOPLINK, TPREVTOPLINKIA, TTOPLINK, TTOPLINKIA.

    $LOCALDATE$
    Arguments: time_fmt_str
    Description: Current system local date. If no time_fmt_str argument is provided, the format specifed by the LOCALDATEFMT resource is used.

    $MMDDYYYY$
    Arguments: mesg_spec
    Description: Message (local) date in mm/dd/yyyy format.

    $MSG$
    Arguments: mesg_spec
    Description: Filename of message. Filename of the message is determined by the following resources: HTMLEXT, MSGPREFIX.

    $MSGGMTDATE$
    Arguments: mesg_spec
    mesg_spec;time_fmt_str
    Description: GMT date of message. If no time_fmt_str argument is provided, the format specifed by the GMTDATEFMT resource is used.

    $MSGHFIELD$
    Arguments: mesg_spec;field-name
    Description: Message header field value as stored by the FIELDSTORE resource. field-name denotes the name of the field value. The following resources are applied to the expanded string: ADDRESSMODIFYCODE, MAILTOURL (if the ":M" modifier is specified), and SPAMMODE apply.

    $MSGID$
    Arguments: mesg_spec
    Description: The message-id of the message.

    $MSGLOCALDATE$
    Arguments: mesg_spec
    mesg_spec;time_fmt_str
    Description: Local date of message. If no time_fmt_str argument is provided, the format specifed by the LOCALDATEFMT resource is used.

    $MSGNUM$
    Arguments: mesg_spec
    Description: The message number assigned to the message by MHonArc. The number is at least 5 digits wide, padded with leading zeros if actual number is less than 5 digits. For example, message 45 would be 00045.

    $MSGPREFIX$
    Arguments: N/A
    Description: Filename prefix for message files. Value set by the MSGPREFIX resource.

    $MSGTORDNUM$
    Arguments: mesg_spec
    Description: The ordinal message number of the current discussion thread. Numbering starts with the first top/root message of a thread and ends with the last message of the thread, spanning in sub-threads. The following illustrates how the numbering works:
      1. top/root message
        2. first follow-up to 1
          3. first follow-up to 2
          4. second follow-up to 2
        5. second follow-up to 1
          6. first follow-up to 5
            7. first follow-up to 6
        8. third follow-up to 1
    
    The above contains 8 total message in the discussion thread, so numbering goes from 1 to 8.

    $NEWSGROUP$
    Arguments: N/A
    Description: Newsgroup name. This variable is only applicable for use in NEWSURL.

    $NOTE$
    Arguments: mesg_spec
    Description: Message annotation. If annotation text exists for the message, the NOTE resource determines the value of $NOTE$. When no annotation text is defined, NOTEIA is used.

    $NOTETEXT$
    Arguments: mesg_spec
    Description: Base text of message annotation. Variable should be used only within the NOTE resource.

    $NUMFOLUP$
    Arguments: mesg_spec
    Description: Number of explicit follow-ups to the message. This number does NOT include subject-based follow-ups.

    $NUMOFIDXMSG$
    Arguments: N/A
    Description: Number of message listed on the current index page.

    $NUMOFMSG$
    Arguments: N/A
    Description: Total number of messages in the archive.

    $NUMOFPAGES$
    Arguments: N/A
    Description: Total number of index pages for a given index type.

    $ORDNUM$
    Arguments: mesg_spec
    Description: The current listing number of the message. Number starts at 1.

    $OUTDIR$
    Arguments: N/A
    Description: Pathname of archive. Value set by the OUTDIR resource.

    $PAGENUM$
    Arguments: N/A
    Description: Current index page number.

    $PG$
    Arguments: idx_page_spec
    Description: Filename of an index page. Value determined by the HTMLEXT, IDXFNAME, IDXPREFIX, TIDXFNAME, and TIDXPREFIX resources. Which resources are in effect depends on the current context.

    $PGLINK$
    Arguments: idx_page_spec
    Description: Markup linking to a main index page. Value determined by the FIRSTPGLINK, LASTPGLINK, NEXTPGLINK, NEXTPGLINKIA, PREVPGLINK, PREVPGLINKIA, TFIRSTPGLINK, TLASTPGLINK, TNEXTPGLINK, TNEXTPGLINKIA, TPREVPGLINK, and TPREVPGLINKIA, resources. The resource used depends on idx_page_spec and context.

    $PGLINKLIST$
    Arguments: num;num
    Description:

    Markup linking to a list of index pages. $PGLINKLIST$ takes two arguments: the first is the number of pages before the current page to create links to; the second is the number of pages after the current page to create links to. If either number argument is prefixed with a 'T', then the list of links apply to the thread index. Examples: $PGLINKLIST(3;3)$, $PGLINKLIST(T2;T3)$. The link text for a given page is the page number, with the current page not linked. For example, if the current index page is 5, $PGLINKLIST$ would expand to something like the following:

    1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

    If no arguments are provided to $PGLINKLIST$, then the links to all index pages will be printed. To get the entire list for a thread index, use $PGLINKLIST(T)$.


    $PROG$
    Arguments: N/A
    Description: Program name. Generally, it will be "mhonarc", but it can vary if MHonArc is called via a custom front-end or installed under a different name.

    $SUBJECT$
    Arguments: mesg_spec
    Description: The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message. This behavior exists for backwards capatibility to provide a simple way to link to the current message using the subject as the link text. The no argument version is equivalent to: "<a $A_ATTR$>$SUBJECTNA$</a>".

    $SUBJECTNA$
    Arguments: mesg_spec
    Description: The subject text of the message without the anchor element.

    $TIDXFNAME$
    Arguments: N/A
    Description: Filename of thread index page. The value is set by the TIDXFNAME or TIDXPREFIX and HTMLEXT resources. If the first page, TIDXFNAME is used. For other pages, the filename is TIDXPREFIXpage-number.HTMLEXT.

    $TIDXLABEL$
    Arguments: N/A
    Description: Label for thread index page. Value set by the TIDXLABEL resource.

    $TIDXPREFIX$
    Arguments: N/A
    Description: Prefix of filenames of thread index pages. Value set by the TIDXPREFIX resource.

    $TIDXTITLE$
    Arguments: N/A
    Description: The title of the thread index page. Value set by the TTITLE resource.

    $TLEVEL$
    Arguments: mesg_spec
    Description: Numeric level of message in current thread, starting with zero.

    $TO$
    Arguments: N/A
    Description: The mail address. This variable is only applicable for use in the MAILTOURL.

    $TOADDRNAME$
    Arguments: N/A
    Description: The username/local-part of the e-mail address. For example, given the address "someuser@example.com", $TOADDRNAME$ would equal "someuser". This variable is only applicable for use in the MAILTOURL.

    $TOADDRDOMAIN$
    Arguments: N/A
    Description: The domain part of the e-mail address. For example, given the address "someuser@example.com", $TOADDRDOMAIN$ would equal "example.com". This variable is only applicable for use in the MAILTOURL.

    $TSLICE$
    Arguments: number;number;flag
    Description: A slice of the thread listing relative to the current message. Size of slice is determined by the TSLICE resource, or explicitly by the arguments provided. The first argument is the number of maximum messages to list before the current message. The second argument is the number of maximum message messages to list after the current message. The third argument is a flag, 0 or 1, denoting if slice should cross discussion thread boundaries or not. If any of the arguments are blank, the value defined in the TSLICE resource will be used.

    Layout appearance of $TSLICE$ is determined by TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, and TSLICETOPENDCUR resources.


    $VERSION$
    Arguments: N/A
    Description: Program version.

    $YYYYMMDD$
    Arguments: N/A
    Description: Message (local) date in yyyy/mm/dd format.


    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    $Date: 2005/07/08 05:27:52 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/utils/0000755004705000001440000000000012332046112015253 5ustar ehoodusersMHonArc-2014-05-05-snap/doc/utils/mha-dbrecover.html0000644004705000001440000000737712332046112020675 0ustar ehoodusers mha-dbrecover - rebuild a MHonArc archive database
     mha-dbrecover - rebuild a MHonArc archive database


    NAME

    mha-dbrecover - rebuild a MHonArc archive database


    SYNOPSIS

    mha-dbrecover [options]


    DESCRIPTION

    mha-dbrecover is a utility program that is part of the MHonArc software package. The program allows can be used to rebuild a MHonArc archive database from the HTML message files. This allows database recovery if the database gets corrupted or accidentally deleted.

    The documentation for MHonArc is distributed in HTML format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see AVAILABILITY on where you can access the documentation on the web.


    OPTIONS

    mha-dbrecover takes all the options available to mhonarc along with the following additional options:

    -dbr-startnum #

    The starting message number to recover data from. This option is useful if you have many message files in a directory, but you only want to recover a subset of the files.

    If this option is not specified, the starting number is 0.

  • -dbr-endnum #

    The ending message number to recover data from. This option is useful if you have many message files in a directory, but you only want to recover a subset of the files.

    If this option is not specified, all messages starting from -dbr-startnum will be recovered.

    NOTE: Only a subset of the options available to mhonarc are actually supported since many options are not applicable for recovering operations.


    AVAILABILITY

    <http://www.mhonarc.org/>


    AUTHOR

    Earl Hood, mhonarc@mhonarc.org

    MHonArc comes with ABSOLUTELY NO WARRANTY and MHonArc may be copied only under the terms of the GNU General Public License, which may be found in the MHonArc distribution.

     mha-dbrecover - rebuild a MHonArc archive database
    MHonArc-2014-05-05-snap/doc/utils/mha-decode.html0000644004705000001440000000755312332046112020141 0ustar ehoodusers mha-decode - Decode MIME messages
     mha-decode - Decode MIME messages


    NAME

    mha-decode - Decode MIME messages


    SYNOPSIS

    mha-decode [optionsmailfolder ...

    mha-decode [options] -single msg.822


    DESCRIPTION

    mha-decode is a utility program that is part of the MHonArc software package. mha-decode provides basic MIME decoding for mail messages.

    If given mail folders as input, all messages within in the mail folders will be decoded. All message parts are written to files. If a filename is specified for a message part, that filename will be used when writing the part to a file. If no filename is specified in the message, a unique name will be used based upon the content-type of the message part.

    A single message can be decoded by using the -single option.


    OPTIONS

    mha-decode takes options available to mhonarc, but only those options affect parsing of mail folders are applicable: -conlen, -mhpattern, -msgsep, -noconlen, -outdir, -perlinc, -rcfile, -single, -umask.

    Also, mha-decode supports the following additional options:

    -dcd-digest

    Run in message digest mode. When this option is specified, any embedded message/rfc822 and message/news parts will be saved instead of recursively decoding any parts contained within.


    NOTES

    The documentation for MHonArc is distributed in HTML format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see AVAILABILITY on where you can access the documentation on the web.


    AVAILABILITY

    <http://www.mhonarc.org/>


    AUTHOR

    Earl Hood, mhonarc@mhonarc.org

    MHonArc comes with ABSOLUTELY NO WARRANTY and MHonArc may be copied only under the terms of the GNU General Public License, which may be found in the MHonArc distribution.

     mha-decode - Decode MIME messages
    MHonArc-2014-05-05-snap/doc/utils/mha-dbedit.html0000644004705000001440000000522412332046112020142 0ustar ehoodusers mha-dbedit - make database edits to a MHonArc archive
     mha-dbedit - make database edits to a MHonArc archive


    NAME

    mha-dbedit - make database edits to a MHonArc archive


    SYNOPSIS

    mha-dbedit [options]


    DESCRIPTION

    mha-dbedit is a utility program that is part of the MHonArc software package. The program allows archive database edits to be made without causing HTML pages to be touched.

    The documentation for MHonArc is distributed in HTML format. Due to its size and organization, it is not suited for manpage format. Consult your system administrator for where the documentation has been installed, or see AVAILABILITY on where you can access the documentation on the web.


    EXAMPLE

    Typical usage:

      shell> mha-dbedit -rcfile res.mrc -outdir /path/to/archive


    AVAILABILITY

    <http://www.mhonarc.org/>


    AUTHOR

    Earl Hood, mhonarc@mhonarc.org

    MHonArc comes with ABSOLUTELY NO WARRANTY and MHonArc may be copied only under the terms of the GNU General Public License, which may be found in the MHonArc distribution.

     mha-dbedit - make database edits to a MHonArc archive
    MHonArc-2014-05-05-snap/doc/intro.html0000644004705000001440000001612612332046112016142 0ustar ehoodusers MHonArc Reference -- Introduction
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Introduction


    What is MHonArc?

    MHonArc is a Perl program for converting mail or news messages into HTML archives. It can also be used to convert individual messages into HTML documents. Other capabilities include robust MIME support and powerful user customization features.


    Why Use MHonArc?

    Here are some reasons for using MHonArc:

    • You want to keep organized archives of mail or news articles for a World Wide Web (WWW) server; complete with live hypertext pointers to their authors and to any url's mentioned.
    • You would like to control the layout of your archives to keep a consistent style to your WWW pages.
    • You have MIME messages that you want to include in your archives.
    • You have a WWW client, but no MIME mail reader. MHonArc will allow you to read MIME messages that includes images, audio, video, etc via your Web client.
    • Multi-platform support: Unix, Windows, MacOS, etc. Basically, MHonArc should be usable on any platform that Perl has been ported to.
    • MHonArc is free software.
    • You think the MHonArc logo is really cool, and it deserves to be used.
    • You like Perl, and you want to see what it can do.
    • Just cuz.

    Availability

    The latest information about MHonArc, including its its availability, may be obtained at <http://www.mhonarc.org/>.


    License

    MHonArc is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

    WARNING:

    MHonArc is NOT in the public domain, applicable copyrights still apply. Using MHonArc that is inconsistent with the licensing terms is a violation of copyright law.

    If you cannot agree with the licensing terms and would like to use MHonArc under a different license, contact mhonarc@mhonarc.org.


    Where to Get Help?

    1. Read this documentation.

    2. Read the FAQ.

    3. Subscribe and post to one of the mailing lists described in the Contacts section. Searchable archives of the lists exist which provides a historical collection of helpful information.

    Professional consulting is also available. Contact earl@earlhood.com with your request.


    Documentation Nomenclature

    NOTE:

    Some rendering style semantics may not be available if viewing this documentation with a text-based and/or a non-CSS capable browser.

    Shell examples are rendered as follows:

    prompt> ls -CF
    ACKNOWLG  contrib/  etc/       INSTALL      Makefile.PL     mha-decode*  TODO
    admin/    COPYING   examples/  install.me*  man/            mhonarc*
    BUGS      dev.mk    extras/    lib/         mha-dbedit*     README
    CHANGES   doc/      FILELIST   logo/        mha-dbrecover*  RELNOTES
    

    The text prompt> represents your shell prompt. Text you would type into the shell is rendered like this: text you enter. Any other text is example output generated by the computer.

    Code examples are rendered as follows:

    <DefineVar>
    MY-FOOTER-LINK
    <hr>
    Please visit <a href="http://www.mhonarc.org">www.mhonarc.org</a>.
    </DefineVar>
    

    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    $Date: 2003/10/06 22:04:14 $
    MHonArc
    Copyright © 1997-2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/home.png0000644004705000001440000000125607451276546015603 0ustar ehoodusersPNG  IHDR D PLTEf3ߛ~،ՊӫkfЅ̙fhbƵŪũh®\uwdZ_] iiq.OqbXXNo eL4a5`+^E'^D^5^3 [E-VItV;#O+K' KHBUD*B5 43b"""7<!5tRNS@fbKGDW} DIDATx͒R0FZbbT D+Px ?iQڂ9% oFo<#d]x;~/ׄ&_]o'(iVvRS V)PX.̿ǔ<8Z`gũkX6Z2lX͏ IP8z@/Xen| 2\bcPRƳ<^g~f z %>c `7vl} V̴Kf ,3D]LmɆ$@3 a+0wVXVsWZ0K'giTG F&?P ArIENDB`MHonArc-2014-05-05-snap/doc/COPYING0000644004705000001440000004313107466542002015163 0ustar ehoodusers GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. MHonArc-2014-05-05-snap/doc/resources.html0000644004705000001440000015063312332046112017023 0ustar ehoodusers MHonArc Reference -- Resources
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Resources


    Overview

    All MHonArc behavior is controlled by resources. Resources may be set via environment variables (envariables for short), command-line options, and/or elements in a resource file. For example, the MAXSIZE resource tells MHonArc the maximum number of messages in an archive. To set the resource, you can use the -maxsize command-line option, the M2H_MAXSIZE envariable, or the <MAXSIZE> resource file element.

    For information on the syntax and usage of MHonArc resource files, see the RCFILE resource.


    Resource Types

    There are four basic types of resources:

    boolean

    Boolean resources are resources that are either on or off; active or deactive; or true or false. They basically work as flags for controlling MHonArc behavior.

    string

    The resource represents a string value. How the string value is used depends on the resource.

    list

    The resource is a list of values. How the list is used depends on the resource.

    one-shot

    One-shot resources are resources that apply only to the current MHonArc process. You can tell if a resource is a one-shot by checking if the resource cannot be defined by a resource file element. One-shot resources are set only by command-line options or envariables.

    A resource's type can be determined by reading the description for the resource.

    All resources, except one-shots, are stored with the archive in a simple database. Therefore, after the first time you run MHonArc on an archive, you do not need to respecify the resources. MHonArc will remember your settings so subsequent archive updates are faster to execute.


    Resource Index

    Each resource is described on its own page. Each resource page uses the following template:

    Syntax

    Brief synopsis on how the resource can be defined. Command-line options take precedence over resource file elements. Resource file elements take precedence over environment variables ("envariables" for short). See RCFILE for more information on how resources are defined in a resource file. See your system's documentation on how to define envariables.

    Description

    Description of the resource.

    Default Setting

    The default value of the resource, if applicable.

    Resource Variables

    Applicable resource variables that can be used for the resource.

    Examples

    Example uses of the resource.

    Version

    The version of MHonArc the resource became available. Note, the actual description of the resource may not be applicable for the version number listed. I.e. The behavior of the resource may have changed in later releases.

    See Also

    Links to related documentation.

    Resource list

    The following is a list of all the MHonArc resources available. For a list of resource by envariable, resource file element, and/or command-line option, see Appendix: Resource Indexes.

    ResourceDescription
    ADDAdd messages to the archive.
    ADDRESSMODIFYCODEPerl expressions modifying displayed addresses in headers.
    AFSSkip archive directory permission check.
    ANNOTATEAdd/set annotation for message(s).
    ARCHIVECreate archive.
    ATTACHMENTDIRFilesytem location of attachments.
    ATTACHMENTURLBase URL to attachments.
    AUTHORBEGINMarkup at the start of a author group.
    AUTHORENDMarkup at the end of a author group.
    AUTHSORTSort main index by author.
    BOTLINKSLinks markup at the bottom of message pages.
    CHARSETALIASESCharater set aliases.
    CHARSETCONVERTERSCharater set filter functions.
    CHECKNOARCHIVEHonor "no archive" flag in messages.
    CONLENUse Content-Length value.
    DATEFIELDSList of fields to extract date of message.
    DAYBEGINMarkup at the start of a day group.
    DAYENDMarkup at the end of a day group.
    DBFILEName of archive database file.
    DBFILEPERMSFile permissions for DBFILE.
    DECODEHEADSStore "decode-only" characters sets in raw form.
    DEFCHARSETDefault character set for text data.
    DEFINEDERIVEDDefine extra file(s) to generate for each message page.
    DEFINEVARDefine a custom resource variable.
    DEFRCFILEPathname of default resource file.
    DEFRCNAMEName of default resource file.
    DOCAdd link to documentation.
    DOCURLURL to documentation
    EDITIDXModify archive with new resource settings.
    EXCSList of header fields to exclude.
    EXPIREAGELength of time to keep a message in an archive.
    EXPIREDATEExpiration of date of message.
    FASTTEMPFILESUse non-random temporary filenames.
    FIELDORDEROrder to display message header fields.
    FIELDSBEGBeginning markup of message header.
    FIELDSENDEnding markup of message header.
    FIELDSTOREMessage header fields to store in database.
    FIELDSTYLESDefine HTML elements that wrap field text of message headers.
    FILEPERMSFile permissions for archive files.
    FIRSTPGLINKLink markup for first page of main index.
    FLDBEGMarkup before field text.
    FLDENDMarkup after field text.
    FOLLOWSYMLINKSAllow/follow symlinks.
    FOLREFSPrint links links to explicit follow-ups and references.
    FOLUPBEGINBeginning markup of follow-up links in message pages.
    FOLUPENDEnding markup of follow-up links in message pages.
    FOLUPLITXTMarkup for a follow-up link.
    FORCEForce archive operation even if lock cannot be obtained.
    FROMFIELDSList of fields to extract author of a message.
    GENIDXGenerate a message index to standard output.
    GMTDATEFMTConversion specification for GMT dates.
    GZIPEXEPathname to gzip executable.
    GZIPFILESGzip files.
    GZIPLINKSAssume files are gzipped when creating links.
    HEADBODYSEPMarkup separating the message head from the body.
    HTMLEXTExtension to use for HTML files.
    ICONSContent-type to icon mapping.
    ICONURLPREFIXPrefix for icon URLs.
    IDXFNAMEFilename for main (first) index page.
    IDXLABELLabel for main index.
    IDXPGBEGINBeginning markup for main index pages.
    IDXPGENDEnding markup for main index pages.
    IDXPGSSMARKUPMarkup at the beginning of all index pages.
    IDXPREFIXFilename prefix for multi-page main index.
    IDXSIZESize of each index page.
    INCLUDEInclude a resource file.
    KEEPONRMMDo not physically delete message files when message removed from archive.
    LABELBEGBeginning markup of the label text of a message field.
    LABELENDEnd markup of the label text of a message field.
    LABELSTYLESDefine HTML elements to wrap message header field labels.
    LANGSet locale.
    LASTPGLINKLink markup for last page of main index.
    LISTBEGINMarkup to begin main index message listing.
    LISTENDMarkup to end main index message listing.
    LITEMPLATEMarkup for an entry in the main index message list.
    LOCALDATEFMTConversion specification for printing local date.
    LOCKPerform a lock on the archive.
    LOCKDELAYWait time between lock attempts.
    LOCKFILEName of the lock file.
    LOCKMETHODHow archive locks are done.
    LOCKTRIESTotal number of time to attempt a lock before failing.
    MAILTOConvert email addresses in message headers to hyperlinks.
    MAILTOURLURL template to use when MAILTO is set.
    MAINCreate main index.
    MAXSIZEMaximum number of messages in an archive.
    MHPATTERNRegex for matching message files in an MH folder (directory).
    MIMEALTPREFSContent-type preferences for multipart/alternative data.
    MIMEARGSArguments to MIME filters.
    MIMEDECODERSContent-Transfer-Encoding decoding functions.
    MIMEEXCSContent-types to exclude.
    MIMEFILTERSMapping of MIME filters to content-types.
    MIMEINCSContent-types to allow.
    MODIFYBODYADDRESSESApply ADDRESSMODIFYCODE to text message bodies.
    MODTIMESet modification time on message files to message dates.
    MONTHSMonth names.
    MONTHSABRAbbreviated month names.
    MSGBODYENDMarkup after the message body.
    MSGEXCFILTERPerl expression(s) to selectively exclude messages.
    MSGFOOTMarkup at the foot of each message page.
    MSGGMTDATEFMTGMT conversion specification for message dates.
    MSGHEADMarkup at the head of each message page.
    MSGIDLINKHyperlink markup for embedded message-ids in message pages.
    MSGLOCALDATEFMTLocal conversion specification for message dates.
    MSGPGBEGINStarting markup for each message page.
    MSGPGENDEnding markup for each message page.
    MSGPGSPrint message pages.
    MSGPGSSMARKUPMarkup at the beginning of all message pages.
    MSGPREFIXPrefix for message page filenames.
    MSGSEPRegex for matching message separator in mailbox files.
    MULTIPGCreate multi-page indexes.
    NEWSHyperlink newsgroups in message headers.
    NEWSURLURL template to use for newsgroup links.
    NEXTBUTTONButton markup for next message by main index.
    NEXTBUTTONIAInactive button markup for next message by main index.
    NEXTLINKLink markup for next message by main index.
    NEXTLINKIAInactive link markup for next message by main index.
    NEXTPGLINKLink markup for next page of main index.
    NEXTPGLINKIAInactive link markup for next page of main index.
    NOSUBJECTTXTRaw subject text to use for messages without a subject.
    NOTEMarkup for representing the annotation of a message.
    NOTEDIRDirectory to store annotations.
    NOTEIAMarkup when no annotation is available for a message.
    NOTETEXTAnnotation text.
    OTHERINDEXESList of alternate indexes to create for an archive.
    OUTDIRLocation of archive.
    PERLINCAdditional Perl include paths.
    POSIXSTRFTIMEUse POSIX's strftime() for converted time format strings.
    PREVBUTTONButton markup for previous message by main index.
    PREVBUTTONIAInactive button markup for previous message by main index.
    PREVLINKLink markup for previous message by main index.
    PREVLINKIAInactive link markup for previous message by main index.
    PREVPGLINKLink markup for previous page of main index.
    PREVPGLINKIAInactive link markup for previous page of main index.
    PRINTXCOMMENTSPrint <!--X-...--> comments in generated pages.
    QUIETDo not output status.
    RCFILEResource file to read before processing input.
    RECONVERTReconvert existing messages.
    REFSBEGINBeginning markup for explicit reference links in message pages.
    REFSENDEnding markup for explicit reference links in message pages.
    REFSLITXTMarkup representing a reference entry in explicit reference links.
    REVERSEReverse the listing order in the main index.
    RMMRemove specified messages from an archive.
    SAVERESOURCESSave resource values in database.
    SCANList archive messages to standard output.
    SINGLEProcess a single message.
    SORTList messages by date in main index.
    SPAMMODEPerform actions to deter email address harvesters.
    SSMARKUPDefault markup at the beginning of all generated pages.
    STDERRFile for standard error messages.
    STDINFile to treat as standard input.
    STDOUTFile for standard output messages.
    SUBJECTARTICLERXPRegex for matching leading articles in message subjects.
    SUBJECTBEGINBeginning markup for a subject group in the main index.
    SUBJECTENDEnding markup for a subject group in the main index.
    SUBJECTHEADERMain subject line markup above message header.
    SUBJECTREPLYRXPRegex for matching subject text denoting a reply message.
    SUBJECTSTRIPCODEPerl expressions to strip subject text while reading messages.
    SUBJECTTHREADSCheck subjects when computing message threads.
    SUBSORTList messages by subjext in main index.
    TCONTBEGINMarkup before the continuation of a broken thread.
    TCONTENDMarkup after the continuation of a broken thread.
    TENDBUTTONButton markup for last message in thread.
    TENDBUTTONIAInactive button markup for last message in thread.
    TENDLINKLink markup for last message in thread.
    TENDLINKIAInactive link markup for last message in thread.
    TEXTCLIPFUNCPerl function to use for text clipping operations.
    TEXTENCODEEncode message text to given character encoding.
    TFIRSTPGLINKLink markup for first page of thread index.
    TFOOTFooter markup for thread index page.
    THEADHeader markup for thread index page.
    THREADCreate thread index.
    TIDXFNAMEFilename of first thread index page.
    TIDXLABELLabel string for the thread index.
    TIDXPGBEGINBeginning markup for the thread index pages.
    TIDXPGENDEnding markup for the thread index pages.
    TIDXPGSSMARKUPMarkup at the beginning of all thread index pages.
    TIDXPREFIXFilename prefix for thread index pages beyond the first page.
    TIMEZONESHour offsets for timezones.
    TINDENTBEGINMarkup for opening a level when continuing a broken thread.
    TINDENTENDMarkup for closing a level when continuing a broken thread.
    TITLETitle for main index.
    TLASTPGLINKLink markup for last page of thread index.
    TLEVELSMaximum number of levels to indent in thread index.
    TLIENDEnding markup for a thread index message listing.
    TLINONEMarkup for a missing message in thread index.
    TLINONEENDEnding markup for a missing message in thread index.
    TLITXTMarkup for a thread index message listing.
    TNEXTBUTTONButton markup for next message by thread.
    TNEXTBUTTONIAInactive button markup for next message by thread.
    TNEXTINBUTTONButton markup for next message within a thread.
    TNEXTINBUTTONIAInactive button markup for next message within a thread.
    TNEXTINLINKLink markup for next message within a thread.
    TNEXTINLINKIAInactive link markup for next message within a thread.
    TNEXTLINKLink markup for next message by thread.
    TNEXTLINKIAInactive link markup for next message by thread.
    TNEXTPGLINKLink markup for next page in thread index.
    TNEXTPGLINKIAInactive link markup for next page in thread index.
    TNEXTTOPBUTTONButton markup for first message in the next thread.
    TNEXTTOPBUTTONIAInactive button markup for first message in the next thread.
    TNEXTTOPLINKLink markup for first message in the next thread.
    TNEXTTOPLINKIAInactive link markup for first message in the next thread.
    TOPLINKSMarkup for top navigational links of a message page.
    TPREVBUTTONButton markup for previous message by thread.
    TPREVBUTTONIAInactive button markup for previous message by thread.
    TPREVINBUTTONButton markup for previous message within a thread.
    TPREVINBUTTONIAInactive button markup for previous message within a thread.
    TPREVINLINKLink markup for previous message within a thread.
    TPREVINLINKIAInactive link markup for previous message within a thread.
    TPREVLINKLink markup for previous message by thread.
    TPREVLINKIAInactive link markup for previous message by thread.
    TPREVPGLINKLink markup for previous page in thread index.
    TPREVPGLINKIAInactive link markup for previous page in thread index.
    TPREVTOPBUTTONButton markup for first message in the previous thread.
    TPREVTOPBUTTONIAInactive button markup for first message in the previous thread.
    TPREVTOPLINKLink markup for first message in the previous thread.
    TPREVTOPLINKIAInactive link markup for first message in the previous thread.
    TREVERSEList thread in reverse order.
    TSINGLETXTMarkup for a thread listing with no follow-ups.
    TSLICESize of thread listing slice for message pages.
    TSLICEBEGMarkup for the start of a thread slice.
    TSLICECONTBEGThread slice markup before the continuation of a broken thread.
    TSLICECONTENDThread slice markup after the continuation of a broken thread.
    TSLICEENDMarkup for the end of a thread slice.
    TSLICEINDENTBEGThread slice markup for opening a level when continuing a broken thread.
    TSLICEINDENTENDThread slice markup for closing a level when continuing a broken thread.
    TSLICELEVELSMaximum number of levels to indent in thread slices.
    TSLICELIENDEnding markup for a thread slice message listing.
    TSLICELIENDCUREnding markup for a thread slice message listing if current message.
    TSLICELINONEThread slice markup for a missing message in thread slice.
    TSLICELINONEENDEnding markup for a missing message in thread slice.
    TSLICELITXTMarkup for a thread slice message listing.
    TSLICELITXTCURMarkup for a thread slice message listing if current message.
    TSLICESINGLETXTMarkup for a thread slice listing with no follow-ups.
    TSLICESINGLETXTCURMarkup for a thread slice listing with no follow-ups if current message.
    TSLICESUBJECTBEGMarkup before a subject based thread slice listing.
    TSLICESUBJECTENDMarkup after a subject based thread slice listing.
    TSLICESUBLISTBEGThread slice markup for starting a sub-thread.
    TSLICESUBLISTENDThread slice markup for ending a sub-thread.
    TSLICETOPBEGThread slice markup for the root/start of a thread.
    TSLICETOPBEGCURThread slice markup for the root/start of a thread if current message.
    TSLICETOPENDThread slice markup for the end of a thread.
    TSLICETOPENDCURThread slice markup for the end of a thread if current message.
    TSORTList threads by date.
    TSUBJECTBEGMarkup before a subject based thread listing.
    TSUBJECTENDMarkup after a subject based thread listing.
    TSUBLISTBEGMarkup for starting a sub-thread.
    TSUBLISTENDMarkup for ending a sub-thread.
    TSUBSORTList threads by subject.
    TTITLETitle of thread index.
    TTOPBEGINMarkup for the root/start of a thread.
    TTOPBUTTONButton markup for first message in thread.
    TTOPBUTTONIAInactive button markup for first message in thread.
    TTOPENDMarkup for the end of a thread.
    TTOPLINKLink markup for first message in thread.
    TTOPLINKIAInactive link markup for first message in thread.
    UMASKUmask value for the MHonArc process.
    USELOCALTIMEUse local time to determine day groups in main index listing.
    USINGLASTPG$LASTPG$ is used in resource values.
    VARREGEXPerl regular expression matching a resource variable.
    WEEKDAYSWeekday names.
    WEEKDAYSABRAbbreviated weekday names.

    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    $Date: 2010/12/31 20:33:58 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/blank.png0000644004705000001440000000014107451276546015732 0ustar ehoodusersPNG  IHDR [GYtRNSv8bKGD̿ IDATxc`IENDB`MHonArc-2014-05-05-snap/doc/stampwb2.png0000644004705000001440000005154707451276546016422 0ustar ehoodusersPNG  IHDRh4/#PLTEsss!)B9J!ZckB!R)ckscksJ)c9sB{JkB{քތZ9sJ΄֌cBޜƽ)!!{)!!!!!!s{!{!tRNS@fbKGD`ŷ|QIDATx}{G/x(jfv1ĞX3v<3(+>n5xoS ùުh_I^@W3k㼁o|}|[oܿ͠qWo_ 7 GB*_)aRVׂ~Zk7.W_K}x}R+_9G+J>0ʭj_j[qjƅJYc&|ՠ&3Ц_Y1}cӊu`VW~7ݬVZGW Q?+[a_g+!M@oІ0[q z+_>0ׇׅ<[}Vk_[sj}~ܼ^EͽM~?3\Y% ~%rې(8~5MbWU noAn*nۀ7Wt}IBq|i:lwg}ŎPؔAx7+d y*J?[j$܁K D7_վKQ[]~~x~+4}K>*CMMݼwμf?__0ƛ?S,5̗b8ub ؾE7L"o"̯iƹZ3N&=DftKBo/q% u _ި0Q H回ӌպF'_yx\מ׌X]aǿvt/2ʵ l !2^N~?6s:٠a& zi|PwuǷcߙ.;. mF?fËk}/@ˬjM?3~}-;< 5@uh;-#y Dg2M>Gۍ_Hx++~g1 hClx0Ol_c6^L-ӛ(na}r"@XTJ5͟gBwE٠,oa oiw_ lfF8oTЈ-|r{as|2k%;I"ߢs9J6!^+ztSh۲hwvwܒd7tԢ?3ןM y6 uNDoIfjOkMqBnmoGnE$F3.dܹ/%][᏶&9þx+u _tdgg7X:݄nx-[sЗ]N-} \Rߒ]]Z޿M@Tzu3iG8!$i!+ [0VceKg6&&Ч|j]2J/^R6-$\x>aFLFX߸5Z]l1|]>ݎ gК;2q*07b T In[Ŕ.Z/1ђ!ǥ&dU?f B7uu@V^aQ+r )z^B#zyv9|=2Z᫼ Bn 8WYM-`}*ԣ!% 6+;B[>o'_%jMU49d|\js40bLFo䷷|em^F_EU ԣe!m;w_*]sG˄fj5F/*Ctd9!:bJt n(y}jؽes0;-UXwA DylGA 6k(Dˑt4'#̞$ oFHݾi"_:Lx_p M,0%0?_Ƿ_97!<W 9 U>x0A<~m]2<({l>N6zzCqDRmD ڹMޔV}@6&W"4J3|[/qmCH{wـjUA[F+g9v+וv{9ce~nt.D[P_J7gN(|f*;J_(͹{Q{ ;W%Vo k=P:hXJ=b]~l.ޣp׻wWI]u=Ϳ'|٭<$3z &Ɉd4C1H71lO}z^4ؘ$o[+cW³Rl\/՜FekNb5?Fq.zU< ss=zW7!}b~P1ͳ(|=NsƝ}`-O4)G^&}*eqztKv| e2π8#Fm[k]G#/БSyT dRb/߀н&`sKXrf}.LRr9ǿ]vw-.wGlp X_!3CKtd$sFqGp+zKoJhHm7E)ܼիwC(ܡ̰J.oz2vlsK#&Q9RExFU }țjt m۝` [ā3H'5 !͗moIeYHZH WؖI-ɆPZuy,h9"/n4m.aE߿^^~%cmyP߬ hnۯ6CD|T# 2aKX?$-Ϸ?|_?"))-GE<GȎж'1ZQs m/g+юZ+tԪmk}M頉70ࢫvHϏz>,ׂևWkl Ua'D8$k݉c|dI{#(I߿gvK;iPJڎ^>ڷ(G*Ia9Jå1(ۻԖ @ڬY4J@dQvi651e"J ?D+ipvDJJ/%7OK=)ұv= |?ڮ} 8EmHZmaJK[ :ATύiZdG>}|&K7='|?sj$ 36u΁1G(cT<@5K ང JIvͲOhjʷѾypG 'n|i1V$A_q/ЌX O6v r"J֨ޒb3&@\PB逗z[?|^' D>4+Jie ÞT簰g-=\u-Q-'7yDPs03G&{qd -"~.h|αsm}x oJZ?9<7XIӡ$t5Bla;"ДWHa7 Ӂr+0F%HB}yJz?EݕZ8}^Y-LҝVƟP0Ghjd*DbeH}$Ժ8y~ 2qb |I#rz8y.JAkZ@t MLjx$8 FAm; i_E'RjfpUy47g.4gE1woA@g|]ԣ - t}>Fok׭GߐCVĂ.~x=Ì8Me?k҈wNN9hg7xJkN"&nΉ4)t6 9="҆|H=e9Џ+v38I;qfV}x@иG4z$jr< bM7lѯnu0"[ғ(gJE: H].b19QÑ=.JCvq51t(Qkԣo Hs) R1mp#pi`^ ՒBǧԔF#PvɊʈA/rb%6nd#~( J(?i9 %ݘTdՋu~Em4G9ioWے(y*n4 _;YJ .-Ø;׿$Y?\;;Rw&Dm@9wÉ9g=M&DFI1:F~[wy mo؉EE!3Dt! '2aQF^#V239%.^@ ib[5+^3Y>be) 8څ9AsP#_3Y=l3 1x :sDęv9T~'w8cI3#e^-[QTsFd{\?Q>o@s%%0A4^`.(4}wk4g ߃r@Gmodswia'Af$& ݦ(穇Yذ<$^Ĵ@yo_}[^ɹFo?AD.)xhk+գu'EWX%xbvݢ_zgHMbp[ uPrL c![{0OqCcDb#: $9ZdWP*~̳"еZ@f~/(4>(QM`N"6ݜ܇ 黷E&"K2'[b*qx )`,i&iP6o>В V}k;#c\sk @Kcd[p=a<Ņn0qZ-%2u܇CaMgZh潌όE`sWB$s ]7w#!գU۹˭+}PY}Lmw7c # /֣7T9nBani R=ԯϻY)A1s-( 32-O-}6>xo1cDdBvfdWjyk PqVK#NTU  P 4158 BJcU#!ՈIK09v8YPϐ+;Lg_. ܙ^kkkkf^ sY4%:sFd$⼴['9p&9rF)gDiZUQ:,B]WXvȪ2n=:/瀘xBμ򰽄r@=AeM0 =%*x%" 8t% Ђ8^k]`=f6]cݿ %eZDg#֣a.TnS풄L8)znTcT|&ɳB)\z&Fׯo8@(Iw BVG{G)7Nf]+jͥO9ahb:LqYǹ`` )Ϳ]WˇdLiZn2i>@,sz2p=N/ j:n3<ӰGճX0A&xj1ht% g&Qat_T&X8 v}z{koM[o|s_@zq6^5BYOグoT^XQ> h|1'a f[ 81ij`6czMyG騿\'jT iQ0cBeXKH e&GBJ@;IbJQfm6摙`®(UI9húA" 8שGFe tdY]WTgd:l\4!>g/v^yY3L1G>XP>bIyU}-iʟ1\ҷ$Qϑ_W)0ҩ&\Jy>&r.-=ESI=" jp )&tԆ:͕њf^YeI2Ճu/.%edV.2̒ xoSaMӃ\J5 1 A$h*/(tFҎ5)5PWV-v}&4/6OzTvk'Du?R0oxEVtPz˗(ՙ8dDkDAOW"YShKko>xA bt^LZpj6}3'*nuCגDT_Ѳ=T1s}Gcr0/zrJuD&,`MT .oΜ1B`$SÕWGW]0z:؅]&u^ѾP4Bj/!5頒<,Oa:xoGO [+oԥ2 B{WGVt,lj(4<  cP;VqipA:@8j _TlL r\dk!J'exW&z^W_n^{o ~Sui9&Iv蝋d ҷ]rOR ~j6'J'GJgVvrGd G40N(=Zb',89fC.0Tbuv}\U!'=Gih1Pi0O[zs-HQsrHisEUi_mcyB EQ= S^&66ZߗE -2KDyv%qr$th!bA< Smm^Tpz4\D+م Mh.v~b&4?~|{{U.N&@8|rc$| (%@Q# OBKH N8W~Jg,]G^\gWU(3^=b57HG eJ+SkI:O!i~Q4;\&n l |jYP (}rhq|>!*`?.֦e,'-=!4[odkShM{?/gd]gFqe>x. I\s&gM %9UA5T8mDh {TFhҏ-+'ʴ^]и|]aDSMMN~Mh]n'l40fDf3y S2/fԭzEZ3H:M>|fC9`Kvzs/lC ~rFLfpyXƳCp4"I1h|lm j@9ѫף1}ThJy8YmxW5z ߕh4mԌϟ7p 7Hmju4~"ExZPADF\E)" gC7z6/d;&6#TA4?nSQ{4,t [߬T~MLt0Ui2/^pΔ߭3>3hCi/29Gsod3 hC",[*eR>G?>O%7r0e<-t~}P9*\I:@ȬD8(PbSh*( 1^"<žE͎zkk'rɴF2̺RkTooP 3yٳ6D̉^$ Dg(R*ы^Dhڅ4BHI=׭Go4t\:ʝ g(Mҕ]O8 l0)gϊq]lD6bA<9fFtlGg:e'f|C̣-t qoZhfivjK!y9&M=5 )1H-Bzk*됓lH]Тϲ()^X3jt.LF K]25tm!D]b+ 1[@UfQ!8 E/Rd䏠 D"{DC@ }ak"c%T@\eu7k#"$,Bg m =wQ۽onP@?7,3FEb6h]p5hz$ЋdA!:zO_P:BѓyPz4ɒ𡫤 ~<?<<\ƾc5t@L9WAs7 J#r3RkMۭVixMw0-ڍ­X|poL.o]S6%T-*{u 8:]pD\,Ԓd%pS5MPϊ(tBavl7[x_MgN9(b46昼|t'A$~xpu/ $t ́<'!d1Ձ$3sЊ+D4z%v猘'h5¡@M |(G @كbc^7ShowťXx<`juJP3kԣA3{B²XҗEqnzx1ľ#CI8ݹT8;|1M@F#Bb~E@\’hS.˽MV8ᣖF=..2a]7rI0S@fXua|& -n_ 6zǪHhrLX| ܃BTTNFU`D mL4Wx˒p8}r GpSZsACeoIJ7~_-:h}h %~Y )%62;j[ tNƁ?8lvL1GFEzJ4DzZ Zlmi@YnJ0$_\]V׸No%ٖ\g( "Pw"*S S'X ;*ort7Bn> ;n jk!^~]5y`e>zg`##wTudrVcAʢdY2:β=$:>xp/$44Ȋ{ y 8@聀ע $2tuDfiNN-FEYmHҌ"qM&hkGu ipGaBA !2. -Aͮu@d;6m9 DF5Xbz4C]{-zhqRg9!&ed =Ȏw @~@?J ΄5hu^/ Msx^{bpi4SZ4<`^-G^XM \dql tT8!Q) 4M|Bit@ ,^< }c[h*R ):)zI](%/Jt5 l'A&ӁN E8Nў6\:a.rD(_֦^Lf&zl#ᚌ/h_fn% Y"ϸ'̮Nv0h3NJg(:%YN{+TЮe + [s3vqgEzcZ3t6l{ shcr yx(q:ٽ=Icd:\ ZJY.>A 53RYRRv˰ǝʂM$4:aΞ'l=t Hwdn#3OC RfX`[͌2Jr إdw.Zneɂ7 )xݙ!hƺs6T9("641ZHl$0H2zf)+ϗW B&Ç><۝lOL B2m-SPьhvǍ삗n^hc:H;Emz4FKKt '@A+ph (ә2]ʽcG6,mi|FC/j4IG_&4R(2ŒfWGZU:X: +)9O0=m=SYf_FU_OS AdYhZ]d2opyIHlh@J0`U 'dvgsj:v)tpI4@vrC+q;6u%w,N?v)8T1]=µ)qkU-葝`:GhOP.M` ԟfwEhpsg|ǑG'Sq^`Ghzs(Ŀwu9?gZEa~M.VoJ 󅳰1e(#@;ʲ֟ 't=owlΑǝ{1??gvڇĿK|`~rȵtU=kԣg~4J Q̥gvA7 | 30*u*ҦLц0;>&Hǃ @|߉F&ILމk!Gk=:B͸$Uxd:Y \ZR‘J( \ΑT'b ;BY%-H5z8  գo!}BÕ ]yR->\"@J <=zlc~ށti0e|(YI(1^-3I/-:AK3C랉(Ҹw'93(ǬiܹCdf1 r]5Z|)ik@S 6 t uχ"8UshX -oZG:ϑi Vh@/1Ps.),55zmL.8g̘H> _ wIB;F::{mqGWG Ev?tENs;l/aq\L ϧD\ry:)gC(KXQ`vc Q6=1oAi]RH!pM< J^2CIL;L~i Én<afx .g ΀4$.l>.>l CCa Zu4I?[>bIf[RGivXʢP7_(Ci;iaѾ14>(H⁗M Fwŀh)/`x^h.GW)J`{nMO \)ar?3%DkЎ;qG#});$3mXln8 " AD>K^Lz*;TrۈBN = 2>OumYzĀ=q"0L4IRCc" }h#Źaq#BH!/5Y^ގLV=}-Pp)fG](x.Y*j HqKyGh{"4*Z ;]9m,C9^̭'o>![]QӼ6:B>#X?oDĴ"#Ә(zJw "Ҝ$> br=硡B]oݟ-/@TQ|Kt-1*ŭi.Sݞ&eq3Y)̌>NCHGH;J[GEAN&z dt2҄7kգkz[8N FP0E׻Ј4CMyp3\p⼰i<B?)5|[NQIJ 8 왐Z1:^Ѻq9eF~ S=Zn8> qx/(>K'~ٌWqY"D&3eml!%sJV1]~URiIu)xaXҡ{&$ %)D}A=*ΝMA6.О|,aڡ:|{pqCݠ vkd;/$OҔ*qT2zXdSh2Sr9P_<, 'tr Bˊ}yoICˮ:(UF=`U!0-㎷wOJ v:lm[רGol:Lmbh(xL fl @UF7< vEk(|E) Ζ"T*ܶF=z2 PZ*tV]CS)αWhJV:"D4/|qx(K(Sb(rH{@i><.\mtBh^3KTOIV泹6 G)=98 PWѢi1RѾ C^Ќ47l @fB^wb4)u }j }|j}ffrTgyez-ItI,,47ˑ9yF| 8\Q*aab-Yn/)r5 /g lA-ԞijPR!3Ѓ(6׉%$,'7c#H>ԧ* ,u Б;1SUjyLxF`?mvOj OFg*3Y/*A6J(C YJ4Zu p4+N ~DP';IP } $f13WF s\hÚգ9CQrEd'Z(Ju$XM7ۥ9HAH$R{h `i' ӧiڌe ma4tI9-Z 蟉~ Ŭp9NyYOGp9 MTwΆЪ!*0! /GgeG y^֎QQ9xeqL&6tc<Ϊ(%UNvC4`v -;))\,e} Eat?pj+գ_kt23gSO uh0"P0gtde')Ǚ;3q7:687/PObi9ұHP94uR'}cWFn@Y >Fd}Qtg\P-1#TxEZU5+iq<82D~X9T;)qk96wq3<4fDAx}B( ԣkpU0iWNU<;vѐWşF).HchR 9):/X0jп@J5 ^+jǩ &9藫ԣuF1oEFGөB))K9 hEQcFP}&Ѡ#^;pFs_LSK`Qnʔ%AH e , BcF9/It~:.O9/K4|І{f6F)4נNZhù9\vz933@#t,JiEk':/n,y /|6;i}VZ=E7OX>ˌX3'' hiQV W~žB~9 A"3!0v"ҞQ3n6ygxV|ސ_\Cvr-$93]\<tȋ$8s)dnv P. ^{nS#=¯Ĝ'rb 8]Q\&n.IyZot=ҬOY^XJXp.(h/>+I*NWO*NV NOu D:ZdWhv y7 4Z@0k:3i!ù]]I r@hN aʽ vI tG خ-#YhyftКB*QD<.dLe9iayKHovj ѵѲ KUBBBC8A;$R,}nUhȗn5X9Ы1^] k,lJ)C-1ExR: .J*J{tQ=Z>S)&Ӏ*ņ;eFjvt!&G ݴPtn[.4!%]T&FY&=A t~Mg$faCLи#p/mTg+ R*ڑD8;[hEnM!\a9( ?;CJ KfBsNASAzjdFy5; }:| ?y"Ͽv=9h}gTBq_i<zzk. sXs-1Z\3YgЁL/p0џ󡧴e^m) MDJ*0Z%CMe\h6r0"%Y!-r yY-tuf5 ֋w =UM<\( ^;F\AE;P9D+~ZNNYDu̗ڹӼ' wz{ P@!~`^*ԣϕרr'6Orюܕhю\NT>([:x!qW⠸xSJfxDJ*Snrјx8X9%gjnmv֏ P:ˌ%r* @Y`m̗(oƀsS xn'|^̈+$ Q~L@tF(JS ܯ~vrmshBJ1/2  ̕%@K$#piWDlHH#P87/ Z;,uh𓢇Sm~^' 7
    <!-- ================================================================== -->
    <!--    $Id: icons.mrc,v 1.6 2003/10/06 22:04:23 ehood Exp $
            Earl Hood <earl @ earlhood  .com>
    
    	This example file makes use of the icons feature of
    	MHonArc.  The icon mappings used work with the
    	default set of icons provided with the Apache HTTP
    	server.
      -->
    <!-- ================================================================== -->
    
    <!--	In this example, we only do a chronological index.
      -->
    <Main>
    <Sort>
    <NoThread>
    <NoReverse>
    
    <!--	Have LISTBEGIN contain last updated information
      -->
    <ListBegin>
    <address>
    Last update: $LOCALDATE$<br>
    $NUMOFMSG$ messages<br>
    </address>
    <p>
    Messages listed in chronological order.  Listing format is the following:
    <blockquote>
    <img src="/icons/generic.gif" width="20" height="22" alt="* ">
    <strong>Subject</strong><code>  </code><em>From</em>
    </blockquote>
    <p>
    <hr>
    </ListBegin>
    
    <!--	A listing template with icon usage.  We use $ICONURL$ so
    	we can customize the IMG element inorder to specify the
    	an alternate ALT attribute value from what $ICON$ would give us.
      -->
    <LiTemplate>
    <img src="$ICONURL$" width="20" height="22" alt="* "
    ><strong>$SUBJECT$</strong> <em>$FROMNAME$</em><br>
    </LiTemplate>
    
    <ListEnd>
    
    </ListEnd>
    
    <LabelStyles>
    -default-
    subject:strong
    from:strong
    </LabelStyles>
    
    <FieldStyles>
    -default-
    subject:strong
    from:strong
    </FieldStyles>
    
    <!--	Specify icons for media-types
      -->
    <Icons>
    */*;[20x22]/icons/generic.gif
    application/*;[20x22]/icons/generic.gif
    application/msword;[20x22]/icons/layout.gif
    application/octet-stream;[20x22]/icons/binary.gif
    application/pdf;[20x22]/icons/pdf.gif
    application/postscript;[20x22]/icons/ps.gif
    application/rtf;[20x22]/icons/layout.gif
    application/x-csh;[20x22]/icons/script.gif
    application/x-dvi;[20x22]/icons/dvi.gif
    application/x-gtar;[20x22]/icons/tar.gif
    application/x-gzip;[20x22]/icons/compressed.gif
    application/x-ksh;[20x22]/icons/script.gif
    application/x-latex;[20x22]/icons/tex.gif
    application/x-patch;[20x22]/icons/patch.gif
    application/x-script;[20x22]/icons/script.gif
    application/x-sh;[20x22]/icons/script.gif
    application/x-tar;[20x22]/icons/tar.gif
    application/x-tex;[20x22]/icons/tex.gif
    application/x-zip-compressed;[20x22]/icons/compressed.gif
    application/zip;[20x22]/icons/compressed.gif
    audio/*;[20x22]/icons/sound1.gif
    chemical/*;[20x22]/icons/sphere2.gif
    image/*;[20x22]/icons/image2.gif
    message/external-body;[20x22]/icons/link.gif
    multipart/*;[20x22]/icons/layout.gif
    text/*;[20x22]/icons/text.gif
    video/*;[20x22]/icons/movie.gif
    </Icons>
    
    <!--	Override MIMEArgs settings to specify external filter to
    	use icons as part of the link to attachments.
      -->
    <MIMEArgs override>
    m2h_external::filter; useicon inline
    </MIMEArgs>
    
    MHonArc-2014-05-05-snap/doc/rcfileexs/secure.mrc.html0000644004705000001440000000352112332046112021034 0ustar ehoodusers
    <!-- ================================================================== -->
    <!--  File:
    	$Id: secure.mrc,v 1.2 2011/01/09 05:23:25 ehood Exp $
          Author:
    	Earl Hood <earl @ earlhood . com>
    
          Description:
    	MHonArc, <http://www.mhonarc.org/>, resource file for
            providing a more secure archive.
      -->
    <!-- ================================================================== -->
    
    <!--  For public archive sites, it is HIGHLY RECOMMENDED to neutralize
          HTML.  HTML messages can be used for XSS attacks.  Although
          mhonarc attempts to neutralize HTML, there is no guarantee that
          it is perfect.
    
          SIMPLE RULE: If the archive receives messages from untrusted
          sources, HTML data SHOULD be neutralized.
      -->
    
    <!-- Many HTML message have an alternative text/plain part,
         therefore, for such messages, lets give preference to
         text/plain part.
      -->
    <MIMEAltPrefs>
    text/plain
    text/html
    </MIMEAltPrefs>
    
    <!-- If there is no text/plain part, we treat text/html as plain
         text.  This way, something will show up, but it may not be
         that pretty depending on how the raw HTML data is formatted.
      -->
    <MIMEFilters>
    text/html;   m2h_text_plain::filter; mhtxtplain.pl
    text/x-html; m2h_text_plain::filter; mhtxtplain.pl
    </MIMEFilters>
    
    <!-- We use media-type method to define arguments since we do not
         want to interfere with how text/plain may be processed.
         We disable flowed detection since raw HTML may cause undesired
         results.
      -->
    <MIMEArgs>
    text/html;   disableflowed
    text/x-html; disableflowed
    </MIMEArgs>
    
    
    MHonArc-2014-05-05-snap/doc/rcfileexs/date.mrc.html0000644004705000001440000000471012332046112020464 0ustar ehoodusers
    <!-- MHonArc Resource File -->
    <!-- $Id: date.mrc,v 1.4 2003/10/06 22:04:23 ehood Exp $
         Earl Hood <earl @ earlhood . com>
      -->
    <!-- This resource file utilizes the day grouping feature of MHonArc
         to format the main index.
      -->
    
    <!--	Specify date sorting.
      -->
    <Sort>
    
    <!--	Set USELOCALTIME since local date formats are used when displaying
    	dates.
      -->
    <UseLocalTime>
    
    <!--    Define message local date format to print day of the week, month,
    	month day, and year.  Format used for day group heading.
      -->
    <MsgLocalDateFmt>
    %B %d, %y
    </MsgLocalDateFmt>
    
    <!--	Redefine LISTBEGIN since a table will be used for index listing.
      -->
    <ListBegin>
    <UL>
    <LI><A HREF="$TIDXFNAME$">Thread Index</A></LI>
    </UL>
    <HR>
    <table border=0>
    </ListBegin>
    
    <!--	DAYBEGIN defines the markup to be printed when a new day group
    	is started.
      -->
    <DayBegin>
    <tr><td colspan=4><strong>$MSGLOCALDATE$</strong></td></tr>
    </DayBegin>
    
    <!--	DAYBEND defines the markup to be printed when a day group
    	ends.  No markup is needed in this case, so we leave it blank.
      -->
    <DayEnd>
    
    </DayEnd>
    
    <!--	Define LITEMPLATE to display the time of day the message was
    	sent, message subject, author, and any annotation for the
    	message.
      -->
    <LiTemplate>
    <tr valign=top>
    <td>$MSGLOCALDATE(CUR;%H:%M)$</td>
    <td><b>$SUBJECT$</b></td>
    <td>$FROMNAME$</td>
    <td>$NOTE$</td>
    </tr>
    </LiTemplate>
    
    <!--	Define LISTEND to close table
      -->
    <ListEnd>
    </table>
    </ListEnd>
    
    MHonArc-2014-05-05-snap/doc/rcfileexs/utf-8.mrc.html0000644004705000001440000000564312332046112020520 0ustar ehoodusers
    <!-- ================================================================== -->
    <!--  File:
    	$Id: utf-8.mrc,v 1.7 2004/03/15 21:07:18 ehood Exp $
          Author:
    	Earl Hood <earl @ earlhood . com>
    
          Description:
    	MHonArc, <http://www.mhonarc.org/>, resource file to
    	generate UTF-8 pages.
    
          Notes:
    	* If using v2.6.0, or later, you may want to use
    	  utf-8-encode.mrc instead.
      -->
    <!-- ==================================================================
    -->
    
    <CharsetConverters override>
    plain;          mhonarc::htmlize;
    default;        MHonArc::UTF8::str2sgml;     MHonArc/UTF8.pm
    </CharsetConverters>
    
    <!-- MHonArc v2.5.10 introduced the following resource to control
         how text clipping is performed, mainly for resource variables
         (e.g. $SUBJECTNA:72$).
      -->
    
    <TextClipFunc>
    MHonArc::UTF8::clip; MHonArc/UTF8.pm
    </TextClipFunc>
    
    <!-- The beginning page markup of MHonArc pages need to be modified
         to tell clients that the pages are in UTF-8 by using a
         <meta http-equiv> tag.
    
         The following resource settings are just the default settings
         for each resource but with the appropriate <meta http-equiv>
         tag added.
      -->
    
    <IdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$IDXTITLE$</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    <h1>$IDXTITLE$</h1>
    </IdxPgBegin>
    
    <TIdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$TIDXTITLE$</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    <h1>$TIDXTITLE$</h1>
    </TIdxPgBegin>
    
    
    <MsgPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$SUBJECTNA$</title>
    <link rev="made" href="mailto:$FROMADDR$">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    </MsgPgBegin>
    
    MHonArc-2014-05-05-snap/doc/rcfileexs/subject.mrc.html0000644004705000001440000000262312332046112021207 0ustar ehoodusers
    <!-- ================================================================== -->
    <!--    $Id: subject.mrc,v 1.4 2003/10/06 22:04:23 ehood Exp $
            Earl Hood <earl @ earlhood . com>
    
    	This resource file utilizes the subject grouping feature of
    	MHonArc to format the main index.
      -->
    <!-- ================================================================== -->
    
    <!--	Specify subject sorting.
      -->
    <SubSort>
    
    <!--	SUBJECTBEGIN defines the markup to be printed when a new subject
    	group is started.
      -->
    <SubjectBegin>
    <li><strong>$SUBJECTNA$</strong>
    <ul>
    </SubjectBegin>
    
    <!--	SUBJECTEND defines the markup to be printed when a subject
    	group ends.  We define it to close the <UL> opened by
    	SUBJECTBEGIN.
      -->
    <SubjectEnd>
    </li></ul>
    </SubjectEnd>
    
    <!--	Define LITEMPLATE to display just author names.
      -->
    <LiTemplate>
    <li><a $A_ATTR$>$FROMNAME$</a></li>
    </LiTemplate>
    
    MHonArc-2014-05-05-snap/doc/rcfileexs/def-mime.mrc.html0000644004705000001440000003000712332046112021230 0ustar ehoodusers
    <!-- ================================================================== -->
    <!--    $Id: def-mime.mrc,v 1.25 2003/10/06 22:04:23 ehood Exp $
            Earl Hood <earl @ earlhood . com>
      -->
    <!--    MHonArc Resource File                                           --
      --                                                                    --
      --    Description:                                                    --
      --	    Default resource settings related to MIME processing	--
      --									-->
    <!-- ================================================================== -->
    
    <!-- MIMEFILTERS maps content-types to converter functions.
      -->
    <MIMEFilters>
    application/ms-tnef;       m2h_null::filter;            mhnull.pl
    application/octet-stream;  m2h_external::filter;        mhexternal.pl
    application/*;             m2h_external::filter;        mhexternal.pl
    application/x-patch;       m2h_text_plain::filter;      mhtxtplain.pl
    audio/*;                   m2h_external::filter;        mhexternal.pl
    chemical/*;                m2h_external::filter;        mhexternal.pl
    model/*;                   m2h_external::filter;        mhexternal.pl
    image/*;                   m2h_external::filter;        mhexternal.pl
    message/delivery-status;   m2h_text_plain::filter;      mhtxtplain.pl
    message/external-body;     m2h_msg_extbody::filter;     mhmsgextbody.pl
    message/partial;           m2h_text_plain::filter;      mhtxtplain.pl
    text/*;                    m2h_text_plain::filter;      mhtxtplain.pl
    text/enriched;             m2h_text_enriched::filter;   mhtxtenrich.pl
    text/html;                 m2h_text_html::filter;       mhtxthtml.pl
    text/plain;                m2h_text_plain::filter;      mhtxtplain.pl
    text/richtext;             m2h_text_enriched::filter;   mhtxtenrich.pl
    text/tab-separated-values; m2h_text_tsv::filter;        mhtxttsv.pl
    text/x-html;               m2h_text_html::filter;       mhtxthtml.pl
    video/*;                   m2h_external::filter;        mhexternal.pl
    x-sun-attachment;          m2h_text_plain::filter;      mhtxtplain.pl
    </MIMEFilters>
    
    <!-- MIMEARGS defines arguments to pass to filters registered via
         MIMEFILTERS.
      -->
    <MIMEArgs>
    m2h_external::filter; inline
    </MIMEArgs>
    
    <!-- MIMEALTPREFS defines content-type preferences for
         multipart/alternative messages.
      -->
    <MIMEAltPrefs>
    </MIMEAltPrefs>
    
    <!-- MIMEDECODERS defines functions that decode data according
         to an entitie's Content-Transfer-Encoding.
      -->
    <MIMEDecoders>
    7bit;   	  as-is;
    8bit;   	  as-is;
    binary;   	  as-is;
    base64;   	  base64::b64decode;		base64.pl
    quoted-printable; quoted_printable::qprdecode;	qprint.pl
    x-uuencode;   	  base64::uudecode;		base64.pl
    xuue;   	  base64::uudecode;		base64.pl
    uuencode;   	  base64::uudecode;		base64.pl
    </MIMEDecoders>
    
    <!-- CHARSETCONVERTERS defines functions that convert character
         data encoded in a character set to HTML.  These functions are
         used for non-ASCII encoded message header field data and used
         by some of the provided text-based MIMEFILTERS.
    
         Since many charsets are known by a variety of names,
         CHARSETCONVERTERS is used to map a function to one of the
         names for a charset, and the CHARSETALIASES resource (shown
         later) is used to define all alternate names for a given
         charset.
      -->
    <CharsetConverters>
    plain;		    mhonarc::htmlize;
    us-ascii;	    mhonarc::htmlize;
    iso-8859-1;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-2;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-3;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-4;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-5;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-6;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-7;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-8;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-9;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-10;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-11;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-13;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-14;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-15;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-16;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-2022-jp;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-2022-kr;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    euc-jp;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    utf-8;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp866;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp932;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp936;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp949;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp950;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1250;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1251;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1252;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1253;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1254;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1255;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1256;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1257;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1258;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi-0;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi-7;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-a;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-b;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-e;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-f;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-r;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-u;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    gost-19768-87;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    viscii;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    big5-eten;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    big5-hkscs;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    gb2312;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macarabic;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    maccentraleurroman; MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    maccroatian;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    maccyrillic;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macgreek;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    machebrew;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macicelandic;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macromanian;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macroman;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macthai;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macturkish;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    hp-roman8;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    default;	    -ignore-
    </CharsetConverters>
    
    <!-- CHARSETALIASES defines alternate names (aliases) for charsets
         listed in CHARSETCONVERTERS.
      -->
    <CharsetAliases>
    us-ascii;	    ascii
    us-ascii;	    ansi_x3.4-1968
    us-ascii;	    iso646
    us-ascii;	    iso646-us
    us-ascii;	    iso646.irv:1991
    us-ascii;	    cp367
    us-ascii;	    ibm367
    us-ascii;	    csascii
    us-ascii;	    iso-ir-6
    us-ascii;	    us
    iso-8859-1;	    latin1
    iso-8859-1;	    l1
    iso-8859-1;	    iso_8859_1
    iso-8859-1;	    iso_8859-1:1987
    iso-8859-1;	    iso8859-1
    iso-8859-1;	    iso8859_1
    iso-8859-1;	    8859-1
    iso-8859-1;	    8859_1
    iso-8859-1;	    cp819
    iso-8859-1;	    ibm819
    iso-8859-1;	    x-mac-latin1
    iso-8859-1;	    iso-ir-100
    iso-8859-2;	    latin2
    iso-8859-2;	    l2
    iso-8859-2;	    iso_8859_2
    iso-8859-2;	    iso_8859-2:1987
    iso-8859-2;	    iso8859-2
    iso-8859-2;	    iso8859_2
    iso-8859-2;	    8859-2
    iso-8859-2;	    8859_2
    iso-8859-2;	    iso-ir-101
    iso-8859-3;	    latin3
    iso-8859-3;	    l3
    iso-8859-3;	    iso_8859_3
    iso-8859-3;	    iso_8859-3:1988
    iso-8859-3;	    iso8859-3
    iso-8859-3;	    iso8859_3
    iso-8859-3;	    8859-3
    iso-8859-3;	    8859_3
    iso-8859-3;	    iso-ir-109
    iso-8859-4;	    latin4
    iso-8859-4;	    l4
    iso-8859-4;	    iso_8859_4
    iso-8859-4;	    iso_8859-4:1988
    iso-8859-4;	    iso8859-4
    iso-8859-4;	    iso8859_4
    iso-8859-4;	    8859-4
    iso-8859-4;	    8859_4
    iso-8859-4;	    iso-ir-110
    iso-8859-5;	    iso_8859-5:1988
    iso-8859-5;	    cyrillic
    iso-8859-5;	    iso-ir-144
    iso-8859-6;	    iso_8859-6:1987
    iso-8859-6;	    arabic
    iso-8859-6;	    asmo-708
    iso-8859-6;	    ecma-114
    iso-8859-6;	    iso-ir-127
    iso-8859-7;	    iso_8859-7:1987
    iso-8859-7;	    greek
    iso-8859-7;	    greek8
    iso-8859-7;	    ecma-118
    iso-8859-7;	    elot_928
    iso-8859-7;	    iso-ir-126
    iso-8859-8;	    iso-8859-8-i
    iso-8859-8;	    iso_8859-8:1988
    iso-8859-8;	    hebrew
    iso-8859-8;	    iso-ir-138
    iso-8859-9;	    latin5
    iso-8859-9;	    l5
    iso-8859-9;	    iso_8859_9
    iso-8859-9;	    iso-8859_9:1989
    iso-8859-9;	    iso8859-9
    iso-8859-9;	    iso8859_9
    iso-8859-9;	    8859-9
    iso-8859-9;	    8859_9
    iso-8859-9;	    iso-ir-148
    iso-8859-10;	    latin6
    iso-8859-10;	    l6
    iso-8859-10;	    iso_8859_10
    iso-8859-10;	    iso_8859-10:1993
    iso-8859-10;	    iso8859-10
    iso-8859-10;	    iso8859_10
    iso-8859-10;	    8859-10
    iso-8859-10;	    8859_10
    iso-8859-10;	    iso-ir-157
    iso-8859-13;	    latin7 ,l7
    iso-8859-14;	    latin8 ,l8
    iso-8859-15;	    latin9
    iso-8859-15;	    latin0
    iso-8859-15;	    l9
    iso-8859-15;	    l0
    iso-8859-15;	    iso_8859_15
    iso-8859-15;	    iso8859-15
    iso-8859-15;	    iso8859_15
    iso-8859-15;	    8859-15
    iso-8859-15;	    8859_15
    iso-2022-jp;	    iso-2022-jp-1
    utf-8;		    utf8
    cp932;		    shiftjis
    cp932;		    shift_jis
    cp932;		    shift-jis
    cp932;		    x-sjis
    cp932;		    ms_kanji
    cp932;		    csshiftjis
    cp936;		    gbk
    cp936;		    ms936
    cp936;		    windows-936
    cp949:		    euc-kr
    cp949:		    ks_c_5601-1987
    cp949:		    ks_c_5601-1989
    cp949:		    ksc_5601
    cp949:		    iso-ir-149
    cp949:		    windows-949
    cp949:		    ms949
    cp949:		    korean
    cp950;		    windows-950
    cp1250;		    windows-1250
    cp1251;		    windows-1251
    cp1252;		    windows-1252
    cp1253;		    windows-1253
    cp1254;		    windows-1254
    cp1255;		    windows-1255
    cp1256;		    windows-1256
    cp1257;		    windows-1257
    cp1258;		    windows-1258
    koi-0;		    gost-13052
    koi8-e;		    iso-ir-111
    koi8-e;		    ecma-113:1986
    koi8-r;		    cp878
    gost-19768-87;	    ecma-cyrillic
    gost-19768-87;	    ecma-113
    gost-19768-87;	    ecma-113:1988
    big5-eten;	    big5
    big5-eten;	    csbig5
    big5-eten;	    tcs-big5
    big5-eten;	    tcsbig5
    big5-hkscs;	    big5hk
    big5-hkscs;	    big5hkscs
    big5-hkscs;	    hkscs-big5
    big5-hkscs;	    hk-big5
    gb2312;		    gb_2312-80
    gb2312;		    csgb2312
    gb2312;		    hz-gb-2312
    gb2312;		    iso-ir-58
    gb2312;		    euc-cn
    gb2312;		    chinese
    gb2312;		    csiso58gb231280
    macarabic;          apple-arabic
    maccentraleurroman; apple-centeuro
    maccroatian;        apple-croatian
    maccyrillic;        apple-cyrillic
    macgreek;           apple-greek
    machebrew;          apple-hebrew
    macicelandic;       apple-iceland
    macromanian;        apple-romanian
    macroman;           apple-roman
    macthai;            apple-thai
    macturkish;         apple-turkish
    macarabic;          x-mac-arabic
    maccentraleurroman; x-mac-centraleurroman
    maccroatian;        x-mac-croatian
    maccyrillic;        x-mac-cyrillic
    macgreek;           x-mac-greek
    machebrew;          x-mac-hebrew
    macicelandic;       x-mac-icelandic
    macromanian;        x-mac-romanian
    macroman;           x-mac-roman
    macthai;            x-mac-thai
    macturkish;         x-mac-turkish
    </CharsetAliases>
    
    MHonArc-2014-05-05-snap/doc/rcfileexs/blog.mrc.html0000644004705000001440000001317112332046112020473 0ustar ehoodusers
    <!-- ================================================================== -->
    <!-- File:
    	$Id: blog.mrc,v 1.4 2004/03/15 21:07:18 ehood Exp $
         Author:
    	Earl Hood <earl @ earlhood . com>
    
         Description:
    	MHonArc, <http://www.mhonarc.org/>, resource file to
    	generate a "blogger"-style archive.  I.e.  All messages
    	are displayed on a single page.
    
         Dependencies:
    	For things to work, server-side includes must be enabled
    	for .shtml files in the directory the archive will exist.
      -->
    <!-- ================================================================== -->
    
    <!-- Sort messages by date. -->
    <Sort>
    
    <!-- We do not care for threading here. -->
    <NoThread>
    
    <!-- ================================================================== -->
    <!--  Main Index Page							-->
    <!-- ================================================================== -->
    
    <!-- Make sure main index page has proper extension for SSI. -->
    <IdxFname>
    index.shtml
    </IdxFname>
    
    <!-- We define beginning markup to include style definitions. -->
    <IdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$IDXTITLE$</title>
    </head>
    <style type="text/css">
    .msg_subject {
      border-color: black;
      border-style: solid;
      border-width: thin;
      color: white;
      background-color: gray;
      font-weight: bold;
      padding-bottom: 0em;
      margin-bottom: 0.25em;
    }
    .msg_fields {
      font-size: 0.9em;
      font-style: italic;
      margin: 0em 0em 0em 0em;
      padding: 0em 0em 0em 1em;
    }
    </style>
    <body>
    <h1>$IDXTITLE$</h1>
    </IdxPgBegin>
    
    <!-- The index listing will just be a list of SSI directives. -->
    <ListBegin>
    
    </ListBegin>
    <LiTemplate>
    <!--#include virtual="$MSG$" -->
    </LiTemplate>
    <ListEnd>
    
    </ListEnd>
    
    <!-- ================================================================== -->
    <!--  Message Page							-->
    <!-- ================================================================== -->
    <!--	For message pages, we remove any <html>, et. al. markup
    	since they will not be stand-alone documents but included
    	by the index page.
      -->
    
    <!-- Disable follow-up/references section.  This is probably a matter
         of personal preference,  If enabled, the FOLUPLITXT and REFSLITXT
         resources will need to be modified to have relative links to
         messages.
      -->
    <NoFolRefs>
    
    <!-- Make sure message-id links (e.g. in-reply-to, references) are
         relative since all messages are on the same page.
      -->
    <MsgIdLink>
    <a href="#$MSGNUM$">$MSGID$</a>
    </MsgIdLink>
    
    <!-- Clear out beginning markup. -->
    <MsgPgBegin>
    
    </MsgPgBegin>
    <TopLinks>
    
    </TopLinks>
    
    <!-- This will be are physical separator for messages. -->
    <SubjectHeader>
    <h3 class="msg_subject"><a name="$MSGNUM$">$SUBJECTNA$</a></h3>
    <p class="msg_fields">
    <b>Date:</b> $MSGLOCALDATE$<br>
    <b>From:</b> $FROM$
    </p>
    </SubjectHeader>
    
    <!-- Only display a very minimal message header.  We already
         rolled a mini-header in SUBJECTHEADER, so we only include
         any additional fields that cannot be referenced via resource
         variables.
         
         We make the style the same as the mini-header above.
      -->
    <FieldsBeg>
    <p class="msg_fields">
    </FieldsBeg>
    <LabelBeg>
    <b>
    </LabelBeg>
    <LabelEnd>
    :</b>
    </LabelEnd>
    <FldBeg>
    
    </FldBeg>
    <FldEnd>
    <br>
    </FldEnd>
    <FieldsEnd>
    </p>
    </FieldsEnd>
    
    <FieldOrder>
    in-reply-to
    references
    </FieldOrder>
    
    <HeadBodySep>
    
    </HeadBodySep>
    
    <!-- Clear out ending markup. -->
    <MsgBodyEnd>
    
    </MsgBodyEnd>
    <BotLinks>
    
    </BotLinks>
    <MsgPgEnd>
    
    </MsgPgEnd>
    
    
    MHonArc-2014-05-05-snap/doc/rcfileexs/utf-8-encode.mrc.html0000644004705000001440000000674312332046112021755 0ustar ehoodusers
    <!-- ================================================================== -->
    <!--  File:
    	$Id: utf-8-encode.mrc,v 1.3 2004/03/15 21:07:18 ehood Exp $
          Author:
    	Earl Hood <earl @ earlhood . com>
    
          Description:
    	MHonArc, <http://www.mhonarc.org/>, resource file to
    	encode message text data into Unicode UTF-8.  This only
    	works with v2.6.0, or later, of MHonArc.
    
          Notes:
    	* This is a more general version of utf-8.mrc.	Where
    	  utf-8.mrc basis its conversion via CHARSETCONVERTERS,
    	  this does it via TEXTENCODE.
    
    	  The advantage of TEXTENCODE, is that message text data,
    	  including headers, are converted to UTF-8 when read.	This
    	  provides a performance advantage over the CHARSETCONVERTERS
    	  method, and TEXTENCODE affects all text entities in a
    	  message bodies.  The CHARSETCONVERTERS method depends on
    	  individual text-based MIMEFILTERS to explicitly support
    	  CHARSETCONVERTERS.  TEXTENCODE is transparent to MIMEFILTERS.
    
      -->
    <!-- ================================================================== -->
    
    <TextEncode>
    utf-8; MHonArc::UTF8::to_utf8; MHonArc/UTF8.pm
    </TextEncode>
    
    <-- With data translated to UTF-8, it simplifies CHARSETCONVERTERS -->
    <CharsetConverters override>
    default; mhonarc::htmlize
    </CharsetConverters>
    
    <-- Need to also register UTF-8-aware text clipping function -->
    <TextClipFunc>
    MHonArc::UTF8::clip; MHonArc/UTF8.pm
    </TextClipFunc>
    
    <!-- The beginning page markup of MHonArc pages need to be modified
         to tell clients that the pages are in UTF-8 by using a
         <meta http-equiv> tag.
    
         The following resource settings are just the default settings
         for each resource but with the appropriate <meta http-equiv>
         tag added.
      -->
    
    <IdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$IDXTITLE$</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    <h1>$IDXTITLE$</h1>
    </IdxPgBegin>
    
    <TIdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$TIDXTITLE$</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    <h1>$TIDXTITLE$</h1>
    </TIdxPgBegin>
    
    
    <MsgPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$SUBJECTNA$</title>
    <link rev="made" href="mailto:$FROMADDR$">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
    </MsgPgBegin>
    
    MHonArc-2014-05-05-snap/doc/rcfileexs/frames.mrc.html0000644004705000001440000006220212332046112021024 0ustar ehoodusers
    <!-- ================================================================== -->
    <!--	$Id: frames.mrc,v 1.10 2003/10/06 22:04:23 ehood Exp $
    	Earl Hood <earl @ earlhood . com>
      -->
    <!--	MHonArc Resource File						--
      --									--
      --	Description:							--
      --									--
      --	    This is an example of using HTML frames for an archive.	--
      --	    This resource file also illustrates how powerful the	--
      --	    customization features of MHonArc are while giving		--
      --	    explanations on the use of each resource.			--
      --									--
      --	    The document that defines the main frames is created	--
      --	    outside of mhonarc.  The following is a sample document	--
      --	    that can be used:						--
      --									--
      --	    <html>							--
      --	    <head>							--
      --	    <title>Mail Archive (by MHonArc)</title>			--
      --	    </head>							--
      --	    <frameset cols="275,*">					--
      --	    <frame src="threads.html" name="INDEX">			--
      --	    <frame src="start.html" name="MAIN">			--
      --	    </frameset>							--
      --	    </html>							--
      --									--
      --	    The frame names are important since they are used in	--
      --	    this file.  The default message in the MAIN frame is	--
      --	    start.html: a document containing information about the	--
      --	    the archive.  A bogus null document can be used to		--
      --	    have the MAIN frame come up blank.				--
      --									--
      --		NOTE: Netscape will not properly handle frame		--
      --		      linking if the SRC attribute is not defined	--
      --		      to a document.  Therefore, some document		--
      --		      should be referenced.				--
      --									--
      --	    The title of the archive is controlled by the MAIN-TITLE	--
      --	    resource variable.  This variable should be defined on	--
      --	    the command-line.  Example:					--
      --									--
      --	        -definevars "MAIN-TITLE='Sample Frame Archive'" ...	--
      --									--
    <!-- ================================================================== -->
    
    <!-- ================================================================== -->
    <!-- 	Variable definitions						-->
    <!-- ================================================================== -->
    <!--
    	User defined variables are defined by the DEFINEVAR element.
    	The first line is the name of the variable and subsequent
    	lines to the close tag are the value of the variable.
    
    	User defined variables are extremely useful when the same
    	layout information occurs in multiple places.  It also
    	help centralize information that maybe likely to change.
    	
    	User defined variables can reference other variables.
      -->
    <!-- ================================================================== -->
    
    <!-- 	Variables for frame names
      -->
    <DefineVar>
    FRAME-MAIN
    target="MAIN"
    </DefineVar>
    
    <DefineVar>
    FRAME-IDX
    target="INDEX"
    </DefineVar>
    
    <!--	Variable for navigational links.  This defines a table of
    	buttons to link to previous and next messages and to thread
    	and date indexes.
      -->
    <DefineVar>
    NAV-LINKS
    <table cellpadding=0 cellspacing=0 border=1 width="100%">
    <tbody>
    <tr align="center">
    <th colspan=3><strong>Thread Links</strong></th>
    <th colspan=3><strong>Date Links</strong></th>
    </tr>
    <tr align="center">
    <td>$BUTTON(TPREV)$</td>
    <td>$BUTTON(TNEXT)$</td>
    <td><a $FRAME-IDX$ href="$TIDXFNAME$#$MSGNUM$">Index</a></td>
    <td>$BUTTON(PREV)$</td>
    <td>$BUTTON(NEXT)$</td>
    <td><a $FRAME-IDX$ href="$IDXFNAME$#$MSGNUM$">Index</a></td>
    </tr>
    </tbody>
    </table>
    </DefineVar>
    
    <!--	Variable for table attributes for page links on index pages.
      -->
    <DefineVar>
    IDXPG-TBL-LINKS-ATTRS
    width="100%" border=0 cellpadding=0 cellspacing=0
    </DefineVar>
    
    <!-- ================================================================== -->
    <!-- 	Options			 					-->
    <!-- ================================================================== -->
    
    <!--	It is good to be explicit when possible since a default
    	resource file, and/or environment variables, may be in affect.
      -->
    <Main>
    <Thread>
    <Sort>
    <NoReverse>
    <NoTReverse>
    
    <!--	Have mhonarc generate multipage indexes with a maximum of 50
    	messages listed per page.  MULITPG requires IDXSIZE to be
    	set to a finite value to be in effect.
      -->
    <MultiPg>
    <IdxSize>
    50
    </IdxSize>
    
    <!--	Shut-off mhonarc's adding follow-up/ref links after message.
    	This resource file defines other mechanisms for a reader
    	to navigate the archive.
      -->
    <NoFolRefs>
    
    <!-- ================================================================== -->
    <!-- 	Derived Files		 					-->
    <!-- ================================================================== -->
    <!--
    	Derived files are defined by the DEFINEDERIVED element.
    	Derived files are extra files that should be created with
    	each message added to an archive.  The first line is the name
    	of the file to create.  The filename may (should) contain
    	variables to uniquely name it for each message.
    
    	User defined derived files are automatically removed if
    	the message they are associated with is removed.
      -->
    <!-- ================================================================== -->
    
    <!-- 	The following derived file is the main file the index pages
    	will link to.  It defines the subframe definitions for the
    	navigational links and the message data.
      -->
    <DefineDerived>
    frm$MSGNUM$.html
    <html>
    <head>
    <title>Message View</title>
    </head>
    <frameset rows="60,*">
    <frame src="nav$MSGNUM$.html" name="NAV"
           frameborder=1 scrolling=no marginheight=0 marginwidth=0>
    <frame src="msg$MSGNUM$.html" name="MESSAGE"
           frameborder=0>
    </frameset>
    </html>
    </DefineDerived>
    
    <!-- 	The following derived file defines the navigational links
    	for a message.  The links will be displayed in a frame
    	above the converted message.
      -->
    <DefineDerived>
    nav$MSGNUM$.html
    <html>
    <head>
    <title>Message Navigation</title>
    </head>
    <body>
    $NAV-LINKS$
    </body>
    </html>
    </DefineDerived>
    
    <!-- ================================================================== -->
    <!-- 	Thread index resources						-->
    <!-- ================================================================== -->
    
    <!--	The thread index is setup where a thread will have the subject
    	in bold at the top of the thread and the names of the authors
    	of the messages in the thread will be hyperlinked to the
    	actual message.  Nested unordered lists are used to provide a
    	visual cue of the depths of the thread.
    
    	Unique messages are show in normal text.
      -->
    
    <!--	Set the title of the thread index.
      -->
    <TTitle chop>
    $MAIN-TITLE$ (thread)
    </TTitle>
    
    <!--	Define the appearances of the prev/next page links.
      -->
    <TNextPgLink chop>
    <A HREF="$PG(TNEXT)$">&gt;&gt;</A>
    </TNextPgLink>
    <TNextPgLinkIA chop>
    &gt;&gt;
    </TNextPgLinkIA>
    
    <TPrevPgLink chop>
    <A HREF="$PG(TPREV)$">&lt;&lt;</A>
    </TPrevPgLink>
    <TPrevPgLinkIA chop>
    &lt;&lt;
    </TPrevPgLinkIA>
    
    <!--	Before the thread list, we will have links to the date index,
    	previous page, first page, last page, and next page.  THEAD
    	is also responsible for beginning the message listing
    	(analagous to LISTBEGIN for the main index).
      -->
    <THead>
    <ul>
    <li><a href="$IDXFNAME$">Date Index</a></li>
    </ul>
    <hr>
    <table $IDXPG-TBL-LINKS-ATTRS$>
    <tbody>
    <tr align="center">
    <th colspan=4><small>Page $PAGENUM$ of $NUMOFPAGES$</small></th>
    <tr>
    <td align="left"><a href="$PG(TFIRST)$">&lt;&lt;&lt;&lt;</a>
    <td align="right">$PGLINK(TPREV)$
    <td align="left">$PGLINK(TNEXT)$
    <td align="right"><a href="$PG(TLAST)$">&gt;&gt;&gt;&gt;</a>
    </tbody>
    </table>
    <hr noshade size=1>
    <small>
    <ul>
    </THead>
    
    <!--	TFOOT terminates the message listing.  We also include
    	page navigational links like in TFOOT for convenience.
      -->
    <TFoot>
    </ul>
    </small>
    <hr noshade size=1>
    <table $IDXPG-TBL-LINKS-ATTRS$>
    <tbody>
    <tr>
    <td align="left"><a href="$PG(TFIRST)$">&lt;&lt;&lt;&lt;</a>
    <td align="right">$PGLINK(TPREV)$
    <td align="left">$PGLINK(TNEXT)$
    <td align="right"><a href="$PG(TLAST)$">&gt;&gt;&gt;&gt;</a>
    <tr align="center">
    <th colspan=4><small>Page $PAGENUM$ of $NUMOFPAGES$</small></th>
    </tbody>
    </table>
    </TFoot>
    
    <!--	TTOPBEGIN is the markup for the beginning of a thread, and the
    	first message in a thread.
      -->
    <TTopBegin>
    <!-- Top of a thread -->
    <li><a $A_NAME$><strong>$SUBJECTNA$</strong></a><br>
    <a $FRAME-MAIN$ href="frm$MSGNUM$.html">$FROMNAME$</a>
    </TTopBegin>
    
    <!--	TTOPEND is the markup for closing a main thread.
      -->
    <TTopEnd>
    </li>
    <!-- End of a thread -->
    </TTopEnd>
    
    <!--	TLITXT is the markup for a message *within* a thread
      -->
    <TLiTxt>
    <li><a $A_NAME$ $FRAME-MAIN$ href="frm$MSGNUM$.html">$FROMNAME$</a>
    </TLiTxt>
    
    <TLiEnd>
    </li>
    </TLiEnd>
    
    <!--	TSINGLETXT is the markup for a message not in a thread.  I.e.
    	it does not start a thread or is part of a thread.
      -->
    <TSingleTxt>
    <li><a $A_NAME$>$SUBJECTNA$</a>,
    <a $FRAME-MAIN$ href="frm$MSGNUM$.html">$FROMNAME$</a>
    </li>
    </TSingleTxt>
    
    <!--	TSUBJECTBEG is any markup at the beginning of a sub-thread that
    	is based on the subject of the message.
      -->
    <TSubjectBeg>
    <LI><font size="-1">Possible follow-ups</font></LI>
    </TSubjectBeg>
    
    <!--	TCONTBEGIN is used to show the continuation of a thread
    	that has been split by a page boundary.  This resource
    	is only meant to provide some informative cue for the
    	reader.  Notice, no links are defined in the resource.
      -->
    <TContBegin>
    <LI><STRONG>$SUBJECTNA$</STRONG>, <EM>(continued)</EM>
    </TContBegin>
    
    <!--	TCONTEND closes off any markup opened by TCONTBEGIN
    	(if required).
      -->
    <TContEnd>
    </LI>
    </TContEnd>
    
    <!--	TINDENTBEGIN is used to open a level indent in a
    	thread listing.  It is used to restart a thread that
    	has been split by a page boundary.
      -->
    <TIndentBegin>
    <UL>
    </TIndentBegin>
    
    <!--	TINDENTEND is used to close a level opened by TINDENTBEGIN.
      -->
    <TIndentEnd>
    </UL>
    </TIndentEnd>
    
    <!-- ================================================================== -->
    <!-- 	Main index resources						-->
    <!-- ================================================================== -->
    
    <!--	The main index is the chronological index since we have
    	specified the <SORT> element (which is the default).
      -->
    <Title chop>
    $MAIN-TITLE$ (date)
    </Title>
    
    <!--	NEXTPGLINK and NEXTPGLINKIA control how the link to the
    	next index page is formatted.  NEXTPGLINKIA is used for
    	the last page of the index.
      -->
    <NextPgLink chop>
    <A HREF="$PG(NEXT)$">&gt;&gt;</A>
    </NextPgLink>
    <NextPgLinkIA chop>
    &gt;&gt;
    </NextPgLinkIA>
    
    <!--	PREVPGLINK and PREVPGLINKIA control how the link to the
    	previous index page is formatted.  PREVPGLINKIA is used for
    	the first page of the index.
      -->
    <PrevPgLink chop>
    <A HREF="$PG(PREV)$">&lt;&lt;</A>
    </PrevPgLink>
    <PrevPgLinkIA chop>
    &lt;&lt;
    </PrevPgLinkIA>
    
    <!--	LISTBEGIN defines the markup for the start of the message
    	listing.  Traditionally, the resource also defines links
    	to any other indexes for the archive.  Here, we define
    	the resource to link to the thread index, navigational
    	links to next/prev/first/last pages, and the start of
    	the unordered list for the message list.
      -->
    <ListBegin>
    <ul>
    <li><a href="$TIDXFNAME$">Thread Index</a></li>
    </ul>
    <hr>
    <table $IDXPG-TBL-LINKS-ATTRS$>
    <tbody>
    <tr align="center">
    <th colspan=4><small>Page $PAGENUM$ of $NUMOFPAGES$</small></th>
    <tr>
    <td align="left"><a href="$PG(FIRST)$">&lt;&lt;&lt;&lt;</a>
    <td align="right">$PGLINK(PREV)$
    <td align="left">$PGLINK(NEXT)$
    <td align="right"><a href="$PG(LAST)$">&gt;&gt;&gt;&gt;</a>
    </tbody>
    </table>
    <hr noshade size=1>
    <small>
    <ul>
    </ListBegin>
    
    <!--	LISTEND defines the markup for the end of the message
    	listing.
      -->
    <ListEnd>
    </ul>
    </small>
    <hr noshade size=1>
    <table $IDXPG-TBL-LINKS-ATTRS$>
    <tbody>
    <tr>
    <td align="left"><a href="$PG(FIRST)$">&lt;&lt;&lt;&lt;</a>
    <td align="right">$PGLINK(PREV)$
    <td align="left">$PGLINK(NEXT)$
    <td align="right"><a href="$PG(LAST)$">&gt;&gt;&gt;&gt;</a>
    <tr align="center">
    <th colspan=4><small>Page $PAGENUM$ of $NUMOFPAGES$</small></th>
    </tbody>
    </table>
    </ListEnd>
    
    <!--	LITEMPLATE defines the markup for a message list entry
    	for the main index.  Since the main index has a simple
    	flat, linear listing, LITEMPLATE defines how all entries
    	will look.
    
    	Note how I include $A_NAME$ so links from a message to
    	the index will have the index scrolled to where the
    	message is listed.
      -->
    <LiTemplate>
    <li><a $FRAME-MAIN$ $A_NAME$
    href="frm$MSGNUM$.html"><strong>$SUBJECTNA$</strong></a>
    <ul><li>$FROMNAME$</li></ul>
    </li>
    </LiTemplate>
    
    <!-- ================================================================== -->
    <!-- 	Message Page Resources						-->
    <!-- ================================================================== -->
    
    <!--	Have the main subject header centered.
      -->
    <SubjectHeader>
    <h2 align="center">$SUBJECTNA$</h2>
    <hr>
    </SubjectHeader>
    
    <!--	Mail header formatting.  The default header formatting is
    	overridden to use a table for formatting.
      -->
    
    <!-- Exclude some fields from messages heads -->
    <Excs>
    subject
    xref
    </Excs>
    
    <!-- Fields labels will be in HTML strong elements -->
    <LabelStyles override>
    -default-:strong
    </LabelStyles>
    
    <!-- Field values will be in normal text -->
    <FieldStyles override>
    -default-:
    </FieldStyles>
    
    <!-- Open table markup for message header -->
    <FieldsBeg>
    <table width="100%">
    <tbody>
    </FieldsBeg>
    
    <!-- Each label starts a new row in the table -->
    <LabelBeg>
    <tr>
    <td align="right" valign="top">
    </LabelBeg>
    
    <!-- Close table cell for field label -->
    <LabelEnd>
    </td>
    </LabelEnd>
    
    <!-- Field value starts a new table cell -->
    <FldBeg>
    <td align="left">
    </FldBeg>
    
    <!-- Close value table cell and row -->
    <FldEnd>
    </td>
    </tr>
    </FldEnd>
    
    <!-- Close table body and table -->
    <FieldsEnd>
    </tbody>
    </table>
    </FieldsEnd>
    
    <!--	Define markup between mail message header and body.
      -->
    <HeadBodySep>
    <hr noshade size=1>
    </HeadBodySep>
    
    <!--	Define message-id link markup.  We redefine it so the message-id
    	links will link to the appropriate message frame document.  Note,
    	this applies to message data.  Therefore, once a message-id
    	is converted to a link, the format of the link cannot be changed.
    	Any changes to MSGIDLINK will only affect newly create links.
      -->
    <MsgIdLink>
    <A $FRAME-MAIN$ HREF="frm$MSGNUM$.html">$MSGID$</A>
    </MsgIdLink>
    
    <!--	Define MSGFOOT to contain a partial thread listing.  Set
    	TSLICE to have current message as the start of the listing.
    	Redefine TSLICEBEG and TSLICEEND to suit our needs.  The
    	thread formating resources used for the thread index are
    	also apply to a thread slice listing.
      -->
    <MsgFoot>
    Partial thread listing:
    $TSLICE$
    </MsgFoot>
    
    <TSlice>
    0:4
    </TSlice>
    <TSliceBeg>
    <ul>
    </TSliceBeg>
    <TSliceEnd>
    </ul>
    </TSliceEnd>
    
    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
    <!-- 	Message navigation resources					-->
    
    <!--	We define TOPLINKS and BOTLINKS as blank since derived files
    	with frames will provide navigational links.
    	Note: A newline is needed else mhonarc will use the default
    	      values if the elements are null.
      -->
    <TopLinks>
    
    </TopLinks>
    
    <BotLinks>
    
    </BotLinks>
    
    <!--	We define next/previous links to point to frame documents
    	created through the definederived feature.  Since (T)NEXTBUTTON,
    	(T)NEXTBUTTONIA, (T)PREVBUTTON, and (T)PREVBUTTONIA actually set
    	their corresponding resource variables, these values are
    	actually utilized in the derived navigational files.
      -->
    <TNextButton chop>
    <a $FRAME-MAIN$ href="frm$MSGNUM(TNEXT)$.html">Next</a>
    </TNextButton>
    
    <TNextButtonIA chop>
    Next
    </TNextButtonIA>
    
    <TPrevButton chop>
    <a $FRAME-MAIN$ href="frm$MSGNUM(TPREV)$.html">Prev</a>
    </TPrevButton>
    
    <TPrevButtonIA chop>
    Prev
    </TPrevButtonIA>
    
    <NextButton chop>
    <a $FRAME-MAIN$ href="frm$MSGNUM(NEXT)$.html">Next</a>
    </NextButton>
    
    <NextButtonIA chop>
    Next
    </NextButtonIA>
    
    <PrevButton chop>
    <a $FRAME-MAIN$ href="frm$MSGNUM(PREV)$.html">Prev</a>
    </PrevButton>
    
    <PrevButtonIA chop>
    Prev
    </PrevButtonIA>
    
    <!-- ================================================================== -->
    <!--	MIME Resources							-->
    <!-- ================================================================== -->
    
    <!--	Define some options to text/plain filter.
      -->
    <MimeArgs>
    text/plain:quote maxwidth=78
    </MimeArgs>
    
    <!--	Have iso-8859-1 data stored in binary form since Web browsers
    	use iso-8859-1 natively.  I.e.  Do not keep iso-8859-1 encoded
    	or escaped with SGML entities.
      -->
    <DecodeHeads>
    <CharsetConverters>
    iso-8859-1:-decode-
    </CharsetConverters>
    
    MHonArc-2014-05-05-snap/doc/install.html0000644004705000001440000006612212332046112016456 0ustar ehoodusers MHonArc Reference -- Installation
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Installation

    The following section describes how to install MHonArc on your system.

    NOTE:

    Make sure to read the release notes before installing MHonArc, especially if you are upgrading from a previous release. If you are reading the text version of this installation document, a text version of the release notes, RELNOTES, exists within the root of the MHonArc distribution.


    For the Impatient

    If you cannot wait to get going, try one of the following:

    • Plaform independent install:
      prompt> wget 'http://www.mhonarc.org/release/MHonArc/MHonArc-X.X.X.tar.gz'
      prompt> gzip -dc MHonArc-X.X.X.tar.gz | tar xvf -
      prompt> cd MHonArc-X.X.X
      prompt> perl install.me
      

    • RPM install:
      prompt> wget 'http://www.mhonarc.org/release/MHonArc/MHonArc-X.X.X-n.noarch.rpm'
      prompt> rpm -Uvh MHonArc-X.X.X-1.noarch.rpm
      

    Where X.X.X represents the version number, and X.X.X-n represents the version and release number of the RPM. Generally, the release number is equal to '1'.

    If there were problems doing the above, then keep reading.


    Vendor Supplied Packages

    Some software system vendors provide MHonArc, usually as an optional package. The following links provide vendor-supplied versions of MHonArc:

    Debian GNU/Linux
    <http://packages.debian.org/mhonarc>
    Linux (multiple vendors/distros)
    <http://www.rpmfind.net/linux/rpm2html/search.php?query=MHonArc>
    NOTE:

    Choosing to go with a vendor-supplied package depends on your needs. Here are some things to consider:

    • Some vendors may have their own QA process along with their own support services while others may provide MHonArc as a contributed package with no additional support.

    • Vendor/distro versions of MHonArc tend not to reflect the latest release since there is a latency between a new release made available from mhonarc.org to when vendors are able to download and create their own packages. This difference can be important depending on what MHonArc features or fixes you need.

    In general, if your vendor provides their own QA and support services for the software they provide, it is usually best to use the vendor's version of MHonArc. However, if the vendor does not provide additional support, and/or you need the latest features and fixes, you may want go with what is provided from mhonarc.org.

    If you require professional support and consulting, see Contacts for contact information.

    This document does not cover any installation details for vendor supplied packages. See your vendor's supplied documentation for installation instructions.


    System Requirements

    The following is required to run MHonArc:

    • Perl 5 is installed. If you do not have Perl 5, goto <http://language.perl.com/> for download information. Perl versions 5.6.1 and later are recommended.

    • The following standard modules are installed:

      • Fcntl
      • File::Basename
      • Getopt::Long
      • Symbol
      • Time::Local

      NOTE:

      The installation program will verify that required modules are installed.

    • The following modules are optional (they are not required, but they will provided improved or enhanced functionality):

      • Digest::MD5: Used for creating IDs for messages without message-ids. MHonArc uses message-IDs to detect for already-archived or duplicate messages. Digest::MD5 gives MHonArc this capability for messages without message-IDs.

      • File::Temp: MHonArc uses temporary files when writing files to disk (for security and data integrity reasons). If File::Temp is not available, MHonArc will use its own internal implementation, which is not as secure as File::Temp, but adequate for most uses.

      • MIME::Base64: Used for base64 decoding (base64 is the standard way to encoding binary data in mail). MIME::Base64 is normally provided with the standard perl distribution. If MIME::Base64 is not available, MHonArc will fallback to its own internal, less efficient, base64 decoder.

      • POSIX: Used for setting locale as defined by the LANG resource and for formatting time strings if POSIXSTRFTIME resource is enabled.


    Downloading MHonArc

    The homepage for MHonArc is <http://www.mhonarc.org/>. The homepage list various sites that you can download MHonArc.

    MHonArc is distributed in the following formats:

    • RPM: MHonArc-X.X.X-n.noarch.rpm
    • tar-bz2: MHonArc-X.X.X.tar.bz2
    • tar-gzip: MHonArc-X.X.X.tar.gz
    • zip: MHonArc-X.X.X.zip

    Where X.X.X represents the version number, and X.X.X-n represents the version and release number of the RPM. Generally, the release number is equal to '1'. Choose the format that best suits your environment.

    NOTE:

    A source RPM, MHonArc-X.X.X-n.src.rpm, is also provided for those that need to create custom RPM bundles.

    NOTE:

    Alternate distribution formats for MHonArc may be available from third-parties. Alternate distribution formats are not covered in this document.

    If you downloaded the RPM distribution, goto RPM Installation. If you downloaded one of the other formats, goto Extracting the MHonArc Distribution.


    RPM Installation

    RPM is a widely used software package manager for various Linux-based systems and other Unix-based environments. If the software on your system is managed by RPM, you may prefer to install MHonArc via RPM:

    prompt> rpm -Uvh MHonArc-X.X.X-n.noarch.rpm
    

    NOTE:

    RPM-based installation requires that the perl executable is located at /usr/bin/perl. If you have perl installed in a different location, you can download the src RPM and edit the RPM spec file to reflect your system's configuration.

    MHonArc files will be installed in the following locations:

    /usr/bin Program files: mhonarc, mha-dbedit, ...
    /usr/lib/MHonArc Library files.
    /usr/share/doc/MHonArc-X.X.X Documentation, examples, and extras.
    /usr/share/man/man1 Manpages.

    It is highly likely that you will need to have root priviledges to install via RPM. If you do not have root access, or you want to install in a non-standard location, you either need to create a new RPM from the source RPM or install MHonArc from the non-RPM bundles.

    Once the install is completed, you can skip to Post Installation Configuration.

    NOTE:

    RPM distributions have been directly available starting with MHonArc v2.6.5. However, alternate RPM packages are available for current and older versions via third parties and some Linux distros. Goto <http://www.rpmfind.net/linux/rpm2html/search.php?query=MHonArc> to get a list of third-party RPM bundles.


    Extracting the MHonArc Distribution

    NOTE:

    If doing an RPM-based install, goto RPM Installation above.

    After downloading the MHonArc distribution, move the file to a temporary location for extraction. For extraction under Unix-like systems, use one of the following commands based upon the distribution format you downloaded:

    tar-bz2
    prompt> bzip2 -dc MHonArc-X.X.X.tar.bz2 | tar xvf -
    tar-gzip
    prompt> gzip -dc MHonArc-X.X.X.tar.gz | tar xvf -
    zip
    prompt> unzip MHonArc-X.X.X.zip

    For Win32 systems, you can use a program like WinZip to extract the tar-gzip or zip formats. If using Cygwin, use the Unix-based extraction methods.

    NOTE:

    If your are using Cygwin and the cygwin build of Perl, then the installation and usage of MHonArc is the same as a Unix-based environment.

    After extraction, the subdirectory MHonArc-X.X.X will have been created containing all the files comprising MHonArc.

    NOTE:

    Please read the release notes before continuing for any news about compatibility with previous versions and/or important usage information.

    Now, change your current directory to MHonArc-X.X.X for the next step. On a Unix-type system, use the following command:

    prompt> cd MHonArc-X.X.X
    

    Installing with install.me

    Provided in the MHonArc distribution is a Perl program, install.me, for installing MHonArc on your system. To run the program, type the following command:

    prompt> perl install.me
    

    NOTE:

    You must be in the same directory as the install.me program when you run it.

    The installation program will ask you a series of questions on where the perl executable is and where to put MHonArc files. Just hit <Enter> to accept the default values listed in ()'s.

    NOTE:

    The default values are determined by the configuration of perl on your system. If you choose the defaults, you may need root/admin privileges to successfully install MHonArc.

    install.me can take several options on the command-line to affect what is done during installation. The following is the list of options available:

      -afs                  : Skip permission checks (useful if AFS)
      -batch                : Run in batch mode (do not ask questions)
      -binpath <path>       : Directory path to install programs/scripts
      -docpath <path>       : Directory path to install documentation
      -help                 : A message summarizing options available
      -libpath <path>       : Directory path to install library files
      -filelist <file>      : List of files to install (def="FILELIST")
      -manpath <path>       : Directory path to manpages
      -nobin                : Do not install programs
      -nodep                : Skip module dependency check
      -nodoc                : Do not install documentation
      -nolib                : Do not install library files
      -noman                : Do not install manpages
      -perl <pathname>      : Pathname of perl interpreter
      -prefix <path>        : Set prefix for installation directories
    

    For example, if you do not want to install the documentation, do the following:

    prompt> perl install.me -nodoc
    

    Later on, if you decide you want to install the documentation, but not re-install the other files, do the following:

    prompt> perl install.me -nobin -nolib -noman
    

    If you want to install files relative to your home directory, do the following:

    prompt> perl install.me -prefix $HOME
    

    install.me Notes

    • The "#!" line in the installed programs are set to point to the perl executable specified in the installation process. This is convienence for those using systems that support the "#!" notation.

    • The installation lib directory is added to each program's search path so each program can find the libaries needed for proper execution. Therefore, you do NOT have to set your PERL5LIB environment variable if you install the library files in a non-standard location.

    • If you specify paths that do not exist, the install.me program creates the paths for you. If running in interactive mode, install.me prompts you for confirmation before creating a path.

    • install.me supports environment variable interpolation in pathnames specified during interactive installation. For example, if you want to install program files into your local bin directory, you can enter the following when prompted for the location to install executables: $HOME/bin. Also, if the '~' (tilde) character is the first character of the pathname specified, it will be expanded to the value of the HOME environment variable. Therefore, the following are equivalent: $HOME/bin and ~/bin.

    • The -afs option should only be needed if installing MHonArc onto AFS and using an older version of Perl 5. It should not be needed for Perl 5.005 or later.

    • If you want to abort the installation, just enter the termination character, typically <Ctrl-C> for Unix systems and <Ctrl-Z> for Win32 systems.


    The Perl 5 Way

    Of course, you can install MHonArc the standard way under Perl 5:

    prompt> perl Makefile.PL
    prompt> make
    prompt> make install
    

    If you want to install in a specific directory, try:

    prompt> perl Makefile.PL PREFIX=/tmp/myperl5
    prompt> make
    prompt> make install
    

    NOTE:

    install.me is actually called "behind the scenes" in batch mode to install the files. Therefore, alternate variations of invoking perl Makefile.PL may not be supported.


    Win32 Notes

    • The main programs will automatically be converted to DOS batch files. Hence, if the path location of the main programs is in your PATH, you should be able to invoke them like any other program.

      NOTE:

      The path to the perl executable must be in your PATH, also.

    • The main programs will also be copied to ".pl" files. Therefore, if you have .pl associated with Perl in the registry, you can invoke the programs directly (if the path location of the main programs are in your search path). For example:

      prompt> mhonarc.pl ...
      

      This is known to work under WinNT's command shell and under the Cygwin bash shell.

      This is better than using the batch files since I/O redirection does not work with batch files.

    • In the logo directory of the distribution contain .ico files for associating the MHonArc logo with MHonArc .mrc resource files.


    Alternate Operating Systems

    In many cases, install.me works for other operating systems. Please contact the author on any success stories for other operating systems, and please send any patches, if required.


    Manual Installation

    If install.me does not work for your system, here is how to install MHonArc manually:

    • Copy files in the lib directory to the library location you desire.

    • Copy the program files to the location you want them installed. After copying, do the following:

      • Edit the "#!/..." line for each program file to reference the complete pathname of your perl interpreter. The line should be the first line of each program file.

        NOTE:

        This step is only needed for systems (Unix) that support "#!".

      • Then do one of the following:

        • Add a new line right after the "#!/..." line of each program file to contain the following:

            use lib '/path/to/lib/files';

          where "/path/to/lib/files/" is the path to where copied the library files to.

          NOTE:

          If the location you copied the libraries are already part of Perl's standard library search path, you do not need to add the "use lib" statement.

        • Or, set your PERL5LIB environment to include the path location you copied the library files to.


    Post Installation Configuration

    After installation, you may want to do some site-specific configuration.

    Default Resource File

    You have the ability to create a default resource file to make site-wide defaults for MHonArc. See the DEFRCFILE resource on valid pathname locations for the default resource file. For more information on what can be put in a resource file, see the Resources section.

    NOTE:

    It is advisable to create some local documentation for users describing any settings you place in the site-wide resource file. This will avoid confusion if site settings vary from default settings described in the documentation, and it will help avoid invalid bug reports.

    Site Initialization Library

    If you do not know Perl, ignore this section.

    When MHonArc opens an archive for processing, MHonArc will attempt to execute the instructions in the file mhasiteinit.pl. This file allows you to make site customizations not possible through a default resource file. mhasiteinit.pl should be placed in the MHonArc library directory as specified during installation. A sample mhasiteinit.pl file is provied in the examples directory of the distribution to get you started, which includes comments on some of the things you can do with mhasiteinit.pl.


    Resource File Editing

    If you are a Vim user, <http://www.vim.org/>, a syntax file for MHonArc resource files is included in the examples directory: mhonarc.vim. Vim is known to run on a variety of operating systems, and is free software.

    To use mhonarc.vim, copy mhonarc.vim to an appropriate location and add something like the following to your .vimrc file:

      au BufNewFile,BufRead *.mrc	so $HOME/share/vim/syntax/mhonarc.vim
    

    Of course, change the pathname to mhonarc.vim to wherever you copied it to.

    Now, any file with .mrc extension will put Vim into MHonArc resource file highlighting mode. The mode is best used with color-capable terminals.


    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    $Date: 2005/05/13 00:00:35 $
    MHonArc
    Copyright © 1997-2003,2005 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/0000755004705000001440000000000012332046112014662 5ustar ehoodusersMHonArc-2014-05-05-snap/doc/faq/mime.html0000644004705000001440000002521112332046112016500 0ustar ehoodusers MHonArc FAQ: MIME
    [Prev][TOC][Manual][Home][Next]


    MIME


    What is MIME?

    MIME stands for Multipurpose Internet Mail Extensions. An HTML version of the RFCs that define MIME are available at (http://www.mhonarc.org/~ehood/MIME/).

    In sum, MIME "redefines the format of message bodies to allow multi-part textual and non-textual message bodies to be represented and exchanged without loss of information." [RFC 1521]


    Does MHonArc support message header extensions for non-ASCII text?

    v2.0 or later. Review the CHARSETCONVERTERS resource page for which character sets are supported by MHonArc and how to extend MHonArc to support other character sets.


    How can I get MHonArc to recognize content-types it states it does not recognize?

    This question can be answered by reading about the MIMEFILTERS resource of the MHonArc documentation. The solution may require registering a pre-existing filter for the given content-type, or hooking in a new filter.

    NOTE:

    MHonArc treats unknown content-types as application/octet-stream for purposes of filtering.


    Can I override the default filters in MHonArc?

    Yes. MHonArc's default filters are hooked in as described in the MIMEFILTERS resource. Note, please review the options available for the default filters described in the MIMEFILTERS resource page since they may already provide the capabilities you need.


    Can I override the multipart/* processing of MHonArc?

    Yes, but not recommended. Make sure you are familiar with how MHonArc does things before considering implementing your own multipart filter. In sum, you can completely replace MHonArc's filters with your own if you so desire.


    Why are attachments saved as a ".bin" files?

    MHonArc uses the Content-Type field in messages to determine the type of data that is being processed. If data is gettings saved to a ".bin" file, it means the data has a content-type of application/octet-stream. The best solution to the problem is have the senders of the messages label the data properly. You can also check out the m2h_external::filter options documented in the MIMEFILTERS page of the documentation for some alternate solutions.


    Can attachments get saved with the filename specified in the message header?

    Yes. See the m2h_external::filter options documented in the MIMEFILTERS page of the documentation. Make note of the security cautions in the documentation. Example:

    <MIMEArgs>
    m2h_external::filter; usename
    </MIMEArgs>
    
    See also:
    Why doesn't MHonArc, by default, use the specified filename when saving attachments?

    Can the <PRE> tags be removed from converted messages?

    Yes. See the options available for the m2h_text_plain::filter described in the MIMEFILTERS resource page of the documentation. Example:

    <MIMEArgs>
    m2h_text_plain::filter; nonfixed
    </MIMEArgs>
    

    Can long lines be wrapped in converted messages?

    Yes. See the options available for the m2h_text_plain::filter described in the MIMEFILTERS resource page of the documentation. Example:

    <-- Make sure lines are no longer than 80 characters -->
    <MIMEArgs>
    m2h_text_plain::filter; maxwidth=80
    </MIMEArgs>
    

    Can I exclude specific media-types?

    Yes. See the MIMEEXCS resource. Example:

    <-- Exclude all HTML and binary data -->
    <MIMEExcs>
    text/html
    application/octet-steam
    </MIMEExcs>
    

    Can I tell MHonArc to use the text/plain part over a text/html part in a multipart/alternative message?

    Yes, in v2.5.8, and later, via the MIMEALTPREFS resource. Example:

    <MIMEAltPrefs>
    text/plain
    text/html
    </MIMEAltPrefs>
    

    How do I exclude attachments from my archives?

    See the following archived message to the mhonarc-users list: Re: Disabling attachments.

    NOTE:

    The MIMEINCS resource mentioned in the list message is available in MHonArc v2.6.12 and later.


    [Prev][TOC][Manual][Home][Next]


    $Date: 2005/06/07 19:17:26 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/monicon.png0000644004705000001440000000075507451276551017063 0ustar ehoodusersPNG  IHDRFBHPLTE$4-#&-W.OoKf2 _E1$n$HT'SbiUژƿ4tRNS@fbKGD ֘ IDATxev ED@O{]C[k$  ESڔWF+떒 R m̂'=NpSI cR2{\XVPxȤ_ 2rJ$bin:Ԡ !ОYH!a  S0uw9r9նnvxVX?F^}}jk)ۣ0}ְsɌP4~tmd|2-? EEjN.tEXtComment Imported from GIF image: mhonarc.gif.8IENDB`MHonArc-2014-05-05-snap/doc/faq/msgpgs.html0000644004705000001440000002652112332046112017056 0ustar ehoodusers MHonArc FAQ: Message Pages
    [Prev][TOC][Manual][Home][Next]


    Message Pages


    Can I change the order the message resources are printed?

    No. However, with the exceptions of the message header and body (but see next questions), those resource can be defined anyway you like. For example, I can change the TOPLINKS resource to look like the BOTLINKS resource. Or, I can change the default meaning of the resource so it really outputs something else entirely. If you look at the documentation, the resources are just defined by HTML markup and resource variables. Many of the resource variables can be used within any resource.


    How can I change how message headers gets formatted?

    There are several resources for controlling how message headers are converted into HTML. You can exclude fields and style fields with your own HTML markup. For example, here are resources that cause message headers to be formatted with a table:

    <FIELDSBEG>
    <table>
    </FIELDSBEG>
    <LABELBEG>
    <tr>
    <td align="right" valign="top">
    </LABELBEG>
    <LABELEND>
    </td>
    </LABELEND>
    <FLDBEG>
    <td align="left">
    </FLDBEG>
    <FLDEND>
    </td>
    </tr>
    </FLDEND>
    <FIELDSEND>
    </table>
    </FIELDSEND>
    

    You can also control the order message fields are displayed:

    <FIELDORDER>
    from
    subject
    date
    -extra-
    </FIELDORDER>
    

    The "-extra-" signifies all other message fields in alphabetic order.

    You can also exclude specific message fields:

    <EXCS>
    x-
    precendence
    </EXCS>
    

    Here, we are exluding all "X-..." fields and the Precendence field.

    Consult the MHonArc documentation for more information on how to use the resources shown here and other resources for controlling message header formatting.


    How can I change how message body data gets formatted?

    Message body conversion are controlled by content-type filters. See the MIME section of this FAQ for more information.


    Can I have the message header come after the body?

    In general, no. A limitation of MHonArc is that you cannot change the relative order of the resources/message-data in the output (but see other questions in this section). MHonArc expects a specific order so it can edit archived messages when needed w/o using a bunch of logic and performance degradation (special comment declarations are used to mark off the different sections of a message). Therefore, you cannot have the body come before the message header. The best you can do is suppress the header (via EXCS) and create a bogus header via the resource variables available. For example:

    <EXCS override>
    .
    </EXCS>
    <MSGFOOT>
    <ul>
    <li>From: $FROM$
    <li>Subject: $SUBJECTNA$
    <li>Date: $DATE$
    <ul>
    </MSGFOOT>
    

    In v2.6, you can include additional header fields by using the FIELDSTORE resource and the $MSGHFIELD$ resource variable. For example, say you want to include the To: field in the previous example. You can do the following:

    <EXCS override>
    .
    </EXCS>
    <FIELDSTORE>
    to
    </FIELDSTORE>
    <MSGFOOT>
    <ul>
    <li>To: $MSGHFIELD(CUR;to)$
    <li>From: $FROM$
    <li>Subject: $SUBJECTNA$
    <li>Date: $DATE$
    <ul>
    </MSGFOOT>
    

    Can I make changes to message formatting on existing archived messages?

    Yes, mostly. The only thing cannot be changed once converted is the message header and message body (but see note below). All other parts of the message page can be changed at any time. To make any changes appear on existing archived messages, set the EDITIDX resource. The EDITIDX resource tells MHonArc to recreate all archive pages.

    NOTE:

    v2.6 introduced the RECONVERT resource. With RECONVERT, you can reconvert messages if the original raw messages are available. See RECONVERT examples for more information.


    What are those "<!--X-... -->"?

    If you ever looked at the HTML source of converted messages, you will notice a bunch of comment declarations, "<!--X-... -->". These comment declarations are used by MHonArc to properly edit messages when needed. Therefore, DO NOT MESS WITH THEM.


    Are those "<!--X-... -->" legal comments?

    Yes.


    Can I have footers removed from messages when archived?

    The following questions are in the same class as the following:

    Can I remove signatures in archived messages?
    Can I remove list footers in archived messages?
    Can I remove mail ads from archived messages?

    Yes, but you will need to register a custom filter via the MIMEFILTERS resource.

    The following custom filter will remove signatures from messages:

    package my_text_plain;
    
    sub filter {
      my($fields, $data, $is_decoded, $filter_args) = @_;
    
      # strip signature
      $$data =~ s/\r\n/\n/g;
      $$data =~ s/^-- \n[\s\S]*//m;
    
      # call mhonarc's default filter to do everything else
      require mhtxtplain.pl;
      return m2h_text_plain::filter($fields, $data, $is_decoded, $filter_args);
    }
    

    With this implementation, your customization will inherit any new capabilities (and bug fixes) of the default plain text filter without have to update your filter each time you upgrade mhonarc.

    Let's assume the filter above is contained in the file my_txtplain.pl. To register the filter into MHonArc we use the MIMEFILTERS resource:

    <MIMEFilters>
    application/x-patch;     my_text_plain::filter;       my_txtplain.pl
    message/delivery-status; my_text_plain::filter;       my_txtplain.pl
    message/partial;         my_text_plain::filter;       my_txtplain.pl
    text/*;                  my_text_plain::filter;       my_txtplain.pl
    text/plain;              my_text_plain::filter;       my_txtplain.pl
    x-sun-attachment;        my_text_plain::filter;       my_txtplain.pl
    </MIMEFilters>
    

    [Prev][TOC][Manual][Home][Next]


    $Date: 2006/05/26 14:11:57 $
    MHonArc
    Copyright © 1997-2004, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/usage.html0000644004705000001440000004067012332046112016663 0ustar ehoodusers MHonArc FAQ: General Usage
    [Prev][TOC][Manual][Home][Next]


    General Usage


    What are "resources"?

    The behavior of MHonArc is controled by resources. Resources are set, or defined, by command-line options, environment variables, or a resource file. For example, the MAXSIZE resource tells MHonArc the maximum number of messages allowed in an archive. To set the resource, you can use the -maxsize command-line option, the M2H_MAXSIZE envariable, or the <MAXSIZE> resource file element.

    See the Resources section of the documentation for more information.


    Is there a resource file editor?

    If you are Vim user, <http://www.vim.org/>, a syntax file for MHonArc resource files is included in the examples directory (mhonarc.vim). To use it, copy mhonarc.vim to an appropriate location and add something like the following to your .vimrc file:

    au BufNewFile,BufRead *.mrc     so $HOME/share/vim/syntax/mhonarc.vim
    

    Of course, change the pathname to mhonarc.vim to where ever you copied it to.

    Now, any file with ".mrc" extension will put Vim into MHonArc resource file highlighting mode. The mode is best used with color-capable terminals.


    How do you set a resource to nil?

    For page layout resources, do something like the following in your resource file:

    <BotLinks>
    
    </BotLinks>
    

    Notice the blank line. If you specify no content, MHonArc will fallback to the default value of the resource.

    WARNING:

    Only do the above for page layout related resources. For other resources, the above technique will have no effect, or it may cause unexpected results. See How do I reset an archive's resources to the default values? for more information on reseting resources to default values.


    How do I reset an archive's resources to the default values?

    The following two commands will reset an archive to use default resource values:

    prompt> mha-dbedit -nosaveresources -outdir /path/to/your/archive
    prompt> mhonarc -saveresources -editidx -outdir /path/to/your/archive
    

    You could also include -rcfile option to the last step if you want to modify some resources from the default in case you want to reset some resources and not all of them.


    I get an error that "newgetopt.pl" cannot be required, where is it?

    newgetopt.pl comes with the standard Perl distribution. Check with your sys admin on where it is located (it should be in the default Perl search path).

    NOTE:

    v2.3 and later use Getopt::Long, which is included in the Perl 5 distribution.


    Does MHonArc provide searching of archives?

    No, but searching can be provided by another utility. The following list of search indexing tools have been used with MHonArc archives:

    For more information, see the respective documentation of the search engine software of interest.

    NOTE:

    You may also want to check out the following:


    Is there a Web interface for MHonArc?

    No official ones. Several users have created home-grown interfaces to perform various tasks. An experimental, unsecure web admin tool comes in with the MHonArc distribution under the "admin" directory. I recommend searching the MHonArc mailing list archives for discussion about web interfaces.


    Does MHonArc require that the original message be available when updating an archive?

    No. Once a message is archived, the original can be stored away. MHonArc preserves all relevant information in its database. For possible recovering purposes, it is recommended to preserve original messages in a storage archive. This allows you to rebuild MHonArc archives in case of data corruption.


    Do I have to respecify the resource file each time I update an archive?

    No. The archive database stores all resource settings. The only time you need to respecify the resource file is if changes are required in the layout of the archive.

    NOTE:

    When utilizing the OTHERINDEXES resource, the resource filenames listed in the main resource file are stored in the database, but the resources for each additional index are NOT. Hence, the resource files defining the additional indexes must be accesible.


    Can I have MHonArc process a bunch of separate message files?

    Yes. MH mail folder processing is just processing a bunch of separate message files in a directory. MHonArc uses the MHPATTERN resource to determine which files to process. Therefore, all you need to do is redefine the MHPATTERN resource and pass the directory your message files are in when invoking MHonArc.

    For example, say I want to process all files in a directory called "messages". I'd do the following:

    prompt> mhonarc -mhpattern "^[^.]" messages
    

    MHPATTERN can be any Perl regular expression. The one in the example matches any file not beginning with ".". This is to avoid the special files "." and ".." which are directories.

    The other way to process individual message files is to do it one at a time. For example:

    prompt> mhonarc -add < file1.822
    prompt> mhonarc -add < file2.822
    ...
    

    Can I tell MHonArc to read a mailbox from standard input?

    Yes, but only in v2.0 or later (v2.0 beta releases do not have the capability). The syntax is something like the following:

    prompt> mhonarc [options-here] -- -
    

    The "--" tells MHonArc to terminate all command-line option processing and treat all following arguments as mail folders. The "-" signifies to use standard input as a mailbox source.

    Since MHonArc can read a mailbox from stdin, this allows MHonArc to be part of a pipeline where MHonArc takes input from some preprocessor that massages some data to make it suitable for processing by MHonArc. For example:

    prompt> mypreproc | mhonarc -- -
    

    Why am I getting "Could not parse date for message ..."?

    This warning is generated when a message does not contain any date information, or the date format used in the message is not recognized by MHonArc. The warning may also indicate an improper end of a message and start of a new message when processing a mailbox file. You may also want to see: Why does a message get split into mulitple messages with no headers?.


    Why doesn't MHonArc extract the date from "From ..." line?

    The "From ..." line (applicable in UUCP-style mailbox files) is the message separator and normally includes a date. The problem is that it is the message separator. The message separator is not part of actual message data, and the value of the message separator is controled by the MSGSEP resource. I.e. The MSGSEP resource can be set anything, so there is no reliable way to extract a date from it.

    Do not lose hope. Provided in the extras directory of the MHonArc distribution (v2.1.1 and later) is a Perl program called prsfrom.pl by A.R. Burgers, burgers@ecn.nl. The program will supply missing Date: and From: fields to mailboxes based upon the message separator line.


    Why is the number of messages reported by MHonArc less than what is reported by my MUA?

    This usually implies that you have duplicate messages. MHonArc skips messages that have already been archived. A way to check if message duplication is the culprit, try the following on your mailbox:

    prompt> grep -i '^message-id:' my.mbox | sort | uniq | wc -l
    
    and
    prompt> grep -i '^message-id:' my.mbox | sort | wc -l
    

    If numbers printed by both commands differ, you have duplicate messages.


    [Prev][TOC][Manual][Home][Next]


    $Date: 2011/01/01 02:43:26 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/envs.html0000644004705000001440000005476712332046112016546 0ustar ehoodusers MHonArc FAQ: Supported Environments
    [Prev][TOC][Manual][Home][Next]


    Supported Environments


    What platforms can MHonArc run under?

    MHonArc is known to run under Unix-based operating systems, MS-DOS/Windows, WinNT, Win95/98, and OS/2. If Perl is available for the system you are using, you can probably run MHonArc.


    What about Mac?

    For OS X users, MHonArc can be used from the command-line in the same manner as a Unix-based system. Lasar Liepins provides an installer and a graphical front-end for OS X.

    For MacPerl users, MHonArc has been coded to support MacPerl. A couple of users have reported success in running MHonArc under MacPerl. Try it out, and if you have problems, send a message to the MHonArc user's list.


    What about VMS?

    The following includes information from Walter F.J. Mueller, W.F.J.Mueller@gsi.de:

     * The -outdir argument must be specified UNIX style.
     * Avoid any $ in a filename, some interpolation will certainly mess it up.
       It ended up defining a few extra logicals like
            $ define kp3_root kp3$root
       to have $ free absolute pathnames in the usual $-prone VMS environment.
    

    Also, you will need to use Perl 5.004_04 or later and MHonArc v2.1.1 or later.


    What version of Perl is required to run MHonArc?

    Perl 5, or later. Older versions of MHonArc are Perl 4 compatible. So if you are under the unfortunate circumstances of only being able to use Perl 4, you will need to grab an older version of MHonArc.

    Perl 5 is required for MHonArc v2.3 or later. The last Perl 4 compatible release is v2.2.


    What mail user agents (MUA's) does MHonarc support?

    The question is better stated as: "What mail message storage formats MHonArc support?"

    MHonArc can convert mail that is stored in UUCP mailbox format (ie. all messages are in a single file), or in the format used by the Rand Message Handler (MH) (messages are contained in separate files within a directory). MHonArc is known to work with the following MUAs: MH/nmh, mail, Mail, Elm, Eudora, WinVN, Windows Trumpet, and NUPop.

    NOTE:

    To support some MUA's, it may require redefining the MSGSEP or MHPATTERN resource. Please consult the documentation for more information about these resources.


    Can MHonArc process Majordomo digests?

    Here is a couple messages from the MHonArc mailing list:

    • Subject: Re: Majordomo Digest -> MHonarc?
    • From: "Christopher P. Lindsey" <lindsey@mallorn.com>
    • Date: Sun, 4 Jan 1998 22:33:31 -0600 (CST)
    • List-Name: mhonarc
    > Hi...
    > 
    >    Has anyone come up with a relatively clean method of converting 
    > majordomo digests to a mailbox format that MHonarc can read?
    > 
    >    I was looking at it, and from what I can see its just a matter of
    > changing the file so that there is a From <> line at the top of each
    > message, so that something like:
    
    If you have the procmail package, formail should do it for you.
    
       formail -ds < digestfile >> newmailbox
    
    It auto-generates the initial 'From ' header.  Unfortunately, it
    also leaves the original digest message (probably).  If it's the
    first message output, do this:
    
       formail +1 -ds < digestfile >> newmailbox
    
    This tells formail to skip the first message (the one that came from
    list-digest-owner or whatever).
    
    Chris
    
    • Subject: Majordomo Digests to mbox format for MHonarc (perl script)
    • From: The Hermit Hacker <scrappy@hub.org>
    • Date: Sun, 4 Jan 1998 23:44:43 -0400 (AST)
    • List-Name: mhonarc
    Hi...
    
    	I've searched the archives for some brain dead simple way of bring in old
    digests so that MHonarc can use them, and couldn't find anything but some 
    references to procmail and -msgsep...nothing which seemed to work "easily"...
    
    	So, here is my contribution...a simple, brain dead script that takes a
    Majordomo digest and converts it to a format that can be used by MHonarc...
    I don't guarantee it, but if anyone can suggest what is wrong with it, I'd
    like to know and try to fix it
    
    	Just run it as: <scriptname> <infile> > <outfile>
    
    Marc G. Fournier                                
    Systems Administrator @ hub.org 
    primary: scrappy@hub.org           secondary: scrappy@{freebsd|postgresql}.org 
    
    #!/usr/local/bin/perl
    $userid = getlogin();
    
    $ii = 0;
    while (<>) {
      if($printline) {
        $line{$ii} = $_;
        $ii++;
      }
      if (/^----------------------------------------------------------------------/) {
        $printline = 1;
        $line{$ii} = "------------------------------";
        $ii++;
      }
    }
    
    for($jj = 0; $jj < $ii; $jj++) {
      if(/^------------------------------/, $line{$jj}) {
        if($line{$jj+2} =~ "^Date:") {
          print "From $userid\n";
          $jj += 2;
        } else {
          if($line{$jj+2} =~ "^End of") {
            exit;
          }
        }
      }
      print $line{$jj};
    }
    
    

    Can MHonArc process Listprocessor archives?

    An answer from a MHonArc user:

    Here is a simple script I wrote to process the archives of my Listprocessor 
    lists. 
    
    #!/usr/local/bin/perl5
    #
    # mhonarch.pl - Process all Listprocessor archives using MHonArc
    #
    # Kevin McCann
    #
    #### Directory locations:
    #
    # Listproc, Majordomo, or Listserv top archives dir 
    $ARCHDIR = "/usr/server/archives";
    #
    # MhonArch web archives directory   
    $MONDIR = "/u/www/htdocs/listproc/mhonarc";
    #
    ## Let's figure out what lists exist
    opendir(DIR,"$ARCHDIR/") || die "Can't open directory";
    @dirs = readdir(DIR);
    @sorteddirs = sort @dirs;
    closedir(DIR);
    for (@sorteddirs) {      # processing a list
       $listname = $_;
       opendir(DIR,"$ARCHDIR/$listname") || die "Can't open directory";
       @logs = readdir(DIR);
       @sortedlogs = sort @logs;
       closedir(DIR);
       for (@sortedlogs) {
         if (/log/) {                # processing files with name format 
    'logYYMM'
           $log = $_;
    
           system("/usr/local/bin/mhonarc  -outdir  $MONDIR/$listname/$log  
    $ARCHDIR/$listname/$log")
    
                     # modify the above command line as needed 
         }
       }
      }
    
    }             # end of script
    
    
    I processed over 100 lists that go back to 1995 with this. It took about 
    one hour. There may be more elegant ways to do it, but this was just a 
    quick hack to get the job done. If you are using an RCFILE, don't forget to 
    include it in the long mhonarc command seen above. Oh, and don't forget to 
    change the first line that specifies your Perl location if you need to - 
    mine is set to /usr/local/bin/perl5.
    
    Good luck!
    
    - Kevin McCann
    kmccann@idrc.ca
    www.cruciverb.com
    

    Can MHonArc process ezmlm archives?

    From what I read from the ezmlm(5) manpage, the following example command will process all messages of list:

    prompt> mhonarc /list/archive/[0-9]*
    

    Replace "/list/archive/" to what is appropriate for your configuration.

    Basically, each numeric subdirectory in the "archive" directory follows the same format as MH mail directories.

    If you are using a shell that cannot handle "[0-9]*", the following should work:

    prompt> mhonarc `find /list/archive/ -type d -name '[0-9]*' -print`
    

    Note, make sure to add any additional options to mhonarc as needed to get the effects you desire.


    Can MHonArc process qmail's maildir style mail folders?

    For simplicity, let "MAILDIR" represent the pathname to your qmail mail directory.

    To have mhonarc process MAILDIR, you pass "MAILDIR/cur" and/or "MAILDIR/new" as the mail folder arguments. Which subdirectory you choose to use depends on your needs.

    Also, you will need to define the MHPATTERN resource to process all non-dotfiles. Example:

    prompt> mhonarc -mhpattern '^[^\.]' MAILDIR/cur
    

    If all you will ever do is process qmail maildir folders, it may be best to set the M2H_MHPATTERN environment variable so you do not have to respecify each time you invoke mhonarc. Examples:

    csh:
    setenv M2H_MHPATTERN '^[^\.]'
    sh:
    M2H_MHPATTERN='^[^\.]'; export M2H_MHPATTERN

    Can MHonArc process Netscape Messenger folders?

    Yes. Each Netscape Messenger folder has a corresponding mailbox file that stores the raw mail messages for the folder. The location of the mailbox file will be in your mail directory. Under Unix, this is normally $HOME/nsmail. For Windows, this is typically C:\Program Files\Netscape\Users\<username>\Mail.

    For each Netscape folder, there are two files: <folder-name> and <folder-name>.summary (or <folder-name>.snm under Windows). The .summary can be ignored with respect to MHonArc. The other file contains the raw mail messages and can be passed directly to MHonArc for processing. For example, to process all the mail in your Inbox, do something like the following:

    prompt> mhonarc $HOME/nsmail/Inbox
    

    Note, you may need to compress/compact folders in Netscape before running MHonArc. If not, messages you have deleted from a folder may show up in the archive create by MHonArc.


    Can MHonArc process Evolution folders?

    Yes. Each Evolution folder has a corresponding mailbox file that stores the raw mail messages for the folder. The location of the mailbox file will be in your mail directory which is typically $HOME/evolution/local/folder-name. In the directory is a file called mbox which contains the raw messages that can be passed into MHonArc directly.


    Can MHonArc process Compuserve messages?

    Here is a response from a user:

    • Subject: Re: CompuServe --> html
    • From: Steve Pacenka <sp17@cornell.edu>
    • Date: Thu, 06 Mar 1997 09:09:00 -0500
    At 11:38 AM 3/6/97 +0100, Bernard Frit wrote:
    >Hi everybody,
    >
    >A friend of mine has a lot of archives in CompuServe
    >thread and message format. He'd like to convert them
    >in a convenient format (html or whatever) with thread
    >indexing features as MHonArc is doing it for mail
    >archives.
    >
    >At the first glance, I didn't find out how to configure
    >MHonArc to do the job.
    
    The Compuserve "file cabinet" format is too far from the basic SMTP message
    format that MHonArc recognizes.
    
    Your friend can find software on Compuserve to read the file cabinet format
    and emit ascii text that is closer to SMTP message format that MHonArc can
    use.  A search of IBMFF using the keywords "cabinet" and "convert" yielded
    several items including these two:
    
    Forum Name: CSNAVSUPPORT                 Library: Member Uploads  (6)
      Accesses: 839                       Size: 11368
          File: THRDCO.ZIP           Submitted: [72662,70]   26-Aug-94
    
    
    This program converts forum message threads to a plain text file  called
    COLLECT.TXT.  Your favorite word processor can then search  for any message
    on any topic that you have downloaded.  It is  public domain and was
    created because I have so many forum  thread messages which I can't search.
    
    -----
    Forum Name: PCEFORUM                 Library: Telecom/Reseaux  (8)
      Accesses: 32                        Size: 30865
          File: SHWCIM.ZIP           Submitted: [72241,2132]   08-Nov-96
    
    Une fois stockes dans le "Cabinet"  CompuServe, les messages des forums et
    les courriers sont codes dans des fichiers binaires que l'on ne peut pas
    relire directement. Cet utilitaire a pour but de convertir n'importe quel
    fichier de la base WinCIM en fichier ASCII pur. Freeware en anglais.
    
    -- SP
    
    

    What about other mailbox/folder formats?

    The common technique is to convert the foreign format into a format recognized by MHonArc: UUCP mailbox or MH mail folders. The conversion can also rely on the usage of the MSGSEP and MHPATTERN resources to make conversion potentially easier.


    Can MHonArc create non-English archives?

    Yes. With MHonArc's page layout customizations features, you can have MHonArc create pages in any language supported by Web client software. Plus, messages containing non-English text is supported during message conversion via the CHARSETCONVERTERS resource.

    See also:
    Does MHonArc support Unicode?

    How about Japanese?

    Yes. For details about Japanese usage of MHonArc, goto: <http://www.mhonarc.jp/> (documents are in Japanese).


    Can I create bilingual archives?

    Yes. You can actually create archives that have as many indexes as you want in as many languages that you want. Through the OTHERINDEXES resource can define any number of extra indexes to create. For each index, you can redfine the index resources to use whatever text (English or non-English) you desire.

    NOTE:

    There is no support for mulitple variations of message pages in an archive. Therefore, a single language must be chosen for message pages, or you can include redundant information using multiple languages.

    NOTE:

    Actual message data will be in the language used in the message. MHonArc has no built-in language translation.

    See also:
    Does MHonArc support Unicode?

    Does MHonArc support Unicode?

    Yes. Check out the following for more information:


    [Prev][TOC][Manual][Home][Next]


    $Date: 2011/01/01 02:43:26 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/about.html0000644004705000001440000001341012332046112016661 0ustar ehoodusers MHonArc FAQ: About the FAQ
    [Prev][TOC][Manual][Home][Next]


    About the FAQ


    Summary

    This documents contains answers to some of the frequently asked question on MHonArc. MHonArc is a Perl program for converting e-mail messages as specified in RFC 822 and MIME to HTML. MHonArc has the ability to maintain an archive of converted messages, or it can be used as a basic e-mail->HTML converter.

    The FAQ is intended to compliment the documentation provided in the MHonArc distribution. The documentation is still the key source to answers to any question you may have. While reading this FAQ, it may be beneficial to have the documentation easily accessible.


    Terms and Definitions

    HTML Hypertext Markup Language.
    MH RAND MH Message Handling System, an MUA.
    MIME Multipurpose Internet Mail Extensions.
    MTAMail transfer agent: Software for delivering mail.
    MUAMail user agent: Software responsible for reading and composing mail.
    Perl Practical Extraction and Report Language (or Pathologically Eclectic Rubbish Lister).
    sendmail The MTA used by most Unix systems.
    RFC Request for Comments: Notes about networking protocols, procedures, programs, and concepts of the Internet.
    SGMLStandard Generalized Markup Language.
    UUCPUNIX-to-UNIX Communications Package.
    WebWorld Wide Web.
    WWWWorld Wide Web.

    Version

    Since the FAQ has multiple pages, the date that each page is updated is at the bottom of each page.


    Location

    <http://www.mhonarc.org/MHonArc/doc/faq/faq.html>

    A copy of the FAQ is also provided within the MHonArc distribution.


    Author

    Earl Hood, mhonarc@mhonarc.org


    [Prev][TOC][Manual][Home][Next]


    $Date: 2005/05/25 19:51:00 $
    MHonArc
    Copyright © 1997-2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/monsmall_t.png0000644004705000001440000001521507451276551017563 0ustar ehoodusersPNG  IHDRd{rPLTE$$#"$'&&(+' . , 2 2,+4;6;?<< 7+4<8?$ :$,$,&%4*';4,<5-446("CDGAC H$F!E%L%I(V([4E#K+F)U6N5m2h9v<I+"L5)X:+Q=3iBuD|D}JuMpK[D-]D7IK:fJ(dH8qY3yh$|d;pc?_A(9H0;A8GK;NV2JU+Md.Tm2Wm6[m:Zh,[y4]t2OaA<<FJGKQTZX[QVYXY_UMdabklssqilq|w~zso+acfkhmwTxgwmΌȅҍ،˛™ڍڔޗ֒ǟΤҠ׬ܳڵWShxgxs`'_,f,c7l-m)h2n4s/r+z%})~%~2{Ir'*,*%'(#%Ƽµșѫݬo`tRNS@fbKGD︰^IDATx[CO03LN$@ {X%ϔԅM(Zx (PPDA*HHUWQH\Q{V{ ,ݍ/"*rMԯ~Z1}wU#CkV Sy;|;082;c9ݙިpG +L!spxޡ)Xj#m S+G 06b(CkjGGMl(:Hvv [\̔u76|QE؈߃G]q$[bLZ9:Fm9FnFmrtMۿ%FfB2? 'r:l(iwAQ N@cEFGߡQW6|% hdwc'}"=!-Pm28M\Jr! .Ze}Sb`ݎ=ŧQѷ\> blH Bpn6XQzgKIϟ,H<{D7rIN7)M=n!,|' _1I r󀭈Xam+v [`?32v%^%ݗ_d3(z6C1tq;{i$Gl]γ#Le.{㱧qnVlç:}S wLl 74&d%G]|q6W}Er}E%8+|oSd(?yo]痐ű Y+V-;fFz+zb_<[nbaXIw]iy D)N6r-N#yLOO֔` %% \%a<<}9I뿢f$ Ev'$nK\X* Iv <x߇-f|p>1>>qBS"@UU_W__ߴcظڸK~<;eGZ[{5:[2QU֤gO. $/.WSaIУCP,h#Vd<^}aJbtHKkWɂ ݗ//=}Z)E03L oaBDo=]Ct?%6=7ru܎W pB qXFx! O~3!)@]Hd Wrq\gAt3TMv7Opw؀HX9Eݻ+dg%6I\=xzFbU;eTJX)qr5H <_]|VVk痀Q! mHK/Ε;Fo(^`IX -9Zbe|WSy0.+֔X)8;RWt|+TD[v%JwEv9/@ea]$8ץO)/J^q!0LӫpZKA(y/(/+w+ sk7\- ,#yFiCL^?߇}B-L߬jo(|-J c%/Wmg~q&ddd+_jCs':uo9?_`[Bg/\.AJ/Q285*.\"{$_}P&HVlocߞ)p"ssqDi}v9pMiBfnxmd]*d^b@!i`܂T()pWI_&g+!!!)_W2=I.XcϺNNWt(|%=3 t?) 0Wfz—I_XE JAZV A4E3'ݕG}*{ۅ@ z]s߻IHڥg3# D'#9$4GUYWtXm!)IYMI#4Rjh{7UrBCa bPN:F:4`_p\ &*V&Yd b>aiimd* p7W5侨H<Ϝ#NOPS^@6kb#ր % s@%519u$Ǔc.J+e_b\HX>2xƪvjY #{Bl5r*SI!.޸Rd}]DicK6@us 㳸(Pi4e]e𵡁%K L6J}^\j"pXr`JUdysXy\u.&U@v}+Nܻg{Hi (Ν'Z}lJ1鎺'HWv߃3 PT>EmSC$F@;c;bt0GcUViEc{K9lhl6E@)oio(͢iyLG,1(?`kZNaaNniY @mj t&*'4w64rIGQ'!4P>e'5ޠQA }lƁP5wmhon>Q",bc݈Wż0:Zʳwc۝]1͖Fo Y"CciQ嗩50mv@`6M-=0 1攤.>r*ߢ}sly hѼ:jH;4wd@mַl HNۧ^}]x]9ŀ%.%tAl%Icf *bZ3Uz.y$@a˚BPǹs- f OH@5-lh9wn}Y|>3{1c m7DPPF"@'g4#y>t NI) [ r kF-u;^35ؕLp'BȍnEۤ~j1!;ko%M> h$76[35?{~8YB$Š_/Y-`=,Z;SlU}]A(xfko) v6j<646wx(ޕ71X9D4kb՛m4G%JW&), 'AR䞄Et߻(aCb:rQ CeɣV(SaaqvTLj|"jz~xCE A-bB]\X3v6B3q~瑤23(?]?L;3ܦ$$ }salsץ!)gHLrORSS]]fwOЦ"xˆW~P3q+J+,ݦ9ƶ-2SVuЏ9pw'"7fKm1J!"C:;LQ14 8jͱ}軿q|cA12f7 x h}wڽtP;Shl);AU6V'x1^Cd'Xڏ_O(8-YVZhjK4͡iV-G}pg[Fߖ (?tpߊ֪e-!6Kejum(@%8Bt[AHj?>F}`\QH{" ,nE 1걯ݦs&섦!cLDY;smUzC~n #gZ?1W!_SPQ Sۓr55 bއs6uYM=7i;gUTN+@XW霹 N 4S4M ͉f-jeZ[+ tsؙ:Yg!l\ V1vAiy^~ ^q7d_+Wk4Pqv0U<8͚Ei氉jfS50؜O]j6X`m.Szj 3v$sdhQHC&OND ZL9MMm'MZ[gm i94)UP9>_({F:Tw^LA2Dޡ-fP4'vAs9JKY쪍\\FIA**p~79}K+Ȩ*Q)! xSd:)Pj{-WĶw`=hcZHO˽\|cf熥G#\ 9srp|g) ͛~2:1g@0;Qd倣ug37RzpluEoXÅZ̛]t7?Qz>Ffbʻ;k)GMOyO,VT Y]]*g_m,u[h-jk赵/lGi<fр!$yڲڠjU#Ce1˓:Ba#ҝ̇r" g;j}$TKӜLwfcJ]ǔF@4gw1[JԐth)c趝047` )4TMs,_s7:0bs*\4^$hu}u^Xы(wfci ^f/gL QFX,KX`ifZ7ll?= SDҊӜe 4ؖe.QUj#DGJȹ|¤ 5<)S]0argBZvzbs\*k+|t#z l4瞄ıރh(^ SUI;JgʨURx"K&F2p^@b oN={75.N 1mac"Sʅσ՘K7jlp3Fʕѝ89c{RVds"eTndc|y\۩W:dKblXLK,}/[GéiixU^YBQofI J7&\ӾKp3!g&Nqg !|:4A EY?j0?ylsV"$*fKh.{BňEӪm\q͋+$>GkNC"B-*=>A;"06겐'xkIXs+}GsPLK&M#7WZ 1& n&V+oz0׆f\5/5\36|_gPDcmK2ҿ=oP?M^;&IENDB`MHonArc-2014-05-05-snap/doc/faq/general.html0000644004705000001440000003172212332046112017172 0ustar ehoodusers MHonArc FAQ: General Information
    [Prev][TOC][Manual][Home][Next]


    General


    What is MHonArc?

    MHonArc is a Perl program for converting mail or news messages into HTML archives. It can also be used to convert individual messages into HTML documents. Other capabilities include robust MIME support and powerful user customization features.


    What's the latest version of MhonArc?

    Latest version information is available at <http://www.mhonarc.org/>.


    Where can I get MHonArc?

    The latest information on MHonArc, and its availability, may be obtained at <http://www.mhonarc.org/>.

    MHonArc requires Perl to run. If you do not have Perl, it can be obtained from <http://www.perl.com/>.


    What restrictions are there on MHonArc usage?

    MHonArc is free software. MHonArc is distributed under the GNU General Public License (GPL). A copy of the license is included in the distribution. Please read it for more information, or go to <http://www.gnu.org/>. Note, that the word "free" means something different than "no cost". See the GPL and <http://www.gnu.org/> for more information.

    Note, donations are welcome. And will help insure the continued development of MHonArc.

    If you do not feel comfortable with the current licensing of MHonArc, GPL, then contact the developer of MHonArc if you want to make alternate licensing arrangements.

    NOTE:

    MHonArc is NOT in the public domain. Any mention of MHonArc in the public domain is WRONG. Applicable copyrights still apply.


    Where can I get help on MHonArc?

    The first place to try is the documentation that comes with MHonArc. The documentation is quite extensive, and may provide answers to most of your questions.

    Second, you can read this FAQ.

    Third, a mailing list, mhonarc-users@mhonarc.org, is available to provide a discussion forum on the usage and development of MHonArc. Appropriate topics for the list include: usage questions, bug reports, behavioral enhancements, documentation bugs, and general help.

    Information about the list, including how to subscribe and the locations of web-accessible archives, is available at <http://www.mhonarc.org/archive/info/mhonarc-users.html>


    How does MHonArc compare to other email archivers, like Hypermail?

    Hypermail is probably the oldest major free mail archiver still in use, but over the years, others have popped up. Which is best depends on your needs. The following provides a summary of some of the free archiving programs available:

    • MHonArc: Distributed under the GPL, MHonArc is a Perl program for converting mail or news messages into HTML archives. It can also be used to convert individual messages into HTML documents. Other capabilities include robust MIME support and powerful user customization features.

    • mharc: Part of the MHonArc project, it is a collection of Perl scripts for generating and managing web-based searchable mail archives. mharc is designed to make it easy to setup and configure large scale mail archives.

    • Hypermail: Distributed under the GPL. Originally written Lisp, it is now a C program. There was time when it was not being maintained, but it is now actively maintained and updated.

    • Pipermail: Written Python, it is now only being maintained inside the Mailman mailing list manager.

    • Eyebrowse: A Java Servlet/Velocity-based browser for Unix mbox format mail archives. Quoting from the project homepage: "Eyebrowse differs from other popular archive browsers in that it does not require that mailing lists be exploded into individual HTML files, and that the HTML rendering is done at serving time, rather than at the time the message is received." Eyebrowse is distributed under the Apache License.


    Why I should use MHonArc over some of the Internet-based mailing list archive services?

    The exact "why" depends on your needs. Here are some possible reasons why you may want to use MHonArc over Internet-based mailing list archive services:

    • MHonArc is free software. Internet services may charge a fee and/or include commercial advertisements in your list archives.
    • With MHonArc, you have complete control on how your archive looks and feel, and operates. This can be important if you want your archives to follow a specific style, and/or you need the option to be able to change how your archives function over time.
    • You have mailing lists that are behind a firewall. Therefore, an Internet based service is not an option.
    • You just need something for personal use.

    Note, there is a nice Internet-based mailing list archive service that is available at no charge, and it uses MHonArc. See <http://www.mail-archive.com/> for more information.


    Are their "real-world" examples of MHonArc usage?

    Take your pick:


    Why are list archives about Perl-related topics not maintained with a Perl-based program, like MHonArc?

    The answer is something I would like to know myself.


    Is MHonArc Y2K (Year 2000) compliant?

    There is no known Y2K issues with the current release of MHonArc. Message dates are translated to Unix time(2) format which are currently valid until 2038. If MHonArc is still in use by then, I would be amazed.

    There has been no official Y2K certification of MHonArc. Since MHonArc is free software, I see noone paying the money for certification. Hence, do not go looking for someone to sue if something breaks.

    You may want to check <http://language.perl.com/news/y2k.html> about Y2K from a Perl point-of-view.


    [Prev][TOC][Manual][Home][Next]


    $Date: 2011/01/01 02:43:26 $
    MHonArc
    Copyright © 1997-2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/faq.html0000644004705000001440000003016012332046112016317 0ustar ehoodusers MHonArc Frequently Asked Questions

    MHonArc Frequently Asked Questions

    This documents contains answers to some of the frequently asked question on MHonArc. MHonArc is a Perl program for converting mail messages as specified in RFC 822 and MIME to HTML. MHonArc has the ability to maintain an archive of converted messages, or it can be used as a basic mail->HTML converter.


    Table of Contents


    $Date: 2006/05/26 14:11:57 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/indexpgs.html0000644004705000001440000002651212332046112017377 0ustar ehoodusers MHonArc FAQ: Index Pages
    [Prev][TOC][Manual][Home][Next]


    Index Pages


    What are all the different index types?

    MHonArc catagorizes indexes into to types: main and thread. Main covers indexes listing messages by the following criteria:

    • Author
    • Date
    • Subject
    • Message number

    When the documentation refers to main index, it refers to the index listing messages by author, date, or subject. Therefore, all resources. and resource variables, that refer to the main index apply to either an author, date, or subject index. The type of main index is controled by the SORT, SUBSORT, and AUTHSORT, resources.

    By default, MHonArc creates a date index and a thread index. Author index support is available only in v2.0 and later.


    Can I have additional indexes beyond the default main and thread index?

    Yes. In version 1.2 (or later), a resource was added called OTHERINDEXES. OTHERINDEXES allows you to define an arbitrary number of indexes you desire. The additional indexes may be in any format you desire. Refer to the documentation for the usage of OTHERINDEXES (also see "How does the OTHERINDEXES resource work?").

    NOTE:

    MHonArc will NOT automatically create links to any indexes created via the OTHERINDEXES resource. You will need to modify the relevant index and messages resources to contain the additional links. See the LISTBEGIN and THEAD resources.


    Can I have multi-page indexes?

    Yes, in v2.0 or later. Setting the MULTIPG and IDXSIZE will cause indexes to to be listed across multiple pages with IDXSIZE determine the number of messages listed per page.


    Can I sort messages by author?

    Yes, with v2.0 and later.


    How does the OTHERINDEXES resource work?

    I am going to describe a basic example on how OTHERINDEXES can be used.

    First, lets have the top resource file (call it "top.mrc") that defines the formatting of the default 2 indexes (a main and a thread). Example:

    *** snip "top.mrc" ***
    <MAIN>
    <THREAD>
    <SORT>
    <NOTREVERSE>
    <NOREVERSE>
    *** snip "top.mrc" ***
    

    I may have a bunch of layout stuff, but that is not important for this discussion.

    The above tells MHonArc to create a date and thread index. I am explicit with the settings to avoid potential unknown settings from a default resource file (ie. It is always good to be explicit, especially when we get to otherindexes).

    Now, I would like to also create subject and author indexes. In "top.mrc" I would add the following:

    *** snip "top.mrc" ***
    <OTHERINDEXES>
    subject.mrc
    author.mrc
    </OTHERINDEXES>
    *** snip "top.mrc" ***
    

    The filenames listed are arbitrary, but it is useful if they imply their purpose. Since absolute pathnames were not used, the files will be looked for in the current working directory, or in the archive directory. Since the current working directory may not be appropriate, it is usually best to put the files in the archive directory.

    The following now shows the important settings for each file:

    *** snip "subject.mrc" ***
    <MAIN>
    <NOTHREAD>
    <SUBSORT>
    <IDXFNAME>
    subject.html
    </IDXFNAME>
    <IDXPREFIX>
    subject
    </IDXPREFIX>
    <NOREVERSE>
    *** snip "subject.mrc" ***
    
    *** snip "author.mrc" ***
    <MAIN>
    <NOTHREAD>
    <AUTHSORT>
    <IDXFNAME>
    author.html
    </IDXFNAME>
    <IDXPREFIX>
    author
    </IDXPREFIX>
    <NOREVERSE>
    *** snip "author.mrc" ***
    

    Again, notice how I am being explicit. MHonArc does not reset resources when reading the otherindexes resource files. with one exception: THREAD is shut-off. To avoid overriding the default index files, I must explicitly redefine IDXFNAME (and IDXPREFIX if MULTIPG is active). If I want different layouts for my other indexes, I must explicitly define those, or they will use what was ever set in top.mrc (or the applicable default resource setting(s) when no explicit setting provided).

    NOTE:

    Otherindexes resource file only defines a single index type: main or thread. If you specify the THREAD, a thread index will be created and all MAIN related resources are ignored.

    WARNING:

    Do NOT define OTHERINDEXES in your otherindexes resource files. Also, make sure there is no self references. If you do not heed these warnings, you will cause an infinite loop, and/or unpredictable results.

    Make sure OTHERINDEXES resource files are present for all updates to an archive. Mhonarc only stores settings for the default indexes, so the resource files are needed each time for other indexes.

    What is left out of this example is the redefinition of navigational based resources. Since I am adding more indexes, I would have to redefine resources like TOPLINKS, BOTLINKS, LISTBEGIN, THEAD, etc, so there will be links to the other indexes.


    Can I include links to message attachments on index pages?

    Not directly, but a (dirty) work-around maybe possible. You can modify the mhexternal.pl filter to write to a file (name based off the message number) with some HTML markup that creates the HTML attachment list (mhexternal.pl knows about content-types and other stuff, so it can make a useful list). Note, since mhexternal.pl works on a single part at a time, it needs to create the list via append operations to the file. The implementation is similiar to how mhexternal.pl supports placing attachments into a subdirectory. Make sure that mhexternal.pl returns the file as part of the return value so it is automatically deleted if the message is removed from the archive.

    Then, you define the LITEMPLATE resource to use a server-side include to include the file as part of the message listing. I did say it was dirty, but it should work.


    [Prev][TOC][Manual][Home][Next]


    $Date: 2005/05/25 19:51:01 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/threads.html0000644004705000001440000001013712332046112017204 0ustar ehoodusers MHonArc FAQ: Threading
    [Prev][TOC][Manual][Home][Next]


    Threading


    How does threading work?

    MHonArc utilizes the References and In-Reply-To fields of mail messages for generating threads. It is up to the mail user agents (MUAs) to define these fields. The References field is normally utilized by news software, while In-Reply-To is normally utilized be e-mail software.

    In v2.0 and later, MHonArc will also check message subjects for threads. Hence, if the MUA fails to include the reference message ID, MHonArc will still group messages of the same subject together (utilizing the message date for thread order).


    Why isn't threading working for me?

    In versions prior to v2.0, If the mail you archive does not contain References and In-Reply-To fields, MHonArc will not detect a thread, even though there are messages that are follow-ups to existing messages.


    How can I get my MUA to define the References or In-Reply-To field?

    The answer varies depending on your MUA. You'll need to look at the documentation of your MUA to find the answer.

    For MH users, the following in your replcomps file will work:

    %<{date}In-reply-to: Your message of "\
    %<(nodate{date})%{date}%|%(pretty{date})%>."%<{message-id}
                 %{message-id}%>\n%>\
    
    

    Or, you can use the following if you prefer the References field format:

    %<{message-id}References: \
    %<{references}%(void{references})%(trim)%(putstr) %>
                %(void{message-id})%(trim)%(putstr)\n%>\
    
    

    Author welcomes feedback from users on how to configure other MUAs.


    [Prev][TOC][Manual][Home][Next]


    $Date: 2005/05/25 19:51:01 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/archives.html0000644004705000001440000006567212332046112017374 0ustar ehoodusers MHonArc FAQ: Archives
    [Prev][TOC][Manual][Home][Next]


    Archives


    Why does a message get split into mulitple messages with no headers?

    If you are processing UUCP mailbox files, messages are separated by a line starting with "From " (ie. The word "From" followed by a space). Some mail software will prefix lines in message bodies with a `>' to avoid MUA's from incorrectly treating the line as a message separator. However, some mail software doesn't.

    To avoid incorrect separator detection, many MUAs perform a more stricter detection of separators beyond "From ". MHonArc, by default, will treat lines starting with "From " as a message separator, which can lead to incorrect message termination if the From line has not been escaped with a `>'.

    To fix the problem, use the MSGSEP resource to instruct MHonArc to use a stricter test detecting a message separator. The following MSGSEP resource setting is known to work well:

    <MsgSep>
    ^From \S+\s+\S+\s+\S+\s+\d+\s+\d+:\d+:\d+\s+\d+
    </MsgSep>
    

    In case you have message separates with quoted local parts in the address part of the separator, you can use the following:

    <MsgSep>
    ^From\s+(?:"[^"]+"@\S+|\S+)\s+\S+\s+\S+\s+\d+\s+\d+:\d+:\d+\s+\d+
    </MsgSep>
    

    Make sure to test things out before using in production environments.

    If this fails, you can try the CONLEN resource available in v2.0 and later. The CONLEN resource, when set, tells MHonArc to utilize the Content-Length fields in the message head. If your MTA defines this field accurately, then you can utilize this feature. Sun Solaris' delivery agent will define the Content-Length field for messages delivered to local users.

    If you use Procmail to filter your mail, you can try the following Procmail recipe (contributed by Christopher Lindsey):

    However, one can add a Content-Length: header with everyone's favorite tool, procmail. :) Here's a recipe borrowed from David Tamkin about 9 moons ago:

      :0fhw # B won't help; size conditions ignore H and B flags on the :0 line
      * ! ^Content-Length:.*[0-9]
      * 1^1 B ?? >1
      | formail -a "Content-Length:  $="
    

    So if you want to count on Content-Length, the message could be piped into procmail with a specific procmailrc file which would do this counting and then call MHonArc.

    If sendmail is your system's MTA and you use Procmail as your local delivery agent, you can configure things to have Content-Length defined for all locally delivered mail. The following technique is contributed by Jason L Tibbitts III:

    I use Procmail as my local delivery agent. I have the following extremely disgusting settings in my .mc (M4 config) file to add in a Content-Length: header, but I'm not sure if I would recommend that anyone actually think of using this:

    define(`LOCAL_MAILER_FLAGS',`SPfhn9Z')
    define(`LOCAL_MAILER_ARGS',`procmail -a $h -d $u')
    
    LOCAL_CONFIG
    #
    # Add fake Content-Length Header for local mailer
    # This is corrected by Procmail
    # Note that the Z flag is used here; if Z is ever defined, this
    #  will break something
    H?Z?Content-Length: 0000000000
    

    If possible, try to avoid relying on the use of Content-Length since it is hard to guarantee that it is set properly. When CONLEN is specified, MHonArc will read at least the number of bytes specified by Content-Length before checking for the message separator, as defined by the MSGSEP resource. Therefore, the value of Content-Length can be less than the actual message size, and message extraction will work as expected. However, if Content-Length for a message has a value that is larger than the actual size, MHonArc may include the content of the next message as part of the current message.


    Can I move a message from one archive to another?

    No. In order to achieve the same effect, you must add the original, unprocessed, message to the destination archive, then remove the appropriate HTML version of the message from the source archive.


    Can I reconstruct a database from the HTML messages?

    Yes. v2.3 of MHonArc introduced a utility program called mha-dbrecover. It gets installed with the other MHonArc files during the installation process. See the documentation for usage information.


    Is it safe to add messages to an archive as they are received?

    Yes. MHonArc performs archive locking to protect from multiple MHonArc process attempting to write to an archive at the same time. This locking allows MHonArc to safely be used to add messages as they are received.

    NOTE:

    As an archive increases in size, performing updates as a message is received takes more processing time. Therefore, for large archives, you may need to do updates through a periodic batch process (like via cron(8)) to avoid time-out problems.


    So it is safe. How do I do it?

    Many users use Procmail <http://www.procmail.org/> to call MHonArc to archive messages. Procmail provides the ability to preprocess mail as it arrives to do selective processing and automated tasks with your mail.

    For illustrative purposes, the following simple example shows a possible way of archiving messages as it arrives w/o using a tool like Procmail. This example assumes you are on a Unix-based system using sendmail as the mail transfer agent. Please refer to documentation about sendmail if you are not familiar with it (sendmail, 2ed, from O'Reilly is an excellent source).

    The approach shown here uses a .forward file in the home directory of the account you want mailed archived. For this example, let's assume it is my account. Here is how to set up the .forward file to invoke MHonArc on incoming mail:

    \ehood, "|/home/ehood/bin/webnewmail #ehood"
    
    NOTE:

    The "\ehood" tells sendmail to still deposit the incoming message to my mail spool file. The "#ehood" Bourne shell comment is needed to insure the command is unique from another user. Otherwise, sendmail may not invoke the program for you or the other user.

    webnewmail is a Perl program that calls MHonArc with the appropriate arguments. A wrapper program is used instead of calling MHonArc directly to keep the .forward file simple, but you can call MHonArc directly if you want. Here is the code to the webnewmail program:

    #!/usr/local/bin/perl
    # Edit above path to point to where perl is on your system.
    
    ##	Specify a package to protect names from MHonArc.
    
    package WebNewMail;
    
    ##	Edit to point to installed mhonarc.
    
    $MHonArc = "/home/ehood/bin/mhonarc";
    
    ##	Define ARGV (ARGV is same across all packages).
    ##	Edit options as required/desired.
    
    @ARGV = ("-add",
    	 "-quiet",
    	 "-outdir", "/home/ehood/public_html/newmail");
    
    ##	Just require mhonarc, this prevents the overhead of a
    ##	fork/exec.
    
    require $MHonArc;
    
    

    The webnewmail program has to have the executable bit set. This is achieved by using "chmod a+x webnewmail".

    NOTE:

    For better scalability and resource usage, the author recommends calling MHonArc from a facility like cron, which is provided on Unix-based operating systems. For those unfamiliar cron, it is a daemon that allows the execution of commands on a scheduled basis.


    How can I do it with Majordomo lists?

    Here is a template for archiving messages as they arrive for a Majordomo list to include in sendmail's aliases file:

    xxxx:                "|/usr/lib/majordomo/wrapper resend -l xxxx xxxx-outgoing"
    xxxx-outgoing:       :include:/var/lib/majordomo/lists/xxxx, xxxx-mhonarc
    xxxx-request:        list-admin-address
    owner-xxxx:          list-admin-address
    xxxx-owner:          list-admin-address
    
    xxxx-mhonarc:        "|/usr/lib/majordomo/wrapper mhonarc -add -quiet -outdir /home/httpd/html/yyyyyyy -rcfile rcs.mrc -stderr /var/log/mhonarc" 
    

    Replace text that is rendered like this with what is appropriate for your configuration.

    In order to run MHonArc with Majordomo's wrapper, the program has to be in the same directory where the Majordomo programs are located. An easy way to insure this is to create a symbolic link to in Majordomo's program directory to where MHonArc is installed. For example:

    prompt> ln -s /usr/bin/mhonarc /usr/lib/majordomo/mhonarc
    

    Make sure /usr/bin/mhonarc is readable and executable by the majordomo user. Something like the following can be done to insure this:

    prompt> chmod 755 /usr/bin/mhonarc
    

    If you redirect stderr to a logfile, the logfile must be owned by the majordomo user and be writable by the majordomo user. The directory for that logfile must exist.

    The MHonArc-archive directory must be owned by the majordomo user and must have the minimum access permission 755. Group ownership does not matter.


    Can I get MHonArc to filter messages to different archives?

    No. This is outside of the MHonArc's scope. You can grow your own filter, using the method described in the previous question, to scan the message header an invoke MHonArc with the proper arguments. Or. you can use a tool like Procmail <http://www.procmail.org/>.

    NOTE:

    You may want to check out the following: mharc at <http://www.mhonarc.org/release/mharc/>: Mharc is a web-based mail archiving system for multiple mailing lists using Procmail, MHonArc, and Namazu.

    Here are a some messages from users about using Procmail:

    ... some text deleted ...
    
    Here is what I use in .procmailrc to archive the mhonarc list:
    
    NEWDATE="`/usr/bin/date +%Y-%m`"
    MHONARC_MBOX="/local/mail/lists/mhonarc/$NEWDATE.mbox"
    :0: $MHONARC_MBOX$LOCKEXT
    * ^Sender:.*owner-mhonarc@
    {
            :0 c
            $MHONARC_MBOX
    
            :0 c
            | /local/mail/mhonarc-1.2.2/mailarchive -add mhonarc "$NEWDATE"
    }
    
    Mailarchive is nothing more than a wrapper around mhonarc with my long.
    list of options.
    
    Achim
    P.S. Procmail itself comes with an example manual page. It's worth
         looking into it.
    
    
    You can actually dispense with the wrapper if you use environment
    variables to pass options to MHonArc, but I'm sure Achim has a good
    reason for doing it his way.  Just for the purposes of comparion,
    here's how I do it:
    
    eeeweb% cat .procmailrc
    #Set on when debugging
    VERBOSE=off
    #Replace `mail' with your mail directory (Pine uses mail, Elm uses Mail)
    MAILDIR=$HOME/Mail
    #Directory for storing procmail log and rc files
    PMDIR=$HOME/.procmail
    #Path and options for mhonarc
    MHONARC='/dcs/packages/infosys/bin/mhonarc -add -quiet -umask 022 -idxfname inde
    x.html'
    :0
    * ^Originator:.*@classes.uci.edu
    {
      MHHOME=$HOME/classarc
      LOGFILE=$PMDIR/classlists.log
      INCLUDERC=$PMDIR/rc.classlists
    }
    :0 E
    {
      MHHOME=$HOME/mail-arc
      LOGFILE=$PMDIR/otherlists.log
      INCLUDERC=$PMDIR/rc.otherlists
    }
    
    and then in the file .procmail/rc.classlists or rc.otherlists (depending
    on the Originator: of the message), lots of the following:
    
    # Procmail Entry for uci-www
    :0 E
    * ^TOuci-www
    {
      :0 c
      uci-www/.
    
      :0
      |$MHONARC -rcfile $MHHOME/uci-www/0-rcfile.html -outdir $MHHOME/uci-www
    }
    
    Eric D. Friedman
    friedman@uci.edu
    
    ... some text deleted ...
    
    I use procmail to drive mhonarc archives from Majordomo.  I set up a
    single pseudouser and drive several archives from the one pseudouser. 
    
    Here's a sample .forward file:
    
    "|/usr/ucb/rsh cappuccino \"set IFS=' '; exec
    /usr/local/procmail/bin/procmail #widget\""
    
    Another example is:
    
    "|/bin/csh -c \"set IFS=' '; exec /usr/local/procmail/bin/procmail
    #widget\""
    
    Two reasons to use the "rsh cappuccino":
    1. doesn't require the user to be able to login to server, although
       the username must still be valid
    2. gets the processing load off the mail server
    
    Here's an example .procmail recipe:
    
    LOGFILE=$HOME/procmail_errors
    LOGABSTRACT=all
    LOCKEXT=.lock
    VERBOSE=on
    UMASK=003
    
    # widget: list short description
    :0 H
    * ^List-Name: widget
    {
      # The rotate call (under construction) does archive rotation
      # leave commented!
      #:0c i
      #| /home/web-arch/bin/rotate /usr/local/web/webarchive/widget
    
      # Put the mail in the mailbox, which is used by archiver to re-generate
      # the html indexes
      :0 cA
      /usr/local/web/webarchive/widget/current/mbox
    
      # The mhonarc call examines mbox, turns the mail messages into .html
      # documents, and compiles the indexes.
      # -reverse -treverse\
      :0 ia
      | /usr/local/mhonarc/bin/mhonarc \
        -idxfname index.shtml \
        -tidxfname threads.shtml \
        -rcfile widget.rc\
        -outdir /usr/local/web/webarchive/widget/current \
        /usr/local/web/webarchive/widget/current/mbox
    
    }
    
    I have a directory per archive, and put the current period in directory
    "current".  Then I have an index page per archive that indexes the
    periods, plus gives information about the list and how to
    subscribe/unsubscribe.  The widget.rc file resides in the pseudouser's
    home directory.
    
    Note the 
    * ^List-Name: widget
    I put the following in the majordomo list's config file:
    
    message_headers   <<  END
    List-Name: widget
    END
    
    This adds the "List-Name" header to messages, which is what procmail
    filters for.
    
    Hope this helps
    
    Paul McKinley
    Unix SysAdmin Contractor
    

    Does MHonArc support the "no archive" flag in messages?

    Version 2.4, or later, does via the CHECKNOARCHIVE resource.

    If using an earlier version, or if you are already doing some preprocessing, you can use a pre-processor like Procmail to do the filtering. Here is a message sent to the MHonArc mailing list:

    • Subject: Re: No archive
    • From: Christopher Lindsey <lindsey@ncsa.uiuc.edu>
    • Date: Thu, 1 Oct 1998 11:33:07 -0500 (CDT)
    > Subscribers who don't want their messages to be archived
    > could add a "no archive" flag within their mail.
    
    The most common way to do this is by checking for the existence
    of an 'X-no-archive: yes' or 'Restrict: no-external-archive' header.
    
    > As I'm invoking MHonArc through a procmail recipe I guess
    > it's possible to do this within the recipe.
    
    Very easy:
    
       # If people don't want to be archived, then remove their
       # message
       :0
       * ^(X-no-archive: yes|Restrict: no-external-archive)
       /dev/null
    
    Chris
    

    Is it safe to specify -add when no archive exists?

    Yes. If MHonArc sees no archive exists when perform an add, it will automatically create the archive.

    WARNING:

    If using MHonArc versions 2.4, or earlier, make sure the file maillist.html (or the value of the IDXFNAME resource) does not exist if no archive exists and -add has been specified. Otherwise, unpredictable output of the maillist.html file may result if maillist.html is not in the proper format.


    Why are there "jumps" in message numbers?

    Big gaps in the message number sequence may occur if you defined the MAXSIZE resource and you have MHonArc rescanning a mail folder for adding new messages. The problem occurs when MHonArc reads in messages that will automatically get deleted due to MAXSIZE. Ie. Messages subject to automatic deletion are the oldest ones. If the input contains old messages that will get deleted at the end of processing, the old messages will still use up message numbers since messages to be deleted are not determined until all input is read. Since MHonArc does not keep information about deleted messages, if the messages are fed into MHonArc again, the "jumping" will occur again (and the jump will get larger for each additional update).

    To avoid the problem, try to pass only new, never processed, messages to MHonArc instead of having MHonArc rescanning the same mail folder for new messages. Another approach is to set either the EXPIREAGE or EXPIREDATE resources (available in v2.0 beta 2, or later). These work as an alternative to MAXSIZE and will help in preventing message number jumping since expiration of a message is checked when it is initially read (bypassing the assignment of a message number).


    Why do some messages get re-added each time MHonArc processes a mail folder?

    This condition may occur when you have MHonArc examine the same folder periodically to add any new message. If there are messages in the folder without message-ids, then those messages will be re-added each time MHonArc runs.

    Why? Well, MHonArc uses message-ids for determining if a message has been archived, or not. Therefore, if a message-id is missing for a message, then MHonArc believes it is new.

    In general, mail has message-ids. They get assigned by MTAs. However, if messages are generated by a CGI program, or other non-mail specific software, then the program in question should create a message-id. Else, you will need to move already-processed messages into a different area so MHonArc does not read them again.

    NOTE:

    In MHonArc v2.4 and later, and if you have the Digest::MD5 module installed, MHonArc will compute the MD5 digest of message headers without message-ids. This allows MHonArc to skip the message in subsequent add operations.

    A related problem is messages showing up again in the archive after you deleted them with RMM. MHonArc does not keep track of delete message-ids. Therefore, if want to make sure that a message will not appear in the archive after explicitly deleted via RMM, make sure to remove the message from input source.


    How do I remove messages from an archive?

    Automatic removal can be done via the EXPIREAGE or EXPIREDATE resources (available in v2.0 beta 2, or later) or the MAXSIZE resource.

    Explicit message removal can be done with the RMM resource. Please read the RMM resource page for more information and examples.


    Can I convert an archive back to mailbox format?

    Anthony W developed a Perl program called mhn2mbox for converting archives back into mailbox format. A copy of the script is included in the contrib directory of the MHonArc distribution.


    [Prev][TOC][Manual][Home][Next]


    $Date: 2005/06/07 19:17:25 $
    MHonArc
    Copyright © 1997-2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/faq/security.html0000644004705000001440000003050712332046112017424 0ustar ehoodusers MHonArc FAQ: Security
    [Prev][TOC][Manual][Home][Next]


    Security


    Who do I contact if I find a vulnerability with MHonArc?

    You can do one of the following:

    Please indicate if it is okay to mention your name in any resulting advisories or patches that may result from your report. If you do not make any indications, all attempts will be made to keep your identity confidential.


    Can I obscure email addresses?

    See the SPAMMODE resource.


    How can I prevent web access to .mhonarc.db files?

    MHonArc database files may contain information that you do not want web users to directly access. The best example is when your archive is customized to obscure email addresses. However, in the MHonArc database file, the original, unobscured, addresses exist.

    There are multiple solutions to preventing access to database files:

    • In v2.6, and later, the DBFILEPERMS resource exists to control the file permissions of the database file. By default, the resource is set to a value that denies world read access. If the archive files are owned by a different user ID than the web server process (which is normally the case), then access to database files will be denied.

      NOTE:

      DBFILEPERMS is applicable to Unix-based systems. Therefore, if using a different operating system, you may have to use one of the other solutions to deny access.

    • Generate the archive in a non-web accessible location, and then mirror files into a web-accesible locations, excluding the database file. The drawback to this approach is it adds extra administrative and processing overhead.

    • Generally, web servers provide the ability deny access to files. Refer to your web server's documentation for the specifies. If you are using the Apache HTTP server, the following configuration directive can be used:

      <Files .mhonarc.db>
          Order allow,deny
          Deny from all
      </Files>
      

      If you have mod_rewrite enabled, you could use the following instead:

      RewriteRule ^(.*)/.mhonarc.db $1 [R=permanent]
      

      This will redirect browsers to the parent directory, which is the actual archive associated with database file.

    • The DBFILE resource can be used to rename the database file to some arbitrary, not easily guessed, name of your choosing. However, this does not prevent brute force attempts to access the file.

    • DBFILE resource can be set to a full pathname that is in a non-web server accessible location.

      NOTE:

      Using a full pathname for DBFILE is supported only in v2.5.13, or later.


    Why are HTML messages a security risk?

    HTML can contain dynamic content, like JavaScript. If an HTML message is blindly archived, you are introducing foreign dynamic content to your web site that you have no control over. The best example of this danger is the problem web-based email sites (e.g. Hotmail) encountered when malicious people were sending HTML messages to web-based email users and the messages contained dynamic content that would popup windows (which had a similiar style of the web-based email hosting provider) requesting sensitive information from users (like passwords).

    These types of attacks are classified as Cross-Site Scripting (XSS) attacks by the security community. The common goal for XSS attacks is to obtain private information of a user, like browser cookies used for site authentication.

    The following is a brief list of some of the security issues related to HTML messages:

    • Can contain foreign dynamic content.
    • Can autoload URLs (via IMG, and similiar, elements) which can be used to collect statistics on unsuspected readers.
    • Contain hidden contents (like server-side include comments) which may be processed by web servers to execute arbitrary programs or extract arbitrary system files.

    MHonArc's HTML filter (documented under the MIMEFILTERS) resource provides functionality of stripping out HTML data to minimize security exploits. Check the document for full details. The general recommendation for the security conscience is to exclude any HTML message data (see next question).


    So how can I exclude HTML mail?

    The quickest method is via the MIMEEXCS resource:

    <MIMEExcs>
    text/html
    text/x-html
    </MIMEExcs>
    

    Unfortunately, for messages that contain only HTML data, the entire message body will be excluded. Therefore, you may still want to show the data, but have it so the HTML markup is completely neutralized. The following resource settings will neutralize the dangers of HTML messages without excluding message data:

    <!-- It is common for popular MUA's to provide a text/plain version
         of the text/html version of a message body.  Therefore, we
         use MIMEALTPREFS to choose the text/plain version if available.
      -->
    <MimeAltPrefs>
    text/plain
    text/html
    </MimeAltPrefs>
    
    <!-- For messages that do not have a text/plain alternative, we
         treat HTML data as text/plain so the content is not lost, but
         HTML markup is escaped and neutralized.
      -->
    <MIMEFilters>
    text/html;   m2h_text_plain::filter; mhtxtplain.pl
    text/x-html; m2h_text_plain::filter; mhtxtplain.pl
    </MIMEFilters>
    

    Why doesn't MHonArc, by default, use the specified filename when saving attachments?

    A malicious person could send a message with an attachment filename that could overwrite existing content or be interpreted by the web server in some special manner to execute actions. Example: Apache allows for the support for creating .htaccess files to allow configuration settings within a directory. If you have this feature enabled and a message containes an attachment with the specified filename .htaccess and MHonArc blindly used the attachment filename, the attachment will override any existing .htaccess file you created with a version defined by the sender of the message.

    Another possibility is that web servers sometimes interpret filenames with certain extensions as executable content, like .shtml, .cgi, .phtml. If MHonArc used the attachment filename, or even just the attachment filename extension, anyone who can send mail that will be archived on your site can introduce executable content.

    It is because of the above reasons that the m2h_external::filter documented in the MIMEFILTERS resource advises caution when using the filter options that enable the usage of attachment filenames or filename extensions.


    Is it okay to run mhonarc setuid?

    NO! It is not okay. First, MHonArc does not pass Perl's taint checks. Second, MHonArc is vulnerable to symlink attacks. Hence, if mhonarc (or any of the utility programs) is setuid, mhonarc can be used for local priviledge escalation attacks.


    [Prev][TOC][Manual][Home][Next]


    $Date: 2005/05/25 19:51:01 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/layout.html0000644004705000001440000003377112332046112016331 0ustar ehoodusers MHonArc Reference -- Page Layout
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Page Layout

    The section describes the layout of the pages created by MHonArc. Each page's layout is controled by resources. Layout resources can be changed as you see fit to achieve the appearance you desire.


    Notation

    To simplify the description of the various pages created by MHonArc, the following notation is used:

    ( )
    Parentheses denote a group of resources.
    |
    The vertical bar is use within a group to denote a boolean OR. For example, "(X | Y | Z)" states that either X, Y, or Z may apply.
    ?
    Denotes that preceding resource, or group, is optional.
    *
    Denotes that preceding resource, or group, can occur zero or more times.
    +
    Denotes that preceding resource, or group, can occur one or more times.

    Main Index Page

    The main index is normally the default index of an archive. The main index list messages by date, subject, author, or message number. Since date listing is the default, the main index is commonly referred to as the date index.

    Main index page resource layout

    IDXPGSSMARKUP
    IDXPGBEGIN
        LISTBEGIN
    	(AUTHORBEGIN |
    	 DAYBEGIN |
    	 SUBJECTBEGIN)?
    	LITEMPLATE+
    	(AUTHOREND |
    	 DAYEND |
    	 SUBJECTEND)?
         LISTEND
        DOC?
    IDXPGEND
    

    Thread Index Page

    The thread index list messages by thread. Threads are based upon In-Reply-To and References fields of messages and by same Subjects.

    The layout of a thread index page is more complicated than the main index layout since threading is more complex. Also, MHonArc tries to provide the greatest flexibility for customizing thread listing layout.

    Thread index page resource layout

    TIDXPGSSMARKUP
    TIDXPGBEGIN
        THEAD
    	((TTOPBEGIN
    	    TSUBLISTBEG
    		((TLITXT
    		    [possible subthread listing]
    		  TLIEND)|
    		(TLINONE
    		    [possible subthread listing]
    		 TLINONEEND))+
    	    (TSUBJECTBEG
    		((TLITXT
    		    [possible subthread listing]
    		  TLIEND)|
    		(TLINONE
    		    [possible subthread listing]
    		 TLINONEEND))+
    	     TSUBJECTEND)?
    	    TSUBLISTEND
    	  TTOPEND)
    	 |
    	 TSINGLETXT)* [message w/o references or follow-ups]
        TFOOT
        DOC?
    TIDXPGEND
    

    If the previous is not confusing enough, there are four other resources for controlling the thread index page layout: TCONTBEGIN, TCONTEND, TINDENTBEGIN, TINDENTEND. If the multiple page resource is set, it is possible that a thread can span more than one page. These resources are used to restart a thread that has been clipped due to a page boundary.


    Message Page

    The message page contains a single message converted to HTML and archive navigational links.

    Message page resource layout

    MSGPGSSMARKUP
    MSGPGBEGIN
        MSGHEAD
        TOPLINKS
        SUBJECTHEADER
        Converted message header
        HEADBODYSEP
        Converted message body
        MSGBODYEND
        (FOLUPBEGIN
    	FOLUPLITXT+
         FOLUPEND)?
        (REFSBEGIN
    	REFSLITXT+
         REFSEND)?
        BOTLINKS
        MSGFOOT
    MSGPGEND
    
    NOTE:

    If the SINGLE resource is set, TOPLINKS and BOTLINKS are are not applicable. If the FOLREFS is off, FOLUPBEGIN, FOLUPLITXT, FOLUPEND, REFSBEGIN, REFSLITXT, and REFSEND resources are not applicable.

    Message pages also contain comment declarations. Some of the comment declarations are vital markers to allow MHonArc to properly edit the message during updates.

    Converted message header

    The format of converted message headers is determined by the following resource layout:

    FIELDSBEG
        (LABELBEG
         label text
         LABELEND
         FLDBEG
         field text
         FLDEND)*
    FIELDSEND
    
    NOTE:

    The line breaks above are used to show the sequence order of the resources and do not indicate any actual line breaks in the final markup generated.

    NOTE:

    After a message is initially converted, the message header data is static. Changes to resources that affect message header layout will only affect new messages and not existing archived messages.

    Converted message body

    The formatting of message body data is controled by filter routines. See the MIMEFILTERS resource page for more information.

    NOTE:

    After a message is initially converted, the message body data is static. Changes to resources that affect message body appearance will only affect news messages and not existing archived messages.

    Thread slices

    MHonArc supports the ability to include thread listings on messages pages via the $TSLICE$ resource variable. The formatting of the $TSLICE$ resource variable is controled by the following resources: TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, and TSLICETOPENDCUR

    The structure of the resources parallels the thread resource layout structure described for the thread index page, and the above thread slice resources will default to the corresponding non-tslice resources, allowing you to provide a consistent look to all thread listings without having to define two sets of resources.

    One key difference to the TSLICE* resources is the ability to customize the look for current message item in the the slice listing. I.e. You can actually highlight, grey-out, etc, the current message to give the reader a visual cue of where they are in the thread. See TSLICETOPBEGCUR for an example.


    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    $Date: 2005/05/13 00:00:35 $
    MHonArc
    Copyright © 1997-1999,2005 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/mhonarc.html0000644004705000001440000001627612332046112016444 0ustar ehoodusers MHonArc Reference Manual

    [Cool Logo Here]

    MHonArc

    A Mail-to-HTML converter.


    Table of Contents


    $Date: 2005/07/11 00:14:26 $
    MHonArc
    Copyright © 1995-2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/pod2htmd.tmp0000644004705000001440000000000312332046112016347 0ustar ehoodusers . MHonArc-2014-05-05-snap/doc/up.png0000644004705000001440000000143707451276546015300 0ustar ehoodusersPNG  IHDR DbPLTEߛ~בrյՊӫkfЅlΩʜ_bLjŪũhŢ\uwe_] fiq.OqbXxNo f;e<aJ2a5^D^;^3 ]+[E-V;#Q>+Q3O+KIC&G-G'F% D*C#B($<13:91.8=N6&)3AV/Hm-3A-#%,9K)X)")&+;%^%Z%#h"g"6O"b3W8e6_6a:j8g8i6h ;wwtRNS@fbKGDtmm^IDATxc` )RPL@>4x|@EEG'OO((ǡ?hH v! J qMȏǢ":4$! 8:N!Gj;yG+U=`i"gk[P\X\`TAR^y"4#Ô8D3D8cɣhfiˀ 'TB=P%u@*B#Xމӄ$S!q@5>q1-[l 2e )(`pRf`2I2 r L(6`.3# vᚌ@ ʣ05 E_~c)!IENDB`MHonArc-2014-05-05-snap/doc/relnotes.html0000644004705000001440000005572412332046112016651 0ustar ehoodusers MHonArc Reference -- Release Notes
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Release Notes

    This section highlights important changes that have occurred and important usage details which you should be aware of before using MHonArc. If you are upgrading from a previous release, make sure to check for the highlighted incompatibilites from earlier releases.

    NOTE:

    Read the CHANGES document included in the distribution for a more complete summary of changes to MHonArc.


    Compatibility Notes

    This sections provides notes dealing with compatibility issues if upgrading from a previous release of MHonArc:

    UPGRADING FROM v2.6.11 OR EARLIER: Handling of return value for $mhonarc::CB{Raw}MessageBodyRead Changed

    NOTE:

    If you do not utilize MHonArc's callback API, you can ignore this compatibility item. However, if you use the mha-preview example script, continuing reading.

    In v2.6.12, the return value for the $mhonarc::CBMessageBodyRead and $mhonarc::CBRawMessageBodyRead is now checked to see if the message should be excluded from further processing. In previous versions, the return value was N/A. Therefore, if you use either of these callbacks, and the return value of your routines evaluates to false for a given message, the message will be excluded from the archive.

    If you never want to exclude messages with either of these callbacks, have your routines always return 1.

    NOTE:

    The example mha-preview script provided in the MHonArc distribution has been updated to reflect the change in return value handling. Even though it is statistically unlikely messages will be quietly excluded with older versions of the script; it is recommended to replace your copy with the latest version.

    UPGRADING FROM v2.5.x OR EARLIER: Default iso-2022-jp Converter Changed

    In v2.6, the default charset converter for iso-2022-jp has changed to the following:

    <CharsetConverters>
    iso-2022-jp; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm
    </CharsetConverters>

    This filter converts all Japanese characters into Unicode character entity references (e.g. &#x7279;) removing the iso-2022-jp encoding. For some Japanese locales, this type of conversion may not be desired since some Japanese-aware processing tools may not support Unicode character entity references. If you want to preserve the iso-2022-jp encoding, you must explicitly specify the use of iso_2022_jp::str2html via the CHARSETCONVERTERS resource as follows:

    <CharsetConverters>
    iso-2022-jp; iso_2022_jp::str2html; iso2022jp.pl
    </CharsetConverters>

    The change to MHonArc::CharEnt::str2sgml as the default converter for iso-2022-jp was done to make MHonArc as locale neutral as possible in its default configuration.

    For more information about using MHonArc in a Japanese locale, see (documents in Japanese): <http://www.mhonarc.jp/>

    UPGRADING FROM v2.4.x OR EARLIER: DEFRCNAME Change

    The default value for the DEFRCNAME is now called ".mhonarc.mrc", or "mhonarc.mrc" under Windows and VMS. The old value was ".mhonarc.rc", or "mhonarc.rc". If you use the default resource file, you will need to rename the file to match the filenames used for v2.5 and later.

    UPGRADING FROM v2.4.x OR EARLIER: HEADER and FOOTER Removed

    The HEADER and FOOTER resources are no longer supported. If you are using these resources, the HEADER content and FOOTER content will be lost once v2.5, or later, of MHonArc processes an archive containing these resources.

    The HEADER and FOOTER resources have been deprecated for a long time since they only applied to the main index; the thread index has no equivalent. The IDXPGBEGIN or LISTBEGIN resources can be used to achieve the same effect of HEADER. The IDXPGEND or LISTEND can be used to achieve the same effect of FOOTER.

    UPGRADING FROM v2.4.x OR EARLIER: MIMEFILTERS API Change

    The API for data filters registered via MIMEFILTERS is not capability with filters written for v2.4.x and earlier. See CHANGES and the documentation for the MIMEFILTERS resource for the API.

    If you use custom style filters written for v2.4.x, or earlier, you will need to update them for them to work properly under v2.5, and later.

    UPGRADING FROM v2.1.x OR EARLIER: Database Format Change

    If you have archives created with v2.1.x, or earlier, the format of mime-related resources is not compatible with v2.2, and later, versions. MHonArc will reset the mime-related resources CHARSETCONVERTERS and MIMEFILTERS to their default values. MIMEARGS will also be reset to the default value unless you are upgrading to v2.5.8, or later, where the MIMEARGS settings will be preserved.

    To avoid the resetting of the mime-related resource if you are using customized settings, you will need to re-specify your settings the next time you update an archive. If you always specify your resource settings each time you invoke MHonArc, then your settings should to still take effect.

    You can also use the mha-dbedit program to apply your settings directly without processing the archive.

    DOWNGRADING TO OLDER VERSIONS

    CAUTION:

    Downgrading to an earlier version of MHonArc can corrupt your archives, especially when downgrading to an older version that used different database file storage formats from the current version in use.

    Changes in archive format are not common, so downgrading can be okay depending on the versions involved. The key versions to watch out for are the ones noted in this section where database format changes have occured. The following lists release numbers where a format change occured:

    • 2.0.0
    • 2.2.0
    • 2.5.0

    For example, if an archive was last updated with v2.5.0, processing the archive with a previous release will cause problems.

    A possible method for successfully downgrading to a release with differences in the database format, is to try to reconstruct the database file using the mha-dbrecover utility contained in the MHonArc version the archive is being downgraded to.

    TIP:

    The safest way to downgrade is to recreate an archive from the original raw mail data. It is good practice to preserve the raw mail data for cases like this and for general archive recovering situations due to file corruption or other system failures.


    v2.6.9 Notes

    Attachment filename format change

    Attachment filenames have changed from the numeric-style <ext><#####>.<ext> to <ext><XXXXXXXXXX>.<ext> where <XXXXXXXXXX> is a random string. For example, a jpeg image in the older format would have a filename like "jpg00001.jpg", and in the new style, it would be something like "jpgAOMySzCNIE.jpg".

    The change should be transparent and was done to provide support for the ATTACHMENTDIR resource and as a performance enhancement. However, if you perform any custom post-processing on archives that depends on the old numeric-style format, you will need to take this change into account.

    mhonarc::write_attachment: API change

    mhonarc::write_attachment is the main routine for filters that save data to an external file. The signature of the routine was changed while fixing bug #5473. See the API appendix for more information.


    v2.6.0 Notes

    m2h_text_html::filter: default argument removed

    The default argument for the m2h_text_plain::filter has been removed. The DEFCHARSET can be used instead.

    SPAMMODE: Applies to message body text.

    If SPAMMODE resource is enabled, it enables the new MODIFYBODYADDRESSES resource, which enables ADDRESSMODIFYCODE to rewrite addresses in message text bodies. If you prefer to not have addresses in message bodies modified when SPAMMODE is enabled, you must explicitly disable the MODIFYBODYADDRESSES resource.

    readmail::MAILhead_get_disposition: API change.

    The calling interface to readmail::MAILhead_get_disposition has been changed to the following:

    ($disp, $file, $raw, $html_name)  =
    	      readmail::MAILhead_get_disposition($fields_hash_ref, $do_html);

    The $file return value now has special, or invalid, filename characters converted to underscores.

    The $do_html is optional. If a true value, $html_name will be returned as a representation of the filename suited for inclusion HTML and with character conversion processing done.

    The $raw return value is the raw filename value as specified in the message header, which may include pathname components. This return value is mainly for informative reasons and it should not be used by filter code for security reasons.

    The changes are backward compatible, but if you have written custom filters, you may want to use the new calling convention if you display the filename in the HTML generated.


    General Notes

    Japanese and MHonArc

    Information on using MHonArc in a Japanese locale is available at the following location (documents in Japanese): <http://www.mhonarc.jp/>.

    Auto-loaded URL attributes stripped in HTML messages

    For v2.5, the default text/html filter (mhtxthtml.pl) will disable auto-loaded URL attributes for some HTML elements -- IMG, BODY, IFRAME, FRAME, OBJECT, SCRIPT, INPUT -- except for cid: URLs. This behavior can be disabled if the 'allownoncidurls' filter argument is specified.

    The new behavior prevents malicious URLs being used to verify mail addresses, secretly setting cookies, or gather some statistical data without the explicit consent of the reader.

    iso8859.pl deprecated

    ISO-8859 character set data processing now defaults to using the MHonArc::CharEnt module in v2.5. The old iso8859.pl library is still provided for compatibility with older archives, and with v2.6, iso8859.pl directly invokes MHonArc::CharEnt.

    To update archives to use the new settings, you can run the following command,

    mha-dbedit -rcfile examples/def-mime.mrc \
    	   -outdir /path/to/archive

    where examples/def-mime.mrc represents the default MIME processing resources for MHonArc provided within the MHonArc distribution.

    NOTE:

    v2.5.4, and later, generated archives will automatically inherit new CHARSETCONVERTERS if the built-in defaults are being used. However, if you have defined CHARSETCONVERTERS for your archives, you will need to explicitly update your archives if you want the new settings applied to your archives.

    TSLICE range setting

    The value of the TSLICE resource is used to determine the number of messages to update, before and after by thread, of each new message added. To insure that messages within a thread slice are updated when a new message is added, make sure the before and after ranges specified for TSLICE is equal to the maximum-before and the maximum-after range arguments specifed in the uses of the $TSLICE$ resource variable. For example, if you have $TSLICE(0;4)$ and $TSLICE(3;3)$ in message layout resources, you should set TSLICE to 3:4.

    If you only use $TSLICE$ once, it is best to set options for thread slice formatting via the TSLICE resource so you will not have anything to worry about.

    MHonArc code under the mhonarc namespace

    If upgrading from v2.1.x, or earlier, any custom filters you have developed may need to modified. If your filter accessed some main variables, your filter will not operate properly. All variables that used to be in package "main" are no longer. The major variables are now in package "mhonarc". For example, $::OUTDIR is now $mhonarc::OUTDIR. See the MIMEFILTERS resource page for more information.

    HTMLEXT and MSGPREFIX usage warning

    See the warnings in the documentation for the HTMLEXT and MSGPREFIX resources before using them.

    Applying new MIMEFILTERS settings

    Occasionally, a new release of MHonArc may contain new MIME filters. See the CHANGES file to check if any new filters have been added.

    If you confirm that new filters have been added, and you want to apply them to your archives, you use the mha-dbedit program using the def-mime.mrc in the examples directory.

    NOTE:

    v2.5.4, and later, generated archives will automatically inherit new MIMEFILTERS if the built-in defaults are being used. However, if you have defined MIMEFILTERS for your archives, you will need to explicitly update your archives if you want the new settings applied to your archives.

    Example usage of mha-dbedit:

    mha-dbedit -rcfile examples/def-mime.mrc \
    	   -outdir /path/to/archive

    Change the -rcfile and -outdir pathnames to reflect where you are running mhonarc and where your archive is located, respectively.

    Note, if your archives are using custom settings of MIMEFILTERS, MIMEARGS, and/or CHARSETCONVERTERS resources, you will need to create a variant version of def-mime.mrc (included in the examples directory) to include your settings and use the variant version when updating your archives.


    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    $Date: 2005/07/11 00:13:53 $
    MHonArc
    Copyright © 1997-2005, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/0000755004705000001440000000000012332046112016125 5ustar ehoodusersMHonArc-2014-05-05-snap/doc/resources/stdin.html0000644004705000001440000000664012332046111020141 0ustar ehoodusers MHonArc Resources: STDIN
    [Prev: STDERR][Resources][TOC][Next: STDOUT]

    STDIN


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -stdin filename


    Description

    STDIN can be used to specify a file to treat as standard input.

    Note, most system shells (Unix) provide the ability to redirect standard input from a file or other process. STDIN is provided where such functionality is not available or easy to achieve.


    Default Setting

    The default location of standard input, which is usually the terminal.


    Resource Variables

    N/A


    Examples

    One way to perform an ADD operation for a single message is something like the following:

        shell> mhonarc -add -outdir /path/to/archive -stdin mesg.822
    

    However, any decent shell would allow:

        shell> mhonarc -add -outdir /path/to/archive < mesg.822
    

    Version

    2.4.2


    See Also

    STDERR, STDOUT


    [Prev: STDERR][Resources][TOC][Next: STDOUT]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/ttopbuttonia.html0000644004705000001440000003041012332046112021545 0ustar ehoodusers MHonArc Resources: TTOPBUTTONIA
    [Prev: TTOPBUTTON][Resources][TOC][Next: TTOPEND]

    TTOPBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TTOPBUTTONIA>
    markup
    </TTOPBUTTONIA>

    Command-line Option

    N/A


    Description

    TTOPBUTTONIA defines the replacement markup for the resource variable $BUTTON(TTOP)$ when the current message is the first message in the current thread. See TTOPBUTTON for the markup used when the current message is not the first message in the thread.


    Default Setting

    <TTopButtonIA>
    [First in Thread]
    </TTopButtonIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.6.0


    See Also

    TOPLINKS, TTOPBUTTON


    [Prev: TTOPBUTTON][Resources][TOC][Next: TTOPEND]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/expiredate.html0000644004705000001440000001057712332046111021156 0ustar ehoodusers MHonArc Resources: EXPIREDATE
    [Prev: EXPIREAGE][Resources][TOC][Next: FASTTEMPFILES]

    EXPIREDATE


    Syntax

    Envariable

    M2H_EXPIREDATE=date

    Element

    <EXPIREDATE>
    date
    </EXPIREDATE>

    Command-line Option

    -expiredate date


    Description

    If defined, EXPIREDATE sets the expiration date for messages in an archive. During an archive update, any messages with dates less than the EXPIREDATE are automatically removed. If a message to be added is older than EXPIREDATE, it is not added.

    The syntax for EXPIREDATE is as follows:

    DD Mon YYYY HH:MM:SS Zone

    24 hour time must be used. The timezone is optional. If non-existent, the local zone is used. If a symbolic timezone is used (eg: "EST"), make sure it is defined in the TIMEZONES resource.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    EXPIREDATE is useful if you want to insure messages older than a specified date do not get archived. For example, if you want to make sure that no message before 1997 is added, then define EXPIREDATE as follows:

    <ExpireDate>
    1 Jan 1997 00:00:00
    </ExpireDate>
    

    However, this specifies local time. It is possible that some message can get excluded that have a 1997 date (depending on what timezone you are in). The following is more accurate:

    <ExpireDate>
    1 Jan 1997 00:00:00 +0000
    </ExpireDate>
    

    Or,

    <ExpireDate>
    1 Jan 1997 00:00:00 GMT
    </ExpireDate>
    

    Version

    2.0


    See Also

    EXPIREAGE, TIMEZONES


    [Prev: EXPIREAGE][Resources][TOC][Next: FASTTEMPFILES]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicebeg.html0000644004705000001440000003246612332046112020767 0ustar ehoodusers MHonArc Resources: TSLICEBEG
    [Prev: TSLICE][Resources][TOC][Next: TSLICECONTBEG]

    TSLICEBEG


    Syntax

    Envariable

    N/A

    Element

    <TSLICEBEG>
    markup...
    </TSLICEBEG>

    Command-line Option

    N/A


    Description

    TSLICEBEG defines the starting markup of a thread listing "slice" from the use of the $TSLICE$ resource variable. TSLICEBEG is comparable to the THEAD resource. However, TSLICEBEG scope only covers the starting markup of the thread listing while THEAD will also includes the header markup for thread indexes.


    Default Setting

    <TSliceBeg>
    <blockquote><ul>
    </TSliceBeg>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.2.0


    See Also

    $TSLICE$, TSLICE, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICE][Resources][TOC][Next: TSLICECONTBEG]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgfoot.html0000644004705000001440000002772712332046111020507 0ustar ehoodusers MHonArc Resources: MSGFOOT
    [Prev: MSGEXCFILTER][Resources][TOC][Next: MSGGMTDATEFMT]

    MSGFOOT


    Syntax

    Envariable

    N/A

    Element

    <MSGFOOT>
    markup ...
    </MSGFOOT>

    Command-line Option

    N/A


    Description

    MSGFOOT defines the markup to occur at the foot of each converted message page.


    Default Setting

    Nil


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    1.1.0


    See Also

    MSGHEAD, MSGPGBEGIN, MSGPGEND


    [Prev: MSGEXCFILTER][Resources][TOC][Next: MSGGMTDATEFMT]

    98/03/03 18:19:42
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/idxpgssmarkup.html0000644004705000001440000000644012332046111021717 0ustar ehoodusers MHonArc Resources: IDXPGSSMARKUP
    [Prev: IDXPGEND][Resources][TOC][Next: IDXPREFIX]

    IDXPGSSMARKUP


    Syntax

    Envariable

    N/A

    Element

    <IDXPGSSMARKUP>
    markup...
    </IDXPGSSMARKUP>

    Command-line Option

    N/A


    Description

    IDXPGSSMARKUP defines the markup that occurs at the very beginning of index pages. This resource may be used to include any server-side processing markup that must occur before any HTML-related markup.


    Default Setting

    The value of the SSMARKUP resource.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.5.8


    See Also

    MSGPGSSMARKUP, TIDXPGSSMARKUP, SSMARKUP

    Page Layout


    [Prev: IDXPGEND][Resources][TOC][Next: IDXPREFIX]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicesingletxtcur.html0000644004705000001440000003244112332046112022756 0ustar ehoodusers MHonArc Resources: TSLICESINGLETXTCUR
    [Prev: TSLICESINGLETXT][Resources][TOC][Next: TSLICESUBJECTBEG]

    TSLICESINGLETXTCUR


    Syntax

    Envariable

    N/A

    Element

    <TSLICESINGLETXTCUR>
    markup
    </TSLICESINGLETXTCUR>

    Command-line Option

    N/A


    Description

    Markup for a thread slice message listing if current message. This resource is used instead of TSLICESINGLETXT if rendering current message.


    Default Setting

    The value of the TSLICESINGLETXT resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    See TSLICETOPBEGCUR for a usage example of this resource.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICESINGLETXT][Resources][TOC][Next: TSLICESUBJECTBEG]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/genidx.html0000644004705000001440000000623612332046111020277 0ustar ehoodusers MHonArc Resources: GENIDX
    [Prev: FROMFIELDS][Resources][TOC][Next: GMTDATEFMT]

    GENIDX


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -genidx


    Description

    GENIDX instructs MHonArc to generate an index to standard output and perform no archive changes. Any new resources specified will be applied to the generated index, but the new resources will NOT be stored in the archive database.

    GENIDX may be used to create dynamic index pages. You can set IDXSIZE and PAGENUM to generate a dynamic page of a multi-page index.


    Default Setting

    N/A


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.2.0


    See Also


    [Prev: FROMFIELDS][Resources][TOC][Next: GMTDATEFMT]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/modifybodyaddresses.html0000644004705000001440000000635212332046111023063 0ustar ehoodusers MHonArc Resources: MODIFYBODYADDRESSES
    [Prev: MIMEINCS][Resources][TOC][Next: MODTIME]

    MODIFYBODYADDRESSES


    Syntax

    Envariable

    M2H_MODIFYBODYADDRESSES=[ 0 | 1 ]

    Element

    <MODIFYBODYADDRESSES>
    <NOMODIFYBODYADDRESSES>

    Command-line Option

    -modifybodyaddresses
    -nomodifybodyaddresses


    Description

    When MODIFYBODYADDRESSES is active, ADDRESSMODIFYCODE applies to text bodies of messages. Only text-based media-types are affected.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.6.0


    See Also

    ADDRESSMODIFYCODE, SPAMMODE


    [Prev: MIMEINCS][Resources][TOC][Next: MODTIME]

    $Date: 2005/06/02 05:50:26 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/noteia.html0000644004705000001440000003012012332046111020265 0ustar ehoodusers MHonArc Resources: NOTEIA
    [Prev: NOTEDIR][Resources][TOC][Next: NOTETEXT]

    NOTEIA


    Syntax

    Envariable

    N/A

    Element

    <NOTEIA>
    markup ...
    </NOTEIA>

    Command-line Option

    N/A


    Description

    NOTEIA defines the value of the $NOTE$ resource variable when a message has no annotation. See NOTE for defining the the value of $NOTE$ when there is an annotation.


    Default Setting

    Nil.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.3.0


    See Also

    ANNOTATE, NOTE, NOTEDIR, NOTETEXT


    [Prev: NOTEDIR][Resources][TOC][Next: NOTETEXT]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/title.html0000644004705000001440000000660412332046112020142 0ustar ehoodusers MHonArc Resources: TITLE
    [Prev: TINDENTEND][Resources][TOC][Next: TLASTPGLINK]

    TITLE


    Syntax

    Envariable

    M2H_TITLE=string

    Element

    <TITLE>
    string
    </TITLE>

    Command-line Option

    -title string


    Description

    TITLE defines the value of the $IDXTITLE resource variable. Unless doing custom page layout, the effect of setting the TITLE resource sets the title of the main index.


    Default Setting

    Mail Index
    

    Resource Variables

    N/A


    Examples

    It is common to set TITLE to the name of the mailing list, or newsgroup, being archived. Also, it is common have the title state the list order of the main index. For example:

    <Title>
    MHonArc Mailing List (by date)
    </Title>
    

    Version

    1.0


    See Also

    IDXPGBEGIN, TTITLE


    [Prev: TINDENTEND][Resources][TOC][Next: TLASTPGLINK]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/prevlink.html0000644004705000001440000003226412332046111020653 0ustar ehoodusers MHonArc Resources: PREVLINK
    [Prev: PREVBUTTONIA][Resources][TOC][Next: PREVLINKIA]

    PREVLINK


    Syntax

    Envariable

    N/A

    Element

    <PREVLINK>
    markup ...
    </PREVLINK>

    Command-line Option

    N/A


    Description

    PREVLINK defines the value for the $LINK(PREV)$ resource variable when there is a previous message to the current message according to the message list order of the main index. PREVLINK is analagous to PREVBUTTON, but is intended to provide a more descriptive link to the previous message.

    See PREVLINKIA for defining the value of $LINK(PREV)$ when there is no previous message.


    Default Setting

    <PrevLink>
    <li>Prev by sort-type:
    <strong><a href="$MSG(PREV)$">$SUBJECT(PREV)$</a></strong>
    </li>
    </PrevLink>
    

    sort-type will be a string that relects the sort method in effect.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows an alternative to the default setting by including the author of the previous message:

    <PrevLink>
    <li>Prev by sort-type:
    <strong><a href="$MSG(PREV)$">$PREVSUBJECT(PREV)$</a></strong>,
    <em>$FROMNAME(PREV)$</em>
    </li>
    </PrevLink>
    

    Version

    1.2


    See Also

    BOTLINKS, NEXTLINK, NEXTLINKIA, PREVLINK, TPREVLINK, TPREVLINKIA


    [Prev: PREVBUTTONIA][Resources][TOC][Next: PREVLINKIA]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgsep.html0000644004705000001440000000776212332046111020324 0ustar ehoodusers MHonArc Resources: MSGSEP
    [Prev: MSGPREFIX][Resources][TOC][Next: MULTIPG]

    MSGSEP


    Syntax

    Envariable

    M2H_MSGSEP=Perl-regexp

    Element

    <MSGSEP>
    Perl-regexp
    </MSGSEP>

    Command-line Option

    -msgsep Perl-regexp


    Description

    MSGSEP defines the Perl regular expression that represents the message separator for mailbox files.


    Default Setting

    ^From 
    

    Note: There is a space character after "From".


    Resource Variables

    N/A


    Examples

    Some MTAs do not escape lines that start with "From ". This will cause MHonArc to split a message into separate messages since it will treat the line as a message separator (if MHonArc is processing a mailbox file). One way to help avoid this problem is to set the MSGSEP resource to a more specific regular expression. For example:

    <MSGSEP>
    ^From \S+\s+\S+\s+\S+\s+\d+\s+\d+:\d+:\d+\s+\d+
    </MSGSEP>
    

    or

    <MSGSEP>
    ^From\s+(?:"[^"]+"@\S+|\S+)\s+\S+\s+\S+\s+\d+\s+\d+:\d+:\d+\s+\d+
    </MSGSEP>
    

    The second version deals with some systems that have quoted local parts in the address listed in the separator.

    It is still possible to get bogus splitting if a message contains a line that matches the regexp. Therefore, you may want to activate the CONLEN resource, if applicable.


    Version

    1.0


    See Also

    CONLEN


    [Prev: MSGPREFIX][Resources][TOC][Next: MULTIPG]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/lockfile.html0000644004705000001440000000700512332046111020604 0ustar ehoodusers MHonArc Resources: LOCKFILE
    [Prev: LOCKDELAY][Resources][TOC][Next: LOCKMETHOD]

    LOCKFILE


    Syntax

    Envariable

    M2H_LOCKFILE=name

    Element

    N/A

    Command-line Option

    -lockfile name


    Description

    LOCKFILE is the name of the file used to create a lock on an archive. The file is used in the archive directory to signify that a MHonArc process is accessing the archive, and any other MHonArc process will wait until the lock is released.

    WARNING

    You should not override the default name unless absolutely necessary, and you are confident about what you are doing.


    Default Setting

    .mhonarc.lck
    mhonarc.lck (Windows/MSDOS)
    mhonarc_lck (VMS)


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.2


    See Also

    LOCK, LOCKDELAY, LOCKMETHOD, LOCKTRIES


    [Prev: LOCKDELAY][Resources][TOC][Next: LOCKMETHOD]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1998-2000, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/prevbuttonia.html0000644004705000001440000003122112332046111021533 0ustar ehoodusers MHonArc Resources: PREVBUTTONIA
    [Prev: PREVBUTTON][Resources][TOC][Next: PREVLINK]

    PREVBUTTONIA


    Syntax

    Envariable

    N/A

    Element

    <PREVBUTTONIA>
    markup ...
    </PREVBUTTONIA>

    Command-line Option

    N/A


    Description

    PREVBUTTONIA defines the value for the $BUTTON(PREV)$ resource variable when there is no previous message to the current message according to the message list order of the main index. See the PREVBUTTON for defining the value of $BUTTON(PREV)$ when there is a next message.


    Default Setting

    <PrevButtonIA chop>
    [Date Prev]
    </PrevButtonIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows how an button image can be used for showing when there is no previous message:

    <PrevButtonIA chop>
    <img src="previa.png" alt="[Date Prev]">
    </PrevButtonIA>
    

    Version

    1.2


    See Also

    NEXTBUTTON, NEXTBUTTONIA, PREVBUTTON, TPREVBUTTON, TPREVBUTTONIA, TOPLINKS


    [Prev: PREVBUTTON][Resources][TOC][Next: PREVLINK]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicesubjectend.html0000644004705000001440000003234512332046112022354 0ustar ehoodusers MHonArc Resources: TSLICESUBJECTEND
    [Prev: TSLICESUBJECTBEG][Resources][TOC][Next: TSLICESUBLISTBEG]

    TSLICESUBJECTEND


    Syntax

    Envariable

    N/A

    Element

    <TSLICESUBJECTEND>
    markup
    </TSLICESUBJECTEND>

    Command-line Option

    N/A


    Description

    Markup after a subject based thread slice listing. This resource functions the same as TSUBJECTEND, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TSUBJECTEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICESUBJECTBEG][Resources][TOC][Next: TSLICESUBLISTBEG]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/idxsize.html0000644004705000001440000000616712332046111020503 0ustar ehoodusers MHonArc Resources: IDXSIZE
    [Prev: IDXPREFIX][Resources][TOC][Next: INCLUDE]

    IDXSIZE


    Syntax

    Envariable

    M2H_IDXSIZE=number

    Element

    <IDXSIZE>
    number
    </IDXSIZE>

    Command-line Option

    -idxsize number


    Description

    IDXSIZE defines the maximum number of messages listed on an index page. Please do not confuse with MAXSIZE.

    Setting IDXSIZE to 0 produces an unlimited page size.


    Default Setting

    Unlimited.


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.2


    See Also

    MAXSIZE, MULTIPG


    [Prev: IDXPREFIX][Resources][TOC][Next: INCLUDE]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fldend.html0000644004705000001440000000644412332046111020256 0ustar ehoodusers MHonArc Resources: FLDEND
    [Prev: FLDBEG][Resources][TOC][Next: FOLLOWSYMLINKS]

    FLDEND


    Syntax

    Envariable

    N/A

    Element

    <FLDEND>
    markup ...
    </FLDEND>

    Command-line Option

    N/A


    Description

    FLDEND represents the ending markup of a field text of a message field.


    Default Setting

    The space character.


    Resource Variables

    N/A


    Examples

    See FIELDSBEG for an example usage of this resource.


    Version

    2.0


    See Also

    EXCS, FIELDORDER, FIELDSBEG, FIELDSEND, FIELDSTYLES, FLDBEG, LABELBEG, LABELEND, LABELSTYLES


    [Prev: FLDBEG][Resources][TOC][Next: FOLLOWSYMLINKS]

    $Date: 2010/12/31 20:33:59 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/lockdelay.html0000644004705000001440000000623612332046111020770 0ustar ehoodusers MHonArc Resources: LOCKDELAY
    [Prev: LOCK][Resources][TOC][Next: LOCKFILE]

    LOCKDELAY


    Syntax

    Envariable

    M2H_LOCKDELAY=seconds

    Element

    N/A

    Command-line Option

    -lockdelay seconds


    Description

    LOCKDELAY defines the number of seconds to wait between attempts to lock an archive (see LOCKTRIES). In conjunction with LOCKTRIES, you can control how long MHonArc will wait before aborting due to the inability to lock an archive.


    Default Setting

    3


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.2.2


    See Also

    FORCE, LOCK, LOCKTRIES


    [Prev: LOCK][Resources][TOC][Next: LOCKFILE]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/prevpglinkia.html0000644004705000001440000001744312332046111021516 0ustar ehoodusers MHonArc Resources: PREVPGLINKIA
    [Prev: PREVPGLINK][Resources][TOC][Next: PRINTXCOMMENTS]

    PREVPGLINKIA


    Syntax

    Envariable

    N/A

    Element

    <PREVPGLINKIA>
    markup ...
    </PREVPGLINKIA>

    Command-line Option

    N/A


    Description

    PREVPGLINKIA defines the value for the $PGLINK(PREV)$ resource variable when there is no previous page to the current page of the main index.

    See the PREVPGLINK for defining the value of $PGLINK(PREV)$ when there is a previous page.


    Default Setting

    <PrevPgLinkIA chop>
    [Prev Page]
    </PrevPgLinkIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None


    Version

    2.0


    See Also

    LISTBEGIN, MULTIPG, NEXTPGLINK, NEXTPGLINKIA, PREVPGLINK


    [Prev: PREVPGLINK][Resources][TOC][Next: PRINTXCOMMENTS]

    $Date: 2005/07/08 06:34:02 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicesubjectbeg.html0000644004705000001440000003235612332046112022345 0ustar ehoodusers MHonArc Resources: TSLICESUBJECTBEG
    [Prev: TSLICESINGLETXTCUR][Resources][TOC][Next: TSLICESUBJECTEND]

    TSLICESUBJECTBEG


    Syntax

    Envariable

    N/A

    Element

    <TSLICESUBJECTBEG>
    markup
    </TSLICESUBJECTBEG>

    Command-line Option

    N/A


    Description

    Markup before a subject based thread slice listing. This resource functions the same as TSUBJECTBEG, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TSUBJECTBEG resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICESINGLETXTCUR][Resources][TOC][Next: TSLICESUBJECTEND]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/authorbegin.html0000644004705000001440000003065312332046111021330 0ustar ehoodusers MHonArc Resources: AUTHORBEGIN
    [Prev: ATTACHMENTURL][Resources][TOC][Next: AUTHOREND]

    AUTHORBEGIN


    Syntax

    Envariable

    N/A

    Element

    <AUTHORBEGIN>
    markup ...
    </AUTHORBEGIN>

    Command-line Option

    N/A


    Description

    AUTHORBEGIN defines the beginning markup of an author group in the main index if the AUTHSORT reosource is set. An author group is a group of messages all from the same author.

    Any message related resource variables available for the AUTHORBEGIN evaluate based on information from the first message in the group.


    Default Setting

    Nil.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following example resource settings cause the main index to be sorted by author. The listing will contain each author's name followed by a sub-listing of the author's messages:

    <AuthSort>
    
    <AuthorBegin>
    <li><strong>$FROMNAME$</strong>
    <ul>
    </AuthorBegin>
    
    <AuthorEnd>
    </li></ul>
    </AuthorEnd>
    
    <LITemplate>
    <li>$SUBJECT$</li>
    </LITemplate>
    

    Version

    2.0


    See Also

    AUTHOREND, AUTHSORT


    [Prev: ATTACHMENTURL][Resources][TOC][Next: AUTHOREND]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/archive.html0000644004705000001440000000712112332046111020434 0ustar ehoodusers MHonArc Resources: ARCHIVE
    [Prev: ANNOTATE][Resources][TOC][Next: ATTACHMENTDIR]

    ARCHIVE


    Syntax

    Envariable

    M2H_ARCHIVE= [ 0 | 1 ]

    Element

    N/A

    Command-line Option(s)

    -archive
    -noarchive


    Description

    MHonArc using the ARCHIVE resource to determine if it should create archive data after reading message data.


    Default Setting

    1
    

    Resource Variables

    N/A


    Examples

    The purpose of MHonArc is to create HTML archive, so why would you want to disable archiving? One potential purpose is to use MHonArc as a general MIME processing filter to extract all attachments in a mail folder to separate files. Luckily, the utility program mha-decode is included in the MHonArc distribution to provide basic MIME message decoding. Therefore, the lengthy example that used to be here has been deleted. You can examine the source of mha-decode to see how it interfaces with the MHonArc libraries and uses the ARCHIVE resource.


    Version

    2.1.2


    See Also

    mha-decode


    [Prev: ANNOTATE][Resources][TOC][Next: ATTACHMENTDIR]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicetopbeg.html0000644004705000001440000003230212332046112021477 0ustar ehoodusers MHonArc Resources: TSLICETOPBEG
    [Prev: TSLICESUBLISTEND][Resources][TOC][Next: TSLICETOPBEGCUR]

    TSLICETOPBEG


    Syntax

    Envariable

    N/A

    Element

    <TSLICETOPBEG>
    markup
    </TSLICETOPBEG>

    Command-line Option

    N/A


    Description

    Thread slice markup for the root/start of a thread. This resource functions the same as TTOPBEG, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TTOPBEG resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICESUBLISTEND][Resources][TOC][Next: TSLICETOPBEGCUR]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/ttopend.html0000644004705000001440000000601212332046112020467 0ustar ehoodusers MHonArc Resources: TTOPEND
    [Prev: TTOPBUTTONIA][Resources][TOC][Next: TTOPLINK]

    TTOPEND


    Syntax

    Envariable

    N/A

    Element

    <TTOPEND>
    markup ...
    </TTOPEND>

    Command-line Option

    N/A


    Description

    TTOPEND defines the markup for the end of a thread listing.


    Default Setting

    <TTopEnd>
    </li>
    </TTopEnd>
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    TTOPBEGIN

    Page Layout


    [Prev: TTOPBUTTONIA][Resources][TOC][Next: TTOPLINK]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tlastpglink.html0000644004705000001440000001613612332046112021356 0ustar ehoodusers MHonArc Resources: TLASTPGLINK
    [Prev: TITLE][Resources][TOC][Next: TLEVELS]

    TLASTPGLINK


    Syntax

    Envariable

    N/A

    Element

    <TLASTPGLINK>
    markup
    </TLASTPGLINK>

    Command-line Option

    N/A


    Description

    TLASTPGLINK defines the markup to use when the resource variable $PGLINK(TLAST)$ is used: the link to the last page of the thread index. Since a link to the last page of the thread index is always active, there is no inactive version of this resource.


    Default Setting

    [<a href="$PG(TLAST)">Last Page</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None.


    Version

    2.5.0


    See Also

    TFIRSTPGLINK, TNEXTPGLINK, TPREVPGLINK


    [Prev: TITLE][Resources][TOC][Next: TLEVELS]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/subjectarticlerxp.html0000644004705000001440000000711712332046111022555 0ustar ehoodusers MHonArc Resources: SUBJECTARTICLERXP
    [Prev: STDOUT][Resources][TOC][Next: SUBJECTBEGIN]

    SUBJECTARTICLERXP


    Syntax

    Envariable

    M2H_SUBJECTARTICLERXP=perl_regex

    Element

    <SUBJECTARTICLERXP>
    perl_regex
    </SUBJECTARTICLERXP>

    Command-line Option

    -subjectarticlerxp perl_regex


    Description

    SUBJECTARTICLERXP defines the Perl regular expression matching leading articles (eg: "the", "a", "an") in subject text.

    SUBJECTARTICLERXP is used by MHonArc for sorting. The regex defined is used in s/// operation with the case-insensitive modifier. The regex should be anchored to the beginning of the string.

    The SUBJECTARTICLERXP is normally changed to suit a particular locale.


    Default Setting

    ^(the|a|an)\s+
    

    Resource Variables

    N/A


    Examples

    If you are archiving French message, the following setting maybe appropriate:

    <SubjectArticleRxp>
    ^l(es|e|a)\s+
    </SubjectArticleRxp>
    

    Version

    2.2.0


    See Also

    SUBJECTREPLYRXP


    [Prev: STDOUT][Resources][TOC][Next: SUBJECTBEGIN]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mimealtprefs.html0000644004705000001440000001323112332046111021502 0ustar ehoodusers MHonArc Resources: MIMEALTPREFS
    [Prev: MHPATTERN][Resources][TOC][Next: MIMEARGS]

    MIMEALTPREFS


    Syntax

    Envariable

    N/A

    Element

    <MIMEALTPREFS>
    content-type
    content-type
    ...
    </MIMEALTPREFS>

    Command-line Option

    N/A


    Description

    MIMEALTPREFS allows you to specify media-type preferences for multipart/alternative data, overriding the default preferences as specified in mail messages.

    When a multipart/alternative entity is processed, the last filterable media-type is normally used. However, it is sometimes desirable to override this behavior for certain media-types. For example, it has become common for many MUAs to generate the following message structures:

      multipart/alternative
        text/plain
        text/html

    A message with HTML and a plain text equivalent for receiving MUAs who cannot render HTML. When MHonArc processes such a message, MHonArc will use the text/html part since it is filterable and comes after text/plain.

    There are many who would like to have nothing to do with HTML in email (for security reasons). With MIMEALTPREFS, you can tell MHonArc to use the text/plain entity (if it exists) over the text/html part with the following setting:

    <MIMEAltPrefs>
    text/plain
    text/html
    </MIMEAltPrefs>
    

    Media-types listed in MIMEALTPREFS are from most prefered to least prefered.

    MIMEALTPREFS augments the normal processing of multipart/alternative entities. For example, say the following message entity structure exists,

      multipart/alternative
        text/plain
        text/enriched
        text/html

    and we are using the MIMEALTPREFS setting,

    <MIMEAltPrefs>
    text/plain
    text/html
    </MIMEAltPrefs>
    

    Which entity will MHonArc actually use? In this case, the text/enriched part will be used. The reason is the text/html will be excluded since a text/plain alternative entity exists. However, MHonArc still tries to use the last filterable alternative part, which is text/enriched in this case.

    In order to have text/plain chosen, the following MIMEALTPREFS setting would be needed,

    <MIMEAltPrefs>
    text/plain
    text/enriched
    text/html
    </MIMEAltPrefs>
    

    This says that text/enriched is preferred over text/html. And text/plain is preferred over text/enriched and text/html.

    NOTE:

    Each time <MIMEALTPREFS> occurs in a resource file, the last encountered setting will override any previous values. Therefore, specifying the override attribute is redundant.


    Default Setting

    Nil


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.5.8


    See Also

    MIMEEXCS, MIMEFILTERS, MIMEINCS


    [Prev: MHPATTERN][Resources][TOC][Next: MIMEARGS]

    $Date: 2005/06/07 19:15:44 $
    MHonArc
    Copyright © 2002,2005 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tendbuttonia.html0000644004705000001440000003041112332046111021511 0ustar ehoodusers MHonArc Resources: TENDBUTTONIA
    [Prev: TENDBUTTON][Resources][TOC][Next: TENDLINK]

    TENDBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TENDBUTTONIA>
    markup
    </TENDBUTTONIA>

    Command-line Option

    N/A


    Description

    TENDBUTTONIA defines the replacement markup for the resource variable $BUTTON(TEND)$ when the current message is the last message in the current thread. See TENDBUTTON for the markup used when the current message is not the last message in the thread.


    Default Setting

    <TEndButtonIA>
    [Last in Thread]
    </TEndButtonIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.6.0


    See Also

    TENDBUTTON, TOPLINKS


    [Prev: TENDBUTTON][Resources][TOC][Next: TENDLINK]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevbutton.html0000644004705000001440000003130512332046112021411 0ustar ehoodusers MHonArc Resources: TPREVBUTTON
    [Prev: TOPLINKS][Resources][TOC][Next: TPREVBUTTONIA]

    TPREVBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TPREVBUTTON>
    markup ...
    </TPREVBUTTON>

    Command-line Option

    N/A


    Description

    TPREVBUTTON defines the value for the $BUTTON(TPREV)$ resource variable when there is a previous message to the current message according to the message list order of the thread index. See the TPREVBUTTONIA for defining the value of $BUTTON(TPREV)$ when there is no next message.


    Default Setting

    <TPrevButton chop>
    [<a href="$MSG(TPREV)$">Thread Prev</a>]
    </TPrevButton>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows how an button image can be used for linking to the previous message in an archive:

    <TPrevButton chop>
    <a href="$MSG(TPREV)$"><img src="tprev.png" alt="[Thread Prev]"></a>
    </TPrevButton>
    

    Version

    2.0


    See Also

    TNEXTBUTTON, TNEXTBUTTONIA, TOPLINKS, TPREVBUTTONIA


    [Prev: TOPLINKS][Resources][TOC][Next: TPREVBUTTONIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnexttopbuttonia.html0000644004705000001440000003023712332046112022453 0ustar ehoodusers MHonArc Resources: TNEXTTOPBUTTONIA
    [Prev: TNEXTTOPBUTTON][Resources][TOC][Next: TNEXTTOPLINK]

    TNEXTTOPBUTTONIA


    Syntax

    Envariable

    N/A

    Element

    <TNEXTTOPBUTTONIA>
    markup
    </TNEXTTOPBUTTONIA>

    Command-line Option

    N/A


    Description

    TNEXTTOPBUTTONIA defines the replacement markup for the resource variable $BUTTON(TNEXTTOP)$ when there is no next discussion thread. See TNEXTTOPBUTTON for the replacement markup used when there is a next discussion thread.


    Default Setting

    [Next Thread]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTTOPBUTTON


    [Prev: TNEXTTOPBUTTON][Resources][TOC][Next: TNEXTTOPLINK]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fileperms.html0000644004705000001440000001177112332046111021007 0ustar ehoodusers MHonArc Resources: FILEPERMS
    [Prev: FIELDSTYLES][Resources][TOC][Next: FIRSTPGLINK]

    FILEPERMS


    Syntax

    Envariable

    M2H_FILEPERMS=octal-mode

    Element

    <FILEPERMS>
    octal-mode
    </FILEPERMS>

    Command-line Option

    -fileperms octal-mode


    Description

    NOTE

    The use of FILEPERMS on non-Unix-type operating systems may have limited functionality. See the chmod function under the Function Implementations of the perlport manpage of the Perl documentation for specifics on how Unix-type permissions are applied to your operating system.

    FILEPERMS sets the permissions of archive files. File permissions are specified as an octal number: the same format as used by the Unix chmod(1) command. The following provides common values:

    0666  User, group, and other readable and writable.
    0644  User readable and writable; group and other readable.
    0600  User readable and writable; anyone else is denied access.

    The UMASK resource is applied to the value of FILEPERMS as follows: FILEPERMS &~ UMASK. For example, if FILEPERMS equals 0666 and UMASK equals 022, archive files will have the permissions 0644, read/write for user and read-only access to all others.

    NOTE

    To explicitly control the permissions of the DBFILE use DBFILEPERMS.


    Default Setting

    0666
    NOTE

    Remember, UMASK is applied to FILEPERMS, so the actual permissions of archive files will generally be less than 0666.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.6.0


    See Also

    DBFILEPERMS, UMASK


    [Prev: FIELDSTYLES][Resources][TOC][Next: FIRSTPGLINK]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/newsurl.html0000644004705000001440000000753712332046111020525 0ustar ehoodusers MHonArc Resources: NEWSURL
    [Prev: NEWS][Resources][TOC][Next: NEXTBUTTON]

    NEWSURL


    Syntax

    Envariable

    M2H_NEWSURL=url

    Element

    <NEWSURL>
    url
    </NEWSURL>

    Command-line Option

    -newsurl url


    Description

    NEWURL defines the URL template for linking newsgroup names in Newsgroup: header fields when the NEWS resource is active.


    Default Setting

    news:$NEWSGROUP$
    

    Resource Variables

    VariableValue
    $MSGID$ The message-id of the message.
    $NEWSGROUP$ Newsgroup name

    Examples

    If archiving news posts for a local server, it may be desireable to specify a specific news host:

    <NewsUrl>
    news://news.example.com/$NEWSGROUP$
    </NewsUrl>
    

    Or, you may want to link directly to the message itself:

    <NewsUrl>
    news://news.example.com/$MSGID$
    </NewsUrl>
    

    Version

    2.6.9


    See Also

    NEWS, MAILTOURL


    [Prev: NEWS][Resources][TOC][Next: NEXTBUTTON]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mailto.html0000644004705000001440000000607312332046111020305 0ustar ehoodusers MHonArc Resources: MAILTO
    [Prev: LOCKTRIES][Resources][TOC][Next: MAILTOURL]

    MAILTO


    Syntax

    Envariable

    M2H_MAILTO=[ 0 | 1 ]

    Element(s)

    <MAILTO>
    <NOMAILTO>

    Command-line Option(s)

    -mailto
    -nomailto


    Description

    If the MAILTO resource is on, mail addresses in message headers will be converted into mailto URL links as defined by the MAILTOURL resource.


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    MAILTOURL


    [Prev: LOCKTRIES][Resources][TOC][Next: MAILTOURL]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/monthsabr.html0000644004705000001440000000731612332046111021016 0ustar ehoodusers MHonArc Resources: MONTHSABR
    [Prev: MONTHS][Resources][TOC][Next: MSGBODYEND]

    MONTHSABR


    Syntax

    Envariable

    M2H_MONTHSABR=month1:month2:...:month12

    Element

    <MONTHSABR>
    month1:month2:...:month12
    </MONTHSABR>

    Command-line Option

    -monthsabr month1:month2:...:month12


    Description

    The MONTHSABR resource defines the abbreviate month names. You can set this resource to redefine the abbreviate month names to reflect a particular locale for the GMTDATEFMT and LOCALDATEFMT resources. When setting this resource, make sure to define all 12 months.


    Default Setting

    Jan:Feb:Mar:Apr:May:Jun:Jul:Aug:Sep:Oct:Nov:Dec
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    GMTDATEFMT, LOCALDATEFMT, MONTHS, WEEKDAYS, WEEKDAYSABR


    [Prev: MONTHS][Resources][TOC][Next: MSGBODYEND]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/weekdaysabr.html0000644004705000001440000000717112332046112021322 0ustar ehoodusers MHonArc Resources: WEEKDAYSABR
    [Prev: WEEKDAYS][Resources][TOC] 

    WEEKDAYSABR


    Syntax

    Envariable

    M2H_WEEKDAYSABR=day1:day2:...:day7

    Element

    <WEEKDAYSABR>
    day1:day2:...:day7
    </WEEKDAYSABR>

    Command-line Option

    -weekdaysabr day1:day2:...:day7


    Description

    The WEEKDAYSABR resource defines the abbreviated names for the days of the week. You can set this resource to redefine abbreviated weekday names to reflect a particular locale for the GMTDATEFMT and LOCALDATEFMT resources. When setting this resource, make sure to define all 7 days.


    Default Setting

    Sun:Mon:Tue:Wed:Thu:Fri:Sat
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    GMTDATEFMT, LOCALDATEFMT, MONTHS, MONTHSABR, WEEKDAYS


    [Prev: WEEKDAYS][Resources][TOC] 

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tlinone.html0000644004705000001440000000653112332046112020470 0ustar ehoodusers MHonArc Resources: TLINONE
    [Prev: TLIEND][Resources][TOC][Next: TLINONEEND]

    TLINONE


    Syntax

    Envariable

    N/A

    Element

    <TLINONE>
    markup ...
    </TLINONE>

    Command-line Option

    N/A


    Description

    TLINONE defines the markup for a missing message in a thread. Occasionally, a message may not be present within a thread. TLINONE defines the starting and content markup to use to represent a missing message.

    NOTE

    Use TLINONEEND for defining the end markup for a missing message.


    Default Setting

    <TLiNone>
    <li><em>Message not available</em>
    </TLiNone>
    

    Resource Variables

    N/A


    Examples

    None


    Version

    2.0


    See Also

    TLINONEEND

    Page Layout


    [Prev: TLIEND][Resources][TOC][Next: TLINONEEND]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/subjectstripcode.html0000644004705000001440000000754712332046111022403 0ustar ehoodusers MHonArc Resources: SUBJECTSTRIPCODE
    [Prev: SUBJECTREPLYRXP][Resources][TOC][Next: SUBJECTTHREADS]

    SUBJECTSTRIPCODE


    Syntax

    Envariable

    M2H_SUBJECTSTRIPCODE=Perl_expressions

    Element

    <SUBJECTSTRIPCODE>
    Perl expressions...
    </SUBJECTSTRIPCODE>

    Command-line Option

    -subjectstripcode Perl_expressions


    Description

    SUBJECTSTRIPCODE may be used to define Perl expressions to apply to message subjects when parsed by MHonArc. The main use of the resource is to edit message subjects before stored in the archive.

    When defining the expressions, the subject text will be in the $_ variable. The value of $_ after all expressions are evaluated is the subject MHonArc will use for the message.


    Default Setting

    Nil


    Resource Variables

    N/A


    Examples

    Some mailing lists prefix all message subjects with a list identifier so subscribers can easily denote message from the list when received. However, the prefix can clutter MHonArc indexes. The SUBJECTSTRIPCODE can be used to strip the prefixes before messages are stored in the archive.

    If the prefix is something like the following,

    [LIST-NAME]:
    

    the following SUBJECTSTRIPCODE setting can be used:

    s/^\[LIST-NAME\]://;
    

    Version

    2.3.0


    See Also


    [Prev: SUBJECTREPLYRXP][Resources][TOC][Next: SUBJECTTHREADS]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fieldsend.html0000644004705000001440000000652412332046111020756 0ustar ehoodusers MHonArc Resources: FIELDSEND
    [Prev: FIELDSBEG][Resources][TOC][Next: FIELDSTORE]

    FIELDSEND


    Syntax

    Envariable

    N/A

    Element

    <FIELDSEND>
    markup ...
    </FIELDSEND>

    Command-line Option

    N/A


    Description

    FIELDSEND represents the ending markup of a message header.


    Default Setting

    <FieldsEnd>
    </ul>
    </FieldsEnd>
    

    Resource Variables

    N/A


    Examples

    See FIELDSBEG for an example usage of this resource.


    Version

    2.0


    See Also

    EXCS, FIELDORDER, FIELDSBEG, FIELDSTYLES, FLDBEG, FLDEND, LABELBEG, LABELEND, LABELSTYLES


    [Prev: FIELDSBEG][Resources][TOC][Next: FIELDSTORE]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/refslitxt.html0000644004705000001440000003026712332046111021046 0ustar ehoodusers MHonArc Resources: REFSLITXT
    [Prev: REFSEND][Resources][TOC][Next: REVERSE]

    REFSLITXT


    Syntax

    Envariable

    N/A

    Element

    <REFSLITXT>
    markup...
    </REFSLITXT>

    Command-line Option

    N/A


    Description

    REFSLITXT defines the markup for an entry in the explicit reference links list after the message body on a message page.

    NOTE

    This resource is only applicable if the FOLREFS resource is on and the message has explicit follow-ups.


    Default Setting

    <li><strong>$SUBJECT$</strong>
    <ul><li><em>From:</em> $FROM$</li></ul></li>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    See REFSBEGIN.


    Version

    2.1.0


    See Also

    FOLREFS, FOLUPBEGIN, FOLUPEND, FOLUPLITXT, REFSBEGIN, REFSEND

    Page Layout


    [Prev: REFSEND][Resources][TOC][Next: REVERSE]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicetopendcur.html0000644004705000001440000003221312332046112022223 0ustar ehoodusers MHonArc Resources: TSLICETOPENDCUR
    [Prev: TSLICETOPEND][Resources][TOC][Next: TSORT]

    TSLICETOPENDCUR


    Syntax

    Envariable

    N/A

    Element

    <TSLICETOPENDCUR>
    markup
    </TSLICETOPENDCUR>

    Command-line Option

    N/A


    Description

    Thread slice markup for the end of a thread if current message. This resource functions is used instead of TSLICETOPEND if rendering the current message.


    Default Setting

    The value of the TSLICETOPEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND,


    [Prev: TSLICETOPEND][Resources][TOC][Next: TSORT]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mimeincs.html0000644004705000001440000001442312332046111020622 0ustar ehoodusers MHonArc Resources: MIMEINCS
    [Prev: MIMEFILTERS][Resources][TOC][Next: MODIFYBODYADDRESSES]

    MIMEINCS


    Syntax

    Envariable

    N/A

    Element

    <MIMEINCS>
    content-type
    content-type
    ...
    </MIMEINCS>

    Command-line Option

    N/A


    Description

    MIMEINCS defines the list of content-types (aka media-types) to allow. If the MIMEINCS resource is not empty, only media-types listed will be allowed. All other media-types will be excluded.

    For example, if MIMEINCS is set to the following:

    <MIMEIncs>
    text/plain
    text/html
    </MIMEIncs>
    

    Then only text/plain and text/html media-types are allowed. All other media-types will be excluded.

    NOTE:

    If a media-type is listed in the MIMEEXCS, it is always excluded, regardless of the value of MIMEINCS.

    If all you want to do is exclude a specified set of media-types, then use the MIMEEXCS resource instead.

    Base types can also be listed to allow all media-types with a give base. For example, image/jpg will only allow JPEG images, but image will allow all images.

    NOTE:

    Use care when setting MIMEINCS since you may unintentionally exclude media-types that you do not want to exclude. See Examples below.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    MIMEINCS provides strict control over the allowed media-types in your archives, allowing for better security. For example:

    <MIMEIncs>
    text/plain
    </MIMEIncs>
    

    Will only allow text/plain data. All other types will be excluded. For some, this may be ideal, but for many, it may be too restrictive: disallowing other text media types that do not pose security risks. Therefore, the following may be prefered:

    <MIMEIncs>
    text
    </MIMEIncs>
    

    All text media-types are allowed. However, HTML (text/html) does pose security problems. Therefore, you may want to allow all text media-types, excluding HTML:

    <MIMEIncs>
    text
    </MIMEIncs>
    
    <MIMEExcs>
    text/html
    </MIMEExcs>
    

    Supporting Message-based Attachments

    The media-type message/rfc822 is commonly used when one message includes another. For example, popular MUAs provide a "forward-as-attachment" feature when reading an email message. When used, MUAs will specify the message/rfc822 media-type for the attachment.

    The following is a more liberal MIMEINCS setting that allows media-types commonly used in email, allows forward-as-attachment cases, and keeps security risks to a minimum:

    <MIMEIncs>
    text
    image
    message
    </MIMEIncs>
    
    NOTE:

    Attached messages will still be restricted to the media-types listed in MIMEINCS. For example, if a forwarded message includes a video attachment, the video attachment will be excluded.


    Version

    2.6.12


    See Also

    MIMEALTPREFS, MIMEEXCS, MIMEFILTERS


    [Prev: MIMEFILTERS][Resources][TOC][Next: MODIFYBODYADDRESSES]

    $Date: 2005/07/23 06:23:56 $
    MHonArc
    Copyright © 2005, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tidxpgbegin.html0000644004705000001440000002006012332046112021315 0ustar ehoodusers MHonArc Resources: TIDXPGBEGIN
    [Prev: TIDXLABEL][Resources][TOC][Next: TIDXPGEND]

    TIDXPGBEGIN


    Syntax

    Envariable

    N/A

    Element

    <TIDXPGBEGIN>
    markup ...
    </TIDXPGBEGIN>

    Command-line Option

    N/A


    Description

    The TIDXPGBEGIN resource defines the beginning markup for the thread index pages. I.e. You can control the opening <HTML> tag, the HEAD element contents, the opening <BODY> tag, etc. Therefore, if you are not satisfied with the default behavior of how the TTITLE resource is used, or have other needs that require control on the beginning markup, you can set the TIDXPGBEGIN resource to what you desire.


    Default Setting

    <TIdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$TIDXTITLE$</title>
    </head>
    <body>
    <h1>$TIDXTITLE$</h1>
    </TIdxPgBegin>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    The following shows how you can set HTML body element attributes to control the appearence of the thread index pages:

    <TIdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$TIDXTITLE$</title>
    </head>
    <body background="tidxbg.png" bgproperties="fixed">
    <h1>$TIDXTITLE$</h1>
    </TIdxPgBegin>
    

    Version

    1.2.0


    See Also

    TIDXPGEND, TTITLE


    [Prev: TIDXLABEL][Resources][TOC][Next: TIDXPGEND]

    $Date: 2004/03/15 21:07:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/lang.html0000644004705000001440000001266312332046111017743 0ustar ehoodusers MHonArc Resources: LANG
    [Prev: LABELSTYLES][Resources][TOC][Next: LASTPGLINK]

    LANG


    Syntax

    Envariable

    M2H_LANG=locale

    Element

    <LANG>
    locale
    </LANG>

    Command-line Option

    -lang locale


    Description

    LANG sets the locale. Setting the locale affects the following MHonArc operations:

    • Message sorting: Locale properties for string collation are applied when sorting messages by subject or author.

    • Resource file loading: Locale-specific resource files will be checked for. See RCFILE for more information.

    • POSIX date/time formating: If POSIXSTRFTIME is enabled, locale-specific formatting will be applied. See your system's strftime() manual page for more information.

    The basic format for specifying a locale is:

    language_country.codeset
    
    NOTE:

    On Unix-based system, the command locale may be available to get list of all supported locales for you system.


    Default Setting

    The value of the LC_ALL or LANG environment variables.


    Resource Variables

    N/A


    Examples

    LANG gives you the ability to create locale-specific archives on a single system. For example, let's say the you manage several English-based archives and the default locale for your system is en_US. However, you would now like to host a Japanese-based archive on the same system.

    For the Japanese archive, you may want to set LANG as follows:

    <Lang>
    ja_JP
    </Lang>
    

    If you plan on using a specific codeset (see TEXTENCODE and CHARSETCONVERTERS) you should specify the codeset. For example, if the archives will be in UTF-8, you should use:

    <Lang>
    ja_JP.utf8
    </Lang>
    

    Version

    2.6.7


    See Also

    CHARSETCONVERTERS, RCFILE, TEXTENCODE

    perllocale manual page.


    [Prev: LABELSTYLES][Resources][TOC][Next: LASTPGLINK]

    $Date: 2005/06/07 19:15:44 $
    MHonArc
    Copyright © 2003,2005 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/botlinks.html0000644004705000001440000003211612332046111020642 0ustar ehoodusers MHonArc Resources: BOTLINKS
    [Prev: AUTHSORT][Resources][TOC][Next: CHARSETALIASES]

    BOTLINKS


    Syntax

    Envariable

    N/A

    Element

    <BOTLINKS>
    markup ...
    </BOTLINKS>

    Command-line Option

    N/A


    Description

    BOTLINKS defines the markup for the links at the bottom of a message page. Its usage is analagous to the TOPLINKS resource, but tends to be more verbose. However, you can define the resource anyway you desire.


    Default Setting

    The following represents the default setting when there are main and thread indexes. References to either index will not show up if either index does not exist:

    <BotLinks>
    <hr>
    <ul>
    $LINK(PREV)$$LINK(NEXT)$
    $LINK(TPREV)$$LINK(TNEXT)$
    <li>Index(es):
    <ul>
    <li><a href="$IDXFNAME$#$MSGNUM$">
    <strong>Main</strong></a></li>
    <li><a href="$TIDXFNAME$#$MSGNUM$">
    <strong>Thread</strong></a></li>
    </ul>
    </li>
    </ul>
    </BotLinks>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    1.2


    See Also

    IDXFNAME, NEXTLINK, PREVLINK, TIDXFNAME, TNEXTLINK, TOPLINKS, TPREVLINK

    Page Layout


    [Prev: AUTHSORT][Resources][TOC][Next: CHARSETALIASES]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/nextlink.html0000644004705000001440000003222212332046111020647 0ustar ehoodusers MHonArc Resources: NEXTLINK
    [Prev: NEXTBUTTONIA][Resources][TOC][Next: NEXTLINKIA]

    NEXTLINK


    Syntax

    Envariable

    N/A

    Element

    <NEXTLINK>
    markup ...
    </NEXTLINK>

    Command-line Option

    N/A


    Description

    NEXTLINK defines the value for the $LINK(NEXT)$ resource variable when there is a next message to the current message according to the message list order of the main index. NEXTLINK is analagous to NEXTBUTTON, but is intended to provide a more descriptive link to the next message.

    See the NEXTLINKIA for defining the value of $LINK(NEXT)$ when there is no next message.


    Default Setting

    <NextLink>
    <li>Next by sort-type:
    <strong><a href="$MSG(NEXT)$">$SUBJECT(NEXT)$</a></strong>
    </li>
    </NextLink>
    

    sort-type will be a string that relects the sort method in effect.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows an alternative to the default setting by including the author of the next message:

    <NextLink>
    <li>Next by Date:
    <strong><a href="$MSG(NEXT)$">$SUBJECT(NEXT)$</a></strong>,
    <em>$FROMNAME(NEXT)$</em>
    </li>
    </NextLink>
    

    Version

    1.2


    See Also

    BOTLINKS, NEXTLINKIA, PREVLINK, PREVLINKIA, TNEXTLINK, TNEXTLINKIA


    [Prev: NEXTBUTTONIA][Resources][TOC][Next: NEXTLINKIA]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicecontbeg.html0000644004705000001440000003227312332046112021647 0ustar ehoodusers MHonArc Resources: TSLICECONTBEG
    [Prev: TSLICEBEG][Resources][TOC][Next: TSLICECONTEND]

    TSLICECONTBEG


    Syntax

    Envariable

    N/A

    Element

    <TSLICECONTBEG>
    markup
    </TSLICECONTBEG>

    Command-line Option

    N/A


    Description

    Thread slice markup before the continuation of a broken thread. This resource functions the same as TCONTBEGIN, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TCONTBEGIN resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICEBEG][Resources][TOC][Next: TSLICECONTEND]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/lastpglink.html0000644004705000001440000001712312332046111021166 0ustar ehoodusers MHonArc Resources: LASTPGLINK
    [Prev: LANG][Resources][TOC][Next: LISTBEGIN]

    LASTPGLINK


    Syntax

    Envariable

    N/A

    Element

    <LASTPGLINK>
    markup
    </LASTPGLINK>

    Command-line Option

    N/A


    Description

    LASTPGLINK defines the markup to use when the resource variable $PGLINK(LAST)$ is used: the link to the last page of the main index. Since a link to the last page of the main index is always active, there is no inactive version of this resource.


    Default Setting

    [<a href="$PG(LAST)">Last Page</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None.


    Version

    2.5.0


    See Also

    FIRSTPGLINK, NEXTPGLINK, PREVPGLINK


    [Prev: LANG][Resources][TOC][Next: LISTBEGIN]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fasttempfiles.html0000644004705000001440000000754612332046111021674 0ustar ehoodusers MHonArc Resources: FASTTEMPFILES
    [Prev: EXPIREDATE][Resources][TOC][Next: FIELDORDER]

    FASTTEMPFILES


    Syntax

    Envariable

    M2H_FASTTEMPFILES=[ 0 | 1 ]

    Element

    <FASTTEMPFILES>
    <NOFASTTEMPFILES>

    Command-line Option

    -fasttempfiles
    -nofasttempfiles


    Description

    When FASTTEMPFILES is active, MHonArc will use non-random temporary filenames.

    When MHonArc creates, or edits, an archive file, MHonArc first writes to a temporary file. If no errors occur, the temporary file is then renamed to the appropriate archive filename. For security reasons (like to avoid local symlink attacks), MHonArc generates random filenames for temporary files. This operation does increase the overhead of temporary file creation. The overhead is generally negligable, but if processing a large set of files and performance is a primary concern, you can enable FASTTEMPFILES to avoid the random filename creation.

    If you want to enable FASTTEMPFILES, but are concerned about security, make sure that the archive directory and file permissions are set to only allow write access to trusted users.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.6.1


    See Also

    DBFILEPERMS, FILEPERMS, UMASK


    [Prev: EXPIREDATE][Resources][TOC][Next: FIELDORDER]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/followsymlinks.html0000644004705000001440000000663512332046111022120 0ustar ehoodusers MHonArc Resources: FOLLOWSYMLINKS
    [Prev: FLDEND][Resources][TOC][Next: FOLREFS]

    FOLLOWSYMLINKS


    Syntax

    Envariable

    M2H_FOLLOWSYMLINKS=[ 0 | 1 ]

    Element

    <FOLLOWSYMLINKS>
    <NOFOLLOWSYMLINKS>

    Command-line Option

    -followsymlinks
    -nofollowsymlinks


    Description

    When FOLLOWSYMLINKS is enabled, MHonArc will allow/follow symbolic links when creating directories and files.

    CAUTION:

    When enabling this option, verify archive directory ownership and permissions. If permissions are lenient, enabling FOLLOWSYMLINKS may expose your archive to local symlink attacks.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.6.17


    See Also

    FILEPERMS, UMASK


    [Prev: FLDEND][Resources][TOC][Next: FOLREFS]

    $Date: 2011/01/01 22:44:03 $
    MHonArc
    Copyright © 2005, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsort.html0000644004705000001440000000621612332046112020173 0ustar ehoodusers MHonArc Resources: TSORT
    [Prev: TSLICETOPENDCUR][Resources][TOC][Next: TSUBJECTBEG]

    TSORT


    Syntax

    Envariable

    M2H_TSORT=[ 0 | 1 ]

    Element(s)

    <TSORT>
    <NOTSORT>

    Command-line Option(s)

    -tsort
    -notsort


    Description

    TSORT determines if MHonArc sorts threads be date, or by message number. If on, threads are sorted by date. If off, threads are sorted by message number.


    Default Setting

    On


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.1.0


    See Also

    THREAD, TREVERSE, TSUBSORT


    [Prev: TSLICETOPENDCUR][Resources][TOC][Next: TSUBJECTBEG]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsliceindentend.html0000644004705000001440000003233712332046112022177 0ustar ehoodusers MHonArc Resources: TSLICEINDENTEND
    [Prev: TSLICEINDENTBEG][Resources][TOC][Next: TSLICELEVELS]

    TSLICEINDENTEND


    Syntax

    Envariable

    N/A

    Element

    <TSLICEINDENTEND>
    markup
    </TSLICEINDENTEND>

    Command-line Option

    N/A


    Description

    Thread slice markup for closing a level when continuing a broken thread. This resource functions the same as TINDENTEND, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TINDENTEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICEINDENTBEG][Resources][TOC][Next: TSLICELEVELS]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/reconvert.html0000644004705000001440000001050612332046111021023 0ustar ehoodusers MHonArc Resources: RECONVERT
    [Prev: RCFILE][Resources][TOC][Next: REFSBEGIN]

    RECONVERT


    Syntax

    Envariable

    M2H_RECONVERT=[ 0 | 1 ]

    Element

    N/A

    Command-line Option

    -reconvert
    -noreconvert


    Description

    When RECONVERT is active during an add operation, if a message currently exists in the archive, it will be reconverted. This is basically the same ad deleting a message and re-adding it, with the exception that the message number will be preserved.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    Generally, RECONVERT is used to selectively re-process individual messages:

    prompt> mhonarc -add -reconvert -outdir /path/to/archive < mesg.822
    

    However, RECONVERT can be used to "rebuild" an archive where message numbers are preserved:

    prompt> mhonarc -add -reconvert -outdir /path/to/archive folder
    

    (assuming that folder contains all the original raw messages).

    The RECONVERT method is less efficient than the following:

    prompt> rm -r /path/to/archive
    prompt> mkdir /path/to/archive
    prompt> mhonarc -outdir /path/to/archive folder
    

    But, if folder has had messages deleted from it before the rebuild (for example, to remove spam or objectionable messages), some messages may get assigned different message numbers from the pre-rebuild archive. This can be a problem if people maintain bookmarks to individual messages.


    Version

    2.6.0


    See Also

    ADD


    [Prev: RCFILE][Resources][TOC][Next: REFSBEGIN]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgpgs.html0000644004705000001440000000775612332046111020331 0ustar ehoodusers MHonArc Resources: MSGPGS
    [Prev: MSGPGEND][Resources][TOC][Next: MSGPGSSMARKUP]

    MSGPGS


    Syntax

    Envariable

    M2H_MSGPGS=[ 0 | 1 ]

    Element

    <MSGPGS>
    <NOMSGPGS>

    Command-line Option

    -msgpgs
    -nomsgpgs


    Description

    CAUTION:

    MSGPGS should not be changed after the initial creation of an archive. If changed, unexpected behavior and possible errors may occur.

    MSGPGS resource determines if MHonArc will generate HTML pages for messages processed. If set, pages will be created for each processed messages as defined by message page layout.

    If MSGPGS is not set, no message pages will be created. Having no message pages created may be desired if you only want to use MHonArc for its index page generation. In this case, relevant resources that link to message pages must be redefined to properly retrieve messages from how they are stored on the system.

    When MSGPGS is off, messge body data is skipped when processing input data. Hence, processing time is much faster since no message conversion is performed. The database file is still created to support updates to index pages.


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    Not yet.


    Version

    2.3.0


    See Also

    MAIN, THREAD


    [Prev: MSGPGEND][Resources][TOC][Next: MSGPGSSMARKUP]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1998,2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/note.html0000644004705000001440000003140012332046111017755 0ustar ehoodusers MHonArc Resources: NOTE
    [Prev: NOSUBJECTTXT][Resources][TOC][Next: NOTEDIR]

    NOTE


    Syntax

    Envariable

    N/A

    Element

    <NOTE>
    markup ...
    </NOTE>

    Command-line Option

    N/A


    Description

    NOTE defines the value of the $NOTE$ resource variable when a message has an annotation. See NOTEIA for defining the the value of $NOTE$ when there is no annotation.


    Default Setting

    $NOTETEXT$
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTETEXT$ Base text of message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    If you use annotations to provide a brief summary of the message archived, you can use something like the following resource settings to display the annotations within the main index page:

    
    <Note>
    <br>
    $NOTETEXT$
    <br>
    </Note>
    
    <NoteIA>
    
    </NoteIA>
    
    <LiTemplate>
    <li><strong>$SUBJECT$</strong>
    <ul><li><em>From</em>: $FROM$</li
    ></ul>
    $NOTE$
    </li>
    </LiTemplate>
    
    

    Version

    2.3.0


    See Also

    ANNOTATE, NOTEDIR, NOTEIA, NOTETEXT


    [Prev: NOSUBJECTTXT][Resources][TOC][Next: NOTEDIR]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/saveresources.html0000644004705000001440000000674512332046111021717 0ustar ehoodusers MHonArc Resources: SAVERESOURCES
    [Prev: RMM][Resources][TOC][Next: SCAN]

    SAVERESOURCES


    Syntax

    Envariable

    M2H_SAVERESOURCES= [ 0 | 1 ]

    Element

    <SAVERESOURCES>
    <NOSAVERESOURCES>

    Command-line Option

    -saveresources
    -nosaveresources


    Description

    SAVERESOURCES determines if MHonArc will save resource settings in the database. If set, resources settings will be saved. This eliminates the need to respecify a resource file, envariables, and/or command-line options for future archive operations, and it increases execution performance.

    You may want to shut off SAVERESOURCES if you always specify a resource file when invoking MHonArc. This will reduce the size of the database.


    Default Setting

    True.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.1


    See Also

    DBFILE, RCFILE.


    [Prev: RMM][Resources][TOC][Next: SCAN]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/labelbeg.html0000644004705000001440000000644312332046111020556 0ustar ehoodusers MHonArc Resources: LABELBEG
    [Prev: KEEPONRMM][Resources][TOC][Next: LABELEND]

    LABELBEG


    Syntax

    Envariable

    N/A

    Element

    <LABELBEG>
    markup ...
    </LABELBEG>

    Command-line Option

    N/A


    Description

    LABELBEG represents the beginning markup of the label text of a message field.


    Default Setting

    <li>
    

    Resource Variables

    N/A


    Examples

    See FIELDSBEG for an example usage of this resource.


    Version

    2.0


    See Also

    EXCS, FIELDORDER, FIELDSBEG, FIELDSEND, FIELDSTYLES, FLDBEG, FLDEND, LABELEND, LABELSTYLES


    [Prev: KEEPONRMM][Resources][TOC][Next: LABELEND]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/conlen.html0000644004705000001440000000635212332046111020276 0ustar ehoodusers MHonArc Resources: CONLEN
    [Prev: CHECKNOARCHIVE][Resources][TOC][Next: DATEFIELDS]

    CONLEN


    Syntax

    Envariable

    M2H_CONLEN=[ 0 | 1 ]

    Element(s)

    <CONLEN>
    <NOCONLEN>

    Command-line Option(s)

    -conlen
    -noconlen


    Description

    If the CONLEN resource is on, MHonArc will use the Content-Length field in message headers to determine the proper end of a message when reading UUCP style mailbox files. This resource can be very helpful for users that have an MTA that defines Content-Length and does not escape "From" lines.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    MSGSEP


    [Prev: CHECKNOARCHIVE][Resources][TOC][Next: DATEFIELDS]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/months.html0000644004705000001440000000731412332046111020327 0ustar ehoodusers MHonArc Resources: MONTHS
    [Prev: MODTIME][Resources][TOC][Next: MONTHSABR]

    MONTHS


    Syntax

    Envariable

    M2H_MONTHS=month1:month2:...:month12

    Element

    <MONTHS>
    month1:month2:...:month12
    </MONTHS>

    Command-line Option

    -months month1:month2:...:month12


    Description

    The MONTHS resource defines the names of the months. You can set this resource to redefine month names to reflect a particular locale for the GMTDATEFMT and LOCALDATEFMT resources. When setting this resource, make sure to define all 12 months.


    Default Setting

    January:Febuary:March:April:May:June:July:August:September:October:November:December
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    GMTDATEFMT, LOCALDATEFMT, MONTHSABR, WEEKDAYS, WEEKDAYSABR


    [Prev: MODTIME][Resources][TOC][Next: MONTHSABR]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/ttopbutton.html0000644004705000001440000003112012332046112021232 0ustar ehoodusers MHonArc Resources: TTOPBUTTON
    [Prev: TTOPBEGIN][Resources][TOC][Next: TTOPBUTTONIA]

    TTOPBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TTOPBUTTON>
    markup
    </TTOPBUTTON>

    Command-line Option

    N/A


    Description

    TTOPBUTTON defines the replacement markup for the resource variable $BUTTON(TTOP)$: button markup for the first message in the current discussion thread. See TTOPBUTTONIA for the markup used when the current message is the first message in the thread.


    Default Setting

    <TTopButton chop>
    [<a href="$MSG(TTOP)$">First in Thread</a>]
    </TTopButton>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.6.0


    See Also

    TENDBUTTON, TTOPBUTTONIA, TTOPLINK, TNEXTBUTTON, TNEXTTOPBUTTON, TPREVBUTTON, TPREVINBUTTON, TPREVTOPBUTTON.


    [Prev: TTOPBEGIN][Resources][TOC][Next: TTOPBUTTONIA]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/listbegin.html0000644004705000001440000002170412332046111020776 0ustar ehoodusers MHonArc Resources: LISTBEGIN
    [Prev: LASTPGLINK][Resources][TOC][Next: LISTEND]

    LISTBEGIN


    Syntax

    Envariable

    N/A

    Element

    <LISTBEGIN>
    markup ...
    </LISTBEGIN>

    Command-line Option

    N/A


    Description

    The LISTBEGIN resource specifies the markup to begin the message list. This resource works in conjuction with LITEMPLATE and LISTEND resources to format the main index page(es).


    Default Setting

    If MULTIPG is not active:

    <ListBegin>
    <ul>
    <li><a href="$TIDXFNAME$">Thread Index</a></li>
    </ul>
    <hr>
    <ul>
    </ListBegin>
    

    If MULTIPG is active:

    <ListBegin>
    <ul>
    <li><a href="$TIDXFNAME$">Thread Index</a></li>
    </ul>
    $PGLINK(PREV)$$PGLINK(NEXT)$
    <hr>
    <ul>
    </ListBegin>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    Here is an example that includes links for the first and last page of the index for a mult-page index:

    <ListBegin>
    <ul>
    <li><a href="$TIDXFNAME$">Thread Index</a></li>
    </ul>
    <table width="100%" border=0 cols=2 cellpadding=0 cellspacing=0>
    <tbody>
    <tr align="center">
    <th colspan=4>Page $PAGENUM$ of $NUMOFPAGES$
    <tr>
    <td align="left">$PGLINK(PREV)$
    <td align="right">[<a href="$PG(FIRST)$">First Page</a>]
    <td align="left">[<a href="$PG(LAST)$">Last Page</a>]
    <td align="right">$PGLINK(NEXT)
    </tbody>
    </table>
    <hr>
    <ul>
    </ListBegin>
    

    Version

    1.0


    See Also

    LISTEND, LITEMPLATE, MULTIPG


    [Prev: LASTPGLINK][Resources][TOC][Next: LISTEND]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/defrcname.html0000644004705000001440000000574612332046111020752 0ustar ehoodusers MHonArc Resources: DEFRCNAME
    [Prev: DEFRCFILE][Resources][TOC][Next: DOC]

    DEFRCNAME


    Syntax

    Envariable

    M2H_DEFRCNAME=name

    Element

    N/A

    Command-line Option

    N/A


    Description

    DEFRCNAME defines the name of the default MHonArc resource file. See DEFRCFILE on how DEFRCNAME is used.


    Default Setting

    .mhonarc.mrc
    (mhonarc.mrc for Win/DOS environments).


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0.2


    See Also

    DEFRCFILE


    [Prev: DEFRCFILE][Resources][TOC][Next: DOC]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/dbfileperms.html0000644004705000001440000001253112332046111021310 0ustar ehoodusers MHonArc Resources: DBFILEPERMS
    [Prev: DBFILE][Resources][TOC][Next: DECODEHEADS]

    DBFILEPERMS


    Syntax

    Envariable

    M2H_DBFILEPERMS=octal-mode

    Element

    <DBFILEPERMS>
    octal-mode
    </DBFILEPERMS>

    Command-line Option

    -dbfileperms octal-mode


    Description

    NOTE:

    The use of DBFILEPERMS on non-Unix-type operating systems may have limited functionality. See the chmod function under the Function Implementations of the perlport manpage of the Perl documentation for specifics on how Unix-type permissions are applied to your operating system.

    DBFILEPERMS sets the permissions of DBFILE. File permissions are specified as an octal number: the same format as used by the Unix chmod(1) command. The following provides common values:

    0666  User, group, and other readable and writable.
    0660  User and group readable and writable; no access for anyone else.
    0644  User readable and writable; group and other readable.
    0640  User readable and writable; group readable; no access for anyone else.
    0600  User readable and writable; anyone else is denied access.

    The UMASK resource is applied to the value of DBFILEPERMS as follows: DBFILEPERMS &~ UMASK. For example, if DBFILEPERMS equals 0660 and UMASK equals 022, archive files will have the permissions 0640, read/write for user and read-only for group, and no access for anyone else.

    DBFILEPERMS exists to provide you with the ability to have a more restrictive access policy to DBFILE vs other archive files for security reasons.


    Default Setting

    0660
    (User and group read/write; no access for anyone else)

    NOTE:

    Remember, UMASK is applied to DBFILEPERMS, so the actual permissions of DBFILE may be less than 0660.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.6.0


    See Also

    DBFILE, FILEPERMS, UMASK


    [Prev: DBFILE][Resources][TOC][Next: DECODEHEADS]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tlinoneend.html0000644004705000001440000000636112332046112021160 0ustar ehoodusers MHonArc Resources: TLINONEEND
    [Prev: TLINONE][Resources][TOC][Next: TLITXT]

    TLINONEEND


    Syntax

    Envariable

    N/A

    Element

    <TLINONEEND>
    markup ...
    </TLINONEEND>

    Command-line Option

    N/A


    Description

    Occasionally, a message may not be present within a thread. TLINONEEND defines the end markup to use to represent a missing message.

    NOTE

    Use TLINONE for defining the start and content markup for a missing message.


    Default Setting

    <TLiNoneEnd>
    </li>
    </TLiNoneEnd>
    

    Resource Variables

    N/A


    Examples

    None


    Version

    2.0


    See Also

    TLINONE

    Page Layout


    [Prev: TLINONE][Resources][TOC][Next: TLITXT]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/ttoplinkia.html0000644004705000001440000003031012332046112021166 0ustar ehoodusers MHonArc Resources: TTOPLINKIA
    [Prev: TTOPLINK][Resources][TOC][Next: UMASK]

    TTOPLINK


    Syntax

    Envariable

    N/A

    Element

    <TTOPLINKIA>
    markup
    </TTOPLINKIA>

    Command-line Option

    N/A


    Description

    TTOPLINKIA defines the replacement markup for the resource variable $LINK(TTOP)$ when the current message is the first message in the current thread. See TTOPLINK for the markup used when the current message is not the first message in the thread.


    Default Setting

    <TEndLinkIA>
    </TEndLinkIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.6.0


    See Also

    BOTLINKS, TTOPLINK


    [Prev: TTOPLINK][Resources][TOC][Next: UMASK]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/posixstrftime.html0000644004705000001440000001015312332046111021732 0ustar ehoodusers MHonArc Resources: POSIXSTRFTIME
    [Prev: PERLINC][Resources][TOC][Next: PREVBUTTON]

    POSIXSTRFTIME


    Syntax

    Envariable

    M2H_POSIXSTRFTIME=[ 0 | 1 ]

    Element

    <POSIXSTRFTIME>
    <NOPOSIXSTRFTIME>

    Command-line Option

    -posixstrftime
    -noposixstrftime


    Description

    If POSIXSTRFTIME is set, then POSIX::strftime() is used to process time format strings as defined by the GMTDATEFMT, LOCALDATEFMT, MSGGMTDATEFMT, and MSGLOCALDATEFMT resources. If POSIX::strftime() is used, the resources MONTHS, MONTHSABR, WEEKDAYS, and WEEKDAYSABR will have no effect. Month names and weekday names will be determined by your systems locale. See your system's manual page on strftime() for more information.

    If not set (the default), time format strings are processed by MHonArc specific code. A reason to activate POSIXSTRFTIME is if your system's strftime() supports conversion specifications you require which are not supported by MHonArc.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.3


    See Also

    GMTDATEFMT, LANG, LOCALDATEFMT, MSGGMTDATEFMT, MSGLOCALDATEFMT


    [Prev: PERLINC][Resources][TOC][Next: PREVBUTTON]

    $Date: 2005/06/07 19:15:44 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fieldsbeg.html0000644004705000001440000000771112332046111020744 0ustar ehoodusers MHonArc Resources: FIELDSBEG
    [Prev: FIELDORDER][Resources][TOC][Next: FIELDSEND]

    FIELDSBEG


    Syntax

    Envariable

    N/A

    Element

    <FIELDSBEG>
    markup ...
    </FIELDSBEG>

    Command-line Option

    N/A


    Description

    FIELDSBEG represents the beginning markup of a message header.


    Default Setting

    <ul>
    

    Resource Variables

    N/A


    Examples

    The following example shows how FIELDSBEG, with other message layout resources, be used to have message headers formatted using table markup:

    <FieldsBeg>
    <table border=0>
    </FieldsBeg>
     
    <LabelBeg>
    <tr>
    <td align="right" valign="top">
    </LabelBeg>
     
    <LabelEnd>
    </td>
    </LabelEnd>
     
    <FldBeg>
    <td align="left">
    </FldBeg>
     
    <FldEnd>
    </td>
    </tr>
    </FldEnd>
     
    <FieldsEnd>
    </table>
    </FieldsEnd>
    

    Version

    2.0


    See Also

    EXCS, FIELDORDER, FIELDSEND, FIELDSTYLES, FLDBEG, FLDEND, LABELBEG, LABELEND, LABELSTYLES


    [Prev: FIELDORDER][Resources][TOC][Next: FIELDSEND]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tendbutton.html0000644004705000001440000003123412332046111021203 0ustar ehoodusers MHonArc Resources: TENDBUTTON
    [Prev: TCONTEND][Resources][TOC][Next: TENDBUTTONIA]

    TENDBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TENDBUTTON>
    markup
    </TENDBUTTON>

    Command-line Option

    N/A


    Description

    TENDBUTTON defines the replacement markup for the resource variable $BUTTON(TEND)$: button markup for the last message in the current discussion thread. See TENDBUTTONIA for the markup used when the current message is the last message in the thread.


    Default Setting

    <TEndButton chop>
    [<a href="$MSG(TEND)$">Last in Thread</a>]
    </TEndButton>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.6.0


    See Also

    TENDBUTTONIA, TENDLINK, TNEXTBUTTON, TNEXTINLINK, TNEXTTOPBUTTON, TPREVBUTTON, TPREVINBUTTON, TPREVTOPBUTTON, TTOPBUTTON, TTOPLINKS


    [Prev: TCONTEND][Resources][TOC][Next: TENDBUTTONIA]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/locktries.html0000644004705000001440000000617412332046111021021 0ustar ehoodusers MHonArc Resources: LOCKTRIES
    [Prev: LOCKMETHOD][Resources][TOC][Next: MAILTO]

    LOCKTRIES


    Syntax

    Envariable

    M2H_LOCKTRIES=number

    Element

    N/A

    Command-line Option

    -locktries number


    Description

    LOCKTRIES defines the number attempts MHonArc makes to lock an archive. In conjunction with LOCKDELAY, you can control how long MHonArc will wait before aborting due to the inability to lock an archive.


    Default Setting

    10


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.2.1


    See Also

    FORCE, LOCK, LOCKDELAY


    [Prev: LOCKMETHOD][Resources][TOC][Next: MAILTO]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fieldstore.html0000644004705000001440000001200312332046111021146 0ustar ehoodusers MHonArc Resources: FIELDSTORE
    [Prev: FIELDSEND][Resources][TOC][Next: FIELDSTYLES]

    FIELDSTORE


    Syntax

    Envariable

    N/A

    Element

    <FIELDSTORE>
    field-name
    field-name
    ...
    </FIELDSTORE>

    Command-line Option

    N/A


    Description

    FIELDSTORE specifies the additional message header fields to store in the database. Header fields stored can be retrieved via the $MSGHFIELD$ resource variable.

    Each line of the FIELDSTORE element is the exact case-insensitive name of a message header field to store. If a field occurs multiple times in a message header, then all values for the field are concatenated when stored.

    If a field name is an address field, then the resources ADDRESSMODIFYCODE, MAILTO, MAILTOURL, and SPAMMODE apply to the value when referenced by the $MSGHFIELD$ resource variable.


    Default Setting

    Nil


    Resource Variables

    N/A


    Examples

    MHonArc already stores some message header information (e.g. Subject, Date, From, and Message-Id) and provides resource variables to access the information (e.g. $SUBJECT$, $DATE$, $FROM$, and $MSGID$, respectively). But it is sometimes useful to capture fields like To or Cc for use in page layout.

    The following resource settings capture the To and Cc fields and then displays the information in the main index:

    <FieldStore>
    to
    cc
    </FieldStore>
    
    <LiTemplate>
    <li><strong>$SUBJECT$</strong>
    <ul>
        <li><em>To</em>: $MSGHFIELD(CUR;to)$</li>
        <li><em>Cc</em>: $MSGHFIELD(CUR;cc)$</li>
    </ul>
    </li>
    </LiTemplate>
    

    Version

    2.6.0


    See Also

    ADDRESSMODIFYCODE, MAILTO, MAILTOURL, SPAMMODE


    [Prev: FIELDSEND][Resources][TOC][Next: FIELDSTYLES]

    $Date: 2004/03/15 21:07:18 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/toplinks.html0000644004705000001440000003271612332046112020667 0ustar ehoodusers MHonArc Resources: TOPLINKS
    [Prev: TNEXTTOPLINKIA][Resources][TOC][Next: TPREVBUTTON]

    TOPLINKS


    Syntax

    Envariable

    N/A

    Element

    <TOPLINKS>
    markup ...
    </TOPLINKS>

    Command-line Option

    N/A


    Description

    TOPLINKS defines the markup for the navigational links at the top of a message page. Its usage is analagous to the BOTLINKS resource, but tends to be terser. However, you can define the resource anyway you desire.


    Default Setting

    The following represents the default setting when there are main and thread indexes. References to either index will not show up if either index does not exist.

    <TopLinks>
    <hr>
    $BUTTON(PREV)$$BUTTON(NEXT)$$BUTTON(TPREV)$$BUTTON(TNEXT)$[<a
    href="$IDXFNAME$#$MSGNUM$">Date Index</a>][<a
    href="$TIDXFNAME$#$MSGNUM$">Thread Index</a>]
    </TopLinks>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows an example of using button icons for links to the index pages:

    <TopLinks>
    <hr>
    $BUTTON(PREV)$$BUTTON(NEXT)$$BUTTON(TPREV)$$BUTTON(TNEXT)$<a
    href="$IDXFNAME$#$MSGNUM$"><img
    src="dateidx.png" alt="[Date Index]"></a><a
    href="$TIDXFNAME$#$MSGNUM$"><img
    src="thrdidx.png" alt="[Thread Index]"></a>]
    </TopLinks>
    

    Version

    1.2


    See Also

    BOTLINKS, IDXFNAME, NEXTBUTTON, PREVBUTTON, TIDXFNAME, TNEXTBUTTON, TPREVBUTTON


    [Prev: TNEXTTOPLINKIA][Resources][TOC][Next: TPREVBUTTON]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/nextbutton.html0000644004705000001440000003143012332046111021225 0ustar ehoodusers MHonArc Resources: NEXTBUTTON
    [Prev: NEWSURL][Resources][TOC][Next: NEXTBUTTONIA]

    NEXTBUTTON


    Syntax

    Envariable

    N/A

    Element

    <NEXTBUTTON>
    markup ...
    </NEXTBUTTON>

    Command-line Option

    N/A


    Description

    NEXTBUTTON defines the value of the $BUTTON(NEXT)$ resource when a message has a successor. That is, if the main index message list lists a message after the current message, $BUTTON(NEXT)$ will take on the value of NEXTBUTTON. If a next message doesn't exist, the NEXTBUTTONIA value will be used instead.


    Default Setting

    <NextButton chop>
    [<a href="$MSG(NEXT)$">Date Next</a>]
    </NextButton>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows how an button image can be used for linking to the next message in an archive:

    <NextButton chop>
    <a href="$MSG(NEXT)$"><img src="next.png" alt="[Date Next]"></a>
    </NextButton>
    

    Version

    1.2


    See Also

    NEXTBUTTONIA, PREVBUTTON, PREVBUTTONIA, TNEXTBUTTON, TNEXTBUTTONIA, TOPLINKS


    [Prev: NEWSURL][Resources][TOC][Next: NEXTBUTTONIA]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/weekdays.html0000644004705000001440000000731112332046112020631 0ustar ehoodusers MHonArc Resources: WEEKDAYS
    [Prev: VARREGEX][Resources][TOC][Next: WEEKDAYSABR]

    WEEKDAYS


    Syntax

    Envariable

    M2H_WEEKDAYS=day1:day2:...:day7

    Element

    <WEEKDAYS>
    day1:day2:...:day7
    </WEEKDAYS>

    Command-line Option

    -weekdays day1:day2:...:day7


    Description

    The WEEKDAYS resource defines the names for the days of the week. You can set this resource to redefine weekday names to reflect a particular locale for the GMTDATEFMT and LOCALDATEFMT resources. When setting this resource, make sure to define all 7 days.


    Default Setting

    Sunday:Monday:Tuesday:Wednesday:Thursday:Friday:Saturday
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    GMTDATEFMT, LOCALDATEFMT, MONTHS, MONTHSABR, WEEKDAYSABR


    [Prev: VARREGEX][Resources][TOC][Next: WEEKDAYSABR]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/printxcomments.html0000644004705000001440000001072512332046111022111 0ustar ehoodusers MHonArc Resources: PRINTXCOMMENTS
    [Prev: PREVPGLINKIA][Resources][TOC][Next: QUIET]

    PRINTXCOMMENTS


    Syntax

    Envariable

    M2H_PRINTXCOMMENTS= [ 0 | 1 ]

    Element

    <PRINTXCOMMENTS>
    <NOPRINTXCOMMENTS>

    Command-line Option

    -printxcomments
    -noprintxcomments


    Description

    PRINTXCOMMENTS determines if special comment declarations are included in archive messages pages. For each message page file, something like the following appears at the beginning:

    <!--X-Subject: Hello World! -->
    <!--X-From-R13: rneyNrneyubbq.pbz -->
    <!--X-Date: Sun May 23 18:35:25 EDT 1999 -->
    <!--X-Message-Id: asdjf21kasdla2j.121asdlk@example.com -->
    <!--X-Content-Type: text/plain -->
    

    Normally, these "X" comments are for informative purposes only and are not required by mhonarc to perform archive operations.

    However, the comments can provide important functionality in some cases, for example:

    • When mha-dbrecover is used: mha-dbrecover uses X comments to reconstruct an archive database file from archive message pages.

    • Meta-fields for search indexers: Search engines that provide media-type-aware indexing (like Namazu) can key off the X comments when MHonArc message pages are indexed.

    If PRINTXCOMMENTS is disabled, X comments will not be printed.

    NOTE:

    Some X comments — which are intermixed with message page content — will always be printed, even if PRINTXCOMMENTS is disabled. These X comments are critical for performing archive updates.


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.6.14


    See Also


    [Prev: PREVPGLINKIA][Resources][TOC][Next: QUIET]

    $Date: 2005/07/08 06:34:02 $
    MHonArc
    Copyright © 2005, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/multipg.html0000644004705000001440000000663612332046111020506 0ustar ehoodusers MHonArc Resources: MULTIPG
    [Prev: MSGSEP][Resources][TOC][Next: NEWS]

    MULTIPG


    Syntax

    Envariable

    M2H_MULTIPG=[ 0 | 1 ]

    Element(s)

    <MULTIPG>
    <NOMULTIPG>

    Command-line Option(s)

    -multipg
    -nomultipg


    Description

    When MULTIPG is set, MHonArc will break up the indexes into muliple pages with each page containing IDXSIZE messages. If IDXSIZE is not set to a finite value, then MULTIPG is shut off.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    IDXSIZE, NEXTPGLINK, NEXTPGLINKIA, PREVPGLINK, PREVPGLINKIA, TNEXTPGLINK, TNEXTPGLINKIA, TPREVPGLINK, TPREVPGLINKIA


    [Prev: MSGSEP][Resources][TOC][Next: NEWS]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/listend.html0000644004705000001440000001710512332046111020460 0ustar ehoodusers MHonArc Resources: LISTEND
    [Prev: LISTBEGIN][Resources][TOC][Next: LITEMPLATE]

    LISTEND


    Syntax

    Envariable

    N/A

    Element

    <LISTEND>
    markup ...
    </LISTEND>

    Command-line Option

    N/A


    Description

    The LISTEND resource specifies the markup to end the message list in the main index. This resource works in conjuction with LISTBEGIN and LITEMPLATE resources to format the main index page(es).


    Default Setting

    <ListEnd>
    </ul>
    </ListEnd>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None.


    Version

    1.0


    See Also

    LISTBEGIN, LITEMPLATE


    [Prev: LISTBEGIN][Resources][TOC][Next: LITEMPLATE]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsubjectbeg.html0000644004705000001440000000710012332046112021312 0ustar ehoodusers MHonArc Resources: TSUBJECTBEG
    [Prev: TSORT][Resources][TOC][Next: TSUBJECTEND]

    TSUBJECTBEG


    Syntax

    Envariable

    N/A

    Element

    <TSUBJECTBEG>
    markup ...
    </TSUBJECTBEG>

    Command-line Option

    N/A


    Description

    TSUBJECTBEG defines the markup to include before a subject based thread listing. I.e. It allows you to insert some text in the thread index to signal the reader that the following messages after the text were included in the thread by subject text and not explicit message ID references.


    Default Setting

    <TSubjectBeg>
    <li>&lt;Possible follow-up(s)&gt;</li>
    </TSubjectBeg>
    

    Resource Variables

    N/A


    Examples

    You may not care if messages are in a thread based upon message ID references or subject text, therefore, just define TSUBJECTBEG to be blank:

    <TSubjectBeg>
    
    </TSubjectBeg>
    

    Note the blank line between the open and close tags.


    Version

    2.0


    See Also

    TSUBJECTEND

    Page Layout


    [Prev: TSORT][Resources][TOC][Next: TSUBJECTEND]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/stdout.html0000644004705000001440000000664712332046111020351 0ustar ehoodusers MHonArc Resources: STDOUT
    [Prev: STDIN][Resources][TOC][Next: SUBJECTARTICLERXP]

    STDOUT


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -stdout filename


    Description

    STDOUT can be used to have all output that would go standard output to a specified file. Output that goes to standard output are informational/status messages, or in the case of SINGLE, the converted mail message. If the filename specified already exists, any standard output data generated will be appended to filename.

    Note, most system shells (Unix) provide the ability to redirect standard output to a file. STDOUT is provided where such functionality is not available or easy to achieve.


    Default Setting

    The default location of standard output, which is normally the terminal.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.0


    See Also

    STDERR, STDIN


    [Prev: STDIN][Resources][TOC][Next: SUBJECTARTICLERXP]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tlevels.html0000644004705000001440000000630012332046112020470 0ustar ehoodusers MHonArc Resources: TLEVELS
    [Prev: TLASTPGLINK][Resources][TOC][Next: TLIEND]

    TLEVELS


    Syntax

    Envariable

    M2H_TLEVELS=number

    Element

    <TLEVELS>
    number
    </TLEVELS>

    Command-line Option

    -tlevels number


    Description

    TLEVELS defines the maximum number of nested listings in a thread index. Any threads that go over TLEVELS in depth are flattened to the value of TLEVELS. This resource is helpful in preventing huge indentations in deep threads which may cause text to be squished on the right-side of an HTML viewer.


    Default Setting

    3


    Resource Variables

    N/A


    Examples

    None


    Version

    1.1.0


    See Also

    TSLICELEVELS


    [Prev: TLASTPGLINK][Resources][TOC][Next: TLIEND]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/daybegin.html0000644004705000001440000003102312332046111020573 0ustar ehoodusers MHonArc Resources: DAYBEGIN
    [Prev: DATEFIELDS][Resources][TOC][Next: DAYEND]

    DAYBEGIN


    Syntax

    Envariable

    N/A

    Element

    <DAYBEGIN>
    markup ...
    </DAYBEGIN>

    Command-line Option

    N/A


    Description

    DAYBEGIN defines the beginning markup of a day group in the main index if the SORT reosource is set. A day group is a group of messages all from the same day.

    Any message related resource variables available for the DAYBEGIN evaluate based on information from the first message in the group.


    Default Setting

    Nil.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following example resource settings cause the main index to be sorted by date. The listing will contain each different day followed by a sub-listing of the messages for that day:

    <Sort>
    <MsgGMTDateFmt>
    %B %d, %Y
    </MsgGMTDateFmt>
    
    <DayBegin>
    <li><strong>$MSGGMTDATE$</strong>
    <ul>
    </DayBegin>
    
    <DayEnd>
    </ul></li>
    </DayEnd>
    
    <LITemplate>
    <li>$SUBJECT$, $FROMNAME$</li>
    </LITemplate>
    

    Version

    2.0


    See Also

    DAYEND, SORT, USELOCALTIME


    [Prev: DATEFIELDS][Resources][TOC][Next: DAYEND]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/headbodysep.html0000644004705000001440000002761612332046111021315 0ustar ehoodusers MHonArc Resources: HEADBODYSEP
    [Prev: GZIPLINKS][Resources][TOC][Next: HTMLEXT]

    HEADBODYSEP


    Syntax

    Envariable

    N/A

    Element

    <HEADBODYSEP>
    markup
    </HEADBODYSEP>

    Command-line Option

    N/A


    Description

    HEADBODYSEP defines the markup between the message header and the message body.


    Default Setting

    <hr>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.0


    See Also

    EDITIDX


    [Prev: GZIPLINKS][Resources][TOC][Next: HTMLEXT]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/subjectthreads.html0000644004705000001440000000715712332046111022036 0ustar ehoodusers MHonArc Resources: SUBJECTTHREADS
    [Prev: SUBJECTSTRIPCODE][Resources][TOC][Next: SUBSORT]

    SUBJECTTHREADS


    Syntax

    Envariable

    M2H_SUBJECTTHREADS=[ 0 | 1 ]

    Element

    <SUBJECTTHREADS>
    <NOSUBJECTTHREADS>

    Command-line Option

    -subjectthreads
    -nosubjectthreads


    Description

    SUBJECTTHREADS determines if MHonArc will examine message subjects for detecting message threads. It is still common for mail composition software to not include a message-id reference when a user replies to a message. When SUBJECTTHREADS is active, after checking for message-id references, MHonArc will then look for messages with the same subjects and group them into the same thread. Subject thread groups are contained by the TSUBJECTBEG and TSUBJECTEND of the thread index.


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.0


    See Also

    SUBJECTREPLYRXP, TSUBJECTBEG, TSUBJECTEND


    [Prev: SUBJECTSTRIPCODE][Resources][TOC][Next: SUBSORT]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/docurl.html0000644004705000001440000000604112332046111020303 0ustar ehoodusers MHonArc Resources: DOCURL
    [Prev: DOC][Resources][TOC][Next: EDITIDX]

    DOCURL


    Syntax

    Envariable

    M2H_DOCURL=URL

    Element

    <DOCURL>
    URL
    </DOCURL>

    Command-line Option

    -docurl URL


    Description

    DOCURL defines the URL to the MHonArc documentation. The value of DOCURL can be accessed by the $DOCURL$ resource variable when defining resource values.


    Default Setting

    http://www.mhonarc.org/


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    DOC


    [Prev: DOC][Resources][TOC][Next: EDITIDX]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/subjectreplyrxp.html0000644004705000001440000000757612332046111022276 0ustar ehoodusers MHonArc Resources: SUBJECTREPLYRXP
    [Prev: SUBJECTHEADER][Resources][TOC][Next: SUBJECTSTRIPCODE]

    SUBJECTREPLYRXP


    Syntax

    Envariable

    M2H_SUBJECTREPLYRXP=perl_regex

    Element

    <SUBJECTREPLYRXP>
    perl_regex
    </SUBJECTREPLYRXP>

    Command-line Option

    -subjectreplyrxp perl_regex


    Description

    SUBJECTREPLYRXP defines the Perl regular expression matching subject text that denotes a reply message. For example, the string "Re: " is commonly prepended to the subject to denote a reply.

    SUBJECTREPLYRXP is used by MHonArc for sorting and threading purposes. The regex defined is used in s/// operation loops with the case-insensitive modifier. Hence, the regex should eventually fail if called repeatedly on the same string in an s/// operation. If not, an infinite loop will result. In sum, SUBJECTREPLYRXP should NOT be able to match the null string. Also, the regex should be anchored to the beginning of the string.

    The SUBJECTREPLYRXP is normally changed to suit a particular locale or if unusual notations are being used to denote replies.


    Default Setting

    ^\s*(re|sv|fwd|fw)[\[\]\d]*[:>-]+\s*
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.2.0


    See Also

    SUBJECTARTICLERXP


    [Prev: SUBJECTHEADER][Resources][TOC][Next: SUBJECTSTRIPCODE]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/include.html0000644004705000001440000000710212332046111020435 0ustar ehoodusers MHonArc Resources: INCLUDE
    [Prev: IDXSIZE][Resources][TOC][Next: KEEPONRMM]

    INCLUDE


    Syntax

    Envariable

    N/A

    Element

    <INCLUDE>
    filename
    ...
    </INCLUDE>

    Command-line Option

    N/A


    Description

    The INCLUDE resource is only applicable in the resource file. It specifies other resource files to include at the location of the INCLUDE element that lists the files. When including multiple files in an INCLUDE element, each file must be listed on a separate line.

    Multiple INCLUDE elements can be defined in a resource file for including files at different locations.


    Default Setting

    N/A


    Resource Variables

    N/A


    Examples

    If managing multiple archives, it is common to have common resource settings for the archives. With the INCLUDE resource, you define these common resources in a single file, and have each archive resource file include it. For example:

    <Include>
    /usr/local/lib/MHonArc/common.mrc
    </Include>
    

    Version

    2.0


    See Also

    RCFILE


    [Prev: IDXSIZE][Resources][TOC][Next: KEEPONRMM]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/textclipfunc.html0000644004705000001440000001645512332046112021536 0ustar ehoodusers MHonArc Resources: TEXTCLIPFUNC
    [Prev: TENDLINKIA][Resources][TOC][Next: TEXTENCODE]

    TEXTCLIPFUNC


    Syntax

    Envariable

    N/A

    Element

    <TEXTCLIPFUNC>
    function_name;source_file
    </TEXTCLIPFUNC>

    Command-line Option

    N/A


    Description

    TEXTCLIPFUNC defines the the Perl function to invoke when MHonArc clips text. For example, the function specified would be invoked when a length specifier is used for a resource variable, e.g. $SUBJECTNA:72$.

    The syntax for TEXTCLIPFUNC is as follows:

    routine-name;file-of-routine

    The definition of each semi-colon-separated value is as follows:

    routine-name

    The actual routine name of the filter. The name should be fully qualified by the package it is defined in (e.g. "mypackage::filter").

    file-of-routine

    The name of the file that defines routine-name. If the file is not a full pathname, MHonArc finds the file by looking in the standard include paths of Perl, and the paths specified by the PERLINC resource.

    file-of-routine can be left blank if it is known that routine-name will already be loaded, as is the case for the default value for this resource since the routine is an internal MHonArc function.

    Writing a Clipping Function

    If you want to write your own function, you need to know the Perl programming language. The following information assumes you know Perl.

    Function Interface

    MHonArc interfaces with text clipping function by calling the routine with a specific set of arguments. The prototype of the interface routine is as follows:

    sub clip {
        my($text, $clip_length, $is_html, $has_tags) = @_;
        # code here
    }
    
    Parameter Descriptions
    $text

    The text to be clipped.

    NOTE: Since Perl allows one to modify the data passed into it, the first argument should NOT be modified. If you copy arguments from @_ as shown above, then you will be okay since the my operation creates a copy of the arguments in @_.

    $clip_length

    The number of characters $text should be clipped to.

    $is_html

    The text may contain entity references, e.g. "&amp;". Entity references should be considered a single character when clipping $text.

    $has_tags

    The text may contain HTML tags, and the tags should be stripped from $text when generating the clip string. For example, if $text equals "<b>MHonArc</b>" and $clip_length equals 2, then the return value of the function should be "MH".

    NOTE

    The $has_tags argument is currently not used within MHonArc, but it will likely be used in a future release.

    Return Value

    The return value should be the clipped version of $text.

    Writing Tips

    • Qualify your filter in its own package. This eliminates possible variable/routine conflicts with MHonArc.

    • Make sure your Perl source file ends with a true statement (like "1;"). MHonArc just performs a require on the file, and if the file does not return true, MHonArc will revert to the default value for TEXTCLIPFUNC.

    • Test your function before production use.


    Default Setting

    mhonarc::clip_text;
    

    Resource Variables

    N/A


    Examples

    See CHARSETCONVERTERS and TEXTENCODE resources for example usages of TEXTCLIPFUNC.

    The utf-8.mrc example resource file sets TEXTCLIPFUNC to a routine that understands UTF-8 text.


    Version

    2.5.10


    See Also

    CHARSETCONVERTERS, TEXTENCODE

    Resource Variables


    [Prev: TENDLINKIA][Resources][TOC][Next: TEXTENCODE]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextlinkia.html0000644004705000001440000003041712332046112021352 0ustar ehoodusers MHonArc Resources: TNEXTLINKIA
    [Prev: TNEXTLINK][Resources][TOC][Next: TNEXTPGLINK]

    TNEXTLINKIA


    Syntax

    Envariable

    N/A

    Element

    <TNEXTLINKIA>
    markup ...
    </TNEXTLINKIA>

    Command-line Option

    N/A


    Description

    TNEXTLINKIA defines the value for the $LINK(TNEXT)$ resource variable when there is no next message to the current message according to the message list order of the thread index.

    See the TNEXTLINK for defining the value of $LINK(TNEXT)$ when there is a next message.


    Default Setting

    Nil


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.0


    See Also

    BOTLINKS, TNEXTLINK, TPREVLINK, TPREVLINKIA


    [Prev: TNEXTLINK][Resources][TOC][Next: TNEXTPGLINK]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/ttopbegin.html0000644004705000001440000003500512332046112021011 0ustar ehoodusers MHonArc Resources: TTOPBEGIN
    [Prev: TTITLE][Resources][TOC][Next: TTOPBUTTON]

    TTOPBEGIN


    Syntax

    Envariable

    N/A

    Element

    <TTOPBEGIN>
    markup ...
    </TTOPBEGIN>

    Command-line Option

    N/A


    Description

    TTOPBEGIN defines the markup for the root, or start, of a thread. TTOPBEGIN should define any starting markup for the thread and markup for the root message of the thread.


    Default Setting

    <TTopBegin>
    <li><strong>$SUBJECT$</strong>,
    <em>$FROMNAME$</em>
    </TTopBegin>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    MHonArc has several resources for customizing thread page layout. Therefore the following shows a way to customize the layout using the various thread resource available.

    For this example, The thread index is setup where a thread will have the subject in bold at the top of the thread and the names of the authors of the messages in the thread will be hyperlinked to the actual message. Nested unordered lists are used to provide a visual cue of the depths of the thread. Unique messages are show in normal text.

    <!--    TTOPBEGIN is the markup for the beginning of a thread, and the
            first message in a thread.
      -->
    <TTOPBEGIN>
    <p>
    <li><a $A_NAME$><strong>$SUBJECTNA$</strong></a><br>
    <a $A_HREF$>$FROMNAME$</a>
    </TTOPBEGIN>
     
    <!--    TTOPEND is the markup for closing a main thread.
      -->
    <TTOPEND>
    </li>
    </p>
    </TTOPEND>
     
    <!--    TLITXT is the markup for a message *within* a thread
      -->
    <TLITXT>
    <li><a $A_ATTR$>$FROMNAME$</a>
    </TLITXT>
     
    <TLIEND>
    </li>
    </TLIEND>
     
    <!--    TSINGLETXT is the markup for a message not in a thread.  I.e.
            it does not start a thread or is part of a thread.
      -->
    <TSINGLETXT>
    <li><a $A_NAME$>$SUBJECTNA$</a>,
    <a $A_HREF$>$FROMNAME$</a>
    </li>
    </TSINGLETXT>
     
    <!--    TSUBJECTBEG is any markup at the beginning of a sub-thread that
            is based on the subject of the message.  We just put in a
    	comment declaration so the reader will see nothing.
      -->
    <TSUBJECTBEG>
    <!-- Possible follow-ups -->
    </TSUBJECTBEG>
    

    An item to note is how the example includes the proper resource variables, $A_NAME$ and $A_ATTR$, to allow the index hyperlinks in messages to behave properly.


    Version

    2.0


    See Also

    TLITXT, TSINGLETXT, TSUBJECTBEG, TTOPEND

    Page Layout


    [Prev: TTITLE][Resources][TOC][Next: TTOPBUTTON]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/dayend.html0000644004705000001440000000571312332046111020264 0ustar ehoodusers MHonArc Resources: DAYEND
    [Prev: DAYBEGIN][Resources][TOC][Next: DBFILE]

    DAYEND


    Syntax

    Envariable

    N/A

    Element

    <DAYEND>
    markup ...
    </DAYEND>

    Command-line Option

    N/A


    Description

    DAYEND defines the end markup of an day group in the main index if the SORT reosource is set.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    DAYBEGIN, SORT


    [Prev: DAYBEGIN][Resources][TOC][Next: DBFILE]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgprefix.html0000644004705000001440000000643212332046111021023 0ustar ehoodusers MHonArc Resources: MSGPREFIX
    [Prev: MSGPGSSMARKUP][Resources][TOC][Next: MSGSEP]

    MSGPREFIX


    Syntax

    Envariable

    M2H_MSGPREFIX=prefix

    Element

    <MSGPREFIX>
    prefix
    </MSGPREFIX>

    Command-line Option

    -msgprefix prefix


    Description

    MSGPREFIX defines the filename prefix for the converted messages.

    WARNING:

    The value for MSGPREFIX should not be changed after an archive is created. If you change the value of MSGPREFIX, MHonArc will not be able to properly update an archive.


    Default Setting

    msg


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.1.0


    See Also


    [Prev: MSGPGSSMARKUP][Resources][TOC][Next: MSGSEP]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/notedir.html0000644004705000001440000003212212332046111020456 0ustar ehoodusers MHonArc Resources: NOTEDIR
    [Prev: NOTE][Resources][TOC][Next: NOTEIA]

    NOTEDIR


    Syntax

    Envariable

    M2H_NOTEDIR=pathname

    Element

    <NOTEDIR>
    pathname
    </NOTEDIR>

    Command-line Option

    -notedir pathname


    Description

    NOTEDIR defines the directory location to store annotation data for messages. If NOTEDIR is a relative pathname, it is treated relative to OUTDIR. If NOTEDIR does not exist, MHonArc will attempt to create the directory when an annotation is added to a message.

    Each message's annotation is stored in a separate file within NOTEDIR. The filenames used for the annotations are the message-ids of the messages.

    NOTE

    This implies that your system supports long filenames. If your system does not, you cannot use the annotation facilities provided by MHonArc.

    Since message-ids are unique, it is possible to have a single notes directory for multiple archives. To do this, set NOTEDIR to the same absolute pathname for each archive. Having a shared location can be useful if you move or recreate archives (no need to re-annotate). Also, if the same message exists in multiple archives, the message will have the same annotation across the archives.

    MHonArc will assign message-ids to messages without message-ids. Therefore, annotations can be created for these message.


    Default Setting

    notes
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.3.0


    See Also

    ANNOTATE, NOTE


    [Prev: NOTE][Resources][TOC][Next: NOTEIA]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/scan.html0000644004705000001440000001454212332046111017744 0ustar ehoodusers MHonArc Resources: SCAN
    [Prev: SAVERESOURCES][Resources][TOC][Next: SINGLE]

    SCAN


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -scan


    Description

    When SCAN is specified, a text listing of the contents of the archive are outputed to standard out. Messages are listed in the order defined for the main index.


    Default Setting

    N/A


    Resource Variables

    N/A


    Examples

    The following example generates output in the order defined in the database of the archive:

    prompt> mhonarc -scan -outdir /home/ehood/html/archive
    Reading database ...
    117 messages in /home/ehood/html/archive:
     
    Msg #  YYYY/MM/DD  From             Subject                                    
    -----  ----------  ---------------  -------------------------------------------
       62  1996/07/30  Kwin Kramer      Reading STDIN not from keyboard -- or, Syst
       23  1996/07/31  Christopher M.   Re: Setting @INC to include my own modules 
        9  1996/08/01  Dan Kirkwood     object as hash key loses methods           
        2  1996/08/01  James F'jord Ly  Re: We're HIRING hot hackers!              
        1  1996/08/01  Christopher Cha  Curious Multi-Dimensional array behavior   
       14  1996/08/01  I R A Aggie      Re: Patch for arithmetic bug in 5.003 ?    
        3  1996/08/01  Bernard Bellon   Re: How do you grab a URL in perl?         
       38  1996/08/01  Mohammed Dewan   Help needed badly win3.1 and perl.         
       59  1996/08/01  Mohammed Dewan   Using file in perl.                        
        4  1996/08/01  Dan Gildor       Re: Threaded Discusion groups embeded in We
        5  1996/08/01  kendall shaw     addicted to emacs lisp                     
        6  1996/08/01  Ye He            Q: Sybase extension to Perl                
       83  1996/08/01  I R A Aggie      Re: Browser/Page matching CGI script       
        7  1996/08/01  Chris Schleiche  Re: Simple program looks good, but gives er
       13  1996/08/01  Steve McCullagh  Perl 5.002 and $| errors                   
    ...
    

    To get a listing that shows messages by number, do the following:

    prompt> mhonarc -scan -noreverse -nosort -outdir /home/ehood/html/archive
    Reading database ...
    117 messages in /home/ehood/html/archive:
     
    Msg #  YYYY/MM/DD  From             Subject                                    
    -----  ----------  ---------------  -------------------------------------------
        0  1996/08/02  Markus Spring    How to build a stack of associative arrays?
        1  1996/08/01  Christopher Cha  Curious Multi-Dimensional array behavior   
        2  1996/08/01  James F'jord Ly  Re: We're HIRING hot hackers!              
        3  1996/08/01  Bernard Bellon   Re: How do you grab a URL in perl?         
        4  1996/08/01  Dan Gildor       Re: Threaded Discusion groups embeded in We
        5  1996/08/01  kendall shaw     addicted to emacs lisp                     
        6  1996/08/01  Ye He            Q: Sybase extension to Perl                
        7  1996/08/01  Chris Schleiche  Re: Simple program looks good, but gives er
        8  1996/08/02  Paul             Re: Eric Herrmann's Sams.Net Teach Yourself
        9  1996/08/01  Dan Kirkwood     object as hash key loses methods           
       10  1996/08/02  Mike Stok        Re: I cannot rename files using rename.  I 
       11  1996/08/02  Elisabeth Freem  Re: current working directory              
       12  1996/08/02  Sren Maagaard   Re: Make an entire site searchable         
       13  1996/08/01  Steve McCullagh  Perl 5.002 and $| errors                   
       14  1996/08/01  I R A Aggie      Re: Patch for arithmetic bug in 5.003 ?    
       15  1996/08/02  Mike Stok        Re: More on -w  (was Re: Is this a known bu
    ...
    

    Version

    1.0


    See Also

    OUTDIR, REVERSE, SORT, SUBSORT


    [Prev: SAVERESOURCES][Resources][TOC][Next: SINGLE]

    $Date: 2005/05/13 00:00:36 $
    MHonArc
    Copyright © 1997-1998 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/charsetaliases.html0000644004705000001440000002331112332046111022005 0ustar ehoodusers MHonArc Resources: CHARSETALIASES
    [Prev: BOTLINKS][Resources][TOC][Next: CHARSETCONVERTERS]

    CHARSETALIASES


    Syntax

    Envariable

    N/A.

    Element

    <CHARSETALIASES>
    charset-name; alias, ...
    ...

    </CHARSETALIASES>

    Command-line Option

    N/A.


    Description

    CHARSETALIASES defines aliases for character set names. For example, the charset iso-8859-1 is also known by latin1. Hence, latin1 is an alias for iso-8859-1 and can be defined as follows:

    <CharsetAliases>
    iso-8859-1; latin1
    </CharsetAliases>
    

    Each line of the CHARSETALIASES element defines an alias definition. The syntax of an alias definition is as follows,

    charset-name; alias, ...
    

    i.e. the character set name followed by a semi-colon followed by a comma separated list of aliases.

    Specifying a character set multiple times is allowed. For example, the following are equivalent:

    <CharsetAliases>
    iso-8859-1; latin1, l1, iso_8859_1
    </CharsetAliases>
    
    <CharsetAliases>
    iso-8859-1; latin1
    iso-8859-1; l1
    iso-8859-1; iso_8859_1
    </CharsetAliases>
    

    If the same alias is specified for two different charsets, then the last one defined is use. For example, if the following is defined,

    <CharsetAliases>
    iso-8859-1; x-foo
    koi8-u; x-foo
    </CharsetAliases>
    

    then x-foo will be an alias for koi8-u.

    When MHonArc invokes CHARSETCONVERTERS filters, MHonArc maps aliases to real names before invoking the filters. Therefore, it is not necessary for a filter to know all possible names for a given character set.

    If the override attribute is specified for CHARSETALIASES, then any previous settings will be cleared. Otherwise, each occurance of CHARSETALIASES will augment existing settings.


    Default Setting

    <CharsetAliases>
    us-ascii;	    ascii
    us-ascii;	    ansi_x3.4-1968
    us-ascii;	    iso646
    us-ascii;	    iso646-us
    us-ascii;	    iso646.irv:1991
    us-ascii;	    cp367
    us-ascii;	    ibm367
    us-ascii;	    csascii
    us-ascii;	    iso-ir-6
    us-ascii;	    us
    iso-8859-1;	    latin1
    iso-8859-1;	    l1
    iso-8859-1;	    iso_8859_1
    iso-8859-1;	    iso_8859-1:1987
    iso-8859-1;	    iso8859-1
    iso-8859-1;	    iso8859_1
    iso-8859-1;	    8859-1
    iso-8859-1;	    8859_1
    iso-8859-1;	    cp819
    iso-8859-1;	    ibm819
    iso-8859-1;	    x-mac-latin1
    iso-8859-1;	    iso-ir-100
    iso-8859-2;	    latin2
    iso-8859-2;	    l2
    iso-8859-2;	    iso_8859_2
    iso-8859-2;	    iso_8859-2:1987
    iso-8859-2;	    iso8859-2
    iso-8859-2;	    iso8859_2
    iso-8859-2;	    8859-2
    iso-8859-2;	    8859_2
    iso-8859-2;	    iso-ir-101
    iso-8859-3;	    latin3
    iso-8859-3;	    l3
    iso-8859-3;	    iso_8859_3
    iso-8859-3;	    iso_8859-3:1988
    iso-8859-3;	    iso8859-3
    iso-8859-3;	    iso8859_3
    iso-8859-3;	    8859-3
    iso-8859-3;	    8859_3
    iso-8859-3;	    iso-ir-109
    iso-8859-4;	    latin4
    iso-8859-4;	    l4
    iso-8859-4;	    iso_8859_4
    iso-8859-4;	    iso_8859-4:1988
    iso-8859-4;	    iso8859-4
    iso-8859-4;	    iso8859_4
    iso-8859-4;	    8859-4
    iso-8859-4;	    8859_4
    iso-8859-4;	    iso-ir-110
    iso-8859-5;	    iso_8859-5:1988
    iso-8859-5;	    cyrillic
    iso-8859-5;	    iso-ir-144
    iso-8859-6;	    iso_8859-6:1987
    iso-8859-6;	    arabic
    iso-8859-6;	    asmo-708
    iso-8859-6;	    ecma-114
    iso-8859-6;	    iso-ir-127
    iso-8859-7;	    iso_8859-7:1987
    iso-8859-7;	    greek
    iso-8859-7;	    greek8
    iso-8859-7;	    ecma-118
    iso-8859-7;	    elot_928
    iso-8859-7;	    iso-ir-126
    iso-8859-8;	    iso-8859-8-i
    iso-8859-8;	    iso_8859-8:1988
    iso-8859-8;	    hebrew
    iso-8859-8;	    iso-ir-138
    iso-8859-9;	    latin5
    iso-8859-9;	    l5
    iso-8859-9;	    iso_8859_9
    iso-8859-9;	    iso-8859_9:1989
    iso-8859-9;	    iso8859-9
    iso-8859-9;	    iso8859_9
    iso-8859-9;	    8859-9
    iso-8859-9;	    8859_9
    iso-8859-9;	    iso-ir-148
    iso-8859-10;	    latin6
    iso-8859-10;	    l6
    iso-8859-10;	    iso_8859_10
    iso-8859-10;	    iso_8859-10:1993
    iso-8859-10;	    iso8859-10
    iso-8859-10;	    iso8859_10
    iso-8859-10;	    8859-10
    iso-8859-10;	    8859_10
    iso-8859-10;	    iso-ir-157
    iso-8859-13;	    latin7 ,l7
    iso-8859-14;	    latin8 ,l8
    iso-8859-15;	    latin9
    iso-8859-15;	    latin0
    iso-8859-15;	    l9
    iso-8859-15;	    l0
    iso-8859-15;	    iso_8859_15
    iso-8859-15;	    iso8859-15
    iso-8859-15;	    iso8859_15
    iso-8859-15;	    8859-15
    iso-8859-15;	    8859_15
    iso-2022-jp;	    iso-2022-jp-1
    utf-8;		    utf8
    cp932;		    shiftjis
    cp932;		    shift_jis
    cp932;		    shift-jis
    cp932;		    x-sjis
    cp932;		    ms_kanji
    cp932;		    csshiftjis
    cp936;		    gbk
    cp936;		    ms936
    cp936;		    windows-936
    cp949:		    euc-kr
    cp949:		    ks_c_5601-1987
    cp949:		    ks_c_5601-1989
    cp949:		    ksc_5601
    cp949:		    iso-ir-149
    cp949:		    windows-949
    cp949:		    ms949
    cp949:		    korean
    cp950;		    windows-950
    cp1250;		    windows-1250
    cp1251;		    windows-1251
    cp1252;		    windows-1252
    cp1253;		    windows-1253
    cp1254;		    windows-1254
    cp1255;		    windows-1255
    cp1256;		    windows-1256
    cp1257;		    windows-1257
    cp1258;		    windows-1258
    koi-0;		    gost-13052
    koi8-e;		    iso-ir-111
    koi8-e;		    ecma-113:1986
    koi8-r;		    cp878
    gost-19768-87;	    ecma-cyrillic
    gost-19768-87;	    ecma-113
    gost-19768-87;	    ecma-113:1988
    big5-eten;	    big5
    big5-eten;	    csbig5
    big5-eten;	    tcs-big5
    big5-eten;	    tcsbig5
    big5-hkscs;	    big5hk
    big5-hkscs;	    big5hkscs
    big5-hkscs;	    hkscs-big5
    big5-hkscs;	    hk-big5
    gb2312;		    gb_2312-80
    gb2312;		    csgb2312
    gb2312;		    hz-gb-2312
    gb2312;		    iso-ir-58
    gb2312;		    euc-cn
    gb2312;		    chinese
    gb2312;		    csiso58gb231280
    macarabic;          apple-arabic
    maccentraleurroman; apple-centeuro
    maccroatian;        apple-croatian
    maccyrillic;        apple-cyrillic
    macgreek;           apple-greek
    machebrew;          apple-hebrew
    macicelandic;       apple-iceland
    macromanian;        apple-romanian
    macroman;           apple-roman
    macthai;            apple-thai
    macturkish;         apple-turkish
    macarabic;          x-mac-arabic
    maccentraleurroman; x-mac-centraleurroman
    maccroatian;        x-mac-croatian
    maccyrillic;        x-mac-cyrillic
    macgreek;           x-mac-greek
    machebrew;          x-mac-hebrew
    macicelandic;       x-mac-icelandic
    macromanian;        x-mac-romanian
    macroman;           x-mac-roman
    macthai;            x-mac-thai
    macturkish;         x-mac-turkish
    </CharsetAliases>
    

    Resource Variables

    N/A


    Examples

    CHARSETALIASES is generally useful for resolving "unknown charset" warnings that MHonArc generates since some MUAs can specify non-standard names for charsets.

    Another use is to fool MHonArc into thinking that data labeled with one charset is actual data in another charset. For example, in some locales, MUAs improperly set the charset="..." parameter in text messages. CHARSETALIASES can be used to tell MHonArc to treat the improperly labeled data in another charset during conversion. For example,

    <CharsetAliases>
    iso-8859-8; us-ascii
    </CharsetAliases>
    

    tells MHonArc to treat US-ASCII data as Hebrew.


    Version

    2.6.0


    See Also

    CHARSETCONVERTERS


    [Prev: BOTLINKS][Resources][TOC][Next: CHARSETCONVERTERS]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/checknoarchive.html0000644004705000001440000000666012332046111021776 0ustar ehoodusers MHonArc Resources: CHECKNOARCHIVE
    [Prev: CHARSETCONVERTERS][Resources][TOC][Next: CONLEN]

    CHECKNOARCHIVE


    Syntax

    Envariable

    M2H_CHECKNOARCHIVE=[ 0 | 1 ]

    Element

    <CHECKNOARCHIVE>
    <NOCHECKNOARCHIVE>

    Command-line Option

    -checknoarchive
    -nochecknoarchive


    Description

    If CHECKNOARCHIVE is set, MHonArc will check each message for the "no archive" flag. If present, MHonArc will not add the message to the archive. MHonArc looks for one of the following in a message header to determine if message should not be archived:

        X-no-archive: yes
        Restrict: no-external-archive
    

    If either header field is present with the given value, and CHECKNOARCHIVE is set, MHonArc will skip the message.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.0


    See Also

    MSGEXCFILTER


    [Prev: CHARSETCONVERTERS][Resources][TOC][Next: CONLEN]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextbutton.html0000644004705000001440000003126512332046112021420 0ustar ehoodusers MHonArc Resources: TNEXTBUTTON
    [Prev: TLITXT][Resources][TOC][Next: TNEXTBUTTONIA]

    TNEXTBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TNEXTBUTTON>
    markup ...
    </TNEXTBUTTON>

    Command-line Option

    N/A


    Description

    TNEXTBUTTON defines the value for the $BUTTON(TNEXT)$ resource variable when there is a next message to the current message according to the message list order of the thread index. See the TNEXTBUTTONIA for defining the value of $BUTTON(TNEXT)$ when there is no next message.


    Default Setting

    <TNextButton chop>
    [<a href="$MSG(TNEXT)$">Thread Next</a>]
    </TNextButton>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows how an button image can be used for linking to the next message in an archive:

    <TNextButton chop>
    <a href="$MSG(TNEXT)$"><img src="tnext.png" alt="[Thread Next]"></a>
    </TNextButton>
    

    Version

    2.0


    See Also

    TNEXTBUTTONIA, TOPLINKS, TPREVBUTTON, TPREVBUTTONIA


    [Prev: TLITXT][Resources][TOC][Next: TNEXTBUTTONIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/authorend.html0000644004705000001440000000601412332046111021004 0ustar ehoodusers MHonArc Resources: AUTHOREND
    [Prev: AUTHORBEGIN][Resources][TOC][Next: AUTHSORT]

    AUTHOREND


    Syntax

    Envariable

    N/A

    Element

    <AUTHOREND>
    markup ...
    </AUTHOREND>

    Command-line Option

    N/A


    Description

    AUTHOREND defines the end markup of an author group in the main index if the AUTHSORT reosource is set.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    AUTHORBEGIN, AUTHSORT


    [Prev: AUTHORBEGIN][Resources][TOC][Next: AUTHSORT]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mhpattern.html0000644004705000001440000000672012332046111021021 0ustar ehoodusers MHonArc Resources: MHPATTERN
    [Prev: MAXSIZE][Resources][TOC][Next: MIMEALTPREFS]

    MHPATTERN


    Syntax

    Envariable

    M2H_MHPATTERN=Perl-regexp

    Element

    <MHPATTERN>
    Perl-regexp
    </MHPATTERN>

    Command-line Option

    -mhpattern Perl-regexp


    Description

    MHPATTERN defines the Perl regular expression to use for matching message files in an MH mail folder. In general, MHPATTERN allows you to tell MHonArc which message files to read when a specified mail folder is a directory.


    Default Setting

    ^\d+$
    

    Resource Variables

    N/A


    Examples

    The following example shows how you can tell MHonArc to process every non-dotfile in a directory:

        % mhonarc -add -mhpattern '^[^\.]' msgdir
    

    Remember, each file in msgdir must be a single mail message.

    Be careful in that the regexp you define does not match "." and "..".


    Version

    2.0


    See Also


    [Prev: MAXSIZE][Resources][TOC][Next: MIMEALTPREFS]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevinlinkia.html0000644004705000001440000003017512332046112021700 0ustar ehoodusers MHonArc Resources: TPREVINLINKIA
    [Prev: TPREVINLINK][Resources][TOC][Next: TPREVLINK]

    TPREVINLINKIA


    Syntax

    Envariable

    N/A

    Element

    <TPREVINLINKIA>
    markup
    </TPREVINLINKIA>

    Command-line Option

    N/A


    Description

    TPREVINLINKIA defines the replacement markup for the resource variable $LINK(TPREVIN)$ when there is no previous message from the current message within a discussion thread. See TPREVINLINK for the replacement markup used with there is a previoud message.


    Default Setting

    Nil.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TPREVINLINK


    [Prev: TPREVINLINK][Resources][TOC][Next: TPREVLINK]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/definederived.html0000644004705000001440000003457512332046111021625 0ustar ehoodusers MHonArc Resources: DEFINEDERIVED
    [Prev: DEFCHARSET][Resources][TOC][Next: DEFINEVAR]

    DEFINEDERIVED


    Syntax

    Envariable

    N/A

    Element

    <DEFINEDERIVED>
    filename
    file contents ...
    </DEFINEDERIVED>

    Command-line Option

    N/A


    Description

    DEFINEDERIVED is used to define extra files that are generated for each message processed. DEFINEDERIVED can only be specified in a resource file and may occur mutliple times to define multiple files to be created. The first line of the DEFINEDERIVED element is the name of the file. All subsequent lines represent the content of the file.


    Default Setting

    N/A


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following example shows how user defined files can be used to provide a framed navigational view of an archive. Note how the filenames contain resource variables to uniquely qualify the name for each message.

    NOTE:

    This example is not complete since other resources need to be defined to make everything work.

    The following derived file is the main file the index pages will link to. It defines the subframe definitions for the navigational links and the message data:

    <DefineDerived>
    frm$MSGNUM$.html
    <html>
    <head>
    <title>Message View</title>
    </head>
    <frameset rows="75,*">
    <frame src="nav$MSGNUM$.html" name="NAV">
    <frame src="msg$MSGNUM$.html" name="MESSAGE">
    </frameset>
    </html>
    </DefineDerived>
    

    The following derived file defines the navigational links for a message. The links will be displayed in a frame above the converted message.

    <DefineDerived>
    nav$MSGNUM$.html
    <html>
    <head>
    <title>Message Navigation</title>
    </head>
    <body>
    <table cellpadding=0 cellspacing=0 cols=3 border=1 width="100%">
    <tbody>
    <tr align="center">
    <th colspan=3><strong>Thread Links</strong></th>
    <th colspan=3><strong>Date Links</strong></th>
    </tr>
    <tr align="center">
    <td>$TPREVBUTTON$</td>
    <td>$TNEXTBUTTON$</td>
    <td><a $FRAME-IDX$ href="$TIDXFNAME$#$MSGNUM$">Index</a></td>
    <td>$PREVBUTTON$</td>
    <td>$NEXTBUTTON$</td>
    <td><a $FRAME-IDX$ href="$IDXFNAME$#$MSGNUM$">Index</a></td>
    </tr>
    </tbody>
    </table>
    </body>
    </html>
    </DefineDerived>
    

    Version

    2.0


    See Also


    [Prev: DEFCHARSET][Resources][TOC][Next: DEFINEVAR]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/usinglastpg.html0000644004705000001440000000734612332046112021365 0ustar ehoodusers MHonArc Resources: USINGLASTPG
    [Prev: USELOCALTIME][Resources][TOC][Next: VARREGEX]

    USINGLASTPG


    Syntax

    Envariable

    M2H_USINGLASTPG= [ 0 | 1 ]

    Element(s)

    <USINGLASTPG>
    <NOUSINGLASTPG>

    Command-line Option(s)

    N/A


    Description

    USINGLASTPG is a boolean resource to tell MHonArc if the $LASTPG$ resource variable is in use.

    The usage of this resource is only applicable if MULTIPG is set. By default, MHonArc will regenerate all pages of a multi-page index if a new page gets added to the archive. This is done to insure that any links to the last page of the index (via $PG(LAST)$) gets updated.

    If you want to save processing time, and you know you are not using $LASTPG$ in any resource (or have a helper CGI program to link to the last page), set USINGLASTPG to 0. Any new page added will only cause the new page and previous page to be written/updated, assuming that added messages always appear at the end of message listings. MHonArc will still update relevant index pages if message listing order dictates such an action.


    Default Setting

    1


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.1.2


    See Also

    MULTIPG


    [Prev: USELOCALTIME][Resources][TOC][Next: VARREGEX]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextbuttonia.html0000644004705000001440000003114012332046112021722 0ustar ehoodusers MHonArc Resources: TNEXTBUTTONIA
    [Prev: TNEXTBUTTON][Resources][TOC][Next: TNEXTINBUTTON]

    TNEXTBUTTONIA


    Syntax

    Envariable

    N/A

    Element

    <TNEXTBUTTONIA>
    markup ...
    </TNEXTBUTTONIA>

    Command-line Option

    N/A


    Description

    TNEXTBUTTONIA defines the value for the $BUTTON(TNEXT)$ resource variable when there is no next message to the current message according to the message list order of the thread index. See the TNEXTBUTTON for defining the value of $BUTTON(TNEXT)$ when there is a next message.


    Default Setting

    <TNextButtonIA chop>
    [Thread Next]
    </TNextButtonIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows how an button image can be used to show no next message is avaliable:

    <TNextButtonIA chop>
    <img src="tnextia.png" alt="[Thread Next]">
    </TNextButtonIA>
    

    Version

    2.0


    See Also

    TNEXTBUTTONIA, TOPLINKS, TPREVBUTTON, TPREVBUTTONIA


    [Prev: TNEXTBUTTON][Resources][TOC][Next: TNEXTINBUTTON]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/labelstyles.html0000644004705000001440000001042612332046111021340 0ustar ehoodusers MHonArc Resources: LABELSTYLES
    [Prev: LABELEND][Resources][TOC][Next: LANG]

    LABELSTYLES


    Syntax

    Envariable

    N/A

    Element

    <LABELSTYLES>
    label_name:html_element
    label_name:html_element
    ...
    </LABELSTYLES>

    Command-line Option

    N/A


    Description

    The LABELSTYLES resource is set via the LABELSTYLES element. Each line in the LABELSTYLES element defines HTML elements to wrap around the field labels in mail headers (e.g. "To", "From"). The format of each line is "label_name:html_element". This specifies to wrap html_element around the label label_name. If html_element is empty, then the label is not wrapped in any element.

    MHonArc defines a special label_name called "-default-". This is default HTML element to wrap labels in if no explicit specific element is defined for the label.

    label_name must be the exact name of a header field label, but character case is ignored.


    Default Setting

    <LabelStyles>
    -default-:em
    </LabelStyles>
    

    Resource Variables

    N/A


    Examples

    The following causes the subject and from labels to appear in bold and all other labels in normal typeface:

    <LabelStyles>
    subject:b
    from:b
    -default-:
    </LabelStyles>
    

    Version

    1.0


    See Also

    EXCS, FIELDORDER, FIELDSBEG, FIELDSEND, FIELDSTYLES, FLDBEG, FLDEND, LABELBEG, LABELEND


    [Prev: LABELEND][Resources][TOC][Next: LANG]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/datefields.html0000644004705000001440000001377012332046111021126 0ustar ehoodusers MHonArc Resources: DATEFIELDS
    [Prev: CONLEN][Resources][TOC][Next: DAYBEGIN]

    DATEFIELDS


    Syntax

    Envariable


    M2H_DATEFIELDS=field1:field2:...:fieldN

    Element

    <DATEFIELDS>
    field1:field2:...:fieldN
    </DATEFIELDS>

    Command-line Option

    -datefields field1:field2:...:fieldN


    Description

    DATEFIELDS specify the message header fields mhonarc will search to determine the dates of messages. Each field will be checked in the ordered specified.

    The value of the DATEFIELDS is a colon separated list of message header fields to check. Since it is legal for multiple fields with the same name to appear in a message header (e.g. Received), indexed fields are supported. For example,

    <DateFields>
    received[1]:received[0]:date
    </DateFields>
    

    The example says that mhonarc should check the second received field, then the first received field, and then the first date field to determine the date of a message.

    Indexing starts at 0. I.e. An index of 0 denotes the first occurrence of the field, 1 denotes the second, etc. If no integer index is specified, then 0 is used.


    Default Setting

    received:date
    

    Resource Variables

    N/A


    Examples

    Using composition date

    By default. mhonarc looks at the Received fields of a message to determine a message's date. This tends to be more accurate as it tells when the message was actually received (it is better to trust a date/time you have control over vs what the sender has control over). However, you may want to have the date based upon the time the sender composed the message. The Date field usually reflects the composition date. Therefore, the following setting can be used:

    <DateFields>
    date:received
    </DateFields>
    

    Indexed fields

    Specified indexed fields can be used if mail you archive is known to following a specific delivery path. Here is an example scenario:

    1. All incoming mail is first delivered to a central POP mail server of our ISP.
    2. fetchmail is used to download the mail from the POP server to our local SMTP server.
    3. The local SMTP server delivers the mail to a local user account that is used to archive the mail.

    With this scenario, we prefer to use the date stamp from the ISP server since our local system may not always be up. Each step above causes a Received header field to be added to the message. Since Received fields are listed from final delivery point to starting delivery point (i.e. each step inserts a Received field above existing header fields), we want to base the message date on the 3rd Received field (the one created by the ISP mail server). Hence, DATEFIELDS shall be set to the following:

    <DateFields>
    received[2]:received[1]:received[0]:date
    </DateFields>
    

    We still specify fallback fields just-in-case.


    Version

    2.1.1


    See Also

    FROMFIELDS


    [Prev: CONLEN][Resources][TOC][Next: DAYBEGIN]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1998,2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgbodyend.html0000644004705000001440000001622312332046111021151 0ustar ehoodusers MHonArc Resources: MSGBODYEND
    [Prev: MONTHSABR][Resources][TOC][Next: MSGEXCFILTER]

    MSGBODYEND


    Syntax

    Envariable

    N/A

    Element

    <MSGBODYEND>
    markup...
    </MSGBODYEND>

    Command-line Option

    N/A


    Description

    MSGBODYEND defines the markup that occurs right after the end of the converted message body.


    Default Setting

    <hr>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.1.0


    See Also

    HEADBODYSEP, SUBJECTHEADER

    Page Layout


    [Prev: MONTHSABR][Resources][TOC][Next: MSGEXCFILTER]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/idxprefix.html0000644004705000001440000000705112332046111021017 0ustar ehoodusers MHonArc Resources: IDXPREFIX
    [Prev: IDXPGSSMARKUP][Resources][TOC][Next: IDXSIZE]

    IDXPREFIX


    Syntax

    Envariable

    M2H_IDXPREFIX=prefix

    Element

    <IDXPREFIX>
    prefix
    </IDXPREFIX>

    Command-line Option

    -idxprefix prefix


    Description

    IDXPREFIX defines the prefix for the filenames of a multi-page main index. The filename of the first page of the main index is always equal to the value of the IDXFNAME resource. All other pages have a filename starting with the IDXPREFIX value with the page number and ".html" following. For example, the filenames for a 4 page main index would be the following:

        maillist.html
        mail2.html
        mail3.html
        mail4.html
    

    assuming the default values for the IDXFNAME and IDXPREFIX resources.


    Default Setting

    mail
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    IDXFNAME, MULTIPG, TIDXPREFIX


    [Prev: IDXPGSSMARKUP][Resources][TOC][Next: IDXSIZE]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/ttoplink.html0000644004705000001440000003115612332046112020665 0ustar ehoodusers MHonArc Resources: TTOPLINK
    [Prev: TTOPEND][Resources][TOC][Next: TTOPLINKIA]

    TTOPLINK


    Syntax

    Envariable

    N/A

    Element

    <TTOPLINK>
    markup
    </TTOPLINK>

    Command-line Option

    N/A


    Description

    TTOPLINK defines the replacement markup for the resource variable $LINK(TTOP)$: link markup for the first message in the current discussion thread. See TTOPLINKIA for the markup used when the current message is the first message in the thread.


    Default Setting

    <TTopLink>
    <li>First in thread:
    <strong><a href="$MSG(TTOP)$">$SUBJECT(TTOP)$</a></strong>
    </li>
    </TTopLink>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.6.0


    See Also

    BOTLINKS, TENDLINK, TNEXTLINK, TNEXTTOPLINK, TPREVLINK, TPREVINLINK, TPREVTOPLINK. TTOPBUTTON, TTOPLINKIA


    [Prev: TTOPEND][Resources][TOC][Next: TTOPLINKIA]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsliceliendcur.html0000644004705000001440000003227512332046112022035 0ustar ehoodusers MHonArc Resources: TSLICELIENDCUR
    [Prev: TSLICELIEND][Resources][TOC][Next: TSLICELINONE]

    TSLICELIENDCUR


    Syntax

    Envariable

    N/A

    Element

    <TSLICELIENDCUR>
    markup
    </TSLICELIENDCUR>

    Command-line Option

    N/A


    Description

    Ending markup for a thread slice message listing if current message. This resource is applied over TSLICELIEND if the message listing being rendered for a thread slice is the current message.


    Default Setting

    The value of the TSLICELIEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICELIEND][Resources][TOC][Next: TSLICELINONE]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/nextbuttonia.html0000644004705000001440000003120112332046111021533 0ustar ehoodusers MHonArc Resources: NEXTBUTTONIA
    [Prev: NEXTBUTTON][Resources][TOC][Next: NEXTLINK]

    NEXTBUTTONIA


    Syntax

    Envariable

    N/A

    Element

    <NEXTBUTTONIA>
    markup ...
    </NEXTBUTTONIA>

    Command-line Option

    N/A


    Description

    NEXTBUTTONIA defines the value for the $BUTTON(NEXT)$ resource variable when there is no next message to the current message according to the message list order of the main index. See the NEXTBUTTON for defining the value of $BUTTON(NEXT)$ when there is a next message.


    Default Setting

    <NextButtonIA chop>
    [Date Next]
    </NextButtonIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows how an button image can be used to show no next message is avaliable:

    <NextButtonIA chop>
    <img src="nextia.png" alt="[Date Next]">
    </NextButtonIA gt;
    

    Version

    1.2


    See Also

    NEXTBUTTON, PREVBUTTON, PREVBUTTONIA, TNEXTBUTTON, TNEXTBUTTONIA, TOPLINKS


    [Prev: NEXTBUTTON][Resources][TOC][Next: NEXTLINK]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/subjectend.html0000644004705000001440000000605112332046111021142 0ustar ehoodusers MHonArc Resources: SUBJECTEND
    [Prev: SUBJECTBEGIN][Resources][TOC][Next: SUBJECTHEADER]

    SUBJECTEND


    Syntax

    Envariable

    N/A

    Element

    <SUBJECTEND>
    markup ...
    </SUBJECTEND>

    Command-line Option

    N/A


    Description

    SUBJECTEND defines the end markup of a subject group in the main index if the SUBSORT reosource is set.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    SUBJECTBEGIN, SUBSORT


    [Prev: SUBJECTBEGIN][Resources][TOC][Next: SUBJECTHEADER]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tendlink.html0000644004705000001440000003127712332046111020634 0ustar ehoodusers MHonArc Resources: TENDLINK
    [Prev: TENDBUTTONIA][Resources][TOC][Next: TENDLINKIA]

    TENDLINK


    Syntax

    Envariable

    N/A

    Element

    <TENDLINK>
    markup
    </TENDLINK>

    Command-line Option

    N/A


    Description

    TENDLINK defines the replacement markup for the resource variable $LINK(TEND)$: link markup for the last message in the current discussion thread. See TENDLINKIA for the markup used when the current message is the last message in the thread.


    Default Setting

    <TEndLink>
    <li>Last in thread:
    <strong><a href="$MSG(TEND)$">$SUBJECT(TEND)$</a></strong>
    </li>
    </TEndLink>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.6.0


    See Also

    BOTLINKS, TENDBUTTON, TENDLINKIA, TNEXTBUTTON, TNEXTINLINK, TNEXTTOPBUTTON, TPREVBUTTON, TPREVINBUTTON, TPREVTOPBUTTON, TTOPLINK


    [Prev: TENDBUTTONIA][Resources][TOC][Next: TENDLINKIA]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/stderr.html0000644004705000001440000000644512332046111020326 0ustar ehoodusers MHonArc Resources: STDERR
    [Prev: SSMARKUP][Resources][TOC][Next: STDIN]

    STDERR


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -stderr filename


    Description

    STDERR can be used to have all output that would go standard error to a specified file. Messages that go to standard error are warnings and errors. If the filename specified already exists, any standard error data generated will be appended to filename.

    Note, most system shells (Unix) provide the ability to redirect standard error to a file. STDERR is provided where such functionality is not available or easy to achieve.


    Default Setting

    The default location of standard error, which is normally the terminal.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.0


    See Also

    STDIN, STDOUT


    [Prev: SSMARKUP][Resources][TOC][Next: STDIN]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tlitxt.html0000644004705000001440000003036612332046112020353 0ustar ehoodusers MHonArc Resources: TLITXT
    [Prev: TLINONEEND][Resources][TOC][Next: TNEXTBUTTON]

    TLITXT


    Syntax

    Envariable

    N/A

    Element

    <TLITXT>
    markup ...
    </TLITXT>

    Command-line Option

    N/A


    Description

    TLITXT defines the starting markup and content for a regular entry in the thread index. A regular entry is a message that has either a previous or next message and is not the top message in a thread.

    NOTE

    Use TLIEND for defining the end markup for a regular entry.


    Default Setting

    <TLiTxt>
    <li><strong>$SUBJECT$</strong>,
    <em>$FROMNAME$</em>
    </TLiTxt>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    1.1


    See Also

    TLIEND, TSINGLETXT, TTOPBEGIN

    Page Layout


    [Prev: TLINONEEND][Resources][TOC][Next: TNEXTBUTTON]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/afs.html0000644004705000001440000000620312332046111017564 0ustar ehoodusers MHonArc Resources: AFS
    [Prev: ADDRESSMODIFYCODE][Resources][TOC][Next: ANNOTATE]

    AFS


    Syntax

    Envariable

    M2H_AFS=[ 0 | 1 ]

    Element

    N/A

    Command-line Option

    -afs


    Description

    If AFS is set, MHonArc skips the archive directory permission check. The resource gets its name from the Andrew File System (AFS) since standard Unix permission checks are not adequate to verify if MHonArc has proper permissions to access the directory. AFS maybe applicable for other filesystems where "rwx" checks are insufficient and may be incorrect.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.3.0


    See Also


    [Prev: ADDRESSMODIFYCODE][Resources][TOC][Next: ANNOTATE]

    $Date: 2005/05/13 00:00:36 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/keeponrmm.html0000644004705000001440000001005112332046111021004 0ustar ehoodusers MHonArc Resources: KEEPONRMM
    [Prev: INCLUDE][Resources][TOC][Next: LABELBEG]

    KEEPONRMM


    Syntax

    Envariable

    M2H_KEEPONRMM=[ 0 | 1 ]

    Element

    <KEEPONRMM>
    <NOKEEPONRMM>

    Command-line Option

    -keeponrmm -nokeeponrmm


    Description

    If KEEPONRMM is set, message files will not be deleted from the file system when a message is removed from an archive. This option is useful if you are using a search engine to index archives and you still want old messages to be searchable but not part of the browsable indexes. This is a benefit for large archives that want to allow access to old messages but without taking the overhead of long archive updates.

    The KEEPONRMM applies to messages removed via the RMM resource or by automatic deletions policies defined by MAXSIZE, EXPIREAGE, and EXPIREDATE,

    NOTE:

    KEEPONRMM resource is stored in the database file. Therefore, when set on an archive update, or creation, message files will not be physically deleted for all future archive message removals until KEEPONRMM is explicitly disabled.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.8


    See Also

    EXPIREAGE, EXPIREDATE, MAXSIZE, RMM


    [Prev: INCLUDE][Resources][TOC][Next: LABELBEG]

    $Date: 2005/07/23 06:23:56 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/varregex.html0000644004705000001440000000752312332046112020645 0ustar ehoodusers MHonArc Resources: VARREGEX
    [Prev: USINGLASTPG][Resources][TOC][Next: WEEKDAYS]

    VARREGEX


    Syntax

    Envariable

    M2H_VARREGEX=Perl-regex

    Element

    <VARREGEX>
    Perl-regex
    </VARREGEX>

    Command-line Option

    -varregex Perl-regex


    Description

    VARREGEX defines the Perl regular expression matching resource variables. The regex should define a back reference that contains the name of the resource variable and its arguments surround by parentheses.

    WARNING:

    DO NOT MESS WITH THIS RESOURCE UNLESS YOU KNOW WHAT YOU ARE DOING. If not set properly, page output can become munged. One symptom of a bad VARREGEX setting is the occurrence of numerous '$' characters in generated pages. Make sure to test your VARREGEX setting before using it with production archives.


    Default Setting

    \$([^\$]*)\$
    

    Resource Variables

    N/A


    Examples

    The following does a more stricter match:

    \$([^(\$]+(?:\([^)]+\))?)\$
    

    Although slower than the default, it minimizes potential conflicts in resource files encoded in multi-byte character sets like SJIS.


    Version

    2.4.5


    See Also


    [Prev: USINGLASTPG][Resources][TOC][Next: WEEKDAYS]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 2000, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/notetext.html0000644004705000001440000003114412332046111020667 0ustar ehoodusers MHonArc Resources: NOTETEXT
    [Prev: NOTEIA][Resources][TOC][Next: OTHERINDEXES]

    NOTETEXT


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -notetext text


    Description

    NOTETEXT is the annotation text for a message. When defining NOTETEXT for a message, ANNOTATE must be set. To access the value of NOTETEXT use the $NOTETEXT$ resource variable.

    NOTE

    $NOTETEXT$ should only be used as part of the NOTE resource. To display annotations for messages within page layout resources, $NOTE$ should be used.

    The value of NOTETEXT is treated as HTML markup. Therefore, if you want to include characters like '<', '>', and '&', make sure to use the appropriate HTML entity reference.


    Default Setting

    Nil


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    See ANNOTATE and NOTE.


    Version

    2.3.0


    See Also

    ANNOTATE, NOTE, NOTEDIR


    [Prev: NOTEIA][Resources][TOC][Next: OTHERINDEXES]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnexttopbutton.html0000644004705000001440000003077112332046112022144 0ustar ehoodusers MHonArc Resources: TNEXTTOPBUTTON
    [Prev: TNEXTPGLINKIA][Resources][TOC][Next: TNEXTTOPBUTTONIA]

    TNEXTTOPBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TNEXTTOPBUTTON>
    markup
    </TNEXTTOPBUTTON>

    Command-line Option

    N/A


    Description

    TNEXTTOPBUTTON defines the replacement markup for the resource variable $BUTTON(TNEXTTOP)$: button markup for first message in next discussion thread. See TNEXTTOPBUTTONIA for the replace markup used when there is no next discussion thread.


    Default Setting

    [<a href="$MSG(TNEXTTOP)$">Next Thread</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTBUTTON, TNEXTINBUTTONIA, TNEXTINLINK, TNEXTTOPBUTTONIA, TPREVBUTTON, TPREVINBUTTON, TPREVTOPBUTTON


    [Prev: TNEXTPGLINKIA][Resources][TOC][Next: TNEXTTOPBUTTONIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tidxpgssmarkup.html0000644004705000001440000000643312332046112022106 0ustar ehoodusers MHonArc Resources: TIDXPGSSMARKUP
    [Prev: TIDXPGEND][Resources][TOC][Next: TIDXPREFIX]

    TIDXPGSSMARKUP


    Syntax

    Envariable

    N/A

    Element

    <TIDXPGSSMARKUP>
    </TIDXPGSSMARKUP>

    Command-line Option

    N/A


    Description

    TIDXPGSSMARKUP defines the markup that occurs at the very beginning of thread index pages. This resource may be used to include any server-side processing markup that must occur before any HTML-related markup.


    Default Setting

    The value of the SSMARKUP resource.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.5.8


    See Also

    IDXPGSSMARKUP, MSGPGSSMARKUP, SSMARKUP

    Page Layout


    [Prev: TIDXPGEND][Resources][TOC][Next: TIDXPREFIX]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/iconurlprefix.html0000644004705000001440000001110012332046111021674 0ustar ehoodusers MHonArc Resources: ICONURLPREFIX
    [Prev: ICONS][Resources][TOC][Next: IDXFNAME]

    ICONURLPREFIX


    Syntax

    Envariable

    M2H_ICONURLPREFIX=url

    Element

    <ICONURLPREFIX>
    url
    </ICONURLPREFIX>

    Command-line Option

    -iconurlprefix url


    Description

    ICONURLPREFIX defines the URL string to prepend to icon URLs defined by the ICONS resource.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    ICONURLPREFIX helps in maintain relative-based archives that use icons. For example, we have a file called icons.mrc which has the following ICONS setting:

    <Icons>
    application/*;[20x22]generic.gif
    application/postscript;[20x22]ps.gif
    application/octet-stream;[20x22]binary.gif
    application/pdf;[20x22]pdf.gif
    application/zip;[20x22]compressed.gif
    audio/*;[20x22]sound1.gif
    chemical/*;[20x22]sphere2.gif
    image/*;[20x22]image2.gif
    message/external-body;[20x22]link.gif
    multipart/*;[20x22]layout.gif
    text/*;[20x22]text.gif
    video/*;[20x22]movie.gif
    */*;[20x22]generic.gif
    </Icons>
    

    All the icon URLs are specified by their basename. Now, for the various archives, we specify icons.mrc, but then define ICONURLPREFIX to give the relative location of the archive to the icon files:

    prompt> mhonarc -rcfile icons.mrc -iconurlprefix ../icons/ ...
    

    And another archive may have:

    prompt> mhonarc -rcfile icons.mrc -iconurlprefix ../../icons/ ...
    

    The use of ICONURLPREFIX avoids the need to redefine the ICONS resource for each archive and helps support archive relocatability. For example, if the archives were to be copied to a new server under a different URL root, we avoid regeneration of the archives since the URLs used for icons is relative and not absolute.


    Version

    2.6.0


    See Also

    ICONS


    [Prev: ICONS][Resources][TOC][Next: IDXFNAME]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsublistend.html0000644004705000001440000000605712332046112021363 0ustar ehoodusers MHonArc Resources: TSUBLISTEND
    [Prev: TSUBLISTBEG][Resources][TOC][Next: TSUBSORT]

    TSUBLISTEND


    Syntax

    Envariable

    N/A

    Element

    <TSUBLISTEND>
    markup ...
    </TSUBLISTEND>

    Command-line Option

    N/A


    Description

    TSUBLISTEND defines the markup for ending a sub-thread listing.


    Default Setting

    <TSubListEnd>
    </ul>
    </TSubListEnd>
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    TSUBLISTBEG,

    Page Layout


    [Prev: TSUBLISTBEG][Resources][TOC][Next: TSUBSORT]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicelitxtcur.html0000644004705000001440000003240312332046112022077 0ustar ehoodusers MHonArc Resources: TSLICELITXTCUR
    [Prev: TSLICELITXT][Resources][TOC][Next: TSLICESINGLETXT]

    TSLICELITXTCUR


    Syntax

    Envariable

    N/A

    Element

    <TSLICELITXTCUR>
    markup
    </TSLICELITXTCUR>

    Command-line Option

    N/A


    Description

    Markup for a thread slice message listing if current message. This resource is used instead of TSLICELITXT if rendering the current message in a thread slice.


    Default Setting

    The value of the TSLICELITXT resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    See TSLICETOPBEGCUR for a usage example of this resource.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICELITXT][Resources][TOC][Next: TSLICESINGLETXT]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextinlink.html0000644004705000001440000003130012332046112021357 0ustar ehoodusers MHonArc Resources: TNEXTINLINK
    [Prev: TNEXTINBUTTONIA][Resources][TOC][Next: TNEXTINLINKIA]

    TNEXTINLINK


    Syntax

    Envariable

    N/A

    Element

    <TNEXTINLINK>
    markup
    </TNEXTINLINK>

    Command-line Option

    N/A


    Description

    TNEXTINLINK defines the replacement markup for the resource variable $LINK(TNEXTIN)$ when there exists a next message from the current message within a discussion thread. See TNEXTINLINKIA for the replacement markup used with there is no next message.

    TNEXTINLINK differs from TNEXTLINK in that it does not cross discussion thread boundaries.


    Default Setting

    <li>Next in thread:
    <strong><a href="$MSG(TNEXTIN)$">$SUBJECT(TNEXTIN)$</a></strong>
    </li>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    BOTLINKS, TNEXTINBUTTON, TNEXTLINK, TNEXTINLINKIA, TNEXTTOPLINK, TPREVLINK, TPREVINLINK, TPREVTOPLINK


    [Prev: TNEXTINBUTTONIA][Resources][TOC][Next: TNEXTINLINKIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/nextlinkia.html0000644004705000001440000003051012332046111021157 0ustar ehoodusers MHonArc Resources: NEXTLINKIA
    [Prev: NEXTLINK][Resources][TOC][Next: NEXTPGLINK]

    NEXTLINKIA


    Syntax

    Envariable

    N/A

    Element

    <NEXTLINKIA>
    markup ...
    </NEXTLINKIA>

    Command-line Option

    N/A


    Description

    NEXTLINKIA defines the value for the $LINK(NEXT)$ resource variable when there is no next message to the current message according to the message list order of the main index.

    See the NEXTLINK for defining the value of $LINK(NEXT)$ when there is a next message.


    Default Setting

    Nil


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    1.2


    See Also

    BOTLINKS, NEXTLINK, PREVLINK, PREVLINKIA, TNEXTLINK, TNEXTLINKIA


    [Prev: NEXTLINK][Resources][TOC][Next: NEXTPGLINK]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevpglinkia.html0000644004705000001440000001646012332046112021701 0ustar ehoodusers MHonArc Resources: TPREVPGLINKIA
    [Prev: TPREVPGLINK][Resources][TOC][Next: TPREVTOPBUTTON]

    TPREVPGLINKIA


    Syntax

    Envariable

    N/A

    Element

    <TPREVPGLINKIA>
    markup ...
    </TPREVPGLINKIA>

    Command-line Option

    N/A


    Description

    TPREVPGLINKIA defines the value for the $PGLINK(TPREV)$ resource variable when there is no previous page to the current page of the thread index.

    See the TPREVPGLINK for defining the value of $PGLINK(TPREV)$ when there is a previous page.


    Default Setting

    <TPrevPgLinkIA chop>
    [Prev Page]
    </TPrevPgLinkIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None


    Version

    2.0


    See Also

    MULTIPG, THEAD, TNEXTPGLINK, TNEXTPGLINKIA, TPREVPGLINK


    [Prev: TPREVPGLINK][Resources][TOC][Next: TPREVTOPBUTTON]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tendlinkia.html0000644004705000001440000003034212332046112021137 0ustar ehoodusers MHonArc Resources: TENDLINKIA
    [Prev: TENDLINK][Resources][TOC][Next: TEXTCLIPFUNC]

    TENDLINK


    Syntax

    Envariable

    N/A

    Element

    <TENDLINKIA>
    markup
    </TENDLINKIA>

    Command-line Option

    N/A


    Description

    TENDLINKIA defines the replacement markup for the resource variable $LINK(TEND)$ when the current message is the last message in the current thread. See TENDLINK for the markup used when the current message is not the last message in the thread.


    Default Setting

    <TEndLinkIA>
    </TEndLinkIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.6.0


    See Also

    BOTLINKS, TENDLINK


    [Prev: TENDLINK][Resources][TOC][Next: TEXTCLIPFUNC]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/editidx.html0000644004705000001440000000653612332046111020456 0ustar ehoodusers MHonArc Resources: EDITIDX
    [Prev: DOCURL][Resources][TOC][Next: EXCS]

    EDITIDX


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -editidx


    Description

    EDITIDX is activated only by a command-line option. This instructs MHonArc to edit all message files and recreate index pages. Its main use is to apply resource changes to all archive pages.

    NOTE:

    Converted message headers and bodies are static. So any resource changes that affect how message headers and bodies are converted will only apply to new messages. See Page Layout for more information.


    Default Setting

    N/A


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    RCFILE

    Page Layout


    [Prev: DOCURL][Resources][TOC][Next: EXCS]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsublistbeg.html0000644004705000001440000001575012332046112021352 0ustar ehoodusers MHonArc Resources: TSUBLISTBEG
    [Prev: TSUBJECTEND][Resources][TOC][Next: TSUBLISTEND]

    TSUBLISTBEG


    Syntax

    Envariable

    N/A

    Element

    <TSUBLISTBEG>
    markup ...
    </TSUBLISTBEG>

    Command-line Option

    N/A


    Description

    TSUBLISTBEG defines the markup for starting a sub-thread listing.


    Default Setting

    <TSubListBeg>
    <ul>
    </TSubListBeg>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None.


    Version

    2.0


    See Also

    TSUBLISTEND, TTOPBEGIN

    Page Layout


    [Prev: TSUBJECTEND][Resources][TOC][Next: TSUBLISTEND]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsingletxt.html0000644004705000001440000003010412332046112021216 0ustar ehoodusers MHonArc Resources: TSINGLETXT
    [Prev: TREVERSE][Resources][TOC][Next: TSLICE]

    TSINGLETXT


    Syntax

    Envariable

    N/A

    Element

    <TSINGLETXT>
    markup ...
    </TSINGLETXT>

    Command-line Option

    N/A


    Description

    TSINGLETXT defines the markup for a thread index entry that is not in a thread. I.e. The message has no references or follow-ups in the archive.

    NOTE

    TSINGLETXT should define the start markup, content, and end markup.


    Default Setting

    <TSingleTxt>
    <li><strong>$SUBJECT$</strong>,
    <em>$FROMNAME$</em>
    </TSingleTxt>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.0


    See Also

    TLITXT, TTOPBEGIN


    [Prev: TREVERSE][Resources][TOC][Next: TSLICE]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tcontbegin.html0000644004705000001440000003105612332046111021153 0ustar ehoodusers MHonArc Resources: TCONTBEGIN
    [Prev: SUBSORT][Resources][TOC][Next: TCONTEND]

    TCONTBEGIN


    Syntax

    Envariable

    N/A

    Element

    <TCONTBEGIN>
    markup...
    </TCONTBEGIN>

    Command-line Option

    N/A


    Description

    TCONTBEGIN defines the markup to occur before the continuation of a broken thread. When MHonArc creates a multi-page thread index, it is possible that a thread may be split across mulitple pages. The use of TCONTBEGIN is to prompt the reader that the following messages listed are a continuation of a thread from the previous page.

    NOTE

    The values of the resource variables are based upon the first message on the page. However, a normal listing will be made for the first message. Therefore, the value of TCONTBEGIN should NOT contain linkage to a message. The purpose of TCONTBEGIN is purely informative.


    Default Setting

    <TContBegin>
    <li><strong>$SUBJECTNA$</strong>, <em>(continued)</em>
    </TContBegin>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.0


    See Also

    MULTIPG, TCONTEND, TINDENTBEGIN


    [Prev: SUBSORT][Resources][TOC][Next: TCONTEND]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/prevpglink.html0000644004705000001440000001751012332046111021177 0ustar ehoodusers MHonArc Resources: PREVPGLINK
    [Prev: PREVLINKIA][Resources][TOC][Next: PREVPGLINKIA]

    PREVPGLINK


    Syntax

    Envariable

    N/A

    Element

    <PREVPGLINK>
    markup ...
    </PREVPGLINK>

    Command-line Option

    N/A


    Description

    PREVPGLINK defines the value for the $PGLINK(PREV)$ resource variable when there is a previous page to the current page of the main index.

    See the PREVPGLINKIA for defining the value of $PGLINK(PREV)$ when there is no previous page.


    Default Setting

    <PrevPgLink chop>
    [<a href="$PG(PREV)$">Prev Page</a>]
    </PrevPgLink>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None


    Version

    2.0


    See Also

    LISTBEGIN, MULTIPG, PREVPGLINKIA, NEXTPGLINK, NEXTPGLINKIA


    [Prev: PREVLINKIA][Resources][TOC][Next: PREVPGLINKIA]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/timezones.html0000644004705000001440000003316212332046112021035 0ustar ehoodusers MHonArc Resources: TIMEZONES
    [Prev: TIDXPREFIX][Resources][TOC][Next: TINDENTBEGIN]

    TIMEZONES


    Syntax

    Envariable

    N/A

    Element

    <TIMEZONES>
    timezone_acronym:time_offset
    timezone_acronym:time_offset
    ...
    </TIMEZONES>

    Command-line Option

    N/A


    Description

    TIMEZONES maps timezones to hour offsets from UTC/GMT (Universal Coordinate Time). The TIMEZONES resource can be defined only by the TIMEZONES element The format of each line of content is "timezone_acronym:time_offset", where time_offset is in [-]HHMM notation. Examples of timezone acronyms are: UTC, PDT, EST. The time offsets should be positive for timezones West of UTC, and negative for time zones East of UTC.

    NOTE

    Timezone settings in MHonArc are the negative inverse of what is used in dates in messages. For example, an EST time will look like the following in a mail message:

        Sat, 10 Sep 1994 15:11:10 -0500
    

    Notice that -0500 is used for EST. However, in MHonArc, EST is mapped to 0500, since 0500 must be added to the specified date/time to get the UTC date/time.

    MHonArc has a default list of timezone acronyms defined with time offsets. Therefore, the list given in the resource file will augment the default list. If "Override" attribute is specified, any local lists specified in previous TIMEZONES elements are replaced.

    Much of the time, the date used by MHonArc has a time offset instead of a timezone acronym. However, mail messages may contain timezone acronyms in received/sent dates and MHonArc must be told what hour offset to add to the give time to get UTC time to properly sort messages by date.


    Default Setting

    The following table shows the zones and values currently known to MHonArc:

    Zone Offset Description
    ACDT-1030Australian Central Daylight
    ACST-0930Australian Central Standard
    ADT0300(US) Atlantic Daylight
    AEDT-1100Australian East Daylight
    AEST-1000Australian East Standard
    AHDT0900 
    AHST1000 
    AST0400(US) Atlantic Standard
    AT0200Azores
    AWDT-0900Australian West Daylight
    AWST-0800Australian West Standard
    BAT-0300Baghdad
    BDST-0200British Double Summer
    BET1100Bering Standard
    BST-0100British Summer
    BT-0300Baghdad
    BZT20300Brazil Zone 2
    CADT-1030Central Australian Daylight
    CAST-0930Central Australian Standard
    CAT1000Central Alaska
    CCT-0800China Coast
    CDT0500(US) Central Daylight
    CED-0200Central European Daylight
    CET-0100Central European
    CST0600(US) Central Standard
    EAST-1000Eastern Australian Standard
    EDT0400(US) Eastern Daylight
    EED-0300Eastern European Daylight
    EET-0200Eastern Europe
    EEST-0300Eastern Europe Summer
    EST0500(US) Eastern Standard
    FST-0200French Summer
    FWT-0100French Winter
    GMT0000Greenwich Mean
    GST-1000Guam Standard
    HDT0900Hawaii Daylight
    HST1000Hawaii Standard
    IDLE-1200Internation Date Line East
    IDLW1200Internation Date Line West
    IST-0530Indian Standard
    IT-0330Iran
    JST-0900Japan Standard
    JT-0700Java
    KST-0900Korean Standard
    MDT0600(US) Mountain Daylight
    MED-0200Middle European Daylight
    MET-0100Middle European
    MEST-0200Middle European Summer
    MEWT-0100Middle European Winter
    MST0700(US) Mountain Standard
    MT-0800Moluccas
    NDT0230Newfoundland Daylight
    NFT0330Newfoundland
    NT1100Nome
    NST-0630North Sumatra
    NZ-1100New Zealand
    NZST-1200New Zealand Standard
    NZDT-1300New Zealand Daylight
    NZT-1200New Zealand
    PDT0700(US) Pacific Daylight
    PST0800(US) Pacific Standard
    ROK-0900Republic of Korea
    SAD-1000South Australia Daylight
    SAST-0900South Australia Standard
    SAT-0900South Australia
    SDT-1000South Australia Daylight
    SST-0200Swedish Summer
    SWT-0100Swedish Winter
    USZ3-0400USSR Zone 3
    USZ4-0500USSR Zone 4
    USZ5-0600USSR Zone 5
    USZ6-0700USSR Zone 6
    UT0000Universal Coordinated
    UTC0000Universal Coordinated
    UZ10-1100USSR Zone 10
    WAT0100West Africa
    WET0000West European
    WST-0800West Australian Standard
    YDT0800Yukon Daylight
    YST0900Yukon Standard
    ZP4-0400USSR Zone 3
    ZP5-0500USSR Zone 4
    ZP6-0600USSR Zone 5

    The following shows how these values would be specified in a resource file:

    <TimeZones>
    ACDT:-1030
    ACST:-0930
    ADT:0300
    AEDT:-1100
    AEST:-1000
    AHDT:0900
    AHST:1000
    AST:0400
    AT:0200
    AWDT:-0900
    AWST:-0800
    BAT:-0300
    BDST:-0200
    BET:1100
    BST:-0100
    BT:-0300
    BZT2:0300
    CADT:-1030
    CAST:-0930
    CAT:1000
    CCT:-0800
    CDT:0500
    CED:-0200
    CET:-0100
    CST:0600
    EAST:-1000
    EDT:0400
    EED:-0300
    EET:-0200
    EEST:-0300
    EST:0500
    FST:-0200
    FWT:-0100
    GMT:0000
    GST:-1000
    HDT:0900
    HST:1000
    IDLE:-1200
    IDLW:1200
    IST:-0530
    IT:-0330
    JST:-0900
    JT:-0700
    KST:-0900
    MDT:0600
    MED:-0200
    MET:-0100
    MEST:-0200
    MEWT:-0100
    MST:0700
    MT:-0800
    NDT:0230
    NFT:0330
    NT:1100
    NST:-0630
    NZ:-1100
    NZST:-1200
    NZDT:-1300
    NZT:-1200
    PDT:0700
    PST:0800
    ROK:-0900
    SAD:-1000
    SAST:-0900
    SAT:-0900
    SDT:-1000
    SST:-0200
    SWT:-0100
    USZ3:-0400
    USZ4:-0500
    USZ5:-0600
    USZ6:-0700
    UT:0000
    UTC:0000
    UZ10:-1100
    WAT:0100
    WET:0000
    WST:-0800
    YDT:0800
    YST:0900
    ZP4:-0400
    ZP5:-0500
    ZP6:-0600
    </TimeZones>
    

    Resource Variables

    N/A


    Examples

    Some zone acronyms are not unique, and have different time offsets. The following table describes alternative values for these zones:

    Zone Offset Description
    BST0300Brazil Standard
    NST0330Newfoundland Standard
    GST0300Greenland Standard

    To have the above values used instead of the default values use by MHonArc, the following TIMEZONES setting would be used:

    <TimeZones>
    BST:0300
    NST:0330
    GST:0300
    </TimeZones>
    

    Version

    1.0


    See Also


    [Prev: TIDXPREFIX][Resources][TOC][Next: TINDENTBEGIN]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/subjectbegin.html0000644004705000001440000003070112332046111021457 0ustar ehoodusers MHonArc Resources: SUBJECTBEGIN
    [Prev: SUBJECTARTICLERXP][Resources][TOC][Next: SUBJECTEND]

    SUBJECTBEGIN


    Syntax

    Envariable

    N/A

    Element

    <SUBJECTBEGIN>
    markup ...
    </SUBJECTBEGIN>

    Command-line Option

    N/A


    Description

    SUBJECTBEGIN defines the beginning markup of a subject group in the main index if the SUBSORT resource is set. A subject group is a group of messages with the same subject.

    Any message related resource variables available for the SUBJECTBEGIN evaluate based on information from the first message in the group.


    Default Setting

    Nil.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following example resource settings cause the main index to be sorted by subject. The listing will contain each subject followed by an author sub-listing:

    <SubSort>
    
    <SubjectBegin>
    <li><strong>$SUBJECTNA$</strong>
    <ul>
    </SubjectBegin>
    
    <SubjectEnd>
    </li></ul>
    </SubjectEnd>
    
    <LITemplate>
    <li><a $A_ATTR$>$FROMNAME$</a></li>
    </LITemplate>
    

    Version

    2.0


    See Also

    SUBJECTEND, SUBSORT


    [Prev: SUBJECTARTICLERXP][Resources][TOC][Next: SUBJECTEND]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevpglink.html0000644004705000001440000001653212332046112021367 0ustar ehoodusers MHonArc Resources: TPREVPGLINK
    [Prev: TPREVLINKIA][Resources][TOC][Next: TPREVPGLINKIA]

    TPREVPGLINK


    Syntax

    Envariable

    N/A

    Element

    <TPREVPGLINK>
    markup ...
    </TPREVPGLINK>

    Command-line Option

    N/A


    Description

    TPREVPGLINK defines the value for the $PGLINK(TPREV)$ resource variable when there is a previous page to the current page of the thread index.

    See the TPREVPGLINKIA for defining the value of $PGLINK(TPREV)$ when there is no previous page.


    Default Setting

    <TPrevPgLink chop>
    [<a href="$PG(TPREV)$">Prev Page</a>]
    </TPrevPgLink>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None


    Version

    2.0


    See Also

    MULTIPG, THEAD, TNEXTPGLINK, TNEXTPGLINKIA, TPREVPGLINKIA


    [Prev: TPREVLINKIA][Resources][TOC][Next: TPREVPGLINKIA]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/defrcfile.html0000644004705000001440000000673712332046111020752 0ustar ehoodusers MHonArc Resources: DEFRCFILE
    [Prev: DEFINEVAR][Resources][TOC][Next: DEFRCNAME]

    DEFRCFILE


    Syntax

    Envariable

    M2H_DEFRCFILE=filename

    Element

    N/A

    Command-line Option

    N/A


    Description

    DEFRCFILE is the pathname to the default resource file. The file is read each time MHonArc is invoked. The file is read before processing the resource file specified by the RCFILE resource and before command-line options are processed. The default resource file allows you change what the default resource values are. This can be useful if you want to have a set of resources values to be in effect each time MHonArc is invoked.


    Default Setting

    user-home-path/DEFRCNAME

    If the above does not exist, then:

    MHonArc-library-path/DEFRCNAME


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    DEFRCNAME, RCFILE


    [Prev: DEFINEVAR][Resources][TOC][Next: DEFRCNAME]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tfirstpglink.html0000644004705000001440000001616412332046112021543 0ustar ehoodusers MHonArc Resources: TFIRSTPGLINK
    [Prev: TEXTENCODE][Resources][TOC][Next: TFOOT]

    TFIRSTPGLINK


    Syntax

    Envariable

    N/A

    Element

    <TFIRSTPGLINK>
    markup
    </TFIRSTPGLINK>

    Command-line Option

    N/A


    Description

    TFIRSTPGLINK defines the markup to use when the resource variable $PGLINK(TFIRST)$ is used: the link to the first page of the thread index. Since a link to the first page of the thread index is always active, there is no inactive version of this resource.


    Default Setting

    [<a href="$PG(TFIRST)">First Page</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None.


    Version

    2.5.0


    See Also

    TLASTPGLINK, TNEXTPGLINK, TPREVPGLINK


    [Prev: TEXTENCODE][Resources][TOC][Next: TFOOT]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/idxfname.html0000644004705000001440000000620012332046111020603 0ustar ehoodusers MHonArc Resources: IDXFNAME
    [Prev: ICONURLPREFIX][Resources][TOC][Next: IDXLABEL]

    IDXFNAME


    Syntax

    Envariable

    M2H_IDXFNAME=filename

    Element

    <IDXFNAME>
    filename
    </IDXFNAME>

    Command-line Option

    -idxfname filename


    Description

    IDXFNAME defines the filename for the main index page. If MULTIPG is on, it defines the filename of the first page of the main index.


    Default Setting

    maillist.html
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    MULTIPG, TIDXFNAME


    [Prev: ICONURLPREFIX][Resources][TOC][Next: IDXLABEL]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevtopbutton.html0000644004705000001440000003100712332046112022133 0ustar ehoodusers MHonArc Resources: TPREVTOPBUTTON
    [Prev: TPREVPGLINKIA][Resources][TOC][Next: TPREVTOPBUTTONIA]

    TPREVTOPBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TPREVTOPBUTTON>
    markup
    </TPREVTOPBUTTON>

    Command-line Option

    N/A


    Description

    TPREVTOPBUTTON defines the replacement markup for the resource variable $BUTTON(TPREVTOP)$: button markup for first message in the previous discussion thread. See TPREVTOPBUTTONIA for the replace markup used when there is no previous discussion thread.


    Default Setting

    [<a href="$MSG(TPREVTOP)$">Prev Thread</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTBUTTON, TNEXTINBUTTONIA, TNEXTINLINK, TNEXTTOPBUTTON, TPREVBUTTON, TPREVINBUTTON, TPREVTOPBUTTONIA


    [Prev: TPREVPGLINKIA][Resources][TOC][Next: TPREVTOPBUTTONIA]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/firstpglink.html0000644004705000001440000001714512332046111021356 0ustar ehoodusers MHonArc Resources: FIRSTPGLINK
    [Prev: FILEPERMS][Resources][TOC][Next: FLDBEG]

    FIRSTPGLINK


    Syntax

    Envariable

    N/A

    Element

    <FIRSTPGLINK>
    markup
    </FIRSTPGLINK>

    Command-line Option

    N/A


    Description

    FIRSTPGLINK defines the markup to use when the resource variable $PGLINK(FIRST)$ is used: the link to the first page of the main index. Since a link to the first page of the main index is always active, there is no inactive version of this resource.


    Default Setting

    [<a href="$PG(FIRST)">First Page</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None.


    Version

    2.5.0


    See Also

    LASTPGLINK, NEXTPGLINK, PREVPGLINK


    [Prev: FILEPERMS][Resources][TOC][Next: FLDBEG]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/lockmethod.html0000644004705000001440000002005712332046111021147 0ustar ehoodusers MHonArc Resources: LOCKMETHOD
    [Prev: LOCKFILE][Resources][TOC][Next: LOCKTRIES]

    LOCKMETHOD


    Syntax

    Envariable

    M2H_LOCKMETHOD=method

    Element

    <LOCKMETHOD>
    method
    </LOCKMETHOD>

    Command-line Option

    -lockmethod method


    Description

    LOCKMETHOD determines how MHonArc should lock archives to protect multiple MHonArc processes modifying an archive at the same time. If after reading this page you still are unsure on what method to use, or do not understand some of the material, then just stick with the default value.

    The following is a list of possible values for LOCKMETHOD:

    directory

    MHonArc uses a directory file in the archive directory to lock an archive. When MHonArc is to access/modify an archive, it will first try to create a directory in the archive directory with a name determined by the LOCKFILE resource. MHonArc will try LOCKTRIES times to create the directory (obtains the lock) before timing out.

    flock

    MHonArc will use Perl's flock() operator. LOCKFILE will be created in the archive directory if does not already exist. Then MHonArc will try to LOCKTRIES times to obtain an exclusive lock on the file via flock() before timing out.

    WARNING

    Each locking method is incompatible with each other. Therefore, make sure the same method is specified for all MHonArc processes that will be accessing a given archive. If you want to change the default lock method so it will affect all MHonArc processes, you can set it via the default resource file or through mhasiteinit.pl. See Post Installation Configuration for more information.

    The following sub-sections give more information of each lock method, including the pros and cons of each, and assumes you have some knowledge about file systems.

    Directory File Method

    The directory file method is the default method used by MHonArc, and is the method used by past version of MHonArc. If you are familiar with locking methods used by other software, you may find it strange that a directory (which is just a special kind of file) is used instead of a plain file. The reason a directory is used is that it has unique properties over regular files on the various operating systems MHonArc runs on. The property that MHonArc takes advantage of is that you cannot create a new directory over an existing directory of the same name. This property is not guaranteed for plain files, or at least Perl cannot give a common interface for plain files to work on all platforms. It may be possible to use a plain file with Perl's sysopen() operator with the proper options, but the needed sysopen() options are not guaranteed to be available for all ports of Perl.

    Pros

    • Appears to work for all known platforms.

    Cons

    • If MHonArc/Perl abnormally terminates, MHonArc may not have the chance to delete the directory, failing to release the lock on the archive (a stale lock). This will cause other MHonArc processes to fail out with "Unable to lock ..." messages. To correct, manual deletion of the directory is required (or FORCE must be used).

    flock Method

    Using flock() is a common method for locking files under Unix-type operating systems. In order to use flock() method, the Symbol and Fcntl Perl modules must be available. If not available, and this method is specified, MHonArc will fallback to the directory file method.

    Unlike the directory method, it is okay if LOCKFILE stays around, and actually, it should never be manual deleted.

    Pros

    • Lock is automatically released if MHonArc/Perl abnormally terminates, eliminating the stale lock problem.

    Cons

    • Not availabe on all platforms.

    • May not work over NFS reliably. Read the documentation for flock() in the Perl documentation for more information.


    Default Setting

    directory

    NOTE

    The use of <LOCKMETHOD> within an RCFILE will take affect ONLY if used in the DEFRCFILE.

    WARNING

    Each locking method is incompatible with each other. Therefore, make sure the same method is specified for all MHonArc processes that will be accessing a given archive. If you want to change the default lock method so it will affect all MHonArc processes, you can set it via the default resource file or through mhasiteinit.pl. See Post Installation Configuration for more information.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.0


    See Also

    FORCE, LOCK, LOCKDELAY, LOCKFILE, LOCKTRIES


    [Prev: LOCKFILE][Resources][TOC][Next: LOCKTRIES]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/modtime.html0000644004705000001440000000635712332046111020463 0ustar ehoodusers MHonArc Resources: MODTIME
    [Prev: MODIFYBODYADDRESSES][Resources][TOC][Next: MONTHS]

    MODTIME


    Syntax

    Envariable

    M2H_MODTIME=[ 0 | 1 ]

    Element(s)

    <MODTIME>
    <NOMODTIME>

    Command-line Option(s)

    -modtime
    -nomodtime


    Description

    If MODTIME is active, converted message files will always have file modification times equal the dates of the messages. This features is useful for archives that are indexed by a search engine.

    NOTE

    This resource may not be applicable under some operating systems.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also


    [Prev: MODIFYBODYADDRESSES][Resources][TOC][Next: MONTHS]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/folupend.html0000644004705000001440000000671612332046111020640 0ustar ehoodusers MHonArc Resources: FOLUPEND
    [Prev: FOLUPBEGIN][Resources][TOC][Next: FOLUPLITXT]

    FOLUPEND


    Syntax

    Envariable

    N/A

    Element

    <FOLUPEND>
    markup...
    </FOLUPEND>

    Command-line Option

    N/A


    Description

    FOLUPEND defines the ending markup for the the explicit follow-up links after the message body on a message page.

    NOTE

    This resource is only applicable if the FOLREFS resource is on and the message has explicit follow-ups.


    Default Setting

    </ul></li></ul>
    

    Resource Variables

    N/A


    Examples

    See FOLUPBEGIN.


    Version

    2.1.0


    See Also

    FOLREFS, FOLUPBEGIN, FOLUPLITXT, REFSBEGIN, REFSEND, REFSLITXT


    [Prev: FOLUPBEGIN][Resources][TOC][Next: FOLUPLITXT]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/labelend.html0000644004705000001440000000643412332046111020567 0ustar ehoodusers MHonArc Resources: LABELEND
    [Prev: LABELBEG][Resources][TOC][Next: LABELSTYLES]

    LABELEND


    Syntax

    Envariable

    N/A

    Element

    <LABELEND>
    markup ...
    </LABELEND>

    Command-line Option

    N/A


    Description

    LABELEND represents the end markup of the label text of a message field.


    Default Setting

    :
    

    Resource Variables

    N/A


    Examples

    See FIELDSBEG for an example usage of this resource.


    Version

    2.0


    See Also

    EXCS, FIELDORDER, FIELDSBEG, FIELDSEND, FIELDSTYLES, FLDBEG, FLDEND, LABELBEG, LABELSTYLES


    [Prev: LABELBEG][Resources][TOC][Next: LABELSTYLES]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/perlinc.html0000644004705000001440000001043512332046111020451 0ustar ehoodusers MHonArc Resources: PERLINC
    [Prev: OUTDIR][Resources][TOC][Next: POSIXSTRFTIME]

    PERLINC


    Syntax

    Envariable

    M2H_PERLINC=path1:path2:...:pathN

    Element

    <PERLINC>
    path1:path2:...
    pathi:...:pathN
    </PERLINC>

    Command-line Option

    -perlinc path1:path2:...:pathN


    Description

    PERLINC defines a list of paths to search for MIME filters. When setting the PERLINC resource, the filenames are separated by colons (or semicolons under MSDOS/Windows). Line-breaks can be used to separate filenames if setting PERLINC via the PERLINC element.

    PERLINC augments the @INC array in Perl. The paths listed in PERLINC will be searched before the paths in @INC.

    NOTE:

    During the installation of MHonArc, the MHonArc library location gets prepended to @INC.


    Default Setting

    Empty.


    Resource Variables

    N/A


    Examples

    When hooking in your own MIME filters, you may want to put all the source libraries in a single location for maintenance purposes. Therefore, you will need to define PERLINC similiar to the following:

    <PerlINC>
    /usr/local/lib/MHonArc/filters
    </PerlINC>
    

    Version

    1.0


    See Also

    MIMEFILTERS


    [Prev: OUTDIR][Resources][TOC][Next: POSIXSTRFTIME]

    $Date: 2005/05/13 18:50:39 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/authsort.html0000644004705000001440000000600212332046111020661 0ustar ehoodusers MHonArc Resources: AUTHSORT
    [Prev: AUTHOREND][Resources][TOC][Next: BOTLINKS]

    AUTHSORT


    Syntax

    Envariable

    M2H_AUTHSORT=[ 0 | 1 ]

    Element

    <AUTHSORT>
    <NOAUTHSORT>

    Command-line Option

    -authsort
    -noauthsort


    Description

    When AUTHSORT is set, messages are sorted by author in the main index.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    SORT, SUBSORT


    [Prev: AUTHOREND][Resources][TOC][Next: BOTLINKS]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fromfields.html0000644004705000001440000000764512332046111021160 0ustar ehoodusers MHonArc Resources: FROMFIELDS
    [Prev: FORCE][Resources][TOC][Next: GENIDX]

    FROMFIELDS


    Syntax

    Envariable

    M2H_FROMFIELDS=field1:field2:...:fieldN

    Element

    <FROMFIELDS>
    field1:field2:...:fieldN
    </FROMFIELDS>

    Command-line Option

    -fromfields field1:field2:...:fieldN


    Description

    FROMFIELDS specify the message header fields MHonArc will search to determine who the author of a message is (which determines the value of the $FROM*$ resource variables). Each field will be checked in the ordered specified.

    The value of the FROMFIELDS is a colon separated list of message header fields to check.


    Default Setting

    from:mail-reply-to:reply-to:return-path:apparently-from:sender:resent-sender
    

    This resource is intended to reflect who the author is and not necessarily where replies of the message should be directed. This is why the From: field has higher precendence than the reply-to fields. However, if it is desired that it reflect where replies should be directed, then put mail-reply-to and reply-to first.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.1.2


    See Also

    DATEFIELDS


    [Prev: FORCE][Resources][TOC][Next: GENIDX]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnexttoplinkia.html0000644004705000001440000003015712332046112022076 0ustar ehoodusers MHonArc Resources: TNEXTTOPLINKIA
    [Prev: TNEXTTOPLINK][Resources][TOC][Next: TOPLINKS]

    TNEXTTOPLINKIA


    Syntax

    Envariable

    N/A

    Element

    <TNEXTTOPLINKIA>
    markup
    </TNEXTTOPLINKIA>

    Command-line Option

    N/A


    Description

    TNEXTTOPLINKIA defines the replacement markup for the resource variable $LINK(TNEXTTOP)$ when there is no next discussion thread. See TNEXTTOPLINK for the replacement markup used when there is a next discussion thread.


    Default Setting

    [Next Thread]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTTOPLINK


    [Prev: TNEXTTOPLINK][Resources][TOC][Next: TOPLINKS]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/textencode.html0000644004705000001440000004520212332046112021160 0ustar ehoodusers MHonArc Resources: TEXTENCODE
    [Prev: TEXTCLIPFUNC][Resources][TOC][Next: TFIRSTPGLINK]

    TEXTENCODE


    Syntax

    Envariable

    N/A

    Element

    <TEXTENCODE>
    charset; perl_function; source_file
    </TEXTENCODE>

    Command-line Option

    N/A


    Description

    TEXTENCODE allows you to specify a destination character encoding for all message text data. For each message read, textual data, -- including message header fields and text body parts -- is translated from the charset(s) used in the message to the charset specified by the TEXTENCODE resource.

    For example, the following resource setting,

    <TextEncode>
    utf-8; MHonArc::UTF8::to_utf8; MHonArc/UTF8.pm
    </TextEncode>
    

    converts message text to UTF-8 (Unicode) by using the MHonArc::UTF8::to_utf8 function. List of available encoding functions is provided below.

    NOTE:

    The terms character set (charset) and character encoding are used interchangeably within MHonArc documentation. The reasoning is charset is used within the MIME RFCs, but it blurs the concepts of character encoding and coded characer set and probably a few other things. For the purposes of this document, such details are not really necessary, but if you want to learn more, see Unicode Technical Report #17: Character Encoding Model and Character Set Considered Harmful.

    The syntax of the TEXTENCODE resource is as follows:

    charset;routine-name;file-of-routine

    The definition of each semi-colon-separated value is as follows:

    charset

    Character set name. See the CHARSETCONVERTERS and CHARSETALIASES for character sets MHonArc is aware of. The official list of registered character sets for use on the Internet is available from IANA.

    routine-name

    The actual routine name of the encoder. The name should be fully qualified by the package it is defined in (e.g. "mypackage::filter").

    file-of-routine

    The name of the file that defines routine-name. If the file is not a full pathname, MHonArc finds the file by looking in the standard include paths of Perl, and the paths specified by the PERLINC resource.

    TEXTENCODE vs CHARSETCONVERTERS

    It is important to clarify the differences between TEXTENCODE and CHARSETCONVERTERS since reading about both resources may generate confusion.

    The main difference between TEXTENCODE and CHARSETCONVERTERS is that TEXTENCODE is applied as the message is read, before the message is converted to HTML. TEXTENCODE's primary role is converting characters from one charset to another charset. CHARSETCONVERTERS' role is to convert characters into HTML.

    The following crude text diagram shows the path message text data takes when converted to HTML:

      message-text --> TEXTENCODE --> CHARSETCONVERTERS --> HTML
    

    In addition, TEXTENCODE is applied only once to message text data. Since MHonArc stores some message header information in the archive database, the message header text is stored in "raw" form, which can include non-ASCII MIME encoded data like the following:

    From: =?US-ASCII?Q?Earl_Hood?= <earl@earlhood.com>
    Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
     =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
    

    Therefore, when a resource variable like $SUBJECT$ is used, the =?ISO-8859-1?B?SWYgeW9... data must be parsed and converted every time.

    If TEXTENCODE is active, the message subject =?ISO-8859-1?B?SWYgeW9... is parsed and translated to the destination encoding when the message is first parsed, with the final result stored in the archive database. The non-ASCII MIME encoding is removed, and it no longer has to be parsed each time $SUBJECT$ is used.

    In either case, CHARSETCONVERTERS is still invoked, but in the former =?ISO-8859-1?B?SWYgeW9... case, CHARSETCONVERTERS must handle the various character sets specified. In the TEXTENCODE case, CHARSETCONVERTERS only has to deal with the charset specified in the TEXTENCODE resource. Therefore, using TEXTENCODE vastly simplifies the CHARSETCONVERTERS resource value, where only the default converter needs to be defined. This is highlighted in the Usage sections for the Available Encoders listed below.

    Writing Encoders

    NOTE:

    Before writing your own, first check out the list of available encoders to see if one already exists that satisfies your needs.

    If you want to write your own text encode for use in MHonArc, you need to know the Perl programming language. The following information assumes you know Perl.

    Function Interface of Encoder

    MHonArc interfaces with encoder by calling a routine with a specific set of arguments. The prototype of the interface routine is as follows:

    sub text_encoder {
        my($text_ref, $from_charset, $to_charset) = @_;
    
        # code here
    
        # The last statement should be the return value, unless an
        # explicit return is done. See the following for the format of the
        # return value.
    }
    
    Parameter Descriptions
    $text_ref

    A reference to the string to encode. The routine should do the text encoding in-place.

    $from_charset

    Name of the source character encoding of $$text_ref.

    $to_charset

    The destination encoding for $$text_ref. $to_charset is be set to the charset component of the TEXTENCODE resource value.

    Return Value

    On error, the routine should return undef. Otherwise, it should return any true value.

    CAUTION:

    If your routine encounters an error, try to preserve the original value of $$text_ref or data may be lost in archive output.


    Available Encoders

    The standard MHonArc distribution provides the following character encoding routines:

    MHonArc::UTF8::to_utf8

    Usage
    <TextEncode>
    utf-8; MHonArc::UTF8::to_utf8; MHonArc/UTF8.pm
    </TextEncode>
    
    <-- With data translated to UTF-8, it simplifies CHARSETCONVERTERS -->
    <CharsetConverters override>
    default; mhonarc::htmlize
    </CharsetConverters>
    
    <-- Need to also register UTF-8-aware text clipping function -->
    <TextClipFunc>
    MHonArc::UTF8::clip; MHonArc/UTF8.pm
    </TextClipFunc>
    
    Description

    MHonArc::UTF8::to_utf8 converts text to UTF-8 (Unicode). Unicode is designed to represents all characters of all languages. UTF-8 is an encoding of Unicode that is 8-bit clean and immune to byte ordering of computer systems. Most modern browsers support UTF-8 and UTF-8 is a good choice if dealing with multi-lingual archives.

    MHonArc::UTF8::to_utf8 is designed to work with older versions of Perl that do not support UTF-8, but also utilizing UTF-8 aware modules in later versions of Perl. MHonArc::UTF8 checks for the following, in order of preference, when loaded:

    1. Encode: Encode comes standard with Perl v5.8 and provides conversion capbilities between various character encodings.

    2. Unicode::MapUTF8: Unicode::MapUTF8 is available via CPAN, and provides conversion capabilities between various character encodings to, and from, UTF-8. Unicode::MapUTF8 depends on other modules, see Unicode::MapUTF8 module documentation for details.

    3. fallback: If none of the above are present, then the fallback implementation is used. Fallback code is written in pure Perl, so it may not be as efficient as the modules listed above. However, many popular character encodings are supported.

      NOTE:

      Fallback code is automatically invoked for character encodings not recognized by the above listed modules.

    MHonArc::Encode::from_to

    Usage
    <TextEncode>
    charset; MHonArc::Encode::from_to; MHonArc/Encode.pm
    </TextEncode>
    
    Description

    MHonArc::Encode::from_to converts texts to the specified charset encoding. This routine is useful for locales that prefer to have all archive data translated to the locale-prefered character set.

    NOTE:

    Since most locale-specific character sets are not universal sets (like Unicode), characters may be lost during translation.

    NOTE:

    For UTF-8 encoding, use MHonArc::UTF8::to_utf8 instead since it provides more robust fallback capabilities and works under non-UTF-8-aware versions of Perl.

    MHonArc::Encode:from_to works only if one of the following modules are available, in order of preference, when MHonArc::Encode is located:

    1. Encode: Encode comes standard with Perl v5.8 and provides conversion capbilities between various character encodings.

    2. Unicode::MapUTF8: Unicode::MapUTF8 is available via CPAN, and provides conversion capabilities between various character encodings to, and from, UTF-8. Unicode::MapUTF8 depends on other modules, see Unicode::MapUTF8 module documentation for details.

    No fallback implentations are available.

    If converting to a multi-byte encoding, the default TEXTCLIPFUNC may not be adequate. Therefore, you may have to avoid using resource variables with maximum length specifiers.

    NOTE:

    There is support for ISO-2022-JP (Japanese). The following resource settings should serve as a basis when encoding to iso-2022-jp:

    <TextEncode>
    iso-2022-jp; MHonArc::Encode::from_to; MHonArc/Encode.pm
    </TextEncode>
    
    <-- Make sure to use iso-2022-jp aware charset converter -->
    <CharsetConverters override>
    default; iso_2022_jp::str2html; iso2022jp.pl
    </CharsetConverters>
    
    <-- Need to also register iso-2022-jp-aware text clipping function -->
    <TextClipFunc>
    iso_2022_jp::clip; iso2022jp.pl
    </TextClipFunc>
        

    For more information about using MHonArc in a Japanese locale, see (documents in Japanese): <http://www.mhonarc.jp/>.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    See the utf-8-encode.mrc for the basis of generating UTF-8-based archives via TEXTENCODE.

    If in a Japanese locale, the following generates archives in iso-2022-jp:

    <TextEncode>
    iso-2022-jp; MHonArc::Encode::from_to; MHonArc/Encode.pm
    </TextEncode>
    
    <-- Make sure to use iso-2022-jp aware charset converter -->
    <CharsetConverters override>
    default; iso_2022_jp::str2html; iso2022jp.pl
    </CharsetConverters>
    
    <-- Need to also register iso-2022-jp-aware text clipping function -->
    <TextClipFunc>
    iso_2022_jp::clip; iso2022jp.pl
    </TextClipFunc>
    
    <IdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$IDXTITLE$</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
    </head>
    <body>
    <h1>$IDXTITLE$</h1>
    </IdxPgBegin>
    
    <TIdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$TIDXTITLE$</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
    </head>
    <body>
    <h1>$TIDXTITLE$</h1>
    </TIdxPgBegin>
    
    
    <MsgPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$SUBJECTNA$</title>
    <link rev="made" href="mailto:$FROMADDR$">
    <meta http-equiv="Content-Type" content="text/html; charset=iso-2022-jp">
    </head>
    <body>
    </MsgPgBegin>
    

    Version

    2.6.0


    See Also

    CHARSETCONVERTERS, PERLINC, TEXTCLIPFUNC


    [Prev: TEXTCLIPFUNC][Resources][TOC][Next: TFIRSTPGLINK]

    $Date: 2005/05/13 18:50:39 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicelinoneend.html0000644004705000001440000003227712332046112022205 0ustar ehoodusers MHonArc Resources: TSLICELINONEEND
    [Prev: TSLICELINONE][Resources][TOC][Next: TSLICELITXT]

    TSLICELINONEEND


    Syntax

    Envariable

    N/A

    Element

    <TSLICELINONEEND>
    markup
    </TSLICELINONEEND>

    Command-line Option

    N/A


    Description

    Ending markup for a missing message in thread slice. This resource functions the same as TLINNONEEND, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TLINNONEEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICELINONE][Resources][TOC][Next: TSLICELITXT]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevinbuttonia.html0000644004705000001440000003026612332046112022257 0ustar ehoodusers MHonArc Resources: TPREVINBUTTONIA
    [Prev: TPREVINBUTTON][Resources][TOC][Next: TPREVINLINK]

    TPREVINBUTTONIA


    Syntax

    Envariable

    N/A

    Element

    <TPREVINBUTTONIA>
    markup
    </TPREVINBUTTONIA>

    Command-line Option

    N/A


    Description

    TPREVINBUTTONIA defines the replacement markup for the resource variable $BUTTON(TPREVIN)$ when there is no previous message from the current message within a discussion thread. See TPREVINBUTTON for the replacement markup used with there is a previous message.


    Default Setting

    [Prev in Thread]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TPREVINBUTTON


    [Prev: TPREVINBUTTON][Resources][TOC][Next: TPREVINLINK]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/thead.html0000644004705000001440000002040212332046112020076 0ustar ehoodusers MHonArc Resources: THEAD
    [Prev: TFOOT][Resources][TOC][Next: THREAD]

    THEAD


    Syntax

    Envariable

    N/A

    Element

    <THEAD>
    markup ...
    </THEAD>

    Command-line Option

    N/A


    Description

    THEAD defines the header markup of thread index pages. It is also responsible for defining the opening markup for the thread listing.


    Default Setting

    If MULTIPG is on:

    <THead>
    <ul>
    <li><a href="$IDXFNAME$">Main Index</a></li>
    </ul>
    $PGLINK(TPREV)$$PGLINK(TNEXT)$
    <hr>
    <ul>
    </THead>
    

    If MULTIPG is off:

    <THead>
    <ul>
    <li><a href="$IDXFNAME$">Main Index</a></li>
    </ul>
    <hr>
    <ul>
    </THead>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    The following example sets THEAD to contain page links for a multi-page thread index:

    <THead>
    <ul>
    <li><a href="$IDXFNAME$">Date Index</a></li>
    </ul>
    <hr>
    <table border=0 width="100%">
    <tbody>
    <tr align="center">
    <th colspan=4>Page $PAGENUM$ of $NUMOFPAGES$
    <tr>
    <td align="left">$PGLINK(TPREV)$
    <td align="right">[<a href="$TFIRSTPG(TFIRST)$">First Page</a>]
    <td align="left">[<a href="$PG(TLAST)$">Last Page</a>]
    <td align="right">$PGLINK(TNEXT)$
    </tbody>
    </table>
    <hr>
    <ul>
    </THead>
    

    Version

    1.1


    See Also

    MULTIPG, TFOOT, TNEXTPGLINK, TPREVPGLINK


    [Prev: TFOOT][Resources][TOC][Next: THREAD]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextpglink.html0000644004705000001440000001652212332046112021370 0ustar ehoodusers MHonArc Resources: TNEXTPGLINK
    [Prev: TNEXTLINKIA][Resources][TOC][Next: TNEXTPGLINKIA]

    TNEXTPGLINK


    Syntax

    Envariable

    N/A

    Element

    <TNEXTPGLINK>
    markup ...
    </TNEXTPGLINK>

    Command-line Option

    N/A


    Description

    TNEXTPGLINK defines the value for the $PGLINK(TNEXT)$ resource variable when there is a next page to the current page of the thread index.

    See the TNEXTPGLINKIA for defining the value of $PGLINK(TNEXT)$ when there is no next page.


    Default Setting

    <TNextPgLink chop>
    [<a href="$PG(TNEXT)$">Next Page</a>]
    </TNextPgLink>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None


    Version

    2.0


    See Also

    MULTIPG, THEAD, TNEXTPGLINKIA, TPREVPGLINK, TPREVPGLINKIA


    [Prev: TNEXTLINKIA][Resources][TOC][Next: TNEXTPGLINKIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/otherindexes.html0000644004705000001440000001572712332046111021527 0ustar ehoodusers MHonArc Resources: OTHERINDEXES
    [Prev: NOTETEXT][Resources][TOC][Next: OUTDIR]

    OTHERINDEXES


    Syntax

    Envariable

    M2H_OTHERINDEXES=rcfile1:rcfile2:...:rcfileN

    Element

    <OTHERINDEXES>
    rcfile1:rcfile2:...
    rcfilei:...:rcfileN
    </OTHERINDEXES>

    Command-line Option

    -otherindexes rcfile1:rcfile2:...:rcfileN


    Description

    OTHERINDEXES defines a list of resource files that define other index pages to generate when creating, or updating, an archive. When setting the OTHERINDEXES resource, the filenames are separated by colons (or semicolons under MSDOS/Windows). Line-breaks can be used to separate filenames if setting OTHERINDEXES via the OTHERINDEXES element.

    CAUTION

    It is very important that each resource file specified defines the MAIN or THREAD resource to determine the type of index to create. Also, the IDXFNAME or TIDXFNAME resource (and IDXPREFIX or TIDXPREFIX resource if MULTIPG is active) must be defined to prevent overwriting of the default index pages.

    WARNING

    Make sure OTHERINDEXES does NOT list the file OTHERINDEXES is defined in. This will cause an infinite loop.

    WARNING

    OTHERINDEXES resource file should NOT define the OTHERINDEXES resource. Unpredictable results may occur, possibly infinite recursion.

    MHonArc will only store the name of the resource files listed in the database. Therefore, for any subsequent updates of the archive, the extra index resource files must exist inorder to generate the extra index pages.

    All filenames are treated relative to the current working directory or the archive directory, except for absolute pathnames. The following shows the search order MHonArc uses to find resource files listed in OTHERINDEXES:

    1. Current working directory.
    2. Same directory that the first resource file was read as specified by the RCFILE resource.
    3. User's home directory.
    4. Archive directory.
    5. Perl's @INC library search page.
    NOTE

    When creating resource files for extra indexes, make sure to explicitly set all resources desired since some resource settings may no longer be set to the defaults due to database settings or from a previously read resource file. Ie. MHonArc does not reset to the default settings before reading the other resource files.

    NOTE

    Archive navigational resources, like LISTBEGIN, THEAD, TOPLINKS, and BOTLINKS, are NOT automatically modified to include navigational links related to the other indexes created (even if using the default settings). Therefore, you will have to explicily define these resources if you want navigational links for the other indexes.


    Default Setting

    Nil


    Resource Variables

    N/A


    Examples

    Since MHonArc only creates two indexes by default (the main/date index and the thread index), you can use OTHERINDEXES to define other index formats for navigating your archive. A possible setting for OTHERINDEXES may look like this:

    <OtherIndexes>
    reversedateidx.mrc
    subjectidx.mrc
    </OtherIndexes>
    

    Version

    1.2


    See Also

    IDXFNAME, IDXPREFIX, MULTIPG, TIDXFNAME, TIDXPREFIX, MAIN, THREAD


    [Prev: NOTETEXT][Resources][TOC][Next: OUTDIR]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1997-2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicetopend.html0000644004705000001440000003226712332046112021522 0ustar ehoodusers MHonArc Resources: TSLICETOPEND
    [Prev: TSLICETOPBEGCUR][Resources][TOC][Next: TSLICETOPENDCUR]

    TSLICETOPEND


    Syntax

    Envariable

    N/A

    Element

    <TSLICETOPEND>
    markup
    </TSLICETOPEND>

    Command-line Option

    N/A


    Description

    Thread slice markup for the end of a thread. This resource functions the same as TTOPEND, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TTOPEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPENDCUR


    [Prev: TSLICETOPBEGCUR][Resources][TOC][Next: TSLICETOPENDCUR]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevlink.html0000644004705000001440000003202212332046112021030 0ustar ehoodusers MHonArc Resources: TPREVLINK
    [Prev: TPREVINLINKIA][Resources][TOC][Next: TPREVLINKIA]

    TPREVLINK


    Syntax

    Envariable

    N/A

    Element

    <TPREVLINK>
    markup ...
    </TPREVLINK>

    Command-line Option

    N/A


    Description

    TPREVLINK defines the value for the $LINK(TPREV)$ resource variable when there is a previous message to the current message according to the message list order of the thread index. TPREVLINK is analagous to TPREVBUTTON, but is intended to provide a more descriptive link to the previous message.

    See TPREVLINKIA for defining the value of $LINK(TPREV)$ when there is no previous message.


    Default Setting

    <TPrevLink>
    <li>Previous by Thread:
    <strong><a href="$MSG(TPREV)$">$SUBJECT(TPREV)$</a></strong>
    </li>
    </TPrevLink>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows an alternative to the default setting by add the author of the previous message:

    <TPrevLink>
    <li>Prev by Thread:
    <strong><a href="$MSG(TPREV)$">$SUBJECT(TPREV)$</a></strong>,
    <em>$FROMNAME(TPREV)$</em>
    </li>
    </TPrevLink>
    

    Version

    2.0


    See Also

    BOTLINKS, TNEXTLINK, TNEXTLINKIA, TPREVLINKIA


    [Prev: TPREVINLINKIA][Resources][TOC][Next: TPREVLINKIA]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/prevlinkia.html0000644004705000001440000003051512332046111021162 0ustar ehoodusers MHonArc Resources: PREVLINKIA
    [Prev: PREVLINK][Resources][TOC][Next: PREVPGLINK]

    PREVLINKIA


    Syntax

    Envariable

    N/A

    Element

    <PREVLINKIA>
    markup ...
    </PREVLINKIA>

    Command-line Option

    N/A


    Description

    PREVLINKIA defines the value for the $LINK(PREV)$ resource variable when there is no previous message to the current message according to the message list order of the main index.

    See PREVLINK for defining the value of $LINK(PREV)$ when there is a previous message.


    Default Setting

    Nil.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    1.2


    See Also

    BOTLINKS, NEXTLINK, NEXTLINKIA, PREVLINK, TPREVLINK, TPREVLINKIA


    [Prev: PREVLINK][Resources][TOC][Next: PREVPGLINK]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/decodeheads.html0000644004705000001440000001003712332046111021243 0ustar ehoodusers MHonArc Resources: DECODEHEADS
    [Prev: DBFILEPERMS][Resources][TOC][Next: DEFCHARSET]

    DECODEHEADS


    Syntax

    Envariable

    M2H_DECODEHEADS=[ 0 | 1 ]

    Element(s)

    <DECODEHEADS>
    <NODECODEHEADS>

    Command-line Option(s)

    -decodeheads
    -nodecodeheads


    Description

    MIME encoded message header data is decoded when creating HTML output and the (relevant) data stored in the database stays in encoded form. The DECODEHEADS resource can be set to decode "decode-only" charsets (as specified by the CHARSETCONVERTERS resource) when message headers are read. This will cause decode-only charsets to be stored in decoded "raw" form. Regular MIME processing is still done to still-encoded data when generating output.

    This resource may be useful to decode known character sets that are handle by default in the current locale. This will reduce the overhead performed each time MHonArc translates message header data for inclusion in generated pages.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    The following will tell MHonArc to just decode all non-ASCII encoded data, causing all character data to be treated by the default locale setting:

    <DecodeHeads>
    <CharsetConverters override>
    plain;          mhonarc::htmlize;
    default;        -decode-
    </CharsetConverters>
    

    Version

    2.0


    See Also

    CHARSETCONVERTERS


    [Prev: DBFILEPERMS][Resources][TOC][Next: DEFCHARSET]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/annotate.html0000644004705000001440000001444412332046111020632 0ustar ehoodusers MHonArc Resources: ANNOTATE
    [Prev: AFS][Resources][TOC][Next: ARCHIVE]

    ANNOTATE


    Syntax

    Envariable

    M2H_ANNOTATE=[ 0 | 1 ]

    Element

    N/A

    Command-line Option

    -annotate


    Description

    ANNOTATE is used to add an annotation to a message, or multiple messages. Annotation text is specified by the NOTETEXT resource. The messages to apply the annotation to are specify as arguments to the command-line. Messages can be specified by message-id or message number.

    See Examples below on how to use ANNOTATE. See the NOTE resource on how to display annotations in archive pages.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    The following adds an annotation to message 15 of an archive:

    prompt> mhonarc -annotate -outdir /home/httpd/docs/mail \
    	-notetext "This is an annotation" 15
    

    Multiple -notetext can be specified if you want to keep the command-line cleaner for larger annotations. The following adds an annotation to the messages with a message-id of <34D622C8.C37760AB@example.com> and message number of 23:

    prompt> mhonarc -annotate -outdir /home/httpd/docs/mail \
    	-notetext "<p>This is the start of an annotation." \
    	-notetext "Here is some more text." \
    	-notetext "Here is some more text (again)." \
    	-notetext "The End.</p>" \
    	"34D622C8.C37760AB@example.com" 23
    

    All -notetext options text will be concatenated together to form the complete text of the annotation. Also, the text is treated as HTML markup, so HTML tagging can be used to provide formatting.

    Using the -notetext is convienent for small annotations, but it can be cumbersome for large ones. An alternative is to not specify -notetext. If not present, MHonArc will read the text of the annotation from standard input. For example:

    prompt> mhonarc -annotate -outdir /home/httpd/docs/mail 28 72
    Reading database ...
    Annotating messages in out ...
    Please enter note text (terminated with EOF char):
    <p>Here is some annotation text.  This will be applied to
    messages 28 and 72.  To tell MHonArc I am done with this text,
    I will terminate the text with my system's EOF character.
    ^D
    

    The ^D represents the EOF character and is not part of the annotation text. On Unix systems, this is normally Ctrl-D (holding down the Control key and pressing the D key). Under Windows, it is normally Ctrl-Z.

    The standard input method of specify annotation data allows annotation text to come for a file the output of another process. Here is an example of using the contents of a file as the text:

    prompt> mhonarc -annotate -outdir /home/httpd/docs/mail < somefile.html
    

    Which is equivalent to:

    prompt> cat somefile.html | mhonarc -annotate -outdir /home/httpd/docs/mail 
    

    The first version utilizes the command-line shell's ability to redirect a file's contents into a command's standard input. The second version is piping the output of the cat command to MHonArc. By the way, cat is a program that concatenates files and prints them to standard output (standard on Unix-based systems).


    Version

    2.3.0


    See Also

    NOTE, NOTEDIR, NOTETEXT


    [Prev: AFS][Resources][TOC][Next: ARCHIVE]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/gmtdatefmt.html0000644004705000001440000001465312332046111021157 0ustar ehoodusers MHonArc Resources: GMTDATEFMT
    [Prev: GENIDX][Resources][TOC][Next: GZIPEXE]

    GMTDATEFMT


    Syntax

    Envariable

    M2H_GMTDATEFMT=date-format

    Element

    <GMTDATEFMT>
    date-format
    </GMTDATEFMT>

    Command-line Option

    -gmtdatefmt date-format


    Description

    The GMTDATEFMT resource specifies the date format for the $GMTDATE$ resource variable (i.e. The system GMT date). The format is a string containing zero or more conversion specifications and regular characters. A conversion specification consists of the '%' character followed a character that determines the type of conversion.

    The following lists the possible conversion specifications:

    NOTE

    If POSIXSTRFTIME is set, the POSIX::strftime() function will be used. Therefore, there may be more conversion specifications available. See your system's strftime() manpage for specifics.

    Spec Value
    %% the % character
    %a abbreviated weekday name
    %A full weekday name
    %b abbreviated month name
    %B full month name
    %c appropriate date and time representation
    %d day of month [1,31]; single digits are preceded by 0
    %h abbreviated month name
    %H hour (24-hour clock) [0,23]; single digits are preceded by 0
    %I hour (12-hour clock) [1,12]; single digits are preceded by 0
    %j day number of year [1,366]; single digits are preceded by 0
    %m month number [1,12]; single digits are preceded by 0
    %M minute[00,59]; single digits are preceded by 0
    %p am or pm.
    %P AM or PM.
    %S seconds [00,61]
    %w weekday as a decimal number [0,6], with 0 representing Sunday
    %y year within century [00,99]
    %Y year, including the century (for example 1993)

    Setting GMTDATEFMT to a blank string will reset the resource to the default setting.


    Default Setting

    %a %b %d %H:%M:%S GMT %Y
    

    Resource Variables

    N/A


    Examples

    The following sets the GMT date to use the long weekday and month names and 12 hour am/pm time:

    <GMTDateFmt>
    %A %B %d %I:%M:%S %p GMT %y
    </GMTDateFmt>
    

    Version

    2.0


    See Also

    LOCALDATEFMT, MONTHS, MONTHSABR, MSGGMTDATEFMT, MSGLOCALDATEFMT, POSIXSTRFTIME, WEEKDAYS, WEEKDAYSABR


    [Prev: GENIDX][Resources][TOC][Next: GZIPEXE]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msghead.html0000644004705000001440000003003212332046111020420 0ustar ehoodusers MHonArc Resources: MSGHEAD
    [Prev: MSGGMTDATEFMT][Resources][TOC][Next: MSGIDLINK]

    MSGHEAD


    Syntax

    Envariable

    N/A

    Element

    <MSGHEAD>
    markup ...
    </MSGHEAD>

    Command-line Option

    N/A


    Description

    MSGHEAD defines the markup to occur at the head of each converted message page.


    Default Setting

    Nil


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    1.1.0


    See Also

    MSGFOOT, MSGPGBEGIN, MSGPGEND

    Page Layout


    [Prev: MSGGMTDATEFMT][Resources][TOC][Next: MSGIDLINK]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/news.html0000644004705000001440000000606612332046111017776 0ustar ehoodusers MHonArc Resources: NEWS
    [Prev: MULTIPG][Resources][TOC][Next: NEWSURL]

    NEWS


    Syntax

    Envariable

    M2H_NEWS=[ 0 | 1 ]

    Element(s)

    <NEWS>
    <NONEWS>

    Command-line Option(s)

    -news
    -nonews


    Description

    When NEWS is on, newsgroups listed in the Newsgroup field of a message header will be converted to news URL hyperlinks as defined by the NEWSURL resource.


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    NEWSURL, MAILTO


    [Prev: MULTIPG][Resources][TOC][Next: NEWSURL]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mailtourl.html0000644004705000001440000001427312332046111021031 0ustar ehoodusers MHonArc Resources: MAILTOURL
    [Prev: MAILTO][Resources][TOC][Next: MAIN]

    MAILTOURL


    Syntax

    Envariable

    M2H_MAILTOURL=URL-template

    Element

    <MAILTOURL>
    URL-template
    </MAILTOURL>

    Command-line Option

    -mailtourl URL-template


    Description

    The MAILTOURL defines the URL template for hyperlinking mail addresses in message headers when the MAILTO resource is active.

    NOTE:

    The MAILTOURL resource has different rules for variable expansion. If a variable does not exactly match the set of variables available for the MAILTOURL, the variable text will be taken literally as part of the element content. Therefore, a single "$" can be used to represent a "$" character.

    Also, variables in the MAILTOURL should NOT have ":NU" modifier. This will prevent the variables from be recognized. MHonArc will automatically treat the replacement value as a part of a URL string.


    Default Setting

    mailto:$TO$
    

    Resource Variables

    VariableValue
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $MSGGMTDATE$ GMT date of current message.
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $TO$ The email address (MAILTOURL only).
    $TOADDRDOMAIN$ The e-mail address domain (MAILTOURL only).
    $TOADDRNAME$ The e-mail address "username" (or local-part) (MAILTOURL only).

    Examples

    The following example defines how MAILTOURL can be used to have e-mail addresses linked to a CGI program:

    <MailToURL>
    /cgi-bin/mailform.cgi?to=$TO$;subject=$SUBJECT$;srcid=$MSGID$
    </MailToURL>
    

    Version

    1.0


    See Also

    MAILTO, NEWSURL


    [Prev: MAILTO][Resources][TOC][Next: MAIN]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/attachmentdir.html0000644004705000001440000001360012332046111021641 0ustar ehoodusers MHonArc Resources: ATTACHMENTDIR
    [Prev: ARCHIVE][Resources][TOC][Next: ATTACHMENTURL]

    ATTACHMENTDIR


    Syntax

    Envariable

    M2H_ATTACHMENTDIR=pathname

    Element

    <ATTACHMENTDIR>
    pathname
    </ATTACHMENTDIR>

    Command-line Option

    -attachmentdir pathname


    Description

    ATTACHMENTDIR specifies the pathname directory location attachments will be saved. If ATTACHMENTDIR is a relative pathname, it will be relative to OUTDIR. For example, if OUTDIR is set to:

    /var/www/html/archive
    

    And ATTACHMENTDIR is set to:

    attachments
    

    Then attachment files will be saved to

    /var/www/html/archive/attachments
    

    If ATTACHMENTDIR is not set, attachments will be saved in OUTDIR.

    When defining ATTACHMENTDIR, the ATTACHMENTURL resource should also be set.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    By default, attachment files are written in the same directory as message and index pages. However, if you would like to have all attachments written in a sub-directory of the archive directory, you can do something like the following:

    <!-- Have attachments written to a sub-directory -->
    <AttachmentDir>
    attachments
    </AttachmentDir>
    
    <!-- Define base URL to attachment directory. -->
    <AttachmentURL>
    attachments
    </AttachmentURL>
    

    Notice how ATTACHMENTURL is equal to ATTACHMENTDIR. When ATTACHMENTDIR is set to a relative pathname, ATTACHMENTURL should be set to the same value. This way, if archive files are moved to a different location on the file system, links to attachments will not break.

    If maintaining multiple archives, and to provide for better security, you may want have all attachments for all archives written to a single location. The attachment location can then have more restrictive HTTP server and file system settings to provide further protection against malicious attachments.

    The following example shows ATTACHMENTDIR being set to a central location and then defining ATTACHMENTURL so MHonArc knows what base URL to use when creating links to attachment files:

    <!-- Have all attachments written to central location -->
    <AttachmentDir>
    /var/www/html/archives/attachments
    </AttachmentDir>
    
    <!-- Define base URL to attachment directory. -->
    <AttachmentURL>
    /archives/attachments
    </AttachmentURL>
    

    In this case, ATTACHMENTURL does not equal ATTACHMENTDIR since ATTACHMENTDIR is a full pathname. Therefore, ATTACHMENTURL must be set to a value tha HTTP server will resolve to the value of ATTACHMENTDIR.

    NOTE:

    In this example, we do not include the "http://hostname" part of the URL since attachment files will be served up from the same HTTP server as other archive pages.


    Version

    2.6.9


    See Also

    ATTACHMENTURL, OUTDIR


    [Prev: ARCHIVE][Resources][TOC][Next: ATTACHMENTURL]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msggmtdatefmt.html0000644004705000001440000001434312332046111021662 0ustar ehoodusers MHonArc Resources: MSGGMTDATEFMT
    [Prev: MSGFOOT][Resources][TOC][Next: MSGHEAD]

    MSGGMTDATEFMT


    Syntax

    Envariable

    M2H_MSGGMTDATEFMT=date-format

    Element

    <MSGGMTDATEFMT>
    date-format
    </MSGGMTDATEFMT>

    Command-line Option

    -msggmtdatefmt date-format


    Description

    The MSGGMTDATEFMT resource specifies the date format for the $MSGGMTDATE$ resource variable (i.e. The GMT date of the current message). The format is a string containing zero or more conversion specifications and regular characters. A conversion specification consists of the '%' character followed a character that determines the type of conversion.

    The following lists the possible conversion specifications:

    NOTE

    If POSIXSTRFTIME is set, the POSIX::strftime() function will be used. Therefore, there may be more conversion specifications available. See your system's strftime() manpage for specifics.

    Spec Value
    %% the % character
    %a abbreviated weekday name
    %A full weekday name
    %b abbreviated month name
    %B full month name
    %c appropriate date and time representation
    %d day of month [1,31]; single digits are preceded by 0
    %h abbreviated month name
    %H hour (24-hour clock) [0,23]; single digits are preceded by 0
    %I hour (12-hour clock) [1,12]; single digits are preceded by 0
    %j day number of year [1,366]; single digits are preceded by 0
    %m month number [1,12]; single digits are preceded by 0
    %M minute[00,59]; single digits are preceded by 0
    %p am or pm.
    %P AM or PM.
    %S seconds [00,61]
    %w weekday as a decimal number [0,6], with 0 representing Sunday
    %y year within century [00,99]
    %Y year, including the century (for example 1993)

    Setting MSGGMTDATEFMT to a blank string will reset the resource to the default setting.


    Default Setting

    %a %b %d %H:%M:%S GMT %Y
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    GMTDATEFMT, LOCALDATEFMT, MONTHS, MONTHSABR, POSIXSTRFTIME, WEEKDAYS, WEEKDAYSABR


    [Prev: MSGFOOT][Resources][TOC][Next: MSGHEAD]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsliceindentbeg.html0000644004705000001440000003232312332046112022161 0ustar ehoodusers MHonArc Resources: TSLICEINDENTBEG
    [Prev: TSLICEEND][Resources][TOC][Next: TSLICEINDENTEND]

    TSLICEINDENTBEG


    Syntax

    Envariable

    N/A

    Element

    <TSLICEINDENTBEG>
    markup
    </TSLICEINDENTBEG>

    Command-line Option

    N/A


    Description

    Thread slice markup for opening a level when continuing a broken thread. This resource functions the same as TINDENTBEG, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TINDENTBEG resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICEEND][Resources][TOC][Next: TSLICEINDENTEND]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/main.html0000644004705000001440000000572512332046111017747 0ustar ehoodusers MHonArc Resources: MAIN
    [Prev: MAILTOURL][Resources][TOC][Next: MAXSIZE]

    MAIN


    Syntax

    Envariable

    M2H_MAIN=[ 0 | 1 ]

    Element(s)

    <MAIN>
    <NOMAIN>

    Command-line Option(s)

    -main
    -nomain


    Description

    If MAIN is on, MHonArc will create the main index page(s) for the archive. If off, no main index is created.


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    THREAD


    [Prev: MAILTOURL][Resources][TOC][Next: MAXSIZE]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgpgssmarkup.html0000644004705000001440000003037312332046111021723 0ustar ehoodusers MHonArc Resources: MSGPGSSMARKUP
    [Prev: MSGPGS][Resources][TOC][Next: MSGPREFIX]

    MSGPGSSMARKUP


    Syntax

    Envariable

    N/A

    Element

    <MSGPGSSMARKUP>
    markup...
    </MSGPGSSMARKUP>

    Command-line Option

    N/A


    Description

    MSGPGSSMARKUP defines the markup that occurs at the very beginning of message pages. This resource may be used to include any server-side processing markup that must occur before any HTML-related markup.


    Default Setting

    The value of the SSMARKUP resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.8


    See Also

    IDXPGSSMARKUP, SSMARKUP, TIDXPGSSMARKUP

    Page Layout


    [Prev: MSGPGS][Resources][TOC][Next: MSGPREFIX]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/force.html0000644004705000001440000001005712332046111020113 0ustar ehoodusers MHonArc Resources: FORCE
    [Prev: FOLUPLITXT][Resources][TOC][Next: FROMFIELDS]

    FORCE


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -force


    Description

    FORCE causes MHonArc to override the lock on the archive and perform the operations requested.

    When MHonArc processes an archive, it locks the archive so other MHonArc processes do not try to modify the archive at the same time. However, if MHonArc abnormally terminates, the lock may not be released, causing all future MHonArc processes to fail in performing any archive operations. If you get a message from MHonArc that it cannot lock an archive, and you know the archive is not in use by another MHonArc process, use the FORCE resource.

    NOTE

    The alternative approach is to manually remove the lockfile (see LOCKFILE).

    The FORCE option should be used with care to avoid archive corruption. FORCE is active only for the current MHonArc process.

    WARNING

    Having two, or more, MHonArc processes processing the same archive with FORCE enabled can lead to archive corruption.

    MHonArc will still try to perform a normal lock before forcing the issue.


    Default Setting

    N/A


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.2.2


    See Also

    LOCKDELAY, LOCKFILE, LOCKTRIES


    [Prev: FOLUPLITXT][Resources][TOC][Next: FROMFIELDS]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/litemplate.html0000644004705000001440000003040312332046111021152 0ustar ehoodusers MHonArc Resources: LITEMPLATE
    [Prev: LISTEND][Resources][TOC][Next: LOCALDATEFMT]

    LITEMPLATE


    Syntax

    Envariable

    N/A

    Element

    <LITEMPLATE>
    markup ...
    </LITEMPLATE>

    Command-line Option

    N/A


    Description

    The LITEMPLATE resource specifies the markup for an entry in the main index message list. This resource works in conjuction with LITEMPLATE and LISTEND resources to format the main index page(es).


    Default Setting

    <LiTemplate>
    <li><strong>$SUBJECT$</strong>
    <ul><li><em>From</em>: $FROM$</li></ul>
    </li>
    </LiTemplate>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    Here is an example that lists each message with subject and the name of the person who wrote the message:

    <LiTemplate>
    <li><strong>$SUBJECT$</strong>,
    <em>$FROMNAME$</em>
    </li>
    </LiTemplate>
    

    Version

    1.0


    See Also

    LISTBEGIN, LISTEND


    [Prev: LISTEND][Resources][TOC][Next: LOCALDATEFMT]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/uselocaltime.html0000644004705000001440000000674112332046112021511 0ustar ehoodusers MHonArc Resources: USELOCALTIME
    [Prev: UMASK][Resources][TOC][Next: USINGLASTPG]

    USELOCALTIME


    Syntax

    Envariable

    M2H_USELOCALTIME= [ 0 | 1 ]

    Element

    <USELOCALTIME>
    <NOUSELOCALTIME>

    Command-line Option

    N/A


    Description

    When USELOCALTIME is set, MHonArc will use local time for determining day groups in main index listing when SORT is active. By default, MHonArc uses GMT time.

    The value of USELOCALTIME should be in sync with the choice of date format used in DAYBEGIN if DAYBEGIN is defined. For example, if you use $MSGLOCALDATE$, then USELOCALTIME should be on. If using $MSGGMTDATE$, then USELOCALTIME should be off.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.3.0


    See Also

    DAYBEGIN, SORT


    [Prev: UMASK][Resources][TOC][Next: USINGLASTPG]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/dbfile.html0000644004705000001440000000710512332046111020242 0ustar ehoodusers MHonArc Resources: DBFILE
    [Prev: DAYEND][Resources][TOC][Next: DBFILEPERMS]

    DBFILE


    Syntax

    Envariable

    M2H_DBFILE=filename

    Element

    N/A

    Command-line Option


    -dbfile filename


    Description

    DBFILE is the filename to use for the MHonArc database file.

    NOTE:

    You should not override the default name unless absolutely necessary, and you are confident about what you are doing.

    DBFILE resource can be set to an absolute pathname. This allows the database file to be located in a separate location than in the archive directory. If not an absolute pathname, then the value is treated relative to OUTDIR. If directory path components are included in the value, then the directory path must already exist.


    Default Setting

    .mhonarc.db
    

    Or, under Windows and VMS:

    mhonarc.db
    

    Resource Variables

    N/A


    Examples

    None


    Version

    1.0


    See Also

    OUTDIR


    [Prev: DAYEND][Resources][TOC][Next: DBFILEPERMS]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997,1998,2002 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/lock.html0000644004705000001440000000706612332046111017753 0ustar ehoodusers MHonArc Resources: LOCK
    [Prev: LOCALDATEFMT][Resources][TOC][Next: LOCKDELAY]

    LOCK


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option


    -lock
    -nolock


    Description

    When LOCK is On, MHonArc performs attempts to create a lock before processing an archive. When off, no lock is performed (contrast with FORCE).

    WARNING

    If LOCK is off, MHonArc will process the archive even if another MHonArc is active for the archive. This can lead to archive corruption.

    A reason to turn off LOCK is if MHonArc is being invoked from another process (like Procmail) that has its own locking mechanism to insure multiple instances cannot be accessing the same archive at the same time.


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.3.0


    See Also

    FORCE, LOCKDELAY, LOCKMETHOD, LOCKTRIES


    [Prev: LOCALDATEFMT][Resources][TOC][Next: LOCKDELAY]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1998-1999 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/rcfile.html0000644004705000001440000003724512332046111020271 0ustar ehoodusers MHonArc Resources: RCFILE
    [Prev: QUIET][Resources][TOC][Next: RECONVERT]

    RCFILE


    Syntax

    Envariable

    M2H_RCFILE=filename

    Element

    N/A

    Command-line Option

    -rcfile filename


    Description

    RCFILE tells MHonArc what resource files to load. A resource file allows you to specify most of the resources set by environment variables and command-line options along with other resources to control MHonArc's behavior.

    The -rcfile command-line option can be specified multiple times. For example,

    prompt> mhonarc -rcfile file1.mrc -rcfile file2.mrc ...
    

    Each resource file specified will be loaded in the order specified on the command-line.

    Resource file syntax

    Resources are set in the file by using elements similiar in style to HTML/XML markup. However, MHonArc uses simpler parsing rules for the resource file than standard XML:

    • Any line that is not a recognized element open tag, and the line is not contained within an element, is ignored. This implies that regular text can be put anywhere outside of recognized elements for commenting purposes.

      NOTE:

      You should use XML comment declarations (<!-- ... -->) when commenting a resource file. This will eliminate possible conflicts if more stricter parsing rules are adopted.


    • The open tag of an element must occur by itself on a single line.

      Correct:

      <LiTemplate>
      <li><strong>$SUBJECT$</strong>
      <ul><li><em>From</em>: $FROM$</li></ul>
      </li>
      </LiTemplate>
      

      Wrong:

      <LiTemplate><li><strong>$SUBJECT$</strong>
      <ul><li><em>From</em>: $FROM$</li></ul>
      </li>
      </LiTemplate>
      

    • Comments inside elements are treated as part of the element content.

    • Each element must have a close tag, </element_name>, on its own line.

      Correct:

      <LiTemplate>
      <li><strong>$SUBJECT$</strong>
      <ul><li><em>From</em>: $FROM$</li></ul>
      </li>
      </LiTemplate>
      

      Wrong:

      <LiTemplate>
      <li><strong>$SUBJECT$</strong>
      <ul><li><em>From</em>: $FROM$</li></ul>
      </li></LiTemplate>
      

      Close tags are not needed for boolean resources.

    • Some elements can take an optional attribute called "Override". This tells MHonArc that the contents of the element will completely override the default behavior of MHonArc and previous instances of the element. Example: "<EXCS Override>". If "Override" is not specified, then the contents of the element augment the current setting.

    • Some elements can take an optional attribute called "Chop". This tells MHonArc to remove the last line-break of the element's content.

    • Element names are case-insensitive.

    • Elements can occur in any order in the resource file.

    • Elements CANNOT be nested. Many resources define the values of resource variables, which may be used within resource elements:

      Correct:

      <TTitle>
      Example List Threads
      </TTitle>
      
      <TIdxPgBegin>
      <html>
      <head>
      <title>$TIDXTITLE$</title>
      ...
      </TIdxPgBegin>
      

      Wrong:

      <TIdxPgBegin>
      <html>
      <head>
      <title>
      <TTitle>
      Example List Threads
      </TTitle>
      </title>
      ...
      </TIdxPgBegin>
      

    Resource variables

    Many resources are allowed to have resource variables as part of there content. Resource variables represent data that defined during run-time: resource variables will get expanded to the appropriate value during the execution of MHonArc. For more information on resource variables, see Resource Variables.

    Localized resource file variations

    MHonArc supports the ability to define locale specific variations of a resource file based upon the LANG resource setting. For example:

    prompt> mhonarc -lang en_US -rcfile settings.mrc ...
    

    MHonArc will check for and read the following resource files, in order:

    1. settings.mrc
    2. settings.mrc.en
    3. settings.mrc.en_us
    NOTE:

    MHonArc will quietly ignore any locale-specific files that do not exist.

    NOTE:

    Setting LANG via a resource file element will only affect subsequent resource file resolution: subsequent resource files loaded via multiple -rcfile options and resource files loaded via the INCLUDE and OTHERINDEXES resources.

    Continuing with the previous example, the following specifies a French-Canadian archive:

    prompt> mhonarc -lang fr_CA -rcfile settings.mrc ...
    

    Causing the following resource files to be examined:

    1. settings.mrc
    2. settings.mrc.fr
    3. settings.mrc.fr_ca

    The following is the list of files examined given a resource file file.mrc and the generic locale setting language_country.codeset:

    1. file.mrc
    2. file.mrc.language
    3. file.mrc.language.codeset
    4. file.mrc.language_country
    5. file.mrc.language_country.codeset

    If you manage multiple archives comprising multiple languages, you can define generic settings in a shared resource file and define language-specific overrides and/or variations in locale-specific resource files. For example, by leveraging the use of custom resource variables, you can parameterize textual labels so the locale-specific resource files only need to define variable values instead of redefining layout. For example, the following is the default value of the NEXTBUTTON resource:

    <NextButton chop>
    [<a href="$MSG(NEXT)$">Date Next</a>]
    </NextButton>
    

    To facilitate the the localization of your archives, change the resource so the button label becomes a custom resource variable reference:

    <NextButton chop>
    [<a href="$MSG(NEXT)$">$BUTTON-DATE-NEXT-LABEL$</a>]
    </NextButton>
    

    Notice that "Date Next" has been changed to "$BUTTON-DATE-NEXT-LABEL$". In the locale specific resource file, all you need to do is define $BUTTON-DATE-NEXT-LABEL$. Continuing with the settings.mrc example, the following would be defined in settings.mrc.en to set the English version of the label:

    <DefineVar chop>
    $BUTTON-DATE-NEXT-LABEL$
    Date Next
    </DefineVar>
    

    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    The following illustrates what a resource file looks like. For more examples of resource files, see Appendix: Resource File Examples.

    <!-- MHonArc resource file
      -->
    <SORT>
    <TITLE>
    MHonArc test
    </TITLE>
     
    <TTITLE>
    MHonArc test (by thread)
    </TTITLE>
     
    <!--=== Index Page Customizations =========================================-->
     
    <!-- Have LISTBEGIN contain last updated information
      -->
    <LISTBEGIN>
    <address>
    Last updated: $LOCALDATE$<br>
    $NUMOFMSG$ messages in chronological order<br>
    </address>
    <ul>
    <li><a href="$TIDXFNAME$">Thread Index</a></li>
    </ul>
    <p>
    Listing format is the following:
    <p>
    <ul><li> 
    <strong>Subject</strong>
    (# of follow-ups)
    <em>From</em><br>
    </ul>
    <p>
    <hr>
    <ul>
    </LISTBEGIN>
     
     
    <!-- A compact listing template
      -->
    <LITEMPLATE>
    <li> 
    <strong>$SUBJECT:40$</strong>
    ($NUMFOLUP$) <em>$FROMNAME$</em><br>
    </LITEMPLATE>
     
    <LISTEND>
    </ul>
    <p>
    <hr>
    <strong>
    <a href="http://example.com/">Home</a>
    </strong>
    <p>
    </LISTEND>
     
    <!--=== Thread Index Page Customizations ==================================-->
    <THEAD>
    <address>
    Thread index<br>
    Last updated: $LOCALDATE$<br>
    $NUMOFMSG$ messages<br>
    </address>
    <ul>
    <li><a href="$IDXFNAME$">Main Index</a></li>
    </ul>
    <hr>
    </THEAD>
     
    <!--=== Message Customizations ============================================-->
    <EXCS override>
    apparently
    errors-to 
    followup
    forward 
    lines 
    message-id
    mime- 
    nntp- 
    originator 
    path 
    precedence 
    received 
    replied 
    return-path 
    status 
    via 
    x- 
    </EXCS>
    
    <LABELSTYLES>
    -default-
    subject:strong
    from:strong
    to:strong
    </LABELSTYLES>
     
    <FIELDSTYLES>
    -default-
    subject:strong
    from:strong
    to:strong
    keywords:em
    newsgroups:strong
    </FIELDSTYLES>
     
    <MSGHEAD>
    <address>
    MHonArc test archive
    </address>
    </MSGHEAD>
     
    <MSGFOOT>
    <strong>
    <a href="http://example.com/">Home</a> |
    <a href="$IDXFNAME$">Main Index</a> |
    <a href="$TIDXFNAME$">Thread Index</a>
    </strong>
    </MSGFOOT>
     
    <!--=== Icons =============================================================-->
    <ICONS>
    application/*;[20x22]/icons/generic.gif
    application/msword;[20x22]/icons/layout.gif
    application/postscript;[20x22]/icons/ps.gif
    application/rtf;[20x22]/icons/layout.gif
    application/x-csh;[20x22]/icons/script.gif
    application/x-dvi;[20x22]/icons/dvi.gif
    application/x-gtar;[20x22]/icons/tar.gif
    application/x-gzip;[20x22]/icons/compressed.gif
    application/x-ksh;[20x22]/icons/script.gif
    application/x-latex;[20x22]/icons/tex.gif
    application/octet-stream;[20x22]/icons/binary.gif
    application/x-patch;[20x22]/icons/patch.gif
    application/pdf;[20x22]/icons/pdf.gif
    application/x-script;[20x22]/icons/script.gif
    application/x-sh;[20x22]/icons/script.gif
    application/x-tar;[20x22]/icons/tar.gif
    application/x-tex;[20x22]/icons/tex.gif
    application/x-zip-compressed;[20x22]/icons/compressed.gif
    application/zip;[20x22]/icons/compressed.gif
    audio/*;[20x22]/icons/sound1.gif
    chemical/*;[20x22]/icons/sphere2.gif
    image/*;[20x22]/icons/image2.gif
    message/external-body;[20x22]/icons/link.gif
    multipart/*;[20x22]/icons/layout.gif
    text/*;[20x22]/icons/text.gif
    video/*;[20x22]/icons/movie.gif
    */*;[20x22]/icons/generic.gif
    </ICONS>
    

    Version

    1.0


    See Also

    LANG


    [Prev: QUIET][Resources][TOC][Next: RECONVERT]

    $Date: 2005/06/07 19:15:44 $
    MHonArc
    Copyright © 1997-1999,2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/localdatefmt.html0000644004705000001440000001470212332046111021455 0ustar ehoodusers MHonArc Resources: LOCALDATEFMT
    [Prev: LITEMPLATE][Resources][TOC][Next: LOCK]

    LOCALDATEFMT


    Syntax

    Envariable

    M2H_LOCALDATEFMT=date-format

    Element

    <LOCALDATEFMT>
    date-format
    </LOCALDATEFMT>

    Command-line Option

    -localdatefmt date-format


    Description

    The LOCALDATEFMT resource specifies the date format for the $LOCALDATE$ resource variable (i.e. The local system date). The format is a string containing zero or more conversion specifications and regular characters. A conversion specification consists of the '%' character followed a character that determines the type of conversion.

    The following lists the possible conversion specifications:

    NOTE

    If POSIXSTRFTIME is set, the POSIX::strftime() function will be used. Therefore, there may be more conversion specifications available. See your system's strftime() manpage for specifics.

    Spec Value
    %% the % character
    %a abbreviated weekday name
    %A full weekday name
    %b abbreviated month name
    %B full month name
    %c appropriate date and time representation
    %d day of month [1,31]; single digits are preceded by 0
    %h abbreviated month name
    %H hour (24-hour clock) [0,23]; single digits are preceded by 0
    %I hour (12-hour clock) [1,12]; single digits are preceded by 0
    %j day number of year [1,366]; single digits are preceded by 0
    %m month number [1,12]; single digits are preceded by 0
    %M minute[00,59]; single digits are preceded by 0
    %p am or pm.
    %P AM or PM.
    %S seconds [00,61]
    %w weekday as a decimal number [0,6], with 0 representing Sunday
    %y year within century [00,99]
    %Y year, including the century (for example 1993)

    Setting LOCALDATEFMT to a blank string will reset the resource to the default setting.


    Default Setting

    %a %b %d %H:%M:%S %Y
    

    Resource Variables

    N/A


    Examples

    The following sets the local date to use the long weekday and month names and 12 hour am/pm time:

    <LocalDateFmt>
    %A %B %d %I:%M:%S %p %y
    </LocalDateFmt>
    

    Version

    2.0


    See Also

    GMTDATEFMT, MONTHS, MONTHSABR, MSGGMTDATEFMT, MSGLOCALDATEFMT, POSIXSTRFTIME, WEEKDAYS, WEEKDAYSABR


    [Prev: LITEMPLATE][Resources][TOC][Next: LOCK]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsubjectend.html0000644004705000001440000000613612332046112021333 0ustar ehoodusers MHonArc Resources: TSUBJECTEND
    [Prev: TSUBJECTBEG][Resources][TOC][Next: TSUBLISTBEG]

    TSUBJECTEND


    Syntax

    Envariable

    N/A

    Element

    <TSUBJECTEND>
    markup ...
    </TSUBJECTEND>

    Command-line Option

    N/A


    Description

    TSUBJECTEND defines the markup that occurs to be included after a subject based thread listing. This resource may have no practical use, but is provided for completeness.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    TSUBJECTBEG

    Page Layout


    [Prev: TSUBJECTBEG][Resources][TOC][Next: TSUBLISTBEG]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/reverse.html0000644004705000001440000000703312332046111020470 0ustar ehoodusers MHonArc Resources: REVERSE
    [Prev: REFSLITXT][Resources][TOC][Next: RMM]

    REVERSE


    Syntax

    Envariable

    M2H_REVERSE=[ 0 | 1 ]

    Element(s)

    <REVERSE>
    <NOREVERSE>

    Command-line Option(s)

    -reverse
    -noreverse


    Description

    If the REVERSE resource on, message groups in the main index will be listed in the reverse order of the sort option specified. For example, if date sorting is specified (see SORT), then the messages will be listed in reverse chronological order. If SUBSORT is active, each subject group will have the most recent message first and oldest last.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    The following example shows how to get the most recent messages to be listed first in the main index:

    prompt> mhonarc -sort -reverse ...
    

    Version

    1.0


    See Also

    AUTHSORT, SORT, SUBSORT


    [Prev: REFSLITXT][Resources][TOC][Next: RMM]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevlinkia.html0000644004705000001440000003042412332046112021346 0ustar ehoodusers MHonArc Resources: TPREVLINKIA
    [Prev: TPREVLINK][Resources][TOC][Next: TPREVPGLINK]

    TPREVLINKIA


    Syntax

    Envariable

    N/A

    Element

    <TPREVLINKIA>
    markup ...
    </TPREVLINKIA>

    Command-line Option

    N/A


    Description

    TPREVLINKIA defines the value for the $LINK(TPREV)$ resource variable when there is no previous message to the current message according to the message list order of the thread index.

    See TPREVLINK for defining the value of $LINK(TPREV)$ when there is a previous message.


    Default Setting

    Nil.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.0


    See Also

    BOTLINKS, TNEXTLINK, TNEXTLINKIA, TPREVLINK


    [Prev: TPREVLINK][Resources][TOC][Next: TPREVPGLINK]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/spammode.html0000644004705000001440000001201512332046111020616 0ustar ehoodusers MHonArc Resources: SPAMMODE
    [Prev: SORT][Resources][TOC][Next: SSMARKUP]

    SPAMMODE


    Syntax

    Envariable

    M2H_SPAMMODE=[ 0 | 1 ]

    Element

    <SPAMMODE>
    <NOSPAMMODE>

    Command-line Option

    -spammode
    -nospammode


    Description

    SPAMMODE determines if MHonArc will perform actions to deter spam address harvesters. If SPAMMODE is true, it changes the default values of various resources that display email addresses. The following default resource values are affected:

    LITEMPLATE

    $FROMNAME$ is used instead of $FROM$.

    MSGPGBEGIN

    The <link rev="made" ...> is removed.

    FOLUPLITXT

    $FROMNAME$ is used instead of $FROM$.

    REFSLITXT

    $FROMNAME$ is used instead of $FROM$.

    ADDRESSMODIFYCODE

    Is defined as "s|@(.+)$|'@'.('x' x length($1))|ge" (this has the effect of preserving the local-part of the address and complete masking out the domain portion).

    MAILTOURL

    Is defined as "mailto:$TOADDRNAME$@DOMAIN.HIDDEN"

    MODIFYBODYADDRESSES

    Is activated.

    NOTE:

    A user defined setting of an above resource will override any effects that SPAMMODE has on the resource. SPAMMODE is mainly a convenience to set the above resources to default values that hide email addresses. The same effect can be achieved by explicitly modifying each resource.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.4.0


    See Also

    ADDRESSMODIFYCODE, FOLUPLITXT, LITEMPLATE, MAILTOURL, MODIFYBODYADDRESSES, MSGPGBEGIN, REFSLITXT


    [Prev: SORT][Resources][TOC][Next: SSMARKUP]

    $Date: 2011/01/09 07:52:25 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/charsetconverters.html0000644004705000001440000005676612332046111022602 0ustar ehoodusers MHonArc Resources: CHARSETCONVERTERS
    [Prev: CHARSETALIASES][Resources][TOC][Next: CHECKNOARCHIVE]

    CHARSETCONVERTERS


    Syntax

    Envariable

    N/A

    Element

    <CHARSETCONVERTERS>
    charset-filter-specification
    </CHARSETCONVERTERS>

    Command-line Option

    N/A


    Description

    The CHARSETCONVERTERS resource specifies Perl routines to call for filtering characters of a character set to legal HTML characters. The filtering occurs for message header data encoded according to the MIME standard. The following example shows a header with encoded data:

    From: =?US-ASCII?Q?Keith_Moore?= <moore@cs.utk.edu>
    To: =?ISO-8859-1?Q?Keld_J=F8rn_Simonsen?= <keld@dkuug.dk>
    CC: =?ISO-8859-1?Q?Andr=E9_?= Pirard <PIRARD@vm1.ulg.ac.be>
    Subject: =?ISO-8859-1?B?SWYgeW91IGNhbiByZWFkIHRoaXMgeW8=?=
     =?ISO-8859-2?B?dSB1bmRlcnN0YW5kIHRoZSBleGFtcGxlLg==?=
    

    CHARSETCONVERTERS resource is also used by text-based MIMEFILTERS for message body text.

    The CHARSETCONVERTERS resource can only be defined via the resource file. Each line of the element specifies a character set, the Perl routine for filtering the character set, and the Perl source file containing the routine.

    Example:

    <CharsetConverters>
    iso-8859-1; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm
    </CharsetConverters>
    

    The first field is the character set specification. The second field is the routine name (which should contain a package qualifier). The third field is the source file the routine is defined. The source file is searched for as defined by the PERLINC resource.

    There are some special character set specifications. They are as follows:

    plain

    This specifies text that is not explicitly encoded in a specific character set. The MIME RFCs specify that unencoded data should be treated as us-ascii. However, in some locales, this may not be the case.

    default

    The default routine to invoke for encoded data if no converter is defined for the given character set.

    There are some special character set converter routines values. They are as follows:

    -ignore-

    Leave the data "as-is". I.e. The MIME encoding will be preserved.

    -decode-

    Just decode the data. This is useful if it is known that the characters set is the native character set for the system.

    WARNING:

    If the decoded data contains the characters '<', '>', and '&', this may conflict with HTML markup. -decode- should only be used if DECODEHEADS is active. See Examples below and DECODEHEADS for example uses of -decode-.

    Each charset converter function is invoked as follows:

    $converted_data = &function($data, $charset);
    

    The data passed in will already be decoded from quoted-printable or base64 (as specified by the MIME syntax). Therefore, the called routine will be passed the raw byte data. It is important that the routine convert the data into a format suitable for inclusion within HTML markup.


    Available Converters

    The standard MHonArc distribution provides the following converters:

    mhonarc::htmlize

    Usage
    <CharsetConverters>
    charset-name; mhonarc::htmlize
    </CharsetConverters>

    mhonarc::htmlize is provided by the MHonArc core code base, so no source file specification is required.

    Description

    mhonarc::htmlize does a simple replacement of HTML special characters into entity references. The characters '<', '>', '&', and '"' are converted to '&lt;', '&gt;', '&amp;', and '&quot;', respectively.

    This converter is appropriate for us-ascii data and for situations where the given character set is an 8-bit set that matches the locale settings for the archives. For example, if an archive contains iso-8859-7 (Greek) text data and archive readers' browsers are set to iso-8859-7 as the default encoding, then mhonarc::htmlize can be used to prevent the overhead of Greek characters being converted to entity references.

    If you will be managing archives that will include messages with multiple character encodings, it is recommend to limit the use of mhonarc::htmlize to us-ascii only.

    MHonArc::CharEnt::str2sgml

    Usage
    <CharsetConverters>
    charset-name; MHonArc::CharEnt::str2sgml; MHonArc/CharEnt.pm
    </CharsetConverters>
    Description

    MHonArc::CharEnt::str2sgml converts a variety of character encodings into HTML 4 standard character entity references (e.g. &#Aelig;) and/or Unicode character entity references (e.g. &#x017D;). Characters in the us-ascii domain are left as-is, with the exception of HTML specials, which are converted like mhonarc::htmlize. MHonArc::CharEnt::str2sgml attempts to be locale neutral and should be sufficient for most locales.

    The following character sets/encodings are supported:

    Charset/encodingDescription
    us-asciiUS ASCII
    iso-8859-1Latin 1
    iso-8859-2Latin 2
    iso-8859-3Latin 3
    iso-8859-4Latin 4
    iso-8859-5Cyrillic
    iso-8859-6Arabic
    iso-8859-7Greek
    iso-8859-8Hebrew
    iso-8859-9Latin 5
    iso-8859-10Latin 6
    iso-8859-11Thai
    iso-8859-13Latin 7 (Baltic Rim)
    iso-8859-14Latin 8 (Celtic)
    iso-8859-15Latin 9 (aka Latin 0)
    iso-8859-16Latin 10
    iso-2022-jpJapanese
    iso-2022-krKorean
    euc-jpJapanese
    utf-8Unicode UTF-8
    cp866MS-DOS Cyrillic
    cp932Japanese (Shift-JIS)
    cp936Chinese (GBK)
    cp949Korean
    cp950Windows Chinese
    cp1250Windows Latin 2
    cp1251Windows Cyrillic
    cp1252Windows Latin 1
    cp1253Windows Greek
    cp1254Windows Turkish
    cp1255Windows Hebrew
    cp1256Windows Arabic
    cp1257Windows Baltic
    cp1258Windows Vietnamese
    koi-0Cyrillic
    koi-7Cyrillic
    koi8-aCyrillic
    koi8-bCyrillic
    koi8-eCyrillic
    koi8-fCyrillic
    koi8-rCyrillic
    koi8-uCyrillic
    gost-19768-87Cyrillic
    visciiVietnamese
    big5-etenChinese (Taiwan)
    big5-hkscsChinese (Hong Kong)
    gb2312Chinese
    macarabicApple Arabic
    maccentraleurromanApple Central Europe
    maccroatianApple Croatian
    maccyrillicApple Cyrillic
    macgreekApple Greek
    machebrewApple Hebrew
    macicelandicApple Icelandic
    macromanianApple Romanian
    macromanApple Roman (Latin)
    macthaiApple Thai
    macturkishApple Turkish
    hp-roman8HP Roman (Latin)

    Most of the above listed charsets are also known by different names. See the CHARSETALIASES resource for details.

    MHonArc::UTF8::str2sgml

    Usage
    <CharsetConverters override>
    plain;    mhonarc::htmlize
    default;  MHonArc::UTF8::str2sgml; MHonArc/UTF8.pm
    </CharsetConverters>
    
    <-- Need to also register UTF-8-aware text clipping function -->
    <TextClipFunc>
    MHonArc::UTF8::clip; MHonArc/UTF8.pm
    </TextClipFunc>
    
    Description

    MHonArc::UTF8::str2sgml converts data to UTF-8. With HTML specials converted to entity references like mhonarc::htmlize.

    Typical usages is to have it registered for all charsets, since only one TEXTCLIPFUNC can be specified. Having a mixture of UTF-8 and non-UTF-8 data can cause clipping problems in resource variables that specify a length specifier.

    See the utf-8.mrc example resource file more details on how this converter can be used.

    iso_2022_jp::str2html

    Usage
    <CharsetConverters>
    iso-2022-jp; iso_2022_jp::str2html; iso2022jp.pl
    </CharsetConverters>
    Description

    iso_2022_jp::str2html is designed to work with iso-2022-jp within a Japanese locale. iso_2022_jp::str2html preserves the iso-2022-jp encoding format, but converts HTML specials into character entity references similiar to mhonarc::htmlize.

    NOTE:

    If using iso_2022_jp::str2html, you should also use the iso-2022-jp text clipping function:

    <TextClipFunc>
    iso_2022_jp::clip; iso2022jp.pl
    </TextClipFunc>

    Some Japanese-aware processing tools do not support Unicode character entity references, like those generated by MHonArc::CharEnt::str2sgml, so the iso_2022_jp::str2html may be prefered over MHonArc::CharEnt::str2sgml for handling iso-2022-jp data.

    For more information about using MHonArc in a Japanese locale, see (documents in Japanese): <http://www.mhonarc.jp/>


    Default Setting

    NOTE:

    As of MHonArc v2.6.0, filters should only be defined for base charsets. The CHARSETALIASES resource can be used to map alternate names for base charsets.

    <CharsetConverters>
    plain;		    mhonarc::htmlize;
    us-ascii;	    mhonarc::htmlize;
    iso-8859-1;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-2;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-3;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-4;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-5;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-6;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-7;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-8;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-9;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-10;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-11;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-13;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-14;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-15;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-8859-16;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-2022-jp;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    iso-2022-kr;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    euc-jp;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    utf-8;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp866;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp936;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp949;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp950;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1250;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1251;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1252;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1253;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1254;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1255;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1256;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1257;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    cp1258;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi-0;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi-7;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-a;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-b;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-e;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-f;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-r;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    koi8-u;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    gost-19768-87;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    viscii;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    big5-eten;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    big5-hkscs;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    gb2312;		    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macarabic;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    maccentraleurroman; MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    maccroatian;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    maccyrillic;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macgreek;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    machebrew;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macicelandic;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macromanian;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macroman;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macthai;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    macturkish;	    MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    hp-roman8;          MHonArc::CharEnt::str2sgml;     MHonArc/CharEnt.pm
    default;            -ignore-
    </CharsetConverters>
    

    Resource Variables

    N/A


    Examples

    The following example tells MHonArc to just decode iso-8859-1 character data since it is the default character set used by most browsers:

    <DecodeHeads>
    <CharsetConverters>
    iso-8859-1;-decode-
    </CharsetConverters>
    

    MHonArc's MHonArc::CharEnt module supports the conversion of many major character sets, including UTF-8 data, into standard HTML character entity references (e.g. &Aelig;) and numeric Unicode character references (e.g. &#x203E;). However, if you want archive pages to be in native UTF-8, see the utf-8.mrc resource file example.


    Version

    2.0


    See Also

    CHARSETALIASES, DECODEHEADS, MIMEDECODERS, MIMEFILTERS, PERLINC, TEXTCLIPFUNC, TEXTENCODE


    [Prev: CHARSETALIASES][Resources][TOC][Next: CHECKNOARCHIVE]

    $Date: 2005/05/13 18:50:38 $
    MHonArc
    Copyright © 1997-2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/gzipexe.html0000644004705000001440000000720012332046111020464 0ustar ehoodusers MHonArc Resources: GZIPEXE
    [Prev: GMTDATEFMT][Resources][TOC][Next: GZIPFILES]

    GZIPEXE


    Syntax

    Envariable

    M2H_GZIPEXE=pathname

    Element

    <GZIPEXE>
    pathname
    </GZIPEXE>

    Command-line Option

    -gzipexe pathname


    Description

    GZIPEXE defines the pathname of the gzip executable. MHonArc automatically invokes gzip to decompress files with a ".gz" extension. Gzip is also invoked for compressing files when the GZIPFILES resource is set.

    If the value of GZIPEXE is not an absolute pathname, then gzip should exist in your search path.


    Default Setting

    gzip


    Resource Variables

    N/A


    Examples

    This example is not specific to GZIPEXE, but the following sample invocation:

        % mhonarc mailbox.gz
    

    can be done if MHonArc is able to invoke gzip. Therefore, you do not have to manually ungzip the mailbox first or use a pipe to decompress the data before passing it to MHonArc.


    Version

    2.1.0


    See Also

    GZIPFILES, GZIPLINKS


    [Prev: GMTDATEFMT][Resources][TOC][Next: GZIPFILES]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/refsend.html0000644004705000001440000000700212332046111020437 0ustar ehoodusers MHonArc Resources: REFSEND
    [Prev: REFSBEGIN][Resources][TOC][Next: REFSLITXT]

    REFSEND


    Syntax

    Envariable

    N/A

    Element

    <REFSEND>
    markup...
    </REFSEND>

    Command-line Option

    N/A


    Description

    REFSEND defines the ending markup for the the explicit reference links after the message body on a message page.

    NOTE

    This resource is only applicable if the FOLREFS resource is on and the message has explicit follow-ups.


    Default Setting

    </ul></li></ul>
    

    Resource Variables

    N/A


    Examples

    See REFSBEGIN.


    Version

    2.1.0


    See Also

    FOLREFS, FOLUPBEGIN, FOLUPEND, FOLUPLITXT, REFSBEGIN, REFSLITXT

    Page Layout


    [Prev: REFSBEGIN][Resources][TOC][Next: REFSLITXT]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/refsbegin.html0000644004705000001440000000775312332046111020772 0ustar ehoodusers MHonArc Resources: REFSBEGIN
    [Prev: RECONVERT][Resources][TOC][Next: REFSEND]

    REFSBEGIN


    Syntax

    Envariable

    N/A

    Element

    <REFSBEGIN>
    markup...
    </REFSBEGIN>

    Command-line Option

    N/A


    Description

    REFSBEGIN defines the markup to start the explicit reference links after the message body on a message page.

    NOTE

    This resource is only applicable if the FOLREFS resource is on and the message has explicit follow-ups.


    Default Setting

    <ul><li><strong>References</strong>:
    <ul>
    

    Resource Variables

    N/A


    Examples

    The following example shows the settings for the REFS* resources that use the HTML DL element to list the links:

    <RefsBegin>
    <dl>
    <dt><strong>Replies</strong><dt>
    </RefsBegin>
     
    <RefsLiTxt>
    <dd><strong>$SUBJECT$</strong>, <em>$FROMNAME$</em></dd>
    </RefsLiTxt>
    
    <RefsEnd>
    </dl>
    </RefsEnd>
    

    Version

    2.1.0


    See Also

    FOLREFS, FOLUPBEGIN, FOLUPEND, FOLUPLITXT, REFSEND, REFSLITXT

    Page Layout


    [Prev: RECONVERT][Resources][TOC][Next: REFSEND]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicelitxt.html0000644004705000001440000003225112332046112021366 0ustar ehoodusers MHonArc Resources: TSLICELITXT
    [Prev: TSLICELINONEEND][Resources][TOC][Next: TSLICELITXTCUR]

    TSLICELITXT


    Syntax

    Envariable

    N/A

    Element

    <TSLICELITXT>
    markup
    </TSLICELITXT>

    Command-line Option

    N/A


    Description

    Markup for a thread slice message listing. This resource functions the same as TLITXT, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TLITXT resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICELINONEEND][Resources][TOC][Next: TSLICELITXTCUR]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tidxlabel.html0000644004705000001440000000601012332046112020760 0ustar ehoodusers MHonArc Resources: TIDXLABEL
    [Prev: TIDXFNAME][Resources][TOC][Next: TIDXPGBEGIN]

    TIDXLABEL


    Syntax

    Envariable

    N/A

    Element

    <TIDXLABEL>
    markup ... </TIDXLABEL>

    Command-line Option

    N/A


    Description

    TIDXLABEL defines the label text for the thread index. Specifically, it defines the value of the $TIDXLABEL$ resource variable.


    Default Setting

    Thread Index
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    IDXLABEL


    [Prev: TIDXFNAME][Resources][TOC][Next: TIDXPGBEGIN]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnexttoplink.html0000644004705000001440000003072312332046112021563 0ustar ehoodusers MHonArc Resources: TNEXTTOPLINK
    [Prev: TNEXTTOPBUTTONIA][Resources][TOC][Next: TNEXTTOPLINKIA]

    TNEXTTOPLINK


    Syntax

    Envariable

    N/A

    Element

    <TNEXTTOPLINK>
    markup
    </TNEXTTOPLINK>

    Command-line Option

    N/A


    Description

    TNEXTTOPLINK defines the replacement markup for the resource variable $LINK(TNEXTTOP)$: link markup for first message in next discussion thread. See TNEXTTOPLINKIA for the replace markup used when there is no next discussion thread.


    Default Setting

    [<a href="$MSG(TNEXTTOP)$">Next Thread</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTLINK, TNEXTINLINKIA, TNEXTINLINK, TNEXTTOPLINKIA, TPREVLINK, TPREVINLINK, TPREVTOPBUTTON


    [Prev: TNEXTTOPBUTTONIA][Resources][TOC][Next: TNEXTTOPLINKIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/idxpgbegin.html0000644004705000001440000002113112332046111021130 0ustar ehoodusers MHonArc Resources: IDXPGBEGIN
    [Prev: IDXLABEL][Resources][TOC][Next: IDXPGEND]

    IDXPGBEGIN


    Syntax

    Envariable

    N/A

    Element

    <IDXPGBEGIN>
    markup ...
    </IDXPGBEGIN>

    Command-line Option

    N/A


    Description

    The IDXPGBEGIN resource defines the beginning markup for the main index page. I.e. You can control the opening <HTML> tag, the HEAD element contents, the opening <BODY> tag, etc. Therefore, if you are not satisfied with the default behavior of how the TITLE resource is used, or have other needs that require control over the beginning markup, you can set the IDXPGBEGIN resource to what you desire.


    Default Setting

    <IdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$IDXTITLE$</title>
    </head>
    <body>
    <h1>$IDXTITLE$</h1>
    </IdxPgBegin>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    The following shows how you can set HTML body element attributes to control the appearence of the index page:

    <IdxPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$IDXTITLE$</title>
    </head>
    <body background="idxbg.png" bgproperties="fixed">
    <h1>$IDXTITLE$</h1>
    </IdxPgBegin>
    

    Version

    1.2


    See Also

    IDXPGEND, TITLE, TIDXPGBEGIN, TIDXPGEND


    [Prev: IDXLABEL][Resources][TOC][Next: IDXPGEND]

    $Date: 2004/03/15 21:07:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/folupbegin.html0000644004705000001440000000764512332046111021160 0ustar ehoodusers MHonArc Resources: FOLUPBEGIN
    [Prev: FOLREFS][Resources][TOC][Next: FOLUPEND]

    FOLUPBEGIN


    Syntax

    Envariable

    N/A

    Element

    <FOLUPBEGIN>
    markup...
    </FOLUPBEGIN>

    Command-line Option

    N/A


    Description

    FOLUPBEGIN defines the markup to start the explicit follow-up links after the message body on a message page.

    NOTE

    This resource is only applicable if the FOLREFS resource is on and the message has explicit follow-ups.


    Default Setting

    <ul><li><strong>Follow-Ups</strong>:
    <ul>
    

    Resource Variables

    N/A


    Examples

    The following example shows the settings for the FOLUP* resources that use the HTML DL element to list the links:

    <FolupBegin>
    <dl>
    <dt><strong>Replies</strong><dt>
    </FolupBegin>
     
    <FolupLiTxt>
    <dd><strong>$SUBJECT$</strong>, <em>$FROMNAME$</em></dd>
    </FolupLiTxt>
    
    <FolupEnd>
    </dl>
    </FolupEnd>
    

    Version

    2.1.0


    See Also

    FOLREFS, FOLUPEND, FOLUPLITXT, REFSBEGIN, REFSEND, REFSLITXT


    [Prev: FOLREFS][Resources][TOC][Next: FOLUPEND]

    98/03/03 18:19:32
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/folrefs.html0000644004705000001440000000647512332046111020466 0ustar ehoodusers MHonArc Resources: FOLREFS
    [Prev: FOLLOWSYMLINKS][Resources][TOC][Next: FOLUPBEGIN]

    FOLREFS


    Syntax

    Envariable

    M2H_FOLREFS=[ 0 | 1 ]

    Element(s)

    <FOLREFS>
    <NOFOLREFS>

    Command-line Option(s)

    -folrefs
    -nofolrefs


    Description

    If the FOLREFS resource is On, then MhonArc will list direct follow-ups and references for a message after the message body.


    Default Setting

    On


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    FOLUPBEGIN, FOLUPEND, FOLUPLITXT, REFSBEGIN, REFSEND, REFSLITXT

    Page Layout


    [Prev: FOLLOWSYMLINKS][Resources][TOC][Next: FOLUPBEGIN]

    $Date: 2010/12/31 20:33:59 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/subjectheader.html0000644004705000001440000003004712332046111021626 0ustar ehoodusers MHonArc Resources: SUBJECTHEADER
    [Prev: SUBJECTEND][Resources][TOC][Next: SUBJECTREPLYRXP]

    SUBJECTHEADER


    Syntax

    Envariable

    N/A

    Element

    <SUBJECTHEADER>
    markup ...
    </SUBJECTHEADER>

    Command-line Option

    N/A


    Description

    SUBJECTHEADER defines the markup for the main subject line above the message header of message pages.


    Default Setting

    <SubjectHeader>
    <h1>$SUBJECTNA$</h1>
    <hr>
    </SubjectHeader>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.0


    See Also


    [Prev: SUBJECTEND][Resources][TOC][Next: SUBJECTREPLYRXP]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevbuttonia.html0000644004705000001440000003115112332046112021722 0ustar ehoodusers MHonArc Resources: TPREVBUTTONIA
    [Prev: TPREVBUTTON][Resources][TOC][Next: TPREVINBUTTON]

    TPREVBUTTONIA


    Syntax

    Envariable

    N/A

    Element

    <TPREVBUTTONIA>
    markup ...
    </TPREVBUTTONIA>

    Command-line Option

    N/A


    Description

    TPREVBUTTONIA defines the value for the $BUTTON(TPREV)$ resource variable when there is no previous message to the current message according to the message list order of the thread index. See the TPREVBUTTON for defining the value of $BUTTON(TPREV)$ when there is a next message.


    Default Setting

    <TPrevButtonIA chop>
    [Thread Prev]
    </TPrevButtonIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows how an button image can be used for showing when there is no previous message:

    <TPrevButtonIA chop>
    <img src="tprevia.png" alt="[Thread Prev]">
    </TPrevButtonIA>
    

    Version

    2.0


    See Also

    TNEXTBUTTON, TNEXTBUTTONIA, TOPLINKS, TPREVBUTTON


    [Prev: TPREVBUTTON][Resources][TOC][Next: TPREVINBUTTON]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicetopbegcur.html0000644004705000001440000003515512332046112022222 0ustar ehoodusers MHonArc Resources: TSLICETOPBEGCUR
    [Prev: TSLICETOPBEG][Resources][TOC][Next: TSLICETOPEND]

    TSLICETOPBEGCUR


    Syntax

    Envariable

    N/A

    Element

    <TSLICETOPBEGCUR>
    markup
    </TSLICETOPBEGCUR>

    Command-line Option

    N/A


    Description

    Thread slice markup for the root/start of a thread if current message. This resource is used instead of TSLICETOPBEG if rendering the current message.


    Default Setting

    The value of the TSLICETOPBEG resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The various TSLICE*CUR resource allow you to provide a different rendering style for the current message in a thread slice. For example, if the default layout settings are being used for rendering thread slices, the following resource settings can be used to have the current message show up in grey within a thread slice:

    <TSliceTopBeginCur>
    <li><font color="#666666"><strong>$SUBJECTNA$</strong>,
    <em>$FROMNAME$</em></font>&nbsp;<b>&lt;=</b>
    </TSliceTopBeginCur>
    
    <TSliceLiTxtCur>
    <li><font color="#666666"><strong>$SUBJECTNA$</strong>,
    <em>$FROMNAME$</em></font>&nbsp;<b>&lt;=</b>
    </TSliceLiTxtCur>
    
    <TSliceSingleTxtCur>
    <li><font color="#666666"><strong>$SUBJECTNA$</strong>,
    <em>$FROMNAME$</em></font>&nbsp;<b>&lt;=</b>
    </TSliceSingleTxtCur>
    

    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICETOPBEG][Resources][TOC][Next: TSLICETOPEND]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevtoplinkia.html0000644004705000001440000003016712332046112022075 0ustar ehoodusers MHonArc Resources: TPREVTOPLINKIA
    [Prev: TPREVTOPLINK][Resources][TOC][Next: TREVERSE]

    TPREVTOPLINKIA


    Syntax

    Envariable

    N/A

    Element

    <TPREVTOPLINKIA>
    markup
    </TPREVTOPLINKIA>

    Command-line Option

    N/A


    Description

    TPREVTOPLINKIA defines the replacement markup for the resource variable $LINK(TPREVTOP)$ when there is no previous discussion thread. See TPREVTOPLINK for the replacement markup used when there is a previous discussion thread.


    Default Setting

    [Next Thread]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TPREVTOPLINK


    [Prev: TPREVTOPLINK][Resources][TOC][Next: TREVERSE]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicesublistbeg.html0000644004705000001440000003234112332046112022365 0ustar ehoodusers MHonArc Resources: TSLICESUBLISTBEG
    [Prev: TSLICESUBJECTEND][Resources][TOC][Next: TSLICESUBLISTEND]

    TSLICESUBLISTBEG


    Syntax

    Envariable

    N/A

    Element

    <TSLICESUBLISTBEG>
    markup
    </TSLICESUBLISTBEG>

    Command-line Option

    N/A


    Description

    Thread slice markup for starting a sub-thread. This resource functions the same as TSUBLISTBEG, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TSUBLISTBEG resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICESUBJECTEND][Resources][TOC][Next: TSLICESUBLISTEND]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslice.html0000644004705000001440000001504412332046112020302 0ustar ehoodusers MHonArc Resources: TSLICE
    [Prev: TSINGLETXT][Resources][TOC][Next: TSLICEBEG]

    TSLICE


    Syntax

    Envariable

    M2H_TSLICE=number:number:inclusive-flag

    Element

    <TSLICE>
    number:number:inclusive-flag
    </TSLICE>

    Command-line Option

    -tslice number:number:inclusive-flag


    Description

    TSLICE sets the default argument values for the the $TSLICE$ resource variable: the thread listing "slice" (ie. a portion of the complete thread listing). The value of the TSLICE resource is two numbers and an inclusive flag, where each value is separated by a colon. The first number is the number of messages listed before the current message in the thread slice. The second number is the number of messages listed after the current message. The inclusive flag is either a 1 or 0. If 1, $TSLICE$ will only include in the thread listing messages in the same thread as the current thread. If 0, $TSLICE$ will include messages in neighboring threads if before and/or after count extend beyond the current thread. If the inclusive flag is not set, then 0 will be used.

    The default values can be overridden by providing different values as arguments to $TSLICE$.

    NOTE

    The value of the TSLICE resource is used to determine the number of messages to update, before and after by thread, when a new message is added. To insure that messages within a thread slice are updated when a new message is added, make sure the before and after ranges specified for TSLICE is equal to maximum before and the maximum after range arguments specifed in the uses of the $TSLICE$ resource variable. For example, if you have $TSLICE(0;4)$ and $TSLICE(3;3)$ in message layout resources, you should set TSLICE to 3:4.

    If you only use $TSLICE$ once, it is best to set options for thread slice formatting via the TSLICE resource so you will not have anything to worry about.


    Default Setting

    0:4:0
    

    Resource Variables

    N/A


    Examples

    The default setting causes a thread slice to start with the current message. However, you may want to have the current message in the middle so the reader can see message that come before along with after the current message. The following causes the previous two and next two messages to be listed with the current in the middle and only if the messages are part of the current thread:

    <TSlice>
    2:2:1
    </TSlice>
    

    Version

    2.2.0


    See Also

    $TSLICE$, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSINGLETXT][Resources][TOC][Next: TSLICEBEG]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/maxsize.html0000644004705000001440000000654012332046111020477 0ustar ehoodusers MHonArc Resources: MAXSIZE
    [Prev: MAIN][Resources][TOC][Next: MHPATTERN]

    MAXSIZE


    Syntax

    Envariable

    M2H_MAXSIZE=number

    Element

    <MAXSIZE>
    number
    </MAXSIZE>

    Command-line Option

    -maxsize number


    Description

    MAXSIZE defines the maximum number of messages the archive can have. If new messages are added that would cause an archive to go over MAXSIZE, then the oldest, by date, messages are removed until the number of messages equal MAXSIZE.

    If you want no limit on the number of messages allowed in an archive, set MAXSIZE to zero.

    MAXSIZE differs from IDXSIZE in that IDXSIZE defines the maximum number of messages to list on an index page.


    Default Setting

    Unlimited


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    IDXSIZE


    [Prev: MAIN][Resources][TOC][Next: MHPATTERN]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicecontend.html0000644004705000001440000003226112332046112021655 0ustar ehoodusers MHonArc Resources: TSLICECONTEND
    [Prev: TSLICECONTBEG][Resources][TOC][Next: TSLICEEND]

    TSLICECONTEND


    Syntax

    Envariable

    N/A

    Element

    <TSLICECONTEND>
    markup
    </TSLICECONTEND>

    Command-line Option

    N/A


    Description

    Thread slice markup after the continuation of a broken thread. This resource functions the same as TCONTEND, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TCONTEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICECONTBEG][Resources][TOC][Next: TSLICEEND]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgpgend.html0000644004705000001440000003006712332046111020624 0ustar ehoodusers MHonArc Resources: MSGPGEND
    [Prev: MSGPGBEGIN][Resources][TOC][Next: MSGPGS]

    MSGPGEND


    Syntax

    Envariable

    N/A

    Element

    <MSGPGEND>
    markup ...
    </MSGPGEND>

    Command-line Option

    N/A


    Description

    MSGPGEND defines the ending markup of each message page.


    Default Setting

    <MsgPgEnd>
    </body>
    </html>
    </MsgPgEnd>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    1.2.0


    See Also

    MSGFOOT, MSGHEAD, MSGPGBEGIN

    Page Layout


    [Prev: MSGPGBEGIN][Resources][TOC][Next: MSGPGS]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tidxfname.html0000644004705000001440000000616412332046112021001 0ustar ehoodusers MHonArc Resources: TIDXFNAME
    [Prev: THREAD][Resources][TOC][Next: TIDXLABEL]

    TIDXFNAME


    Syntax

    Envariable

    M2H_TIDXFNAME=filename

    Element

    <TIDXFNAME>
    filename
    </TIDXFNAME>

    Command-line Option

    -tidxfname filename


    Description

    TIDXFNAME defines the filename for the thread index page. If MULTIPG is on, it defines the filename of the first page of the thread index.


    Default Setting

    threads.html
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    1.1.0


    See Also

    IDXFNAME, MULTIPG


    [Prev: THREAD][Resources][TOC][Next: TIDXLABEL]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevtopbuttonia.html0000644004705000001440000003024712332046112022452 0ustar ehoodusers MHonArc Resources: TPREVTOPBUTTONIA
    [Prev: TPREVTOPBUTTON][Resources][TOC][Next: TPREVTOPLINK]

    TPREVTOPBUTTONIA


    Syntax

    Envariable

    N/A

    Element

    <TPREVTOPBUTTONIA>
    markup
    </TPREVTOPBUTTONIA>

    Command-line Option

    N/A


    Description

    TPREVTOPBUTTONIA defines the replacement markup for the resource variable $BUTTON(TPREVTOP)$ when there is no previous discussion thread. See TPREVTOPBUTTON for the replacement markup used when there is a previous discussion thread.


    Default Setting

    [Next Thread]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TPREVTOPBUTTON


    [Prev: TPREVTOPBUTTON][Resources][TOC][Next: TPREVTOPLINK]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/ttitle.html0000644004705000001440000000654412332046112020331 0ustar ehoodusers MHonArc Resources: TTITLE
    [Prev: TSUBSORT][Resources][TOC][Next: TTOPBEGIN]

    TTITLE


    Syntax

    Envariable

    M2H_TTITLE=string

    Element

    <TTITLE>
    string
    </TTITLE>

    Command-line Option

    -ttitle string


    Description

    TTITLE defines the value of the $TIDXTITLE resource variable. Unless doing custom page layout, the effect of setting the TTITLE resource sets the title of the thread index.


    Default Setting

    Mail Thread Index
    

    Resource Variables

    N/A


    Examples

    It is common to set TTITLE to the name of the mailing list, or newsgroup, being archived and that the index is a thread index. For example:

    <TTitle>
    MHonArc Mailing List (by thread)
    </TTitle>
    

    Version

    1.1


    See Also

    TIDXPGBEGIN, TITLE


    [Prev: TSUBSORT][Resources][TOC][Next: TTOPBEGIN]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgidlink.html0000644004705000001440000003065512332046111021004 0ustar ehoodusers MHonArc Resources: MSGIDLINK
    [Prev: MSGHEAD][Resources][TOC][Next: MSGLOCALDATEFMT]

    MSGIDLINK


    Syntax

    Envariable

    N/A

    Element

    <MSGIDLINK>
    markup ...
    </MSGIDLINK>

    Command-line Option

    N/A


    Description

    MSGIDLINK defines the hyperlink markup for embedded message-ids in message pages. When MHonArc processes messages, it will scan the message header and body for message-ids of referenced message. If the referenced message is in the archive, MHonArc will hyperlink the message-id to the reference message. The format of the hyperlink generated is controled by the MSGIDLINK resource.


    Default Setting

    <a $A_HREF$>$MSGID$</a>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    If you have an archives that is using frames, you may want to change MSGIDLINK to set the TARGET attibute of the anchor like the following:

    <MsgIdLink>
    <a target="MAIN" $A_HREF$>$MSGID$</a>
    </MsgIdLink>
    

    Version

    2.2.0


    See Also


    [Prev: MSGHEAD][Resources][TOC][Next: MSGLOCALDATEFMT]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fieldstyles.html0000644004705000001440000001054312332046111021344 0ustar ehoodusers MHonArc Resources: FIELDSTYLES
    [Prev: FIELDSTORE][Resources][TOC][Next: FILEPERMS]

    FIELDSTYLES


    Syntax

    Envariable

    N/A

    Element

    <FIELDSTYLES>
    field_name:html_element
    field_name:html_element
    ...
    </FIELDSTYLES>

    Command-line Option

    N/A


    Description

    The FIELDSTYLES resource is set via the FIELDSTYLES element. Each line in the FIELDSTYLES element defines HTML elements to wrap around the field text in mail headers (e.g. "To: field text", "From: field text"). The format of each line is "field_name:html_element". This specifies to wrap html_element around the text associated with field_name. If html_element is empty, then the field text is not wrapped in any element.

    MHonArc defines a special field_name called "-default-". This is default HTML element to wrap field text in if no explicit specific element is defined for the label.

    field_name must be the exact name of a header field name, but character case is ignored.


    Default Setting

    <FieldStyles>
    -default-
    </FieldStyles>
    

    Resource Variables

    N/A


    Examples

    The following causes the subject text to appear in bold and all other field text to be in italics:

    <FieldStyles>
    subject:b
    -default-:i
    </FieldStyles>
    

    Version

    1.0


    See Also

    EXCS, FIELDORDER, FIELDSBEG, FIELDSEND, FLDBEG, FLDEND, LABELBEG, LABELEND, LABELSTYLES


    [Prev: FIELDSTORE][Resources][TOC][Next: FILEPERMS]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fldbeg.html0000644004705000001440000000643312332046111020243 0ustar ehoodusers MHonArc Resources: FLDBEG
    [Prev: FIRSTPGLINK][Resources][TOC][Next: FLDEND]

    FLDBEG


    Syntax

    Envariable

    N/A

    Element

    <FLDBEG>
    markup ...
    </FLDBEG>

    Command-line Option

    N/A


    Description

    FLDBEG represents the beginning markup of a field text of a message field.


    Default Setting

    The space character.


    Resource Variables

    N/A


    Examples

    See FIELDSBEG for an example usage of this resource.


    Version

    2.0


    See Also

    EXCS, FIELDORDER, FIELDSBEG, FIELDSEND, FIELDSTYLES, FLDEND, LABELBEG, LABELEND, LABELSTYLES


    [Prev: FIRSTPGLINK][Resources][TOC][Next: FLDEND]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/nosubjecttxt.html0000644004705000001440000000574512332046111021561 0ustar ehoodusers MHonArc Resources: NOSUBJECTTXT
    [Prev: NEXTPGLINKIA][Resources][TOC][Next: NOTE]

    NOSUBJECTTXT


    Syntax

    Envariable

    M2H_NOSUBJECTTXT=text

    Element

    <NOSUBJECTTXT>
    text
    </NOSUBJECTTXT>

    Command-line Option

    -nosubjecttxt text


    Description

    NOSUBJECTTXT defines the raw text to use for messages that have no subject.


    Default Setting

    [no subject]
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.5.6


    See Also


    [Prev: NEXTPGLINKIA][Resources][TOC][Next: NOTE]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/add.html0000644004705000001440000000760612332046111017553 0ustar ehoodusers MHonArc Resources: ADD
      [Resources][TOC][Next: ADDRESSMODIFYCODE]

    ADD


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -add folder1 ...
    -add < single-message


    Description

    The ADD resource instructs MHonArc to add messages to an existing archive. If the archive specified does not exist, MHonArc will automatically create the archive. If input is coming from standard in, then the input is treated as a single message to add to the archive.

    When adding, MHonArc will skip any messages that already exists in the archive: allowing MHonArc to rescan a mail folder to add only new messages found.

    NOTE:

    MHonArc determines duplicate messages by message-ids.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    The following example shows adding a mail folder:

    prompt> mhonarc -outdir /home/ehood/mailarch -add inbox
    

    The following shows how a single message can be added. The message comes from the output of the MH show program:

    prompt> show -noshow -noheader | mhonarc -add
    

    Version

    1.0


    See Also

    OUTDIR, RECONVERT


      [Resources][TOC][Next: ADDRESSMODIFYCODE]

    $Date: 2005/05/13 00:00:36 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevinlink.html0000644004705000001440000003133412332046112021364 0ustar ehoodusers MHonArc Resources: TPREVINLINK
    [Prev: TPREVINBUTTONIA][Resources][TOC][Next: TPREVINLINKIA]

    TPREVINLINK


    Syntax

    Envariable

    N/A

    Element

    <TPREVINLINK>
    markup
    </TPREVINLINK>

    Command-line Option

    N/A


    Description

    TPREVINLINK defines the replacement markup for the resource variable $LINK(TPREVIN)$ when there exists a previous message from the current message within a discussion thread. See TPREVINLINKIA for the replacement markup used with there is no previoud message.

    TPREVINLINK differs from TPREVLINK in that it does not cross discussion thread boundaries.


    Default Setting

    <li>Previous in thread:
    <strong><a href="$MSG(TPREVIN)$">$SUBJECT(TPREVIN)$</a></strong>
    </li>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    BOTLINKS, TNEXTBUTTON, TNEXTINLINK, TNEXTTOPBUTTON, TPREVBUTTON, TPREVINBUTTON, TPREVINLINKIA, TPREVTOPBUTTON


    [Prev: TPREVINBUTTONIA][Resources][TOC][Next: TPREVINLINKIA]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevtoplink.html0000644004705000001440000003101712332046112021556 0ustar ehoodusers MHonArc Resources: TPREVTOPLINK
    [Prev: TPREVTOPBUTTONIA][Resources][TOC][Next: TPREVTOPLINKIA]

    TPREVTOPLINK


    Syntax

    Envariable

    N/A

    Element

    <TPREVTOPLINK>
    markup
    </TPREVTOPLINK>

    Command-line Option

    N/A


    Description

    TPREVTOPLINK defines the replacement markup for the resource variable $LINK(TPREVTOP)$: link markup for first message in the previous discussion thread. See TPREVTOPLINKIA for the replace markup used when there is no previous discussion thread.


    Default Setting

    [<a href="$MSG(TPREVTOP)$">Prev Thread</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTLINK, TNEXTINLINKIA, TNEXTINLINK, TNEXTTOPLINK, TPREVLINK, TPREVINLINK, TPREVTOPBUTTON, TPREVTOPLINKIA


    [Prev: TPREVTOPBUTTONIA][Resources][TOC][Next: TPREVTOPLINKIA]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextpglinkia.html0000644004705000001440000001645012332046112021702 0ustar ehoodusers MHonArc Resources: TNEXTPGLINKIA
    [Prev: TNEXTPGLINK][Resources][TOC][Next: TNEXTTOPBUTTON]

    TNEXTPGLINKIA


    Syntax

    Envariable

    N/A

    Element

    <TNEXTPGLINKIA>
    markup ...
    </TNEXTPGLINKIA>

    Command-line Option

    N/A


    Description

    TNEXTPGLINKIA defines the value for the $PGLINK(TNEXT)$ resource variable when there is no next page to the current page of the thread index.

    See the TNEXTPGLINK for defining the value of $PGLINK(TNEXT)$ when there is a next page.


    Default Setting

    <TNextPgLinkIA chop>
    [Next Page]
    </TNextPgLinkIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None


    Version

    2.0


    See Also

    MULTIPG, THEAD, TNEXTPGLINK, TPREVPGLINK, TPREVPGLINKIA


    [Prev: TNEXTPGLINK][Resources][TOC][Next: TNEXTTOPBUTTON]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/definevar.html0000644004705000001440000001233612332046111020762 0ustar ehoodusers MHonArc Resources: DEFINEVAR
    [Prev: DEFINEDERIVED][Resources][TOC][Next: DEFRCFILE]

    DEFINEVAR


    Syntax

    Envariable

    N/A

    Element

    <DEFINEVAR>
    variable-name
    value ...
    </DEFINEVAR>

    Command-line Option

    -definevar variable-specification-list


    Description

    DEFINEVAR is used for creating user-defined resource variables. DEFINEVAR can be defined on the command-line or in the resource file.

    On the command-line, the option is called -definevar The following argument after -definevar is treated as a variable specification list. The specification list is a string containing name/value pairs with the following format:

    NAME=VALUE

    Multiple name/value pairs are separated by whitespace. If VALUE contains whitespace, then it must be surrounded by quotes to prevent the command shell from treating the string as multiple arguments. Multiple -definevar options can be specified on the command-line. This can help reduce the ugliness of specify mutliple variable definitions with a single option.

    NOTE:

    If you intend to include resource variables as part of the VALUE, you may need to escape the '$' characters (and possible other characters) to prevent interpolation by the command shell. See your command shell documentation for more information.

    In a resource file the <DEFINEVAR> element may occur mutliple times to define multiple variables. The first line of the <DEFINEVAR> element is the name of the variables. All subsequent lines represent the content of the variable. If you do not want the last newline of a <DEFINEVAR> element content to be part of the defined variable content, then specify the chop attribute.


    Default Setting

    N/A


    Resource Variables

    N/A


    Examples

    The following is a simple example of defining a variable to represent the base text for the title of an archive:

    <DefineVar chop>
    MAIN-TITLE
    Comp.lang.perl.misc 
    </DefineVar>
    

    Now, the variable can be refernced as follows:

    <TTitle chop>
    $MAIN-TITLE$ (thread)
    </TTitle>
    

    If you wanted to use the same resource file for multiple arcvhives it may better to define $MAIN-TITLE$ on the command-line as follows:

    prompt> mhonarc -definevar MAIN-TITLE='mhonarc mailing list' ...
    

    Version

    2.0


    See Also


    [Prev: DEFINEDERIVED][Resources][TOC][Next: DEFRCFILE]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicesingletxt.html0000644004705000001440000003234012332046112022242 0ustar ehoodusers MHonArc Resources: TSLICESINGLETXT
    [Prev: TSLICELITXTCUR][Resources][TOC][Next: TSLICESINGLETXTCUR]

    TSLICESINGLETXT


    Syntax

    Envariable

    N/A

    Element

    <TSLICESINGLETXT>
    markup
    </TSLICESINGLETXT>

    Command-line Option

    N/A


    Description

    Markup for a thread slice listing with no follow-ups. This resource functions the same as TSINGLETXT, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TSINGLETXT resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICELITXTCUR][Resources][TOC][Next: TSLICESINGLETXTCUR]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/nextpglink.html0000644004705000001440000001750012332046111021200 0ustar ehoodusers MHonArc Resources: NEXTPGLINK
    [Prev: NEXTLINKIA][Resources][TOC][Next: NEXTPGLINKIA]

    NEXTPGLINK


    Syntax

    Envariable

    N/A

    Element

    <NEXTPGLINK>
    markup ...
    </NEXTPGLINK>

    Command-line Option

    N/A


    Description

    NEXTPGLINK defines the value for the $PGLINK(NEXT)$ resource variable when there is a next page to the current page of the main index.

    See the NEXTPGLINKIA for defining the value of $PGLINK(NEXT)$ when there is no next page.


    Default Setting

    <NextPgLink chop>
    [<a href="$PG(NEXT)$">Next Page</a>]
    </NextPgLink>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None


    Version

    2.0


    See Also

    LISTBEGIN, MULTIPG, NEXTPGLINKIA, PREVPGLINK, PREVPGLINKIA


    [Prev: NEXTLINKIA][Resources][TOC][Next: NEXTPGLINKIA]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/ssmarkup.html0000644004705000001440000000761612332046111020671 0ustar ehoodusers MHonArc Resources: SSMARKUP
    [Prev: SPAMMODE][Resources][TOC][Next: STDERR]

    SSMARKUP


    Syntax

    Envariable

    N/A

    Element

    <SSMARKUP>
    markup...
    </SSMARKUP>

    Command-line Option

    N/A


    Description

    SSMARKUP defines the default markup that occurs at the very beginning of all created HTML pages. This resource may be used to include any server-side processing markup that must occur before any HTML-related markup.

    If you require to have different initial markup for the different types of pages that MHonArc generates, then you can use the MSGPGSSMARKUP, IDXPGSSMARKUP, and TIDXPGSSMARKUP resources.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    The following example is stolen from the MHonArc mailing list which lead to the addition of SSMARKUP to MHonArc. In this markup, some server-side markup is added to check if the user is logged in:

    <SSMarkup>
    <%@ LANGUAGE=VBSCRIPT %>
    <%
    If Not Session("LoginOK") Then Response.redirect "/default.htm"
    %>
    </SSMarkup>
    

    Version

    2.4.0


    See Also

    IDXPGSSMARKUP, MSGPGSSMARKUP, TIDXPGSSMARKUP

    Page Layout


    [Prev: SPAMMODE][Resources][TOC][Next: STDERR]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1999-2002 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tliend.html0000644004705000001440000000627712332046112020306 0ustar ehoodusers MHonArc Resources: TLIEND
    [Prev: TLEVELS][Resources][TOC][Next: TLINONE]

    TLIEND


    Syntax

    Envariable

    N/A

    Element

    <TLIEND>
    markup ...
    </TLIEND>

    Command-line Option

    N/A


    Description

    TLIEND defines the end markup for a regular entry in the thread index. A regular entry is a message that has either a previous or next message and is not the top message in a thread.

    NOTE

    Use TLITXT for defining the start and content markup for a regular entry.


    Default Setting

    <TLiEnd>
    </li>
    </TLiEnd>
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    TLITXT


    [Prev: TLEVELS][Resources][TOC][Next: TLINONE]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/foluplitxt.html0000644004705000001440000003016312332046111021227 0ustar ehoodusers MHonArc Resources: FOLUPLITXT
    [Prev: FOLUPEND][Resources][TOC][Next: FORCE]

    FOLUPLITXT


    Syntax

    Envariable

    N/A

    Element

    <FOLUPLITXT>
    markup...
    </FOLUPLITXT>

    Command-line Option

    N/A


    Description

    FOLUPLITXT defines the markup for an entry in the explicit follow-up links list after the message body on a message page.

    NOTE

    This resource is only applicable if the FOLREFS resource is on and the message has explicit follow-ups.


    Default Setting

    <li><strong>$SUBJECT$</strong>
    <ul><li><em>From:</em> $FROM$</li></ul></li>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $A_ATTR$ The NAME and HREF attributes to use in an anchor to link to the archived message. The NAME attribute links the messages to the index page.
    $A_HREF$ The HREF attribute to use in an anchor to link to the archived message.
    $A_NAME$ The NAME attribute to use in an anchor for messages to link to the index page.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    See FOLUPBEGIN.


    Version

    2.1.0


    See Also

    FOLREFS, FOLUPBEGIN, FOLUPEND, REFSBEGIN, REFSEND, REFSLITXT


    [Prev: FOLUPEND][Resources][TOC][Next: FORCE]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/attachmenturl.html0000644004705000001440000000641412332046111021672 0ustar ehoodusers MHonArc Resources: ATTACHMENTURL
    [Prev: ATTACHMENTDIR][Resources][TOC][Next: AUTHORBEGIN]

    ATTACHMENTURL


    Syntax

    Envariable

    M2H_ATTACHMENTURL=url

    Element

    <ATTACHMENTURL>
    url
    </ATTACHMENTURL>

    Command-line Option

    -attachmenturl url


    Description

    ATTACHMENTURL defines the base URL for linking to attachment files.

    If ATTACHMENTDIR is a relative pathname, than ATTACHMENTURL should equal the value of ATTACHMENTDIR.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    See ATTACHMENTDIR.


    Version

    2.6.9


    See Also

    ATTACHMENTDIR,


    [Prev: ATTACHMENTDIR][Resources][TOC][Next: AUTHORBEGIN]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 2003, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextinbutton.html0000644004705000001440000003125312332046112021744 0ustar ehoodusers MHonArc Resources: TNEXTINBUTTON
    [Prev: TNEXTBUTTONIA][Resources][TOC][Next: TNEXTINBUTTONIA]

    TNEXTINBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TNEXTINBUTTON>
    markup
    </TNEXTINBUTTON>

    Command-line Option

    N/A


    Description

    TNEXTINBUTTON defines the replacement markup for the resource variable $BUTTON(TNEXTIN)$ when there exists a next message from the current message within a discussion thread. See TNEXTINBUTTONIA for the replacement markup used with there is no next message.

    TNEXTINBUTTON differs from TNEXTBUTTON in that it does not cross discussion thread boundaries.


    Default Setting

    [<a href="$MSG(TNEXTIN)$">Next in Thread</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTBUTTON, TNEXTINBUTTONIA, TNEXTINLINK, TNEXTTOPBUTTON, TOPLINKS, TPREVBUTTON, TPREVINBUTTON, TPREVTOPBUTTON


    [Prev: TNEXTBUTTONIA][Resources][TOC][Next: TNEXTINBUTTONIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/sort.html0000644004705000001440000000602712332046111020006 0ustar ehoodusers MHonArc Resources: SORT
    [Prev: SINGLE][Resources][TOC][Next: SPAMMODE]

    SORT


    Syntax

    Envariable

    M2H_SORT=[ 0 | 1 ]

    Element(s)

    <SORT>
    <NOSORT>

    Command-line Option(s)

    -sort
    -nosort


    Description

    When SORT is active, messages are sorted by date in the main index. When SORT is off, messages are listed in the ordered processed (ie. by message number).


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    REVERSE, SUBSORT


    [Prev: SINGLE][Resources][TOC][Next: SPAMMODE]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsliceliend.html0000644004705000001440000003224512332046112021320 0ustar ehoodusers MHonArc Resources: TSLICELIEND
    [Prev: TSLICELEVELS][Resources][TOC][Next: TSLICELIENDCUR]

    TSLICELIEND


    Syntax

    Envariable

    N/A

    Element

    <TSLICELIEND>
    markup
    </TSLICELIEND>

    Command-line Option

    N/A


    Description

    Ending markup for a thread slice message listing. This resource functions the same as TLIEND, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TLIEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICELEVELS][Resources][TOC][Next: TSLICELIENDCUR]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tfoot.html0000644004705000001440000001714412332046112020155 0ustar ehoodusers MHonArc Resources: TFOOT
    [Prev: TFIRSTPGLINK][Resources][TOC][Next: THEAD]

    TFOOT


    Syntax

    Envariable

    N/A

    Element

    <TFOOT>
    markup ...
    </TFOOT>

    Command-line Option

    N/A


    Description

    TFOOT defines the footer markup of thread index pages. It is also responsible for defining the closing markup for the thread listing.


    Default Setting

    <TFoot>
    </ul>
    </TFoot>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    The following example sets TFOOT to contain page links for a multi-page thread index:

    <TFoot>
    </ul>
    <hr>
    <table border=0 width="100%">
    <tbody>
    <tr>
    <td align="left">$PGLINK(TPREV)$
    <td align="right">[<a href="$PG(TFIRST)$">First Page</a>]
    <td align="left">[<a href="$PG(TLAST)$">Last Page</a>]
    <td align="right">$PGLINK(TNEXT)$
    <tr align="center">
    <th colspan=4>Page $PAGENUM$ of $NUMOFPAGES$
    </tbody>
    </table>
    </TFoot>
    

    Version

    1.0


    See Also

    THEAD

    Page Layout


    [Prev: TFIRSTPGLINK][Resources][TOC][Next: THEAD]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tindentbegin.html0000644004705000001440000001003512332046112021464 0ustar ehoodusers MHonArc Resources: TINDENTBEGIN
    [Prev: TIMEZONES][Resources][TOC][Next: TINDENTEND]

    TINDENTBEGIN


    Syntax

    Envariable

    N/A

    Element

    <TINDENTBEGIN>
    markup...
    </TINDENTBEGIN>

    Command-line Option

    N/A


    Description

    TINDENTBEGIN defines the markup for opening a level for the continuation of a broken thread. When MHonArc creates a multi-page thread index, it is possible that a thread may be split across mulitple pages. TINDENTBEGIN is used to create a thread level indent inorder to restart a thread at the proper level. TINDENTBEGIN will be used for each level that MHonArc must create inorder to restart the thread.

    The resource, TINDENTEND, is used to close a level created by TINDENTBEGIN.


    Default Setting

    <TIndentBegin>
    <ul>
    </TIndentBegin>
    

    Resource Variables

    N/A


    Examples

    By default, MHonArc uses the UL element for listing messages in a thread index. An alternative, is to use the DL element if bullets before messages are not desired. Therefore, the following may be used for continuing a broken a thread if DL's are used for listing messages for the thread index:

    <TIndentBegin>
    <dl><dd>
    </TIndentBegin>
    
    <TIndentEnd>
    </dd></dl>
    </TIndentEnd>
    

    Version

    2.0


    See Also

    MULTIPG, TCONTBEGIN, TINDENTEND

    Page Layout


    [Prev: TIMEZONES][Resources][TOC][Next: TINDENTEND]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tidxpgend.html0000644004705000001440000001562312332046112021010 0ustar ehoodusers MHonArc Resources: TIDXPGEND
    [Prev: TIDXPGBEGIN][Resources][TOC][Next: TIDXPGSSMARKUP]

    TIDXPGEND


    Syntax

    Envariable

    N/A

    Element

    <TIDXPGEND>
    markup ...
    </TIDXPGEND>

    Command-line Option

    N/A


    Description

    The TIDXPGEND resource defines the end markup for the thread index pages.


    Default Setting

    <TIdxPgEnd>
    </body>
    </html>
    </TIdxPgEnd>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None.


    Version

    1.2


    See Also

    TIDXPGBEGIN


    [Prev: TIDXPGBEGIN][Resources][TOC][Next: TIDXPGSSMARKUP]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/idxpgend.html0000644004705000001440000001672512332046111020627 0ustar ehoodusers MHonArc Resources: IDXPGEND
    [Prev: IDXPGBEGIN][Resources][TOC][Next: IDXPGSSMARKUP]

    IDXPGEND


    Syntax

    Envariable

    N/A

    Element

    <IDXPGEND>
    markup ...
    </IDXPGEND>

    Command-line Option

    N/A


    Description

    The IDXPGEND resource defines the end markup for the main index page.


    Default Setting

    <IdxPgEnd>
    </body>
    </html>
    </IdxPgEnd>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None.


    Version

    1.2


    See Also

    IDXPGBEGIN, TIDXPGBEGIN, TIDXPGEND


    [Prev: IDXPGBEGIN][Resources][TOC][Next: IDXPGSSMARKUP]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/umask.html0000644004705000001440000000634012332046112020136 0ustar ehoodusers MHonArc Resources: UMASK
    [Prev: TTOPLINKIA][Resources][TOC][Next: USELOCALTIME]

    UMASK


    Syntax

    Envariable

    M2H_UMASK=umask

    Element

    <UMASK>
    umask
    </UMASK>

    Command-line Option

    -umask umask


    Description

    The UMASK resource defines the umask value for the MHonArc process. This resource is only valid on Unix systems. Consult the umask(1) manpage for more information.


    Default Setting

    Value inherited from the parent process.


    Resource Variables

    N/A


    Examples

    If you want to make sure that the files created by MHonArc are readable by others, do something like the following:

        shell> mhonarc -umask 022  ...
    

    Version

    1.0


    See Also


    [Prev: TTOPLINKIA][Resources][TOC][Next: USELOCALTIME]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mimedecoders.html0000644004705000001440000001143212332046111021453 0ustar ehoodusers MHonArc Resources: MIMEDECODERS
    [Prev: MIMEARGS][Resources][TOC][Next: MIMEEXCS]

    MIMEDECODERS


    Syntax

    Envariable

    N/A

    Element

    <MIMEDECODERS>
    decoder-specification
    ...
    </MIMEDECODERS>

    Command-line Option

    N/A


    Description

    The MIMEDECODERS resource specifies Perl routines to call for decoding MIME encoded data. For message bodies, the encoding is specified by the Content-Transfer-Encoding header field. Data encoding can also occur for non-ASCII data in message headers.

    The MIMEDECODERS resource can only be defined via the resource file. Each line of the element specifies a encoding, the Perl decoding routine, and the Perl source file containing the routine.

    Example:

    <MIMEDecoders>
    base64;           base64::b64decode;            base64.pl
    </MIMEDecoders>
    

    The first field is the encoding method. The second field is the routine name (which should contain a package qualifier). The third field is the source file the routine is defined. The source file is optional if the routine is known to be defined in an already listed source file.

    There are some special decoder routines values. They are as follows:

    as-is

    Leave the data "as-is".

    Each decoder function is invoked as follows:

        $decoded_data = &function($data);
    

    Default Setting

    <MIMEDecoders>
    7bit;             as-is;
    8bit;             as-is;
    binary;           as-is;
    base64;           base64::b64decode;            base64.pl
    quoted-printable; quoted_printable::qprdecode;  qprint.pl
    x-uuencode;       base64::uudecode;             base64.pl
    xuue;             base64::uudecode;             base64.pl
    uuencode;         base64::uudecode;             base64.pl
    </MIMEDecoders>
    

    Resource Variables

    N/A


    Examples

    The following example changes the base64 decoder to use the MIME::Base64 module (available from CPAN):

    <MIMEDecoders>
    base64; MIME::Base64::decode_base64; MIME/Base64.pm
    </MIMEDecoders>
    

    Version

    2.4.4


    See Also

    CHARSETCONVERTERS, MIMEFILTERS, PERLINC


    [Prev: MIMEARGS][Resources][TOC][Next: MIMEEXCS]

    $Date: 2005/05/13 18:50:38 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsliceend.html0000644004705000001440000003252212332046112020771 0ustar ehoodusers MHonArc Resources: TSLICEEND
    [Prev: TSLICECONTEND][Resources][TOC][Next: TSLICEINDENTBEG]

    TSLICEEND


    Syntax

    Envariable

    N/A

    Element

    <TSLICEEND>
    markup...
    </TSLICEEND>

    Command-line Option

    N/A


    Description

    TSLICEEND defines the end markup of a thread listing "slice" from the use of the $TSLICE$ resource variable. TSLICEEND is comparable to the TFOOT resource. However, TSLICEEND scope only covers the end markup of the thread listing while TFOOT will also includes the footer markup for thread indexes.


    Default Setting

    <TSliceEnd>
    </ul></blockquote>
    </TSliceEnd>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.2.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICECONTEND][Resources][TOC][Next: TSLICEINDENTBEG]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextlink.html0000644004705000001440000003200212332046112021030 0ustar ehoodusers MHonArc Resources: TNEXTLINK
    [Prev: TNEXTINLINKIA][Resources][TOC][Next: TNEXTLINKIA]

    TNEXTLINK


    Syntax

    Envariable

    N/A

    Element

    <TNEXTLINK>
    markup ...
    </TNEXTLINK>

    Command-line Option

    N/A


    Description

    TNEXTLINK defines the value for the $LINK(TNEXT)$ resource variable when there is a next message to the current message according to the message list order of the thread index. TNEXTLINK is analagous to TNEXTBUTTON, but is intended to provide a more descriptive link to the next message.

    See the TNEXTLINKIA for defining the value of $LINK(TNEXT)$ when there is no next message.


    Default Setting

    <TNextLink>
    <li>Next by Thread:
    <strong><a href="$MSG(TNEXT)$">$SUBJECT(TNEXT)$</a></strong>
    </li>
    </TNextLink>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows an alternative to the default setting by add the author of the next message:

    <TNextLink>
    <li>Next by Thread:
    <strong><a href="$MSG(TNEXT)$">$SUBJECT(TNEXT)$</a></strong>,
    <em>$FROMNAME(TNEXT)$</em>
    </li>
    </TNextLink>
    

    Version

    2.0


    See Also

    BOTLINKS, TNEXTLINKIA, TPREVLINK, TPREVLINKIA


    [Prev: TNEXTINLINKIA][Resources][TOC][Next: TNEXTLINKIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mimefilters.html0000644004705000001440000022167012332046111021342 0ustar ehoodusers MHonArc Resources: MIMEFILTERS
    [Prev: MIMEEXCS][Resources][TOC][Next: MIMEINCS]

    MIMEFILTERS


    Syntax

    Envariable

    N/A

    Element

    <MIMEFILTERS>
    filter-specification
    ...
    </MIMEFILTERS>

    Command-line Option

    N/A


    Description

    The resource MIMEFILTERS is used to hook in user specifed filters into MHonArc. The MIMEFILTERS resource can only be set via the MIMEFILTERS element. The syntax for each line of the the MIMEFILTERS element is as follows:

    content-type;routine-name;file-of-routine

    The definition of each semi-colon-separated value is as follows:

    content-type

    The MIME content-type the filter processes. An explicit content-type (base/subtype) or a base content-type (base/*) can be specified.

    routine-name

    The actual routine name of the filter. The name should be fully qualified by the package it is defined in (e.g. "mypackage::filter").

    file-of-routine

    The name of the file that defines routine-name. If the file is not a full pathname, MHonArc finds the file by looking in the standard include paths of Perl, and the paths specified by the PERLINC resource.

    Whitespace is stripped out for each filter specification.

    Default Filters

    MHonArc provides an existing set of filters which should be sufficient for most of your needs. For information about the filters, see the Available Filters section below.

    Writing Filters

    If you want to write your own filter for use in MHonArc, you need to know the Perl programming language. The following information assumes you know Perl.

    NOTE:

    As of v2.5 of MHonArc, the API for filters is different from v2.4.x, and earlier. The following describes the v2.5 API for filters.

    Function Interface of Filter

    MHonArc interfaces with MIME filters by calling a routine with a specific set of arguments. The prototype of the interface routine is as follows:

    sub filter {
        my($fields_hash_ref, $body_data_ref, $is_decoded, $filter_args) = @_;
    
        # Filter code here
    
        # The last statement should be the return value, unless an
        # explicit return is done. See the following for the format of the
        # return value.
    }
    
    Parameter Descriptions
    $fields_hash_ref

    A reference to hash of message/part header fields. Keys are field names in lowercase and values are array references containing the field values. For example, to obtain the content-type, if defined, you would do:

      $fields_hash_ref->{'content-type'}[0]

    Values for a fields are stored in arrays since duplication of fields are possible. For example, the Received: header field is typically repeated multiple times. For fields that only occur once, the array for the field will only contain one item.

    See Special Variables and Header Fields for more information about this parameter.

    $body_data_ref

    Reference to body data. The filter can safely modify referenced data.

    $is_decoded

    Boolean flag if body data has been decoded. This is normally true unless some non-standard content-transfer-encoding is used. See MIMEDECODERS on how to register decoders for various content-transfer-encodings.

    $filter_args

    This is an optional argument string that may be used to modify the behavior of the filter. The format of this string is determined by the filter itself. The value of the string is set by the MIMEARGS resource.

    Return Value

    The return value is treated as a list. The first item of the list is a string representing the HTML markup to insert in the HTMLized message. An empty string, or undef may be returned to tell MHonArc that the routine was unable to filter data.

    Any other list items are treated as names of any files that were generated by the filter. MHonArc needs to keep track if any extra files that a filter may generate in order for MHonArc to delete those files if the message gets removed from the archive.

    NOTE:

    If you want MHonArc to treat the data as filtered, but not have anything displayed on the page, just return a string with a single space character.

    NOTE:

    If the filter creates a subdirectory with files, the filter only needs to return the subdirectory in the return list. If the message gets removed, MHonArc will delete the entire directory.

    Special Variables and Header Fields

    The following global variables are made available to filters:

    $mhonarc::MHAindex

    Index key of message. Various MHonArc data structures and utility routines require the index key of the message.

    $mhonarc::MHAmsgid

    Message ID of message.

    $mhonarc::MHAmsgnum

    Message number. The format of the number will at least be five digits wide, with leading zero padding. For example, if the number for a message is 15, $mhonarc::$MHAmsgnum will be equal to 00015.

    $mhonarc::OUTDIR

    Pathname to archive directory. This variable is useful for filters that create derived files.

    The $fields_hash_ref parameter will have special MHonArc-specific keys defined. Unlike regular header field values, the values are not arrays (unless noted). The following special keys are defined:

    x-mha-charset
    my $charset = $fields_hash_ref->{'x-mha-charset'}

    Only defined for text entities, the value represents the character set encoding of the text entity.

    If your filter will take character encoding into account, you should use this value vs what is specified in regular entity header fields because TEXTENCODE may be affect, so the effective character encoding of the data may be different from the original encoding specified in the message.

    x-mha-content-type
    my $content_type = $fields_hash_ref->{'x-mha-content-type'}

    The media type of the entity extracted from content-type entity header.

    x-mha-part-number
    my $part_no      = $fields_hash_ref->{'x-mha-part-number'}
    my $full_part_no = readmail::gen_full_part_number($fields_hash_ref);

    The child number of the entity within a multipart entity. Numbering starts with 1, and if data is not part of a multipart entity, this key may not be defined.

    x-mha-parent-header
    my $parent_header = $fields_hash_ref->{'x-mha-parent-header'}
    

    The header field hash for the parent entity, if applicable.

    Accessing Other Parts

    For some media-types, a filter may need to access other entity parts to properly process a given part. For example, m2h_text_html::filter must access other entity parts when processing MHTML messages.

    When MHonArc parses a multipart message, it fills the %readmail::Cid hash for each entity that defines either a Content-Id or Content-Location. The %readmail::Cid hash is mainly for use by media types, like multipart/related where message parts may reference other message parts.

    The keys of the %readmail::Cid hash will be the Content-Ids and Content-Locations and each value will be a reference to an entity hash structure. Code example:

    my $entity = $readmail::Cid{$content_id};

    The hash structure defines the following fields:

    body
    my $entity_body_ref = $readmail::Cid{$content_id}->{'body'}
    

    Scalar reference to the body of the entity.

    fields
    my $entity_header_ref = $readmail::Cid{$content_id}->{'fields'}
    

    Entity header fields hash reference. The format is the same as described for $fields_hash_ref.

    filtered
    my $is_filtered = $readmail::Cid{$content_id}->{'filtered'}
    

    Boolean if part has already been filtered. This field should be set to a true value by filters that explicitly filters other entity parts. This tells MHonArc to not invoke a filter for the entity.

    uri
    my $entity_uri = $readmail::Cid{$content_id}->{'uri'}
    

    The URI to the filtered version of the entity. This field should be set by filters that explicitly filters other entity parts.

    For a detailed example on how %readmail::Cid can be used, see the MHonArc library mhtxthtml.pl.

    Utility Routines

    See Utilities Routines in the appendix for various helper routines that can be used by your filter.

    Filter Writing Tips

    The following recommendations/tips are given to help you write filters:

    • Qualify your filter in its own package. This eliminates possible variable/routine conflicts with MHonArc.

    • If the filter creates derived files (like the image filters), you may use the variable $mhonarc::OUTDIR to determine the location of the mail archive.

      NOTE:

      Do not include $mhonarc::OUTDIR as part as the filename that is returned to MHonArc. If the filter does create files, just return the base name.

    • Look at the default filters contained in the distribution of MHonArc. You can use these as templates for writing your own.

    • Make sure your Perl source file ends with a true statement (like "1;"). MHonArc just performs a require on the file, and if the file does not return true, Perl will abort execution.

    • Test your filter before production use.

    Using C

    If a MIME filter requires the utilization of a C program, or other non-Perl executable, a Perl wrapper must be written for the program in-order to interface with MHonArc. The wrapper must follow the conventions described in Writing Filters.


    Available Filters

    The following is the list of filters available in the standard MHonArc distribution:

    NOTE:

    The filters use a MIMEARGS argument style similiar to HTML attribute values. For example:

    <MIMEArgs>
    m2h_text_plain::filter; attachcheck fancyquote maxwidth=80
    </MIMEArgs>
    

    If writing your own filters, you are encouraged to use the same style for consistency.

    m2h_external::filter

    The filter extracts the data into a separate file and puts a hyperlink to the file into the HTMLized message. The following is an example how the link is formatted:

    Attachment: blueball.gif
    Description: Blue ball GIF icon

    The description text is retrieved from the Content-Disposition message header field, if defined. If not defined, a generic description will be provided based on the specified content-type of the data.

    If the useicon filter argument has been specified for the filter, the following format will be used:

    Attachment: blueball.gif
    Description: Blue ball GIF icon

    The actual icon used is based upon the ICONS resource.

    By default, the filter ignores any filename specification given in the message when writing the data to disk. A unique filename with an extension based upon sub-type is generated.

    m2h_external::filter can take the following MIMEARGS arguments:

    excludeexts=ext1,...

    A comma separated list of message specified filename extensions to exclude. I.e. If the filename extension matches an extension in excludeexts, the content will not be written. The return markup will contain the name of the attachment, but no link to the data. This option is best used with application/octet-stream to exclude unwanted data that is not tagged with the proper content-type.

    ext=ext

    Use ext as the filename extension. The filter already has a large list of extensions for various content-types. Use this argument if you process a content-type not recognized by the filter.

    forceattach

    Force images to never be displayed inline, overriding any Content-Disposition setting.

    forceinline

    Force images to be displayed inline, overriding any Content-Disposition setting.

    frame

    Draw a border around the attachment link.

    iconurl="url"

    Use "url" as the url for the icon to use if the useicon option is set. This option will override any setting defined by the ICONS resource. The double quotes are required.

    inline

    Inline image data by default if content-disposition not defined.

    inlineexts=ext1,...

    A comma separated list of message specified filename extensions to treat as possible inline data. Applicable when content-type is not image/* and usename or usenameext is in effect.

    type="description"

    Use "description" as type description of the data. The double quotes are required. The filter already has a large list of descriptions for various content-types. Use this argument if you process a content-type not recognized by the filter.

    subdir

    Place derived file in a subdirectory of the archive. The subdirectory will be called "msgMSGNUM". This option may be useful if usename is specified to minimize security and name conflict problems.

    target=name

    Set the TARGET attribute of anchor link to file Default value is undefined (ie. no TARGET attribute will be written).

    useicon

    Include a content-type icon with the hyperlink to the derived file. The icon used is the value of the iconurl option or the icon defined by the ICONS resource.

    usename

    Use (file)name attribute for determining name of derived file.

    CAUTION:

    Use this option with caution since it can lead to filename conflicts and security problems.

    usenameext

    Use (file)name attribute for determining the extension of derived file.

    CAUTION:

    Use this option with caution since it can lead to security problems.

    All arguments should be separated by at least one space.

    The following table shows the default list of content-types with the filename extension used and a short description that m2h_external::filter recognizes:

    Content-typeExtensionDescription
    application/astound asd Astound presentation
    application/envoy evy Envoy file
    application/fastman lcc fastman file
    application/fractals fif Fractal Image Format
    application/iges iges IGES file
    application/mac-binhex40 hqx Mac BinHex archive
    application/mathematica ma Mathematica Notebook document
    application/mbedlet mbd mbedlet file
    application/ms-excel xls MS-Excel spreadsheet
    application/ms-powerpoint ppt MS-Powerpoint presentation
    application/ms-project mpp MS-Project file
    application/msword doc MS-Word document
    application/octet-stream bin Binary data
    application/oda oda ODA file
    application/pdf pdf Adobe PDF document
    application/pgp pgp PGP message
    application/pgp-signature pgp PGP signature
    application/pkcs7-mime p7m S/MIME encrypted message
    application/pkcs7-signature p7s S/MIME cryptographic signature
    application/postscript ps PostScript document
    application/rtf rtf RTF file
    application/sgml sgml SGML document
    application/studiom smp Studio M file
    application/timbuktu tbt timbuktu file
    application/vis5d v5d Vis5D dataset
    application/vnd.framemaker fm FrameMaker document
    application/vnd.hp-hpgl hpg HPGL file
    application/vnd.lotus-1-2-3 123 Lotus 1-2-3
    application/vnd.lotus-approach apr Lotus Approach
    application/vnd.lotus-freelance prz Lotus Freelance
    application/vnd.lotus-organizer org Lotus Organizer
    application/vnd.lotus-screencam scm Lotus Screencam
    application/vnd.lotus-wordpro lwp Lotus WordPro
    application/vnd.mif mif Frame MIF document
    application/vnd.ms-excel xls MS-Excel spreadsheet
    application/vnd.ms-powerpoint ppt MS-Powerpoint presentation
    application/vnd.ms-project mpp MS-Project file
    application/vnd.stardivision.calc sdc StarCalc spreadsheet
    application/vnd.stardivision.chart sds StarChart document
    application/vnd.stardivision.draw sda StarDraw document
    application/vnd.stardivision.impress sdd StarImpress presentation
    application/vnd.stardivision.impress-packed sdp StarImpress packed file
    application/vnd.stardivision.mail smd StarMail mail file
    application/vnd.stardivision.math smf StarMath document
    application/vnd.stardivision.writer sdw StarWriter document
    application/vnd.stardivision.writer-global sgl StarWriter global document
    application/vnd.sun.xml.calc sxc OpenOffice Calc spreadsheet
    application/vnd.sun.xml.calc.template stc OpenOffice Calc template
    application/vnd.sun.xml.draw sxd OpenOffice Draw document
    application/vnd.sun.xml.draw.template std OpenOffice Draw Template
    application/vnd.sun.xml.impress sxi OpenOffice Impress presentation
    application/vnd.sun.xml.impress.template sti OpenOffice Impress template
    application/vnd.sun.xml.math sxm OpenOffice Math documents
    application/vnd.sun.xml.writer sxw OpenOffice Writer document
    application/vnd.sun.xml.writer.global sxg OpenOffice Writer global document
    application/vnd.sun.xml.writer.template stw OpenOffice Write template
    application/winhlp hlp WinHelp document
    application/wordperfect5.1 wp WordPerfect 5.1 document
    application/x-asap asp asap file
    application/x-bcpio bcpio BCPIO file
    application/x-bzip2 bz2 BZip2 compressed data
    application/x-compress Z Unix compressed data
    application/x-cpio cpio CPIO file
    application/x-csh csh C-Shell script
    application/x-dot dot dot file
    application/x-dvi dvi TeX dvi file
    application/x-earthtime etc Earthtime file
    application/x-envoy evy Envoy file
    application/x-excel xls MS-Excel spreadsheet
    application/x-gtar gtar GNU Unix tar archive
    application/x-gzip gz GNU Zip compressed data
    application/x-hdf hdf HDF file
    application/x-javascript js JavaScript source
    application/x-ksh ksh Korn Shell script
    application/x-latex latex LaTeX document
    application/x-maker fm FrameMaker document
    application/x-mif mif Frame MIF document
    application/x-mocha moc mocha file
    application/x-msaccess mdb MS-Access database
    application/x-mscardfile crd MS-CardFile
    application/x-msclip clp MS-Clip file
    application/x-msmediaview m14 MS-Media View file
    application/x-msmetafile wmf MS-Metafile
    application/x-msmoney mny MS-Money file
    application/x-mspublisher pub MS-Publisher document
    application/x-msschedule scd MS-Schedule file
    application/x-msterminal trm MS-Terminal
    application/x-mswrite wri MS-Write document
    application/x-net-install ins Net Install file
    application/x-netcdf cdf Cdf file
    application/x-ns-proxy-autoconfig proxy Netscape Proxy Auto Config
    application/x-patch patch Source code patch
    application/x-perl pl Perl program
    application/x-pointplus css pointplus file
    application/x-salsa slc salsa file
    application/x-script script A script file
    application/x-sh sh Bourne shell script
    application/x-shar shar Unix shell archive
    application/x-sprite spr sprite file
    application/x-stuffit sit Macintosh archive
    application/x-sv4cpio sv4cpio SV4Cpio file
    application/x-sv4crc sv4crc SV4Crc file
    application/x-tar tar Unix tar archive
    application/x-tcl tcl Tcl script
    application/x-tex tex TeX document
    application/x-texinfo texinfo TeXInfo document
    application/x-timbuktu tbp timbuktu file
    application/x-tkined tki tkined file
    application/x-troff roff Troff document
    application/x-troff-man man Unix manual page
    application/x-troff-me me Troff ME-macros document
    application/x-troff-ms ms Troff MS-macros document
    application/x-ustar ustar UStar file
    application/x-wais-source src WAIS Source
    application/x-zip-compressed zip Zip compressed data
    application/xml xml XML document
    application/zip zip Zip archive
    audio/basic snd Basic audio
    audio/echospeech es Echospeech audio
    audio/microsoft-wav wav Wave audio
    audio/midi midi MIDI audio
    audio/wav wav Wave audio
    audio/x-aiff aif AIF audio
    audio/x-epac pae epac audio
    audio/x-midi midi MIDI audio
    audio/x-mpeg mp2 MPEG audio
    audio/x-pac pac pac audio
    audio/x-pn-realaudio ra PN Realaudio
    audio/x-wav wav Wave audio
    chemical/chem3d c3d Chem3d chemical test
    chemical/chemdraw chm Chemdraw chemical test
    chemical/cif cif CIF chemical test
    chemical/cml cml CML chemical test
    chemical/cmsl cml Chemical Structure Markup
    chemical/cxf cxf Chemical Exhange Format file
    chemical/daylight-smiles smi SMILES format file
    chemical/embl-dl-nucleotide emb EMBL nucleotide format file
    chemical/gaussian gau Gaussian data
    chemical/gaussian-input gau Gaussian input data
    chemical/gaussian-log gal Gaussian log
    chemical/gcg8-sequence gcg GCG format file
    chemical/genbank gen GENbank data
    chemical/jcamp-dx jdx Jcamp chemical spectra test
    chemical/kinemage kin Kinemage
    chemical/macromodel-input mmd Macromodel chemical test
    chemical/mdl-molfile mol MOL mdl chemical test
    chemical/mdl-rdf rdf RDF chemical test
    chemical/mdl-rxn rxn RXN chemical test
    chemical/mdl-sdf sdf SDF chemical test
    chemical/mdl-tgf tgf TGF chemical test
    chemical/mif mif MIF chemical test
    chemical/mmd mmd Macromodel data
    chemical/mopac-input mop MOPAC data
    chemical/ncbi-asn1 asn NCBI data
    chemical/ncbi-asn1-binary val NCBI data
    chemical/pdb pdb Protein Databank data
    chemical/rosdal ros Rosdal data
    chemical/xyz xyz Xmol XYZ data
    image/bmp bmp Windows bitmap
    image/cgm cgm Computer Graphics Metafile
    image/fif fif Fractal Image Format image
    image/g3fax g3f Group III FAX image
    image/gif gif GIF image
    image/ief ief IEF image
    image/ifs ifs IFS image
    image/jpeg jpg JPEG image
    image/pbm pbm Portable bitmap
    image/pgm pgm Portable graymap
    image/png png PNG image
    image/tiff tif TIFF image
    image/vnd dwg VND image
    image/wavelet wi Wavelet image
    image/x-cmu-raster ras CMU raster
    image/x-pbm pbm Portable bitmap
    image/x-pcx pcx PCX image
    image/x-pgm pgm Portable graymap
    image/x-pict pict Mac PICT image
    image/x-pnm pnm Portable anymap
    image/x-portable-anymap pnm Portable anymap
    image/x-portable-bitmap pbm Portable bitmap
    image/x-portable-graymap pgm Portable graymap
    image/x-portable-pixmap ppm Portable pixmap
    image/x-ppm ppm Portable pixmap
    image/x-rgb rgb RGB image
    image/x-xbitmap xbm X bitmap
    image/x-xbm xbm X bitmap
    image/x-xpixmap xpm X pixmap
    image/x-xpm xpm X pixmap
    image/xwd xwd X window dump
    image/xwindowdump xwd X window dump
    message/news 822 News post
    message/rfc822 822 Mail message
    model/iges iges IGES model
    model/mesh mesh Mesh model
    model/vrml wrl VRML model
    text/enriched rtx Text-enriched document
    text/html html HTML document
    text/plain txt Text document
    text/richtext rtx Richtext document
    text/setext stx Setext document
    text/sgml sgml SGML document
    text/tab-separated-values tsv Tab separated values
    text/x-speech talk Speech document
    text/x-vcard vcf Vcard
    text/xml xml XML document
    video/isivideo fvi isi video
    video/mpeg mpg MPEG movie
    video/msvideo avi MS Video
    video/quicktime mov QuickTime movie
    video/vivo viv vivo video
    video/wavelet wv Wavelet video
    video/x-sgi-movie movie SGI movie

    m2h_msg_extbody::filter

    This filter is designed to process message/external-body data. The filter attempts to translate the external-body paramaters into a linked URL with some descriptive information, if provided. The following access-types are supported: ANON-FTP, FTP, TFTP, HTTP, LOCAL-FILE, and URL. Note, LOCAL-FILE is only supported if the local-file option is specified.

    m2h_msg_extbody::filter can take the following MIMEARGS arguments:

    local-file

    Support LOCAL-FILE access-type. This option is best used for internal local mail archives where it is known that readers will have direct access to the file.

    m2h_text_enriched::filter

    This filter is designed to process text/enriched, or text/richtext, data. The following table summarizes the translation of text/enriched commands to HTML tags:

    Text/Enriched CommandHTML Translation
    <Bold> <b>
    <Italic> <i>
    <Underline> <u>
    <Fixed> <tt>
    <Smaller> <small>
    <Bigger> <big>
    <FontFamily><Param>family</Param> <font face="family">
    <Color><Param>color</Param> <font color="color">
    <Center> <p align="center">
    <FlushLeft> <p align="left">
    <FlushRight> <p align="right">
    <FlushBoth> <p align="justify">
    <ParaIndent> <blockquote>
    <Excerpt> <blockquote>
    <Lang><Param>lang</Param> <div lang="lang">

    Character data will be translated as specified by the CHARSETCONVERTERS resources.

    m2h_text_html::filter

    CAUTION:

    For security reasons, it is highly recommended to disable support of HTML messages in your mail archives. There is no guarantee this filter is robust enough to eliminate all possible exploits that can occur with HTML data. See the following FAQ questions for more information:

    This filter is designed to process text/html, or text/x-html, data. The following modifications are done to HTML documents when processed by MHonArc:

    • The HEAD element is removed. Since some content within the HEAD element may be relevant to the rest of the document, the following is done when the HEAD element is removed:

      • The title will be extracted and prepended to the body data.
      • Any BASE URL will be propogated to relative URLs in the document.

    • Any markup related to scripting is removed for security reasons. Javascript URLs are munged to make them ineffective. At a minimum, the following tags are stripped: <applet>, <base>, <embed>, <form>, <ilayer>, <input>, <layer>, <link>, <meta>, <object>, <option>, <param>, <script>, <select>, <style>, <textarea>. At a minimum, the following attributes are removed: onload, onunload, onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup. The allowscript option can be be used to override this behavior (see below).

    • cid: URLs are resolved, if possible. Therefore, if image data related to the HTML document is included with the message, the URLs in the HTML will be modified to reference the decoded image data.

    m2h_text_html::filter can take the following MIMEARGS arguments:

    allowcomments

    Preserve any comment declarations. By default, comment declarations are munged to protect against potential exploits, but this option will disable that behavior.

    CAUTION:

    Using this option can open up security vulnerabilies, including the accessing of server resources. If you have server-side includes enabled for your site, you SHOULD NOT use this option.

    allownoncidurls

    Preserve URL-based attributes that are not cid: URLs. By default, any URL-based attribute -- href, src, background, classid, data, longdesc -- will be stripped if it is not a cid URL. This prevents malicious URLs from verifying mail addresses, secretly setting cookies, or gathering statistical data with the use of elements that cause browsers to automatically fetch data without user interaction: IMG, BODY, IFRAME, FRAME, OBJECT, SCRIPT, INPUT.

    NOTE:

    Href attributes for anchor, <A>, elements are preserved, even if allownoncidurls is not specified. This is so regular hyperlinks will function. Javascript URLs will still be munged (unless the allowscript option is specified).

    allowscript

    Preserve any markup associated with scripting. This includes elements and attributes related to scripting.

    CAUTION:

    Use of this option can open up your archives to cross-site scripting (XSS) attacks. It is highly recommended to NOT use this option, especially for publicly accessible archives.

    attachcheck

    Honor attachment disposition. By default, all text/html data is displayed inline on the message page. If attachcheck is specified and Content-Disposition specifies the data as an attachment, the data is saved to a file with a link to it from the message page.

    CAUTION:

    If attachcheck is specified, the HTML data is saved "as-is". For example, no stripping of scripting-based markup is performed and no resolution of cid URLs are performed, allowing your archive to be used for cross-site scripting (XSS) exploits. This option SHOULD NOT BE USED for archives unless all mail from all senders can be trusted.

    disablerelated

    Disable processing of related parts processing: cid URLs will not be resolved.

    nofont

    Remove font tags and styles, including CSS styles.

    notitle

    Do not print extracted title at the beginning of converted output. By default, the title is printed before the document body. The notitle argument disables this behavior.

    subdir

    Place attachment files in a subdirectory of the archive. This option is used for MHTML messages that include inline images are other referenced data.

    m2h_text_plain::filter

    This filter is designed to process text/plain messages and messages with no MIME information. The filter is also used to process text messages of an unknown subtype.

    The default behavior of the filter is to wrap the data in the HTML PRE element and escape special characters. It also converts text that looks like a URL into a hyperlink. Character data will be translated as specified by the CHARSETCONVERTERS resources.

    This filter supports text data donoted with flowed sematics as defined by RFC 2646. Quoted text will be wrapped in HTML BLOCKQUOTE tags with inline CSS styles to highlight quoted text with a vertical bar in the left margin:

    This is some quoted text. This is some quoted text. This is some quoted text. This is some quoted text. This is some quoted text.

    CSS style customization can be done by using the quoteclass argument described below.

    m2h_text_plain::filter can take the following MIMEARGS arguments:

    asis=set1:...

    Colon separated lists of charsets to leave as-is. Only HTML special characters will be converted into entities.

    NOTE:

    The asis option is deprecated. It is recommended to use the CHARSETCONVERTERS resource to control how character data is converted.

    attachcheck

    Honor attachment disposition. By default, all text/plain data is displayed inline on the message page. If attachcheck is specified and Content-Disposition specifies the data as an attachment, the data is saved to a file with a link to it from the message page.

    disableflowed

    Flowed sematics will be ignored for text denoted with flowed formatting.

    NOTE:

    The effects of fancyquote and quote will still occur if either option is specified.

    fancyquote

    Highlight quoted message text. Quoted text will be wrapped in HTML BLOCKQUOTE elements. By default, inline CSS style settings are generated to render a vertical bar in the left margin. The inline styles are suppressed if the quoteclass option is set.

    This option generates similiar rendering of quoted text as is done for flowed text data, but without the flowed text wrapping sematics.

    NOTE:

    If message text is denoted as flowed text by message headers, the text will always be rendered with flowed sematics unless the disableflowed option is specified.

    htmlcheck

    Check if message is actually an HTML message (to get around abhorrent MUAs). The message is treated as HTML if the first non-whitespace data looks like the start of an HTML document.

    If the data looks like HTML, the HTML filter will be invoked on it.

    inlineexts=ext1,...

    A comma separated list of message specified filename extensions to treat as inline data. Applicable only when uudecode and usename are specified.

    keepspace

    Preserve all spaces if the nonfixed option is specified. All spaces and tabs will be translated to the equivalent number of &nbsp; entity references.

    link=scheme1,...

    A comma separated list of URL schemes denoting which URLs to convert into hyperlinks. By default, all URLs will be converted into hyperlinks. This option allows you to restrict the set of URLs converted.

    Compare this argument with nolink.

    maxwidth=#

    Force the maximum width of lines to be # characters in length. Any lines longer than # characters will be wrapped.

    NOTE:

    A line that contains no whitespace and is longer than maxwidth, will not be wrapped.

    nolink=scheme1,...

    A comma separated list of URL schemes denoting which URLs to not convert into hyperlinks. By default, all URLs will be converted into hyperlinks. This option allows you to specify URLs that should never be converted.

    Compare this argument with link.

    nonfixed

    Do not wrap message text in the HTML PRE element. This will cause text to be rendered in the default font (which is normally proportionally spaced). Each line of the message will have a <br> appended in order to preserve the line representation of the message.

    nourl

    Do not hyperlink URLs. This option overrides link and nolink.

    quote

    Italicize quoted message text. Any quoted lines in the message will be wrapped in the HTML I element. Compare this option with the fancyquote option.

    quoteclass=classname

    CSS classname to use for quoted text. This option applies only for flowed text data or if fancyquote is specified. The classname will be the value of the CLASS attbribute for the BLOCKQUOTE elements, and this option suppresses the generation of inline styles.

    This option is useful if a master stylesheet controls the appearance of archives. By using this option, the master stylesheet can be used to control the rendering of quoted text.

    subdir

    Place attachment files in a subdirectory of the archive. This option is only applicable if uudecode is specified.

    target=name

    Set the TARGET attribute of anchors generated from hyperlinking URLs.

    usename

    When decoding uuencoded data, use the full filename specified in the message instead of the filename extension.

    CAUTION:

    Use this option with caution since it can lead to filename conflicts and security problems. If you plan on using usename, consider using the subdir option with it.

    uudecode

    Decode any embedded uuencoded data. Including uuencoded data within messages was a way to transmit binary data via email before MIME was developed. The inclusion of uuencoded data is deprecated within email, but is still common in the USENET (binary) newsgroups.

    Uuencoded data is treated as application/octet-stream for data exclusion purposes: MIMEEXCS. If application/octet-stream data is listed in MIMEEXCS, uuencoded data will be excluded.

    NOTE:

    Specifying uudecode adds extra overhead in the processing of text messages, including messages without any uuencoded data.

    m2h_text_tsv::filter

    This filter converts text/tab-separated-values to HTML. The tabular data will be converted into an HTML table.

    m2h_null::filter

    This filter can be used to exclude message content from archives. You can register this filter to any content-type you do not want to store in your archives. For example, the following resource setting excludes all images:

    <MIMEFilters>
    image/*; m2h_null::filter; mhnull.pl
    </MIMEFilters>
    

    The markup returned by this filter displays the one line description of what was excluded. Examples:

    <<attachment: HelloWorld.jpg>>
    <<application/postscript>>
    <<inline: image/jpg>>
    

    If the disposition is available, it will be shown. If a filename was specified, it will be shown. If there was no filename, the content-type is shown.

    NOTE:

    The sematics of using the MIMEEXCS resource vs this filter are different. When using this filter, MHonArc considers the data successfully converted. But with MIMEEXCS, MHonArc does not consider the data converted. This is relevant when MHonArc determines which alternative part to use for an multipart/alternative entity.


    Default Setting

    NOTE:

    It is important to have an explicit entry for application/octet-stream for handling unknown media-types.

    <MIMEFilters>
    application/octet-stream;  m2h_external::filter;	mhexternal.pl
    application/*;		   m2h_external::filter;	mhexternal.pl
    application/x-patch;	   m2h_text_plain::filter;	mhtxtplain.pl
    audio/*;		   m2h_external::filter;	mhexternal.pl
    chemical/*;		   m2h_external::filter;	mhexternal.pl
    model/*;		   m2h_external::filter;	mhexternal.pl
    image/*;		   m2h_external::filter;	mhexternal.pl
    message/delivery-status;   m2h_text_plain::filter;	mhtxtplain.pl
    message/external-body;     m2h_msg_extbody::filter;	mhmsgextbody.pl
    message/partial;	   m2h_text_plain::filter;	mhtxtplain.pl
    text/*;			   m2h_text_plain::filter;	mhtxtplain.pl
    text/enriched;		   m2h_text_enriched::filter;	mhtxtenrich.pl
    text/html;		   m2h_text_html::filter;	mhtxthtml.pl
    text/plain;		   m2h_text_plain::filter;	mhtxtplain.pl
    text/richtext;		   m2h_text_enriched::filter;	mhtxtenrich.pl
    text/tab-separated-values; m2h_text_tsv::filter;	mhtxttsv.pl
    text/x-html;		   m2h_text_html::filter;	mhtxthtml.pl
    video/*;		   m2h_external::filter;	mhexternal.pl
    x-sun-attachment;	   m2h_text_plain::filter;	mhtxtplain.pl
    </MIMEFilters>
    

    Resource Variables

    N/A


    Examples

    The following code is an example filter for converting text/tab-separated-values into an HTML table:

    package m2h_text_tsv;
    
    sub filter {
        my($fields, $data, $isdecode, $args) = @_;
        my($field, $line, $ret);
        local($_);
    
        $$data =~ s/^\s+//;
        $ret  = "<table border=1>\n";
        foreach $line (split(/\r?\n/, $$data)) {
    	$ret .= "<tr>";
    	foreach $field (split(/\t/, $line)) {
    	    $ret .= '<td>' . mhonarc::htmlize($field) . '</td>';
    	}
    	$ret .= "</tr>\n";
        }
        $ret .= "</table>\n";
        ($ret);
    }
    
    1;
    

    Version

    1.0


    See Also

    CHARSETCONVERTERS, MIMEALTPREFS, MIMEARGS, MIMEDECODERS, MIMEEXCS, PERLINC


    [Prev: MIMEEXCS][Resources][TOC][Next: MIMEINCS]

    $Date: 2010/12/31 20:33:59 $
    MHonArc
    Copyright © 1997-2005 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/idxlabel.html0000644004705000001440000000650712332046111020606 0ustar ehoodusers MHonArc Resources: IDXLABEL
    [Prev: IDXFNAME][Resources][TOC][Next: IDXPGBEGIN]

    IDXLABEL


    Syntax

    Envariable

    N/A

    Element

    <IDXLABEL>
    markup ... </IDXLABEL>

    Command-line Option

    N/A


    Description

    IDXLABEL defines the label text for the main index. Specifically, it defines the value of the $IDXLABEL$ resource variable.


    Default Setting

    If SORT: Date Index
    If SUBSORT: Subject Index
    If AUTHSORT: Author Index
    If no sorting: Message Index


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    AUTHSORT, SORT, SUBSORT, TIDXLABEL


    [Prev: IDXFNAME][Resources][TOC][Next: IDXPGBEGIN]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tprevinbutton.html0000644004705000001440000003126112332046112021741 0ustar ehoodusers MHonArc Resources: TPREVINBUTTON
    [Prev: TPREVBUTTONIA][Resources][TOC][Next: TPREVINBUTTONIA]

    TPREVINBUTTON


    Syntax

    Envariable

    N/A

    Element

    <TPREVINBUTTON>
    markup
    </TPREVINBUTTON>

    Command-line Option

    N/A


    Description

    TPREVINBUTTON defines the replacement markup for the resource variable $BUTTON(TPREVIN)$ when there exists a previous message from the current message within a discussion thread. See TPREVINBUTTONIA for the replacement markup used with there is no previoud message.

    TPREVINBUTTON differs from TPREVBUTTON in that it does not cross discussion thread boundaries.


    Default Setting

    [<a href="$MSG(TPREVIN)$">Prev in Thread</a>]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTBUTTON, TNEXTINBUTTON, TNEXTINLINK, TNEXTTOPBUTTON, TOPLINKS, TPREVBUTTON, TPREVINBUTTONIA, TPREVTOPBUTTON


    [Prev: TPREVBUTTONIA][Resources][TOC][Next: TPREVINBUTTONIA]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/gziplinks.html0000644004705000001440000000662312332046111021033 0ustar ehoodusers MHonArc Resources: GZIPLINKS
    [Prev: GZIPFILES][Resources][TOC][Next: HEADBODYSEP]

    GZIPLINKS


    Syntax

    Envariable

    M2H_GZIPLINKS=[ 0 | 1 ]

    Element(s)

    <GZIPLINKS>
    <NOGZIPLINKS>

    Command-line Option(s)

    -gziplinks
    -nogziplinks


    Description

    GZIPLINKS, if active, will cause MHonArc to add ".gz" extensions to MHonArc generated files in anchor URLs. You may not need to set this resource when GZIPFILES is set if your HTTP server is capable of looking for .gz versions of a file if the regular file does not exist. Specifying GZIPLINKS requires that a WWW client ungzip the data before viewing.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.1.0


    See Also

    GZIPEXE, GZIPFILES


    [Prev: GZIPFILES][Resources][TOC][Next: HEADBODYSEP]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/htmlext.html0000644004705000001440000000717112332046111020505 0ustar ehoodusers MHonArc Resources: HTMLEXT
    [Prev: HEADBODYSEP][Resources][TOC][Next: ICONS]

    HTMLEXT


    Syntax

    Envariable

    M2H_HTMLEXT=extension

    Element

    <HTMLEXT>
    extension
    </HTMLEXT>

    Command-line Option

    -htmlext extension


    Description

    HTMLEXT defines the extension for all HTML files generated by MHonArc. The value of the resource should NOT include the ".".

    WARNING:

    The value for HTMLEXT should not be changed after an archive is created. If you change the value of HTMLEXT, MHonArc will not be able to properly update an archive.


    Default Setting

    html


    Resource Variables

    N/A


    Examples

    If you define server-side directives to be included in HTML pages, you may need to redefine the extension for the files so the HTTP server will parse the HTML files to find the server-side directives. The standard extension used for HTML files with server-side directives is "shtml".


    Version

    2.1.0


    See Also


    [Prev: HEADBODYSEP][Resources][TOC][Next: ICONS]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tsubsort.html0000644004705000001440000000604512332046112020705 0ustar ehoodusers MHonArc Resources: TSUBSORT
    [Prev: TSUBLISTEND][Resources][TOC][Next: TTITLE]

    TSUBSORT


    Syntax

    Envariable

    M2H_TSUBSORT=[ 0 | 1 ]

    Element(s)

    <TSUBSORT>
    <NOTSUBSORT>

    Command-line Option(s)

    -tsubsort
    -notsubsort


    Description

    TSUBSORT, when on, instructs MHonArc to sort threads by subject.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.1.0


    See Also

    THREAD, TREVERSE, TSORT


    [Prev: TSUBLISTEND][Resources][TOC][Next: TTITLE]

    $Date: 2003/10/06 22:04:23 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextinbuttonia.html0000644004705000001440000003025412332046112022256 0ustar ehoodusers MHonArc Resources: TNEXTINBUTTONIA
    [Prev: TNEXTINBUTTON][Resources][TOC][Next: TNEXTINLINK]

    TNEXTINBUTTONIA


    Syntax

    Envariable

    N/A

    Element

    <TNEXTINBUTTONIA>
    markup
    </TNEXTINBUTTONIA>

    Command-line Option

    N/A


    Description

    TNEXTINBUTTON defines the replacement markup for the resource variable $BUTTON(TNEXTIN)$ when there is no next message from the current message within a discussion thread. See TNEXTINBUTTON for the replacement markup used with there is a next message.


    Default Setting

    [Next in Thread]
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTINBUTTON


    [Prev: TNEXTINBUTTON][Resources][TOC][Next: TNEXTINLINK]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/subsort.html0000644004705000001440000000600212332046111020511 0ustar ehoodusers MHonArc Resources: SUBSORT
    [Prev: SUBJECTTHREADS][Resources][TOC][Next: TCONTBEGIN]

    SUBSORT


    Syntax

    Envariable

    M2H_SUBSORT=[ 0 | 1 ]

    Element(s)

    <SUBSORT>
    <NOSUBSORT>

    Command-line Option(s)

    -subsort
    -nosubsort


    Description

    When SUBSORT is active, messages are listed by subject in the main index.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    REVERSE, SORT


    [Prev: SUBJECTTHREADS][Resources][TOC][Next: TCONTBEGIN]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/nextpglinkia.html0000644004705000001440000001742312332046111021516 0ustar ehoodusers MHonArc Resources: NEXTPGLINKIA
    [Prev: NEXTPGLINK][Resources][TOC][Next: NOSUBJECTTXT]

    NEXTPGLINKIA


    Syntax

    Envariable

    N/A

    Element

    <NEXTPGLINKIA>
    markup ...
    </NEXTPGLINKIA>

    Command-line Option

    N/A


    Description

    NEXTPGLINKIA defines the value for the $PGLINK(NEXT)$ resource variable when there is no next page to the current page of the main index.

    See the NEXTPGLINK for defining the value of $PGLINK(NEXT)$ when there is a next page.


    Default Setting

    <NextPgLinkIA chop>
    [Next Page]
    </NextPgLinkIA>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $GMTDATE$ Current GMT date.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LOCALDATE$ Current local date.
    $NUMOFIDXMSG$ Number of message listed.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $OUTDIR$ Pathname of archive.
    $PAGENUM$ Current index page number.
    $PG$ Filename of an index page.
    $PGLINK$ Markup linking to an index page.
    $PGLINKLIST$ List of links to index pages.
    $PROG$ Program name
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $VERSION$ Program version.

    Examples

    None


    Version

    2.0


    See Also

    LISTBEGIN, MULTIPG, NEXTPGLINK, PREVPGLINK, PREVPGLINKIA


    [Prev: NEXTPGLINK][Resources][TOC][Next: NOSUBJECTTXT]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicelevels.html0000644004705000001440000000653112332046112021516 0ustar ehoodusers MHonArc Resources: TSLICELEVELS
    [Prev: TSLICEINDENTEND][Resources][TOC][Next: TSLICELIEND]

    TSLICELEVELS


    Syntax

    Envariable

    M2H_TSLICELEVELS=number

    Element

    <TSLICELEVELS>
    number
    </TSLICELEVELS>

    Command-line Option

    -tslicelevels number


    Description

    TSLICELEVELS defines the maximum number of nested listings in thread slices. Any threads that go over TSLICELEVELS in depth are flattened to the value of TSLICELEVELS. This resource is helpful in preventing huge indentations in deep threads which may cause text to be squished on the right-side of an HTML viewer.


    Default Setting

    Value of TLEVELS.


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.5.0


    See Also

    TLEVELS, TSLICE


    [Prev: TSLICEINDENTEND][Resources][TOC][Next: TSLICELIEND]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/icons.html0000644004705000001440000001701112332046111020125 0ustar ehoodusers MHonArc Resources: ICONS
    [Prev: HTMLEXT][Resources][TOC][Next: ICONURLPREFIX]

    ICONS


    Syntax

    Envariable

    N/A

    Element

    <ICONS>
    icon-specification
    icon-specification
    ...
    </ICONS>

    Command-line Option

    N/A


    Description

    The ICONS resource is used to specify the icons that represent the different content-types of messages. This resource is used to define the possible expanded values of the $ICON$ resource variable.

    The ICON resource can only be defined via the resource file element. The format of each line in the ICONS element is as follows:

    content-type:url
    

    The definition of each item is a follows:

    content-type

    MIME content-type that an icon should be associated to. Examples: text/plain, image/jpeg. An icon can be associated to a base type by using a * as the sub-type. Examples: text/*, image/*. The default icon can be specified by using a content-type of */*.

    url

    The URL of the icon. Example: http://host/icons/text.gif, /icons/image.gif.

    The url can be prefixed with a width and height specification to provide rendering hints to browsers. The syntax for specify the width and height is as follows: [WxH], where W is the width and H is the height. The following is an example URL setting with width and height specification: [20x22]/icons/image.gif.

    The width and height values map directly to the WIDTH and HEIGHT attributes of the HTML IMG element when $ICON$ is used. Specifying the width and height decreases the rendering time of a page since browsers do not have to wait to fetch the image to determine how much area to provide for rendering.

    In order to have icons appear in your pages, use the $ICON$ resource variable. For example:

    <LiTemplate>
    $ICON$ <strong>$SUBJECT:40$</strong>
    <em>$FROMNAME$</em><br>
    </LiTemplate>
    

    The $ICON$ variable expands to the IMG HTML element with the appropriate URL in the SRC attribute to the icon. The ALT attribute of the IMG element contains the content-type of the message, surrounded by []'s, for use with text based browsers. If the width and height values have been defined for the given URL as described earlier, they will map to the WIDTH and HEIGHT attributes.

    The $ICONURL$ resource variable may be used if you want redefine the format of the IMG element. For example:

    <LiTemplate>
    <img src="$ICONURL$" alt="*">
    <strong>$SUBJECT:40$</strong>
    <em>$FROMNAME$</em><br>
    </LiTemplate>
    

    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    The following example works well if using the Apache HTTP server and the default set of icons that are provided with it:

    <Icons>
    application/*;[20x22]/icons/generic.gif
    application/msword;[20x22]/icons/layout.gif
    application/postscript;[20x22]/icons/ps.gif
    application/rtf;[20x22]/icons/layout.gif
    application/x-csh;[20x22]/icons/script.gif
    application/x-dvi;[20x22]/icons/dvi.gif
    application/x-gtar;[20x22]/icons/tar.gif
    application/x-gzip;[20x22]/icons/compressed.gif
    application/x-ksh;[20x22]/icons/script.gif
    application/x-latex;[20x22]/icons/tex.gif
    application/octet-stream;[20x22]/icons/binary.gif
    application/x-patch;[20x22]/icons/patch.gif
    application/pdf;[20x22]/icons/pdf.gif
    application/x-script;[20x22]/icons/script.gif
    application/x-sh;[20x22]/icons/script.gif
    application/x-tar;[20x22]/icons/tar.gif
    application/x-tex;[20x22]/icons/tex.gif
    application/x-zip-compressed;[20x22]/icons/compressed.gif
    application/zip;[20x22]/icons/compressed.gif
    audio/*;[20x22]/icons/sound1.gif
    chemical/*;[20x22]/icons/sphere2.gif
    image/*;[20x22]/icons/image2.gif
    message/external-body;[20x22]/icons/link.gif
    multipart/*;[20x22]/icons/layout.gif
    text/*;[20x22]/icons/text.gif
    video/*;[20x22]/icons/movie.gif
    */*;[20x22]/icons/generic.gif
    </Icons>
    

    Version

    1.0


    See Also

    $ICON$, $ICONURL$, ICONURLPREFIX, LITEMPLATE, TLITXT, TSINGLETXT, TTOPBEGIN

    The m2h_external::filter mime filter.


    [Prev: HTMLEXT][Resources][TOC][Next: ICONURLPREFIX]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tnextinlinkia.html0000644004705000001440000003016512332046112021701 0ustar ehoodusers MHonArc Resources: TNEXTINLINKIA
    [Prev: TNEXTINLINK][Resources][TOC][Next: TNEXTLINK]

    TNEXTINLINKIA


    Syntax

    Envariable

    N/A

    Element

    <TNEXTINLINKIA>
    markup
    </TNEXTINLINKIA>

    Command-line Option

    N/A


    Description

    TNEXTINLINKIA defines the replacement markup for the resource variable $LINK(TNEXTIN)$ when there is no next message from the current message within a discussion thread. See TNEXTINLINK for the replacement markup used with there is a next message.


    Default Setting

    Nil.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    TNEXTINLINK


    [Prev: TNEXTINLINK][Resources][TOC][Next: TNEXTLINK]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/gzipfiles.html0000644004705000001440000000716712332046111021021 0ustar ehoodusers MHonArc Resources: GZIPFILES
    [Prev: GZIPEXE][Resources][TOC][Next: GZIPLINKS]

    GZIPFILES


    Syntax

    Envariable

    M2H_GZIPFILES=[ 0 | 1 ]

    Element(s)

    <GZIPFILES>
    <NOGZIPFILES>

    Command-line Option(s)

    -gzipfiles
    -nogzipfiles


    Description

    GZIPFILES tells MHonArc if it should gzip files it creates. This resource is useful if you have an archive with large messages, and/or you need to conserve disk space.

    NOTE

    There is a slow-down in execution speed when GZIPFILES is active.

    NOTE

    Before using GZIPFILES, you may want to make sure your HTTP server supports the automatic decompression of gzip files. The Apache server supports automatic decompression of gzip files.


    Default Setting

    Off


    Resource Variables

    N/A


    Examples

    None.


    Version

    2.1.0


    See Also

    GZIPEXE, GZIPLINKS


    [Prev: GZIPEXE][Resources][TOC][Next: GZIPLINKS]

    $Date: 2003/10/06 22:04:17 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/outdir.html0000644004705000001440000000575412332046111020333 0ustar ehoodusers MHonArc Resources: OUTDIR
    [Prev: OTHERINDEXES][Resources][TOC][Next: PERLINC]

    OUTDIR


    Syntax

    Envariable

    M2H_OUTDIR=path

    Element

    N/A

    Command-line Option

    -outdir path


    Description

    OUTDIR defines the location of the archive to process.


    Default Setting

    The current working directory


    Resource Variables

    N/A


    Examples

    prompt> mhonarc -add -outdir /home/ehood/archive inbox
    

    Version

    1.0


    See Also


    [Prev: OTHERINDEXES][Resources][TOC][Next: PERLINC]

    $Date: 2003/10/06 22:04:19 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgpgbegin.html0000644004705000001440000003076512332046111021147 0ustar ehoodusers MHonArc Resources: MSGPGBEGIN
    [Prev: MSGLOCALDATEFMT][Resources][TOC][Next: MSGPGEND]

    MSGPGBEGIN


    Syntax

    Envariable

    N/A

    Element

    <MSGPGBEGIN>
    markup ...
    </MSGPGBEGIN>

    Command-line Option

    N/A


    Description

    MSGPGBEGIN defines the beginning markup of each message page. It allows you to redefine the opening HTML element, HEAD element, TITLE element, opening BODY element, etc.


    Default Setting

    <MsgPgBegin>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <title>$SUBJECTNA$</title>
    <link rev="made" href="mailto:$FROMADDR$">
    </head>
    <body>
    </MsgPgBegin>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    1.2.0


    See Also

    MSGFOOT, MSGHEAD, MSGPGEND

    Page Layout


    [Prev: MSGLOCALDATEFMT][Resources][TOC][Next: MSGPGEND]

    $Date: 2004/03/15 21:07:18 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/quiet.html0000644004705000001440000000555112332046111020147 0ustar ehoodusers MHonArc Resources: QUIET
    [Prev: PRINTXCOMMENTS][Resources][TOC][Next: RCFILE]

    QUIET


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -quiet


    Description

    When QUIET is active, MHonArc suppresses all informational diagnostics when processing. Error and warning diagnostics will still get printed.


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also


    [Prev: PRINTXCOMMENTS][Resources][TOC][Next: RCFILE]

    $Date: 2005/07/08 06:34:02 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/doc.html0000644004705000001440000000571312332046111017565 0ustar ehoodusers MHonArc Resources: DOC
    [Prev: DEFRCNAME][Resources][TOC][Next: DOCURL]

    DOC


    Syntax

    Envariable

    M2H_DOC=[ 0 | 1 ]

    Element(s)

    <DOC>
    <NODOC>

    Command-line Option(s)

    -doc
    -nodoc


    Description

    When set, a link to the MHonArc documentation will be included at the bottom of each index page.


    Default Setting

    On


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    DOCURL


    [Prev: DEFRCNAME][Resources][TOC][Next: DOCURL]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mimeexcs.html0000644004705000001440000001036412332046111020630 0ustar ehoodusers MHonArc Resources: MIMEEXCS
    [Prev: MIMEDECODERS][Resources][TOC][Next: MIMEFILTERS]

    MIMEEXCS


    Syntax

    Envariable

    N/A

    Element

    <MIMEEXCS>
    content-type
    content-type
    ...
    </MIMEEXCS>

    Command-line Option

    N/A


    Description

    MIMEEXCS defines the list of content-types to exclude from processing. The exclusion occurs before the data is processed to any filters registered via the MIMEFILTERS resource.

    For example, if MIMEEXCS is set to the following:

    <MIMEExcs>
    image/jpg
    image/gif
    </MIMEExcs>
    

    Then JPEG and GIF images will be excluded.

    Base types can be listed in order exclude all content-types with a give base. For example,

    <MIMEExcs>
    image
    </MIMEExcs>
    

    will exclude all images.

    If all you want to do is include a specified set of media-types, then use the MIMEINCS resource instead.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    The following example excludes all binaries, images, and postscript data:

    <MIMEExcs>
    application/octet-stream
    application/postscript
    image
    </MIMEExcs>
    

    The following is a very restrictive setting to minimize security risks and large data files:

    <MIMEExcs>
    application
    image
    audio
    video
    text/html
    </MIMEExcs>
    

    For tighter control of allowable media-types, see the MIMEINCS resource.


    Version

    2.4.9


    See Also

    MIMEALTPREFS, MIMEFILTERS, MIMEINCS


    [Prev: MIMEDECODERS][Resources][TOC][Next: MIMEFILTERS]

    $Date: 2005/06/07 19:15:44 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/prevbutton.html0000644004705000001440000003147312332046111021232 0ustar ehoodusers MHonArc Resources: PREVBUTTON
    [Prev: POSIXSTRFTIME][Resources][TOC][Next: PREVBUTTONIA]

    PREVBUTTON


    Syntax

    Envariable

    N/A

    Element

    <PREVBUTTON>
    markup ...
    </PREVBUTTON>

    Command-line Option

    N/A


    Description

    PREVBUTTON defines the value of the $BUTTON(PREV)$ resource when a message has a predecessor. That is, if the main index message list lists a message before the current message, $BUTTON(PREV)$ will take on the value of PREVBUTTON. If a previous message doesn't exist, the PREVBUTTONIA value will be used instead.


    Default Setting

    <PrevButton chop>
    [<a href="$MSG(PREV)$">Date Prev</a>]
    </PrevButton>
    

    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    The following shows how an button image can be used for linking to the previous message in an archive:

    <PrevButton chop>
    <a href="$MSG(PREV)$"><img src="prev.png" alt="[Date Prev]"></a>
    </PrevButton>
    

    Version

    1.2


    See Also

    NEXTBUTTON, NEXTBUTTONIA, PREVBUTTONIA, TPREVBUTTON, TPREVBUTTONIA, TOPLINKS


    [Prev: POSIXSTRFTIME][Resources][TOC][Next: PREVBUTTONIA]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msgexcfilter.html0000644004705000001440000001064712332046111021516 0ustar ehoodusers MHonArc Resources: MSGEXCFILTER
    [Prev: MSGBODYEND][Resources][TOC][Next: MSGFOOT]

    MSGEXCFILTER


    Syntax

    Envariable

    M2H_MSGEXCFILTER=Perl_expressions

    Element

    <MSGEXCFILTER>
    Perl_expressions
    </MSGEXCFILTER>

    Command-line Option

    -msgexcfilter Perl_expressions


    Description

    MSGEXCFILTER may be used to define Perl expressions to selectively exclude messages during an ADD operation. Unlike the CHECKNOARCHIVE resource, MSGEXCFILTER allows you to explicitly examine entire message headers to determine which messages should be added.

    When defining the expressions, the raw message header will be in the $_ variable. If the last evaluated expression of MSGEXCFILTER returns a true value, or there is an explicit return statement that returns a true value, MHonArc will exclude the message.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    A typical usage of MSGEXCFILTER is to define a pattern match operation:

    <MsgExcFilter>
    /^From: .*\behood@/im;
    </MsgExcFilter>
    

    Here, we are excluding any messages that are from "ehood". The "m" modifier to the pattern match exists because the header will contain newlines.

    The following example attempts to exclude all messages not addressed to mhonarc-users@mhonarc.org:

    <MsgExcFilter>
    !/\bmhonarc-users@mhonarc.org\b/i;
    </MsgExcFilter>
    

    Here, we do what the CHECKNOARCHIVE resource basically does:

    <MsgExcFilter>
    /^restrict:\s+no-external-archive/im ||
    /^x-no-archive:\s+yes/im;
    </MsgExcFilter>
    

    Version

    2.4.1


    See Also

    ADD, CHECKNOARCHIVE


    [Prev: MSGBODYEND][Resources][TOC][Next: MSGFOOT]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicesublistend.html0000644004705000001440000003231712332046112022401 0ustar ehoodusers MHonArc Resources: TSLICESUBLISTEND
    [Prev: TSLICESUBLISTBEG][Resources][TOC][Next: TSLICETOPBEG]

    TSLICESUBLISTEND


    Syntax

    Envariable

    N/A

    Element

    <TSLICESUBLISTEND>
    markup
    </TSLICESUBLISTEND>

    Command-line Option

    N/A


    Description

    Thread slice markup for ending a sub-thread. This resource functions the same as TSUBLISTEND, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TSUBLISTEND resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONE, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICESUBLISTBEG][Resources][TOC][Next: TSLICETOPBEG]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/addressmodifycode.html0000644004705000001440000001140112332046111022477 0ustar ehoodusers MHonArc Resources: ADDRESSMODIFYCODE
    [Prev: ADD][Resources][TOC][Next: AFS]

    ADDRESSMODIFYCODE


    Syntax

    Envariable

    M2H_ADDRESSMODIFYCODE=Perl_expressions

    Element

    <ADDRESSMODIFYCODE>
    Perl expressions...
    </ADDRESSMODIFYCODE>

    Command-line Option

    -addressmodifycode Perl_expressions


    Description

    ADDRESSMODIFYCODE defines Perl expressions to apply to addresses in message headers and to addresses in text bodies of messages if the MODIFYBODYADDRESSES is active.

    When defining the expressions, the mail address will be in the $_ variable. The value of $_ after all expressions are evaluated is the address MHonArc will print.

    NOTE:

    ADDRESSMODIFYCODE only affects the display text of the address. For message headers, when MAILTO is active, the URL of the link is NOT affected by ADDRESSMODIFYCODE. MAILTOURL can be used to modify the URL.


    Default Setting

    Nil.


    Resource Variables

    N/A


    Examples

    ADDRESSMODIFYCODE's main use is to obfuscate addresses, or hide them entirely, to prevent spam address harvesters from getting user addresses from MHonArc archives. Here is an example that performs a ROT13 to provide some simple obfuscation:

    <AddressModifyCode>
    tr/A-Za-z/N-ZA-Mn-za-m/;
    </AddressModifyCode>
    

    However, this may not be enough since an intelligent harvester may try a ROT13. To completely hide the address, do something like this:

    <AddressModifyCode>
    $_ = 'address@hidden';
    </AddressModifyCode>
    

    You cannot rely on ADDRESSMODIFYCODE alone to hide/obfuscate addresses (see NOTE above). See the SPAMMODE resource if you are interested in fighting address harvesting.


    Version

    2.4.0


    See Also

    MAILTO, MAILTOURL, MODIFYBODYADDRESSES, SPAMMODE


    [Prev: ADD][Resources][TOC][Next: AFS]

    $Date: 2005/05/13 00:00:36 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tcontend.html0000644004705000001440000000574412332046111020642 0ustar ehoodusers MHonArc Resources: TCONTEND
    [Prev: TCONTBEGIN][Resources][TOC][Next: TENDBUTTON]

    TCONTEND


    Syntax

    Envariable

    N/A

    Element

    <TCONTEND>
    markup...
    </TCONTEND>

    Command-line Option

    N/A


    Description

    TCONTEND defines the closing markup of the continuation of a broken thread.


    Default Setting

    <TContEnd>
    </li>
    </TContEnd>
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    TINDENTBEGIN


    [Prev: TCONTBEGIN][Resources][TOC][Next: TENDBUTTON]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/rmm.html0000644004705000001440000001071612332046111017612 0ustar ehoodusers MHonArc Resources: RMM
    [Prev: REVERSE][Resources][TOC][Next: SAVERESOURCES]

    RMM


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -rmm msgnum ...
    -rmm msgnum-msgnum ...
    -rmm msg-id ...


    Description

    The RMM resource is activated by the -rmm command-line option. When active, all non-option related arguments are treated as messages to delete from the archive. Messages can be specified by a combination of message numbers, message number ranges, or message-ids. See Examples below.


    Default Setting

    N/A


    Resource Variables

    N/A


    Examples

    The following example specifies the messages to be deleted by individual message numbers.

    prompt> mhonarc -rmm 24 28 39 48
    Removing messages from ./maillist.html ...
     
    Writing mail ...
    Writing tmp/maillist.html ...
    Writing tmp/threads.html ...
    45 messages
    

    To delete message 15 and message 20 through 35, use the following:

    prompt> mhonarc -rmm 15 20-35
    

    In some cases, you may know the message-id of the message to delete and not the message number:

    prompt> mhonarc -rmm 199802171800.KAA27647@example.com
    

    You can surround message-ids with <>'s, but you then may need to quote the arguments to prevent the shell interpreting them as I/O redirection.

    The following example shows how you can intermingle the various ways of specifying messages:

    prompt> mhonarc -rmm 23-34 199802171800.KAA27647@example.com 52
    

    Version

    1.1.0


    See Also

    OUTDIR, SCAN


    [Prev: REVERSE][Resources][TOC][Next: SAVERESOURCES]

    $Date: 2005/05/13 00:00:36 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tslicelinone.html0000644004705000001440000003230112332046112021502 0ustar ehoodusers MHonArc Resources: TSLICELINONE
    [Prev: TSLICELIENDCUR][Resources][TOC][Next: TSLICELINONEEND]

    TSLICELINONE


    Syntax

    Envariable

    N/A

    Element

    <TSLICELINONE>
    markup
    </TSLICELINONE>

    Command-line Option

    N/A


    Description

    Thread slice markup for a missing message in thread slice. This resource functions the same as TLINONE, but applies for thread slice rendering for the $TSLICE$ resource variable.


    Default Setting

    The value of the TLINONE resource.


    Resource Variables

    VariableValue
    $ATTACHMENTURL$ Base URL to attachments
    $BUTTON$ Button markup linking to a message.
    $DATE$ The date of the message.
    $DDMMYYYY$ Message date in dd/mm/yyyy format.
    $DOCURL$ URL to documentation.
    $ENV$ Value of an environment variable.
    $FROM$ The complete text in the From: field of the message.
    $FROMADDR$ The e-mail address in the From: field of the message.
    $FROMADDRDOMAIN$ The e-mail address domain of the From: field of the message.
    $FROMADDRNAME$ The e-mail address "username" (or local-part) of the From: field of the message.
    $FROMNAME$ The human name of the person in the From: field of the message. If no human name is found, the username specified in the e-mail address is used.
    $GMTDATE$ Current GMT date.
    $ICON$ The content-type sensitive icon.
    $ICONURL$ URL to the content-type sensitive icon.
    $ICONURLPREFIX$ Value of ICONURLPREFIX resource.
    $IDXFNAME$ Filename of main index page.
    $IDXLABEL$ Label for main index page.
    $IDXPREFIX$ Prefix of filenames of main index pages.
    $IDXSIZE$ Max number of messages that may be listed in index page.
    $IDXTITLE$ The title of the main index page.
    $LINK$ Link markup linking to a message.
    $LOCALDATE$ Current local date.
    $MMDDYYYY$ Message date in mm/dd/yyyy format.
    $MSG$ Filename of message.
    $MSGGMTDATE$ GMT date of current message.
    $MSGHFIELD$ Message header field
    $MSGID$ The message-id of the message.
    $MSGLOCALDATE$ Local date of current message.
    $MSGNUM$ The message number assigned to the message by MHonArc (includes leading zeros).
    $MSGPREFIX$ Filename prefix for message files.
    $MSGTORDNUM$ The ordinal message number of the current discussion thread.
    $NOTE$ Message annotation.
    $NUMFOLUP$ Number of explicit follow-ups to the message.
    $NUMOFMSG$ Number of messages in the archive.
    $NUMOFPAGES$ Number of index pages.
    $ORDNUM$ The current listing number of the message.
    $OUTDIR$ Pathname of archive.
    $PROG$ Program name
    $SUBJECT$ The subject text of the message, and if no arguments, wrapped in an anchor element that hyperlinks to the message.
    $SUBJECTNA$ The subject text of the message without the anchor element.
    $TIDXFNAME$ Filename of thread index page.
    $TIDXLABEL$ Label for thread index page.
    $TIDXPREFIX$ Prefix of filenames of thread index pages.
    $TIDXTITLE$ Title of thread index.
    $TLEVEL$ Numeric level of message in thread, starting with 0.
    $TSLICE$ A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource.
    $VERSION$ Program version.
    $YYYYMMDD$ Message date in yyyy/mm/dd format.

    Examples

    None.


    Version

    2.5.0


    See Also

    $TSLICE$, TSLICE, TSLICEBEG, TSLICECONTBEG, TSLICECONTEND, TSLICEEND, TSLICEINDENTBEG, TSLICEINDENTEND, TSLICELIEND, TSLICELIENDCUR, TSLICELINONEEND, TSLICELITXT, TSLICELITXTCUR, TSLICESINGLETXT, TSLICESINGLETXTCUR, TSLICESUBJECTBEG, TSLICESUBJECTEND, TSLICESUBLISTBEG, TSLICESUBLISTEND, TSLICETOPBEG, TSLICETOPBEGCUR, TSLICETOPEND, TSLICETOPENDCUR


    [Prev: TSLICELIENDCUR][Resources][TOC][Next: TSLICELINONEEND]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 2001, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/fieldorder.html0000644004705000001440000001036612332046111021137 0ustar ehoodusers MHonArc Resources: FIELDORDER
    [Prev: FASTTEMPFILES][Resources][TOC][Next: FIELDSBEG]

    FIELDORDER


    Syntax

    Envariable

    N/A

    Element

    <FIELDORDER>
    1st-field-name
    2nd-field-name
    ...
    </FIELDORDER>

    Command-line Option

    N/A


    Description

    The FIELDORDER resource allows you to control the order the message header fields appear in the HTML output.

    Each line of the <FIELDORDER> element is the exact case-insensitive name of a message header field. The order the fields are listed is the order they will appear in the filtered message. The special field value "-extra-" represents all fields not explicitly specified in the <FIELDORDER> element and not excluded by the EXCS resource. Extra fields are listed in sorted order.

    If -extra- is not specified, then only the fields listed will be displayed.

    NOTE:

    EXCS takes precedence over the FIELDORDER resource. Therefore, any field matched by EXCS will always be excluded regardless if the field is listed in FIELDORDER.


    Default Setting

    <FieldOrder>
    to
    subject
    from
    date
    -extra-
    </FieldOrder>
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    1.0


    See Also

    EXCS, FIELDSBEG, FIELDSEND, FIELDSTYLES, FLDBEG, FLDEND, LABELBEG, LABELEND, LABELSTYLES


    [Prev: FASTTEMPFILES][Resources][TOC][Next: FIELDSBEG]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tidxprefix.html0000644004705000001440000000714312332046112021206 0ustar ehoodusers MHonArc Resources: TIDXPREFIX
    [Prev: TIDXPGSSMARKUP][Resources][TOC][Next: TIMEZONES]

    TIDXPREFIX


    Syntax

    Envariable

    M2H_TIDXPREFIX=prefix

    Element

    <TIDXPREFIX>
    prefix
    </TIDXPREFIX>

    Command-line Option

    -tidxprefix prefix


    Description

    TIDXPREFIX defines the prefix for the filenames of a multi-page thread index. The filename of the first page of the thread index is always equal to the value of the TIDXFNAME resource. All other pages have a filename starting with the TIDXPREFIX value with the page number and ".html" following (or the value defined by the HTMLEXT). For example, the filenames for a 4 page thread index would be the following:

        threads.html
        thrd2.html
        thrd3.html
        thrd4.html
    

    assuming the default values for the TIDXFNAME and TIDXPREFIX resources.


    Default Setting

    thrd
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    MULTIPG, TIDXFNAME


    [Prev: TIDXPGSSMARKUP][Resources][TOC][Next: TIMEZONES]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/expireage.html0000644004705000001440000001050512332046111020764 0ustar ehoodusers MHonArc Resources: EXPIREAGE
    [Prev: EXCS][Resources][TOC][Next: EXPIREDATE]

    EXPIREAGE


    Syntax

    Envariable

    M2H_EXPIREAGE=seconds

    Element

    <EXPIREAGE>
    seconds
    </EXPIREAGE>

    Command-line Option

    -expireage seconds


    Description

    EXPIREAGE specifies the time in seconds from the current time to determine if a message has expired. I.e. If the difference between the current time and the message time is greater than EXPIREAGE, the message is expired. Expired messages do not get added into an archive, and any archived expired messages will get automatically removed during an archive update.

    EXPIREAGE is specified in seconds. The following table shows common time periods in seconds:

    Time periodEquivalence in seconds
    day86400
    week (7 days)604800
    month (30.5 days)2635200
    year (365 days)31536000
    NOTE

    Setting EXPIREAGE to zero turns off the EXPIREAGE check.

    If you want to control expiration of messages based on a specific date, then see EXPIREDATE.


    Default Setting

    0


    Resource Variables

    N/A


    Examples

    EXPIREAGE is useful for "message from the last ..." archives. For example, if you are archiving a mailing list with much traffic, you may want to have an archive that shows only messages from the last 7 days (week). Set set EXPIREAGE as follows:

    <ExpireAge>
    604800
    </ExpireAge>
    

    Version

    2.0


    See Also

    EXPIREDATE


    [Prev: EXCS][Resources][TOC][Next: EXPIREDATE]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/tindentend.html0000644004705000001440000000624012332046112021151 0ustar ehoodusers MHonArc Resources: TINDENTEND
    [Prev: TINDENTBEGIN][Resources][TOC][Next: TITLE]

    TINDENTEND


    Syntax

    Envariable

    N/A

    Element

    <TINDENTEND>
    markup...
    </TINDENTEND>

    Command-line Option

    N/A


    Description

    TINDENTEND defines the markup for closing a level for the continuation of a broken thread. See TINDENTBEGIN for more information.


    Default Setting

    <TIndentEnd>
    </ul>
    </TIndentEnd>
    

    Resource Variables

    N/A


    Examples

    See TINDENTBEGIN.


    Version

    2.0


    See Also

    TINDENTBEGIN

    Page Layout


    [Prev: TINDENTBEGIN][Resources][TOC][Next: TITLE]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/treverse.html0000644004705000001440000000643212332046112020657 0ustar ehoodusers MHonArc Resources: TREVERSE
    [Prev: TPREVTOPLINKIA][Resources][TOC][Next: TSINGLETXT]

    TREVERSE


    Syntax

    Envariable

    M2H_TREVERSE=[ 0 | 1 ]

    Element(s)

    <TREVERSE>
    <NOTREVERSE>

    Command-line Option(s)

    -treverse
    -notreverse


    Description

    If the TREVERSE resource on, messages in the thread index will be listed in reverse order of the specified thread sorting method. For example, if TSORT is on and TREVERSE is on, threads will be listed in reverse chronological order (most recent thread first, and oldest thread last).


    Default Setting

    Off.


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.1


    See Also

    THREAD, TSORT, TSUBSORT


    [Prev: TPREVTOPLINKIA][Resources][TOC][Next: TSINGLETXT]

    $Date: 2003/10/06 22:04:22 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/single.html0000644004705000001440000000632412332046111020300 0ustar ehoodusers MHonArc Resources: SINGLE
    [Prev: SCAN][Resources][TOC][Next: SORT]

    SINGLE


    Syntax

    Envariable

    N/A

    Element

    N/A

    Command-line Option

    -single


    Description

    When SINGLE is on, MHonArc will interpret input as a single message to convert to HTML with no archive processing performed. Input can specified as a filename on the command-line or from standard input. The converted message is sent to standard output.


    Default Setting

    N/A


    Resource Variables

    N/A


    Examples

    Input from standard input:
    % mhonarc -single < messagefile > file.html
    or,
    % cat messagefile | mhonarc -single > file.html
    Filename on command-line:
    % mhonarc -single messagefile > file.html

    Version

    1.0


    See Also


    [Prev: SCAN][Resources][TOC][Next: SORT]

    $Date: 2003/10/06 22:04:20 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/excs.html0000644004705000001440000001066712332046111017766 0ustar ehoodusers MHonArc Resources: EXCS
    [Prev: EDITIDX][Resources][TOC][Next: EXPIREAGE]

    EXCS


    Syntax

    Envariable

    N/A

    Element

    <EXCS>
    field-name
    field-name
    ...
    </EXCS>

    Command-line Option

    N/A


    Description

    The EXCS resource allows you to specify what fields should be excluded in the HTML output.

    Each line of the <EXCS> element specifies a mail header field to exclude in the converted HTML output. Each line is treated as a Perl regular expression (NOTE: the regular expression is already anchored to the begining of the line).

    Any fields you specify for the EXCS resource will augment the default list, unless the "Override" attribute is specified. If "Override" is specified, the default list is discarded along with any other lists specified from previous <EXCS> elements; and only header fields specified in the <EXCS> element are excluded.

    NOTE

    EXCS takes precedence over the FIELDORDER resource. Therefore, any field matched by EXCS will always be excluded regardless if the field is listed in FIELDORDER.


    Default Setting

    content-
    errors-to
    forward
    lines
    message-id
    mime-
    nntp-
    originator
    path
    precedence
    received
    replied
    return-path
    status
    via
    x-
    

    Resource Variables

    N/A


    Examples

    The following example shows how to exclude all message headers:

    <Excs Override>
    .
    </Excs>
    

    Version

    1.0


    See Also

    FIELDORDER, FIELDSBEG, FIELDSEND, FIELDSTYLES, FLDBEG, FLDEND, LABELBEG, LABELEND, LABELSTYLES


    [Prev: EDITIDX][Resources][TOC][Next: EXPIREAGE]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/msglocaldatefmt.html0000644004705000001440000001446712332046111022174 0ustar ehoodusers MHonArc Resources: MSGLOCALDATEFMT
    [Prev: MSGIDLINK][Resources][TOC][Next: MSGPGBEGIN]

    MSGLOCALDATEFMT


    Syntax

    Envariable

    M2H_MSGLOCALDATEFMT=date-format

    Element

    <MSGLOCALDATEFMT>
    date-format
    </MSGLOCALDATEFMT>

    Command-line Option

    -msglocaldatefmt date-format


    Description

    The MSGLOCALDATEFMT resource specifies the date format for the $MSGLOCALDATE$ resource variable (i.e. The local date of the current message). The format is a string containing zero or more conversion specifications and regular characters. A conversion specification consists of the '%' character followed a character that determines the type of conversion.

    The following lists the possible conversion specifications:

    NOTE

    If POSIXSTRFTIME is set, the POSIX::strftime() function will be used. Therefore, there may be more conversion specifications available. See your system's strftime() manpage for specifics.

    Spec Value
    %% the % character
    %a abbreviated weekday name
    %A full weekday name
    %b abbreviated month name
    %B full month name
    %c appropriate date and time representation
    %d day of month [1,31]; single digits are preceded by 0
    %h abbreviated month name
    %H hour (24-hour clock) [0,23]; single digits are preceded by 0
    %I hour (12-hour clock) [1,12]; single digits are preceded by 0
    %j day number of year [1,366]; single digits are preceded by 0
    %m month number [1,12]; single digits are preceded by 0
    %M minute[00,59]; single digits are preceded by 0
    %p am or pm.
    %P AM or PM.
    %S seconds [00,61]
    %w weekday as a decimal number [0,6], with 0 representing Sunday
    %y year within century [00,99]
    %Y year, including the century (for example 1993)

    Setting MSGLOCALDATEFMT to a blank string will reset the resource to the default setting.


    Default Setting

    %a %b %d %H:%M:%S %Y
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.0


    See Also

    GMTDATEFMT, LOCALDATEFMT, MONTHS, MONTHSABR, MSGGMTDATEFMT, POSIXSTRFTIME, WEEKDAYS, WEEKDAYSABR


    [Prev: MSGIDLINK][Resources][TOC][Next: MSGPGBEGIN]

    $Date: 2003/10/06 22:04:18 $
    MHonArc
    Copyright © 1997-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/defcharset.html0000644004705000001440000000654712332046111021136 0ustar ehoodusers MHonArc Resources: DEFCHARSET
    [Prev: DECODEHEADS][Resources][TOC][Next: DEFINEDERIVED]

    DEFCHARSET


    Syntax

    Envariable

    N/A

    Element

    <DEFCHARSET>
    charset
    </DEFCHARSET>

    Command-line Option

    N/A


    Description

    DEFCHARSET donotes the default character set of message text bodies. The MIME standard states that if a charset parameter is not specified for a text message, then us-ascii should be assumed. However, in some locales, MUAs fail to specify a charset when the text is non-ascii. DEFCHARSET allows you to compensate for this problem for a given locale.


    Default Setting

    <DefCharset>
    us-ascii
    </DefCharset>
    

    Resource Variables

    N/A


    Examples

    None.


    Version

    2.6.0


    See Also

    CHARSETALIASES, CHARSETCONVERTERS


    [Prev: DECODEHEADS][Resources][TOC][Next: DEFINEDERIVED]

    $Date: 2003/10/06 22:04:16 $
    MHonArc
    Copyright © 2002, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/thread.html0000644004705000001440000000574312332046112020273 0ustar ehoodusers MHonArc Resources: THREAD
    [Prev: THEAD][Resources][TOC][Next: TIDXFNAME]

    THREAD


    Syntax

    Envariable

    M2H_THREAD=[ 0 | 1 ]

    Element(s)

    <THREAD>
    <NOTHREAD>

    Command-line Option(s)

    -thread
    -nothread


    Description

    If THREAD is on, MHonArc will create the thread index page(s) for the archive. If off, no thread index is created.


    Default Setting

    On.


    Resource Variables

    N/A


    Examples

    None.


    Version

    1.1.0


    See Also

    MAIN


    [Prev: THEAD][Resources][TOC][Next: TIDXFNAME]

    $Date: 2003/10/06 22:04:21 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/resources/mimeargs.html0000644004705000001440000001000512332046111020612 0ustar ehoodusers MHonArc Resources: MIMEARGS
    [Prev: MIMEALTPREFS][Resources][TOC][Next: MIMEDECODERS]

    MIMEARGS


    Syntax

    Envariable

    N/A

    Element

    <MIMEARGS>
    content-type:argument-string
    ...
    </MIMEARGS>

    Command-line Option

    N/A


    Description

    The MIMEARGS resource may be used to pass optional arguments to MIME filters to control their behavior. Arguments may be defined on a per content-type basis, or for a specific filter itself. The MIMEARGS resource can only be set via the MIMEARGS element. The syntax for each line of the the MIMEARGS element is as follows:

    content-type;argument-string

    Or,

    filter-name;argument-string

    The format of argument strings is dependent on the filter that processes content-type or by the specified filter, filter-name.

    If an argument string is defined for a filter explicitly and for a content-type that the filter processes, the content-type string will override the filter string.


    Default Setting

    <MIMEArgs>
    m2h_external::filter; inline
    </MIMEArgs>
    

    Resource Variables

    N/A


    Examples

    The following tells the text/plain filter to italicize quoted text in a followup.

    <MIMEArgs>
    m2h_text_plain::filter; quote
    </MIMEArgs>
    

    Version

    1.2


    See Also

    MIMEFILTERS


    [Prev: MIMEALTPREFS][Resources][TOC][Next: MIMEDECODERS]

    $Date: 2005/05/13 18:50:38 $
    MHonArc
    Copyright © 1997-1998, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/doc/pod2htmi.tmp0000644004705000001440000000000312332046112016354 0ustar ehoodusers . MHonArc-2014-05-05-snap/doc/app-api.html0000644004705000001440000010213412332046112016331 0ustar ehoodusers MHonArc Reference -- Appendix: Application Programming Interface
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Appendix: Application Programming Interface

    A simple API is available to allow for embedded usage of MHonArc within other Perl programs.


    Initialization

    Before calling any MHonarc routines, you must initialize the MHonArc library. The following code snippet shows you how to initialize MHonArc:

    # Require MHonArc library
    require 'mhamain.pl';
    # Initialize MHonArc
    mhonarc::initialize();
    
    NOTE:

    The mhonarc::initialize() routine should only be called once within your program.

    NOTE:

    If mhamain.pl is not in perl's library search path, you will need to add the directory path to perl's search path before calling require.


    Processing Input

    To instruct MHonArc to process input, use the following routine:

    # Tell MHonArc to start processing
    mhonarc::process_input();
    

    When mhonarc::process_input() is called with no arguments, it parses @ARGV for command-line arguments. If you pass a list of arguments into mhonarc::process_input() then that list will be processed for the command-line arguments. For example:

    mhonarc::process_input(
        '-quiet',
        '-outdir', $archive_path,
        '-rcfile', $rcfile,
        $mailbox_filename
    );
    

    The return value of mhonarc::process_input() will be the CPU time, in seconds, MHonArc used. Example usage:

    $cpu_time = mhonarc::process_input();
    

    To determine what the status of the processing was, you can query the $mhonarc::CODE variable. The value of this variable reflects what the exit status of MHonArc would be if invoked from the shell. I.e. If $mhonarc::CODE is equal to 0, then no errors occured during processing. A non-zero value indicates some error occured. Example usage:

    mhonarc::process_input(
        '-quiet',
        '-outdir', $archive_path,
        '-rcfile', $rcfile,
        $mailbox_filename
    );
    if ($mhonarc::CODE) {
        # error code here
    }
    
    NOTE:

    If $mhonarc::CODE is equal to 75, this indicates that MHonArc was unable to obtain a lock on the archive. This exit code is recognized by MTAs like sendmail to requeue a message and try to deliver it again later. This is useful when MHonArc is invoked by a sendmail alias.

    It is okay to call mhonarc::process_input() multiple times within a single program. This is useful if your program wants to process multiple archives.


    Callbacks

    Support is available for registering callbacks to be invoked when MHonArc is processing input. To register a callback, all you need to do is set the appriopriate MHonArc variable to a routine reference (hard or symbolic). For example, to set the callback when a message header is read, you can do something like the following:

    $mhonarc::CBMessageHeadRead = \&my_callback_routine;
    
    NOTE:

    The mhasiteinit.pl site initialization library can be used to register callbacks. The advantages for using mhasiteinit.pl is that it is executed each time MHonArc is executed, and you do not have to create custom front-ends to MHonArc if all you want to do is register callbacks. See Installation and the example mhasiteinit.pl provided in the examples/ directory of the MHonArc distribution for more information about mhasiteinit.pl.

    What follows is the type of callbacks supported by MHonArc:

    $mhonarc::CBDbPreLoad

    Invoked just before the database file is loaded.

    Synopsis:

    $do_load = &$mhonarc::CBDbPreLoad($pathname);
    

    Arguments:

    $pathname

    Pathname to database file that will be loaded.

    Return Value:

    If a true value, MHonArc will load the database denoted by $pathname. If a false value, MHonArc will skip loading the database file.

    Notes:

    • This callback, along with $mhonarc::CBDbPreSave (in theory), can be used to provide a customized loading and saving of MHonArc archive information.

    $mhonarc::CBDbPreSave

    Invoked before data is saved to the database file.

    Synopsis:

    $do_save = &$mhonarc::CBDbPreSave($pathname, $tmp_pathname);
    

    Arguments:

    $pathname

    Pathname to database file that will be written to.

    $tmp_pathname

    Pathname temporary file that data will be written to before replacing $pathname. Data is written to a temporary file first to prevent any I/O, or other, errors leaving a corrupt database. If the data is written successfully, MHonArc renames $tmp_pathname to $pathname.

    Return Value:

    If a true value, MHonArc will save the data to $pathname. If a false value, MHonArc will skip writing the database file.

    Notes:

    • Generally, this function should always return a true value. This can easily be done by having the following statement at the end of the callback: return 1;

      A possible scenario where a false value may be returned if for cases where a customized format is used to save the data and the $mhonarc::CBDbPreLoad function is defined to provide a customized way to load database data.

    $mhonarc::CBDbSave

    Invoked when data has been written to database file.

    Synopsis:

    &$mhonarc::CBDbSave($db_fh);
    

    Arguments:

    $db_fh

    Open filehandle to database file. This filehandle can be used to write custom information to the database file.

    Note: Any data written to $db_fh must be legal Perl code.

    Return Value:

    N/A

    $mhonarc::CBMailFolderRead

    The callback function after a mail folder has been processed.

    Synopsis:

    &$mhonarc::CBMailFolderRead($filename);
    

    Arguments:

    $filename

    Filename of mail folder. If $filename equals "-", then the folder represents standard input.

    To determine if the mail folder is a mailbox file or a directory, the following can be done:

        if (-d $filename) {
    	# MH-style directory
        } else {
    	# UUCP-style mailbox file
        }
    

    Return Value:

    N/A.

    Notes:

    • This callback is not invoked for cases when a single message is added to archive from standard input. To capture this event, use $mhonarc::CBMessageConverted.

    $mhonarc::CBMessageConverted

    The callback function after a mail message has been converted.

    Synopsis:

    &$mhonarc::CBMessageConverted(
    		   $fields_hash_ref, $mesg_info_hash_ref);
    

    Arguments:

    $fields_hash_ref

    Reference to hash containing parsed message header. the structure of this hash is the same as described for the $mhonarc::CBMessageHeadRead callback.

    $mesg_info_hash_ref

    Reference to hash contain meta-information about the message converted. The following lists the keys that exist in the hash and what their values represent:

    folder

    The filename of the mail folder the message was read from. If the filename is "-", then the folder was read from standard input. For cases when only a single mail message is added to an archive from standard input, folder will be undefined.

    file

    The source filename of the message just converted. This key is only defined for MH-style mail folders (i.e. the mail folder is a directory). For mailbox-type folders, this key is set to undef. For cases when only a single mail message is added to an archive from standard input, file will equal "-".

    The following table summarizes what the values of the $mesg_info_hash_ref hash will be based upon the type of input:

    MH-style folder $mesg_info_hash_ref->{'folder'} = directory-name
    $mesg_info_hash_ref->{'file'} = filename
    Mailbox-style folder $mesg_info_hash_ref->{'folder'} = filename
    $mesg_info_hash_ref->{'file'} = undef
    Single Message $mesg_info_hash_ref->{'folder'} = undef
    $mesg_info_hash_ref->{'file'} = "-"

    Return Value:

    N/A.

    $mhonarc::CBMessageBodyRead

    The callback function after a mail message body has been converted.

    Synopsis:

    $boolean = &$mhonarc::CBMessageBodyRead(
    		           $fields_hash_ref, $html_text_ref, $files_array_ref);
    

    Arguments:

    $fields_hash_ref

    reference to hash containing parsed message header. the structure of this hash is the same as described for the $mhonarc::CBMessageHeadRead callback.

    $html_text_ref

    Reference to string contain the HTML markup for the body. Modifications to the referenced data will be reflected in the message page generated. Therefore, care should be observed when doing any modification.

    If MHonArc was unable to convert the body of the message, the following expression will evaluate to true:

    $$html_text_ref eq ""

    If this is the case, you could set the value of $$html_text_ref to something else to customize the warning text MHonArc uses in the message page written.

    $files_array_ref

    Reference to array of derived files when the body was converted. Each file is typically relative to $mhonarc::OUTDIR, unless it is a full pathname. the mhonarc::OSis_absolute_path($filename) can be used to determine if a file is an absolute pathname or not. Note, it is possible that a file could designate a directory; this indicates that the directory, and all files in the directory, are derived.

    Modifications to the array will affect the list of derived files MHonArc stores for the message. You can add files to the array if your routine creates files, but you can also delete items if your routine removes files; CAUTION: the HTML markup typically contains links to derived files so removing files could cause broken links unless $html_text_ref is modified to reflect the file deletions.

    Return Value:

    The return value is used by MHonArc to determine if the message should be excluded from any further processing. If the return value evaluates to true, then MHonArc will continue processing of the message. If the return value evaluates to false, the message will be excluded.

    Notes:

    • To distinquish between SINGLE operation mode and archive operation mode, you can check the $mhonarc::SINGLE variable. For example:

      if ($mhonarc::SINGLE) {
          # single message-based processing here
      } else {
          # archive-based processing here
      }
          
    • The $mhonarc::CBMessageBodyRead routine can be used to trigger automatic virus scanning of attachments.

    $mhonarc::CBMessageHeadRead

    The callback function after a mail message header is read and before any other processing is done. Note, the function is called after any exclusion checks (CHECKNOARCHIVE and MSGEXCFILTER) are performed by MHonArc.

    Synopsis:

    $boolean = &$mhonarc::CBMessageHeadRead(
    			    $fields_hash_ref, $raw_header_txt);
    

    Arguments:

    $fields_hash_ref

    Reference to hash containing parsed message header. Keys are the lowercase field names and the values are references to array contain the values for each field. If a field is only declared once in the header, the array will only contain one item. For example, to access the raw subject text, do the following: $fields_hash_ref->{'subject'}[0];

    The hash also contains special keys represented the values MHonArc has extracted when parsing the message header. The values of these keys are regular scalars and NOT array references. The following summarizes the keys made available:

    x-mha-index
    The assigned index given to the message by MHonArc.
    x-mha-message-id
    The message-id MHonArc extracted. Note, if the message did not specified a message ID, MHonArc auto-generates one.
    x-mha-from
    Who MHonArc thinkgs the message is from. This value is controled by the FROMFIELDS resource.
    x-mha-subject
    The message subject that will be used by MHonArc. The value may be different from the raw subject text of the message since SUBJECTSTRIPCODE code will have been applied. If no subject is defined, then the value is the empty string.
    x-mha-content-type
    The content-type of the message MHonArc will use for the message.

    For example, to access the subject text that MHonArc will use, do the following: $fields_hash_ref->{'x-mha-subject'};

    $raw_header_txt

    The raw header data of the message. This data may be useful if pattern matches are desired against header data.

    Return Value:

    The return value is used by MHonArc to determine if the message should be excluded from any further processing. If the return value evaluates to true, then MHonArc will continue processing of the message. If the return value evaluates to false, the message will be excluded.

    Notes:

    • To distinquish between SINGLE operation mode and archive operation mode, you can check the $mhonarc::SINGLE variable. For example:

      if ($mhonarc::SINGLE) {
          # single message-based processing here
      } else {
          # archive-based processing here
      }
          
    • MHonArc resources exist that allow message exclusion capabilities: CHECKNOARCHIVE, EXPIREAGE, EXPIREDATE, and MSGEXCFILTER. If possible, use these resources to perform message exclusion filtering.

    $mhonarc::CBRawMessageBodyRead

    Invoked with the raw message body data is read from input. I.e. The message body has not been converted.

    Synopsis:

    $boolean = &$mhonarc::CBRawMessageBodyRead(
    			  $fields_hash_ref, $body_data_ref);
    

    Arguments:

    $fields_hash_ref

    Reference to hash containing parsed message header. The structure of this hash is the same as described for the $mhonarc::CBMessageHeadRead callback.

    $body_data_ref

    Reference to string contain the raw data of the message body. Modifications to the referenced data can be performed to change what data MHonArc will process.

    Return Value:

    The return value is used by MHonArc to determine if the message should be excluded from any further processing. If the return value evaluates to true, then MHonArc will continue processing of the message. If the return value evaluates to false, the message will be excluded.

    $mhonarc::CBRcVarExpand

    Invoked when a resource variable is to be expanded. With this callback, you can override and/or augment MHonArc's built-in resource variable expansion support.

    Synopsis:

    ($result, $do_expand_again, $can_clip) =
        &$mhonarc::CBRcVarExpand($mha_index, $var_name, $arg_string);
    

    Arguments:

    $mha_index

    The MHonArc index key of the current message.

    $var_name

    The variable name being expanded. For example, given the resource variable reference, "$VARIABLE$", $var_name would be equal to "VARIABLE".

    $arg_string

    The argument string for the resource variable reference. For example, given the resource variable reference, "$VARIABLE(arg1)$", $arg_string would be equal to "arg1".

    Note: MHonArc generally uses the character ';' to separate multiple arguments to a resource variable. However, this is only convention, and if defining your own resource variable support via this callback, you can use whatever convention you like.

    Return Value:

    The return value is a list of values interpreted as follows:

    $result

    The result (or replace text) for the variable. If the result is equal to undef, MHonArc's built-in expansion code will be invoked to expand $var_name. If $result is defined, then MHonArc's built-in expansion will be skipped.

    $do_expand_again

    If a true value, MHonArc will parse $result and expand any resource variables contained within. Note: $mhonarc::CBRcVarExpand will be called for each resource variable found.

    $can_clip

    If a true value, clipping is allowed to be performed. Clipping is done if max length specification is specified in the resource variable reference.

    Notes:

    • Use the DEFINEVAR resource whenever possible for defining custom resource variables. The $mhonarc::CBRcVarExpand should only be used for cases where the sematics of DEFINEVAR are insufficient.

    • Colon variable modifiers, if specified in the resource variable reference, are applied by MHonArc after $mhonarc::CBRcVarExpand is invoked.


    Utility Routines

    The following are various utility routines available for use by custom extensions and filters:

    mhonarc::get_icon_url

    Retrieve icon URL for a give content-type as defined by the ICONS resource.

    Synopsis:

    $url = mhonarc::get_icon_url($content_type);
    

    Arguments:

    $content_type

    MIME content-type to retrieve icon for.

    Return Value:

    URL to icon.

    mhonarc::htmlize

    Convert HTML special characters into entity references. The following table shows with characters are converted:

    CharacterEntity Reference
    <&lt;
    >&gt;
    &&amp;
    "&quot;

    Synopsis:

    # Create an htmlized version of a string
    $html_text = mhonarc::htmlize($text);
    
    # Htmlize in-place
    mhonarc::htmlize($text_ref);
    

    Arguments:

    $text

    Text to convert. If a reference, conversion is done in-place,

    Return Value:

    The converted htmlized text.

    mhonarc::write_attachment

    Saves data to a file with a specified content-type.

    Synopsis:

    require 'mhmimetypes.pl';
    
    ($filename, $url) =
        mhonarc::write_attachment($content_type, $data_ref, $options_hash_ref);
    

    Arguments:

    $content_type

    The content-type of the data. The value should be a string in standard MIME content-type format. Examples: images/jpeg, application/postscript.

    $data_ref

    Scalar reference of data to write to disk.

    $options_hash_ref

    Reference to hash containing options to routine. All options are optional. The following options are available:

    -dirpath
    Pathname to directory to write file to. If not specified, the value of ATTACHMENTDIR or OUTDIR if ATTACHMENTDIR is not defined.
    -filename
    Name of file to write to. If not specified, a random filename will be generated based on the value of $content_type.
    -ext
    Filename extension to use for file. If not specified, extension will be based on the value of $content_type. The -filename, if specified, supercedes this option.
    -url
    Base URL. If not specified the value of ATTACHMENTURL is used.

    Return Value:

    The return value is a list of values interpreted as follows:

    $filename

    The name of the file $data_ref was written to. $filename may contain pathname components. For filters, this value is suitable for use in the file return list.

    $url

    The URL that links to $filename. Calling code can use the URL within an HTML link.

    Example:

    The following illustrates the typical way of specifying options to mhonarc::write_attachment:

        ($filename, $urlfile) =
    	mhonarc::write_attachment($ctype, $data, {
    	  '-dirpath'  => $path,
    	  '-filename' => $name,
    	  '-ext'      => $ext,
    	});
    

    Notes:

    • Care should practiced when using the -filename or -ext option since it could result in security vulnerabilities. When these options are not specified, mhonarc::write_attachment will created a safe random filename based upon the given content-type.

    readmail::MAILhead_get_disposition

    Retrieve the content disposition of a message entity.

    Synopsis:

    require 'readmail.pl';
    
    ($disposition, $filename, $raw_filename, $html_name) =
        readmail::MAILhead_get_disposition($fields_hash_ref, $do_html);
    

    Arguments:

    $fields_hash_ref

    reference to hash containing parsed message header. the structure of this hash is the same as described for the $mhonarc::CBMessageHeadRead callback.

    $do_html

    Generate an HTMLized version of filename designated in $fields_hash_ref for informational use within HTML markup.

    Return Value:

    The return value is a list of values interpreted as follows:

    $disposition

    The disposition of the entity. Generally, the value is either not defined, "attachment", or "inline".

    $filename

    Filename of entity as defined in $fields_hash_ref, but translated for safe usage. Any leading pathname component is removed and any unsafe characters are translated to underscores.

    $raw_filename

    Raw filename of entity as defined in $fields_hash_ref. This is only provided for informative uses and should not be used for creating files. Use $filename instead.

    $html_name

    Raw filename of entity converted to HTML. This return value is only provided if the $do_html argument is a true value. $html_name can be used for informative purposes in generated HTML by filters.

    NOTE:

    It is recommended that $html_name be used instead of HTMLizing $raw_filename directly since readmail::MAILhead_get_disposition does non-ASCII decoding and uses the CHARSETCONVERTERS resource.


    Notes

    • This API documention is not complete. To get a better idea of what you may be able to do, have a look at the source code for the commands provided in the MHonArc distribution: mhonarc, mha-dbedit, mha-dbrecover, and mha-decode. You may also want to look at the source of mhamain.pl and the various default filters.

    • Only a single archive can be processed at any given time.


    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    $Date: 2005/07/08 02:04:05 $
    MHonArc
    Copyright © 2001,2005 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2014-05-05-snap/install.me0000555004705000001440000005542412332046111015351 0ustar ehoodusers#!/usr/bin/perl ##---------------------------------------------------------------------------## ## File: ## $Id: install.me,v 1.20 2003/08/07 21:53:59 ehood Exp $ ## Author: ## Earl Hood, earl@earlhood.com ## Summary: ## Installation program for Perl applications. It is an alternative ## to the MakeMaker/Makefile.PL method for "pure" Perl applications. ## This program provides an interactive method of installation. ## ## Files to install are determined by the FILELIST file. Each ## file to install is listed in the file with a prefix telling ## the installation program the type of file it is. ##---------------------------------------------------------------------------## ## Copyright (C) 1997-2002 Earl Hood, earl@earlhood.com ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package InstallMe; use strict; use vars qw( $MSDOS $MACOS $UNIX $VMS $WINDOWS $DIRSEP $DIRSEPRX $CURDIR $PROG $PATHSEP $OSType %DirSep %CurDir %PathSep ); use Config; use FileHandle; use Getopt::Long; my $MacCLPrompt = 0; my $SkipPermCheck = 0; ############################################################################### ## OS Configuration Code ############################################################################### BEGIN { %DirSep = ( macos => ':', msdos => '\\', unix => '/', vms => '/', # ?? windows => '\\', ); %CurDir = ( macos => ':', # ?? msdos => '.', unix => '.', vms => '.', # ?? windows => '.', ); %PathSep = ( macos => ';', # ?? msdos => ';', unix => ':', vms => ':', # ?? windows => ';', ); my $dontknow = 0; ## Init variables $MACOS = 0; $MSDOS = 0; $UNIX = 0; $VMS = 0; $WINDOWS = 0; $DIRSEP = '/'; $CURDIR = '.'; $PATHSEP = ':'; ## See if ostype can be determined from osname in Config if (defined $^O) { $_ = $^O; } else { require Config; $_ = $Config::Config{'osname'}; } if (/mac/i) { $MACOS = 1; $OSType = 'macos'; } elsif (/vms/i) { $VMS = 1; $OSType = 'vms'; } elsif (/msdos/i || /\bdos\b/i) { $MSDOS = 1; $OSType = 'msdos'; } elsif (/mswin/i or /winnt/i) { $WINDOWS = 1; $MSDOS = 1; $OSType = 'windows'; } elsif (/unix/i || /aix/i || /bsd/i || /dynix/i || /hpux/i || /solaris/i || /sunos/i || /ultrix/i || /linux/i || /cygwin/i) { $UNIX = 1; $OSType = 'unix'; } else { $dontknow = 1; } ## If we do not know now what the ostype is, make a guess. if ($dontknow) { my($tmp); ## MSDOG/Windoze if (($tmp = $ENV{'windir'}) and ($tmp =~ /[A-Z]:\\/i) and (-d $tmp)) { $MSDOS = 1; $WINDOWS = 1; $OSType = 'windows'; } elsif (($tmp = $ENV{'COMSPEC'}) and ($tmp =~ /[a-zA-Z]:\\/) and (-e $tmp)) { $MSDOS = 1; if ($tmp =~ /win/i) { $WINDOWS = 1; $OSType = 'windows'; } else { $OSType = 'msdos'; } ## MacOS } elsif (defined($MacPerl::Version)) { $MACOS = 1; $OSType = 'macos'; ## Unix (fallback case) } else { $UNIX = 1; $OSType = 'unix'; } } ## Set other variables $DIRSEP = $DirSep{$OSType}; if ($MSDOS or $WINDOWS) { $DIRSEPRX = "\\\\\\/"; } else { ($DIRSEPRX = $DIRSEP) =~ s/(\W)/\\$1/g; } $CURDIR = $CurDir{$OSType}; $PATHSEP = $PathSep{$OSType}; ## Store name of program ($PROG = $0) =~ s%.*[$DIRSEPRX]%%o; ## Flag to prompt for command-line options on a Mac $MacCLPrompt = 1; } ##---------------------------------------------------------------------------## ## CLinit() initializes @ARGV. Currently, it does nothing under ## MSDOS and Unix. ## ## If running under a Mac and the script is a droplet, command-line ## options will be prompted for if $MacCLPrompt is set to a ## non-zero value. ## sub CLinit { ## Ask for command-line options if script is a Mac droplet ## Code taken from the MacPerl FAQ ## if ($MacCLPrompt && defined($MacPerl::Version) && ($MacPerl::Version =~ /Application$/)) { # we're running from the app my( $cmdLine, @args ); $cmdLine = &MacPerl::Ask( "Enter command line options:" ); require "shellwords.pl"; @args = &shellwords( $cmdLine ); unshift( @::ARGV, @args ); } } ##---------------------------------------------------------------------------## ## path_join takes an array of path components and returns a string ## with components joined together by the directoy separator. ## sub path_join { join($DIRSEP, @_); } ##---------------------------------------------------------------------------## ## path_split takes a string representing a pathname and splits ## it into an array of components. The pathname is interpreted ## with respect to the OS we are running under. ## sub path_split { split(/[$DIRSEPRX]/o, $_[0]); } ##---------------------------------------------------------------------------## ## is_absolute_path() returns true if a string is an absolute path ## sub is_absolute_path { if ($MSDOS or $WINDOWS) { return $_[0] =~ /^(?:[a-z]:)?[\\\/]/i; } if ($MACOS) { ## Not sure about Mac return $_[0] =~ /^:/o; } if ($VMS) { ## Not sure about VMS return $_[0] =~ /^\w+:/i; } $_[0] =~ m|^/|o; ## Unix } ############################################################################### ## Initialize Globals ############################################################################### my %Files = (); my %DefValues = (); my %OptValues = (); my $Root = ''; ############################################################################### ## Parse Command-line ############################################################################### { CLinit(); my $ret = GetOptions(\%OptValues, qw( afs root=s batch binpath=s docpath=s filelist=s libpath=s manpath=s nobin nodep nodoc nolib noman perl=s prefix=s help)); if (!$ret or $OptValues{"help"}) { usage(); exit !$ret; } $Root = $OptValues{'root'} if defined $OptValues{'root'}; my $cfg_prefix = interpolate_path($Config{'prefix'}); $DefValues{'binpath'} = interpolate_path($Config{'installbin'}); $DefValues{'libpath'} = interpolate_path($Config{'installsitelib'}); $DefValues{'manpath'} = interpolate_path($Config{'installman1dir'}); if (defined($OptValues{'prefix'})) { $DefValues{'binpath'} = join($DIRSEP, $OptValues{'prefix'}, 'bin') unless $DefValues{'binpath'} =~ s/^\Q$cfg_prefix/$OptValues{'prefix'}/o; $DefValues{'libpath'} = join($DIRSEP, $OptValues{'prefix'}, 'lib') unless $DefValues{'libpath'} =~ s/^\Q$cfg_prefix/$OptValues{'prefix'}/o; $DefValues{'manpath'} = join($DIRSEP, $OptValues{'prefix'}, 'man') unless $DefValues{'manpath'} =~ s/^\Q$cfg_prefix/$OptValues{'prefix'}/o; $DefValues{'docpath'} = join($DIRSEP, $OptValues{'prefix'}, 'doc'); } else { $DefValues{'docpath'} = join($DIRSEP, $cfg_prefix, 'doc'); } $DefValues{'manpath'} =~ s|(${DIRSEPRX}man)${DIRSEPRX}.*|$1|; $DefValues{'filelist'} = 'FILELIST'; $DefValues{'perl'} = $Config{'perlpath'}; $SkipPermCheck = 1 if $OptValues{'afs'}; ## If VMS, tweak pathnames if ($VMS) { my($key); foreach $key (keys(%DefValues)) { $DefValues{$key} =~ s|:||; $DefValues{$key} =~ s|[\.\[\]]|/|g; $DefValues{$key} =~ s|000000||g; $DefValues{$key} =~ s|//|/|g; } } } ############################################################################### ## Do It ############################################################################### { my($dodep, $dobin, $dolib, $dodoc, $doman); ## Get installation files ## ---------------------- read_manifest($OptValues{'filelist'} || $DefValues{'filelist'}, \%Files); $DefValues{'docpath'} .= $DIRSEP . $Files{'name'}[0] if $Files{'name'}[0]; $dodep = defined($Files{'dep'}) && scalar(@{$Files{'dep'}}) && !$OptValues{'nodep'}; $dobin = defined($Files{'bin'}) && scalar(@{$Files{'bin'}}) && !$OptValues{'nobin'}; $dolib = defined($Files{'lib'}) && scalar(@{$Files{'lib'}}) && !$OptValues{'nolib'}; $dodoc = defined($Files{'doc'}) && scalar(@{$Files{'doc'}}) && !$OptValues{'nodoc'}; $doman = defined($Files{'man'}) && scalar(@{$Files{'man'}}) && !$OptValues{'noman'}; die "Nothing to install!\n" unless $dobin or $dolib or $dodoc or $doman; ## Check for dependencies ## ---------------------- if ($dodep) { print STDOUT "Checking dependencies:\n"; my($mod); my(@dont_exist) = (); foreach $mod (@{$Files{'dep'}}) { print STDOUT sprintf("\t%s %s ", $mod, ('.'x(30-length($mod)))); if ($mod =~ /\.pl$/) { eval { require $mod; }; } else { eval qq{ require $mod; }; } if ($@) { print STDOUT "NOT OK!\n"; push(@dont_exist, $mod); } else { print STDOUT "ok\n"; } } if (@dont_exist) { die "ERROR: Dependency check FAILED\n"; } } ## Get path stuff ## -------------- if ($OptValues{'batch'}) { $OptValues{'perl'} = $DefValues{'perl'} unless $OptValues{'perl'}; $OptValues{'binpath'} = $DefValues{'binpath'} unless $OptValues{'binpath'}; $OptValues{'libpath'} = $DefValues{'libpath'} unless $OptValues{'libpath'}; $OptValues{'docpath'} = $DefValues{'docpath'} unless $OptValues{'docpath'}; $OptValues{'manpath'} = $DefValues{'manpath'} unless $OptValues{'manpath'}; } else { while (1) { $OptValues{'perl'} = get_perl_from_user($OptValues{'perl'}, $DefValues{'perl'}, "Pathname of perl executable:"); $OptValues{'binpath'} = get_path_from_user($OptValues{'binpath'}, $DefValues{'binpath'}, "Directory to install executables:") if $dobin; $OptValues{'libpath'} = get_path_from_user($OptValues{'libpath'}, $DefValues{'libpath'}, "Directory to install library files:") if $dolib; $OptValues{'docpath'} = get_path_from_user($OptValues{'docpath'}, $DefValues{'docpath'}, "Directory to install documentation:") if $dodoc; $OptValues{'manpath'} = get_path_from_user($OptValues{'manpath'}, $DefValues{'manpath'}, "Directory to install manpages:") if $doman; print STDOUT "You have specified the following:\n"; print STDOUT "\tPerl path: $OptValues{'perl'}\n"; print STDOUT "\tBin directory: $OptValues{'binpath'}\n" if $dobin; print STDOUT "\tLib directory: $OptValues{'libpath'}\n" if $dolib; print STDOUT "\tDoc directory: $OptValues{'docpath'}\n" if $dodoc; print STDOUT "\tMan directory: $OptValues{'manpath'}\n" if $doman; last if prompt_user_yn("Is this correct?", 1); $DefValues{'perl'} = $OptValues{'perl'}; $DefValues{'binpath'} = $OptValues{'binpath'}; $DefValues{'libpath'} = $OptValues{'libpath'}; $DefValues{'docpath'} = $OptValues{'docpath'}; $DefValues{'manpath'} = $OptValues{'manpath'}; $OptValues{'perl'} = ''; $OptValues{'binpath'} = ''; $OptValues{'libpath'} = ''; $OptValues{'docpath'} = ''; $OptValues{'manpath'} = ''; } } ## Install files ## ------------- my $plprefix = "#!$OptValues{'perl'}\n"; $plprefix .= "use lib qw($OptValues{'libpath'});\n" if $OptValues{'libpath'}; my($file, $destfile); if ($dobin) { print STDOUT qq(Installing programs to "$OptValues{'binpath'}":\n); if (create_dir(apply_root($Root, $OptValues{'binpath'}), 1) <= 0) { die "\n"; } foreach (@{$Files{'bin'}}) { print STDOUT " $_ => "; ($file = $_) =~ s%.*/%%o; $destfile = join('', $OptValues{'binpath'}, $DIRSEP, $file); my $fulldestfile = apply_root($Root, $destfile); print STDOUT $destfile, "\n"; cp($_, $fulldestfile, $plprefix, $WINDOWS); eval q{chmod 0755, $fulldestfile;}; if ($WINDOWS && $file !~ /\.pl$/i) { $fulldestfile .= ".pl"; cp($_, $fulldestfile, $plprefix); eval q{chmod 0755, $fulldestfile;}; } } } if ($dolib) { print STDOUT qq(Installing lib files to "$OptValues{'libpath'}":\n); if (create_dir(apply_root($Root, $OptValues{'libpath'}), 1) <= 0) { die "\n"; } foreach (@{$Files{'lib'}}) { print STDOUT " $_ => "; ($file = $_) =~ s%.*/%%o; $destfile = join('', $OptValues{'libpath'}, $DIRSEP, $file); print STDOUT $destfile, "\n"; cp($_, apply_root($Root, $destfile)); } } if ($dodoc) { print STDOUT qq(Installing docs to "$OptValues{'docpath'}":\n); if (create_dir(apply_root($Root, $OptValues{'docpath'}), 1) <= 0) { die "\n"; } foreach (@{$Files{'doc'}}) { print STDOUT " $_ => "; ($file = $_) =~ s%.*/%%o; $destfile = join('', $OptValues{'docpath'}, $DIRSEP, $file); print STDOUT $destfile, "\n"; cp($_, apply_root($Root, $destfile)); } } if ($doman) { my($sect, $msubdir); print STDOUT qq(Installing manpages to "$OptValues{'manpath'}":\n); if (create_dir(apply_root($Root, $OptValues{'manpath'}), 1) <= 0) { die "\n"; } foreach (@{$Files{'man'}}) { print STDOUT " $_ => "; ($file = $_) =~ s%.*/%%o; ($sect = $file) =~ s%.*\.%%o; $msubdir = join($DIRSEP, $OptValues{'manpath'}, "man$sect"); if (create_dir(apply_root($Root, $msubdir), 1) <= 0) { die "\n"; } $destfile = join($DIRSEP, $msubdir, $file); print STDOUT $destfile, "\n"; cp($_, apply_root($Root, $destfile)); } } } ############################################################################### ## Subroutines ############################################################################### ##------------------------------------------------------------------------ ## read_manifest() reads file giving list of all files to ## install. ## sub read_manifest { my $file = shift; my $href = shift; my($key, $pathname); open FILE, $file or die qq(Unable to open "$file"\n); while () { next if /^#/; next unless /\S/; chomp; ($key, $pathname) = split(/:/, $_, 2); push @{$href->{$key}}, $pathname; } close FILE; } ##------------------------------------------------------------------------ ## perl_exe() returns true if pathname argument is a perl ## interpreter. ## sub perl_exe { my $pathname = shift; return 0 unless -x $pathname; return 0 unless open PERL, "$pathname -v |"; while () { if (/\bperl\b/i) { close PERL; return 1; } } close PERL; 0; } ##------------------------------------------------------------------------ ## get_perl_from_user() gets the pathname of the perl executable. ## sub get_perl_from_user { my $value = shift; # Current value (if set, batch mode) my $default = shift; # Default value my $prompt = shift; # User prompt if (defined($value) && ($value =~ /\S/)) { die qq(ERROR: "$value" is not perl.\n) unless perl_exe($value); } else { while (1) { $value = interpolate_path(prompt_user($prompt, $default)); last if perl_exe($value); warn qq(ERROR: "$value" is not perl.\n); } } $value; } ##------------------------------------------------------------------------ ## apply_root() applies install base root path to given path. ## sub apply_root { my $base = shift; my $path = shift; if ($base) { return $base . $path; } $path; } ##------------------------------------------------------------------------ ## get_path_from_user() gets a path from the user. The function ## insures the path exists. ## sub get_path_from_user { my $value = shift; # Current value (if set, batch mode) my $default = shift; # Default value my $prompt = shift; # User prompt if (defined($value) && ($value =~ /\S/)) { die qq(ERROR: Unable to create "$value".\n) unless create_dir(apply_root($Root, $value), 1) > 0; } else { my $stat; while (1) { $value = interpolate_path(prompt_user($prompt, $default)); $stat = create_dir(apply_root($Root, $value)); if ($stat > 0) { last; } if ($stat == 0) { next; } } } $value; } ##------------------------------------------------------------------------ ## create_dir() creates a directory path ## sub create_dir { my $d = shift; # Directory path my $noask = shift; # Don't ask to create flag if (-e $d) { if ($SkipPermCheck || -w $d) { return 1; } warn qq/"$d" is not writable\n/; return -1; } my(@a) = grep($_ ne '', split(/[$DIRSEPRX]/o, $d)); my($path, $dir, $curpath); if (!$noask) { return 0 unless prompt_user_yn(qq{"$d" does not exist. Create}, 1); } if ($MSDOS) { if ($d =~ m%^\s*(?:[a-zA-Z]:)?[/\\]%) { $path = shift @a; } else { $path = $CURDIR; } } else { if ($d =~ /^\s*\//) { $path = ''; } else { $path = $CURDIR; } } foreach $dir (@a) { $curpath = "$path$DIRSEP$dir"; if (! -e $curpath) { if (!mkdir($curpath, 0777)) { warn qq/Unable to create "$curpath": $!\n/; return -1; } } elsif (! -d $curpath) { warn qq/"$curpath" is not a directory\n/; return -1; } $path .= $DIRSEP . $dir; } if (!$SkipPermCheck && (! -w $d)) { warn qq/"$d" not writable\n/; return -1; } 1; } ##------------------------------------------------------------------------ ## interpolate_path() expands any special characters in a pathname. ## sub interpolate_path { my($path) = shift; $path =~ s/^~($DIRSEPRX|$)/$ENV{'HOME'}$1/o; $path =~ s/^(~\w+)($DIRSEPRX|$)/get_user_home_dir($1).$2/oe; $path =~ s/\$(\w+)/defined($ENV{$1})?$ENV{$1}:"\$$1"/ge; $path =~ s/\$\{(\w+)\}/defined($ENV{$1})?$ENV{$1}:"\${$1}"/ge; $path; } ##------------------------------------------------------------------------ ## get_user_home_dir() retrieves home directory for a given user. ## sub get_user_home_dir { my $orguser = shift; my $user = $orguser; $user =~ s/~//g; my @pwent = getpwnam($user); return scalar(@pwent) ? $pwent[7] : $orguser; } ##------------------------------------------------------------------------ ## cp() copies a file, or directory. ## sub cp { my($src, $dst, $prepend, $mkbat) = @_; if (-d $src) { if (! -e $dst) { mkdir($dst,0777) or die "Unable to create $dst: $!\n"; } opendir(DIR, $src) or die "Unable to open $src: $!\n"; my @files = grep(!/^(sccs|\.|\..)$/i, readdir(DIR)); closedir(DIR); my($file, $srcpn, $dstpn); foreach $file (@files) { $srcpn = "$src$DIRSEP$file"; $dstpn = "$dst$DIRSEP$file"; if (-d $srcpn) { cp($srcpn, $dstpn, $prepend, $mkbat); } else { cpfile($srcpn, $dstpn, $prepend, $mkbat); } } } else { cpfile($src, $dst, $prepend, $mkbat); } } ##------------------------------------------------------------------------ ## cpfile() copies a file. Any text in $prepend will be prepending ## to the destination file. ## sub cpfile { my($src, $dst, $prepend, $mkbat) = @_; my($bflag, $status); if (-d $dst) { my $tmp; ($tmp = $src) =~ s%.*[$DIRSEPRX]%%o; $dst .= $DIRSEP . $tmp; } open(SRC, $src) or die "Unable to open $src: $!\n"; $bflag = (-B $src); $mkbat = 0 if ($dst =~ /\.bat$/i); $dst .= '.bat' if (!$bflag && $mkbat); open(DST, "> $dst") or die "Unable to create $dst: $!\n"; if ($bflag) { binmode(SRC); binmode(DST); } if (!$bflag && $mkbat) { $status = print DST <<'EndOfBat'; @rem = '--*-Perl-*-- @echo off if "%OS%" == "Windows_NT" goto WinNT perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9 goto endofperl :WinNT perl -x -S "%0" %* if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl if %errorlevel% == 9009 echo You do not have perl in your PATH. goto endofperl @rem '; EndOfBat die qq/Error: Write failure to "$dst": $!\n/ unless $status; } if ($prepend) { $status = print DST $prepend; die qq/Error: Write failure to "$dst": $!\n/ unless $status; } $status = print DST ; die qq/Error: Write failure to "$dst": $!\n/ unless $status; if (!$bflag && $mkbat) { $status = print DST <<'EndOfBat'; __END__ :endofperl EndOfBat die qq/Error: Write failure to "$dst": $!\n/ unless $status; } close(SRC); close(DST); } ##------------------------------------------------------------------------ ## prompt_user() prompts the user for some input. The first ## argument is the prompt string, the second is the default ## value is the user specifies nothing. ## sub prompt_user { my $prompt = shift; my $default = shift; my($answer); print STDOUT $prompt; print STDOUT qq{ ("$default")} if defined($default); print STDOUT " "; $answer = ; chomp $answer; $answer = $default if $answer !~ /\S/; $answer; } ##------------------------------------------------------------------------ ## prompt_user_yn() prompts the user for a yes or no question. ## sub prompt_user_yn { my $prompt = shift; my $default = shift; my($answer); print STDOUT $prompt, " "; print STDOUT $default ? "['y']" : "['n']"; print STDOUT " "; $answer = ; chomp $answer; if ($answer !~ /\S/) { $answer = $default; } elsif ($answer =~ /q/i or $answer =~ /quit/i) { print STDOUT "Installation aborted!\n"; exit(0); } elsif ($answer =~ /y/i or $answer =~ /yes/i) { $answer = 1; } else { $answer = 0; } $answer; } ##---------------------------------------------------------------------------## ## sub usage { print STDOUT < : Directory path to install programs/scripts -docpath : Directory path to install documentation -help : This message -libpath : Directory path to install library files -filelist : List of files to install (def="FILELIST") -manpath : Directory path to manpages -nobin : Do not install programs -nodep : Skip module dependency check -nodoc : Do not install documentation -nolib : Do not install library files -noman : Do not install manpages -perl : Pathname of perl interpreter -prefix : Set prefix for installation directories EOF }

    Where codeset and country are optional. The language and country are short codes defined by the standards ISO 639 (language) and ISO 3166 (country), The codeset represents a specific character encoding, like ISO8859-1. You will need to consult your system documentation for what locales, and their formats, are supported.