MHonArc-2.6.18/0000755004705000001440000000000011512360072012114 5ustar ehoodusersMHonArc-2.6.18/FILELIST0000644004705000001440000000302207613060013013246 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-2.6.18/extras/0000755004705000001440000000000011512360072013422 5ustar ehoodusersMHonArc-2.6.18/extras/README.txt0000644004705000001440000000044410243725163015130 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-2.6.18/extras/mha-mhedit/0000755004705000001440000000000011512360072015437 5ustar ehoodusersMHonArc-2.6.18/extras/mha-mhedit/README.txt0000644004705000001440000000130310243725163017140 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-2.6.18/extras/mha-mhedit/mha-mhedit0000755004705000001440000003645707605646776017453 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-2.6.18/extras/mha-mhedit/INSTALL0000644004705000001440000000015407576305426016511 0ustar ehoodusersCopy the mha-mhedit program to somewhere in your search path. Copy mha-repl.mrc into your MH/nmh directory. MHonArc-2.6.18/extras/mha-mhedit/mha-repl.mrc0000644004705000001440000000462107576305426017673 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-2.6.18/extras/mha-mhedit/mha-mhedit.html0000644004705000001440000003414207605646776020400 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-2.6.18/mha-dbrecover0000755004705000001440000001450611177375157014607 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-2.6.18/COPYING0000644004705000001440000004313107466542002013161 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-2.6.18/admin/0000755004705000001440000000000011512360044013203 5ustar ehoodusersMHonArc-2.6.18/admin/mhaadmin.html0000644004705000001440000000055706734637462015703 0ustar ehoodusers MHonArc Archive Admin MHonArc-2.6.18/admin/mhaadmin.rc0000644004705000001440000000204606754302706015326 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-2.6.18/admin/mhaadmin.cgi0000755004705000001440000006234707411627115015474 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-2.6.18/admin/README.txt0000644004705000001440000000112710243726724014715 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-2.6.18/admin/images/0000755004705000001440000000000011512360044014450 5ustar ehoodusersMHonArc-2.6.18/admin/images/mhaicon.png0000644004705000001440000000075507457463514016626 0ustar ehoodusers‰PNG  IHDRFBÆõHPLTE$‘Ù4-#&-W.OoKf2 _E1$n¤–ò$‘ÙHЦ‡T'°S¤bÚi¸£—“UÚ˜ò°øÐÿðÆ¿”4tRNS@æØfbKGD Ö˜ IDATxÚe’Ûv„ E†DŠ@þÿO{°]ÑæC²Í„‚[œók$  ۬žäESÚ”WàF+ë–’Š§ RëÉÇæ ŠÅmŸµŠÌ‚¢'¨‡‹=•¯NpSI© ‘cR¦Ç2{\X­VÕ¯PxȤ_ ß2rJäéÈ$bi­÷n:Ô ­ ¿!Ž…ÐžY†HÞñ!óa ó’ËÈ æå’S›ÓØ0¨uwšª•Ôö±×9r¾Ó9µÕ¶¿ŽnvŸxšVX?ÆÑçFî^¹}}­šüƒ†Ôjk¸ç)Û£0}±µÖ°´ùsÉŒ¶P4~ÎtÝçëmdöÿá|2ñ-?ö EšEjNæ.tEXtComment Imported from GIF image: mhonarc.gif.8ñIEND®B`‚MHonArc-2.6.18/admin/images/mhanote_s.png0000644004705000001440000000132107457463514017153 0ustar ehoodusers‰PNG  IHDR ³·ÈqPLTEÀÀÀ553;===>--3355/44<>H?HGGAOII[[Y\]]^^aacc||-II(RR7UWD?P8BACCZZdekk*yy/tt2ww=~s?zz;||=GGPNNSHVVPPGYSSYYSYYU\\V^^^YYfVaaeeFiikkkmtthwwxzzu‹‹€Ÿ°ÇÈÒÖÞãããææ€{UŒx€}€ƒƒ3‚‚?µªƒƒAšL””Yƒƒw­œ^¹´W¬­j±±iÄÄ7ÔÔNòÛ_éé\ííaééoéépíísøøbÿÿjññuÿÿ€……€€ŒŒ††™•”••££¥¦¦¦¯¯¯¯¯°´´´··¸¸¸¹ÿÿ€ÿÿÿÿ‚ÿÿƒÿÿ„ÿÿ…ÿÿ†ÿÿ‡ÿþˆÿÿ‰ÿÿŠÿÿÿÿŽÿÿÿÿ“ÿÿ”ÀÀÀÀÀÁ Jº%tRNS@æØfbKGDz8Õ…jÇIDATxÚc`€ƒdCÍh !,ÊçŘ10ØÙ[hÃE\üõãÙøÅáÁ¥…nU‚bŒ 0ÕâÌb+!fV˜’ üŒBKk[§4˜’Œ¬I>n)s˜’ŒŒ¬¬@io™$ˆ2P dçùúÉë20¤2(…ƒ”€T•…q˜(D”dBDròœ5€")^ùy¡âHvˆÝZj!™ùY¹Eå¥rê0ꨆE¹{r1!ù[OQÖÈ•9$*McÓÁL(1m¦ 4.tEXtComment Imported from GIF image: mhanote.gifïܲƒIEND®B`‚MHonArc-2.6.18/examples/0000755004705000001440000000000011512360071013731 5ustar ehoodusersMHonArc-2.6.18/examples/mha-preview0000755004705000001440000001774010262365435016126 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-2.6.18/examples/icons.mrc0000644004705000001440000000527007740363347015574 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-2.6.18/examples/blog.mrc0000644004705000001440000000663010025415406015365 0ustar ehoodusers index.shtml $IDXTITLE$

$IDXTITLE$

$MSGID$

$SUBJECTNA$

Date: $MSGLOCALDATE$
From: $FROM$

:

in-reply-to references MHonArc-2.6.18/examples/frames.mrc0000644004705000001440000003751107740363347015741 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-2.6.18/examples/mhasiteinit-p7m.pl0000644004705000001440000000746411510057057017325 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-2.6.18/examples/secure.mrc0000644004705000001440000000304011512243115015716 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-2.6.18/examples/mhasiteinit.pl0000644004705000001440000000426011510267737016623 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-2.6.18/examples/date.mrc0000644004705000001440000000263407740363347015377 0ustar ehoodusers %B %d, %y
    $MSGLOCALDATE$
    $MSGLOCALDATE(CUR;%H:%M)$ $SUBJECT$ $FROMNAME$ $NOTE$
    MHonArc-2.6.18/examples/utf-8-encode.mrc0000644004705000001440000000502510025415406016635 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-2.6.18/examples/def-mime.mrc0000644004705000001440000002675607740363347016160 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-2.6.18/examples/utf-8.mrc0000644004705000001440000000376210025415406015410 0ustar ehoodusers plain; mhonarc::htmlize; default; MHonArc::UTF8::str2sgml; MHonArc/UTF8.pm MHonArc::UTF8::clip; MHonArc/UTF8.pm $IDXTITLE$

    $IDXTITLE$

    $TIDXTITLE$

    $TIDXTITLE$

    $SUBJECTNA$ MHonArc-2.6.18/examples/subject.mrc0000644004705000001440000000155207740363347016117 0ustar ehoodusers
  • $SUBJECTNA$
  • $FROMNAME$
  • MHonArc-2.6.18/examples/mha-p7m0000755004705000001440000000702211510057057015133 0ustar ehoodusers#!/usr/bin/perl ##---------------------------------------------------------------------------## ## File: ## $Id: mha-p7m,v 1.1 2011/01/02 11:14:55 ehood Exp $ ## Author: ## Earl Hood earl@earlhood.com ## Description: ## Front-end to mhonarc to support processing application/x-pkcs7-mime ## signed messages. ## ## 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. ##---------------------------------------------------------------------------## # 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-2.6.18/examples/mhonarc.vim0000644004705000001440000007262311512360071016107 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 " ':', 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 } MHonArc-2.6.18/META.yml0000644004705000001440000000104511512360072013365 0ustar ehoodusers--- #YAML:1.0 name: MHonArc abstract: Create HTML archives of mail/news messages version: 2.6.18 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-2.6.18/mhonarc0000755004705000001440000000604210264334614013501 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-2.6.18/logo/0000755004705000001440000000000011512360045013054 5ustar ehoodusersMHonArc-2.6.18/logo/mhonarc32x32.ico0000644004705000001440000001027607533544061015721 0ustar ehoodusers  ¨( @ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈËÒÿ-/Kÿ#<[ÿÜåêÿÿÿÿÿÿÿÿÿÿÿÿÿëðóª2Kiÿ%)Dÿ·ºÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÖàæÿ+8UÿOuÿÆçÿY¯Éÿÿÿÿÿÿÿÿÿÿÿÿÿr³ÈÿÉëÿ\‚ÿ 0NÿÆÒÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòõ÷DOhÿPvÿÎ÷ÿÍóÿ ÄëÿàçìÿÿÿÿÿÿÿñôöºÞÿ×ýÿÍ÷ÿ`†ÿ2:Wÿçìðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤®ºÿFvÿ§éÿÉñÿ¼äÿÛÿÿž»Éÿÿÿÿÿÿÿ»ÊÔÿÔûÿ¾åÿËòÿ¬ìÿSˆÿ˜¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿv~ÿt¯ÿ´ÿÿ³àÿÁèÿÝÿÿh®Æÿüýýþþþ€²ÅÿÝÿÿ¾æÿ·áÿ°üÿ„Äÿ^g}ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüý8Liÿu²ÿ¬ùÿ¬çÿ»âÿÚÿÿK´Îÿ©³¿ÿ£¬¹ÿ`²ÉÿÝÿÿ½ãÿ¬äÿ¬ûÿ~¾ÿ!=^ÿðñóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»ÀÈÿPÿµÿÿœãÿ§ïÿ¶àÿÌóÿ1¾ÜÿWd{ÿ?Hbÿ@¶ÓÿÒøÿ¸àÿ©ïÿœãÿµþÿ_’ÿ¢§±ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýþþWdzÿ:kÿ¢èÿ©óÿŸçÿ®ãÿÄêÿÃèÿdsˆÿamƒÿ)¼ÝÿÆíÿ¯áÿ èÿ¨ñÿ¦ëÿH|ÿBMeÿ÷ùúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²¾Èÿ >ÿs¸ÿ‰Óÿ“Øÿ€ÎÿyÄÿ±ÙÿÁèÿ;Xuÿ@Rlÿ»àÿ¶Üÿ~Æÿ}Ìÿ“Øÿ‡Òÿ|Äÿ $Iÿš§µÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ™§ÿEÿŠÖÿ˜éÿ‰ÕÿhÎÿfÙÿzÅÿ¶Úÿ .Sÿ >ÿ±×ÿ‚ÆÿeÕÿlÙÿ‚Îÿ˜èÿÞÿ+Vÿv‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÙàÿ:ÿKÿ9oÿOŠÿOŸÿfÏÿjÚÿ‘Îÿ5WÿAÿ”ÉÿkÙÿhÒÿSªÿNˆÿÿRqÿ›¼ÿ°×ÿÊñÿáÿÿñÿÿœÂÿ9ÿ£±½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[k‚ÿ (ÿn–ÿËìÿÏõÿÖûÿâÿÿÏòÿ™ÐÿT¢ÿ7ÿ&ÿNÿ‘ÌÿÉîÿâÿÿ×ýÿÐõÿËíÿ}¦ÿ (ÿEUoÿþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÚáÿ(DÿS†ÿ¤éÿ¦ðÿ ßÿœÔÿ·ÿf¼ÿiÙÿhÑÿ:ÿ(ÿdÉÿjÝÿd½ÿ}·ÿ˜Ïÿ¡Þÿ¤íÿ§íÿa™ÿ =ÿ»ÆÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñõ÷GUnÿ$Jÿt·ÿªïÿ±÷ÿåÿqÈÿdÐÿqèÿ\ºÿIj‹ÿÿLYoÿ€£¸ÿ;sÿ8p›ÿ,bÿG™ÿQ¢ÿ0cÿCRfÿÝãçÿÿÿÿÂËÔÿÀÊÒÿüýýêîñÌTcuÿ+ZÿNÿLŸÿW‡ÿ@vžÿ6oÿužµÿVeyÿ!$DÿBIbÿÞãçÿÿÿÿöøùIVpÿ9ÿqªÿ# Øÿ’ÏàÿG`qÿ.Ofÿl•¡ÿ6ÿ4ÿt‚‘ÿõ÷øÿÿÿïñó"øùúÿÿÿëíðªÿÿÿüüý…’ ÿ9ÿ2ÿbŠ˜ÿ@dxÿ5Odÿ˜ÏÜÿ+¦Üÿz´ÿ!Cÿ5A]ÿêîñÌŠœ¬ÿ!'Dÿ /`ÿzÖÿ‚ßÿeªÉÿ:Zpÿ>ÿKs†ÿJk€ÿ£¬¸ÿÿÿÿÿÿÿýýýãæêÿýýþþþþãæêÿúûûÿÿÿÿÿÿ´»ÄÿLkÿS|Žÿ"Cÿ'Gbÿq®ÇÿƒÝÿ€Þÿ 5kÿ"@ÿvˆ›ÿ6C]ÿ#%Bÿ,Vÿ8ÿ7ÿ6JiÿUr„ÿ=Umÿv…˜ÿâæêÿÿÿÿö÷ùñôößãèÿèíñÿÿÿÿÿÿÿìñóˆÜáæÿòôöôö÷ÿÿÿêíðÌŽ ÿ;SlÿVvˆÿ9Lhÿ7|ÿ8„ÿ,Zÿ(*Gÿ0:UÿÁÈÐÿZdzÿFUnÿ18Qÿ,/FÿY]rÿ£­¹ÿëíðªÿÿÿÿÿÿÿÿÿÅÍÔÿÀÈÐÿîñóDÿÿÿÿÿÿÿÿÿÿÿÿðóõÉÏÖÿ¾ÆÏÿÿÿÿÿÿÿÿÿÿòôö«µÁÿ_cyÿ14Jÿ+0JÿJVoÿQ\tÿ¶¾ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÃãÿÿƒÁÿÿÀÿÿ€ÿÿ€ÿÿÿþþü?ü?ü?ü?øøððà@À`€ð¸9Þçç€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMHonArc-2.6.18/logo/mhassbg75.jpg0000644004705000001440000001542707451276301015377 0ustar ehoodusersÿØÿàJFIFHHÿí 4Photoshop 3.08BIMíHH8BIMó8BIM 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM@@8BIM Ä€W€‚€¨ÿØÿàJFIFHHÿþ'File written by Adobe Photoshop¨ 4.0ÿîAdobed€ÿÛ„            ÿÀW€"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?ìÞN£ïýɼC`ù÷þÏ Nikª‹u&I3©Óñt$TÖº`F¾ìOºßwqÛüèNÖ“¨žØJ‹€Þ`kõ#¦¼3ýÉkÄØ©MK¸ƒÈóáÿ':j~:þ 8t‘þ¼&k‡äg_ê§…¥xH0;ÿ$”Oo„(3£L÷„ÅœéñC-:ÉüùªN:H05M çAñüTLŽ¸íø¤5]ÓæžIÓ˜øÀÿ¾¤#ÕD¨¬ædOÄóóKoÙðGþIÊDÎîEÀÞ˜:Á?÷ô‹ÜOŒq<æNH–ê¤øµ;@äwøŸ=5@”…ÛŽÓÉKãò=ÒÖ)> Iÿ`ÿÌS?ÿÑíGÂ>ïáíKãÁÐ%˜J<¤ü§þ—½5*çŽßT- ‘íž{ûêž¿Ý1 /0<'ÃDAQe¸Ódþ_ûúmÌÏÌHüTCñù§T¶ÁÒGœIOYCºæÏ>d«¿ÍQƒÞ>Üœ©ûÓ½ºF³þ¼ûPH®ŒDò;öñSvG†¿ùÊ‹ƒYò”k¡óãþ¥hËsOûgÿ1O°ðPÚ)M:ù÷Òò’’–ÓtûcîÿªRüîxñÓà#S$w×Oí&k‹fLxiÏù©à­d#^Òxî©@t÷>cÃO¸DÇÀ»Aß>?×úÈIQêTàFž qÆž|y$Ob~ýR™S¯1¯Í(ª]Ö Liæ˜qãà:Žéâg vˆãIû‘%Q ÏÏùS!)øü¿¹Ô‘å¤~)kÀÔùJbå½£˜Sþ_>xâ˜GŽž_ìIOÿÔí{|üiÛøGà¾vI5/ÑZÇ—à—:sÊùÕ$”ý¤èA?÷(~Îé"<ýÐjLð‘‰×Ÿ”ÿßWÎÉ$Tý'óÅ Ûçþ¿ôWÎÉ <ý Oš—Ïð_:¤‰¾ª~Š>g^ÿùË¥#&c´ÿµ|ê’ ~‰ÃåþϤŸ^úéßÁ|ê’JÿÙ8BIMÿþ'File written by Adobe Photoshop¨ 4.0ÿîAdobed€ÿÛ„            ÿÀ–Û"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?ëîí#ÇY $’~Ÿ¹MÒxÖ{¢Òw°cÄ"J€P,Hưtà¸v˜Rg€|‡*PØÐK|üSIK Fèñ*mqÒ†°¡»€Û¡Ð¹1†8†³åÏÞ•ª‚ í|4øh‘ííøÊÏ´Éî8…!3æ|S¸–¾áÉ3å— †‘¸öqR"Æý1 ñ &$]©øÿBÂ@÷t'‚>%8Ó]#±&:éýóý””¨ó÷$#€5ø¤%ÜA#™)ÓP<’R í$‘È$´ýá!.|ÇiHj$À”­IŽOdµ<’Јú>QÊB0ÏðIJ˜?DƒçÄ$Hä™´„¾Só”îõXx ‰ ]&–Ò 8Oy<' †Éмùè†HïÏs:)np0;w‘òM´ÓÏä) {üu(ŽcCG3ÈMÚ€Ò'YK‰4³\Ø!Àψ:…“í%Às$5IÁ±¨ânqilnïç Z—cp> õñëÝD4;GhüªZ~àãðG¢4·ÿÐë}±ø•1íoŒÄ©ó¤<Œ„ˆžyùâ€VkNítµÕL´iyB€«d|F¿à‡´h;L&¸~Ý€Ž „ö–ý‡ŽÀG’“^Ò$Fšm¡½ÒtÒ8JUJbIû?õ(06ƒ¨áÇ•@ÖÁ»¿€ü®$†½ãä’˜Ëgq>ï¿üå&¼øþÁ!¸ðxîG ‹HÖfy#ºVªd&yû‡)ý¾åÏ⣤j>IƽˆðîŸv´ŠQ“©öŒJq#’>)Aî>:„ÐÑ£‡â!$(ë¡ ? Jq'Â{5L#‰<%&÷Å%/$øÈ庂¢KG‹×É"øÑ¦ß“Aï¯`4ÓŸ¢|Sµíi`5í.u?ÙKÝËxýã§Þmu2°gt“Κš¢ÈÝï2;€?Š‘5†ÄI>GR¡8‰ððIIénà¢uàþì“,kí> ½åÄhÔ“¥V¥XÒ¤ñÓæ I„ÿ'TŽØÕš·“?ë¹HAÇÀÿ°¥‚TÙíáâ¥ê>|>×LAò ÷%#Äx'¢ßÿÑëdÄi±å 4öûG÷§‡rÑÏÞšcYù° NZ­; žý”HtÁsL| Á.ЉòiL`ˆ$øÊTX¶ vÇnÿz'˜<ÿŠÓ“íí:)´ÌÄ}ÿŠa\ óðqð×Dˆx÷sáBhŽ}¾z$‡ç{7Qÿ}M´±uk~!§_í$&}±»Ãý9;šî:ÄîQ‡w?8IK·˜‡x„Úˆ#°î§¯ÓäDó’Ú{6~Çã¹T°â[ ì½ @ö'…=XdOˆ1¢m\ »€Ÿv´ ]³®£å3ù8ÏÈŽé"&|N²¤Þ`ø¢JÕf³¼G’—Aó×O¹"Þð„ pLø-rŽá©÷yù%«¾‹}¾ :|ÊA®Hüû”´äèïÓîIL}ÃFæÞSÙ5ñ)üOÈ&#C®çxFÒ’‘Úf£Nh?KF Ñ<4ˆ"Oh>|§j »¾°ÀA*lÌh‹“ëÜÏŒL§Ô‰Ž;ŽÈ&Ð÷á2œ±^dÈ<Žýɦ°Iù'Ú?Ô$§ÿÒëtñÜç~ H°ó#OÁ<÷0K^FƒÍ9jįßäž K¿ ¦qâ?”JQᧈRSûuw:èS Ú xª™>dÚuù(÷†GþJP+†Ì˜ðL5…§¾ªa®'H'ÄÊE…¼˜üãü”ÈÞþUÑ+m#ó„÷ l>Rrìˆî”6>Œ§ý$5SÒ4àšc™Ždj‰1âGÈþUZÖó|4ŸüŠ"Ól xø‘ùBƒ¡ãÀÿù=Ι¯`'¹:”àY¶‡{AÕ?¶a¾ãÜwPl‰¾)¶ÑôIÕ¸cæÀð™?Šv±£èË_óÕJ@ÐGÌjRÞÃ_žHÔñáÁþÊ-‘Z>g;' ×Ä&‚vâ'R”G˜òÊŠí3·QܪQä>ó÷¥>.ãÀÿÕB[›üŸ )ÿÓë` vÁûÈKH#»Ïûõþô¤N€ãñNZ¢|åJÞAžÉiÞ|âRÛO/÷¤¥ýÆt$ùh¢@:¼½È×ò'»P—¸w÷w $¡ºÑµÄ´î*aì{öñNÚxÄy§nì'ÄÌ&:¯dmx:‰î£½Î<’|õNÔÈâ[üe-²` p—¥LHtÁŸ’Ažo˜ÔüÔÀh%ÍóÕDÌÁ;~z“H" ÝàyN(¯Ý’è9à;”Ñâò:>ûwNX¯q:?z^îD#þÄÞß~ôú|G‡1òIKû¢`üt Mžðá4«Ø>Iiãþÿ½%?ÿÔëAËD}òSË£X>]Ós®­ñ‘ÂZỎ”å«ÉBGÉ(`àSLp¼RàâL$¥õîŸrg4ã¿‘-8™øR;kùJ`~–¼ñùf|A>hn}Î’|5üŠAî:7x÷ 2†[Œêg·œ&äñíüÓþĵ‰p?œ–Ÿhöâ$ •ŒZ@öI¾îžSÃ@Wxy§#Hi-íÇÞ’”I2L‚‚K¦1áÇhiñ÷ähcOŒvNT•‡Á€/ú*N7}ßr‹˜ú:HÝ0T½ ó¡ò }ɧu=¤h>Iµ ><)Cwiþqì”Aýéðþô’©Ÿ{ŽéLÎã3ÊN»‡ä)‰#RÓðrJYàè#â‹vKHü×h³È…0vŽçÀ Sâ´•õì?‰<|Âhð$~R—·À„嫒㤒;ˆKßàð §¶ƒÇýé?«äé?4”¿™âSkþ±Â^Þ{|ÓHñÿwï$§ÿÕëIž4ñãñ Æã 1çí«tð&#p‡}À'-P.àžAKt$úÎû©§ùR<#ò””©tÀ>%>¼~^?ÙLb`vä§çC¯Ò Jc!„ƒÞxOXhùÞI¦£âB‹\ÖtßðM]²['sOˆå {IïGQ >Œ~TúùÏŸ)‹—Ó§hå<É'Äh—Ñ’|5Œ¤>ˆ‘÷D …¸¶#Ψ.q=ÃÀ„[Æïˆÿl!úS>“ãò£«&;‰0€B j€0† 7O>ôI1ÄqÉB{¨l³¥ÍÔ{Go¹0‡·Žû“‰."5x~ ŽÙ ð|W)¿º9“Í9%­>渉Lèt=¼JƒÝ¤4Ýã²!JÈÔxÄ•.?Ø¢Àbuø©|I$ø‘J¦~†…/q$تˆ×·‡É1l™tnBò|œÞ>ôÛ'°å>ƒBéóM'‚íßôBJPÝØqÚFŸ$òïÃðJI‰t5Kyð?‡úÿm%?ÿÖë|àG4HN'IþÏ)Déǀ§‘ã4'¶žÁ4‘¨Dÿ±#ÏÒ:ùµ%/©àÉðþäÚq¬ùh”Ú#ü’R<@IKùÎãæ¢âá¨<Àå<Áó¢bôšK¼ÿ¹"‘¤‘íÐyŸîMpXçÄ•¼ðcÈFЦÙ:ƒ´ž4Q.v˜gö'&paDƒ»‰-À§’{ÈýÞPS $È iܨŸ0ìyKníxðŽ@HHà@ýঈ °î¸$58.ƒ3È=È×S>QüT™kÈíÚ'Ý1\Æ‘:i¦ƒTœ ¡#¹)8ˆ$äžGއ“ ‹–Ôyw ÿÎPÉ%Úh=ÈS’Á¡.<¡Î$é'Ê?è§Ä(²ÓHãåùSËO`OúöJ èby¡LGòxï OX®9¤ðA„€ÒtŽçT¤žNà?ײQÜëÇä!%/Ç ÿ_jRy¿ŸÁ!<}ØS|æ;D”¼fGr¹6áâ|;ð–ƒSóŸö%>i)ÿ×ëˆwyv„Ĉ‰ŸoQÜw”åÇ‘#Æ5NZ K¹‡|tMå¬xBDO<öìSèïx<¤¥´gàûÏr~0˜ÍæuzD!åþÔ”¨iþîRÚÑ©?©„µ˜€#ÃûÒƒ¡2JbæÏ>ãø…&¶ #À¥- wQ1ƇÄvM\ VÔC¸Gà“Ɉžy·9§¿Ã椑ÛÄ&ˆÙI*1 LžÆÎîaÞܖú¨I’DþOŠ‘c)kðˆI®ÚyçÇXÿ57¶#éšQ:4}óæ „·¹Ÿ"A`h$i¨¼h6ŽÜIà‚`ŠõȤ™'ã§–©üΧ»‡!8²&J[؃ò1÷©ZJ‹tÔ˜ø§ 5?Öÿb`ZOcر#¦ŽÉI y'Nþ_ÕˆL\'G.ŽÉ9à8#MÜG‡))~u >ésÌéäš̉üãÙ#HxêR†œø‰ü‰äxþD žyQêýÝ’SÿÐëÎþó|¦÷áá·…óâIË_ ½Äö‰KáÏp&Ï©$§è#'ŽãXN&jÞßêω$§è9ÁÛßýJ‰-ðñ3¢ùù$”ýÛ˰ì‘:{€Žóôò+çÄ’Sô Hì$v‰S;ûÏÏŸí/žÒIOÐzùÏ— ?ºhÔ¯ŸIOÐ_|ư‘Žüwø¯ŸRIOÐnóÔvÿV¦±1ìð'I_>¤’~×è[¦€øL©‘Ç”ð¾|I$?A’#Ü4þWÙ”„öÊ%|ø’J~ƒ÷÷×ãüR÷juó…óâI)ú X“ïKNÓsŠùõ$”ýíÒ{ñÌ…(äá|ö’JÿÙMHonArc-2.6.18/logo/mhonarc16x16.ico0000644004705000001440000000217607533544061015725 0ustar ehoodusers h(  ÿÿÿÿÿÿþþþþþþÿÿÿûüüûüýÿÿÿÿÿÿüüýûûüÿÿÿÿÿÿþþþÿÿÿÿÿÿÿÿÿÿÿÿþþþÿÿÿýýýþþþþþþþþþþþþþÿÿþþþýýýÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿþþþþþþÿÿÿ²°ºÿ¸ÁËÿÿÿÿÿÿÿ¿ÇÐÿ­¬¶ÿÿÿÿþþþþþþÿÿÿÿÿÿÿÿÿþþþüüýÿÿÿÀ¿Èÿa‡ÿ!¹Üÿô÷ùüúú,¾ÞÿcŠÿ¶¶ÁÿÿÿÿüüýþþþÿÿÿþþþþþþýÿÿÿþûNyÿ­éÿÍñÿÄáéÿÒåìÿÌðÿ³îÿCtœÿÿùöþÿÿþþþþþþÿÿÿýýþÿÿÿæßàÿu©ÿ«ñÿÉïÿb£¹ÿhœ±ÿËïÿ¬òÿu¬ÿÜÖ×ÿÿÿÿýýýÿÿÿþþþüýýÿÿÿŠœÿw¼ÿ ïÿ±çÿ/ˆ¤ÿ2œÿ³èÿŸíÿ}Ãÿt‚—ÿÿÿÿýýýþþþþþþýüýÿÿÿ^l…ÿDƒÿOžÿhÍÿaÿ[„ÿmÐÿMŸÿH‡ÿRcÿÿÿÿýýþþþþýýþÿÿÿëçêÿ5^vÿ”¯ÿs“ÿY‡ÿ$Uÿ PÿX†ÿpÿ•±ÿ,\vÿãÞãÿÿÿÿýýýúúûÿÿÿ›ÿW…ÿÖÿÿÁíÿ˜æÿ%_ÿWÿ“ãÿÀìÿÖÿÿ^ÿ€‘ÿÿÿÿúúûÿÿÿÌÉËÿ.WÿxÎÿƒÖÿ[ÉÿZ«ÿ]o‰ÿ[k„ÿ$_¬ÿXÆÿÕÿ}Óÿ,XÿþÁÿÿÿÿÇÇÍÿFmÿM’¹ÿ;b…ÿCsÿFxÿÊÎÎÿìïðˆìîïˆÒÔÔÿ"KzÿBsÿ8_‚ÿP•»ÿGoÿ»¼Äÿ7=Tÿ*oÿ'l¦ÿ@WgÿxŒ™ÿâááÿøùûòôöòôöõøúæåäÿ’žÿ?Whÿ*m£ÿ/vÿ05Nÿ½ÂËÿ™›¨ÿš˜¤ÿÝáæÿÿÿÿîñóDæéíÿÿÿÿÿÿÿèëîÿíðòfÿÿÿáåêÿœš¦ÿ˜˜¦ÿ»ÀÉÿÿÿÿÿÿÿþþþÿÿÿýýýýýýÿÿÿþþþþþþÿÿÿýýýýýýÿÿÿþþþÿÿÿÿÿÿüüüúûûûûûýýýþþþþþþþþþÿÿÿÿÿÿþþþþþþþþþýýýûûûúûûüüüÿÿÿÿùŸñðàààÀÀ€€À °ÿÿÿÿMHonArc-2.6.18/logo/monicon.png0000644004705000001440000000075507451276301015243 0ustar ehoodusers‰PNG  IHDRFBÆõHPLTE$‘Ù4-#&-W.OoKf2 _E1$n¤–ò$‘ÙHЦ‡T'°S¤bÚi¸£—“UÚ˜ò°øÐÿðÆ¿”4tRNS@æØfbKGD Ö˜ IDATxÚe’Ûv„ E†DŠ@þÿO{°]ÑæC²Í„‚[œók$  ۬žäESÚ”WàF+ë–’Š§ RëÉÇæ ŠÅmŸµŠÌ‚¢'¨‡‹=•¯NpSI© ‘cR¦Ç2{\X­VÕ¯PxȤ_ ß2rJäéÈ$bi­÷n:Ô ­ ¿!Ž…ÐžY†HÞñ!óa ó’ËÈ æå’S›ÓØ0¨uwšª•Ôö±×9r¾Ó9µÕ¶¿ŽnvŸxšVX?ÆÑçFî^¹}}­šüƒ†Ôjk¸ç)Û£0}±µÖ°´ùsÉŒ¶P4~ÎtÝçëmdöÿá|2ñ-?ö EšEjNæ.tEXtComment Imported from GIF image: mhonarc.gif.8ñIEND®B`‚MHonArc-2.6.18/logo/pbmhonarc.png0000644004705000001440000000517707451276301015555 0ustar ehoodusers‰PNG  IHDR–2‰RÒ(PLTE!!1)9)B1J9ZBcJkJsR{ZŒ)Rc”s­{µ{½”÷!!!k¥!„Æ!ŒÖ!”Þ)))!)!!)Jk1111!1)9999!9)91BB!B)B9BBBJJ!J!J)J))J9JBJŒ¥R)R9RBRJZ)Z1Z1Z9ZB1ZJc1c9cBcBBcRk1kBkZs9sBsZsc{9{R{c{k„B„R!„Z„c„kŒBŒkŒs”J”Z”k)”s”ss”{””RœJœ{œ„¥R¥c¥„¥„B¥Œ­R­k­Œ­”µRµZµsµœs½Z½s½{½”½œ½œœ½¥½ÿÿÆZÆcƄƥƽ”Îc΄ΥέÖkÖ­ÖµÞkޜ޵޽޽œç{ç½ç½çÆçÆïŒ)ïœï½ïÆ÷µ÷Î÷Öÿ¥BÿÎÿÖÿÖsÿÞÿÞœÿçÿçÿç)ÿï)ÿ÷ÿ÷sÿÿBÿÿsÿÿŒÿÿœÿÿçÿÿÿ½òÕÚ6IDATxÚÍY[ÛÆÖHͲ-&é`Æœ’Ù-ñ¦,“Ùh;‚Ó%¡)™ ©›u&uíáQ“‘•²ÓX–lyIÖ6v7hšv¬ó?¹û)ëÇÉ&ÛóìÁºO§ïîÞ{¿÷û$@`hxhxøP^|A€§cß9TŸï¾x¬Oí;Òß׈~Ž~o¨_G€ÕÏ÷‚Õ/ÃuŒD©ÏÒÃ7ÿÏýCRb HÁÐÅP(<;ƒA|/„ç©pö;ã:ã­s¹{].îÞ.ó0¶$–“¥ÒbrC_xs*š\,•’rØ{§Ü¦Û¯×½‡[çåVk{|y1dŽ -.o·Z²Ü=Ö¦?vm´—xÚGᆅؒ‚rr{;²,ËÑ ¾ŒÊòrd{; º7샶åìMŒÙP(m Fª-’‰G±V,UkrPŠ‚ \«UKÅjDrvîµTÛºš‡Ž»@lI±äž©-ÄW$Yoµªµj2,†“µj ^%ì²i×BpTÚ#2q”Ú’iBêÌÍDÌŽ#r?_«ÅR­š¯·êu9ØYøÈì à%@Ó$W6m±/°²@TnîìííÕ“b²Ûæ®áäSÂÖ¨ØÀÈðÁx³Ý’¬l™;N¶€–!–Í|De9¿ÙÜÛCµ¡‹L\=m“6‰RÒÆ_@á¶Ýt…žÎÐÉD|\ŒŒ‹‚œ¯ŠùbD"‘‹=Ë O[E6ÕSç¾Ë´$ “['ñÜ¡dJ¾^ê°­W“¡ƒB—¶:‘VÅ´¹¦=)Ý£–©-)TjÕ«ÅMa³õ1LÄ|ˆ£÷nâï”ZM±L´Ü¢i+Ât[&’\¬·š›'—÷êõÖ}V³øBïÒçèáËŸÈdËÔþI¶ ¬½eqy¶-Ù{Niõ^Ý0§=t2`Mœz ÛbØ>ÿ]orRœY)(–ÉCVm¡'P©Ùjî@k6‹AN˜x>Þ‚é,± ZØúA¤¾³Ó„F«¹[—¥.c»pÃôó`¶º…éŠ@iAŠËúàñÂÐs¡çl8l‘#Éc# ó‚ç­§\¸±°ÅÆ[_šùjõDæåñܬ9ª¼ó¸ïîßßšÁvüÛñ™»·æ yÿ|t„¹|\}çU÷0Üjumm èÍ¥-û&£þà=¥Ô9šÆ«g™ãúÚ•8'n¡ÜÚŠÇo¬]èX»¶\;Ö+ógÁF_|=ÊåTZºšR˜×úÚ¥¸#Ô@´y°¿6Š[7â½ËÑ–Õ„@SÓÐ~¢^†(q¹4s%ÎFøòµØÞ¹÷‘hŸ¤Þ|EILÃ`ì?œ‹)³…ôÛ’ý ‚cŒc%5ÍOR1Bêýི®é†¡=þê_—pH~ý»êJÏëKqÁ‡Æ>ŸÓ7n_£Iñã?Œ X³Tš†Qx9FVk~>ýCØfÓ¹¹´äx—w%‚¤ 5ž¨Ó¦ÖuMË•U­¢ªê£oL£¬”Îÿbdº~Zð¶0* ß§¹ ÎOœ›€ÆjN›¥lés“1<êé¾FŒLÌ,§–*ïÌDL”•¤!± ¹ÙùÔB*•N¥s™i„ô³¿Ä訨à÷#mAXxTB°ñËý;1ìSyX Q4ôyÒÏÒŠe}çû–Áe…¦©Xë†:;«L&”Iå•÷r¤”ýóêKÁ/ZÙúóÚ•lüñÙÛD’ÍG4І~3A343‹Ìá]å [……Ë@[ˆ‘¤ÕŒy°R¦]=G{ ¶Dª-¢¨—|ƒÍÃ\¶‹ÀãoôE†À‚¼aËVNm™h#ŽŠi##ÁbJÈ3ÁÒmVÒ“é‡WiÁgc‹Ÿ}óh¡¼³ ?•ì»Ù 刂ihé[ÉD4NSõÊex­i„-ͬò@×1Ò[çüƒd;@DѪ­5¿™‰Å …6…_É¥Q ¨,[¿v. cUHt&‚žyåÄ˱Žä¹™ØãÍÝëW‰ïåîsöØ®o§ÞË{öy¬è…–ßáè!ïòG{ý>ÅyåtŸÜëò]]ù%¹¦ElŽäøßz¸“vôOè_QÇ‘ÇA¾ÿ¥ËðÝÍžþ~áxßÑcÇ^èCÿ3ëþícÿZëöåvØGÄoéïÿQÛ¡c9›OPIEND®B`‚MHonArc-2.6.18/logo/index.html0000644004705000001440000002314107537547343015076 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-2.6.18/logo/monsmall.png0000644004705000001440000001551307451276301015421 0ustar ehoodusers‰PNG  IHDR d6h˽Ö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<‚>ŒF„L†H—L…TŒV‹\˜Y\¥U¬W­Z¦Zµ\¾_±X¡PŒf–d›el™mžt“ts¤l«m«s¦}§x½~´|ªv†p+ÃbÆdÍg×lÑiÚmŽxTŒyg‹xm¬…­‡·‡¼”¼—Ä…ÎÉˆÕØËŸÅ›Ú‘Ú—Þ›Ö”âžÇ¢Î¥Ó£×®Ü´Ú·æ¢í¨õ­ù°ä½çºû³ÿ¶þµìÄêÅôÌøÍûÓûÖþØÿÚ÷Ò™ˆX—ƒS›Œh“‰x©™g¬šx±£t£‘`'_ˆ,f‹-c‡7l‰.m”*h”2n’4s–/r™xµ+y¬&|µ*}³%~º2{£Ir‰'‚½*„½,†½+¸!†É&ˆÉ(ŠÊ)ŠÉ$ŽÕ&Õ$‘Ú³©’²£–ƼŠÃ·ªÑÊ™×Ò«ãÞ¬êæºôòºýüÊÿÿÚýüÔñîÇÚÓÉiµ¤0IDATxÚ½[ù_g§M˜Á&'@‰P°mCåH*àšµº H=X¶[.¡`¡ X¶)ˆ-Š¢"TQP´€ Sïõ@t)T±+G¼P‹Ýÿ`ßw& Hh?ûþ’Ìû>ßù>÷3ÄBk¸b¢££?ôöŒŽZý‹öÿ°~‰^éïý!30þÛÿX0Þ öu­]ó®‹‹Lîãìò¾‹kDTtWïÃÁIN~ÜÛ;ù—£G>=žüË®è¨W ÊÙ'\!sqywÍÚ®>ƒ#ÿ­8ÔåêHXaùõÿ>_ˆ±X,C¹Žï»nX{÷á|‘.àbbú&‡×Ä»DA8ôðîÚ ®ï;r [øü¿×åÌŠptêaHÓ3ØÛUèÏAXˆÿÓçWãI„5ºPÜF»µgÄÇ‘®®ÑÝÝ£ïOÂâàýèÝÝÑ®®õl•Ùà蘄Œ¿úü©?ÏñºÞîŸÈàãÕ³1¿MBEmäRÕãc±„û‡‡Ÿ|ºµg<Ž_¡6†z¢oõÃ×+ÞÕ`߯ã k°gë§O†‡÷ B—ÊmPnòÃf¯»¥1;çh”<Ñ£¹‡ŸŒŒü~EæÕmˆöQLô##ŸFÇ<2zyw”‹ìÊï##O„ã!ÈÜ`*0çtN`°S!m±‚Ÿ ÀÝpynó%¾’ù¤ÈφmõÑ«7/ñÅ œ#ºŒB¼ûñCìûø®QÍ÷wE8/ó½|óê#+¶Ÿˆ¤¹ñ¸@kÄçÁ,C¤8Æ`ïÕ8ÇMî,ÑÓÊ HÉÊ..Þ]\œR:|=ŽôZqe³“‡—§—‡4¢ÓÄÁÎèq÷GwÃ×ß!¥rÚ|e…w}¸4…”•ÀC‰OE,÷MŽqW{'08°åLÈaá~îèü”=ûtkÏ/F^Å{xzØåàéééåaLò`Ì}ÃîÇ»ª3ÂÙ âO‡Æ¿yñ…^VÊ|ÔÝgq„Ø[ÆÌVïÅë9~BLîŽpSJö­Œk##Wà¡à®ííí=È¥—®>0Xz¢ <õqtÏÄkú\½´”¤Ž¡O¼22r-C/«$…‹¸Ë1¡ÇqÝØ&}ìIPpqéS%Bl§–ìÙ]¼=éÚË—¥žôKW®tZñú÷k±I\×É|Û¹nâ±×~½ÂiåJ©Xw`éË—×’¶ïÞCËÛ@ ʧRœ«HÐßžžÁÁ;ñ–ôÉ&ŒäÎÿ<##cû—ÛRCC$Ë.—–. ñðô‡¿xùìÒµá>ïDM ±çÒà­ öE½ã~ãÚ¥g/_„‹½<=€Ñ,,-½¼LšºíËí@àçó¹$¶é‰”%ˆ¿£?‹‘IFð@,’JãVD ªº¾®¾¾¾iÇŠáW¿?Yèàáà%æûßxùú’io¿`õÏã÷àÝŸõo~ïÁC?¯^`oO:ù\zýò†?_ì\øä÷WÃ+v41uõÕª@ÂJÄã(/â¡~'3w*ü ÞÄA$U­géu:÷úÈÈ›ýö@! –ݸqíòB±‡½­ØnÞ­q  ÀÒŒÎ[lí=Ä /_»qcÙpœýþ7##×sOëµVIΦ` EüLka0¨}¼E†!éŽé£øÎ¶~ýldäÕ èÀ‹^üöf8œg/öpàóíùïDf¿ÁÛcjí¹m$ùwÀ¾ƒ‡Øž>üæ·‹ +¯x52òìk½¤tu'“maú›A5ópÇ•ñ6DXÝçΞ=w¦îXÕ_ž ¿Øì$vpð\péÕo×xyˆ€:ðíœæÝ1ÀÑykô¯[3xgž“ŸÚ$öðZpí·W—x:8ˆ6¿~ò—ªcug ¬ë›x%ŽsV=dîf2Ôôœ/@¹¾i‡jо¸|ãÆÕ'O®.òð²³Û;­¸´Dà.|ÒÞ´å;ßd†çÇ·ûƒZý7ù¶¤ƒ=É®bÕÒK+œìÅvv^‹àÙ7n\þ¢¨æPEš/Äs䚇ƒÚ¡®X!† ´ˆ÷ỹ•‚„ Ö«e h-,½ö¯Ká ±˜Ç±¶%"™éöV7ýÚ}‹ñá£H'Ò֚Ë!í`{ø¥]+]¡Ç²WÔñ¿—º¹ñ}âAE`˜0¶ËÐû Öìb‹#ˆ`ÿS?Å Ã:ÁFÕË¿½ùíÙJð‡ƒ—ƒfäÚÚE0 ñÞúõÎ=†ùEØËH;pSv`#Àµò8è2ŒÔ>W(ÞìÇPÔïé~‚à¶.ã}ÏA"HTg~6"¥ü@øæº¸ìÅë×ß;xH‚³²²¾J 8@ölW½šûÖSª}¼~,Hößt î‚t¤|¶%I<¾ýúÅ2ÐÃç:<ÿ…ÜF)²ñ(JFŒ^ã„bVs „Ùs¹üÊðËg2¾X"ñ²ã/úh³8 S—;÷f%J€aY[;Ž©y0¦{¨¯o¨{, ?Št´¶æ*IÌÚ«Ë·™bŸÍ-âÛyI$b¾ìÙËá+@Ìs/ÁY=1‰þg@mïj¹ ©PìWgÑÊ/’?OÌÈþ*11199@’ÅHÙAÞ$(0rôØÎõ·çÍ»½~Ô‡û"Á—Ò;(›‘ܳ$ÉÉà°¯²3?Oþbå"BQ ÒFw# ÅÜI7!ÒŸƒºeëß·;9q/ãížHxÖo¿m¡Cøk„Ž;EüªÃa÷öÛÖ<É?ö0¶ìMLÞÍx›í†rüI‚."O¸c¬’3 0Ä{ófÙ¬Xs8£Ìã÷íNÌ`°HLô¶µ¶Ö!\ïÈE®ãúA>kk[ïÄlƒ ‰L|ûö Î沬6³æÝ3Ò˜gˆŠ Qç8sˆDÆÝƒò&#Àá¾’Ì`‡$•=ûæá ÄðyîÃøy@¦áÕ`;(^ZH$€A…Â(ã­—Qyç.”“,÷sú´’=YéI!aaI¾Û dîÛ$¶A€°Weaà#€ÏVd@(¨|“ÂÂB’Ò³è kßÞϹ,)ºÇ}f¼™„Aع’rŽYñ ½Y)¡ayªªºú¦£ªÐ̽†%$…pp Õü k)|¤ÄPûöf†ªŽ6Õ×U©òÂBS cïâYa¸@NºNÒ`MÊ ÐòÍ9\ç p" 1%9$­ªI—Ö[«Ó‹Ç)Î×ÞÖ¨h-ä®&bkkï;ΊӪGÏhªJ INI pǹsnN: ˜ŒAh‡r?T¨tÇp®wÞ±3gõ«© ÉDp8 S\K@€ÄZÐÃr ‚ ¤/© ‰qÈ™cyÞ\sW Q?yÔä”I&µe“rÆ„ 84žD fP…¬aC€ì5 *§^Hß¡VÃS΄a 9)ÀE›¶L1=™œAàˆ[ýq‚·ÿ*‘{vü$¦@Þ<{Í_iüëšÙ†Þ[RœbH½r‰«ûyî¿õáä¦bT_.˜Ÿ X.®šp6°ÄÔ ”q!Ò‡CÍ$ŽÏ¸`—”ZÝ:ñŒ*±œfrÛj ÈɈ}ÚáÉ•|Ü›§tg?ýd`:€Ó2¨íI²D¤9F¤u\¸ÐÒ°+lÁ,€È’ i€da ðÎZ¶«¡åÂcûr,¤D,iBÏtÒ§gÖv(2{;¬ÝZKÃᆲÔÔOE 2?%kÔ‹³RæÃ¬ÌFHÏÔÔ2pa‹!Ìö0ö¬Ùj58-ÀéÔö¼+ ¤"K2¿EgT/œ<¼3-ăçFZ²é'*lB’YRìI žÅ%™‚M?ý`[’n<´‡O^Ýß’OZФ„àÝé 4AíPŒLY?Ë‚Òièh©Íñås­¬Øca,poP–¤ˆéžDœRê?oÜbì¶•—ï›SÛBб˜_ª”ÅLcLcPûpµbÿÕ`A¼sN´·ì q›Å|¬—¸»6^4@/ØÆ”ìNäY\†Ìr ÙÕÒ~"ÇAÐà«û«N/ÛA¨YõÁóR%°5KïÔŶÉX _I¨êtobÎbº¢^œCµ÷PÏjµ]œêm lSYúüƒUÓ†Sfø^xx¼åš–zͲA>u›XL—Ô9m9oÁßÐuqbÀ|7Ç[,)‡wŠÏ4•AíPW\œ€`ë™@q.IŠA¿—­+«‹“ŽkþI7MÿÔOÒU\{²³Aï&&I.Žê™g‚¸¸. Ðdµý‘Ž…—ÀÀÂIïФm¡¾ÉÙŒbuor™úâ(À‹ê²dæwÙɾ¡Û’B½Aí Áµ²à"ûMl"ƒÚ{ ’mÉæz'm+¯è‡#GªÓ‹õ€‚sÛ4ç—Зœ×´åtMÅéÕGŽüP”w'ysÁQ¤bº2Æ,ûc• E¼U5GF×ß2[¦âÔu%¨B×ð+Õš©Lü{¾ýalcÊA12Ö4 Mc°{Ap1ñ·z|GŽ|ËèÜölÅXãÎT`êÎFPPmcÜÀîok¾c\‚˜Óý'2cË vß_ê)*IkÖ´•Õ.¦Ú:|qmY›¦9,]¯äâ/`" a8Ë6æOdðÁR%P†#‡ô6X²=¬V­.?Øàk Úú6,W«kÃôc°âôC̽¡"Kü‰ >ˆÇl„‹B‹õøª5'ËÚ>||ÿÆö²“õA=ÂâÐ"€B,Þ4€¦1%Àœ?ÆQ–9j`_{ù)MC¬+´AרÍ©òvˆpÔL3Ãr«›Ãæ|êŒ ¢þD×ù‹8 Q ^HU^QuzV ìÞ¶'ç·k.^Òû.œ°¾ ªË_Ô´ç'o‡Ý^IVzuQ^•þæE ŽÈ)’Md°'!ÎaóT£V^”^ÕÚZ§JÏÊnZ›FÓœJ£iزܰ¥A£9•߬Ѵ¥n:3+]U×ÚZ•^4êc*±Œ3¡X5ÁÁõΫtqBEÒ¥© ªæÖ‚ ª°L­¹X¹‰µ[*/jÔe… ´ªÍ=Z] J;DìTº(Uˆ³ÌyýôŪé j{\6³r[ ¥Þ]Ô,èt| (XÓ˜Xìø¦«s‹5§³ë€­-¿TÎùÇàP…›vQj®ÙF³l®¦hj.º½Y)P Äy5”z©éÏ.øÚZ ,‡Õ…ï{{]X,—ÞÞï/À¾¨RX¯©ÚEï€j®Éƒƒ”›o›V+˜Ê ¶ÿcÒG¸%©hõž=w¨Î]î‚_ÞÛ ìî]~ö ÔhÚw…³Ô‚CçèɬJ•äFðüHÿM¬Le(yž”ƒ!Ü jÝ3ü¦uPdA¥F£®8[“Ÿ Ä,3ðÙIøþD…Z£©„ž­Û¡ž®â"G:ÏD›Î P²l6‹ªÑ ø~, ¦šõ¹ÀY› ©†ïðF-í$Ú‡©Ö­~—[OÍ* ~Ôk‚Öl™© 6ƒAmŸ‹%*Í•S¤‚ >WY:\{‘8´ê C4À‹µ‡!»P»gTE£w–'E-]úL•j:ƒÚ¡h™­ò;˜£y´#ï᯽¼™ÂS¹µÔ}[+)ÄÍ hNí ]8ï¨îÖ¾SÚÊ¢M&Ð µŸÊ•Ëi[:­:D9Jy5VÒÃÌoº{]!@×Þîoè¡ee#dUQrHEoÓr¥üÓN“…šÁ ¶7ÖÏݧ‚Óqƒ"ð"„Mnyo—#h;Ç®Þåô¢2©£°u=Нðq÷‹5©Ÿ3›ÁÁ(†Áÿ¨9w”²|ÀJ!àî|Åy Móæ_Þƒ6øÞ/›)¥Ó_© )¶?=ÿ;Ã8&LWª `|®-£''6jµ÷QÔù¾V»ñ=ã(«…»@¦sëÏ­óEñ©ŒÌœAíàF¤©ÏÕy$¤;vÖÒ—ÃÑÀ‘>ær?}˜þ¬vgÇh°†žŸ[&ÀxÌ Ð,µwQ”¯Ê ¡=¥u$°ùëfÀ-àŠ.GÇ.ð²Eþò8m±g›BrU|uœvª:Sµ½.„€t“èÌiƒ$êkå°Çxèê .1åº!]!¤·-GGaÄ.f¸ˆ™ >ŽTȤÜÔÓ:q Ät“We ¬§ª(]œäAøê2Ý-NåJeŠÈÇfˆ4A탧þ„o.­Â£9¿³M§ÍeTv fº}ËtzoÛ ]\i@Nö%üŸšÖ‹ÌˆAí%‡ªK&5°Ôœ(Tš #; ¡ºús{~.¤²9JóšÇà]gršá"šŠQkû®‹ya×w£–Y¡a¸Éé”3ý“‡?À`o‚ÌšW¡Ó0ÔbG9F`µjp!U³ÂdËVM³NÇ]øž}ü…[èªÄ@êVN-à¹RvÓœBa ‚t/ça,oÊë¢à…oºÆ_×õ.ДS1»Ù›…ñäñ±f¥¹™0j¾yŽ$Æâ„‰¸ì¸Ažc®±lw¡ú Ÿ…‘Žóî›+Í|µCwb—,Ô <¿³yTÃ,khTÇÍ «ú¢,biì3 pF „~Á¼ › ÒEi#}x.VÿTØÐ\è!lÂoøfÀ |h¢ˆí wqXÎO4ýüf#MáO9a‹¹ ‰S˜úhä2ÊÒO®:F,nž”À1 ›G@8_ýÄ”g‡ ƒð…ÜEî( [\vJ}¾p£QÕ m,<¯>U¶c¡î‹¸ÂH3#ôaþnÂÇEÙAøæ,‰˜Dt_Ä’_p åòüV͈¿™2¨Õþ’ ÀÐÙqrŒù#½ñ þ˜“ÇÍF1AÂLh;Cµƒ÷WÙ‘œ`†LцƒVÁDÁÒnÕ}s3Èehy]„#1‹ã²öÑä×lz„}ç£À$sœP ¬Ÿ~È$íB¢ñ÷Ù¬2 é•ûšÍ~…„Æ×¤Ü` 0&åy»<ívú^¤t ŠûM§Gë?VÙIÁ˜*›¼¼¾ùµ•éì[PÜó‚”>CxlƒÃRð;:`úL™®Âx«íÂÑ|ºž…†’7ž¢iÑgÁìú&Tí%HÐy )À@ô(4H¯ÊoÅMŠ•éJû¨g3È*d“˰¢Ìô³™~ ÊËt‰‘r0àñ¤ ß²÷Ð ;ð׫9½”û6Â@韃_|ß¡óÛrgú£ÔUéSN.ÖÝoiõRÏ ‹>uæ¹î?Âo´ ÙqW'iÑäQÎw RSž”J $Ì'ú» opÊýè\@tfhXdeÅäS6¥ùšÏ nìDQ×_ñ8‡fƇ©?²HCI¡s á©=1ÇáÌ"Œ”=Pþo®/AØ­M‘À¬}åú؃cºÃžw¾³#APr—4¨­iLYœÃ§IÃÉ)&[ÿf½ÿ]ÉYŸºÖ~YuÁ•õÖ‡SðRÚ3%eûü&†O’aè¥ì=|ÑJë 2“´%!¹ÆA~“Ø]µê2’)Y·Q\NáäÂ>!¥×> )*‚æQŠ¤ç”½ñUÚŒ‰ûKºù•B8úa)ˆ+éøðØ·Àg ®]sZñmÆ”h$AjAšu€|š6|I2ùˆB¤í’ؽ²êV õqŠ]øú"Iã¿××_¦#˜DNoe"%i2Î ½=…?²A¾„ÀMWê²ò ‹Ê4<çܕ擄!„dgy —øäÇ,&ÊäÓ ²Ùƒˆiméítªnf3Áò×Ùõ´¹Øªó¡ýåu•Ã5‹Wÿõzƽh1›}’Óé‰-ÑØþV)‚‰¸‹¹`ŠÎñZZ­\"$€0¿ÙÀ«`Ç-V|R)å?ù`{i§œç°?ºFùïáXÓ—p}H¢ˆû†=×g1i+m•S[idë> .™˜XÁûÓ èM™,ð —-ßS[Ö¹dÒq[¸¸±gÀ‚O73ã¸T­¸1sê­[‰í˜Ye©$Æü(µ|9ƒè’æ¥è=žr3sT´î±çK½4Mf!BÍ>*Ó%^óM_É¥™KDÕH#I†&Áœº™‹EW0°Wíg²wd’^Fu%¤¾vTŽå¦èÀX.öÑùÀ@–Šœ*+¤RäIG-dTÚq4,#ÌeåÖ8šbxêu£n™j„$ŒÛ:w’:,~´çqµ·”ä”*—\äÆmˆá¯$ !åÍvwäz‡Nµl¹©˜¶†Jn¥Aßo)M”9ÂÜŸX0‘ÞÂZ©“¯œåóÖaG⺀|ÏËË%ßý¥58:±ðT®“’ò<ßU²pJ^f—Þ` æ[Q=Mu¸„B±æ;Ì‹é@§%“,eÔ¢Ÿè-T-0”r Řç#ÿ‘/e‰¨ØA(<˜(ð&ÁŠÛ:tH®XÒ×ù..Ÿ‡ðqv1š’°ÌhÛH…sˆ[$*žÿ!¡+ÒE¤×Š›)QDPÅ1´Õ±˜LžÌ€#P›ÒÅÓeñt0nº|ùp Ò˜<[–¤²_ìT¹b•‘ ùñKg_•¤¦(ÏÞ]ƒõ?KAA Óé tûCÑ-"NýŶ˜” ûy$ƒêUi]XBw”÷¥ôu&ÇÎpVd­í"R?- ‰:¨ŸPJ¯.¬F‚.u§/ÒÊÎ Tš.ºàƒ$&ŸBø‘мÇÒ­R¨i)¢e0°Š„öí¹ÖåÅs) &UßT.¯ZÚÅMÉš ( á¤>D€Ñ•¶}(Í‚ÂBL̲¢:T4DûÆ‹xŽD*]Ú”-àQL#ŽK]’¬P›Ît"‘é’굊¯b=R„<˜¤ƒA†2³vŸT©Nne‘†U¶fÑ“C p‹iGe ­ k;ÞgrP=É椰Л"yž¬1¤L/h^9¶zÓiŒæÍÅ”Iá¨P†ydĶԅ™EW¨­Ø —Iмw"Eú3ÝõQÙÚŽ­™í—Ä—š˜÷°lÛW¶®—­ÞHº»õª²"]‰ëLQ°O‹U™“'¢×Œô0ÎjC2ˆ^ˆ¡;YM®GŠ:¸ï-Ä_J½•ÍéR·v­âÆ­’ÚB]îã{e ¡çQs¤×˜£ôª¤TÅäoÙè=t›¡”˜•<Ü)r±â³ÈE€4:™ÈƒÈå|]"ªºªCÕÃþýh¤¾è8Rz“I#¦{;ôA#¢ÉÄQÊ›‹öFH¯……çÊþÞžÝî’ó>áÔv¥·¬ì Ê®x¸Òȧeñw ™,RC¢CêÜfÉ ‘Æšæt%ÖèòL#9"­÷*™h*Q•q²)‚ ‚’íRwÓéY0=+0ùŒäˆ¶§áötZꢻš¢Í† [b2Lo§th?˜Æ'¦ $$ºˆ§¡«ù¼³DÿˆÞÖ†H#-¨>/L1ø-HËKRÇxœLsLe$ š^PS,+´\˜éèTPÕ]ÔìªG‚Ȥ¨b§ºÈ3m`ì‘c*!!Q®¹V…íþ‘=Y•V %ñö Sy`Ô! ŠDp›Êà{#ÒÝ©Õ:J.¥ ⪘‚j¤°‚ˆŽv¸!푆 ®³Â{qõÚ47hsHW!è¨æ”sew%ÕZw=Ò˜r8¼Q§.jú'Ç‘äjug`§!ep»#E!Þìíæĵ‡u¼ Rêj•L‡z·rë÷Ö# !(pVù"^qL)±M‘.ëÌÈ9ØçDÕÙºD¦m½ºˆ×2%Hëˆâ4P1¯J+‘0 ámºÕH'çJi‹¤¥Ü[Óo¼a¾ RäIgø ^=Î-Fjá ´)FÛö\åD·Aêñ6Ù/×eÖ2½§Ø"·B °h)Ôj¤ó„%ù±·Iâ=¶Ú4`5R¸¤:êJÅMEI¬4ðª¦ËàVHCDZ(ïÅ ¢¾SFòÚ+˜Ž‰û·–[·BŠp‹`}QkGS²á´­Çõ)½ôÜú`ùnUrÝ)€ËéÔÚ÷ÉôÌ”}‹tů§¶ë ÀºçÐmxK$ªî:âI%ÏôÜ7 òë4TþdVt.Þµ®¢:H]ªâ6EñîÝí2ÎôÌw’Øíì„Ò·ŸjÏÅœ­ˆuF_Öïà_ƒIÜW(œ‹<йjI_¤Ç~é*ó… ÷òP' #h¬¢Û"…K.Þ“‹ öµ“B#.ÁdàW³éßžv³‰ÁÉ©ƒe"Üéõ\öŽh%ª›öÝ܈èm˜#±†Ý/ë{ùÒOƒÂYKx½…ê<¼5Ò(ì‹48™ªhQªû“•Ò×”æ¶ ¤4‚¢4 .‚î­‘"·7GG÷hÞ:9/íR÷¾6Ù¿AâõÁO¥f‚òƒ ¬žê,üèöHÃVn{—“…'#D²_5 ùÏÀ,T©¡Âe¦BT¹\´¶î€éör$Þƒé¹S¨µom†Aš¥ÝU«ÔÔÛ›î`ª·ì¯yÐg ÒP,CÞ-_ñl½Í>û?øâȈÉF̬îÈe/XV•ß7@ŠD»ÏϹE"©í-6[¤ØVá”.By»ô²ÝÑÝv”æä²È“ÞM¾zÿ@-¼/â#»(¿T²DE餖îˆ4z5׺ԳŸ­ †€D£K@Ê~®K’Zw>w^©W•/.é8>b¤gqœ«Ÿ^áÖœÂé ¹nĵHãìcE.îÒòÙa?\H"¥øèyîËî_ÊΈRìÞ’ï:Æ,´„¹ýj“ê-~ÇHãœæPNƒ}8Eic€žïÞ’}ÂöiQ…(/$Ô›I9()T¾¦¨ÄÛŽ„}î.HcóôÕ4=®òrx†ÆÌà×£¼ ÷3'²¨jFjŠ4âF{µHá ¬‡°â°ÆrÔ"ÑK.»wDâ"U{ší¹¤·£3“Þ~VÒ\öZ¦}š‚;"9ëƒ{µH¤·¶Eê—4—?+‚Ê»#%g9!MÏJz{vÆŠÛ>*in{Z“ðï†4¦:Þ—¹~/³B A.ïb›œÄâ +¦ç¹SßSUp÷®Hp<©GÂåypò\ aXtJÝÝ i„…¼H¨·ãg'J¥¾8zQÐ\ Ý»!-ÊR ³“®©ã)ÆÕzv ÊRêÝIÕ#ádñI—7ºˆQsÙI¥ˆ$ï :É›·Î éäqéÝE^Lº`ÞpwDJ!Ï#뼎€ªËФøY^Lz/ôHUo¡ØI oéä×?xž áâ þwòCåë T#êÒ¶¸|š‹i§Ð™wCA†ÔQÙxwþÕ¡E¢€¡è„ïÊëá©l¸üîMVLgrÙÓm‰¶Èf ¢?™˜¯4*éø*Ž‘Pqâ#»z &“¬˜4m½RÔÁÇU½Œèñ4YÓ@“NÑ»´¢‹H1•£B^øâ½áÃŒÚÑ Í£»!éßiòJ:¥«‡\¿“Ù‘ÈÀÞÁ×ûBºƒÞOõ†^ðhÝ+$Ö!ñ£E 2 [úéäœôö˜†Øj‹Þ‘æö&ºÅ{“ØDÉgº±÷–H<ÉYc:ãÍoéÇ麸§JvGIšÛ¦}|;÷À^‘n2ŭϽé&a:7û™HV:¶j:ÛÅMºrw¼mUÓƒC³½#4§cOJ­±Ár@yÚhÎîdIT9t#¤zàQDHÀß‘€ì–,mô¦y÷å@4êác*ñ¶äâmˆã÷ô6 X3R=šÃÀw©8­×áŽsU½j#¤¨³K!ŸXoC#¢ÿŸ’|¸rl‘¸M²â·ív¼"õÖ…€&H}‰¯Q‰·M&Ö^bJ¨8Fâ¢&Ï)™¦ìu¸÷W©µzk€4Ô”ÄËà©íþ+2%TÙ é-ùQÄ·€0È˜ÞØË8-,Ö†€&H¿YC%ÛYXolJ/X,{\ÄB;N)ÑÜdJž«×—š!ÑRN¦"²I½ˆÍ ‘2⸸r‹nxÌ0ýdÍ©j²ˆk†4ì9¸n²}›`C0ÒC‹ôš‘©1YŸ1ÁŠÉ[¬×[$¼o!ÓýZ§|Ñd6O$šã,9cÈg$ ¿Ånmœlˆä#Ò$¯·¬uÏq)cß©æ&ˆä6® ÒNÉøÐÁ ;4fpVJCó™þÓŒZ¤uuʦHC_öl°Wý>æ´Û˜7-wkÞ”€Ç_f¥ŠW±PîÖ}!-DÇ^ëÛ¿LŠÖíòÃ:³&³ö=ùÞZá›ùŠí8"z®¶3®ñ šsÉÙ9x$¾98ðÌ›¤­ýõ\C¤¨£æsÓo8I¥±nœu-’¹ÌömüߦŽ\?Á5Ez$íK«·Ód`Fâ¥e‚İOòšƒYé÷{CÒJ›ÖÍ•÷õâ’ǬìÍDR©1lsÎtÒèÕ|`iÞ4`ôƦtfƇ)Ž&0e'9“Ÿc2š{#Ö.*7A‚ñžrÌÎ"Y‘t#*£‘\‰ãøëî1m€„åA‚1Ë”'Æá Ròªa7²±’“ÝcÛšâl¸¾$¸ š ÇÎdÝÇÆá`>‰0Vâ$ofNv­}OÚ(&AIÞ½!4m´>·3L‡5H#Þ·e‘׺ÿ›=ÚP½b³ÙæH¸À|0yN²¦tz‘ER2‹tò$kL“àÇÉNƒEå†RÍÛN2¶Þ…¶a€ž´´¶Äù· –½‡z»W)E˜>9³Hgé¨<ëR b·HÌkó½}Š©i³±"ÑcÑɳ 4Þ‰G„Äïß=³Qà"kLt§°IþÖ _¾#í£oÛY‡ÃD ÂÇPñÿãäC²ý¾1¦C|H_7Éßš#)ÙÑÉN‡³ÿ@-†[ôã‹8ërï¬1…BÏU³Ði4weòöZœp‚M¿P óˆdÿýrléP~§{¯HÃ¥Lps¸‰Ó“Ø€ÎyıÙÁè;Xu@Rl»à¶Ü~Æ}̓؇Ò|Ä $Iš§µÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿŽ™§EŠÖ˜é‰ÕhÎfÙzÅ¶Ú .S >±×‚ÆeÕlقΘèÞ+Vv‘ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÍÙà:K9oOŠOŸfÏjÚ‘Î5WA”ÉkÙhÒSªNˆRq›¼°×ÊñáÿñÿœÂ9£±½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ[k‚ (n–ËìÏõÖûâÿÏò™ÐT¢7&N‘ÌÉîâÿ×ýÐõËí}¦ (EUoþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÒÚá(DS†¤é¦ð ßœÔ·f¼iÙhÑ:(dÉjÝd½}·˜Ï¡Þ¤í§ía™ =»ÆÐÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñõ÷GUn$Jt·ªï±÷åqÈdÐqè\ºIj‹LYo€£¸;s8p›,bG™Q¢0cCRfÝãçÿÿÿÂËÔÀÊÒüýýêîñTcu+ZNLŸW‡@vž6oužµVey!$DBIbÞãçÿÿÿöøùIVp9qª# Ø’ÏàG`q.Ofl•¡64t‚‘õ÷øÿÿÿïñóøùúÿÿÿëíðÿÿÿüüý…’ 92bŠ˜@dx5Od˜ÏÜ+¦Üz´!C5A]êîñŠœ¬!'D /`zÖ‚ßeªÉ:Zp>Ks†Jk€£¬¸ÿÿÿÿÿÿýýýãæêýýþþþþãæêúûûÿÿÿÿÿÿ´»ÄLkS|Ž"C'Gbq®ÇƒÝ€Þ 5k"@vˆ›6C]#%B,V876JiUr„=Umv…˜âæêÿÿÿö÷ùñôößãèèíñÿÿÿÿÿÿìñóÜáæòôöôö÷ÿÿÿêíðŽ ;SlVvˆ9Lh7|8„,Z(*G0:UÁÈÐZdzFUn18Q,/FY]r£­¹ëíðÿÿÿÿÿÿÿÿÿÅÍÔÀÈÐîñóÿÿÿÿÿÿÿÿÿÿÿÿðóõÉÏÖ¾ÆÏÿÿÿÿÿÿÿÿÿòôö«µÁ_cy14J+0JJVoQ\t¶¾ÇÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿMHonArc-2.6.18/logo/mhatitle.png0000644004705000001440000001010107451276301015372 0ustar ehoodusers‰PNG  IHDRÐ$ÏyDI÷PLTEÀÀÀBBBZZZsss„„„ŒŒŒ”””œœœµµµ½½½ÆÆÆÎÎÎçççÖÎÎçÞÞ­¥¥µ­­”ŒŒkcckZZŒss)!!!J))1J19cRJB1)B)9„JJ!k1¥œ”J9)!ŒBœJ­RÎcÞkœ”Œ{skRJB½¥Œ”kBΔZ­{J9)J1Z9kB¥c!œZ½kB!R)c1„BµZçsÎÆ½¥k)÷„έ„Œc1΄)ÿŒµœ{­”s”{Z{cBZB!œc)c9”sBkJ”Z½s½­”œŒsÎ¥ckB­kÖ„ÞŒ÷œ¥œŒcZJ½„ÎŒZ9sJœcµs½{ÖŒç”ÖÆ¥Æµ”½­ŒcJ÷­cB{R”cޔΔν””{9œ{)ÿµÆ½¥¥œ„„{cƵ„B1ÿ½skRkcJZR9RJ1­œccRB9µ”œ{ÖέRJ)­Œsc„s1)ZJkZ”{½œÆ¥Î­÷ÎÿÖÆ½„νZŒ{ÖµÞ½çÆ”„{kÞÖ”µ­c”ŒJ÷ÞçÖœ””Œµµ­ÆÆ½{{sÎνœœŒ””„991ŒŒsÎΜÎÎsBBÎÎB¥¥)÷÷)ÎÎ÷÷))ÿÿµ½½­µµœ¥¥½ÎÎ{ŒŒB÷ÿBïÿ”ÆÎ9çÿ!ŒœRµÆJ¥µ)µÎBŒœcÖï9Þÿ¥ÆÎkÎç!sŒ!{”œµ½)½ïŒÎç)œÆ1Æÿ!¥Ösœ­RŒ¥)½÷µÆÎJk{kÆï1c{)µ÷BRZ{œ­{­Æ!19c”­1RcB{œ{µZ„c”­ÆÖ”­½{½ç)¥÷!1Bc!”Þs­1JBZk9sœk¥Js!œï{½9Z)Z{”B{¥!„Î)BR„1BR„Œ”cks)9J1Rss{„ÿÿÿaãtRNS@æØfbKGDü<£ ëIDATxÚ­Y|å?JîÔ¥EÃÝ…r¤%´Ðm-8.MDÝp›^•v¦´8›6޵vlEÖ"h»µ44ÝÖÖÖ¡’–e›k e «¢®NÇæÐn¶e¶0 u €^ÿØó^îgZ·}§üHÞ»{ß÷û|¿Ï÷ŠaÄÉLc¸A4ÇCÒ ×Ý$]À®ž…p´ˆºè•XÂXÌF{´£7 ‚@ _['Ï½ïæ»ëâWÂ;7>þeV³°_ÛÍw~‰9öíÌ_µ£&Š·ÙH[m}C‡4²«¶µµ~[‡îYÃþî­Žÿw©ÿi¸¿®YÙê/1É´±O¢¢}¨ÑÎ3 E ް¨»¦©¡Q·yÜ_[×hXvÕuv‚`O׊žHd:˜ €(A°®¶¦¡)¬´±¶5ÐÔüìÕ“ÜîªmP0°uÝ•OrIf(ú®:8E © *”!¬ï®iˆcÈ_WÓÔÜüìUË Ms8¼µ>~å“^2}2|¨zG4  BäÓÉmÑjmjnj®¿j ­·å¯ ·< ˆe;®x–cÀÐþ—‡@sjá&J2FahCHnûƒÚGw·67åzW\-†¤Ö%¡yù¥¥¥E÷_9 Ñ!t…Ñëò„%8i‘%9ä7TÐsÚG78ò½E ˆ0f ÿ¥Áfœìú ¢éYØ 6 J†ù yŸP9 ‰Úé._Šö½7v)‰{*I1 œ<‰áÒØ]u¨åÚ©¦’à z@‰]ÈÏ‚`ëJÐŽ+Ÿ{¦˜LÏó™3'ì¸ ™qIB‚ÞKʧ]~ÿ†Î49 í&Lrà˜²ÜÀ¹áèÈñÑS ¹w䱩‚)kÞ8NBÑ2 Ý[MMÛîÑ®2SŒ2^³qb À¡HŠ$¡*›Œê…é¦öD#z’mP­…TÓÁgÆ¥fÜDÒ3|˜BÒ-¤è.Stq¿¿jkcë’ž™ «‘iÂЉ c%@>#ÇG#ÃRâÆ3é,l ¾—äa¿2 MSSSàçZ··ƒK)ʤ݈…,ð —¹H¹’¤™À™ eгR,›á´fâº=OƒGiÔ"Lâ´º« »»ýþõú»ëM›)SÌ Sm<ÎYÝÖ“ç‡Ïœ8F¨€Þ…j¤$îϦµ ù!'4Z×é¶[§U@Õ$E[,4„˺Òsw) !O’€¶jåÜn–eÜ RœHC ÌB‘Óµ“øòú­UݵeõÛJÝ”pclŸðÈuãV«pYôÜèe\D迈”¸/Q&Ó:ÌÂke> •xø)ªç’âu‰xfß`6[Yd€È¨½Ìp¹2® ®Ú9Z  8Ú,~œ©×\’À”ÔÔ?›_ÊQ‚Å,D$O1\Ç×Íyø{襡â1uõl/„R4:(%nÈ|ªÛ›lä(+.{Ÿ+)))‚4u]“½¸Ct²¼¨Ñ„²ˆ¼—vËÒ 6!ZL(€hôc™y£™vXED©ßÓ$mY$­5Asð¼à.(¨p ‚Å2{aLñ)í_ñPVçþý‡¿}øð‘×½Ñÿ>F ­ K£¯E#ƒbâ&\È7tU1×;d@O1b±%ÕÐ7ª!f'¢Ï7ÏKw!DÙ«t Ñ d†Ä_nâ¸2;Ë.¸KÝ1j9(Cž!§Å±RV x¶QzÂÖ;NYf<Ð"¤ãMoo Ðõ@}D?Éêó}øŸä¨kÇ¥ìŠÃŒŒ¤”ÆÄQDr$`KœÕ))Ÿ·€uAè/Vb1d‰i*´‰QÚ]KÔÓC2-g t7™¬$>/XËì”Né!ƒPå<Âô†£VAE¤Ä06é{ Ãv@¦¢T†¨ÉÍ2U“"8¦ò>ékh±dU¼×0Š“.þŒGy!}­²G!+R¡xö¯Õ\’8uWuÁ5$C[…ÇáQ$'ÑGQ4ÇièpAŠ‘bä ‰ñ"ÎJÅþ•¾Ðí²â˜tØãÊab!çbÙ>ACr¹|„B¢s)€ˆLk†Ýî$”Åh½æ¤ç)M5N®÷8zã…d@×\ŽD?BA4Ÿú{§üõJ–‰IŠF‰™ŽuzÃeÏ’fšëÈpå~CuU¦‡e9æ×+A‚Ỏes’o6Ú2X»=UªµÄkµ™'0¤íJLí²þ=¡…Â¥‚ Bšûå„¡þ7Þ'Äi)F„‹ Yf¥¥%,š9sÑ£f3€VäÉûOÏe]•_W§žŸÊ2\ó¯TÉi=ì߯qv×ùë>ÃÎÚR<Îá‹<‚•×T^)Mêþ!Rž“ïÄãQ'"‘A¸!)îm¸´´€(‹J9‘wo¹+'§¨\ÚTÈ–«ü¶:õkǵ<©Jj–²!=ǹíw*l:2VÚíž¹óÓ xÚüL«Ëíö8ŠÔW C¼&V`FÏÉÏ&«CP} ˆÎC%ú:€‰IAm}p’ç8Æ¡­ øâroYÎréˆâQÝz³z}#pl|fò =ÑÚhåì2ü 8œËÉÙxÏA<¹Ý5­'‘ A«CSl!+åùlrɉ€>Gí\Ç>|ó¸¨dFípþáÜ\o¡îýÁýU%lÑí –*†¡ÌZ&ØV!†Ô ù[[9|7R26Ý ¶ÀÝö‚âÕŠ vÚJ * ZîѬ€¬tí,ÎöÈ’¥Ä¡¬G¢]ëcàWxKâ-äó]elHVžï*WCÉtú­†!ËM* mÁ Û!õz¡L‡Ë®·•n{E¾ª¹…|I…¯À÷= ñqòb< ƒ1„‚(:tºG*«C‚Ðþa¯·DÈh+ö¥Ë^LÉF•e‰âT£ÀƒÁðó’dPR oÐj 6:b= – Ä®dcXÄ?Us"Cþ±›HeµeªÔ%‡}z*ùäÂe©¬¢âM©uh2†vðÅÞ律É@ýÙzuÁ@°%n“!ÉÍRVm—£ùiÂË£§Îùð_ qÕ½(ˆ¢C ¸ƒ"@èâ9ŽÒJ./fj%ï@A”=w½8[;h@¿‘ÜK ʹçC1ú:EÅU? 6BXèkY¬¯@ÍsCÀ÷!íòf$b!9¶ÁÓcgûÿü˜ d†ÄJŒDúÞÃ&0d„,bˆÍ¾Mùš˜…º·Œl>úGè…ˆ é‰!åPŽ Aé%Ò|þpvnl¦³ Â§h1äóy×jŽê” S‰Ó'ú÷÷ý-$ŠÅD`sÑ4²¦9¸]&HJÛT¢ ¨$„g_Yý-,”Uì«P4·1äÓ3Í ~ôòÅ}c'úû^ýI£GeÛAöâ?¤ýÆ14ArȪI<Äj§K<×9kI¡* ‡/gŒX룴rXb­!´]¬a 6¤¸B=A5W@ž–5 ù*â’̹¹¡ ccçŽzñÕØA"Q!OP_Œ ‘!N) «îU0Œ•¥Þ¡õÙ<èçÀʾ>ð4àQnÅ¥¼è1vq2 .¨pi|Í7Þ]êóm¾7¦91†|¹z@سcÜz~ðµ—^îÛð•ØXÏ(ô¤‰1„ÎDDoJ-y‚@e™ ÐŒZÄP¥Ž¡UÅ\¶Î±ÄWç±·²eDôüNÝãtô~Dñ®*ˆ"’ù"»½ò6,Þîü~e¥oó#1@EPiü»¼9YãÙgÏöýáŃäK 'úGFd§###gÿ.K¢èŘœçWyJ«+««u ­*/OMÝ¢_"ï›K˳SÃáð Ïhß²Â\èà¡0”Wg‡ÃèáÐcs³V{ ïÀ&±æ'OnÚ[jsu¸±±eÂonvÜh>røð[T×á¯ïí=*ŸöG—¿%`r/·¦mË–em:]¬ÍKìÈ›ÐyiO=õ|›Þ™xZšÑ`HSn=×ѱ6O™jÏü–iÙñžP[[Û–Û&y?Lôêvðt—^ðfŽIEND®B`‚MHonArc-2.6.18/logo/mhastampw_t.png0000644004705000001440000005154707451276301016132 0ustar ehoodusers‰PNG  IHDRhê¸4/€#PLTEÀÀÀsss½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷ïçç÷ïïÿ÷÷ÖÎÎÞÖÖçÞÞ!)B9J!½ZÎcÞkB!R)ÆcÖkçs½cÎkÞsJ)c9sB{JçŒkBÆ{Ö„ÞŒZ9sJ΄֌ç”cBçœ÷¥ÿ­Þœï¥ÿµÿ½÷ïÎÿÎ÷ÎÿÖÿÞ÷ï­ïç¥ÿçïïç÷÷ïÿÿ÷ÎÎÆÖÖÎÞÞÖççÞÆÆ½÷÷ÖïïÎççÆ÷÷ÎïïÆïï­çç¥÷÷­ïï¥)¥ç!„½!”Ö{µ)œç!ŒÎ!”Þ!œç!„Æ!ŒÖ!”çsµ{½!{½!„Îÿÿÿ’øtRNS@æØfbKGD`Å·|QåIDATxÚí}‹{Göå/–x(™Øj¤»±f¤Æv1ÄžÈãX3v<±3Žã(‚æÿÿ+ö>«n5­x¿ÝÙoS  ‡Ã¹çÞª®þŸÿù£ýÑþ¿h_Iû£¿^ÿú@ßÀ¶ñÕWÿÆÿ3ýkã¼o¶¯|ú¾¿±±ñ‹}|[¡ÿ‹íoâ°ýÍ ¿¹Ü¿qÅãW÷oý_ ý—õ7Šýë÷¯ô üG›ØðB*• _)ô«a¿R­V¯èׂ~­Z»ôkµ¿ú7.îW¯è_õûK}x½—õñýÚþ}R+_šß9ýŠGžû¸Ç÷+ðJ‚>¼0óüÍÊ­jÍö_×jÁãÕ[µàqjóÆ…ýJYcýþ&|îÕ ÿ&ì3Ц_¹Y1}ÄcÓŠÝu`VœùËûõ±W©˜~›ô7ð…ݬVª¾¯«ZõÏGWíãÐ ûþ›QÊ?ö«×è½Âó+Ëý[a_ðïgƒ€‡Íö+›«!M¿¦@oÜІ0[qý zÓõ+ø_›>½0ׇׅ¯<èÃ[ó}èVkµ _[¡ÿsµöúßj¿‚ý¯ýã•åç}~ܼ^âEͽßM~?¶ïßàñ3à\Y% ~%¸rÛ(·‰‘ÝàÆ8û~å5MbÁW¹U nâoAnÕ*ünÒÛ€7WÙt}Þô¹IÿçBqù |iúµ:l¶wøþ×Åßg¤ýÿ«†}¼ÅŽPØ”·ãß¾AxËòö7¾­£+d•®µ× yòÒ*ü™…­J?¤ÀçªÂ[Öj·˜$ÜK D¶7üžõ½_Õ¾¦ËK€Q[]~Â~ðx~ñë+þ4Á}K>ó*CM¯÷MñݼæwμfÊÒ?_ŸÓ_0Æ›?Sà«,5Á™ÈÌ—×Ëßb8åußbÀ» ÎØ¾E¨7Öš¾Lé"Ÿo"̯iƹZŽ3½N‚¹&=ÆùúDf„ëè„ÝtÏKBo…Ñ/q÷% ŽÝu’î—µ —Ï_®Þ¨€0Q Hß回ӌպŒþ–Fú¹Àçª'ô…²á_¨îyxùš°Þ\òמÄ×׌X]aééÜúÇ¿vt®»/È2¢€ʵÔò– l !½2Ðßþ^ÞN~?6“«s¸:ÇëóÙ ÍðÂïõa›Ì&ççº öéziã›ÿãí|¼¹Pw†¯uÒÇ·à޼ɽcàä÷ß™‡›.·¸è;. ªºmF?fËk}Ýè/@†Ë¬j»ÿM­Ï?3~}øð-ôñíÈ;<Ạ«µÊ5þŠ“@ñuh;°˜-Êò#ŸyßßÒ Dœgˆ2áMŸ€À>™ðGÐç›ÿÛ_HßïÌxÓ+ÿîô+Ý~g1¼®½£Ìð— •ËhClùŽÌxð0‘•ÒüùO˜Õl_Áœc6ÿ›^ÝL-˜Ó› ¯(nˆôùÉÌa}r"@ßX©TJ5¤ÍŸgB´ãw§ÏEÙ ÿð¥—,Üàoa¢ ö´ùoiæw¯™_ ¾ùÒÔýÙlfˆF8o¬TëЈø-á|rò{asú|2k%;I"ߢs¼9ŸJ£6Ì<ÎJÏçÿ"xƒÆ…¿pý ¼ÇÝb<“¨#”>!^+¥¹ö³z™tƒƒá‰ShÛ²hðÿwvwÜ’d7‚«¤³£tæÔ¢?3¢×ŸM ‡ÿ÷²yî6¹¬ uÞÎNDoß¾Iº´f€jOé×kMÒqB„øœíÄùÎn²moGŒòn´Eðƒý$¸½F3”.¬ˆd¸°þ¿ܹ½“/%]Õð[á¶„ïï&9¼Ã¾x+u Àé›_t Ðâdgg7X“è:÷Ý„úÜnx-€¹ª[ßésЗ]ÆNìÉá-®ðÒ}€ €€\õì¥ÎRß’]Ì]Z‘Þ¿Mç@ä£Tµòzu ©ý3i´Gù÷8Ú!$iÛ!˜+¯« ²[0V¼ñcØeKÈõg6äÍ&&Þ¨“žÐ§|j]ã2Jã/÷ª^RÂè‹à6¬-¶$á\±µx>ÁÿaF÷ÅL³F¯Xøß¸á5Z]ílœ·1ý|]­>ÚÝŽ ”ö€ÃgКœ;2÷q*‘æ0ó·7¹b T Iá÷nü[ÑÅ”.üZ/ŠÊ1–·Ñ’º¾!Ç¥í&¼d€ÔU¸¾½“Â?fí–Ñ B7†uçu@ÞÝVáí^a”çQ+Ðç‹Ýr )åÞz^BêÄ‚#Øzyvæó9þ­Þ|=2Zþ üßè᫼ èBýn 8½ëÞWÑYM-`}³*«Ô£‰ÏßþìÝÊ!ä%»•× èö6 ¼+;B[>o'ùö‡_¡%ÀjMU49dµ¾´…|\†ÇŒjs4ò0b³LFÌàöoô¢ä··¿½ýê|ÖðeÛmù^µF_š¼EöUš ò«Ô£e€ƒ!m;ôÇw¶_ï*Îò]sGË„f˜j5üïõ¼F/*C™š’tdõ9ê!´:bJÏt ÂnÑô(yûöí¯¸}Š®jæ“Ø½…ßeü–sÒ0;-ÕùUëÑXèwºAø¢¡ DÑylGA Ü6ŒÖö«kà«é(DÃË‘îtåÖñá4Œ†'#ÌžÒ$¥”ƃ Òöþío¿þFH¿Ý¾i"¶¿¡_:ÞLª¦×÷x_Ýø·Ž«Âáp•Î “M,0º%0?‚_Ç·Ó_97!ð<ÖW 9 ’U>…¸„Ðó¹üx0¡—µÝA<~m]2´<âˆ(ÌÚÉ{l>N¨6ƒz×zC­ÒqDïRšmï‚­óDÖ óÔÚ¹MÞ”­V‰}¾¸±@6Œö„&œW"4J3·|[/q·ÄîmCHä{wÙÙ€¡¦ºÇùëjUÆA®[F”¿¥+g9v+Àáíו„vÜóîŽ{9”c€e~„™ø¼ntóüÐ.©ô‡íD[ŽP_·J7gN”‰ÄÅ(|f*;J_ªÑ(͹{QÑ{ †;‰‡Wì%ÚóïV€Þo ¤Êk‰Ô=P:hX¯ö²ºJ=šÆb]®½~”lç•Ê.‘þšüÞ£¿þõÏp¹û×»wÿúW¸ÞIÛ]òuð=ø€Í¿'|Ù­ë<—ë$™3 z Ì &Ɉãd4âÏC1žHÄÄ߯71læOÿÓû}z¿Ë^4Áؘ$·oßå[+‰ôc¨À°W«Â³½ÙæRÞlÆ\/ëõÕœôFeÓkôÉN¥b¶ã´ã5ý¯ÝüÑÝ?ÌF¤qç.â½ËzÁU¦ÝÝ<ß €¾Ôss=š°z€óW7!}Æû„öbÖ~P1ͳ(|=ùNžsá†Æ}…Ø`-îOÍ4)G^«&}*ŸÍÎeqõzt¥ò³K¿±vˆ| e¡„2úÏ€8áüç»Ñ#FºåÞmÁ[k]³‘›GžÀ†Ð#/БSyTÀž ú´©ŠdòRb¾/®÷ö·ß€Ð½Æ&`sKXŸ‡£r´f}.çñL¦µëÑRérŒ†9Ç¿]vw-†ù.é†Ãù¯wóGl p X_Ìê¹!3CÝK¤“Êtd$½sF®qGp¥+zˆKÙ»›×øÃâo­üöþí»ûJhÅHmýæ7“Eç)¾óܼիwÿCø»(ܡ̰J.o—œzÔ2“v€lÜéøsKÅ#ü†&æQ9ÊREöxFÉÈè…U º†‡}È›j„t”† ÿœÁÝ ŠõòmÞÛ` â±[ÄÝ3H'5Ê ÊÂÒë½!Í—¼ÂímòoI•šeYHZÍHÿùîÝ €†WÅåËèÓØ–I-žÙɆºåÄPZuy¤,†h9"/Á±n4—mÄ÷Ê.ažEß¿ÿø^^~Åâð¾%¤ÇcàµèÇm£û»ôÔy‹†êP£ß¬ ´ÓhnÛ¯¡6CD|Tåºè#Õç» ï2ŸaKX¤?$å-Ï·?|øõ·_?õ¢"Ìì…)Š)ŸÉ-GEµ˜°<G†ÈŽÐ¶'¿1ŠZïßþãíûQ†ãs²ó úm/Ùg¶„¦+ÑŽZ+¡štÔªmk¡}Mé ‰ä›7Í0á¤ÐࢫvÈH²³“•Ïzìé>,æ©×‚«Ö‡ßàƒøWk¢ç‰äl£‰ Ua'ó¹D8$k–äÂ݉cô|îdIëã{€ñ#é(ËÐÇIÓïß¿ÿôéÓû¤×Ûgv‚ˆK™;i‰“†PØJ¸ÚŽ^½Í>Ú·üõ®(G¥*Ia9JÃ¥ÕŒ1(çÛ»Ô–€Žþ…’ñ Þé§ÿú€Ù@…Ú¬Y‡¥4J@dQvi6™æˆ5˜1œçÁe"½ŸÞJ’ äã?D+§i„p›ÃvÇDº¾íJJ/%7OK=)ÍÒ±v=Ú |?Ú®’Ü} 8EÄmÌHZmaJ¸K¾[ ô¯ð:ÁßATÏiZdG>}ú°“| ¤î&KÖ7…=™'|?«°sj$¿ 36€¸°¡uο1ˆG’Ê(ïñŸcT“<É@5’·ÐK² €ང ïÄéJIÈvËͲéOhjïõèÊ·¤Ñ¾™y¤pëÿ­Gô '»ùnÒúþï°ÑÜ|i1é×V$A_q¾ý/ÐŒßX½½ÛóÚ<×Übî}C)¶^r™¬ÑeëfÂ1öãÛ·ïHªéeÅòJ¢ áÿÙè =þA[~ª¤½Vü%M¤ï£Ò˜ñ$êÍ뚆ãO@½éÆe©² l£á_T«;9å/=@·ý÷¿wÿŽ?u/ä Ñ¡tä»(>á ç°O¬6Œv¶ÌØ äräÊÌ"¹JÖ¨ÈÞ’b3ä&@\ÌPÞB逗zŽ·ÜþÑË[?ûº|§^' ŠÎDŒ–‰½×>4ë+J¿i»eô ÒÞTç°°´ÍÃg-€·ý=\u‘Òíï±ý-ÚQ¤·-ÎÑ'øÙýôÁ‹7yDPs®03¥G&õ£{q÷Ød å¥-Óÿ"~.‰†hž|ŒÎ±ÈsôŽØüöm}÷x èÄoˆ³£ÖJZ?ú9›à<ð7«Xº²IÓ¡íÔ$¤t5ÚÕBlÇÁëýaþ;"„ùДÅWH±aüô‰†ÛÌ7™ÛÜ ™Óˆr¨‹¼+¶0F£€Ç%œ¦H³B¦°}ü†ú£‚yô¸Jz?”µ«EÝ•ñ¢šZ8}^ãY÷«-óü¾LÒìîVµÆŸP0Œ¶¿G˜‘ÔÀhj«ÒÆâåÐÓýúd*éDbeéÉH}´Û$‰Ôº8y~ ø 2qäåb |Iôñ#r÷Ýû¹zŽ8yÏÊñ.‹JþAk¨Zè¨Ë@²ãtõ M¬ÇˆxÝùÑ$8¹Ÿ íç¦F»Am;Ù”ÛÈæï ïïê¿iÅ_E‚Þê'ÌRÞþú©•“jåfùpUyÉ4¢ÌìÈÂ7gº….ã4˜gÍÕÂE1þ÷ÞûwoßA@ügä|]Ô£ -ÿ®è t}€œ>¯‰FoÕk×­GßCŒ¼V¤ Ä‚é.~Ïxý=ÃŒ8ÿM†e?´¬¹kÒˆ³wNN9hg§7ŸxJkN"&nΉ‰¡4)t6 9="“»Ò†|ºHßìŸêÇ÷=e9¼Òо+év3è‚8I;ÞàqfÕúV}¥ùÑx @ Ð¸G4z˜$Õj‚r<úž bMòü7l»Ñ¯”n‡õu0¿ýúÞñ"[Ò“˜(æÂ¸ûgðJE: HÓ].çääb19€úQ”Ñ=úøÏ÷ïÿù.J¾ÃöCˆv‹q®×Ùè51št(ÓQÏkÔ£o Hs)ú Rþò·¿1«Ám´pÊ#®pi`^à ՒBǧ–€¥Ô”ìF#“’PvɊʈùäA„/r¾‰b%6nd†ï#~ôú( J‹(?Üi9 ùî»–ŒÜÕë­%ݘˆTÓd¦Õ‹›ÎuÌÜü~ØEÕm4G9À·iïñøo­íÝäWÛ’½(y*ªnÄ4Î _îˆù;YJë ±.-µÃ˜å;׿š$¹Y?û\£Ú;äü;Rîwïþñ&²Dm@9wÉ9‰g=êM&¡D£FÐë”I1:Fë¬~éÝ[wy ¾àÝm¬o؉EÏE!´æ3ˆ™ÖüD™¡t! ‰£å'2aQæÈFÌ^#V23Ê9%.‰ƒ^—@ýñ ßiâò‡b£<Úašˆ4¯Kg¢çx³^™´âÚt®…ÿˆçŒÖj:Ç2I @{ϵÞúôž63Âå~êq.æÜz9¼i4 )îp·ˆgô§ò˜5ƒ?MÈfgµÑ'BwG=†ùloÕg$ÑOuë9`¿8!9M«®ôÍ¢BÏNp"ÏßEœ!çq(¡ ‹?‘yûáS¯ ’çMfÁšL…fŽ Ì²Q ÉY6·É‰ÑoD/§?H! Öš¨goëãûÿ¼…íãGwô^´ƒq~çæy|S¯ÿäQ—@Xœú»žtH0,(4C=;×¶«3“GµšLãˆvC>[5þô+^€¹3Y¡>be)Áí¨ˆ³ ˜¸»8Ú…9 ¿A˜sPˆ#_ì‚3Y=‚l3 1x‘ƒ ÎûÛ:ûsDÄ™ªˆv³9¢÷T¶ûô~'w8cI·Ë3‚#e^˜-[åÈÇQøT¦sÌFžd{Üö“\óñøã?ÐÿøøQ¼µ¸>„o@s%áŒ%”¹¦0êA4¯^Þ`.(4Ÿ‰‡}õw‹ó‰k4êò¡gÊ ßƒrˆ@GÙmÓöo÷d<ÎY?¢¨¨´Ç6èÅFkÈ)FÕ`[ˆÊûÜìLœFöñ?ïÀJC/ŽÕõÒÿáŠäç„ëVø.á[犋E¤‰Ñ«Ö£yá“›a¶Â7}>¶•swiÔa'’™ ÏAføé½$&„î¾ ݦ‹‘(穇Y‘¨ø“ذ—”À<Å$£^Ä´@yo_}›ÑÎØ[ÿóãÇ^¢É¹FÌíoÿóî?ïÞAD.ÿ´ò)Ïx®Óh®£ k+Õ£uŸ›'E…ÖãíÄWXð%Õxbv´Ý¢¤ð_¹zgHMb°¨p[ÇáâÛ uÌPƒ²rL c![{‡0OqCºæÛcDåbïöžü#Ö„:–Ÿ ß$¬è9—õZô¦âdëÒWP¢á*~é̳"еZåú@»…f~/(4>(×Q¾MÇ`N"ÜÁ6ÏÝœ½܇© ¾é»·E¡ÝÞ&”"K2'œÌ[‚”Îb*qxå ˆé)`,i&ÊiÙP6ìoãóà>Ð’ª® ÅV}k;æ#üü£‘c\½Üsúk·üÄ @KÓcdíþ‰[»çæ´p¸=¡aáí<˜Å…éün0™Êèq’à€§Z-€ï%2u“܇CÚaMåg¢Z„ÙÊhä潌ø“·ƒÏŒñE`ésÜWB³³$Ùs Ù÷]7w#! ¿Õ£ÿ¸ÕÃÍUÛ¹ÖË­Íó+}¬PþY¥Ãî}ÎæŽùLÓ¢mw7cÄ # Ð/èëÖ£7T9nBËaõnɺ™´i …R=Ô¯‰‰ó«Ï»¨½»Œ±‡Y)½A1æÔ‘öêá¼s”áß-ö( ¥32ÌôË-O-ÞÌç}¾ó6>x›o¹1›cþD“d‹BÏÖvfÛýd©‰Wj…ykëÚõè éP¡ÑqÌùÀãVK#NíÐäÕð TÝÀUû· £‘ÓŒ ¥P· ê˜41±58ö ÎBJcU#!ÕˆIöK0Þß9v8ëYPä£ßÏ+ù;®LÑg®_. –ÚâÜ™^kkkkÕùÑÐf^¤ æsY¹€¬4%öˆ:²s‹÷FïÓd¶$Ù÷â¼´Á[§â'çñÔøŒ9ÂËÿÑp„&œ9·£rF)ÄûŠížÕg‘«ÑDiZ¤UÌQªç:Š,B]WÝX¯íËvœ­Èª2nõ‰=:/瀘xB´·÷…μò°½„r@ì=AeùˆM0Œ ¡ñÛ=%Œ‰Ð*‘xº%ˆ¡÷"ÿß 8‰t¬% ÿ¯òÂЂŸ8¡®Õ^Ök×]¸ª`=f6]écÝ¿¯ »%eZ¹±ÓDg¯Ñ#â¬Ö£aÁ.¤ÔTn‹½S‡í’„øL8ƒ¢¢ÛÈ)zÙØ„nT ý¡€c¨T|å&ɳB)\„z¤”&Fׯo8Š@›ê(I×w ÌØBéVÄG£{GßÖ)™û‚7Nf“â]Ô+j³ì£Í¥ÐÄãOäåÍ9aºÌhÙb:šLqYð³­Ç¹`’õ` )Í¿¶¿ïí]ŒWÙÍÂàˇdãLiZní2i°>•@,sÍÜz2­í¯ép=N/‰î Òûj:n3È<Ó°GÕ³¥X¨0ï±ç•A&xj¦1¯ÀhtÆÆÎÉÆ% Ÿg&‚Q’aót×_T&ÄXÎö8Ï ¼vÓ}ÈzÐ{kí²oM¾ûº [ìoÑ|¤¨Ös_êž”@zq›ˆŒãŒ6Ú«^5öäBYOã‚°oT‚^XáQ>ƒ×à hø|1Îðœ'aà Ïùf[ Á§8œ1íÁÄij`6czäMyG騿\¯ýšýú‹þçâ¤'ájT“ iQ0âÒcBeÆXÛãÇKH“ß œeŸ &“G”BJ‡@;œIb’äJ˜QŸfmˆ6æ‘™`ÍÒ®Žþ(UI9„ƒh®úA" 8×שGF¬e ¬tÌd±¤‰Y]ÍW—T¨gŒ¤dš’:»­l¦”\4!¼‡¹ÚÞ>g/v¦^yY¢3L•1G‰¯‚>ðXP>bœéúIy¨Už}-iÊŸ1\ÂÒ·»$QœÏ‘Ñ_¯W®Ú)©†®’¬¿¡œÖä0Ò©&Œòò\¶ÇJêÌóyÜÆ>ßÜ&rãû–á.‘‰Ä-=EÎSIù²ñÑ="í ¬jpå ÜÕ)&’蟧Št Ô†Øê:éÍ•ëÑš‚Ïf^¤Y¡eIÆþÌ2šÕƒ¾uõ–/.%edV°™Ô.2Ì’ ßæÄxoSa¬–MàÓƒ\»J5âÇ 1ó®ðê Aý„æ$hÎù*×/(ëÆt¤FÒŽÃÓ5)5¦Pÿ ®WVš-õèªóv}&4/û6ëOÌzTŠvk›'—DÛu?úRŠ0oxE¤V¯ÁtæòšPzŸË—(Õ™Ø8£˜ªdD¿kDA‚OŸÀùÁÚýÝè•ÃW"YSÇhKko>xA bt ^±LZ­ˆpœðj6}æ3'*nuC×’D§ñ¨T_¤îѲ=§T1Þs}›ÜGâcÒr0ä/zrçJuÎD&˜Æ,¹`M…T .oΜ1¥§–ÒóB`$¡®SÕÚW®GW]0œñ’z:¾¢ËØ…‹]&»uÍ“^ѾP4ñÇBj/Î!¡5é ’<â,ôOÑïa¼Ž:£ÃxòØoGOžâë¤Å ®[áÕ+oÔ¥¢2 ±ŽûB{WGõV¯t•¥ƒ,lj(4î‚¥¨‚é<š  ”c¬P;ù¨…ÐV£ÒqipA:@8òüjó _šTõÁlÙL Ër\òdk!J'‹Èežxá‘W&÷–z^W¤_n^{½Žo¥ ~Sš‚¤Öuìܘi9¦&Ivè‹dÃà ·”¾¸–Ò·]r¼OöâáR Ž~ãj6'Jå'GJg¼V½vrGdñ GÅ4ú0N—(=Zb‡è',õ—‹êÑ89úfÕC.äœ0TbËuÄv}§\¢UœùÇ!'=Gi©þhñ£1íP£iÝÕ0§O[‚üÃÀ‹zàsÐä-H¢Q¨s‡rHi¹sEÕèUëÑìïÎi¢³_mÔcòyB õEQ=ç S^&ªŒ66º¥™Z‚ß—´E -2ŠKñDyv%Ìqrä$ãˆtú‰hõ!ô“ÇbAž<¡‘ø³ Š…Sm®êmŒ^‰TÃÁpåz4ž\åD×+îëçýÙ… M™h.ƒâØv~ø¡„ÒÊb&4ï?~|ø‘¦áŽÛ{{®Æ”àâéèÆU–.NŸ¸&áð±ì@8|räc$| (%@Q#÷ OBKÜHµ N8¯W~ÍùJßg,]G^–¿\‚›gËW»U‚°î(à„3^=<ŒYª5 ß[*ÄåeÀ$¿ å;¨3cëÃà‘Ó s'6ÃÂ?Œuðx0:¤´3!ÖzÔª××*“:ס5Ê ¯X¿Õ}ÅÃç…&Š4‹lÈÏãï¾ëñ¸lßQy©Þåe4v—¸g´X=|ÈÞâ($6ã/|>bÐñ57ØHG £ÓeJ+ðSk¨I:Ö¢¡O!”Îi¹„~¡ÊQ 4;è\&n· ý¸ÈlÄ |øðjòYPŠ· µ£á(}‰r€h¤q|Ø>„„ðáá!û±*³`­Ð?–.Ö¦Èe,'-²=˜š!4õæÖéÍë[õoÖdôkžÆS”hM{?ŠÕ/gôd¾]gFëq¼­eûÌØ>ÄËÃïéx©ìáÃü”š¡. Iòó™\s’&ñááógÏÛM %´µ9„U­A5¢TÒï8mDh¡ æ{TFhÒ-°+Í' ¬Ê´^ÊÞ ]º„и|]÷aë»ïD‘é‚SMÎMŽN~ôMh]n'l4¼0fDf„ùÙ3øy S2÷/fÔ­zEZ¤”ƒ…žý°”–ù¢3HÇ:õèêM>ÿŸ¢á|fêЭ•‹C9žÆÏ`KvzßùÆsã/lC ~¦á¶rFÌLf€øÇçpyÆX»Æ³Cp4"I1øh”Ž|Àlæm êÒjô@9€Ñ«×£1稙Ñ}Th³Jy8¤YŸÍämxíþœáW5z ëÀß•h4ÆmÔŒçÏŸýˆ7p 7HmjÏu4~î"þE¯óxZèPADF\E)½…"½òù gôÑÌÌêC7Éz£6/Œïd;×&6#‘TAù™¡4?æánS±®ÁåQùãñ¢áÃ{°õ4,ët ¥ë[߬T~M¥LÁÑtœË0ÖUi¡2/^špΔÐß­ó3¼>äã¶3ÃhCi/Œ2Ø9ðGÆõùsƒ¬o¡d²«3â òÐÇhCé"Ô¥§,[ßàÕ*eR>G¡?>¨O%7Á ¡rà0e<¹-¦t~}ÙP¬áú9„*‚º\£I:î@ñȬDå8(ÑPb¢SÃh¼“*( ˆ‚1^Ãþ"Î<žÙE±ÍŽzkkë'r«þ½“ÓÉ´FÇçÙ2̺RkTooÉPË 3¥yçÙ³Ã6šâD¶̉Àç^$ öò¼Dèg(Ôð·R*ÛÑ‹^DŠhÚ…4ÆBH£I=¶ê×­Goà4t\:öµž÷Ê ˆg(MÊÒ•¹ƒš‹‚—¼å§ã]O8ž —lÁü±¡¾“„0Ì)ûŒgÏŠqÏ]üÝÏlD™Öò6bŒA<ôš9ÐÙ”fFƒtlÕ‹çG£Ïgî :ÃØe'œð”f|ÚÑC¨ãëýÌ£-tÆ ¾öqÜoZÐh²fiv¨ð™µjKéÙ!yŒ9÷&Mˆ=5¬ )1ÖHé-Bzk±òüè*Î듌°lHö]ªÐ¢Ï²()”«¤^ÛØXãö¯3Éjt.LÌÚF ¡K]Ö25t°m!ÎDè]¦¡bÛ+Ñ 1Ó[@ç­U–éf¾Q!é8é ¡ÅE÷/RèÉdä ™ã Þãå× ´ …ÓD™"–{D•CÖ@ýЊ }akç®"˜‚·‹§cܼƒ%T@\e‚áÖuÏ7k#"$,Bg m —=wëâQÛ½oØnPÑñ@?ó7,„3êF¦Eb„6Ðh„]¤‹Êp5Âhz•$ЋŒ”d°×A!:šz“O_P:®ëìB «Õú–Ñ“‹ôyPz4É’Ÿêþ𡫤㙠~Ï<«Á?<´¥þ<Ôè\Áƾc5ˆt@L9WAs7 J#”r3À‹RÔõ¦¤ÑkMÛ­VixÅMòw§0-­ÚÜ­Xœê|poLþ.o]S¡½6ƒù…Œ%‹T-Œ*{æu õáÊÎ8:]pD\,¢±Ô’d¸%¬„©öpSÊò§5MÁPÏŠ(tÿBËa¥£Ñvléö7[x›_MçgN9(bÁ46Èæ˜¼|t'¢ÏA•$~xøpu ñ/ À$€ót Í<'!Åd1ÐèÕ¦ùÑ$3sЊ+D4zîÖ%v猘'™hôÖ5¡@M â|ˆ(Gœ °@Ùƒb­cï^”7ÜSh‚o»ý°½ÎíwÅ¥XÅx<`ÑÜ–juJˆ©£ªP3ÐkÔ£A£ÝÙêû3{B²XèÖÒ—Eqçn–àzx1ľ¸ñ#ŠòáCðÍIž8”ÅÄݹ³Të8Ø;ˆ|1ˆÁÏã¬Míº@Ó‡ÕFœ#ÎBéäÏêb~E@¯\ÆÂ’ÑhSŠ.˽MV8ᣖF±=..ùî2˜Ÿa]”7rßI0S†ÀÎî@fX¬uö™a½|& ­-ßn_ ð6ˆ³þzšÇªHh€rLX“| ”܃BTTN“F¯U†`¨çD ¥Ëm´Lèùˆ4WxóË’p8“£}r ¯Gp¾SZë¸s§ã­A“ºèÈCæ÷e„¦oIJ7<¡‘ÂcvÌ"ÂÚ1Pûì¥9]]­Meÿj•ÀÕE‹víäyîתãÅ÷1E–‚4 ýÝÍ‘ļœ´ØÊ&$XS:HâàîäàÜçU:õ# ? Z-&z—ÂÜWƒö.Ó{@áÆÁ±¨÷ y|Ì@Žs‘t Ô+Ô£¹HŠ®c&Y¡›V>øíÎ~â_¨ó-:h}‹h ßæ%~øƒYúò )%62ˆ;j[ ãåtúNÆ Í?»ô×ð8ñlëvL1GûœFEŽØzJëƒí4DÅzZ° Zlmýië@ãYÌnJ0$…î_\ð×ãü]Vè׸No%Ù–“\ËégÈå( "ÞÞèÙP‰Ðw"Î*£S øÜS'X ´;*òºÍÏo¤‚‘ŽÙrŒ±t7BÖnŸ> ;n« òjk!œ^¡„~]5Œž˜y`e>z¤gÓ`ˆâ‘#Ÿ#wTuõ¾³dŽrŸØVcA¸Ê¢dY2:β=$:>xpÐÈ/$4í4ÈŠ{¨Ûä ñy þ8–£@è€×¢ $Óñ2Ôñ‚túúó£u„åDfÈiÔËN‚<Ÿ¸uœÌò‹2Ýþ±3î¾{H0»šS#À¸@H¤0ˆ”ÎÀåÚÏ"…;HUöìf]¢´¹›hMâ;O‡éʾ±4ôpcñvb;¦$*,!Ìh—œ;¨á¯L¯Z®’tÐ4fôe³9FÎxK¨áAÅüïÄõ›çÙC`³}¡‹³Ý<¿·‡lFÍLêG¸tEøŽÏ°Ê(ݶ}Hæ 1áœA(d÷L¢1v(cØs”¦»¦"ä^AäòнX­ó:ÐÞÍå¾…ý ÚžÊ,ªE[[½Øë4›¯‚Ðâ©8BgqÂé²ÿ ŽŸÇÈiV¼8ÿaþÙFÎGÓË)ˆs¶À¡•1‹ßLeo wMÁo¢"]àóZ¯ŒæEî|ò]>ßN‡žÌ- FëýEYm½òHçñÒŒò"»qM& h‡œkGu óiäpGßaBÓåÎA !2. -AÍ®™u@îd°;6mª9û»ÁÔ ƒDF5XŽÅb­z4C]é{å˜-zîÎêhqRg9Ÿ!&Éóed ð‡Ó=²ÈŽÒw²˜ @¹§~Ž@?J ΄5huêá^ú/ óMÊsx^ò{ãb›Š”pÍÔi4SZ4Úà<`^³-GÊ^XMÒ \dq§l´‹¨Å ÒtÐåÅöT€8À!¾QÐ)Ç 4M¾Ð|ï‰éùBiÙît@¿ó ‘,ßàÿ¥Åâ^<¾° Ü ëõÔ}c[±žh¤×*“R Þ×ã)ú:)zI¡]º„Ñóé(Á%/JtÂ5Ò Àl'ì±A&Ó¬NÒç «ÿE†þ8N•ÑžÚ6\:œîa.rááDŽ(_Ö¦^¶Lf&µzl¡õ#ᚌö‡­ô/Öh_ã°Úì×öšfn¥€% óYÀ"ϸœ±'šÌ®Nvï0¨Èh3N˜ÑJgº(Þ÷:ø%‰YNò¤àø¢{ã+ÛT¯žÐ®ÎÄe †+ Áð[†‹sÈó‘3ÑvqgE™zÀ¥cZêÁÈ3t’ÃÃ6l{¸ sùŽhò›cr™ÓÅÝ× âûÐyx¨ï(¥qË:Ù½ªâ=ÀIæcd:¼¨îë\ ´ZJY‚.á>àA‚Áô ý§5ëÑ3¿€RYRèRv˰–ÇÊ‚¡ÎM$±4œ“ȹ:šaÙèΞä'lž=¥ãt¹¤ H·é€Òw¬–d­—¶»¨Ün#Ôé3O¯CéÀù µ§RªfõX`[§ÍŒö‹ú”Ì2°™J¨rË ÄØ¥döw›.Z…nïe¬¢É‚7¡ ŸŸ‡)xËÝ™!´×hƺsÐ6íÛT9("6®‹41ZHíl‰$0HèÅõèª2zfÖö)+øÏ—ÖäWá BÇ&²Ã‡Ô><´ÛlOÈLš¬ B¦2m-¥© SúžP¦ÑŒþ½hÏîvÇì‚—n^h§×c:H;¦ÄèEmÅz4Ÿö©îF¾KKÑÁÙt 'ï@ÃA+†úü›ph Ê(Ó™Ê2]ËÎʽcGè6¦­Æ,mËÇi|FCë´/j¢4IG_›Ò&4RÚ(2ÂŒf¨W«G¿æZU:X:Ê þó‰+÷ŠŒæ)€9O¢¡0˜µ=•Îm‚=SYf_§”F‘U…€_OS AdÛYäÅÃh‡°Z]d2opyIHlÀ§—¯´h†›”@JÍ0¿º¾õ` «UÍ 'ºâÌd©vgªýsã j:v)tãpI4@«ëvrà•C½ÇÁÁ+ñq;6éu·%w,ÒN?鸰v)8ºT1]è±=¹†Ëµ•€¾)Òq®kU-»è‘`ú:GhžñO…ŽœP.àü°M`ïÅ ®ÔŸ¹fw€Ehps™µg|Ç‘ŠG'SÇáq¦^ú—`Gh¸zs(Ä¿wu¤9?gZÃEa~µ¸öüèM.’VoËèJÿ¢ Ñæ¼ó…³°É™1e(#Î@è;±Ê²ÖŸïÐ •'tœ=owlΑÇöó{ø1??¾g¹£vڇĿÜùK|`~àÝÝùrȵ¼t«U©=£·êkÔ£Ïgîä~±ž4‘³J‡ œ§ÓQÌ¥g’èvA7Û ï½ÄâÌÕ| …€3Ë0*u›*Ò¦Lц¼0;>&ñHǃ @|€Ð߉F”&ÇILÞ‰‡k!íËÓÂèçGk=ºÏ:”ÑÅBÇÈ͸›‡•$ÉU¦ÓØx»™Ëd:ÚY \ÅZRªÂ‘“JÛ( \ΑÑTó¸'b ;BÄY×àÛ%-H£5ÿ‰ñz8 Ø †ëÕ£o!£}éîBÏÕ ]¤yRÉÂ->\"´€@J ¡<Îñ=zl¥cŒŒ~Þ§«ÁãÝtâ¿èi‡0e|Û(¨’‡YÍI(Í1‘€^·-3I/-Ôù£:£±ÎAKä3ÎùC랉Ì(Ò¸w'ÞÜ93œÅêìÚèãŽè(ïÚǬÓiܹCdfŒ•Ñ1 r·]à5“Z¦Í|)£i€k°Šá°@S ®¹6 tƒ–¨ö§Ð ½® Í Ç ˆïù¡uχ"ϳ8UsÇÕhÜÏÒôX -oûZG:Ž»Ï‘Êðià ìÄVÕh@û/1Pº«êüÀsš.øª)å,55ÚÑzm ¥LÚ‰.Ø8g̘H¨«> ™_Ò —äw²èI‹B;FûØ::{‘ŽÞmÆ÷ÝÚqGÍWð“ÄG ­úÜEv?˜tçENs;¢ñÐlë´/a´›q·\‹©L ²áϧD‹\rÍy¤:)¸g‘çCÄù(KXQ`¹æïŒºåãvcì QšŽ£6=¤1o„‰ÌA¢i£Í]úéRHÄ!p¨Mã<ÔèÕŸ®´ ÎJ^2CIL´œÃ;L¾§~…i ¸ÓÂÉ©n<a³fxï äÇé½.àŠg É Î€4$.l>ð.ü¤>Él ŒCCäa ¡¯ÀZФ•uêÑ4I©?[>žb®§£çùIfà[RGiªvèä£XÊ¢èëP7âäè‰_(­Cçˆîi;iaœÑ¾¸¢1¯4>Ö(Hâ—ã´íÀM¤ ‘ì’FwÅ€h)/óØ`ÎxŒ^ôŠõh.GW)–‰Å­‰J`íÜú{nMO ‡\)õaðr²?‰3¥ö%Dk§²ÐŽ;ãqG´#Å}§);$3mXl†nç—8ºø“¹ " Ï”AD†¢á>‡K^¥Lz³*Õ;š¥TrÔÛˆ³BšÊŒÇN = 2žëÆ>OËuð÷‰mYzÄ€=qñ"¡0›L4IÂó³ñ˜RC’ŽcŒ‡Ò"Ïã´ }§ÝÄhÄ„#Źaq#B“H‡ã¢ÿ!Ž/”5€¦Y»^£—ÍÞŽL´Vü=£}ú-Pp)fëGÀ]ä(xä.Y*j H…öq®KÅyþ¾Gh{‡ù"4å*™ÏZ ²¤;¸¼¨Ð]Ä9m,ÒØC9ÞÜ„^ôÊõèÚÌ­'¸ñÈo>ãœ!µ[¨]Q¦†Ó¼£ˆšŒ£6:ÊB>·ã#…ýüX†î?oÓDÄ´¡¦"#Ó˜(zJw ÒÝ"Òœ$>  ÇbÁÇr=–ö¶ç¡¡ôðB ¯]o·¡ÝŸ-/öª§—@íêþ¿¬T¾Q•|¦Kt„-â1…Ã*ÅÅ­i.üSÝž&eq3­Y)„œ±ÔÌŒ>¦ßNCœÉHGH;J[GE¤ANðÅÀƒ&Š¡zœ ‡d¢‡îÖ‹tÿ2Ò„ò7kÕ£kzð[8N FP•£0E×»Ž€Ðˆ4CMypºÈ3\¡p<ÑXÈÕ$$qç‹°dÚct’¯Ü‡·)έs¯ŒÒKâñô¨Ûmˆþ Ø À;sˆò•"?ïX= ãâºõhžñ?q6ºÈ艞½Èzèé²@Ó¡a…Bž*ýĸg#£âÜNï3ÎÏ£ãc@áte<”¡Ô(ÅhxæYŒÚ¬; n'*R𿝍Gì„Ãnñ5pÅ»„ÑkTï~^®Ý‘阛ÂÝÜéó¨T9¦ƒ—¤qËÚ‡O–„¯SRhºÜë<—4e„M‡2šŠ@y×}Ï©t`ëâN Ò™û¿ˆ§C„˜Æk¾܇g ·âOP‡Š=ü2 ÑoÎ ÊýÐsLæ£y¡=-h´]¨e „ƕӷA&>â¼°Ói<B?È)þ5|­ýº[Né§Q·é¸IùJ 8 „€ì™ÕÝZÈë1í:Åö^ï‹êѺ˜q9¡eFÇ~€ô S=Z¨þn8> üqx/(>ÕK'~êÙŒWq›YÄ"ÑÔD&øž±Ñè3eò™àÍÊml!ý%õès­’JÏ£½…VÓ1]¶~U<üi›• ÌNŽ,£³X-ǃ˜%Cêsíß’2ç¡ã›Ë ÚÑ5”Vã 2ü©Çù¨/ íÒA ‰šž =ýãÞe‡£1CÏhžŠ¾B=Z&¢»ST„ÁPΗèVæºbµIU†Ï¸å ž)}d…Cp&¤Û‘fÔϱØl(ý wEÒˆ éÑ>RiIuâ)Ї‹„x…aÚXä§ÂÒ¡öÌá{&$ £Çú¸%µ)D}A=šŽÊ*ΙëMA6.ðОÑ|,a„Ú¡…:ˆ„÷|„«{‘ãpäê£õÔäûqCÝ ”® ½vkd;/$OÒ”*¤qêTÃ2zXdô™S–Àh›2î­S–rô9P¨_<,™‡ 'æùtÉr ¼BËŠ}š„yo×IŸ”•CêË®:‡•Ž(UF§Ñ=`U!¾0À¥-‰ãŽ·wOé³J „v:lˆm´[¼ˆ¨ˆ‹˜â¦×¨Gol:æ¼èîØLÛÃëmbhÄÃ(Çx ÇºL’“Ì ý‘fßÇl¢µÚ @³—UF7¸ˆ< vÚñâøE£k(|ô³E§Ñ)ÕðŸ ΖÑã"£ÏTÏÇ*ܶˆ½F=æz´®æ…2 ÌPZ*tƒV]àC¹S)ùαWhJV:"ÐÇD4/|qxï(£¥µ£K(SÒb(ŒrHÓîÓ{¤@i><½.¥Ï\<“O`¬VÄe쮽¢“vƒ³¥®#¬Ü³ïiQ6x%†jèÈ ¥*F:ÚžÐYš*ø~:TâL;òÅ-ØP˜Âèã€ÒOŸ>mtºBh^3’K…ø´T£O‡üI„ŒVæ³¹6ä æG¿)=9ä¤8 ¬Pò…WÑ¢ÃiÆ1ßRžËѾ C…^’•ÐŒ4ò7êlÄ• @¿ÑfBƒ^w”Íb¢é§4’ž¦)âuê }j }êÙ|jé}f fr¦Tgyþezô-¤ÕèÑÜItI,,¥4­7Ë‘9yF|Ž 8“\ˆ‰ŽøQ*a´¤aäÌb-¯Y án£«»/Øá)Øé®r5› /Êg lA£-ÔžÑúijPR„Ñë®×!3Ѓé(˜6׉ç%Å$·¢¸,'7Àc#H>çÔ§*„³¢ Ý,u БÖÝ;1ÄSUޱj´ÐyL»xFÃ’`?mvºOŸj Ÿ ‡O­FŸêg¢*§žÚþ3‘ÒY‘/*“öÝAà6êJ(…C ÝYÑJ4Z’u p4+N Œ~úDP'Ä;¡IØÿÄP } $˜±fÏ‘Ž›1Í3 ÊWü½FŸ sŒ\Àh´ÃšãòÕ£±Öúè9ËÎC×Q¬rØEd'Z˜(Ju€$µŽƒXMÙ7ÃÛ¥9HA‹ÕH¥$ÑR{hÆ «`Ýè•Ói' ôÓ§iÚŒeè m—a4útI£9-ZÅ öºõ蟉ÑÊæ~ ãßŬp9NyYOœ—ŽGàèò¼p ‡îÎâ9 M†öÑðû©TwΆü<£akvøF×J4˜é&N/H›°åÍÓ¡ãð)m†ÒÆuœú^A£ÇÎLŸyF¯9?º/å»B4œ›dËýf¨lÈPh;ðp‘EL2«cW‚u&¡a-Ÿúá$P­¦¿{a) ר´aÒÒaÏAHã5|£/1™»Sƒ±Óh¹ãÔã|j ^ ´¯J}A=úÍlfWÙ5„.ˆeN¿,мHþ˜W°¸ÐqJñÐ!·Ý´ó\g<ˆŠ8S¾BCðV;àƒ»NÉeÒ/ðRB§f×!-fE#Í‹Ôв7Ðh‹´¿ 4Úä7ÌèêÆ:õèêùdV˜x7’qY{@r‘ÐáiKa"ô`ŒÃRð±»…nKU´P„“Öi²ª8k)mä!á *¡qßZ~ÒFÜÄ…ÁK„>½ŒÐª!*0!¡ ø/©G÷geG y^ÖŽQQ9xÅeÕèqL«&6t˜ðÈñºëä¯c<Ϊ(Ñ÷´þ«%UNvúC4í`Áv -;÷))\,âáe} £Eat?pæj+Õ£_k™t23gš¸SçøO ¥‹uh¿0"Pº¹ ä0gë¬t†d…e™'”)Ç™;ã3qÂ7Ýè:6‹87„Ò/P°»Obi9­Ò±H‡ëPúÔÑ9¤4¶uêÑR'}Ãc†…ƒWFnèà@Y“šå Ç>§œ…–Fd}Qµt×g™öó\P’-¡1#Tåxñ‚EZ”ƒUš›5+iô©ûq<¡§ã8§Š2Dá~X9T£;Ëæ®)qk96wÆq3<‡4f‡ÒDAšä¢óx}B»( ôÙÔ£k¼pU0iWN‰U<ô;üvÑWÅŸ²FÓÒ).¬ÓHcÃhRŽ 9):•/ëXÇóüÏé0íjëпí@JÚÖè5 ^+j´ˆÇ© µ&9è—«Ô£Åuô—¦Fó1oEF—×GÇÓ©®ÏBž)½ )K9¬é ­hÿEQ¢c¢£¯è©ïF‘ËP}&€›žÑ #^;p‡FsŽ…_LéSKéµêÑ`QnÊ”°%ßAH e „,ÐÇ š¹Bc´F9âÔÀš/It~:Ô.ÎO9/›K4|áІ{éãfüÔ6ÈÀóF³)îîË4úÔ× N•ÑõÚZõhœ†Ã¹9\vz93Ô3¨©@#§Át,JiEºk':/»èn,ÎyÌ Ì‹/|6øâ;iÞ}¡VZ=þïE7O‡¡XÚê„>ý²ùÑËŒÙXè3''ùúè h‹ÊiQV W~žãB‰~ÇÆ9û A"3ö¢!Ñ0v»"ÒžÐQ3n6›ygxÝVªÑ|ÞÓ_\C¡÷vr-¥ÑâÔ$9Ÿ—3Ñ]\<tÝÈ‹ô‘õ–$ú8s)¯ñ²•d¯ñn×úöv P¯üóµ.ü ^{Ún¿ÏSïúÖ#=¬Â¯žÄœ¶'ràŠ’Žbé úã8]ÐQ”\&å¡Ëán©‹.Iy‡Zot=Ò¬‘OY^XJÇX½¨›ÍÕp.(·ÕhÏé/šˆ>+®I*§NWO*N†V…– NOuŽÎÃÏ ·á¯D¢›§:”Z½¬“dWâhv îy7 4Ž„åéZ@0—kô:ç3¤i»…!ùªô<°w#S‰NÊ=pt&¤‘ÌžS”Ÿ—J¤ Ñf¬É¿_7Â$’앃ËŠ{ÓiG3å¬p±¡C¼ Œ>]»]‘IŽ…ÅÃõ íÊr@Õh£´N •¹µaʽ £¡™´µ¤Ñðv†ÌÖI ü ¡tG²ï Ÿ¯Ø®-#®­YÞÐhŠy¡äàft¥”К¦BÝ*·QDëÃ<€.¸èdîLeÞíí°¦Ã9iay£KHßo¸vÿj ¯¾œÑµõêѲ¬ †K«UÓBûBBCžó‚Œ8ÎòàA;$ôR,Ûà}º¬ÑønïÇU¾ÑhÈ—Æ÷Ýn·5X9š¢Ð«1ºì¾^¹]áÕ ŠÜk,œ—lÔJ´)Ü—C-1ExR:ë .J’*J{àéþ‚tQ=ZÎ>S¨)ÿ&œ‘Ó€*ž„àņ;ÄeFÓÃjvtá…!®&ãÎG Ý´P¾tnÒ[ò.4º!£%Ê]TŽ&èFY°£&°†=A—® tîå²ï~ûó—Mg$‰f ÑÜáŸa”CL™Ð¸#p/mTg+ºÅ R*Ú‘D¿8öó;±Û[ÒhÓÒûEíønî§M!\a³9( £?;úòÃC‡µ£³JÑÚõè K‘ºï€fBç„sNAûS¥öµƒòAzj¨dº‘Fyª5¦¸Ûíæ; }:ôâ| ¡?y"«”ÞÏ¿ïv=Ê9hô}”‰²˜g€–ûTBèq¹_i<´‰Ázízôk•.“ ÐsÞÁX˜s-Ú1Zç\µ3øêŽY±gÐL/pÕ<î/jFqœÛ‰08Tq^ÖèS‹òçÒ”²41ãfÿÝ_` ül’ŽJAÈ?›?-÷‹²|ö»6~þ‚ùÑ:]µ;ŒE4ZM6š™¬M¢‘‹}¾h¿ò°ѡ¥ßÅS§ÍÜË3ZŽÜá¼Déb,ú<´“ p`¥Éé/÷dì>‡0ˆ‹žÑŸó¡§´e´^m)½öüè Ÿ®ÚMDJç*¹0Z%CMôe\¥h6ò€Ñr0Û"¦ñ%Y!-r ú¾ƒyY£-Ìtu¿ééì’f5Žæç ‹¶„Ö‹ú³w =ºŸU®M<„›õêÑ\(Ë ƒ^;Fù\íÎAíÈE;P9ØD+Ð~ÇZ¶NžÒìNY†ÓDuÛÍÌ—Ú¹ˆÓ¼ëÚ'ƒ ´wžz{¤œ ÁPì@!¶þ~`ö^Ô*«Ô£‘ϕרÑr'¸°6OrÑŽÜ•íhÑŽ\NT>([:‹xœ!Òq“Wâ ¸x…ºÛìS…Jf»˜xD”îJ*èSnrјx›8XÄ9%÷g¹ç³jønÈm°v•ŽÖÖêÝ PÚ:ËŒÎ%Žr­* Ðù@–Y`ã©Ã×mùÌ—(oÆ€sS¦‡ xn'|^̈+$ ž¥Q~¿ûÂÀL@ãt™F(JS½ ¥Ãܯ€~¶„vrmsŸášõhBƒ¡Jï«1/2š£¡ªô  ôÌ•%@K¨ò$‚”#«piWDlØâ¾HH#À¹ÀèPœ8˜Ñ7/èû ÃZÙ;,uh𓢇Sm½~^’' ó«•êÑ7<£Õu°t`™TSC=òMô@-îŽE:ÌÁý‚Ànj(\uòFšÒ@@C GPŸÊq¹8»¯ðggêr*ôƒ‚PZñµâз<ý¬zì?"Ò$,a½D¤ck±ÂB_ ©_ŸP‘Tg:ŠrÌGš±h%ZÝ‘iPL2„ö²¡SøO‡ ˆˆþ$t‰é¿¸;û~ÔbaÞp¡ÏІÅ÷³Þá‹Ý[ýÔ”èý!Ô\®®\Æ™3GiIYdþŒ0Ú‚ ¡‰ÒAÚEq»î²[[‘îDxà°ÀÜŒ:Ë”¼ÁR¾ßhÇõ °EµðÑCg¤sßäŸH2’zýzt¥z"gºï«Áãã çTëðë‘NY¡I¤Ç:¼2‡@›(è—C‰êu÷̃øÇ‰vËS‰i“ÀÌžîžžÁà³Ï>•O¥Vq ÜäÏÂÒðýæMþ,*ò¡ìÜÜÏÿèþؼ¹Ÿ…ÝЧâÜÐÏ%Ì7¶4K•ã&ç?ºù úô'è?¾Aßt;]hòn:uIpÚø£¹–•²ØôOǶû½ñ»SðíNMè€é‹ëÙz Ófès™”X‡”ø)>6w dñ-”ü¦¬M'J1œLš¸½RMi»K~Œ«ŒX¸¿äG®b“IOift#9„S ÈC«jŠ[íÃo}Þ÷—”@PgP|Í,&VЊZ ‘³|€E#9œþÔª¿µÊ¹â TŽÀ…¿s›ÂjM¤šw¡Yõ•°Z«2Ó¸F}€j†Ée.= >V×,3åùññ2êÖañ÷Ò[€ÌÇÇ/²í(Ùà#‘ÃrhºV8<‡,å1–ˆr„BºVùeò?S•ù–°uºÏõ A;ÔÅzùªþ ô¢°œº¯WÎìzC¨ò§|K‘¾Í‰~,…nƒ-@AOŽSg„þ?ÐB„Ö¿ì~)B™Òø-ô]TùÏ\Cr„}‘½Ù¯§OÂb2&BÍàÐCª=?~AžÖ+£.u™ [ÅP%ù^î‚ó†»Ôì€d4^ª‰É^&AóþKUN¿>f‘Ç¿šN]”P·÷«¿±ä Ò˜N‘ÇŽ~¨› AãÍöúGññË õà{‰R€z„÷_š½ügh&t]¶”:'êAkf†P!ÇÚã¦N WÆ(}y;–tE<|¯Œ%Ü´‡qE/±ÃÔH¨[+¦îd¿8,fÖ×î’úØÁ“¶NUëPn›Ø *žî¸2TVo˜ÔóòÿÀrüÓ4´DÖ­Œ6´‹Òº¡ü§ÿµë){ æ’w* Û®p2”÷­zNð&6cŽçÊ0 ]xP9X‡ Ÿ±îTcd¨ÅXÆqatËó + ༗v± ™ aæß¦ÓB«Ì–þS•Þtú#„³!³ SÄ@©yÝ© íz` ïf$} êñKŠó·çÇÏŠô5£Ô…‡Ü;~ñ£cUö¨ÇÃŒ¤Ÿ‚»ÆÆ£ ºaèæ&½J¨O‚)Ø&ӈǺ¢ÿüx(lZ‰³*Nßõ§Ç/ÞeQ •÷­Æ@¡ûhvoÇxe<Ýsí¹ª¤Û%ï’Pgl:…(°@Ž)Ùv €(n:e÷@E¬*Ñ·t»ª=¡]¢Ä‚¬Œ§[#8þît`!îwUwésösÿ§0ô¨…!¸±){&XQx’mA?ì9ŒßcS¨¢G•E®û×àk&ÕÅ»'G39‚á‡8²îZU~‚!8ï ðâìË•×,ýü.\„7E§~”¿ý)áæUºM=Õx C¬„SÕߪvÎøqhÚ‡ Í:¯*—×äŽ&`®‡3]Îna ©ïeJøƒ ¸¥ÎªÐÐCî†Xƒ§«Ãšw¿4-‘v'ä”ùá Ð-9ˆ#8/®jv‰áú¿”þý‹iga^A,áçµ£§àŧ\ü¨úÉßqhñ$nè šQ¸—êç•YÓ ÀRögI]íêÎþƒÀ‹Ä’O®jå€ Çà‹ÌQHЉtfy ô‘¿ 4;¢èVÊo“ªH©U+ Ñ/~$·ˆ6%ç-ÒœvDÊN@ï;¬BƯ,•¦–$)‡±• ;zD+%U½ÅÁõwŽÐ»Ì¥›åd tÓ:XEÈn!´Ð¶èøøó¤¥Wz(À« ÓŠ ´,è7—Põ3Õuî3$i¹JE2išÄ¡d£¥@©FHw Üâ3Õ­ïžüjCcÇÓ£ºêü4Dzb>Æèô›ùœ¿˜N¥êížÿƒicâ»ÖÌ\rê±?OU-LN§ÏÅ|þk¬ÓÔvá•3g‚¬!&?ús¬æåá8ˆ wgÆÃs³ùàDÒéïAÆx¼0nã¬/„ªñîa[óS=óª”#0‘òqAySwo>?_ÓHÿ84‘iè¯Ä’¥…’°î§¾î@…Úâ`-(U‹«jÿ™c[!ŽEC.F©®²Sº= d ¶Hð¿«Z•ñàº%¦ÆÒÅAoJA➘º–^C¥a¡fWu}¥«ÿ—àCJÖŒ÷W†öU®F ÐÃA“ñBH6}¦Âja¨Sb)–tÏ0sHßÃzTÇFÔèWƪåt*­tÇÅËe“‰Éw ÅSrA[¨{Œv:”®ç¦Dݺ“þÔ‚#8ÔØi°9h9Õ½{®ê§ü‡Ê.óŒÆ•A§:¢ïï L5õ© -éÝøf>#h:gŽ›Ì~A?¡C*Lš|â½XániI“˜°#†üVš¦:?m)ˆÀ,dJÐJDàÊ^ü€u)K½≔‚@÷  `¶ ¢L êG·ì…²B¡5“˜ÝâyåðkO#¶MÞx¬Ò¥Ú6ƒC|þ´ƒë‘Æ ©0²C2–ú mžëà@ÞœBï?1ÕFˆò/tÌÚ±ïסnäŽòwµ/Ÿpžö…v-LÜ›‚µMFGh "îZ.¦í‡­(ZœdH{úŒë*Q*/z\L´¿•§©97ÞÔ%¨5G“áâ($h¥Ëï[ãP¤‘¥ 9èóxŠe ]ƒÿqê,DCj8áÔý ]{B?uŸŒI¹™ç12kѤFüŒübbAÚû~з²x`¢Ñ²ÔIúÆÁ@ŸE‘š+LDã^”Q© Ý‚_¼+pò^vƒ§ýTûÐ,Ž›ˆú°ÃÅaíõB‡3ºd«©b²TÀ ë)øÂÂÜ|í¥‘À.Ù‘(-Û4À)‡›í%±d‹ÅãÿØ9—‹Ì)i¹{*ýãY~tèoM!&ðæ¥›L‹ú%¸ ÏqŒÚJÙ‹µ#àtÄ4dFÐ/UJ] ²AÇRèâ•-†Sµà¦<™¥|™£æÜÕœ-å‰õ]n‡B䘳2ç‹·%Ú+¬÷jæ ¿I7rú0 ¢O×ú `H=4–=·›eΞÿ A£òúÌ% Òäª".³i¶æœÏ/úó‹ u¨ Ý óÁ<8˜ÏsUô bLµ¿mèÎXâbY‹úÍœ ûóÅu†º™ß-æËÔy¿ÚÌýÊÁá:ÐËúßf’fD¥ž:{ÒÅô´` ,×óu˜çïèPL:.H]Wt)ižS–¬ÍÖeÕxZWršW`}ÔÓ¸¦¤¨sÐÈœ:œqÀÆB+‡Å@TXéõsV‹*uvöÁ"S€º[ÝÍ2Cy¯óÆRÍh ×_ºQqNçh#DQT€º_ 0S h?Ëå®Å_ïÙ­ÎXÍ9Áÿ{‹â:£"¥ OЄ’SιYó¼¼® Ý¢Q.áïJȈt³Ð]2eg`¥î|h?ÀEMÐ[‹ÒbŒˆ˜Âa ã’¥~UûkAwÀâq0MâÁbI™Óð*>-SgÓ¡Ÿ¸GUÚ±4Xê-·¨¤Ž¡«˜רQäQ…•.ƒ®|²¯.—,‡¾>çœh&Ä^ÅḰÝV%ôzÏ#F"Äè­¿XN^ÙQÐúýåР셑˽µ˜«d Žú¼šÙ‚®¤~K–TŒ+_'žÆÒÇÉÉ—CŸÇ´ñÇÞrh+4–‡xþšQ”`B3FKÕc.óÐriW h~hReñÖ…î ô˜G–0÷¼äÚåéä4[,®ôãÅ"5St‚Ëz3§E­f7ƒnÙ› ¸¸Ò<ìÚ`/O5–ôâêaêÇ.®Ÿ¶#!ïlݨ ºžVO& n;é¦äŒÚ±ø  ¿[¤ôeݽ§p¦;Bº5¡×ާ©˜]Nh­9e˜Ó‚FíÐ'±™™Ä®NJ«EÍ2½‡Ç²²É6L-½¯Ã<)'iY>FR­îð׫ô}¸o¨Ä]ºEA êzÊá·Õ ç½RèàæB•z`~õ}¿šÒ b²_¯å öSiðáÜn;§W$jvð8§öÕÎ{äZëÓ›A{g1öJ¡I;†º—Óô™8oÁ£Má}JÐó‹œv<¾Pêqp•ÓƒyVÔU3D›C·h¶áóT˧¶ 퇅 M`ô}[ÔS§¾¥¹‹;Ê“rhLšõ¯{ôßá5åЗTÝúÐõL^§–@£v¼|­œ`ï®dô# Ó!ûµš^ßP·ÇyIvp™®E½Àššôó’Ô‚Þ žFh^.|Ñ_\ï+õh¿[ ~Ø®< -jBoO44“îˆ,-èëïlèïÒ¢f™Ž"¨½³tGHñ}úœ¥}ÜûJ=zñ8-j¶—†¾Í—.{Ü4—ÑÄK©GïÕÓðÇuC9—æ;TÔsÄ飔¿„ʤøØÐmˆ GÜöçßžh²whš¯Õ7Öy‡FÛ¶z§_¾¶E}!Ž ºÞD=u éÁ([1{³™F:a¨ ï£z(hT4z‹+“KèÏf¶¨=ôTz£xz„[EÖ ÆµX¤Õ]F‚¾Ä¾¸OK ÷zAéì@%›p Ô™¥\Ø_oWÎPÙ$žfßSP7K˃Îú C|Gê›…&Eÿ?ßÐj³^¢Ø_o×ÜÏsƒxZm8C+ŒYà°G³sҎﺃGôÒ½Ù+æ¨EÁg±­¦Nzó€Õ¤&´ >ŒR_¨oèã‚´ƒ÷qÕ·ØoÓe~ÐZIµl镹f¶Bè±ÑôѢ¨ÏõzêW$o¶0ÊpqÞwZFa´¢ïL/Ú ôéX¯3 °)tóˆiý0k ÷wÊ"4  »ú>A“Sü@B6‹Æ™Ö扺Û ÛÜN†Ç–#à™1x‹Å[Ú“Qø>ÍÞ)£÷erKŒÁg&ùÒ…ÞÛ‚öGc9‘≱¨Ìôç%ÉXͳh5{GòVÛ»˜„xÍ*Ô3xþ&ñ4ê‡À Dyl9f³®Ò‘X¥Q=´šœQžÜ:TY|&ŒóºÚ±ÙþÓFÃQÑd¾%•FŸ&íXj÷KßW“ÿ8R\\‘R¿6ú*à4D®kð6ÝZí‚Éã…®J;”J?P¢õ•õð•àß'JëÇlNVˆÕJNûæ§}úÉv-Jµ/,tt¾ÅWvÚo«Y,4)ïn/^_{ÉWHzl˜5ýx˜E0­kãKBí*è†n*èn¢ÔÆ~€¨{`ÇuµcShœmÉšóK%8Rß'14Åš K Îˆ7‰zƒ‘G]ϲ9tˆÐ³´vØý Uìa ­ž˜èÇ ¡«VÅVB7êV°kCk{ðêÃ1€‘tGAô‘ek t­ù,›å§¡tB10öÎHîíB uG¤SßtD(.>·ï ^瘻‡µÝô5±y½ùË,ÛWwÔC¶Ìo)}±{âìߦ7¼>ª^Ê[A][90üp™‰•´5 h‰L›rˆZ»De U̇z3ÆÂÚ‡¿aìáã ¬£#Ýr0K\‹î‡/h½ÞIõDmíL¨7U¯·Ú"ômažx1Úq£)h•¬‰¡ÕåÃ-æX퀿…xšä8bñÎgßÙÆcñÑ9¤/¶ùø`”:숯bñ¶ñÚ­ö‘+â=qi ®‚ô:Bo¥¯§¿¼7JýZòp´¿R“›¿±3É60‰§¦>g?«qê‰3Îxåà é²ù»äÚkkê e<©TF_ÊÂÉtÝÕ)Ûƒóx •=0‘‡2ÓÉ-16¢“GÀ&D½éåmBËd›gÊÔ„¾ú5VêϘmÚ•ñ¾Ê&/Åje\bŸøªÞÓ […Æ7s¥ýáUìFÒÆ.çqÚ'J±’ÅÛÊûž4g([wµX­rqtêÙï—©U¶`¨G,2;j«‡Þ߸·éãçÔ_ôíyÅ=¶ÊP|;ïGd#©Í‡ê‡‰™.“´ú‹î‰ÿ–òh¥—n!žöý]\ÌkCÇ› dß2oCãòÞÚy<,;Û€nFz+)eW®E¬h¦Ë Wº]>.XgIä¦ißbyí}úÊJK¹šÅÛF<Ï6Kz3†Ô&fúCö@£7ÚPãàö Ó¿¿™¦­3(Л—6ÓÙc›§ õ‡9…xÕ[cÔ¡n¬XFBÌuìrsl±ùÐã'ó |¬`ÅÈcKïfޏð@­…’ʤJ:‹°X8øH#œ»j{[î0»ÜE)¢œñÈeî¼ÇWIÔlÚhŸ’´™ÎË|hC¹ƒ££ÕíA÷˜½ ú Óïdk™žø›‚æ˜1W>sý‘ ;#Ü]¤}Ëeþ83 ¿Š¡¹(Þ{eèÕßÜ­ß³™ö-4ꮽ TòÊ¿eeKïßÅgÅÕn0å/kóÞ£zD+ExåÌk(Hk„YÄ¡ ·x–Í#èæ.+·Ê•ªxºé@ñõÿXMõ¿cÿ€GöÆúY¸ØL¿/ iÕA=¡ççYoè ÀT[øÙH¾4e§©ñ<_WA_4Ò?øôºm4`Ëûaº'ÒþÛ™]Ó«‚ƪU κР:ózÌOô3]hÉLOCÐ ÙÄt3†FÁ¨æô—«ASZ}‘ùôƒ»jéé­r•N”zW-. së_#þû Ð<´oA72?~Œžâ3œißò~¿º­•ú7܉˻¹nXº:ž¶Ùš´Ÿ…ö‡&4ô[¿°|n ±D“ÜKbk@W›im0|G‹;H³‘ùA qÄÕà¥V‹¶-ôLœG¹Û¡¡u,ÔéêxÙ¶¡¡±ºföUv¹ '…©'^7ü¢&æ>àqc^ðÈµîˆ ß6vYèªØC³5} º‘ýAðåôÖò1ùhIt ¼ ½Ø®Àƒ7ˆ›NòÏ5 tÓ· ih| ŸZ»=\œ—öÑžbÆW¸óÜÔ—5¡›6› ÝÌC7™z2þ+ßÕ¸É×;”v©/kC;–75æ#ûƒ*¸¥½dÙBù–zþÌ“ÅÛD¥¡›NúËízòT-ã-+øëÝ B½ÛÒé†ú¬ íd+Ñœ~캳?)â _C²lÉI­‡CÊ¢»¡ÜPÿ7Š¡« õJÐ~Çl¶SÄc®L!2/[+‚6ñXç’Ru’®‘n]#ÿC\zd?–?‘@ö—½Ù‚Vqm7n' Cü”6¾Ç©b —Ò—Íg)J‡dC;©;º³uh¿ÅÊÙùÐ1ï,*`V:¨®Ãj'E]úæ•ÿ*èÆ ¶¬,§›V´,·”öøË6òÓ¿{ÙN.ïô'è›Sþk ÿ#MÞgéAÎMû\Oïèä¦}.‹§›þ¦}.òþh¸µ wnèg™v|ö'©vnè§óÙ§òG”ÿ ‹õÎ ]IEND®B`‚MHonArc-2.6.18/logo/monsmall_t.png0000644004705000001440000001521507451276301015743 0ustar ehoodusers‰PNG  IHDR›d¦{²rÐPLTE$‘Ú$#"$'&&(+' . , 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<‚<ŒFƒJ†G—KƒQŒT‹Z˜X[£Q¬V­Y¦X³Y¾_±U¡MŒd–a›bk™lžs“sq£i«l«q¦|§w½~³zªs†o+ÂaÆcÍf×kÑhÚmŽwTŒxg‹wm¬ƒ­„·†¼“¼–ÂÎŒÈ…ÒØŒË›Â™ÚÚ”Þ—Ö’âšÇŸÎ¤Ò ×¬Ü³Úµæ¡í¥óªù®ã¹ç¸û¯ÿ²ý±ë¿êÂóÊøÊûÑûÕý×ÿØ÷Ñ™‡W—‚S›‹h“ˆx©˜g¬™x±¢s£`'_ˆ,f‹,c‡7l‰-m“)h“2n’4s–/r™+z¬%}³)~³%~º2{£Ir‰'ƒ½*„½,‡½*¸%‰È'‹Ê(ŠÈ#Ò%ŽÒ³¨’²¢–ƼŠÂµ©ÑÈ™×Ñ«ãݬêåºóð¹ýûÊÿÿÚýûÒñíÇÚÒÈoîð`tRNS@æØfbKGD︰â¡^IDATxÚí[ùC×öO›03LN€$¡@Û {X”%©€Ï”¨ÕŠÔ…ÇâÒö•M(Zx°¼¦ ´(вˆPPDAÑ*HHUÐWQ„¬H\Q‹¾á{ïÌ’VûÓ÷ü’Ü{Îçžýž ,–ÝŽŠŠúØÓ/"*rMÔ¯¬¿€~Záçù1}wºU#C½kV¿ïà S„yÙ;|èàÕ;082Íò;Ó©c9Ý™þËÞ¨ÈpG ÊÞ+L!spxõšÞ¡)Xjû#m SŒ+¿ô¿G 06›b(ÏöCÇõk®j§€áÐGGMl(:Hvˆ˜œvðúšõŽÚò€ [ðè—ä\Ì”°uŒì7–6|ÕQäÇE؈߃G]q$ÂÖŠ[Èb¶LZ°9:Fõõmˆº9îFnFmèë‹rtœŒMÛ¿%Ff£ãB2®ëÑ? žë'r¼:l(iÕÌw£AQ ¹ŽN@c³EûFGï¾¥ßÂÝß¡úµýQW†§‚6|% hdèwc'éßòùýÑÑ}"=!ŠûÈ-PmôÅæ¬28MÏ\€Jˆrƒæ! .ZÙÛý±±e‘}Sb`ÝŽŽº=ŧQÑ·§\>Üé »øblì¾ÈH‚Ì â¢B€pn6…X¼QÌz´ŸgàñçK½¥óI±¯Çô“§ÏŸ,H<ìÃ{§D7rýÓIN7ôéõ)M=Ünï!,|òüé'¦ _1I ræó€­ˆý‚؆Xa€m +Öv£ [ü`?òý“32‹Šv%—Œ^Š%Ý—_ÜdçêîæîêÞ3º‘ž(£‡£z¦‚6ÜîC1²Ûtq¹;{i´$™”™‘ìÏG‰ýÄl—¶±]γù#LÄeã¾.èüäÝ{ÚýÕã±§q®n®V€lÜÜÜÜíç:}Óðƒ›ÑS­ê ·wLl 7À4îéØã¯&d%ÏG]|q6W„}´ÙÐE×Úr}E˜Üá%ï§ôî±±‹8«µµµ+¹ä|×oSdþ(ï½Õ?yÍÐo]ç—šãű±îô YÅÉ<ÄEމ|¹¶k¸Ç+x¸Ï%Bøo§ÀïÞU´=±ûÉ“7š$>+VØ-ö¢;f²êFÖzïÚÉ+zbº_<[n·b…„aXòäIwâö¢]»iyÛý DùÀç)âN6r-NÈö¹¿#yó¿LOOßþõÖ”`éÒ %% €\ÝÜ%aŸ<<ß}9Ìë½ÈIªë¿¢‡fäÊ$µ E¾çv¹ûüÃ'Ã$în®ÀK””\X* IÙúõv ðËù<Ûx߇-Œ»f|²Áp>È1>>qBS"@UU_W__ß´cùèÓ÷ظڸK~—Ÿ<;ïeGZ[{¬º¥5:Úõ[Ü2ŽQí­UÖÖ¤×ùgO.û $î€á‚û/žŽ.ßÑÄÔÕW©Sa£üðÁIþУðCP,h#‘V¶ž¦édö¥±±çû¬<–^¾Ü}aÄÕÚÒJbåtÅH¼œ´ÀKkWÉ‚ Ý—//õì¬÷=»”}’ÔZ)E¸ƒ0ñ3L Œo–aBº DšÚéÖoŽ=]Ctáã?ž†ñ­%®6µà=£²7ruÜŽýW pƒBýØ °q•XóÃFŸÿñx! ÖåOÇÆ~3!)@]HÁd›§ê Wrq\gA„Öýtæôé3§êŽTþíþèãMv7óOÿèöpw•Ø€H³XÙ9ºEÏÝ»+¹ædg% 6I\Ý=ºÿxzÞÃÍÆFb·éñèý¿U©;eýTJXÄ)qœ»r5ÝúHÎ Š¢<ïÔòƒÕ_]¸|¹ëþý®…®îVVk»åç—€ðQ! ­mHKý/ú÷Ε;Fo(þÅ^`IÚX“ -9¿ÜÎZbeåîºò¾|ùÂWÕËS½y¨0.ˆ+ÿèÖ”ÐXÚÞ† )ˆó8;—€¢èéRWŒ”tÿ÷|˜«+TDÂçš[’vú%óJýÚwEïÃÛv¤¥9—/‘@eƒíaçÿÛ]²$8×¥O)ö/Jœ^q õ!0LÓ«pZKA„ûø¢(½–y/˜(/üñü‡+Àw+ Ç ˆ´´ ×sº×è×k7ô\-Ü ,#­Ày¬ÀFiÅCÀèL¾^©³?߇¡¨ïƒ}BÁ-®L߬jo…“(è¦|-ÄJ ùcîù%/WˆméãgÏ~°q•&dddü+Ù_jC±s'ì:´Ž²åuãÉoøÇ9à¤Ô?ù_`[B ÔÕæ‡gÏ/…Ø\½.AþåJ±…/èQ2Ü85ÒÐ*.\"{$·_}òP&H¥îV‚…Ÿlò’øocêßžŒ)p"ssÛq»ŽD÷i‡†´}ã¥ôv„­¹9pMiBƦfnó—xmúd¡ÀÊ]*•dŸŒ^bÉ@îÀîª!ÖËi`•ŸÜ‚T(ö)„»pÅWI_&¤gþ+!!!)É_š¡Wþ2=I.°X„ŽcϺ«NNW×é¢t(|É%=3õ t†Ô?) 0ûWfz—I_­XÈE JAZÈýV °þŒ†¯ÅËA4éÇE3'øîÝ•”°GïÏÝÿ–òÍß}×*œ÷{¸ŽÛ…ÿÎ@ ·z÷]s¾ôß»õ¶ìIHÚ¥÷g¦3Êõ# D‚<þÚðŸBNwÃÉÌBhÊž·ßõ×ç¼wWBºž€ê<-ÍÍp#ëly³]7Â@37·ôLÈ4Øž mïnÔ~ÿ<¶©ÐÂÌé†ö )‘"Šà\{.‘ wfИ¤û€Û[¼ÍøIUÀ!'ÜÎ0Ü " ‡Ÿûo3\ ¶ƒ¶CO÷ ‚#¨H9òJЀë"’“l6ïKšQñÄàÐÐÄïíâöî ”Xp·!6xqdcÛmÍRh $Ðy$††'¦eÐmÑÞ=_òØlR.r‰ýâö+Bƒ÷GR.Ä1S>ä¿'#9$4GUYWßtX²m!¸)IYMÝIÐÕ#4Rjh¿½{¶…¨7Õ×UªrBC’aèî ä›b¸PN:F¿:4`Ö_æòp\ Ä ÿ„ä¤àÔÊ&¦*·V¥&YÊÛÚÒØd bã­>aiiímdý¢„Ô*¦ÊÔà¤ä pœ7÷—W5¨Îç侨Hé‚á<Ïœ#§NOPS^¢¡ê@6±á‚kÛb#Ö€ %ׯ s@¥%æ5é19u$Ç“‡c.Jê+e_ÓÑÐæb\HÊX¨>2xìƒÆªvýÃjÄÆY ú#{B¥l5är*SÈI!.Þ¸ùÏRîdÜâ‡ü}]DöicªK6@âuÎê¿Óþö÷Õs 㳸(ÙPi4e]ûøî·e𵡖ÉóÉ%•“دK L6J}^\j"€p½Œ’Xr`JUëd•yÐs¸õÐXÚõ¢y\u.Ÿ‚ñé&U@Èv}·+NÆéÑ®‰Ü»g{H€ªi ­åÎ(Î'Z¯}l¬›±J‚Ä1鎺‰Öù'H§W¨v„¢Ëä߃Ðîñ3 ‘…îPT>EmœàS·CŠá$¡Œ½ùFÐ@;½„ð“cÏ;¯žbÝt¤0GµcÇUViEc{K9ÈèŠlhl6EÈ@ö)oio¬(Í¢¶åi¢ÕçyóLîG,¹öº1ª£¾÷±œ‡ (?`kZNaaNniYã @mj  Žö†œà¤t&*Œ°¥'ç4´wÀ•ê6¸«±¬4rIÛÀGQ„'ïõ½!4ÖÝèæP> üÅe'š›Û5†ÔÙÞ QAÕ }l ÆP5´wmhon>Q¶˜"›,âî›bc݈W ¾ÄżÅ0è:ZʳƒÓwëcÛœ]ÞÒ1Í–Fo õY‚¨"þÆCci·ÈQ™‹Üå—©5Ó0mv@`ú6M°-=0 ›1攤.ã£>r*ߢ}sl¬ëö²y ‰ hѼ„:jH¾ó;4¶wœùd@mÇËÖ·€lžÌÂþú  ±âãHNà‹Û§—ÔÙ^¢Ž}ï]x‘]ÞÞ9ýŽöÅ€%‡Œ‹ÿó.ü%t÷³Al%ßóèô­IµcªÃf ê*bZ3½Uzò•.ì Ÿ½y$@ê÷a‹÷ûÜËšBPǹs- …¡fŒ áOÒØHÂ@5ó-lh9wnª}Y÷|ö‹Ù>ñý3‚{1™cÆ m7DÕÒPÓPš’ìF"°ý@æ'gèâ4#y>¬¬„t NI) [ ¶‡rÌæ ¨åk÷F“÷¾ð›¹-Œuž;^³35Ø•ïLšpè'Bº­¸È®õnEÅÛ¤‡~jÀ1!ù®Á©;kŽŸÓíoÉ%MÄ>„ðýª ¤‘h™²$Îì7¸¾£¥6Ë[À35åŒ?·¸‡{‚~®8YBß$ÉÅ _óÄï/à˜šòÞYµ-ƒ†`î=³¸¥,Z;Sl¬ÁUŠ}]A(‚xfko) v6Ój<Ÿ°«6ÿî46wxÅ(Þ•À71X†˜9¶´ËòD4¨kŸbÕ›ômÆ4°ò£G%JàW&ž)‹, ž'±Aá‘Räž„¬Etß»(‹ºaCÃb¨:ÔrQЧ ðCeÉ£VÎ(ŒSÿaaqvTð™L˜’j¢ó|ÿ„"ºñÍjËz~üxC·½E þóA-ÖÛbB…´]\XØ3v6š´½±±B‚3q~瑤ÜÀ23™æ·(ñ¨æ?ô]æ?š£‰L›´;3ܦ$$ÉÃÑ }salì´s¶×¥á!÷ž)Àá¤gHâÖï¤L½¾rOR©ºS‡­S]š¤ÿ]f’wÈÖÄOЦ"x¦÷¸ÂˆW~¼ÝPÏ3q+ œ‚ªJ+š,šÝ¦9»˜Æ¶ø¬¦-Ûà2S”VuèÐ9pw¢'°"7fKm1J!†"žªêC:úñ;ý›LQÊ1º4Œ 8øjͱ}軿ûq|cµÊA1¡2f–×7— x˜ä» h‡}§w—Ú½tP;Shl);A´Uû®ïô6V'Áx1÷^Cжdã'XÚ_O(¦8-´YÓVZ»ˆºhá‹jKÛ4Í¡iV-úúG}pÁg[F϶ߖ („èñ?tpÂߊ·‡ÖªÕe¼-!6Kï†ejumèÄÀ©(í þÞ„@‘%¿Í¶8ÌBtÏ[AHÑ´jÍñÒö†?„Ø>ü¸¡½ô¸F}`\QH¶{" ,n–°E 1ûÏç†ê±¯Êݦs&­½ì„¦!Æú›cLƒæDY;§sÉm¡ÙUz›Cç~n #gÛZ?1W!˜à_™SP•–Q ïSÛ“rÛ55 bÞ‡sË÷6uYM§¦=7i;¼g¤UäTNœ+@¬àŠýÖΤþøX„ÃW霹 ­²µµN•–± Ü4SÛ4šæÜMÃæõÛúÍ ͉Üf¦-Üj·e¤©êZ[+Ó t¡¤âs“Ø™ö•:Yg!l< ’I*j^u0U•Wu8»´=ù¥jMgÅf8€#Öl®èÔ¨KóA?T›}¸*O•zš‹©˜T€³Ì~ÝLûÊqÅ9 -Ìrk5eÏBjôr2Ê<,ªiÌºëø¶·g.›=·§÷[«-·ô·¹Gàò¨‡¤M…”]«·’„™…Ðq–ÔŠýÕMJ¡R(É©¦ìI [ ákkT[¼èœûa`ÀÍvøá¼®”AÅåÁ5•…ôh×ê `¤ÜtU;[ØXßú‘¾|Â9QEÛóô™ƒypšyx'PÈÌÙe}Po}ËÎÂ;È#šö‡á„2ïàzÞ©R%:|_ÒïÓY+õЪN>\ áV1±›vÔAiyà–^~ ^Žq7šd³Éè»_‡+Wk4Pq§ëv0¸“U<ãú8ÍšEi«Êæ°‰Àjf€öS50¬ÏáØœO]Áj6°èX`m¨¡.Sùð»ìzj ˜÷3v«$Øsd³hQHC&¨OŽND ZôL9ÔMMm'M»æÞõZ[gm Ôi94ç)UîP9>¨‰ÃëŸ_®¸(™¥ò{FÂá:Tw€´Ö^ÖLA©Ø2DçÞ¡-ØfP4'vÐAšs˜9Õ÷JKYÔìªÅêù\®\FûÍIÕA**áp©±‚ž~Û7à±9ô}KÏ+áȨ’Šƒƒ*ÚQ›–)åŸ÷Ì! Äøºx•ÓSd:)Pjë„ {-èµWĶw`=h„úc×ZHO´Ë½\|cf熥G#‘\ ƒ¿9s˜rp ‹| ±³åg) Í›îþúô·~½»‰²2ý•:ŸÒ1›Ãgà¯@0Œ;ãQÃdºå€£Þu§ÏÔg3Ù7¦ÜÚRz”pl‹uÓEío²XŽÑÃ…ÒZ˜„ó˜Ì›]æt7Š¿Ù…?QÜz>F¤žªÏfbŽÊ»;ké)GMˆ—Oy¼Oµ,VT ýYíÎ]þ…±]*•Àøëg_m,Öu[¨²ƒé€h-„jkþ¦™Á¶¬èµµí/›lô—Giï<Ýœ­ ¨íŒf•ÓÑ€!$¥yŒÚ²Ú jò™éUìÿá#ºŒ™„åC¥¶e1ŠË“:“BÂaÖ#Ò…̇—r’‘ú" ™g‚;Žj}˜$T‘«K™ÓœLáùÈwfŠcJúíá]Ç”F˜@4gw¶1æ[Jåú»Ôth)cè¶0ˆ™4êª7á÷`–î “°)¹œ¦4TÃÆMs,_­s7íÄ:­ÎáÔù0bÛs«™¢Âá*ß¶ëö\4ø¤^$hÊužõ}¯þÂÞïu^X®Ñ‹†“Á(wfcûéi ^fÎ/gL ÍÖQFØX,¤ÚKX`‡©ifŒZÎ7—Íll?= ýSDÒŠ«¦žÓœÍeÜ 4–Ø–e.¾Q—UÓj#ƒÿœåDGÚÕJ…ȹ|¤ ¥Œ»5Æ<)¸ÃèS]Ú0aÔrg‘B¹Zûv°±zbÅsïÉ\*k+˜©|…Ñt#zü ªl4çž„¹Ãı³Þƒèh(^Œ ¼”¦SU”I;Jõ³›g¸ÆÒʨU§šRx"ŽK&F½2—Àp^@êb ÔÙoNÐŽÇ=ü¹{œþæÄ7”ç5.N àá1÷Šömacü"SÊ…σÕ˜K7jàÚl¼p3Ýû‚ÜFâ„Ê•²×üÍëј89c{RîVÃd·sßö¯ëý–É"eTnödc|y\ÌÛ©W:ºédKblÁXLK,}/[G¡Ã©Øiëô†¿ixUÒ^‹YB°QoîìÎfIµ“–éŒÚ Jªú€7Ê&–Ä\Ó¾¾¼×çKpÌ3¿¹!ÿg&ñNqîgÒïÏù ÍùžÂ!|ß:4ø°A ®¼E¡Y?ÓjÛ0Õ?yl ÷sVè"¸$Ä*fï‘ÂKhð³.{BÈňEÍÓªm\qÍ‹Œ+$ì»>›GkNC"ÞB”-*=¡>›¿A;Õ"í†ü³ê¥‹06ê²'ŠxkI×Xs+}ù<”C„wÖâði¤…/ÎòK8(ï»ò¯Ñ¤_ã…:'VŽÿŸ—>ÁÿGÃä±sPLÿ—üK&M#7WZ‘Ü 1†¼ä& nÛ&â’V+o¾Íz0‰׆Ûf\‡5/ù…éí5\3Â6|í_gP†îôDþcmÿK2Ò¿ö‘=o·Pý?M¢ÿ^;é&IEND®B`‚MHonArc-2.6.18/logo/mhonarc32x32.xpm0000644004705000001440000001413710251713555015750 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 '.‰êu÷̃øÇ‰vËS‰i“ÀÌžîžžÁà³Ï>•O¥Vq ÜäÏÂÒðýæMþ,*ò¡ìÜÜÏÿèþؼ¹Ÿ…ÝЧâÜÐÏ%Ì7¶4K•ã&ç?ºù úô'è?¾Aßt;]hòn:uIpÚø£¹–•²ØôOǶû½ñ»SðíNMè€é‹ëÙz Ófès™”X‡”ø)>6w dñ-”ü¦¬M'J1œLš¸½RMi»K~Œ«ŒX¸¿äG®b“IOift#9„S ÈC«jŠ[íÃo}Þ÷—”@PgP|Í,&VЊZ ‘³|€E#9œþÔª¿µÊ¹â TŽÀ…¿s›ÂjM¤šw¡Yõ•°Z«2Ó¸F}€j†Ée.= >V×,3åùññ2êÖañ÷Ò[€ÌÇÇ/²í(Ùà#‘ÃrhºV8<‡,å1–ˆr„BºVùeò?S•ù–°uºÏõ A;ÔÅzùªþ ô¢°œº¯WÎìzC¨ò§|K‘¾Í‰~,…nƒ-@AOŽSg„þ?ÐB„Ö¿ì~)B™Òø-ô]TùÏ\Cr„}‘½Ù¯§OÂb2&BÍàÐCª=?~AžÖ+£.u™ [ÅP%ù^î‚ó†»Ôì€d4^ª‰É^&AóþKUN¿>f‘Ç¿šN]”P·÷«¿±ä Ò˜N‘ÇŽ~¨› AãÍöúGññË õà{‰R€z„÷_š½ügh&t]¶”:'êAkf†P!ÇÚã¦N WÆ(}y;–tE<|¯Œ%Ü´‡qE/±ÃÔH¨[+¦îd¿8,fÖ×î’úØÁ“¶NUëPn›Ø *žî¸2TVo˜ÔóòÿÀrüÓ4´DÖ­Œ6´‹Òº¡ü§ÿµë){ æ’w* Û®p2”÷­zNð&6cŽçÊ0 ]xP9X‡ Ÿ±îTcd¨ÅXÆqatËó + ༗v± ™ aæß¦ÓB«Ì–þS•Þtú#„³!³ SÄ@©yÝ© íz` ïf$} êñKŠó·çÇÏŠô5£Ô…‡Ü;~ñ£cUö¨ÇÃŒ¤Ÿ‚»ÆÆ£ ºaèæ&½J¨O‚)Ø&ӈǺ¢ÿüx(lZ‰³*Nßõ§Ç/ÞeQ •÷­Æ@¡ûhvoÇxe<Ýsí¹ª¤Û%ï’Pgl:…(°@Ž)Ùv €(n:e÷@E¬*Ñ·t»ª=¡]¢Ä‚¬Œ§[#8þît`!îwUwésösÿ§0ô¨…!¸±){&XQx’mA?ì9ŒßcS¨¢G•E®û×àk&ÕÅ»'G39‚á‡8²îZU~‚!8ï ðâìË•×,ýü.\„7E§~”¿ý)áæUºM=Õx C¬„SÕߪvÎøqhÚ‡ Í:¯*—×äŽ&`®‡3]Îna ©ïeJøƒ ¸¥ÎªÐÐCî†Xƒ§«Ãšw¿4-‘v'ä”ùá Ð-9ˆ#8/®jv‰áú¿”þý‹iga^A,áçµ£§àŧ\ü¨úÉßqhñ$nè šQ¸—êç•YÓ ÀRögI]íêÎþƒÀ‹Ä’O®jå€ Çà‹ÌQHЉtfy ô‘¿ 4;¢èVÊo“ªH©U+ Ñ/~$·ˆ6%ç-ÒœvDÊN@ï;¬BƯ,•¦–$)‡±• ;zD+%U½ÅÁõwŽÐ»Ì¥›åd tÓ:XEÈn!´Ð¶èøøó¤¥Wz(À« ÓŠ ´,è7—Põ3Õuî3$i¹JE2išÄ¡d£¥@©FHw Üâ3Õ­ïžüjCcÇÓ£ºêü4Dzb>Æèô›ùœ¿˜N¥êížÿƒicâ»ÖÌ\rê±?OU-LN§ÏÅ|þk¬ÓÔvá•3g‚¬!&?ús¬æåá8ˆ wgÆÃs³ùàDÒéïAÆx¼0nã¬/„ªñîa[óS=óª”#0‘òqAySwo>?_ÓHÿ84‘iè¯Ä’¥…’°î§¾î@…Úâ`-(U‹«jÿ™c[!ŽEC.F©®²Sº= d ¶Hð¿«Z•ñàº%¦ÆÒÅAoJA➘º–^C¥a¡fWu}¥«ÿ—àCJÖŒ÷W†öU®F ÐÃA“ñBH6}¦Âja¨Sb)–tÏ0sHßÃzTÇFÔèWƪåt*­tÇÅËe“‰Éw ÅSrA[¨{Œv:”®ç¦Dݺ“þÔ‚#8ÔØi°9h9Õ½{®ê§ü‡Ê.óŒÆ•A§:¢ïï L5õ© -éÝøf>#h:gŽ›Ì~A?¡C*Lš|â½XániI“˜°#†üVš¦:?m)ˆÀ,dJÐJDàÊ^ü€u)K½≔‚@÷  `¶ ¢L êG·ì…²B¡5“˜ÝâyåðkO#¶MÞx¬Ò¥Ú6ƒC|þ´ƒë‘Æ ©0²C2–ú mžëà@ÞœBï?1ÕFˆò/tÌÚ±ïסnäŽòwµ/Ÿpžö…v-LÜ›‚µMFGh "îZ.¦í‡­(ZœdH{úŒë*Q*/z\L´¿•§©97ÞÔ%¨5G“áâ($h¥Ëï[ãP¤‘¥ 9èóxŠe ]ƒÿqê,DCj8áÔý ]{B?uŸŒI¹™ç12kѤFüŒübbAÚû~з²x`¢Ñ²ÔIúÆÁ@ŸE‘š+LDã^”Q© Ý‚_¼+pò^vƒ§ýTûÐ,Ž›ˆú°ÃÅaíõB‡3ºd«©b²TÀ ë)øÂÂÜ|í¥‘À.Ù‘(-Û4À)‡›í%±d‹ÅãÿØ9—‹Ì)i¹{*ýãY~tèoM!&ðæ¥›L‹ú%¸ ÏqŒÚJÙ‹µ#àtÄ4dFÐ/UJ] ²AÇRèâ•-†Sµà¦<™¥|™£æÜÕœ-å‰õ]n‡B䘳2ç‹·%Ú+¬÷jæ ¿I7rú0 ¢O×ú `H=4–=·›eΞÿ A£òúÌ% Òäª".³i¶æœÏ/úó‹ u¨ Ý óÁ<8˜ÏsUô bLµ¿mèÎXâbY‹úÍœ ûóÅu†º™ß-æËÔy¿ÚÌýÊÁá:ÐËúßf’fD¥ž:{ÒÅô´` ,×óu˜çïèPL:.H]Wt)ižS–¬ÍÖeÕxZWršW`}ÔÓ¸¦¤¨sÐÈœ:œqÀÆB+‡Å@TXéõsV‹*uvöÁ"S€º[ÝÍ2Cy¯óÆRÍh ×_ºQqNçh#DQT€º_ 0S h?Ëå®Å_ïÙ­ÎXÍ9Áÿ{‹â:£"¥ OЄ’SιYó¼¼® Ý¢Q.áïJȈt³Ð]2eg`¥î|h?ÀEMÐ[‹ÒbŒˆ˜Âa ã’¥~UûkAwÀâq0MâÁbI™Óð*>-SgÓ¡Ÿ¸GUÚ±4Xê-·¨¤Ž¡«˜רQäQ…•.ƒ®|²¯.—,‡¾>çœh&Ä^ÅḰÝV%ôzÏ#F"Äè­¿XN^ÙQÐúýåР셑˽µ˜«d Žú¼šÙ‚®¤~K–TŒ+_'žÆÒÇÉÉ—CŸÇ´ñÇÞrh+4–‡xþšQ”`B3FKÕc.óÐriW h~hReñÖ…î ô˜G–0÷¼äÚåéä4[,®ôãÅ"5St‚Ëz3§E­f7ƒnÙ› ¸¸Ò<ìÚ`/O5–ôâêaêÇ.®Ÿ¶#!ïlݨ ºžVO& n;é¦äŒÚ±ø  ¿[¤ôeݽ§p¦;Bº5¡×ާ©˜]Nh­9e˜Ó‚FíÐ'±™™Ä®NJ«EÍ2½‡Ç²²É6L-½¯Ã<)'iY>FR­îð׫ô}¸o¨Ä]ºEA êzÊá·Õ ç½RèàæB•z`~õ}¿šÒ b²_¯å öSiðáÜn;§W$jvð8§öÕÎ{äZëÓ›A{g1öJ¡I;†º—Óô™8oÁ£Má}JÐó‹œv<¾Pêqp•ÓƒyVÔU3D›C·h¶áóT˧¶ 퇅 M`ô}[ÔS§¾¥¹‹;Ê“rhLšõ¯{ôßá5åЗTÝúÐõL^§–@£v¼|­œ`ï®dô# Ó!ûµš^ßP·ÇyIvp™®E½Àššôó’Ô‚Þ žFh^.|Ñ_\ï+õh¿[ ~Ø®< -jBoO44“îˆ,-èëïlèïÒ¢f™Ž"¨½³tGHñ}úœ¥}ÜûJ=zñ8-j¶—†¾Í—.{Ü4—ÑÄK©GïÕÓðÇuC9—æ;TÔsÄ飔¿„ʤøØÐmˆ GÜöçßžh²whš¯Õ7Öy‡FÛ¶z§_¾¶E}!Ž ºÞD=u éÁ([1{³™F:a¨ ï£z(hT4z‹+“KèÏf¶¨=ôTz£xz„[EÖ ÆµX¤Õ]F‚¾Ä¾¸OK ÷zAéì@%›p Ô™¥\Ø_oWÎPÙ$žfßSP7K˃Îú C|Gê›…&Eÿ?ßÐj³^¢Ø_o×ÜÏsƒxZm8C+ŒYà°G³sҎﺃGôÒ½Ù+æ¨EÁg±­¦Nzó€Õ¤&´ >ŒR_¨oèã‚´ƒ÷qÕ·ØoÓe~ÐZIµl镹f¶Bè±ÑôѢ¨ÏõzêW$o¶0ÊpqÞwZFa´¢ïL/Ú ôéX¯3 °)tóˆiý0k ÷wÊ"4  »ú>A“Sü@B6‹Æ™Ö扺Û ÛÜN†Ç–#à™1x‹Å[Ú“Qø>ÍÞ)£÷erKŒÁg&ùÒ…ÞÛ‚öGc9‘≱¨Ìôç%ÉXͳh5{GòVÛ»˜„xÍ*Ô3xþ&ñ4ê‡À Dyl9f³®Ò‘X¥Q=´šœQžÜ:TY|&ŒóºÚ±ÙþÓFÃQÑd¾%•FŸ&íXj÷KßW“ÿ8R\\‘R¿6ú*à4D®kð6ÝZí‚Éã…®J;”J?P¢õ•õð•àß'JëÇlNVˆÕJNûæ§}úÉv-Jµ/,tt¾ÅWvÚo«Y,4)ïn/^_{ÉWHzl˜5ýx˜E0­kãKBí*è†n*èn¢ÔÆ~€¨{`ÇuµcShœmÉšóK%8Rß'14Åš K Îˆ7‰zƒ‘G]ϲ9tˆÐ³´vØý Uìa ­ž˜èÇ ¡«VÅVB7êV°kCk{ðêÃ1€‘tGAô‘ek t­ù,›å§¡tB10öÎHîíB uG¤SßtD(.>·ï ^瘻‡µÝô5±y½ùË,ÛWwÔC¶Ìo)}±{âìߦ7¼>ª^Ê[A][90üp™‰•´5 h‰L›rˆZ»De U̇z3ÆÂÚ‡¿aìáã ¬£#Ýr0K\‹î‡/h½ÞIõDmíL¨7U¯·Ú"ômažx1Úq£)h•¬‰¡ÕåÃ-æX퀿…xšä8bñÎgßÙÆcñÑ9¤/¶ùø`”:숯bñ¶ñÚ­ö‘+â=qi ®‚ô:Bo¥¯§¿¼7JýZòp´¿R“›¿±3É60‰§¦>g?«qê‰3Îxåà é²ù»äÚkkê e<©TF_ÊÂÉtÝÕ)Ûƒóx •=0‘‡2ÓÉ-16¢“GÀ&D½éåmBËd›gÊÔ„¾ú5VêϘmÚ•ñ¾Ê&/Åje\bŸøªÞÓ […Æ7s¥ýáUìFÒÆ.çqÚ'J±’ÅÛÊûž4g([wµX­rqtêÙï—©U¶`¨G,2;j«‡Þ߸·éãçÔ_ôíyÅ=¶ÊP|;ïGd#©Í‡ê‡‰™.“´ú‹î‰ÿ–òh¥—n!žöý]\ÌkCÇ› dß2oCãòÞÚy<,;Û€nFz+)eW®E¬h¦Ë Wº]>.XgIä¦ißbyí}úÊJK¹šÅÛF<Ï6Kz3†Ô&fúCö@£7ÚPãàö Ó¿¿™¦­3(Л—6ÓÙc›§ õ‡9…xÕ[cÔ¡n¬XFBÌuìrsl±ùÐã'ó |¬`ÅÈcKïfޏð@­…’ʤJ:‹°X8øH#œ»j{[î0»ÜE)¢œñÈeî¼ÇWIÔlÚhŸ’´™ÎË|hC¹ƒ££ÕíA÷˜½ ú Óïdk™žø›‚æ˜1W>sý‘ ;#Ü]¤}Ëeþ83 ¿Š¡¹(Þ{eèÕßÜ­ß³™ö-4ꮽ TòÊ¿eeKïßÅgÅÕn0å/kóÞ£zD+ExåÌk(Hk„YÄ¡ ·x–Í#èæ.+·Ê•ªxºé@ñõÿXMõ¿cÿ€GöÆúY¸ØL¿/ iÕA=¡ççYoè ÀT[øÙH¾4e§©ñ<_WA_4Ò?øôºm4`Ëûaº'ÒþÛ™]Ó«‚ƪU κР:ózÌOô3]hÉLOCÐ ÙÄt3†FÁ¨æô—«ASZ}‘ùôƒ»jéé­r•N”zW-. së_#þû Ð<´oA72?~Œžâ3œißò~¿º­•ú7܉˻¹nXº:ž¶Ùš´Ÿ…ö‡&4ô[¿°|n ±D“ÜKbk@W›im0|G‹;H³‘ùA qÄÕà¥V‹¶-ôLœG¹Û¡¡u,ÔéêxÙ¶¡¡±ºföUv¹ '…©'^7ü¢&æ>àqc^ðÈµîˆ ß6vYèªØC³5} º‘ýAðåôÖò1ùhIt ¼ ½Ø®Àƒ7ˆ›NòÏ5 tÓ· ih| ŸZ»=\œ—öÑžbÆW¸óÜÔ—5¡›6› ÝÌC7™z2þ+ßÕ¸É×;”v©/kC;–75æ#ûƒ*¸¥½dÙBù–zþÌ“ÅÛD¥¡›NúËízòT-ã-+øëÝ B½ÛÒé†ú¬ íd+Ñœ~캳?)â _C²lÉI­‡CÊ¢»¡ÜPÿ7Š¡« õJÐ~Çl¶SÄc®L!2/[+‚6ñXç’Ru’®‘n]#ÿC\zd?–?‘@ö—½Ù‚Vqm7n' Cü”6¾Ç©b —Ò—Íg)J‡dC;©;º³uh¿ÅÊÙùÐ1ï,*`V:¨®Ãj'E]úæ•ÿ*èÆ ¶¬,§›V´,·”öøË6òÓ¿{ÙN.ïô'è›Sþk ÿ#MÞgéAÎMû\Oïèä¦}.‹§›þ¦}.òþh¸µ wnèg™v|ö'©vnè§óÙ§òG”ÿ ‹õÎ ]IEND®B`‚MHonArc-2.6.18/logo/mhonarc16x16.xpm0000644004705000001440000000451710251713555015755 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-2.6.18/logo/mhonarc_t.png0000644004705000001440000001505307451276301015550 0ustar ehoodusers‰PNG  IHDR$ȳ&’$PLTE$‘Ú$H$mFÚmÚÿ²ÿØÿÿ¶ÿÿÚÿÿÿ¼6Ž€tRNS@æØfbKGD ×ÄÀnIDATxÚí];sG¶Æ#TÂnXÖ.&a÷ˆ’IˆiiÅȤ²‘,˜"‘%$‰,ÖŽl%Pm´vBÖF€28ÑŒÖë½ÂŸ»çÑ=Ó󉇶n°§Ê& ôt}^}ΙîV£‘£¶Öÿ0i½[û]¨ ©E­6H0iÇô«¾N´ØBü)¿4ª6Ì\áXÈøP>²3›$B×ʰ•,ø2íÒÓÁö‚/•HÏf}<¯3оGD)$nTݧßùÊo, P†ÐgX=#âaHŒIH™µáO„‚/?8ñ£NUŸJIÀÖòFÅï•;†3šÌ !_À°ü‘LGk>üLÎ>è|s¡æU˜Œ]ìÖ!j"éTêc^C¿˜!#ÈjË<ŸóèËPçËøýí/F-ɺ/Tý3ýooo¼¼(„öé(MÀ“€ïÕ”ñн¿½]„©½Uýy³–}ˆèöö¦8ó­?x–„þ(âéo²~€Ê±Ûõ“Pÿ¦.Ë#áè$##7—þï{A=¦ÊÁûõˆ’¸]þZÉ3""ɵÀ~I³Ifü–aÿ Ï{èËê$Q%¢:q6Úè‰cèò¥D5\ƒncË^,ào9›’à à9XZj®ßßÞÏë0U°©ŽImV+è’Ö •À2'4l oJM»¡‡ ’ò_2~{«½X}3'¼îÕ`jmßý‰Ã#˜ëxü³ôb}ûËc3T(  *ö'Ô¶÷›@Žô@pÁÞKK`¿@'A’è…˜Jlê/D¤ƒ:TØ{:ÔhswŠœŸ™Káoì€Óf/Q Cê"0}Ucj?¨Ö¤¶™YBSôÑl²±yt Ï¼J5°èd­^þXÛ?l7 øÔ.È©UÝÊHÍLÌæ×:ƒõÙžP+=EŽaÏiu„¼Í(­çq\9ÿ"¤ÊFž7Ç>lx„}ç#Ç$§ÂÄí8ëÁ§/]r é?Ç•^H/üÓè×xü4v å~€2)Ï3<îöÁ!¼(pé÷³Îhþ§÷·ïªô¤ L•MžßÞü4w:û÷¸À¥à;ó„ÿ`òÌ0…c°VÛE¬Ò;+%¯ž†h@öÀcZ]z3ª›ñX°…ü{|û7m&[c~´¿<(`ewÍìÕÿ¾s/ZŒÇïåpøCªK4vP`1,ÄLæü!6:ŹÌçs˜"€°¾YÇ«`8)V|2.å?þ`{i—\ç°¿ºFþïãXÃS¸>„E¡O”¤ÚI²?žÊo)·¹ llÌíúx„.L¨UÂfXMµ]þN{I¸÷_Ž`Œ(Ù-ªh«G©%šº'ÕŸù68eúÑɉS…œèRýÎ!mcȰ샌ûúÆtÿw©bt”ZN· œYÊúKˤ[2¸,Ûãw6I‹)7¥j.õ-"ÅÒsì‡{¼µlB/9å‘ËI{3A¨z6³ùúžZoÈÜG¿ˆ$Nrljïæ&4µ~ ì} óý=÷Où×TQ¹‘$¦½>50\:HÙüŽ|·UK¥çInRÛÚ-ƒ9©™ ùïç©*|2\"& zêS£‚Ht3N¡™I<=p»7?㯠e]h1°nåDW©ª‡ù‘G™!J.vß°åÌ&-0ÓVÕb£mÝgÊ%ã‹Ày¿¿¹)aš1U#6‘¢IP'…f–`Ñ´!Q{NôŽ˜¤çˆ®©¯c•C„|UŒá?,h|  3EFUÇ$X¶Ad¬fSR*ÇÒ3­\ޣɇgV×Ún„¾S —„~[ç2L‡äG{WP{3éAL©â:Dv|ø ‰ECyÝîý\ïЩ–ó$cÓVSÉ­,"ès¥iB…¹?±`"!¼…\©[]93JÙ•˜íyy¾ä»?T †8‹&|¹NKÊM°üDÉÂ#yžÅ\zƒ,@M¶ —:L¡­ùólz 0žË4Jiu„è§r ÕÔ;¡À¤—\𒽊ŭ :¯À¥Æ¢ˆáe “R‰AÑæ5Áð¿HYBTì ,ø’à®W#’+–é«|‡‹C¸ºIIH3:ÖSá’Ÿÿž ¡‚¨Åˆ7S¢AÇÐDÇl2q2lØ”.>.‹ƒrÓôåÇ; µÉ°e‰+{ÅNU!V?Aéé£×EC`ÙwÈ üƒäœN°H ;/‹ !0ÛEH-K±-%ƒÁ^¸Aõ¢s",xK_9€`qèœgÑAÔÚ)Bêã§%&QÒõ=réEì”°Iën_d•A¨4%.º`ƒÄ¦€\x“!¡z·eRÁ¤PS*¢¥?°‚„ö‰Öw3©E XTS¹<hi“›’6'PäÂH}ð%DGÚö¡43 °0KqDØ¿¤jæcD¤²ÔáÙÔb¿´L’bÓN'1R½V û¶ëN6áê€E=¥“»Î«D'·\HÍ*Ý$zt¡üf±vèû1‰k;Þ2P=ÊQ…:),ôfþ*°,!ôäþˆ0FéUq© S°e½w3¹"äÒ£’K@j$Xñ™æ<@折ȂÈä]BT5« ÕÃþƒe5ú¢KéF÷Ât`_‡~º¢Ñ(VÊ›ˆ{­%™äD€…çÊþÞœÍîã>áÄv¤w~¨ì ʉXJn«RZüÝ=1YH÷DtAÛ(ùžÔîÒ2§+a.ÉcHq‘Öû•˜h)Q÷÷“Là”€Q²Sên8<ñ‡'LCJ ˆv†áÎpXê¢'àš–CÔhNn‰q0½éÀF×LÑY4 ÍÏýà"‚øGô¶–„ÔÒ‚êóƒßg°¼$u„t=Ìa*CDÃ3jŠe…y3 ªº‹š½Q (Š*vÚ§IžhÆRS "Ê5× @!ÑîÙ“Kz%$Ð$Þ~aê/Ï¢¦A¤AЕ© ~7"“¥!õ±ZGÁ¥”~TE€É¯†V " i‡âK:J£ß\Hr?ª&¦yA›ƒt‚Œj9UvWÒÒÚÍž ”ÜYMÿdxƒ"¤™ZÝØiHÜîÒ!¾ìíä>Eµd Ï”™Z%Ár¨§ø*×_Q£ >@±ÊgÑR`›A:¬S#«ä Ÿ`Uwy¹‘gêÒÖ«³èNL)¤»Eר b²‚WBHèÐð5ÝbH×§Ji IK¹Gs|ñ†NxH O¸ÂûÑâ1p}˜3¤9®@‹!E¨Û^² `ºˆz¼Mö÷»9îÄôŠ|‹œ®ÉÇ¢¥P‹!¦XÒû‹!I|ǶtÀÎ¨ŽºPpCQ†$*xHUÓÙ*>¼Bš*ïÙDý¸ Éë,ÀtKÜ¿5ÛZ R·8¬?jõhHú/⎵¸>…—^Rï,Ä­ŠB.“Áå” ¦Ó­Õïëá‰)ÿÆ{ÒG¼žÚ©Ú=nWS%SÝÅÃJ<ÃÓÀ‘_e®ò{“Ñ%øÖº Õ±@ÔwVqë¨Å»wwÊp†'AœnÄî¸ Jß~ª½c¶"¬ú²~ÿ]$q_¡ˆÏò€NÕ\"£=Ò‘óE ÷ó ®GÐø®ê{=…K.ÞÃ3tì ®SpÃøÕlú7äéÄ ®c,éÕ\)ÓDö¦±˜§¢ö“܈hm#±„½/ë{ù2ÈœÂÉ\x½©ê®ªJ LaÏŸfÁÀõP‰9…ºß[.}Eaî¼ÐHJÃ( záÔ_Y• MéMÐÐ=Z·®OK»Ô½¯Lôo q~ð}©™ øà«§ºÓå““Œšó½ö$¦“…“"ݯ†ü§oÒUj¨0ÍTUΦó­5 5tg6E$Þ§ái\h¾g’6ƒAšÔîh^jêí°Õ›õ×;ÉÕ³wËWœ-°¯Y§?ò\6YéÊŽôPöüÙ}Ëïu$:}>S”Im_±éÈBŠlNé"(|—žuú÷-¿×ÑÒ\ñdo“žF?R ïèÒ&å‡J–PQ8©å§5!µ^L´.õ¸µÁ Ñè ¹Ÿëg…ÖÝÛkBj¨^©W•/.é(ºdHO£(W?=­9…ǧr]D¶{¬(Á]ZÁÀöå!I¹]>Î}9ÀýKîŠ(Åî IlÔBKXÛ9¡Ü¢· éQ”“òi°(mÐ ’ @²'ühŸUˆòLB¹™ƒÂ˜Bå{`ŠJ¼íH¸gàVf’9}5Ìè(χ§ˆÃ¨üz™çážó ³ªö0Ò}©Å;Œök!…ϰ‚ÃË•_ ‰,9Û^©:C·ç’Ü.OˆMzçiIrî\†}ZV–˜b‰õÁýZH$·Ž…Ô/I.ÿ$V•·&$ ÎrLž”äöô„·sY’ÜΰȦê¦9jSï÷\¿‡.“BàËÛÈ'¸ÈwÙô8÷è+ª î® èa=$LÏýë×8ÿ †õŽ©»õ µ°·Êíêé5»R©Ï.Ÿ$W„„…Æíõ MË\ ÝE sê(ƒa¶î.~™K½õ!©zH¸˜D~t½Í‚kE(9wQ)B’›€äÕ[ç™týÈ…ôö,Ï&]Po˜àššRÈßòNužI—€j›¢§y6éý<¤Ïêþ[(j )áÍâœàúçSH˜œÁÿ®?²«|p†bDYÚ‡Or>í:r=H-ˆºÊõw§__XHäÐ]ó[yݯZ³¤£Å+í”^¬^ø0>"µ)B"{ _ï½ é z?“ZÁçuïá£E)$dÎõ“Ñ)ÉíAjb«-‚ô–$·?:×sÞØs‘ú& >óÇ„V ^ä¬2ðæˆ7ôã„äF¶qO•ÜnH’Üí»à×¹çvFzK]a¦S³Ÿéœx¥#+¦“]ܤ+wÛ;V”í0¸0Û;Bó8ö¤V¯ÀYê+åi#9»“!$V=b× Ô#h49ð·Ä »%K¹éX®Ÿ4Z=<©RkK'a]@½¢Û$ g¤z4»ï2vZ«Ãçj™mTuÔŠ™­µ¡Ñÿ‰?\9¶¸M¼âƒ‹;v»ÎHAG½u]INâ•#*µ¶ÑhÀÒKU Ǹ¨ÉkŠÓ”­÷þ*µ¾ÜÈ `/ý'¶û¯I•Pd×$·(ä;7 ~„xtIÊôÚNãH0ÍMFn¬J'f|XâhSv‘3ñ‰Q&#¹×bݤ2 Æ{Â>Û…dY²Ý°®²Ñ²Œs!±?÷>âqJÌ&`Gym <%g » ë+9ؽ²­Éφk—s„ª‚̱«i÷•18XOè+q‘7+ »V¿Gd“°×™m†Zš6ZŸZ‡fÃH-Þ·e!1\kþ¯÷iCõJ›ÍêÌO£7áÈU¥ã3’’.¤ë‡®2üFH* \ÉZNŽ2²Ö…ºn€NZZ]âøÛ:Ë‘ÞG¹m”K žXH'Ù¨¼êR Ân!1^?èc M7‰¨AÇ¢Ó³ 4Þµõ—‰ïßh=µ^àÌU¦szS¸©ø /ß‘ö(Á›Žkp4ð*þ¿~Hºß7Êt‡ôõ¦â7&%»:=átñÈ5¸èGjÑÜ¢D®É½µÊ =Q›ô I"ÓÛk(9á›~¡æˆtÿýre•éµPAw{£š3™p<ÉÖ Òd·aº¿p'§ß#¥Õª[òê¸4s®f såR³0¹ú—,­ýn°iªÒc`œ/ÙŽÝRÆNëh•³™ö’k–àKDvåK÷„tùCªL+”ˆôdûîÌäFJdê¿Ï×Ù“WMx@5§Ý—©SÌ7LèÓ¼ÿr³>€îÙ´GÓØú/£Å8—Kã“ØÞŽ¹9êjÏÞÅGd^Ù¡_å¦{UùÃÚs/uŒñ>¤»Â˜kwæ–ê¸Ä¿ýþ«“M_Ó}€r\Héq¢âMŒéç.$Ü¢³©z€¥½®9XÌgÓÊ‚§t|%gyÆä€IÓ†„GyY™Xb5n©ä˜ÌkµÜ!ÝûAJ„bgÉzréº0RÄ™\øwv”rãn ¼€0çCÇ–<¥ã+/õÙ+ ±i€ç-Ý@È©@æ–ÞZ‰Ç„)Á&L›‡DÛE >Ê»¥“bÃÔ °cz;¤0`•Ãgw®rRì Mä–p¥ªqjr&š{8<Áít›W¥FÃS¸ƒXÏy \Æ”£|ÞEsÜ2Ïn¤—oðrã• ®”7E1ÞL 6šV¦ÔíÒ)¾¼[*œcrÆ1a¶4™lzcò{˜I†ô‡ÕîÝb³¶Õï’ pºê)ÅÔìâÅ[2ï)Ëíl’r™BRrñ­O+“¹Á=ï)+foÕÌøJzèî»zV£<{Âçë}@Ñ \¡à¼MG)›ºXkè¸Ê>Àñ©ŽUŽŸÞúS³_9uKWcµ­PQ‚´Ç¹·yÏFÌÔbíÎë7Ý.õ%ÿ!Úh-ýÌ-UÚ¶ÕopL!=°ÙÂRžú*á-(ŸêU)S¦Þdl`·B=µ»poœÒÆS^mWµjeúÏØ*ñâË)7RgSAÎ@zUÝêw 5Ï›õ—cIju(©õJHÆiß²“í¥†Xš”¤ó ¤ßT^® .5¿ÅvSµö!»VºÕ’ Copyright (C) 1995-2010 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: 2011/01/02 07:27:43 $ MHonArc-2.6.18/Makefile.PL0000644004705000001440000000411511507475654014110 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 <. .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-2.6.18/man/mha-dbrecover.10000644004705000001440000001356111512360067015501 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-2.6.18/man/mha-decode.10000644004705000001440000001402311512360067014743 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-2.6.18/man/mhonarc.10000644004705000001440000001231011512360067014401 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-2.6.18/contrib/0000755004705000001440000000000011512360044013553 5ustar ehoodusersMHonArc-2.6.18/contrib/mhn2mbox.pl0000755004705000001440000002560110241527714015660 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-2.6.18/contrib/prsfrom.pl0000755004705000001440000001277207451301020015610 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-2.6.18/contrib/mhastart.pl0000755004705000001440000005351310236513642015753 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-2.6.18/contrib/README.txt0000644004705000001440000000313710243725163015264 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-2.6.18/doc/0000755004705000001440000000000011512360072012661 5ustar  ehoodusersMHonArc-2.6.18/doc/up.png0000644004705000001440000000143707451276546014043 0ustar  ehoodusers‰PNG
    
    
    IHDR  D¤ŠÆbPLTEÀÀÀôÎó¨òÅîÅìÊì¼ë³ë¤ç¾çµåä£ß›Ú~ב×rÕµÕŠÓ«ÓkÑfÐ…ÏlΩÊœÊ_ÉbLjŪũhÅ¢Â\Àªu¾w¼š¼e´_±Œ±]	°f­‹¬i¦q.¥O¤q£b¡ˆŸXxœN™o<”b’V<ˆV+ƒ5‚X€N}dDsL0jS:fAf>	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"b³3W8e6_6a:j8g8i6h
    ;w÷ÕwÎtRNS@æØfbKGDtßm¨m^IDATxÚc` ¤)RPL@>«¯Š4‚x|ò@EEñøG'ãOO‡((ÎÇ¡?¨hH	vó!
    ŠJ
    ãqÈÃMÈÇ¢¨":4$!ª¨¨ ·8:…¦ŠN!Ö¦§Gø¨j;yÅG+¥½ŒUœ= ò`i"gkí[P\X\ì`í¡¨¢óT…º´ªAR^¸Ž¨ºy‚"Ôþ4ˆ#ÓãÔ8„D¤3½DÄ8„Ñü‘–cÏÅÂÉ£’hÄÍÉÂfiË€¡ 'ˆµTBß=Õ×P–µÔ%u@*ÆÕÎÝB#XÏÌÝÁÞ‰Ó„â$S!qÉ@5>q1-[l
    2¬¸ùå”…e¸
    ¬±)(öäá`‘pRfå`2Ç›ÅI2ì¬Êr¥œ¼ÖØL(Ì6`.†3#‹vÅÅᚌ@ï	Ê£ú¡ °0ÒÈ5ö ”E†£_~c)à¡!IEND®B`‚MHonArc-2.6.18/doc/intro.html0000644004705000001440000001612611512360071014707 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-2.6.18/doc/app-rcfileexs.html0000644004705000001440000000770711512360071016323 0ustar ehoodusers MHonArc Reference -- Appendix: Resource File Examples
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Appendix: Resource File Examples

    This appendix provides several resource file examples.

    Secure

    Resource settings for making an archive more secure.

    Blog

    Resource settings utilizing server-side includes to generate weblog/blog-style page: All messages are displayed on a single page.

    Default MIME Settings

    Default resource settings related to MIME processing. This resource file is useful for updating archives to reflect new default MIME processing settings in newer versions of MHonArc.

    Day Grouping

    This resource file utilizes the day grouping feature of MHonArc to format the main index.

    Frame Navigation

    This is an example of using HTML frames for archive navigation.

    Icons

    This example file makes use of the icons feature.

    Subject Grouping

    This resource file utilizes the subject grouping feature of MHonArc to format the main index.

    Unicode UTF-8

    Two example resource files are provided for generating UTF-8-based archvies. The older example, utf-8.mrc, uses CHARSETCONVERTERS as the main method of converting text data into UTF-8. But, with v2.6.0 and the TEXTENCODE resource, an alternative, more efficient, method is available as shown in utf-8-encode.mrc.


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

    $Date: 2011/01/09 05:17:06 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2.6.18/doc/COPYING0000644004705000001440000004313107466542002013726 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-2.6.18/doc/monicon.png0000644004705000001440000000075507451276546015063 0ustar ehoodusers‰PNG  IHDRFBÆõHPLTE$‘Ù4-#&-W.OoKf2 _E1$n¤–ò$‘ÙHЦ‡T'°S¤bÚi¸£—“UÚ˜ò°øÐÿðÆ¿”4tRNS@æØfbKGD Ö˜ IDATxÚe’Ûv„ E†DŠ@þÿO{°]ÑæC²Í„‚[œók$  ۬žäESÚ”WàF+ë–’Š§ RëÉÇæ ŠÅmŸµŠÌ‚¢'¨‡‹=•¯NpSI© ‘cR¦Ç2{\X­VÕ¯PxȤ_ ß2rJäéÈ$bi­÷n:Ô ­ ¿!Ž…ÐžY†HÞñ!óa ó’ËÈ æå’S›ÓØ0¨uwšª•Ôö±×9r¾Ó9µÕ¶¿ŽnvŸxšVX?ÆÑçFî^¹}}­šüƒ†Ôjk¸ç)Û£0}±µÖ°´ùsÉŒ¶P4~ÎtÝçëmdöÿá|2ñ-?ö EšEjNæ.tEXtComment Imported from GIF image: mhonarc.gif.8ñIEND®B`‚MHonArc-2.6.18/doc/app-bugs.html0000644004705000001440000000742411512360071015273 0ustar ehoodusers MHonArc Reference -- Appendix: Bugs
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Appendix: 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 <http://savannah.nongnu.org/bugs/?group=mhonarc>. 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 <http://savannah.nongnu.org/bugs/?group=mhonarc>, select "Open" for the Open/Closed choice, and then activate the Apply button to list all open bugs.


    Fixed Bugs

    Goto <http://savannah.nongnu.org/bugs/?group=mhonarc>, 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-2.6.18/doc/pod2htmd.tmp0000644004705000001440000000000311512360071015114 0ustar ehoodusers . MHonArc-2.6.18/doc/relnotes.html0000644004705000001440000005572411512360071015416 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-2.6.18/doc/ssbg75.jpg0000644004705000001440000001542707451276546014531 0ustar ehoodusersÿØÿàJFIFHHÿí 4Photoshop 3.08BIMíHH8BIMó8BIM 8BIM' 8BIMõH/fflff/ff¡™š2Z5-8BIMøpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM@@8BIM Ä€W€‚€¨ÿØÿàJFIFHHÿþ'File written by Adobe Photoshop¨ 4.0ÿîAdobed€ÿÛ„            ÿÀW€"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?ìÞN£ïýɼC`ù÷þÏ Nikª‹u&I3©Óñt$TÖº`F¾ìOºßwqÛüèNÖ“¨žØJ‹€Þ`kõ#¦¼3ýÉkÄØ©MK¸ƒÈóáÿ':j~:þ 8t‘þ¼&k‡äg_ê§…¥xH0;ÿ$”Oo„(3£L÷„ÅœéñC-:ÉüùªN:H05M çAñüTLŽ¸íø¤5]ÓæžIÓ˜øÀÿ¾¤#ÕD¨¬ædOÄóóKoÙðGþIÊDÎîEÀÞ˜:Á?÷ô‹ÜOŒq<æNH–ê¤øµ;@äwøŸ=5@”…ÛŽÓÉKãò=ÒÖ)> Iÿ`ÿÌS?ÿÑíGÂ>ïáíKãÁÐ%˜J<¤ü§þ—½5*çŽßT- ‘íž{ûêž¿Ý1 /0<'ÃDAQe¸Ódþ_ûúmÌÏÌHüTCñù§T¶ÁÒGœIOYCºæÏ>d«¿ÍQƒÞ>Üœ©ûÓ½ºF³þ¼ûPH®ŒDò;öñSvG†¿ùÊ‹ƒYò”k¡óãþ¥hËsOûgÿ1O°ðPÚ)M:ù÷Òò’’–ÓtûcîÿªRüîxñÓà#S$w×Oí&k‹fLxiÏù©à­d#^Òxî©@t÷>cÃO¸DÇÀ»Aß>?×úÈIQêTàFž qÆž|y$Ob~ýR™S¯1¯Í(ª]Ö Liæ˜qãà:Žéâg vˆãIû‘%Q ÏÏùS!)øü¿¹Ô‘å¤~)kÀÔùJbå½£˜Sþ_>xâ˜GŽž_ìIOÿÔí{|üiÛøGà¾vI5/ÑZÇ—à—:sÊùÕ$”ý¤èA?÷(~Îé"<ýÐjLð‘‰×Ÿ”ÿßWÎÉ$Tý'óÅ Ûçþ¿ôWÎÉ <ý Oš—Ïð_:¤‰¾ª~Š>g^ÿùË¥#&c´ÿµ|ê’ ~‰ÃåþϤŸ^úéßÁ|ê’JÿÙ8BIMÿþ'File written by Adobe Photoshop¨ 4.0ÿîAdobed€ÿÛ„            ÿÀ–Û"ÿÝÿÄ?   3!1AQa"q2‘¡±B#$RÁb34r‚ÑC%’Sðáñcs5¢²ƒ&D“TdE£t6ÒUâeò³„ÃÓuãóF'”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö7GWgw‡—§·Ç×ç÷5!1AQaq"2‘¡±B#ÁRÑð3$bár‚’CScs4ñ%¢²ƒ&5ÂÒD“T£dEU6teâò³„ÃÓuãóF”¤…´•ÄÔäô¥µÅÕåõVfv†–¦¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?ëîí#ÇY $’~Ÿ¹MÒxÖ{¢Òw°cÄ"J€P,Hưtà¸v˜Rg€|‡*PØÐK|üSIK Fèñ*mqÒ†°¡»€Û¡Ð¹1†8†³åÏÞ•ª‚ í|4øh‘ííøÊÏ´Éî8…!3æ|S¸–¾áÉ3å— †‘¸öqR"Æý1 ñ &$]©øÿBÂ@÷t'‚>%8Ó]#±&:éýóý””¨ó÷$#€5ø¤%ÜA#™)ÓP<’R í$‘È$´ýá!.|ÇiHj$À”­IŽOdµ<’Јú>QÊB0ÏðIJ˜?DƒçÄ$Hä™´„¾Só”îõXx ‰ ]&–Ò 8Oy<' †Éмùè†HïÏs:)np0;w‘òM´ÓÏä) {üu(ŽcCG3ÈMÚ€Ò'YK‰4³\Ø!Àψ:…“í%Às$5IÁ±¨ânqilnïç Z—cp> õñëÝD4;GhüªZ~àãðG¢4·ÿÐë}±ø•1íoŒÄ©ó¤<Œ„ˆžyùâ€VkNítµÕL´iyB€«d|F¿à‡´h;L&¸~Ý€Ž „ö–ý‡ŽÀG’“^Ò$Fšm¡½ÒtÒ8JUJbIû?õ(06ƒ¨áÇ•@ÖÁ»¿€ü®$†½ãä’˜Ëgq>ï¿üå&¼øþÁ!¸ðxîG ‹HÖfy#ºVªd&yû‡)ý¾åÏ⣤j>IƽˆðîŸv´ŠQ“©öŒJq#’>)Aî>:„ÐÑ£‡â!$(ë¡ ? Jq'Â{5L#‰<%&÷Å%/$øÈ庂¢KG‹×É"øÑ¦ß“Aï¯`4ÓŸ¢|Sµíi`5í.u?ÙKÝËxýã§Þmu2°gt“Κš¢ÈÝï2;€?Š‘5†ÄI>GR¡8‰ððIIénà¢uàþì“,kí> ½åÄhÔ“¥V¥XÒ¤ñÓæ I„ÿ'TŽØÕš·“?ë¹HAÇÀÿ°¥‚TÙíáâ¥ê>|>×LAò ÷%#Äx'¢ßÿÑëdÄi±å 4öûG÷§‡rÑÏÞšcYù° NZ­; žý”HtÁsL| Á.ЉòiL`ˆ$øÊTX¶ vÇnÿz'˜<ÿŠÓ“íí:)´ÌÄ}ÿŠa\ óðqð×Dˆx÷sáBhŽ}¾z$‡ç{7Qÿ}M´±uk~!§_í$&}±»Ãý9;šî:ÄîQ‡w?8IK·˜‡x„Úˆ#°î§¯ÓäDó’Ú{6~Çã¹T°â[ ì½ @ö'…=XdOˆ1¢m\ »€Ÿv´ ]³®£å3ù8ÏÈŽé"&|N²¤Þ`ø¢JÕf³¼G’—Aó×O¹"Þð„ pLø-rŽá©÷yù%«¾‹}¾ :|ÊA®Hüû”´äèïÓîIL}ÃFæÞSÙ5ñ)üOÈ&#C®çxFÒ’‘Úf£Nh?KF Ñ<4ˆ"Oh>|§j »¾°ÀA*lÌh‹“ëÜÏŒL§Ô‰Ž;ŽÈ&Ð÷á2œ±^dÈ<Žýɦ°Iù'Ú?Ô$§ÿÒëtñÜç~ H°ó#OÁ<÷0K^FƒÍ9jįßäž K¿ ¦qâ?”JQᧈRSûuw:èS Ú xª™>dÚuù(÷†GþJP+†Ì˜ðL5…§¾ªa®'H'ÄÊE…¼˜üãü”ÈÞþUÑ+m#ó„÷ l>Rrìˆî”6>Œ§ý$5SÒ4àšc™Ždj‰1âGÈþUZÖó|4ŸüŠ"Ól xø‘ùBƒ¡ãÀÿù=Ι¯`'¹:”àY¶‡{AÕ?¶a¾ãÜwPl‰¾)¶ÑôIÕ¸cæÀð™?Šv±£èË_óÕJ@ÐGÌjRÞÃ_žHÔñáÁþÊ-‘Z>g;' ×Ä&‚vâ'R”G˜òÊŠí3·QܪQä>ó÷¥>.ãÀÿÕB[›üŸ )ÿÓë` vÁûÈKH#»Ïûõþô¤N€ãñNZ¢|åJÞAžÉiÞ|âRÛO/÷¤¥ýÆt$ùh¢@:¼½È×ò'»P—¸w÷w $¡ºÑµÄ´î*aì{öñNÚxÄy§nì'ÄÌ&:¯dmx:‰î£½Î<’|õNÔÈâ[üe-²` p—¥LHtÁŸ’Ažo˜ÔüÔÀh%ÍóÕDÌÁ;~z“H" ÝàyN(¯Ý’è9à;”Ñâò:>ûwNX¯q:?z^îD#þÄÞß~ôú|G‡1òIKû¢`üt Mžðá4«Ø>Iiãþÿ½%?ÿÔëAËD}òSË£X>]Ós®­ñ‘ÂZỎ”å«ÉBGÉ(`àSLp¼RàâL$¥õîŸrg4ã¿‘-8™øR;kùJ`~–¼ñùf|A>hn}Î’|5üŠAî:7x÷ 2†[Œêg·œ&äñíüÓþĵ‰p?œ–Ÿhöâ$ •ŒZ@öI¾îžSÃ@Wxy§#Hi-íÇÞ’”I2L‚‚K¦1áÇhiñ÷ähcOŒvNT•‡Á€/ú*N7}ßr‹˜ú:HÝ0T½ ó¡ò }ɧu=¤h>Iµ ><)Cwiþqì”Aýéðþô’©Ÿ{ŽéLÎã3ÊN»‡ä)‰#RÓðrJYàè#â‹vKHü×h³È…0vŽçÀ Sâ´•õì?‰<|Âhð$~R—·À„嫒㤒;ˆKßàð §¶ƒÇýé?«äé?4”¿™âSkþ±Â^Þ{|ÓHñÿwï$§ÿÕëIž4ñãñ Æã 1çí«tð&#p‡}À'-P.àžAKt$úÎû©§ùR<#ò””©tÀ>%>¼~^?ÙLb`vä§çC¯Ò Jc!„ƒÞxOXhùÞI¦£âB‹\ÖtßðM]²['sOˆå {IïGQ >Œ~TúùÏŸ)‹—Ó§hå<É'Äh—Ñ’|5Œ¤>ˆ‘÷D …¸¶#Ψ.q=ÃÀ„[Æïˆÿl!úS>“ãò£«&;‰0€B j€0† 7O>ôI1ÄqÉB{¨l³¥ÍÔ{Go¹0‡·Žû“‰."5x~ ŽÙ ð|W)¿º9“Í9%­>渉Lèt=¼JƒÝ¤4Ýã²!JÈÔxÄ•.?Ø¢Àbuø©|I$ø‘J¦~†…/q$تˆ×·‡É1l™tnBò|œÞ>ôÛ'°å>ƒBéóM'‚íßôBJPÝØqÚFŸ$òïÃðJI‰t5Kyð?‡úÿm%?ÿÖë|àG4HN'IþÏ)Déǀ§‘ã4'¶žÁ4‘¨Dÿ±#ÏÒ:ùµ%/©àÉðþäÚq¬ùh”Ú#ü’R<@IKùÎãæ¢âá¨<Àå<Áó¢bôšK¼ÿ¹"‘¤‘íÐyŸîMpXçÄ•¼ðcÈFЦÙ:ƒ´ž4Q.v˜gö'&paDƒ»‰-À§’{ÈýÞPS $È iܨŸ0ìyKníxðŽ@HHà@ýঈ °î¸$58.ƒ3È=È×S>QüT™kÈíÚ'Ý1\Æ‘:i¦ƒTœ ¡#¹)8ˆ$äžGއ“ ‹–Ôyw ÿÎPÉ%Úh=ÈS’Á¡.<¡Î$é'Ê?è§Ä(²ÓHãåùSËO`OúöJ èby¡LGòxï OX®9¤ðA„€ÒtŽçT¤žNà?ײQÜëÇä!%/Ç ÿ_jRy¿ŸÁ!<}ØS|æ;D”¼fGr¹6áâ|;ð–ƒSóŸö%>i)ÿ×ëˆwyv„Ĉ‰ŸoQÜw”åÇ‘#Æ5NZ K¹‡|tMå¬xBDO<öìSèïx<¤¥´gàûÏr~0˜ÍæuzD!åþÔ”¨iþîRÚÑ©?©„µ˜€#ÃûÒƒ¡2JbæÏ>ãø…&¶ #À¥- wQ1ƇÄvM\ VÔC¸Gà“Ɉžy·9§¿Ã椑ÛÄ&ˆÙI*1 LžÆÎîaÞܖú¨I’DþOŠ‘c)kðˆI®ÚyçÇXÿ57¶#éšQ:4}óæ „·¹Ÿ"A`h$i¨¼h6ŽÜIà‚`ŠõȤ™'ã§–©üΧ»‡!8²&J[؃ò1÷©ZJ‹tÔ˜ø§ 5?Öÿb`ZOcر#¦ŽÉI y'Nþ_ÕˆL\'G.ŽÉ9à8#MÜG‡))~u >ésÌéäš̉üãÙ#HxêR†œø‰ü‰äxþD žyQêýÝ’SÿÐëÎþó|¦÷áá·…óâIË_ ½Äö‰KáÏp&Ï©$§è#'ŽãXN&jÞßêω$§è9ÁÛßýJ‰-ðñ3¢ùù$”ýÛ˰ì‘:{€Žóôò+çÄ’Sô Hì$v‰S;ûÏÏŸí/žÒIOÐzùÏ— ?ºhÔ¯ŸIOÐ_|ư‘Žüwø¯ŸRIOÐnóÔvÿV¦±1ìð'I_>¤’~×è[¦€øL©‘Ç”ð¾|I$?A’#Ü4þWÙ”„öÊ%|ø’J~ƒ÷÷×ãüR÷juó…óâI)ú X“ïKNÓsŠùõ$”ýíÒ{ñÌ…(äá|ö’JÿÙMHonArc-2.6.18/doc/quickstart.html0000644004705000001440000002002711512360071015741 0ustar ehoodusers MHonArc Reference -- Quick Start
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Quick Start

    This section gives you a "quick start" on using MHonArc.


    Converting mail

    MHonArc supports MH mail folders and UUCP/Unix mailbox files, so the term "mail folder" represents the MH mail folder or mailbox file to process. To convert a mail folder to an HTML archive, use the following:

    prompt> mhonarc path/inbox
    

    Where path represents the directory path containing the mail folder inbox. If you are in the directory that contains inbox, you can leave out the "path/".

    You can specify multiple mail folders to process:

    prompt> mhonarc path/inbox1 path/inbox2 ...
    

    You can also specify standard input, "-", as the source of mail folder:

    prompt> mhonarc -- - path/inbox
    

    The "--" (two hyphens) is required to terminate command-line option parsing so "-" is not treated as the start of an option. The example also illustrates that you can specify regular mail folders along with standard input. In this example, MHonArc processes standard input and then path/inbox.

    NOTE:

    Mail folder data read in from standard input must be in UUCP-style mailbox format.

    MHonArc creates the following files after processing the mail folders:

    • maillist.html: The main index file containing links to all mail messages converted. Messages are listed with subjects and who the messages are from. All messages are listed by the date.

    • threads.html: The file listing messages by threads.

    • msg*.html: HTML versions of the mail messages, where * represents a message number from 0 to the number of message processed minus 1.

    • .mhonarc.db (or mhonarc.db under Windows): This database file contains archive information and resource settings for MHonArc to perform further updates.

    • Other: If messages contain attachments, other files may be created for images, videos, binaries, etc.

    By default, all files created are put into the current working directory. You can control the location of archive files by using the -outdir option.

    Example

    prompt> mhonarc -outdir /home/ehood/htmlarchive /home/ehood/mail/inbox
    

    Here is a sample session converting a mail folder:

    prompt> mhonarc ~/mail/inbox
    This is MHonArc v2.6.0, Perl 5.006001 linux
    Converting messages to .
    Reading /home/ehood/mail/inbox ..........
    Writing mail ...
    Writing ./maillist.html ...
    Writing ./threads.html ...
    Writing database ...
    10 messages
    

    By default, MHonArc prints out information about its progress. This can be disabled with the -quiet option.


    Adding Messages to an Archive

    If you have new messages you want to add to an existing archive, you must utilize the -add command-line option. With the -add, you can do the following:

    • Add mail folders, or
    • Add a single message.

    Adding a mail folder to an archive in the current working directory can be done like the following:

    prompt> mhonarc -add <path>/mailfolder
    

    If you are not in the same directory as the archive, then you can specify the location of the archive with the -outdir option.

    NOTE:

    MHonArc skips any messages that already exist in the archive. Therefore, MHonArc can be used to rescan a mail folder to auto-find any new messages to add.

    If no mail folders are specified, MHonArc attempts to add a single message read in from standard input.

    Example

    prompt> mhonarc -add < single.msg 
    

    Or, from a pipe:

    prompt> cat single.msg | mhonarc -add 
    

    Converting a single message

    MHonArc converts a single mail message, independent of creating or modifying an archive, if the -single option is specified. The message to process is specified by filename, or piped in from standard input. The resulting HTML is sent to standard output.

    Examples

    Input from standard input:

    prompt> mhonarc -single < messagefile > file.html
    

    Filename on command-line:

    prompt> mhonarc -single messagefile > file.html
    

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

    $Date: 2005/05/13 00:00:35 $
    MHonArc
    Copyright © 1997-1999, 2005, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2.6.18/doc/next.png0000644004705000001440000000147407451276546014376 0ustar ehoodusers‰PNG  IHDR D¤ŠÆqPLTEÀÀÀ÷ÕôÎó¨îÅìÊì¼ë³ë¤ç¾çµå¨åä£ß›Ú~،ב×rÕŠÓ«ÓkÑfÐ…ÏlΩÊœÊ_ÉbǟLjŪũhÂ\Àªu¾w¼e¸Z´_±] °f®Š¬i¨ ¦q.¥O¤q£b¡ˆŸXxœN™o<”b’V<ˆV+ƒ5‚U €N }dDsL0jS:i@gGf> f;e=aJ2a5^3 ]+X2UJ=U)TC2P3O/ O+K5 KD*C(%C#A[}?:3>!<13:9Qq8=N6&)4053& 1R}18H/Hm/>Y/%3-4A*]›*1?)(`¦'a¨'^£&_©&+;%fµ%Zš%$g¹#h¾"U–"6O"b³9a6b €¤& ;ÄÆÛßS)'?%3??'%³ #$)(<¡ áOWUoϸüœŒüŒüœHo ¿(¨q`JAzJÞ6^ñ999ù™1n6v ¦ÑYP{ *¢-ÔtÅtCssýUe Õm£ K@ ÀJ”|xÅE}Š¥%„9”#JË+  ¼\ â +6Nã4^N.Çd˜tYE9Ô#J>U¬òFyî’Œ¬e B!ð`°spr7×Ö°t·÷H…›g°Ó—à× “’6Ëéâ„t¤€´1ä‘ÑŽ‘ä³.Kí‡+fn&;INÛ8°ùqh‘eÃÇɪ ¤ÀÈ.g‡ê<˜mV%F&S¥ ñ)˜©ÀEŠè]NM;†Â²r,@ÉÓd'C\!þ$ÉÂ0ôât}íØÇIEND®B`‚MHonArc-2.6.18/doc/resources.html0000644004705000001440000015063311512360071015570 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-2.6.18/doc/faq.png0000644004705000001440000000127607451276546014167 0ustar ehoodusers‰PNG  IHDR D¤ŠÆ&PLTEÀÀÀôÎó¨òÅîÅìÊì¼ë³ë¤ç¾çµåä£ß›Ú~ב×rÖµÕŠÓ«ÓkÐ…ÏlͯʜÊ_ÉbLjŪũhÂ\Àªu¾w½˜¼e¸Z´_±Œ±] °f­‹¬i¦q.¥O¤q£b¡ˆ¡lŸX›v”b’V<ˆV+ƒ5‚X€N }dDtOsL0jS:gGf> f;aJ2a5^D^;]+[E-V;#T5Q>+O+KG'F% D*C#<1,;CP:2!'-# ,9K+5>*2@)&",>7^6b:j8g 9o 9q÷Õ59tRNS@æØfbKGD`Å·|9IDATxÚÝRÙVÂ0´Å"¸!›TŒÅ\PG¢FmµˆØ(îUrúÿ?aË‹”ÏñÕyÌ]:÷Nþ0œ !8‹Ÿ‘qP„æW½”1ˆ ”8‚Ü‚÷ɤ„þÇ!K ßï3“äÇ•b–mûúîW°- ¬i…ÂP{yƒÚO>%¨’0.¬Es¯Dñ¦ã8m!#›mþÆc£R+–D Õb­Rï„qŸ‹Z:3‡Ïr&«¥[¸ßÀËÙ¸’H-½V“q%~Ä¢qÛª—ß6ßnwçUïrÐ h‹^š‡«÷[æù‰ì¯ÜÏæ¦ w+“¹ì:••è'§ 3̘Փ5„èB\k)%Ï U©GðÞ™Þõ1Õ€’—˜ˆô>vF=$¦è(wÎZÌ—0ÈD× ¤þ!à?Í7{$d1(6IEND®B`‚MHonArc-2.6.18/doc/guides/0000755004705000001440000000000011512360044014140 5ustar ehoodusersMHonArc-2.6.18/doc/guides/performance.html0000644004705000001440000005670211510267736017355 0ustar ehoodusers MHonArc: Performance Tips

    MHonArc: Performance Tips


    Introduction

    This documents is a guide on how to improve the performance of MHonArc.

    The first two sections of this document cover the DOs and DONT's. The DOs provides things you can do to improve the performance of mhonarc. The DON'Ts provides things you should avoiding doing that decrease the performance of mhonarc. There is no requirement that you must follow all, if any of, the DOs and DON'Ts. Depending on your needs and goals, sometimes accepting a loss in performance is required to achieve a particular goal.


    DOs

    Break up a large archive into a set of smaller ones

    MHonArc performance degrades as an archive gets larger. Therefore, a common performance improvement practice is use a sequence of MHonArc archives to comprise the complete archive of a mailing list. The smaller archives are generally organized by time period, like by month.

    An example of this practice is provided by mharc, where archives are organized by monthly, or yearly, time periods to avoid performance problems.

    Minimize page layout settings

    The more resource variables you use in page layout settings, the more processing time is required to render layout. Avoid unnecessary uses of resource variables.

    Use FASTTEMPFILES

    Use FASTTEMPFILES. Make sure take notice of the security implications before enabling this resource.

    Use FIELDORDER

    Use the FIELDORDER resource to define which header fields you want to show in message pages. Avoid using the special field value "-extra-". Only essential header fields should be specified.

    Use MAXSIZE

    Use MAXSIZE to set a limit on the size of your archive. As mentioned earlier, MHonArc performance degrades as an archive gets larger.

    If you need to keep older message around, then see: Break up a large archive into a set of smaller ones. Also see the KEEPONRMM resource.

    Use MIMEINCS and/or MIMEEXCS

    MIMEINCS and MIMEEXCS allows you to explicitly define which media-types you will allow in your archive. Excluding media-types helps reduce message processing overhead, and it can improve the security of your archive.

    Use QUIET

    QUIET disables informational diagnostics when processing. Error and warning diagnostics will still get printed.

    Set TSLICE to smallest range possible

    If you do not use $TSLICE$, set the TSLICE resource to "0:0:0" to avoid unnecessary page edits when messages are added to an archive.

    If you do choose to use $TSLICE$, set TSLICE to the smallest range you plan on using to minimize the amount of processing overhead.

    See Also: Don't use $TSLICE$.


    DON'Ts

    Don't do real-time archive updates

    It is tempting to update an archive right when a message arrives, but if mail traffic volume is high, this can cause a bottleneck and a queuing up of multiple mhonarc process waiting to lock the archive. Even if general traffic is not high, a burst of incoming mail can cause problems.

    It is recommended to update an archive on a well-defined periodic basis. It avoids lock queuing problems and minimizes the overhead of invoking the perl interpreter for each incoming message. Facilities like cron (standard on Unix-like systems) can be used to invoke mhonarc on a periodic basis.

    Cron-like invocation also make archive administration easier since it is easier to disable archive updates when administration tasks are required. Raw, incoming messages can still be queued up until administrative tasks are complete in order to avoid message bounces.

    Don't use message specifications in resource variables

    Many message content-related resource variables (e.g. $SUBJECT$, $FROM$, $DATE$, etc), can take a message specification argument. If a specification is provided that references a message that is not the current message, MHonArc must resolve the specification to reference the proper message information to expand the variable.

    Some message specifications are more costly than others, they include: TEND, TNEXTTOP, TPARENT, TPREVTOP, TTOP.

    Don't use DEFINEDERIVED

    DEFINEDERIVED allows you to define extra files to generate for each message. The MHonArc documentation shows how this resource can be used to provide frame-based navigation. Although frame-based navigation seems "cool", avoid it. It normally does not provide any effective improvement in archive navigation and it can be prohibitive in some cases: non-frame-aware browsers and people with disabilities.

    Don't use FIELDSTORE

    Only use FIELDSTORE if you have a real need for it.

    By default, this resource is nil.

    Don't use FOLREFS

    Disable FOLREFS unless you find it useful. The normal next and previous thread links may be sufficient.

    Also, FOLREFS is not subject-aware like the thread links are. Therefore, FOLREFS can provide reader confusion when no follow-ups are listed but the thread index shows follow-ups (due to same message subject).

    NOTE:

    If you do decide to use $TSLICE$ in message pages, then you should definitely disable FOLREFS since it would be redundant, and probably inconsistent.

    Don't use MAILTO

    Disabling MAILTO may provide little, to negligible, performance gain, but if you do not care about email address linking, then no need to keep this resource enabled.

    Don't use certain MIMEFILTERS filters options

    MIMEFILTERS is used to register filters for media-types. Many of the filters provided with MHonArc support a myriad of options to customize their behavior. However, some of these options increase processing overhead. The following highlights filter options to avoid, or consider, from a performance perspective:

    Filter options to avoid: The following options will degrade performance:

    Filter options to consider: The following options will improve performance:

    Don't use MODIFYBODYADDRESSES

    Disabling MODIFYBODYADDRESSES may not be an option if you are protecting your archive from address harvesters.

    Don't use MODTIME

    MODTIME, when enabled, causes each message file modification time to be equal to the date of the message. By default, this resource is disabled.

    NOTE:

    If you use a search indexer on your archive, enabling MODTIME may actually improve overall performance. Some search indexers key off of a file's modification time to determine if the file needs to be re-indexed. With MODTIME enabled, if a message file is edited by MHonArc (due to new messages being added or EDITIDX), the file will not be unnecessarily re-indexed.

    Also, some search indexers may key of the file modification time for purposes of date ordering in search results. If this type of functionality is desired, you will need to enable MODTIME.

    Don't use MULTIPG

    MULTIPG causes MHonArc indexes to be printed across multiple pages, requiring more processing work versus a single page. If following the advice provided in, "Break up a large archive into a set of smaller ones," using MULTIPG is generally not necessary.

    Don't use OTHERINDEXES

    OTHERINDEXES provides the ability to generate alternate indexes. Unless the users of your archive have a real need for alternate indexes from the main and thread already provided, avoid using this resource.

    For example, many believe an author index is useful, along with the date and thread indexes. However, this may be a subjective perception versus knowing the real reading habits of archive readers. If there are definite needs for alternate navigational services, sometimes a search engine (if you are already using one) can indirectly provide these services.

    Don't use SAVERESOURCES if you specify resource settings every time

    It is common practice to specify resource settings (especially RCFILE) each time mhonarc is invoked. This is generally done to make administration easier since alternate invocations are not required when an archive is first created versus when it is updated.

    If you specify resource settings every time, disable SAVERESOURCES to avoid the unnecessary saving of resource settings to the database.

    Don't use SUBJECTTHREADS

    When SUBJECTTHREADS is enabled (the default), MHonArc will examine message subjects when computing threads. It is still common for some mail composition software to not include a message-id reference when a user replies to a message.

    Subject-based detection adds extra processing overhead during thread computation. If you know messages in your archive define References and/or In-Reply-To header fields for message replies, then disable SUBJECTTHREADS.

    Don't use $TSLICE$

    The $TSLICE$ resource variable generates a slice of the thread relative to the current message. $TSLICE$ is not part of MHonArc's default resource values, but many users like to include it within message pages as an additional (useful) navigational aid.

    The following is an example of what a thread slice may look like:

    The "next" and "previous" thread links are already provided within message pages, which may be sufficient for your needs.

    See Also: Set TSLICE to smallest range possible.

    Don't use USINGLASTPG

    If you have disabled MULTIPG, then you do not need to worry about USINGLASTPG. If you choose to use MULTIPG, then disable USINGLASTPG if you can.

    If you need to have a links to the last page of an index listing, alternatives to using $PG(LAST)$ can be implemented. For example, under Unix, a post-processing task can create/update a fixed-named symbolic link to the last index page, with archive pages referencing the symbolic link instead of using $PG(LAST)$.


    Character Encodings

    MHonArc provides robust support for dealing with a variety of character encodings. For an overview of how textual data is processed by MHonArc, see the TEXTENCODE resource.

    NOTE:

    With respect to email, the term character sets (or charsets for short) is used when discussing character encodings. Both terms will be used interchangeably since the technical differences between the two terms is not relevant for this document.

    Some charsets may incur a greater cost to performance. If your archive comprises of only English messages — US-ASCII charset — then there are no performance issues. But if your archive has non-English messages, especially Asian-based encodings, there can be noticeable performance hits.

    The following are suggestions you may follow to minimize the performance impacts of charset processing:

    Avoid conversion if you do not need it

    If your archive will only contain messages in a single encoding, then avoid unnecessary conversion processing. The following resource settings define the absolute minimum in text processing and causes archive messages to be rendered in the default locale of the web browser:

    <!-- DECODEHEADS can be used to improve resource variable
         expansion.  See DECODEHEADS resource for more information.  -->
    <DecodeHeads>
    
    <!-- Only convert HTML specials -->
    <CharsetConverters override>
    plain;          mhonarc::htmlize;
    default;        -decode-
    </CharsetConverters>
    

    If your locale is a non-English, non-Latin-1 one, you may need to specify the locale explicitly in archive pages; the default locale of web browsers may not match the locale of the archive. For example, if your locale is Polish (ISO-8859-2), then something like the following resource settings can be used:

    <!-- 
         The following resource settings are just the default settings
         for each resource but with the appropriate <meta http-equiv>
         tag added.
      -->
    <DefineVar chop>
    HTTP-EQUIV
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
    </DefineVar>
    
    <IdxPgBegin>
    <html>
    <head>
    <title>$IDXTITLE$</title>
    $HTTP-EQUIV$
    </head>
    <body>
    <h1>$IDXTITLE$</h1>
    </IdxPgBegin>
    
    <TIdxPgBegin>
    <html>
    <head>
    <title>$TIDXTITLE$</title>
    $HTTP-EQUIV$
    </head>
    <body>
    <h1>$TIDXTITLE$</h1>
    </TIdxPgBegin>
    
    
    <MsgPgBegin>
    <html>
    <head>
    <title>$SUBJECTNA$</title>
    <link rev="made" href="mailto:$FROMADDR$">
    $HTTP-EQUIV$
    </head>
    <body>
    </MsgPgBegin>
    

    Use the latest version of Perl

    Perl 5.8, and later, provides built-in support for character encodings, with UTF-8 supported internally and the Encode module providing character encoding conversion facilities. MHonArc will leverage such features if available and applicable to improve performance.

    If using older versions of Perl, MHonArc still provides robust character encoding support, but performance is not as good.

    Use TEXTENCODE

    If your archive will contain data in multiple encodings, consider using the TEXTENCODE resource. The TEXTENCODE resource allows you to convert all message data into a single encoding, simplifying subsequent processing done by MHonArc. The most common usage of TEXTENCODE is to normalize all message data to UTF-8 (Unicode). See the utf-8-encode.mrc example resource file on how to encode all text to UTF-8.

    CAUTION:

    Although most modern web browsers support UTF-8, not all search engines do. If you use a search engine, or plan to use one, verify that UTF-8 is supported.


    $Date: 2011/01/03 06:42:38 $
    MHonArc
    Copyright © 2005, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2.6.18/doc/stampwb2.png0000644004705000001440000005154707451276546015165 0ustar ehoodusers‰PNG  IHDRhê¸4/€#PLTEÀÀÀsss½½½ÆÆÆÎÎÎÖÖÖÞÞÞçççïïï÷÷÷ïçç÷ïïÿ÷÷ÖÎÎÞÖÖçÞÞ!)B9J!½ZÎcÞkB!R)ÆcÖkçs½cÎkÞsJ)c9sB{JçŒkBÆ{Ö„ÞŒZ9sJ΄֌ç”cBçœ÷¥ÿ­Þœï¥ÿµÿ½÷ïÎÿÎ÷ÎÿÖÿÞ÷ï­ïç¥ÿçïïç÷÷ïÿÿ÷ÎÎÆÖÖÎÞÞÖççÞÆÆ½÷÷ÖïïÎççÆ÷÷ÎïïÆïï­çç¥÷÷­ïï¥)¥ç!„½!”Ö{µ)œç!ŒÎ!”Þ!œç!„Æ!ŒÖ!”çsµ{½!{½!„Îÿÿÿ’øtRNS@æØfbKGD`Å·|QåIDATxÚí}‹{Göå/–x(™Øj¤»±f¤Æv1ÄžÈãX3v<±3Žã(‚æÿÿ+ö>«n5­x¿ÝÙoS  ‡Ã¹çÞª®þŸÿù£ýÑþ¿h_Iû£¿^ÿú@ßÀ¶ñÕWÿÆÿ3ýkã¼o¶¯|ú¾¿±±ñ‹}|[¡ÿ‹íoâ°ýÍ ¿¹Ü¿qÅãW÷oý_ ý—õ7Šýë÷¯ô üG›ØðB*• _)ô«a¿R­V¯èׂ~­Z»ôkµ¿ú7.îW¯è_õûK}x½—õñýÚþ}R+_šß9ýŠGžû¸Ç÷+ðJ‚>¼0óüÍÊ­jÍö_×jÁãÕ[µàqjóÆ…ýJYcýþ&|îÕ ÿ&ì3Ц_¹Y1}ÄcÓŠÝu`VœùËûõ±W©˜~›ô7ð…ݬVª¾¯«ZõÏGWíãÐ ûþ›QÊ?ö«×è½Âó+Ëý[a_ðïgƒ€‡Íö+›«!M¿¦@oÜІ0[qý zÓõ+ø_›>½0ׇׅ¯<èÃ[ó}èVkµ _[¡ÿsµöúßj¿‚ý¯ýã•åç}~ܼ^âEͽßM~?¶ïßàñ3à\Y% ~%¸rÛ(·‰‘ÝàÆ8û~å5MbÁW¹U nâoAnÕ*ünÒÛ€7WÙt}Þô¹IÿçBqù |iúµ:l¶wøþ×Åßg¤ýÿ«†}¼ÅŽPØ”·ãß¾AxËòö7¾­£+d•®µ× yòÒ*ü™…­J?¤ÀçªÂ[Öj·˜$ÜK D¶7üžõ½_Õ¾¦ËK€Q[]~Â~ðx~ñë+þ4Á}K>ó*CM¯÷MñݼæwμfÊÒ?_ŸÓ_0Æ›?Sà«,5Á™ÈÌ—×Ëßb8åußbÀ» ÎØ¾E¨7Öš¾Lé"Ÿo"̯iƹZŽ3½N‚¹&=ÆùúDf„ëè„ÝtÏKBo…Ñ/q÷% ŽÝu’î—µ —Ï_®Þ¨€0Q Hß回ӌպŒþ–Fú¹Àçª'ô…²á_¨îyxùš°Þ\òמÄ×׌X]aééÜúÇ¿vt®»/È2¢€ʵÔò– l !½2Ðßþ^ÞN~?6“«s¸:ÇëóÙ ÍðÂïõa›Ì&ççº öéziã›ÿãí|¼¹Pw†¯uÒÇ·à޼ɽcàä÷ß™‡›.·¸è;. ªºmF?fËk}Ýè/@†Ë¬j»ÿM­Ï?3~}øð-ôñíÈ;<Ạ«µÊ5þŠ“@ñuh;°˜-Êò#ŸyßßÒ Dœgˆ2áMŸ€À>™ðGÐç›ÿÛ_HßïÌxÓ+ÿîô+Ý~g1¼®½£Ìð— •ËhClùŽÌxð0‘•ÒüùO˜Õl_Áœc6ÿ›^ÝL-˜Ó› ¯(nˆôùÉÌa}r"@ßX©TJ5¤ÍŸgB´ãw§ÏEÙ ÿð¥—,Üàoa¢ ö´ùoiæw¯™_ ¾ùÒÔýÙlfˆF8o¬TëЈø-á|rò{asú|2k%;I"ߢs¼9ŸJ£6Ì<ÎJÏçÿ"xƒÆ…¿pý ¼ÇÝb<“¨#”>!^+¥¹ö³z™tƒƒá‰ShÛ²hðÿwvwÜ’d7‚«¤³£tæÔ¢?3¢×ŸM ‡ÿ÷²yî6¹¬ uÞÎNDoß¾Iº´f€jOé×kMÒqB„øœíÄùÎn²moGŒòn´Eðƒý$¸½F3”.¬ˆd¸°þ¿ܹ½“/%]Õð[á¶„ïï&9¼Ã¾x+u Àé›_t Ðâdgg7X“è:÷Ý„úÜnx-€¹ª[ßésЗ]ÆNìÉá-®ðÒ}€ €€\õì¥ÎRß’]Ì]Z‘Þ¿Mç@ä£Tµòzu ©ý3i´Gù÷8Ú!$iÛ!˜+¯« ²[0V¼ñcØeKÈõg6äÍ&&Þ¨“žÐ§|j]ã2Jã/÷ª^RÂè‹à6¬-¶$á\±µx>ÁÿaF÷ÅL³F¯Xøß¸á5Z]ílœ·1ý|]­>ÚÝŽ ”ö€ÃgКœ;2÷q*‘æ0ó·7¹b T Iá÷nü[ÑÅ”.üZ/ŠÊ1–·Ñ’º¾!Ç¥í&¼d€ÔU¸¾½“Â?fí–Ñ B7†uçu@ÞÝVáí^a”çQ+Ðç‹Ýr )åÞz^BêÄ‚#Øzyvæó9þ­Þ|=2Zþ üßè᫼ èBýn 8½ëÞWÑYM-`}³*«Ô£‰ÏßþìÝÊ!ä%»•× èö6 ¼+;B[>o'ùö‡_¡%ÀjMU49dµ¾´…|\†ÇŒjs4ò0b³LFÌàöoô¢ä··¿½ýê|ÖðeÛmù^µF_š¼EöUš ò«Ô£e€ƒ!m;ôÇw¶_ï*Îò]sGË„f˜j5üïõ¼F/*C™š’tdõ9ê!´:bJÏt ÂnÑô(yûöí¯¸}Š®jæ“Ø½…ßeü–sÒ0;-ÕùUëÑXèwºAø¢¡ DÑylGA Ü6ŒÖö«kà«é(DÃË‘îtåÖñá4Œ†'#ÌžÒ$¥”ƃ Òöþío¿þFH¿Ý¾i"¶¿¡_:ÞLª¦×÷x_Ýø·Ž«Âáp•Î “M,0º%0?‚_Ç·Ó_97!ð<ÖW 9 ’U>…¸„Ðó¹üx0¡—µÝA<~m]2´<âˆ(ÌÚÉ{l>N¨6ƒz×zC­ÒqDïRšmï‚­óDÖ óÔÚ¹MÞ”­V‰}¾¸±@6Œö„&œW"4J3·|[/q·ÄîmCHä{wÙÙ€¡¦ºÇùëjUÆA®[F”¿¥+g9v+Àáíו„vÜóîŽ{9”c€e~„™ø¼ntóüÐ.©ô‡íD[ŽP_·J7gN”‰ÄÅ(|f*;J_ªÑ(͹{QÑ{ †;‰‡Wì%ÚóïV€Þo ¤Êk‰Ô=P:hX¯ö²ºJ=šÆb]®½~”lç•Ê.‘þšüÞ£¿þõÏp¹û×»wÿúW¸ÞIÛ]òuð=ø€Í¿'|Ù­ë<—ë$™3 z Ì &Ɉãd4âÏC1žHÄÄ߯71læOÿÓû}z¿Ë^4Áؘ$·oßå[+‰ôc¨À°W«Â³½ÙæRÞlÆ\/ëõÕœôFeÓkôÉN¥b¶ã´ã5ý¯ÝüÑÝ?ÌF¤qç.â½ËzÁU¦ÝÝ<ß €¾Ôss=š°z€óW7!}Æû„öbÖ~P1ͳ(|=ùNžsá†Æ}…Ø`-îOÍ4)G^«&}*ŸÍÎeqõzt¥ò³K¿±vˆ| e¡„2úÏ€8áüç»Ñ#FºåÞmÁ[k]³‘›GžÀ†Ð#/БSyTÀž ú´©ŠdòRb¾/®÷ö·ß€Ð½Æ&`sKXŸ‡£r´f}.çñL¦µëÑRérŒ†9Ç¿]vw-†ù.é†Ãù¯wóGl p X_Ìê¹!3CÝK¤“Êtd$½sF®qGp¥+zˆKÙ»›×øÃâo­üöþí»ûJhÅHmýæ7“Eç)¾óܼիwÿCø»(ܡ̰J.o—œzÔ2“v€lÜéøsKÅ#ü†&æQ9ÊREöxFÉÈè…U º†‡}È›j„t”† ÿœÁÝ ŠõòmÞÛ` â±[ÄÝ3H'5Ê ÊÂÒë½!Í—¼ÂímòoI•šeYHZÍHÿùîÝ €†WÅåËèÓØ–I-žÙɆºåÄPZuy¤,†h9"/Á±n4—mÄ÷Ê.ažEß¿ÿø^^~Åâð¾%¤ÇcàµèÇm£û»ôÔy‹†êP£ß¬ ´ÓhnÛ¯¡6CD|Tåºè#Õç» ï2ŸaKX¤?$å-Ï·?|øõ·_?õ¢"Ìì…)Š)ŸÉ-GEµ˜°<G†ÈŽÐ¶'¿1ŠZïßþãíûQ†ãs²ó úm/Ùg¶„¦+ÑŽZ+¡štÔªmk¡}Mé ‰ä›7Í0á¤ÐࢫvÈH²³“•Ïzìé>,æ©×‚«Ö‡ßàƒøWk¢ç‰äl£‰ Ua'ó¹D8$k–äÂ݉cô|îdIëã{€ñ#é(ËÐÇIÓïß¿ÿôéÓû¤×Ûgv‚ˆK™;i‰“†PØJ¸ÚŽ^½Í>Ú·üõ®(G¥*Ia9JÃ¥ÕŒ1(çÛ»Ô–€Žþ…’ñ Þé§ÿú€Ù@…Ú¬Y‡¥4J@dQvi6™æˆ5˜1œçÁe"½ŸÞJ’ äã?D+§i„p›ÃvÇDº¾íJJ/%7OK=)ÍÒ±v=Ú |?Ú®’Ü} 8EÄmÌHZmaJ¸K¾[ ô¯ð:ÁßATÏiZdG>}ú°“| ¤î&KÖ7…=™'|?«°sj$¿ 36€¸°¡uο1ˆG’Ê(ïñŸcT“<É@5’·ÐK² €ང ïÄéJIÈvËͲéOhjïõèÊ·¤Ñ¾™y¤pëÿ­Gô '»ùnÒúþï°ÑÜ|i1é×V$A_q¾ý/ÐŒßX½½ÛóÚ<×Übî}C)¶^r™¬ÑeëfÂ1öãÛ·ïHªéeÅòJ¢ áÿÙè =þA[~ª¤½Vü%M¤ï£Ò˜ñ$êÍ뚆ãO@½éÆe©² l£á_T«;9å/=@·ý÷¿wÿŽ?u/ä Ñ¡tä»(>á ç°O¬6Œv¶ÌØ äräÊÌ"¹JÖ¨ÈÞ’b3ä&@\ÌPÞB逗zŽ·ÜþÑË[?ûº|§^' ŠÎDŒ–‰½×>4ë+J¿i»eô ÒÞTç°°´ÍÃg-€·ý=\u‘Òíï±ý-ÚQ¤·-ÎÑ'øÙýôÁ‹7yDPs®03¥G&õ£{q÷Ød å¥-Óÿ"~.‰†hž|ŒÎ±ÈsôŽØüöm}÷x èÄoˆ³£ÖJZ?ú9›à<ð7«Xº²IÓ¡íÔ$¤t5ÚÕBlÇÁëýaþ;"„ùДÅWH±aüô‰†ÛÌ7™ÛÜ ™Óˆr¨‹¼+¶0F£€Ç%œ¦H³B¦°}ü†ú£‚yô¸Jz?”µ«EÝ•ñ¢šZ8}^ãY÷«-óü¾LÒìîVµÆŸP0Œ¶¿G˜‘ÔÀhj«ÒÆâåÐÓýúd*éDbeéÉH}´Û$‰Ôº8y~ ø 2qäåb |Iôñ#r÷Ýû¹zŽ8yÏÊñ.‹JþAk¨Zè¨Ë@²ãtõ M¬ÇˆxÝùÑ$8¹Ÿ íç¦F»Am;Ù”ÛÈæï ïïê¿iÅ_E‚Þê'ÌRÞþú©•“jåfùpUyÉ4¢ÌìÈÂ7gº….ã4˜gÍÕÂE1þ÷ÞûwoßA@ügä|]Ô£ -ÿ®è t}€œ>¯‰FoÕk×­GßCŒ¼V¤ Ä‚é.~Ïxý=ÃŒ8ÿM†e?´¬¹kÒˆ³wNN9hg§7ŸxJkN"&nΉ‰¡4)t6 9="“»Ò†|ºHßìŸêÇ÷=e9¼Òо+év3è‚8I;ÞàqfÕúV}¥ùÑx @ Ð¸G4z˜$Õj‚r<úž bMòü7l»Ñ¯”n‡õu0¿ýúÞñ"[Ò“˜(æÂ¸ûgðJE: HÓ].çääb19€úQ”Ñ=úøÏ÷ïÿù.J¾ÃöCˆv‹q®×Ùè51št(ÓQÏkÔ£o Hs)ú Rþò·¿1«Ám´pÊ#®pi`^à ՒBǧ–€¥Ô”ìF#“’PvɊʈùäA„/r¾‰b%6nd†ï#~ôú( J‹(?Üi9 ùî»–ŒÜÕë­%ݘˆTÓd¦Õ‹›ÎuÌÜü~ØEÕm4G9À·iïñøo­íÝäWÛ’½(y*ªnÄ4Î _îˆù;YJë ±.-µÃ˜å;׿š$¹Y?û\£Ú;äü;Rîwïþñ&²Dm@9wÉ9‰g=êM&¡D£FÐë”I1:Fë¬~éÝ[wy ¾àÝm¬o؉EÏE!´æ3ˆ™ÖüD™¡t! ‰£å'2aQæÈFÌ^#V23Ê9%.‰ƒ^—@ýñ ßiâò‡b£<Úašˆ4¯Kg¢çx³^™´âÚt®…ÿˆçŒÖj:Ç2I @{ϵÞúôž63Âå~êq.æÜz9¼i4 )îp·ˆgô§ò˜5ƒ?MÈfgµÑ'BwG=†ùloÕg$ÑOuë9`¿8!9M«®ôÍ¢BÏNp"ÏßEœ!çq(¡ ‹?‘yûáS¯ ’çMfÁšL…fŽ Ì²Q ÉY6·É‰ÑoD/§?H! Öš¨goëãûÿ¼…íãGwô^´ƒq~çæy|S¯ÿäQ—@Xœú»žtH0,(4C=;×¶«3“GµšLãˆvC>[5þô+^€¹3Y¡>be)Áí¨ˆ³ ˜¸»8Ú…9 ¿A˜sPˆ#_ì‚3Y=‚l3 1x‘ƒ ÎûÛ:ûsDÄ™ªˆv³9¢÷T¶ûô~'w8cI·Ë3‚#e^˜-[åÈÇQøT¦sÌFžd{Üö“\óñøã?ÐÿøøQ¼µ¸>„o@s%áŒ%”¹¦0êA4¯^Þ`.(4Ÿ‰‡}õw‹ó‰k4êò¡gÊ ßƒrˆ@GÙmÓöo÷d<ÎY?¢¨¨´Ç6èÅFkÈ)FÕ`[ˆÊûÜìLœFöñ?ïÀJC/ŽÕõÒÿáŠäç„ëVø.á[犋E¤‰Ñ«Ö£yá“›a¶Â7}>¶•swiÔa'’™ ÏAføé½$&„î¾ ݦ‹‘(穇Y‘¨ø“ذ—”À<Å$£^Ä´@yo_}›ÑÎØ[ÿóãÇ^¢É¹FÌíoÿóî?ïÞAD.ÿ´ò)Ïx®Óh®£ k+Õ£uŸ›'E…ÖãíÄWXð%Õxbv´Ý¢¤ð_¹zgHMb°¨p[ÇáâÛ uÌPƒ²rL c![{‡0OqCºæÛcDåbïöžü#Ö„:–Ÿ ß$¬è9—õZô¦âdëÒWP¢á*~é̳"еZåú@»…f~/(4>(×Q¾MÇ`N"ÜÁ6ÏÝœ½܇© ¾é»·E¡ÝÞ&”"K2'œÌ[‚”Îb*qxå ˆé)`,i&ÊiÙP6ìoãóà>Ð’ª® ÅV}k;æ#üü£‘c\½Üsúk·üÄ @KÓcdíþ‰[»çæ´p¸=¡aáí<˜Å…éün0™Êèq’à€§Z-€ï%2u“܇CÚaMåg¢Z„ÙÊhä潌ø“·ƒÏŒñE`ésÜWB³³$Ùs Ù÷]7w#! ¿Õ£ÿ¸ÕÃÍUÛ¹ÖË­Íó+}¬PþY¥Ãî}ÎæŽùLÓ¢mw7cÄ # Ð/èëÖ£7T9nBËaõnɺ™´i …R=Ô¯‰‰ó«Ï»¨½»Œ±‡Y)½A1æÔ‘öêá¼s”áß-ö( ¥32ÌôË-O-ÞÌç}¾ó6>x›o¹1›cþD“d‹BÏÖvfÛýd©‰Wj…ykëÚõè éP¡ÑqÌùÀãVK#NíÐäÕð TÝÀUû· £‘ÓŒ ¥P· ê˜41±58ö ÎBJcU#!ÕˆIöK0Þß9v8ëYPä£ßÏ+ù;®LÑg®_. –ÚâÜ™^kkkkÕùÑÐf^¤ æsY¹€¬4%öˆ:²s‹÷FïÓd¶$Ù÷â¼´Á[§â'çñÔøŒ9ÂËÿÑp„&œ9·£rF)ÄûŠížÕg‘«ÑDiZ¤UÌQªç:Š,B]WÝX¯íËvœ­Èª2nõ‰=:/瀘xB´·÷…μò°½„r@ì=AeùˆM0Œ ¡ñÛ=%Œ‰Ð*‘xº%ˆ¡÷"ÿß 8‰t¬% ÿ¯òÂЂŸ8¡®Õ^Ök×]¸ª`=f6]écÝ¿¯ »%eZ¹±ÓDg¯Ñ#â¬Ö£aÁ.¤ÔTn‹½S‡í’„øL8ƒ¢¢ÛÈ)zÙØ„nT ý¡€c¨T|å&ɳB)\„z¤”&Fׯo8Š@›ê(I×w ÌØBéVÄG£{GßÖ)™û‚7Nf“â]Ô+j³ì£Í¥ÐÄãOäåÍ9aºÌhÙb:šLqYð³­Ç¹`’õ` )Í¿¶¿ïí]ŒWÙÍÂàˇdãLiZní2i°>•@,sÍÜz2­í¯ép=N/‰î Òûj:n3È<Ó°GÕ³¥X¨0ï±ç•A&xj¦1¯ÀhtÆÆÎÉÆ% Ÿg&‚Q’aót×_T&ÄXÎö8Ï ¼vÓ}ÈzÐ{kí²oM¾ûº [ìoÑ|¤¨Ös_êž”@zq›ˆŒãŒ6Ú«^5öäBYOã‚°oT‚^XáQ>ƒ×à hø|1Îðœ'aà Ïùf[ Á§8œ1íÁÄij`6czäMyG騿\¯ýšýú‹þçâ¤'ájT“ iQ0âÒcBeÆXÛãÇKH“ß œeŸ &“G”BJ‡@;œIb’äJ˜QŸfmˆ6æ‘™`ÍÒ®Žþ(UI9„ƒh®úA" 8×שGF¬e ¬tÌd±¤‰Y]ÍW—T¨gŒ¤dš’:»­l¦”\4!¼‡¹ÚÞ>g/v¦^yY¢3L•1G‰¯‚>ðXP>bœéúIy¨Už}-iÊŸ1\ÂÒ·»$QœÏ‘Ñ_¯W®Ú)©†®’¬¿¡œÖä0Ò©&Œòò\¶ÇJêÌóyÜÆ>ßÜ&rãû–á.‘‰Ä-=EÎSIù²ñÑ="í ¬jpå ÜÕ)&’蟧Št Ô†Øê:éÍ•ëÑš‚Ïf^¤Y¡eIÆþÌ2šÕƒ¾uõ–/.%edV°™Ô.2Ì’ ßæÄxoSa¬–MàÓƒ\»J5âÇ 1ó®ðê Aý„æ$hÎù*×/(ëÆt¤FÒŽÃÓ5)5¦Pÿ ®WVš-õèªóv}&4/û6ëOÌzTŠvk›'—DÛu?úRŠ0oxE¤V¯ÁtæòšPzŸË—(Õ™Ø8£˜ªdD¿kDA‚OŸÀùÁÚýÝè•ÃW"YSÇhKko>xA bt ^±LZ­ˆpœðj6}æ3'*nuC×’D§ñ¨T_¤îѲ=§T1Þs}›ÜGâcÒr0ä/zrçJuÎD&˜Æ,¹`M…T .oΜ1¥§–ÒóB`$¡®SÕÚW®GW]0œñ’z:¾¢ËØ…‹]&»uÍ“^ѾP4ñÇBj/Î!¡5é ’<â,ôOÑïa¼Ž:£ÃxòØoGOžâë¤Å ®[áÕ+oÔ¥¢2 ±ŽûB{WGõV¯t•¥ƒ,lj(4î‚¥¨‚é<š  ”c¬P;ù¨…ÐV£ÒqipA:@8òüjó _šTõÁlÙL Ër\òdk!J'‹Èežxá‘W&÷–z^W¤_n^{½Žo¥ ~Sš‚¤Öuìܘi9¦&Ivè‹dÃà ·”¾¸–Ò·]r¼OöâáR Ž~ãj6'Jå'GJg¼V½vrGdñ GÅ4ú0N—(=Zb‡è',õ—‹êÑ89úfÕC.äœ0TbËuÄv}§\¢UœùÇ!'=Gi©þhñ£1íP£iÝÕ0§O[‚üÃÀ‹zàsÐä-H¢Q¨s‡rHi¹sEÕèUëÑìïÎi¢³_mÔcòyB õEQ=ç S^&ªŒ66º¥™Z‚ß—´E -2ŠKñDyv%Ìqrä$ãˆtú‰hõ!ô“ÇbAž<¡‘ø³ Š…Sm®êmŒ^‰TÃÁpåz4ž\åD×+îëçýÙ… M™h.ƒâØv~ø¡„ÒÊb&4ï?~|ø‘¦áŽÛ{{®Æ”àâéèÆU–.NŸ¸&áð±ì@8|räc$| (%@Q#÷ OBKÜHµ N8¯W~ÍùJßg,]G^–¿\‚›gËW»U‚°î(à„3^=<ŒYª5 ß[*ÄåeÀ$¿ å;¨3cëÃà‘Ó s'6ÃÂ?Œuðx0:¤´3!ÖzÔª××*“:ס5Ê ¯X¿Õ}ÅÃç…&Š4‹lÈÏãï¾ëñ¸lßQy©Þåe4v—¸g´X=|ÈÞâ($6ã/|>bÐñ57ØHG £ÓeJ+ðSk¨I:Ö¢¡O!”Îi¹„~¡ÊQ 4;è\&n· ý¸ÈlÄ |øðjòYPŠ· µ£á(}‰r€h¤q|Ø>„„ðáá!û±*³`­Ð?–.Ö¦Èe,'-²=˜š!4õæÖéÍë[õoÖdôkžÆS”hM{?ŠÕ/gôd¾]gFëq¼­eûÌØ>ÄËÃïéx©ìáÃü”š¡. Iòó™\s’&ñááógÏÛM %´µ9„U­A5¢TÒï8mDh¡ æ{TFhÒ-°+Í' ¬Ê´^ÊÞ ]º„и|]÷aë»ïD‘é‚SMÎMŽN~ôMh]n'l4¼0fDf„ùÙ3øy S2÷/fÔ­zEZ¤”ƒ…žý°”–ù¢3HÇ:õèêM>ÿŸ¢á|fêЭ•‹C9žÆÏ`KvzßùÆsã/lC ~¦á¶rFÌLf€øÇçpyÆX»Æ³Cp4"I1øh”Ž|Àlæm êÒjô@9€Ñ«×£1稙Ñ}Th³Jy8¤YŸÍämxíþœáW5z ëÀß•h4ÆmÔŒçÏŸýˆ7p 7HmjÏu4~î"þE¯óxZèPADF\E)½…"½òù gôÑÌÌêC7Éz£6/Œïd;×&6#‘TAù™¡4?æánS±®ÁåQùãñ¢áÃ{°õ4,ët ¥ë[߬T~M¥LÁÑtœË0ÖUi¡2/^špΔÐß­ó3¼>äã¶3ÃhCi/Œ2Ø9ðGÆõùsƒ¬o¡d²«3â òÐÇhCé"Ô¥§,[ßàÕ*eR>G¡?>¨O%7Á ¡rà0e<¹-¦t~}ÙP¬áú9„*‚º\£I:î@ñȬDå8(ÑPb¢SÃh¼“*( ˆ‚1^Ãþ"Î<žÙE±ÍŽzkkë'r«þ½“ÓÉ´FÇçÙ2̺RkTooÉPË 3¥yçÙ³Ã6šâD¶̉Àç^$ öò¼Dèg(Ôð·R*ÛÑ‹^DŠhÚ…4ÆBH£I=¶ê×­Goà4t\:öµž÷Ê ˆg(MÊÒ•¹ƒš‹‚—¼å§ã]O8ž —lÁü±¡¾“„0Ì)ûŒgÏŠqÏ]üÝÏlD™Öò6bŒA<ôš9ÐÙ”fFƒtlÕ‹çG£Ïgî :ÃØe'œð”f|ÚÑC¨ãëýÌ£-tÆ ¾öqÜoZÐh²fiv¨ð™µjKéÙ!yŒ9÷&Mˆ=5¬ )1ÖHé-Bzk±òüè*Î듌°lHö]ªÐ¢Ï²()”«¤^ÛØXãö¯3Éjt.LÌÚF ¡K]Ö25t°m!ÎDè]¦¡bÛ+Ñ 1Ó[@ç­U–éf¾Q!é8é ¡ÅE÷/RèÉdä ™ã Þãå× ´ …ÓD™"–{D•CÖ@ýЊ }akç®"˜‚·‹§cܼƒ%T@\e‚áÖuÏ7k#"$,Bg m —=wëâQÛ½oØnPÑñ@?ó7,„3êF¦Eb„6Ðh„]¤‹Êp5Âhz•$ЋŒ”d°×A!:šz“O_P:®ëìB «Õú–Ñ“‹ôyPz4É’Ÿêþ𡫤㙠~Ï<«Á?<´¥þ<Ôè\Áƾc5ˆt@L9WAs7 J#”r3À‹RÔõ¦¤ÑkMÛ­VixÅMòw§0-­ÚÜ­Xœê|poLþ.o]S¡½6ƒù…Œ%‹T-Œ*{æu õáÊÎ8:]pD\,¢±Ô’d¸%¬„©öpSÊò§5MÁPÏŠ(tÿBËa¥£Ñvléö7[x›_MçgN9(bÁ46Èæ˜¼|t'¢ÏA•$~xøpu ñ/ À$€ót Í<'!Åd1ÐèÕ¦ùÑ$3sЊ+D4zîÖ%v猘'™hôÖ5¡@M â|ˆ(Gœ °@Ùƒb­cï^”7ÜSh‚o»ý°½ÎíwÅ¥XÅx<`ÑÜ–juJˆ©£ªP3ÐkÔ£A£ÝÙêû3{B²XèÖÒ—Eqçn–àzx1ľ¸ñ#ŠòáCðÍIž8”ÅÄݹ³Të8Ø;ˆ|1ˆÁÏã¬Míº@Ó‡ÕFœ#ÎBéäÏêb~E@¯\ÆÂ’ÑhSŠ.˽MV8ᣖF±=..ùî2˜Ÿa]”7rßI0S†ÀÎî@fX¬uö™a½|& ­-ßn_ ð6ˆ³þzšÇªHh€rLX“| ”܃BTTN“F¯U†`¨çD ¥Ëm´Lèùˆ4WxóË’p8“£}r ¯Gp¾SZë¸s§ã­A“ºèÈCæ÷e„¦oIJ7<¡‘ÂcvÌ"ÂÚ1Pûì¥9]]­Meÿj•ÀÕE‹víäyîתãÅ÷1E–‚4 ýÝÍ‘ļœ´ØÊ&$XS:HâàîäàÜçU:õ# ? Z-&z—ÂÜWƒö.Ó{@áÆÁ±¨÷ y|Ì@Žs‘t Ô+Ô£¹HŠ®c&Y¡›V>øíÎ~â_¨ó-:h}‹h ßæ%~øƒYúò )%62ˆ;j[ ãåtúNÆ Í?»ô×ð8ñlëvL1GûœFEŽØzJëƒí4DÅzZ° Zlmýië@ãYÌnJ0$…î_\ð×ãü]Vè׸No%Ù–“\ËégÈå( "ÞÞèÙP‰Ðw"Î*£S øÜS'X ´;*òºÍÏo¤‚‘ŽÙrŒ±t7BÖnŸ> ;n« òjk!œ^¡„~]5Œž˜y`e>z¤gÓ`ˆâ‘#Ÿ#wTuõ¾³dŽrŸØVcA¸Ê¢dY2:β=$:>xpÐÈ/$4í4ÈŠ{¨Ûä ñy þ8–£@è€×¢ $Óñ2Ôñ‚túúó£u„åDfÈiÔËN‚<Ÿ¸uœÌò‹2Ýþ±3î¾{H0»šS#À¸@H¤0ˆ”ÎÀåÚÏ"…;HUöìf]¢´¹›hMâ;O‡éʾ±4ôpcñvb;¦$*,!Ìh—œ;¨á¯L¯Z®’tÐ4fôe³9FÎxK¨áAÅüïÄõ›çÙC`³}¡‹³Ý<¿·‡lFÍLêG¸tEøŽÏ°Ê(ݶ}Hæ 1áœA(d÷L¢1v(cØs”¦»¦"ä^AäòнX­ó:ÐÞÍå¾…ý ÚžÊ,ªE[[½Øë4›¯‚Ðâ©8BgqÂé²ÿ ŽŸÇÈiV¼8ÿaþÙFÎGÓË)ˆs¶À¡•1‹ßLeo wMÁo¢"]àóZ¯ŒæEî|ò]>ßN‡žÌ- FëýEYm½òHçñÒŒò"»qM& h‡œkGu óiäpGßaBÓåÎA !2. -AÍ®™u@îd°;6mª9û»ÁÔ ƒDF5XŽÅb­z4C]é{å˜-zîÎêhqRg9Ÿ!&Éóed ð‡Ó=²ÈŽÒw²˜ @¹§~Ž@?J ΄5huêá^ú/ óMÊsx^ò{ãb›Š”pÍÔi4SZ4Úà<`^³-GÊ^XMÒ \dq§l´‹¨Å ÒtÐåÅöT€8À!¾QÐ)Ç 4M¾Ð|ï‰éùBiÙît@¿ó ‘,ßàÿ¥Åâ^<¾° Ü ëõÔ}c[±žh¤×*“R Þ×ã)ú:)zI¡]º„Ñóé(Á%/JtÂ5Ò Àl'ì±A&Ó¬NÒç «ÿE†þ8N•ÑžÚ6\:œîa.rááDŽ(_Ö¦^¶Lf&µzl¡õ#ᚌö‡­ô/Öh_ã°Úì×öšfn¥€% óYÀ"ϸœ±'šÌ®Nvï0¨Èh3N˜ÑJgº(Þ÷:ø%‰YNò¤àø¢{ã+ÛT¯žÐ®ÎÄe †+ Áð[†‹sÈó‘3ÑvqgE™zÀ¥cZêÁÈ3t’ÃÃ6l{¸ sùŽhò›cr™ÓÅÝ× âûÐyx¨ï(¥qË:Ù½ªâ=ÀIæcd:¼¨îë\ ´ZJY‚.á>àA‚Áô ý§5ëÑ3¿€RYRèRv˰–ÇÊ‚¡ÎM$±4œ“ȹ:šaÙèΞä'lž=¥ãt¹¤ H·é€Òw¬–d­—¶»¨Ün#Ôé3O¯CéÀù µ§RªfõX`[§ÍŒö‹ú”Ì2°™J¨rË ÄØ¥döw›.Z…nïe¬¢É‚7¡ ŸŸ‡)xËÝ™!´×hƺsÐ6íÛT9("6®‹41ZHíl‰$0HèÅõèª2zfÖö)+øÏ—ÖäWá BÇ&²Ã‡Ô><´ÛlOÈLš¬ B¦2m-¥© SúžP¦ÑŒþ½hÏîvÇì‚—n^h§×c:H;¦ÄèEmÅz4Ÿö©îF¾KKÑÁÙt 'ï@ÃA+†úü›ph Ê(Ó™Ê2]ËÎʽcGè6¦­Æ,mËÇi|FCë´/j¢4IG_›Ò&4RÚ(2ÂŒf¨W«G¿æZU:X:Ê þó‰+÷ŠŒæ)€9O¢¡0˜µ=•Îm‚=SYf_§”F‘U…€_OS AdÛYäÅÃh‡°Z]d2opyIHlÀ§—¯´h†›”@JÍ0¿º¾õ` «UÍ 'ºâÌd©vgªýsã j:v)tãpI4@«ëvrà•C½ÇÁÁ+ñq;6éu·%w,ÒN?鸰v)8ºT1]è±=¹†Ëµ•€¾)Òq®kU-»è‘`ú:GhžñO…ŽœP.àü°M`ïÅ ®ÔŸ¹fw€Ehps™µg|Ç‘ŠG'SÇáq¦^ú—`Gh¸zs(Ä¿wu¤9?gZÃEa~µ¸öüèM.’VoËèJÿ¢ Ñæ¼ó…³°É™1e(#Î@è;±Ê²ÖŸïÐ •'tœ=owlΑÇöó{ø1??¾g¹£vڇĿÜùK|`~àÝÝùrȵ¼t«U©=£·êkÔ£Ïgîä~±ž4‘³J‡ œ§ÓQÌ¥g’èvA7Û ï½ÄâÌÕ| …€3Ë0*u›*Ò¦Lц¼0;>&ñHǃ @|€Ð߉F”&ÇILÞ‰‡k!íËÓÂèçGk=ºÏ:”ÑÅBÇÈ͸›‡•$ÉU¦ÓØx»™Ëd:ÚY \ÅZRªÂ‘“JÛ( \ΑÑTó¸'b ;BÄY×àÛ%-H£5ÿ‰ñz8 Ø †ëÕ£o!£}éîBÏÕ ]¤yRÉÂ->\"´€@J ¡<Îñ=zl¥cŒŒ~Þ§«ÁãÝtâ¿èi‡0e|Û(¨’‡YÍI(Í1‘€^·-3I/-Ôù£:£±ÎAKä3ÎùC랉Ì(Ò¸w'ÞÜ93œÅêìÚèãŽè(ïÚǬÓiܹCdfŒ•Ñ1 r·]à5“Z¦Í|)£i€k°Šá°@S ®¹6 tƒ–¨ö§Ð ½® Í Ç ˆïù¡uχ"ϳ8UsÇÕhÜÏÒôX -oûZG:Ž»Ï‘Êðià ìÄVÕh@û/1Pº«êüÀsš.øª)å,55ÚÑzm ¥LÚ‰.Ø8g̘H¨«> ™_Ò —äw²èI‹B;FûØ::{‘ŽÞmÆ÷ÝÚqGÍWð“ÄG ­úÜEv?˜tçENs;¢ñÐlë´/a´›q·\‹©L ²áϧD‹\rÍy¤:)¸g‘çCÄù(KXQ`¹æïŒºåãvcì QšŽ£6=¤1o„‰ÌA¢i£Í]úéRHÄ!p¨Mã<ÔèÕŸ®´ ÎJ^2CIL´œÃ;L¾§~…i ¸ÓÂÉ©n<a³fxï äÇé½.àŠg É Î€4$.l>ð.ü¤>Él ŒCCäa ¡¯ÀZФ•uêÑ4I©?[>žb®§£çùIfà[RGiªvèä£XÊ¢èëP7âäè‰_(­Cçˆîi;iaœÑ¾¸¢1¯4>Ö(Hâ—ã´íÀM¤ ‘ì’FwÅ€h)/óØ`ÎxŒ^ôŠõh.GW)–‰Å­‰J`íÜú{nMO ‡\)õaðr²?‰3¥ö%Dk§²ÐŽ;ãqG´#Å}§);$3mXl†nç—8ºø“¹ " Ï”AD†¢á>‡K^¥Lz³*Õ;š¥TrÔÛˆ³BšÊŒÇN = 2žëÆ>OËuð÷‰mYzÄ€=qñ"¡0›L4IÂó³ñ˜RC’ŽcŒ‡Ò"Ïã´ }§ÝÄhÄ„#Źaq#B“H‡ã¢ÿ!Ž/”5€¦Y»^£—ÍÞŽL´Vü=£}ú-Pp)fëGÀ]ä(xä.Y*j H…öq®KÅyþ¾Gh{‡ù"4å*™ÏZ ²¤;¸¼¨Ð]Ä9m,ÒØC9ÞÜ„^ôÊõèÚÌ­'¸ñÈo>ãœ!µ[¨]Q¦†Ó¼£ˆšŒ£6:ÊB>·ã#…ýüX†î?oÓDÄ´¡¦"#Ó˜(zJw ÒÝ"Òœ$>  ÇbÁÇr=–ö¶ç¡¡ôðB ¯]o·¡ÝŸ-/öª§—@íêþ¿¬T¾Q•|¦Kt„-â1…Ã*ÅÅ­i.üSÝž&eq3­Y)„œ±ÔÌŒ>¦ßNCœÉHGH;J[GE¤ANðÅÀƒ&Š¡zœ ‡d¢‡îÖ‹tÿ2Ò„ò7kÕ£kzð[8N FP•£0E×»Ž€Ðˆ4CMypºÈ3\¡p<ÑXÈÕ$$qç‹°dÚct’¯Ü‡·)έs¯ŒÒKâñô¨Ûmˆþ Ø À;sˆò•"?ïX= ãâºõhžñ?q6ºÈ艞½Èzèé²@Ó¡a…Bž*ýĸg#£âÜNï3ÎÏ£ãc@áte<”¡Ô(ÅhxæYŒÚ¬; n'*R𿝍Gì„Ãnñ5pÅ»„ÑkTï~^®Ý‘阛ÂÝÜéó¨T9¦ƒ—¤qËÚ‡O–„¯SRhºÜë<—4e„M‡2šŠ@y×}Ï©t`ëâN Ò™û¿ˆ§C„˜Æk¾܇g ·âOP‡Š=ü2 ÑoÎ ÊýÐsLæ£y¡=-h´]¨e „ƕӷA&>â¼°Ói<B?È)þ5|­ýº[Né§Q·é¸IùJ 8 „€ì™ÕÝZÈë1í:Åö^ï‹êѺ˜q9¡eFÇ~€ô S=Z¨þn8> üqx/(>ÕK'~êÙŒWq›YÄ"ÑÔD&øž±Ñè3eò™àÍÊml!ý%õès­’JÏ£½…VÓ1]¶~U<üi›• ÌNŽ,£³X-ǃ˜%Cêsíß’2ç¡ã›Ë ÚÑ5”Vã 2ü©Çù¨/ íÒA ‰šž =ýãÞe‡£1CÏhžŠ¾B=Z&¢»ST„ÁPΗèVæºbµIU†Ï¸å ž)}d…Cp&¤Û‘fÔϱØl(ý wEÒˆ éÑ>RiIuâ)Ї‹„x…aÚXä§ÂÒ¡öÌá{&$ £Çú¸%µ)D}A=šŽÊ*ΙëMA6.ðОÑ|,a„Ú¡…:ˆ„÷|„«{‘ãpäê£õÔäûqCÝ ”® ½vkd;/$OÒ”*¤qêTÃ2zXdô™S–Àh›2î­S–rô9P¨_<,™‡ 'æùtÉr ¼BËŠ}š„yo×IŸ”•CêË®:‡•Ž(UF§Ñ=`U!¾0À¥-‰ãŽ·wOé³J „v:lˆm´[¼ˆ¨ˆ‹˜â¦×¨Gol:æ¼èîØLÛÃëmbhÄÃ(Çx ÇºL’“Ì ý‘fßÇl¢µÚ @³—UF7¸ˆ< vÚñâøE£k(|ô³E§Ñ)ÕðŸ ΖÑã"£ÏTÏÇ*ܶˆ½F=æz´®æ…2 ÌPZ*tƒV]àC¹S)ùαWhJV:"ÐÇD4/|qxï(£¥µ£K(SÒb(ŒrHÓîÓ{¤@i><½.¥Ï\<“O`¬VÄe쮽¢“vƒ³¥®#¬Ü³ïiQ6x%†jèÈ ¥*F:ÚžÐYš*ø~:TâL;òÅ-ØP˜Âèã€ÒOŸ>mtºBh^3’K…ø´T£O‡üI„ŒVæ³¹6ä æG¿)=9ä¤8 ¬Pò…WÑ¢ÃiÆ1ßRžËѾ C…^’•ÐŒ4ò7êlÄ• @¿ÑfBƒ^w”Íb¢é§4’ž¦)âuê }j }êÙ|jé}f fr¦Tgyþezô-¤ÕèÑÜItI,,¥4­7Ë‘9yF|Ž 8“\ˆ‰ŽøQ*a´¤aäÌb-¯Y án£«»/Øá)Øé®r5› /Êg lA£-ÔžÑúijPR„Ñë®×!3Ѓé(˜6׉ç%Å$·¢¸,'7Àc#H>çÔ§*„³¢ Ý,u БÖÝ;1ÄSUޱj´ÐyL»xFÃ’`?mvºOŸj Ÿ ‡O­FŸêg¢*§žÚþ3‘ÒY‘/*“öÝAà6êJ(…C ÝYÑJ4Z’u p4+N Œ~úDP'Ä;¡IØÿÄP } $˜±fÏ‘Ž›1Í3 ÊWü½FŸ sŒ\Àh´ÃšãòÕ£±Öúè9ËÎC×Q¬rØEd'Z˜(Ju€$µŽƒXMÙ7ÃÛ¥9HA‹ÕH¥$ÑR{hÆ «`Ýè•Ói' ôÓ§iÚŒeè m—a4útI£9-ZÅ öºõ蟉ÑÊæ~ ãßŬp9NyYOœ—ŽGàèò¼p ‡îÎâ9 M†öÑðû©TwΆü<£akvøF×J4˜é&N/H›°åÍÓ¡ãð)m†ÒÆuœú^A£ÇÎLŸyF¯9?º/å»B4œ›dËýf¨lÈPh;ðp‘EL2«cW‚u&¡a-Ÿúá$P­¦¿{a) ר´aÒÒaÏAHã5|£/1™»Sƒ±Óh¹ãÔã|j ^ ´¯J}A=úÍlfWÙ5„.ˆeN¿,мHþ˜W°¸ÐqJñÐ!·Ý´ó\g<ˆŠ8S¾BCðV;àƒ»NÉeÒ/ðRB§f×!-fE#Í‹Ôв7Ðh‹´¿ 4Úä7ÌèêÆ:õèêùdV˜x7’qY{@r‘ÐáiKa"ô`ŒÃRð±»…nKU´P„“Öi²ª8k)mä!á *¡qßZ~ÒFÜÄ…ÁK„>½ŒÐª!*0!¡ ø/©G÷geG y^ÖŽQQ9xÅeÕèqL«&6t˜ðÈñºëä¯c<Ϊ(Ñ÷´þ«%UNvúC4í`Áv -;÷))\,âáe} £Eat?pæj+Õ£_k™t23gš¸SçøO ¥‹uh¿0"Pº¹ ä0gë¬t†d…e™'”)Ç™;ã3qÂ7Ýè:6‹87„Ò/P°»Obi9­Ò±H‡ëPúÔÑ9¤4¶uêÑR'}Ãc†…ƒWFnèà@Y“šå Ç>§œ…–Fd}Qµt×g™öó\P’-¡1#Tåxñ‚EZ”ƒUš›5+iô©ûq<¡§ã8§Š2Dá~X9T£;Ëæ®)qk96wÆq3<‡4f‡ÒDAšä¢óx}B»( ôÙÔ£k¼pU0iWN‰U<ô;üvÑWÅŸ²FÓÒ).¬ÓHcÃhRŽ 9):•/ëXÇóüÏé0íjëпí@JÚÖè5 ^+j´ˆÇ© µ&9è—«Ô£Åuô—¦Fó1oEF—×GÇÓ©®ÏBž)½ )K9¬é ­hÿEQ¢c¢£¯è©ïF‘ËP}&€›žÑ #^;p‡FsŽ…_LéSKéµêÑ`QnÊ”°%ßAH e „,ÐÇ š¹Bc´F9âÔÀš/It~:Ô.ÎO9/›K4|áІ{éãfüÔ6ÈÀóF³)îîË4úÔ× N•ÑõÚZõhœ†Ã¹9\vz93Ô3¨©@#§Át,JiEºk':/»èn,ÎyÌ Ì‹/|6øâ;iÞ}¡VZ=þïE7O‡¡XÚê„>ý²ùÑËŒÙXè3''ùúè h‹ÊiQV W~žãB‰~ÇÆ9û A"3ö¢!Ñ0v»"ÒžÐQ3n6›ygxÝVªÑ|ÞÓ_\C¡÷vr-¥ÑâÔ$9Ÿ—3Ñ]\<tÝÈ‹ô‘õ–$ú8s)¯ñ²•d¯ñn×úöv P¯üóµ.ü ^{Ún¿ÏSïúÖ#=¬Â¯žÄœ¶'ràŠ’Žbé úã8]ÐQ”\&å¡Ëán©‹.Iy‡Zot=Ò¬‘OY^XJÇX½¨›ÍÕp.(·ÕhÏé/šˆ>+®I*§NWO*N†V…– NOuŽÎÃÏ ·á¯D¢›§:”Z½¬“dWâhv îy7 4Ž„åéZ@0—kô:ç3¤i»…!ùªô<°w#S‰NÊ=pt&¤‘ÌžS”Ÿ—J¤ Ñf¬É¿_7Â$’앃ËŠ{ÓiG3å¬p±¡C¼ Œ>]»]‘IŽ…ÅÃõ íÊr@Õh£´N •¹µaʽ £¡™´µ¤Ñðv†ÌÖI ü ¡tG²ï Ÿ¯Ø®-#®­YÞÐhŠy¡äàft¥”К¦BÝ*·QDëÃ<€.¸èdîLeÞíí°¦Ã9iay£KHßo¸vÿj ¯¾œÑµõêѲ¬ †K«UÓBûBBCžó‚Œ8ÎòàA;$ôR,Ûà}º¬ÑønïÇU¾ÑhÈ—Æ÷Ýn·5X9š¢Ð«1ºì¾^¹]áÕ ŠÜk,œ—lÔJ´)Ü—C-1ExR:ë .J’*J{àéþ‚tQ=ZÎ>S¨)ÿ&œ‘Ó€*ž„àņ;ÄeFÓÃjvtá…!®&ãÎG Ý´P¾tnÒ[ò.4º!£%Ê]TŽ&èFY°£&°†=A—® tîå²ï~ûó—Mg$‰f ÑÜáŸa”CL™Ð¸#p/mTg+ºÅ R*Ú‘D¿8öó;±Û[ÒhÓÒûEíønî§M!\a³9( £?;úòÃC‡µ£³JÑÚõè K‘ºï€fBç„sNAûS¥öµƒòAzj¨dº‘Fyª5¦¸Ûíæ; }:ôâ| ¡?y"«”ÞÏ¿ïv=Ê9hô}”‰²˜g€–ûTBèq¹_i<´‰Ázízôk•.“ ÐsÞÁX˜s-Ú1Zç\µ3øêŽY±gÐL/pÕ<î/jFqœÛ‰08Tq^ÖèS‹òçÒ”²41ãfÿÝ_` ül’ŽJAÈ?›?-÷‹²|ö»6~þ‚ùÑ:]µ;ŒE4ZM6š™¬M¢‘‹}¾h¿ò°ѡ¥ßÅS§ÍÜË3ZŽÜá¼Déb,ú<´“ p`¥Éé/÷dì>‡0ˆ‹žÑŸó¡§´e´^m)½öüè Ÿ®ÚMDJç*¹0Z%CMôe\¥h6ò€Ñr0Û"¦ñ%Y!-r ú¾ƒyY£-Ìtu¿ééì’f5Žæç ‹¶„Ö‹ú³w =ºŸU®M<„›õêÑ\(Ë ƒ^;Fù\íÎAíÈE;P9ØD+Ð~ÇZ¶NžÒìNY†ÓDuÛÍÌ—Ú¹ˆÓ¼ëÚ'ƒ ´wžz{¤œ ÁPì@!¶þ~`ö^Ô*«Ô£‘ϕרÑr'¸°6OrÑŽÜ•íhÑŽ\NT>([:‹xœ!Òq“Wâ ¸x…ºÛìS…Jf»˜xD”îJ*èSnrјx›8XÄ9%÷g¹ç³jønÈm°v•ŽÖÖêÝ PÚ:ËŒÎ%Žr­* Ðù@–Y`ã©Ã×mùÌ—(oÆ€sS¦‡ xn'|^̈+$ ž¥Q~¿ûÂÀL@ãt™F(JS½ ¥Ãܯ€~¶„vrmsŸášõhBƒ¡Jï«1/2š£¡ªô  ôÌ•%@K¨ò$‚”#«piWDlØâ¾HH#À¹ÀèPœ8˜Ñ7/èû ÃZÙ;,uh𓢇Sm½~^’' ó«•êÑ7<£Õu°t`™TSC=òMô@-îŽE:ÌÁý‚Ànj(\uòFšÒ@@C GPŸÊq¹8»¯ðggêr*ôƒ‚PZñµâз<ý¬zì?"Ò$,a½D¤ck±ÂB_ ©_ŸP‘Tg:ŠrÌGš±h%ZÝ‘iPL2„ö²¡SøO‡ ˆˆþ$t‰é¿¸;û~ÔbaÞp¡ÏІÅ÷³Þá‹Ý[ýÔ”èý!Ô\®®\Æ™3GiIYdþŒ0Ú‚ ¡‰ÒAÚEq»î²[[‘îDxà°ÀÜŒ:Ë”¼ÁR¾ßhÇõ °EµðÑCg¤sßäŸH2’zýzt¥z"gºï«Áãã çTëðë‘NY¡I¤Ç:¼2‡@›(è—C MHonArc Documentation

    MHonArc Documentation

    MHonArc-2.6.18/doc/app-api.html0000644004705000001440000010213411512360071015076 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-2.6.18/doc/app-utilsprg.html0000644004705000001440000002404011512360071016175 0ustar ehoodusers MHonArc Reference -- Appendix: Utility Programs
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Appendix: Utility Programs

    This appendix describes the additional utility programs that are included in the MHonArc distribution. The utility programs are installed with mhonarc during the installation process.


    mha-dbedit

    mha-dbedit allows modifications to be made to an archive database without regenerating any archive pages.

    Typical usage:

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

    mha-dbrecover

    mha-dbrecover recreates an archive database from the individual message pages. This program is useful if an archive database gets corrupted, or accidentally deleted.

    Typical usage:

    prompt> mha-dbrecover -outdir /path/to/archive
    

    If the archive used different resource settings from the defaults for controling filenames, then you must specify those settings when invoking mha-dbrecover. For example, if you are using "shtml" for HTMLEXT, then you should invoke mha-dbrecover like the following:

    prompt> mha-dbrecover -htmlext shtml -outdir /path/to/archive
    

    mha-dbrecover will only recreate non-layout message related data. If the archive had resource settings that were different than the the defaults, then those resource settings must be specified when invoking mha-dbrecover. For example:

    prompt> mha-dbrecover -rcfile res.mrc -outdir /path/to/archive
    

    Additional Options

    mha-dbrecover supports the additional command-line 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.

    Using the number range options are typically not needed, but may be useful if the archive is maintained with a MAXSIZE (or EXPIREAGE), and KEEPONRMM is active. The message number range options will allow you to minimize recovering processing by having mha-dbrecover skip messaages that will be dropped from the database due to the MAXSIZE, or EXPIREAGE, setting.

    For example, say you have an archive directory with 1000 message pages numbered 0 through 999, and the maximum size of the archive is 200. The following command will make recovering more efficient by skipping the first 800 messages since they will be dropped from the database anyway:

    prompt> mha-dbrecover -dbr-startnum 800 -outdir /path/to/archive
    
    NOTE

    It is possible that message number order may not exactly match date order. You may want to increase the number range to take in account of possible anomolies where message number order may vary from message date order.


    mha-decode

    mha-decode is a utility program unrelated to MHonArc archives. mha-decode provides basic MIME decoding capabilites for 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.

    Only MHonArc options that affect parsing of mail folders are applicable for mha-decode. The following options are applicable: -conlen, -mhpattern, -msgsep, -noconlen, -outdir, -perlinc, -rcfile, -single, -umask.

    Additional Options

    mha-decode supports the additional command-line options:

    -dcd-digest
    Do not parse message/rfc822 and message/news attachments. Normally, mha-decode will recursively parse message attachments and decode any parts contained within. With this option, any message attachment encountered will be saved intact.

    Examples

    Basic usage:

    prompt> mha-decode inbox
    

    Use -outdir to have all decoded data placed into a separate directory:

    prompt> mha-decode -outdir /var/tmp inbox
    

    And to decode a single message:

    prompt> mha-decode -single msg.822
    

    or from standard input:

    prompt> some_program | mha-decode -single
    

    Save out attached messages and then pass them into MHonArc to be added to a archive:

    prompt> mha-decode -dcd-digest -single digest
    prompt> mhonarc -outdir /path/to/archive -mhpattern '^822.*\.822$' .
    

    NOTE:

    There is a trailing dot, '.', at the end of the called to mhonarc to tell mhonarc to process the current working directory.

    CAUTION:

    You will need to reset the MHPATTERN resource if normal input into the archive is from MH-style mail folders.


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

    $Date: 2003/10/06 22:04:14 $
    MHonArc
    Copyright © 1998-1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2.6.18/doc/commontasks.html0000644004705000001440000003447711512360071016123 0ustar ehoodusers MHonArc Reference -- Common Tasks
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Common Tasks

    The following section describes how to perform some common tasks with MHonArc, beyond those mentioned in Quick Start. To get a complete picture of the capabilities of MHonArc, see the Resources section.


    Setting the Index Title

    If you tested MHonArc out on some of your mail, you may have noticed that the titles of the main (date) and thread index pages are not very descriptive: "Mail Index" and "Mail Thread Index", respectively. MHonArc allows you to change the titles via the -title and -ttitle options so the index page titles provide a better reflection of the type of mail archived.

    The -title option sets main index title, and the -ttitle option sets the thread index title. Example:

    prompt> mhonarc -title "The Widget List Archive" \
    	       -ttitle "The Widget List Thread Archive" ...
    

    Changing Index Listing Order

    By default, messages are listed in chronological order on the main and thread index pages.

    NOTE:

    The chronological order in the thread index is based on the root messages of each thread.

    For many, the default listing order is not what is desired. A common desire is to have messages in the main index listed in reverse chronological order; ie. the most recent messages are listed first while the oldest are listed last. Or, one may want to list messages by author since the target audience is more interested in looking up messages by certain authors than by date.

    Following is the list options available for changing the listing order on index pages:

    Option Description
    -authsort Sort main index by author.
    -reverse Reverse the listing order in the main index.
    -sort List messages by date in main index.
    -subsort List messages by subject in main index.
    -treverse List thread in reverse order.
    -tsort List threads by date.
    -tsubsort List threads by subject.

    For example, to get a reverse chronological listing, do the following:

    prompt> mhonarc -sort -reverse ...
    

    Removing Messages

    There are two ways to delete messages from an archive: automatic and manual.

    Automatic Removal

    MHonArc supports the ability to automatically remove archive messages older than a specified time period, older than a specified date/time, or by exceeding a specified maximum number.

    For example, if you want an archive to only contain messages that are less than a month old, do the following:

    prompt> mhonarc -expireage 2635200 -add -outdir /path/to/archive mailbox
    

    Here, we used the -expireage option to tell MHonArc to remove messages older than 2635200 seconds (30.5 days) when adding new messages. Having to use seconds to specify the expiration age may be cumbersome, therefore, a table is provided in the EXPIREAGE reference page listing common time periods and their equivalence in seconds.

    A less used option that will cause automatic deletion is the -expiredate option. This allows you to specify an exact date/time where any messages older will be automatically removed. For example:

    prompt> mhonarc -expiredate "1 Jan 1999 00:00:00" -add -outdir /path/to/archive mailbox
    

    In this example, before MHonArc adds any new messages, it will delete any messages with a date earlier than January 1, 1999. See the EXPIREDATE reference page for more information and for the correct expiration date syntax.

    An archive can also have a maximum number limit. When the maximum number is reached, the oldest messages are automatically removed. The following is an example of setting the maximum size of an archive:

    prompt> mhonarc -maxsize 500 -add -outdir /path/to/archive mailbox
    

    Manual Removal

    Sometimes it becomes necessary to remove specific messages from archive: Their may be some spam messages cluttering up your archive, or there may be messages not appropriate for the archive's intended audience.

    To remove specific messages, use the -rmm option. For example:

    prompt> mhonarc -rmm 24 28 39 48
    

    will delete messages 24, 28, 39, and 48.

    The number assigned to a message is part of the message's filename. Each converted message is writting to a filename containing the number of message. For example, msg00024.html, msg00028.html, msg00039.html, and msg00048.html denote messages 24, 28, 39, and 48.

    Checking filenames can be awkward, an alternative is to use the -scan option. For example:

    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                   
    ...
    

    With -scan, you can get a listing of an archive to your terminal. The listing can be used to determine the message number for a message if you know the message's subject and author.

    The -rmm also supports the ability to specify message number ranges and message-ids. See the RMM reference page for more information and examples.


    Customizing Page Layout

    One of the most powerful features of MHonArc is the ability to customize the layout of pages. In this section, we give a quick introduction on how customization can be done. For more information, see Page Layout.

    In this introduction, we want to add a footer at the bottom of each page containing the following markup:

    <hr>
    Please visit <a href="http://www.mhonarc.org">www.mhonarc.org</a>.
    

    Create a new file called "myresource.mrc" and edit myresource.mrc to include the following:

    <!-- Define a custom resource variable representing our link. -->
    <DefineVar>
    MY-FOOTER-LINK
    <hr>
    Please visit <a href="http://www.mhonarc.org">www.mhonarc.org</a>.
    </DefineVar>
    
    <!-- Modify appropriate resources to print our link at the bottom
         of MHonArc generated pages. Notice how the custom resource
         variable defined above can be used to include our link. -->
    
    <!-- Main index pages -->
    <IdxPgEnd>
    $MY-FOOTER-LINK$
    </body>
    </html>
    </IdxPgEnd>
    
    <!-- Thread index pages -->
    <TIdxPgEnd>
    $MY-FOOTER-LINK$
    </body>
    </html>
    </TIdxPgEnd>
    
    <!-- Message pages -->
    <MsgPgEnd>
    $MY-FOOTER-LINK$
    </body>
    </html>
    </MsgPgEnd>
    

    The file you created is formally called a resource file. A resource file is a plain text file containing resource settings affecting the behavior of MHonArc. In this case, the resource defined above tells MHonArc to include our custom footer on all pages.

    To inform MHonArc about your resource file, you must specify it when invoking mhonarc:

    prompt> mhonarc -rcfile myresource.mrc ...
    

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

    $Date: 2005/05/13 00:00:35 $
    MHonArc
    Copyright © 1997-2005 Earl Hood, mhonarc@mhonarc.org
    MHonArc-2.6.18/doc/docstyles.css0000644004705000001440000000337010264334742015417 0ustar ehoodusers/* $Id: docstyles.css,v 1.5 2005/07/11 00:14:26 ehood Exp $ */ body { font-family: verdana, sans-serif; background: #DDDDDD; color: #000000; } a:link { color: #0000EE; } a:visited { color: #551A8B; } a[href]:hover { color: #009900; } a:active { color: #FF0000; } h1, h2 { margin-top: 0.0em; } h3 { padding-top: 1.0em; font-style: italic; } h4 { margin-left: +1.0em; } hr { background: #0000CC; padding: 0em; margin: 0em; } pre.code { background: #EEEEEE; border-color: black; border-style: solid; border-width: thin; padding: 0.25em; } tt.icode { background: #EEEEEE; padding-left: 0.25em; padding-right: 0.25em; } pre.shell { background: #337733; color: white; padding: 0.25em; } tt.ishell { background: #337733; color: white; padding-left: 0.25em; padding-right: 0.25em; } a.shell:link { color: #FFFF88; } a.shell:visited { color: #88FFFF; } a.shell[href]:hover { color: #00EEEE; } a.shell:active { color: #FF0000; } table.note { padding-left: 0.25em; background: #EEEEDD; border-color: black; border-style: solid; border-width: thin; } table.caution { margin-top: 0.25em; margin-bottom: 0.25em; padding-left: 0.25em; background: #FFFF99; border-color: black; border-style: solid; border-width: thin; } table.tip { padding-left: 0.25em; background: #CCDDEE; border-color: black; border-style: solid; border-width: thin; } blockquote.mail { background: #EEEEEE; font-size: smaller; padding-left: 0.25em; padding-right: 0.25em; margin-right: 0em; border-color: black; border-style: solid; border-width: thin; } .example { background: #EEEEEE; border-color: black; border-style: solid; border-width: thin; padding: 0.25em; } .highlight { background: #FFFF00; } MHonArc-2.6.18/doc/utils/0000755004705000001440000000000011512360071014020 5ustar ehoodusersMHonArc-2.6.18/doc/utils/mha-dbedit.html0000644004705000001440000000522411512360071016707 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-2.6.18/doc/utils/mha-decode.html0000644004705000001440000000755311512360071016706 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-2.6.18/doc/utils/mha-dbrecover.html0000644004705000001440000000737711512360071017442 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-2.6.18/doc/prev.png0000644004705000001440000000147107451276546014371 0ustar ehoodusers‰PNG  IHDR D¤ŠÆtPLTEÀÀÀôÎó¨òÅîÅìÊì¼ë³ë¤ç¾çµåä£ß›Ú~،ב×rÕŠÓ«ÓkÑfЅϱÏlΩÊœÊ_ÉbǟLjŪũhÅ¢Â\Àªu¾w¼e¸Z´_±] °f®Š¬i¨ ¦q.¥O¤q£b¡ˆ¡lŸXxœN™o<”b’V<ˆV+ƒ5‚X€N }dDsL0jS:gGf> f;e@e=aJ2a5^D^;^3 ]+UJ=U)TC2P3O+K5 KD*C(%C#A[}?:3>!<13:9Qq8=N6&)4053& 1R}18H/Hm/>Y/%3-4A*]›*1?)(`¦'a¨'^£&+;%fµ%Zš%$g¹#h¾"U–"6O"b³9a6b
    <!-- ================================================================== -->
    <!-- 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-2.6.18/doc/rcfileexs/date.mrc.html0000644004705000001440000000471011512360071017231 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-2.6.18/doc/rcfileexs/frames.mrc.html0000644004705000001440000006220211512360071017571 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-2.6.18/doc/rcfileexs/def-mime.mrc.html0000644004705000001440000003000711512360071017775 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-2.6.18/doc/rcfileexs/secure.mrc.html0000644004705000001440000000352111512360071017601 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-2.6.18/doc/rcfileexs/subject.mrc.html0000644004705000001440000000262311512360071017754 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-2.6.18/doc/rcfileexs/utf-8-encode.mrc.html0000644004705000001440000000674311512360071020522 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-2.6.18/doc/rcfileexs/icons.mrc.html0000644004705000001440000000757111512360071017437 0ustar ehoodusers
    <!-- ================================================================== -->
    <!--    $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-2.6.18/doc/rcfileexs/utf-8.mrc.html0000644004705000001440000000564311512360071017265 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-2.6.18/doc/install.html0000644004705000001440000006612211512360071015223 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-2.6.18/doc/layout.html0000644004705000001440000003377111512360071015076 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-2.6.18/doc/pod2htmi.tmp0000644004705000001440000000000311512360071015121 0ustar ehoodusers . MHonArc-2.6.18/doc/app-rcidx.html0000644004705000001440000023357511512360071015454 0ustar ehoodusers MHonArc Reference -- Appendix: Resource Indexes
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Appendix: Resource Indexes

    This appendix list resources by envariables, resource file elements, and command-line options.


    Environment Variables

    EnvariableDescription
    M2H_ADDRESSMODIFYCODEPerl expressions modifying displayed addresses in headers.
    M2H_AFSSkip archive directory permission check.
    M2H_ANNOTATEAdd/set annotation for message(s).
    M2H_ARCHIVECreate archive.
    M2H_ATTACHMENTDIRFilesytem location of attachments.
    M2H_ATTACHMENTURLBase URL to attachments.
    M2H_AUTHSORTSort main index by author.
    M2H_CHECKNOARCHIVEHonor "no archive" flag in messages.
    M2H_CONLENUse Content-Length value.
    M2H_DATEFIELDSList of fields to extract date of message.
    M2H_DBFILEName of archive database file.
    M2H_DBFILEPERMSFile permissions for DBFILE.
    M2H_DECODEHEADSStore "decode-only" characters sets in raw form.
    M2H_DEFRCFILEPathname of default resource file.
    M2H_DEFRCNAMEName of default resource file.
    M2H_DOCAdd link to documentation.
    M2H_DOCURLURL to documentation
    M2H_EXPIREAGELength of time to keep a message in an archive.
    M2H_EXPIREDATEExpiration of date of message.
    M2H_FASTTEMPFILESUse non-random temporary filenames.
    M2H_FILEPERMSFile permissions for archive files.
    M2H_FOLLOWSYMLINKSAllow/follow symlinks.
    M2H_FOLREFSPrint links links to explicit follow-ups and references.
    M2H_FROMFIELDSList of fields to extract author of a message.
    M2H_GMTDATEFMTConversion specification for GMT dates.
    M2H_GZIPEXEPathname to gzip executable.
    M2H_GZIPFILESGzip files.
    M2H_GZIPLINKSAssume files are gzipped when creating links.
    M2H_HTMLEXTExtension to use for HTML files.
    M2H_ICONURLPREFIXPrefix for icon URLs.
    M2H_IDXFNAMEFilename for main (first) index page.
    M2H_IDXPREFIXFilename prefix for multi-page main index.
    M2H_IDXSIZESize of each index page.
    M2H_LANGSet locale.
    M2H_LOCALDATEFMTConversion specification for printing local date.
    M2H_LOCKDELAYWait time between lock attempts.
    M2H_LOCKFILEName of the lock file.
    M2H_LOCKMETHODHow archive locks are done.
    M2H_LOCKTRIESTotal number of time to attempt a lock before failing.
    M2H_MAILTOConvert email addresses in message headers to hyperlinks.
    M2H_MAILTOURLURL template to use when MAILTO is set.
    M2H_MAINCreate main index.
    M2H_MAXSIZEMaximum number of messages in an archive.
    M2H_MHPATTERNRegex for matching message files in an MH folder (directory).
    M2H_MODIFYBODYADDRESSESApply ADDRESSMODIFYCODE to text message bodies.
    M2H_MODTIMESet modification time on message files to message dates.
    M2H_MONTHSMonth names.
    M2H_MONTHSABRAbbreviated month names.
    M2H_MSGEXCFILTERPerl expression(s) to selectively exclude messages.
    M2H_MSGGMTDATEFMTGMT conversion specification for message dates.
    M2H_MSGLOCALDATEFMTLocal conversion specification for message dates.
    M2H_MSGPGSPrint message pages.
    M2H_MSGPREFIXPrefix for message page filenames.
    M2H_MSGSEPRegex for matching message separator in mailbox files.
    M2H_MULTIPGCreate multi-page indexes.
    M2H_NEWSHyperlink newsgroups in message headers.
    M2H_NEWSURLURL template to use for newsgroup links.
    M2H_NOSUBJECTTXTRaw subject text to use for messages without a subject.
    M2H_NOTEDIRDirectory to store annotations.
    M2H_OTHERINDEXESList of alternate indexes to create for an archive.
    M2H_OUTDIRLocation of archive.
    M2H_PERLINCAdditional Perl include paths.
    M2H_POSIXSTRFTIMEUse POSIX's strftime() for converted time format strings.
    M2H_PRINTXCOMMENTSPrint <!--X-...--> comments in generated pages.
    M2H_RCFILEResource file to read before processing input.
    M2H_REVERSEReverse the listing order in the main index.
    M2H_SAVERESOURCESSave resource values in database.
    M2H_SORTList messages by date in main index.
    M2H_SPAMMODEPerform actions to deter email address harvesters.
    M2H_SUBJECTARTICLERXPRegex for matching leading articles in message subjects.
    M2H_SUBJECTREPLYRXPRegex for matching subject text denoting a reply message.
    M2H_SUBJECTSTRIPCODEPerl expressions to strip subject text while reading messages.
    M2H_SUBJECTTHREADSCheck subjects when computing message threads.
    M2H_SUBSORTList messages by subjext in main index.
    M2H_THREADCreate thread index.
    M2H_TIDXFNAMEFilename of first thread index page.
    M2H_TIDXPREFIXFilename prefix for thread index pages beyond the first page.
    M2H_TITLETitle for main index.
    M2H_TLEVELSMaximum number of levels to indent in thread index.
    M2H_TREVERSEList thread in reverse order.
    M2H_TSLICESize of thread listing slice for message pages.
    M2H_TSLICELEVELSMaximum number of levels to indent in thread slices.
    M2H_TSORTList threads by date.
    M2H_TSUBSORTList threads by subject.
    M2H_TTITLETitle of thread index.
    M2H_UMASKUmask value for the MHonArc process.
    M2H_USELOCALTIMEUse local time to determine day groups in main index listing.
    M2H_USINGLASTPG$LASTPG$ is used in resource values.
    M2H_VARREGEXPerl regular expression matching a resource variable.
    M2H_WEEKDAYSWeekday names.
    M2H_WEEKDAYSABRAbbreviated weekday names.

    Resource Elements

    ElementDescription
    <ADDRESSMODIFYCODE>Perl expressions modifying displayed addresses in headers.
    <ATTACHMENTDIR>Filesytem location of attachments.
    <ATTACHMENTURL>Base URL to attachments.
    <AUTHORBEGIN>Markup at the start of a author group.
    <AUTHOREND>Markup at the end of a author group.
    <AUTHSORT>
    <NOAUTHSORT>
    Sort main index by author.
    <BOTLINKS>Links markup at the bottom of message pages.
    <CHARSETALIASES>Charater set aliases.
    <CHARSETCONVERTERS>Charater set filter functions.
    <CHECKNOARCHIVE>
    <NOCHECKNOARCHIVE>
    Honor "no archive" flag in messages.
    <CONLEN>
    <NOCONLEN>
    Use Content-Length value.
    <DATEFIELDS>List of fields to extract date of message.
    <DAYBEGIN>Markup at the start of a day group.
    <DAYEND>Markup at the end of a day group.
    <DBFILEPERMS>File permissions for DBFILE.
    <DECODEHEADS>
    <NODECODEHEADS>
    Store "decode-only" characters sets in raw form.
    <DEFCHARSET>Default character set for text data.
    <DEFINEDERIVED>Define extra file(s) to generate for each message page.
    <DEFINEVAR>Define a custom resource variable.
    <DOC>
    <NODOC>
    Add link to documentation.
    <DOCURL>URL to documentation
    <EXCS>List of header fields to exclude.
    <EXPIREAGE>Length of time to keep a message in an archive.
    <EXPIREDATE>Expiration of date of message.
    <FASTTEMPFILES>
    <NOFASTTEMPFILES>
    Use non-random temporary filenames.
    <FIELDORDER>Order to display message header fields.
    <FIELDSBEG>Beginning markup of message header.
    <FIELDSEND>Ending markup of message header.
    <FIELDSTORE>Message header fields to store in database.
    <FIELDSTYLES>Define HTML elements that wrap field text of message headers.
    <FILEPERMS>File permissions for archive files.
    <FIRSTPGLINK>Link markup for first page of main index.
    <FLDBEG>Markup before field text.
    <FLDEND>Markup after field text.
    <FOLLOWSYMLINKS>
    <NOFOLLOWSYMLINKS>
    Allow/follow symlinks.
    <FOLREFS>
    <NOFOLREFS>
    Print links links to explicit follow-ups and references.
    <FOLUPBEGIN>Beginning markup of follow-up links in message pages.
    <FOLUPEND>Ending markup of follow-up links in message pages.
    <FOLUPLITXT>Markup for a follow-up link.
    <FROMFIELDS>List of fields to extract author of a message.
    <GMTDATEFMT>Conversion specification for GMT dates.
    <GZIPEXE>Pathname to gzip executable.
    <GZIPFILES>
    <NOGZIPFILES>
    Gzip files.
    <GZIPLINKS>
    <NOGZIPLINKS>
    Assume files are gzipped when creating links.
    <HEADBODYSEP>Markup separating the message head from the body.
    <HTMLEXT>Extension to use for HTML files.
    <ICONS>Content-type to icon mapping.
    <ICONURLPREFIX>Prefix for icon URLs.
    <IDXFNAME>Filename for main (first) index page.
    <IDXLABEL>Label for main index.
    <IDXPGBEGIN>Beginning markup for main index pages.
    <IDXPGEND>Ending markup for main index pages.
    <IDXPGSSMARKUP>Markup at the beginning of all index pages.
    <IDXPREFIX>Filename prefix for multi-page main index.
    <IDXSIZE>Size of each index page.
    <INCLUDE>Include a resource file.
    <LABELBEG>Beginning markup of the label text of a message field.
    <LABELEND>End markup of the label text of a message field.
    <LABELSTYLES>Define HTML elements to wrap message header field labels.
    <LANG>Set locale.
    <LASTTPGLINK>Link markup for last page of main index.
    <LISTBEGIN>Markup to begin main index message listing.
    <LISTEND>Markup to end main index message listing.
    <LITEMPLATE>Markup for an entry in the main index message list.
    <LOCALDATEFMT>Conversion specification for printing local date.
    <LOCKMETHOD>How archive locks are done.
    <MAILTO>
    <NOMAILTO>
    Convert email addresses in message headers to hyperlinks.
    <MAILTOURL>URL template to use when MAILTO is set.
    <MAIN>
    <NOMAIN>
    Create main index.
    <MAXSIZE>Maximum number of messages in an archive.
    <MHPATTERN>Regex for matching message files in an MH folder (directory).
    <MIMEALTPREFS>Content-type preferences for multipart/alternative data.
    <MIMEARGS>Arguments to MIME filters.
    <MIMEDECODERS>Content-Transfer-Encoding decoding functions.
    <MIMEEXCS>Content-types to exclude.
    <MIMEFILTERS>Mapping of MIME filters to content-types.
    <MIMEINCS>Content-types to allow.
    <MODIFYBODYADDRESSES>
    <NOMODIFYBODYADDRESSES>
    Apply ADDRESSMODIFYCODE to text message bodies.
    <MODTIME>Set modification time on message files to message dates.
    <MONTHS>Month names.
    <MONTHSABR>Abbreviated month names.
    <MSGBODYEND>Markup after the message body.
    <MSGEXCFILTER>Perl expression(s) to selectively exclude messages.
    <MSGFOOT>Markup at the foot of each message page.
    <MSGGMTDATEFMT>GMT conversion specification for message dates.
    <MSGHEAD>Markup at the head of each message page.
    <MSGIDLINK>Hyperlink markup for embedded message-ids in message pages.
    <MSGLOCALDATEFMT>Local conversion specification for message dates.
    <MSGPGBEGIN>Starting markup for each message page.
    <MSGPGEND>Ending markup for each message page.
    <MSGPGS>
    <NOMSGPGS>
    Print message pages.
    <MSGPGSSMARKUP>Markup at the beginning of all message pages.
    <MSGPREFIX>Prefix for message page filenames.
    <MSGSEP>Regex for matching message separator in mailbox files.
    <MULTIPG>Create multi-page indexes.
    <NEWS>
    <NONEWS>
    Hyperlink newsgroups in message headers.
    <NEWSURL>URL template to use for newsgroup links.
    <NEXTBUTTON>Button markup for next message by main index.
    <NEXTBUTTONIA>Inactive button markup for next message by main index.
    <NEXTLINK>Link markup for next message by main index.
    <NEXTLINKIA>Inactive link markup for next message by main index.
    <NEXTPGLINK>Link markup for next page of main index.
    <NEXTPGLINKIA>Inactive link markup for next page of main index.
    <NOSUBJECTTXT>Raw subject text to use for messages without a subject.
    <NOTE>Markup for representing the annotation of a message.
    <NOTEDIR>Directory to store annotations.
    <NOTEIA>Markup when no annotation is available for a message.
    <OTHERINDEXES>List of alternate indexes to create for an archive.
    <PERLINC>Additional Perl include paths.
    <POSIXSTRFTIME>Use POSIX's strftime() for converted time format strings.
    <PREVBUTTON>Button markup for previous message by main index.
    <PREVBUTTONIA>Inactive button markup for previous message by main index.
    <PREVLINK>Link markup for previous message by main index.
    <PREVLINKIA>Inactive link markup for previous message by main index.
    <PREVPGLINK>Link markup for previous page of main index.
    <PREVPGLINKIA>Inactive link markup for previous page of main index.
    <PRINTXCOMMENTS>
    <NOPRINTXCOMMENTS>
    Print <!--X-...--> comments in generated pages.
    <REFSBEGIN>Beginning markup for explicit reference links in message pages.
    <REFSEND>Ending markup for explicit reference links in message pages.
    <REFSLITXT>Markup representing a reference entry in explicit reference links.
    <REVERSE>
    <NOREVERSE>
    Reverse the listing order in the main index.
    <SAVERESOURCES>
    <NOSAVERESOURCES>
    Save resource values in database.
    <SORT>
    <NOSORT>
    List messages by date in main index.
    <SPAMMODE>
    <NOSPAMMODE>
    Perform actions to deter email address harvesters.
    <SSMARKUP>Default markup at the beginning of all generated pages.
    <SUBJECTARTICLERXP>Regex for matching leading articles in message subjects.
    <SUBJECTBEGIN>Beginning markup for a subject group in the main index.
    <SUBJECTEND>Ending markup for a subject group in the main index.
    <SUBJECTHEADER>Main subject line markup above message header.
    <SUBJECTREPLYRXP>Regex for matching subject text denoting a reply message.
    <SUBJECTSTRIPCODE>Perl expressions to strip subject text while reading messages.
    <SUBJECTTHREADS>
    <NOSUBJECTTHREADS>
    Check subjects when computing message threads.
    <SUBSORT>
    <NOSUBSORT>
    List messages by subjext in main index.
    <TCONTBEGIN>Markup before the continuation of a broken thread.
    <TCONTEND>Markup after the continuation of a broken thread.
    <TENDBUTTON>Button markup for last message in thread.
    <TENDBUTTONIA>Inactive button markup for last message in thread.
    <TENDLINK>Link markup for last message in thread.
    <TENDLINKIA>Inactive link markup for last message in thread.
    <TEXTCLIPFUNC>Perl function to use for text clipping operations.
    <TEXTENCODE>Encode message text to given character encoding.
    <TFIRSTPGLINK>Link markup for first page of thread index.
    <TFOOT>Footer markup for thread index page.
    <THEAD>Header markup for thread index page.
    <THREAD>
    <NOTHREAD>
    Create thread index.
    <TIDXFNAME>Filename of first thread index page.
    <TIDXLABEL>Label string for the thread index.
    <TIDXPGBEGIN>Beginning markup for the thread index pages.
    <TIDXPGEND>Ending markup for the thread index pages.
    <TIDXPGSSMARKUP>Markup at the beginning of all thread index pages.
    <TIDXPREFIX>Filename prefix for thread index pages beyond the first page.
    <TIMEZONES>Hour offsets for timezones.
    <TINDENTBEGIN>Markup for opening a level when continuing a broken thread.
    <TINDENTEND>Markup for closing a level when continuing a broken thread.
    <TITLE>Title for main index.
    <TLASTTPGLINK>Link markup for last page of thread index.
    <TLEVELS>Maximum number of levels to indent in thread index.
    <TLIEND>Ending markup for a thread index message listing.
    <TLINONE>Markup for a missing message in thread index.
    <TLINONEEND>Ending markup for a missing message in thread index.
    <TLITXT>Markup for a thread index message listing.
    <TNEXTBUTTON>Button markup for next message by thread.
    <TNEXTBUTTONIA>Inactive button markup for next message by thread.
    <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.
    <TNEXTLINK>Link markup for next message by thread.
    <TNEXTLINKIA>Inactive link markup for next message by thread.
    <TNEXTPGLINK>Link markup for next page in thread index.
    <TNEXTPGLINKIA>Inactive link markup for next page in thread index.
    <TNEXTTOPBUTTON>Button markup for first message in the next thread.
    <TNEXTTOPBUTTONIA>Inactive button markup for first message in the next thread.
    <TNEXTTOPLINK>Link markup for first message in the next thread.
    <TNEXTTOPLINKIA>Inactive link markup for first message in the next thread.
    <TOPLINKS>Markup for top navigational links of a message page.
    <TPREVBUTTON>Button markup for previous message by thread.
    <TPREVBUTTONIA>Inactive button markup for previous message by 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.
    <TPREVLINK>Link markup for previous message by thread.
    <TPREVLINKIA>Inactive link markup for previous message by thread.
    <TPREVPGLINK>Link markup for previous page in thread index.
    <TPREVPGLINKIA>Inactive link markup for previous page in thread index.
    <TPREVTOPBUTTON>Button markup for first message in the previous thread.
    <TPREVTOPBUTTONIA>Inactive button markup for first message in the previous thread.
    <TPREVTOPLINK>Link markup for first message in the previous thread.
    <TPREVTOPLINKIA>Inactive link markup for first message in the previous thread.
    <TREVERSE>
    <NOTREVERSE>
    List thread in reverse order.
    <TSINGLETXT>Markup for a thread listing with no follow-ups.
    <TSLICE>Size of thread listing slice for message pages.
    <TSLICEBEG>Markup for the start of a thread slice.
    <TSLICECONTBEGIN>Thread slice markup before the continuation of a broken thread.
    <TSLICECONTEND>Thread slice markup after the continuation of a broken thread.
    <TSLICEEND>Markup for the end of a thread slice.
    <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.
    <TSLICELEVELS>Maximum number of levels to indent in thread slices.
    <TSLICELIEND>Ending markup for a thread slice message listing.
    <TSLICELIENDCUR>Ending markup for a thread slice message listing if current message.
    <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 if current message.
    <TSLICETOPEND>Thread slice markup for the end of a thread.
    <TSLICETOPENDCUR>Thread slice markup for the end of a thread if current message.
    <TSORT>
    <NOTSORT>
    List threads by date.
    <TSUBJECTBEG>Markup before a subject based thread listing.
    <TSUBJECTEND>Markup after a subject based thread listing.
    <TSUBLISTBEG>Markup for starting a sub-thread.
    <TSUBLISTEND>Markup for ending a sub-thread.
    <TSUBSORT>
    <NOTSUBSORT>
    List threads by subject.
    <TTITLE>Title of thread index.
    <TTOPBEGIN>Markup for the root/start of a thread.
    <TTOPBUTTON>Button markup for first message in thread.
    <TTOPBUTTONIA>Inactive button markup for first message in thread.
    <TTOPEND>Markup for the end of a thread.
    <TTOPLINK>Link markup for first message in thread.
    <TTOPLINKIA>Inactive link markup for first message in thread.
    <UMASK>Umask value for the MHonArc process.
    <USELOCALTIME>
    <NOUSELOCALTIME>
    Use local time to determine day groups in main index listing.
    <USINGLASTPG>
    <NOUSINGLASTPG>
    $LASTPG$ is used in resource values.
    <WEEKDAYS>Weekday names.
    <WEEKDAYSABR>Abbreviated weekday names.

    Command-Line Options

    OptionDescription
    -addAdd messages to the archive.
    -addressmodifycodePerl expressions modifying displayed addresses in headers.
    -afsSkip archive directory permission check.
    -annotateAdd/set annotation for message(s).
    -archive
    -noarchive
    Create archive.
    -attachmentdirFilesytem location of attachments.
    -attachmenturlBase URL to attachments.
    -authsort
    -noauthsort
    Sort main index by author.
    -checknoarchive
    -nochecknoarchive
    Honor "no archive" flag in messages.
    -conlen
    -noconlen
    Use Content-Length value.
    -datefieldsList of fields to extract date of message.
    -dbfileName of archive database file.
    -dbfilepermsFile permissions for DBFILE.
    -decodeheads
    -nodecodeheads
    Store "decode-only" characters sets in raw form.
    -definevarDefine a custom resource variable.
    -doc
    -nodoc
    Add link to documentation.
    -docurlURL to documentation
    -editidxModify archive with new resource settings.
    -expireageLength of time to keep a message in an archive.
    -expiredateExpiration of date of message.
    -fasttempfiles
    -nofasttempfiles
    Use non-random temporary filenames.
    -filepermsFile permissions for archive files.
    -followsymlinks
    -nofollowsymlinks
    Allow/follow symlinks.
    -folrefs
    -nofolrefs
    Print links links to explicit follow-ups and references.
    -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.
    -gzipfiles
    -nogzipfiles
    Gzip files.
    -gziplinks
    -nogziplinks
    Assume files are gzipped when creating links.
    -htmlextExtension to use for HTML files.
    -iconurlprefixPrefix for icon URLs.
    -idxfnameFilename for main (first) index page.
    -idxprefixFilename prefix for multi-page main index.
    -idxsizeSize of each index page.
    -keeponrmmDo not physically delete message files when message removed from archive.
    -langSet locale.
    -localdatefmtConversion specification for printing local date.
    -lock
    -nolock
    Perform 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).
    -modifybodyaddresses
    -nomodifybodyaddresses
    Apply ADDRESSMODIFYCODE to text message bodies.
    -modtimeSet modification time on message files to message dates.
    -monthsMonth names.
    -monthsabrAbbreviated month names.
    -msgexcfilterPerl expression(s) to selectively exclude messages.
    -msggmtdatefmtGMT conversion specification for message dates.
    -msglocaldatefmtLocal conversion specification for message dates.
    -msgpgs
    -nomsgpgs
    Print 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.
    -nosubjecttxtRaw subject text to use for messages without a subject.
    -notedirDirectory to store annotations.
    -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.
    -printxcomments
    -noprintxcomments
    Print <!--X-...--> comments in generated pages.
    -quietDo not output status.
    -rcfileResource file to read before processing input.
    -reconvert
    -noreconvert
    Reconvert existing messages.
    -reverse
    -noreverse
    Reverse the listing order in the main index.
    -rmmRemove specified messages from an archive.
    -saveresources
    -nosaveresources
    Save resource values in database.
    -scanList archive messages to standard output.
    -singleProcess a single message.
    -sortList messages by date in main index.
    -spammode
    -nospammode
    Perform actions to deter email address harvesters.
    -stderrFile for standard error messages.
    -stdinFile to treat as standard input.
    -stdoutFile for standard output messages.
    -subjectarticlerxpRegex for matching leading articles in message subjects.
    -subjectreplyrxpRegex for matching subject text denoting a reply message.
    -subjectstripcodePerl expressions to strip subject text while reading messages.
    -subjectthreads
    -nosubjectthreads
    Check subjects when computing message threads.
    -subsortList messages by subjext in main index.
    -thread
    -nothread
    Create thread index.
    -tidxfnameFilename of first thread index page.
    -tidxprefixFilename prefix for thread index pages beyond the first page.
    -titleTitle for main index.
    -tlevelsMaximum number of levels to indent in thread index.
    -treverseList thread in reverse order.
    -tsliceSize of thread listing slice for message pages.
    -tslicelevelsMaximum number of levels to indent in thread slices.
    -tsort
    -notsort
    List threads by date.
    -tsubsort
    -notsubsort
    List threads by subject.
    -ttitleTitle of thread index.
    -umaskUmask value for the MHonArc process.
    -varregexPerl regular expression matching a resource variable.
    -weekdaysWeekday names.
    -weekdaysabrAbbreviated weekday names.

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

    $Date: 2010/12/31 20:56:38 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2.6.18/doc/mhonarc.html0000644004705000001440000001627611512360071015211 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-2.6.18/doc/contacts.html0000644004705000001440000003352111512360071015370 0ustar ehoodusers MHonArc Reference -- Contacts
    [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-2.6.18/doc/rcvars.html0000644004705000001440000013277211512360071015062 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-2.6.18/doc/app-mimeconf.html0000644004705000001440000004237711512360071016136 0ustar ehoodusers MHonArc Reference -- Appendix: MIME Conformance
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Appendix: MIME Conformance

    This appendix describes how well MHonArc implements MIME-conformance as defined in RFC 2049: (MIME) Part Five: Conformance Criteria and Examples. Also, additional MIME-related features are summarized.


    MIME-Conformance

    MIME-conformance is defined in section 2 of RFC 2049: (MIME) Part Five: Conformance Criteria and Examples. Following is the text extracted from section 2 of RFC 2049 with annotations — denoted by MHonArc — added on how well MHonArc conforms to each criteria listed. It should be noted that the criteria listed in RFC 2049 is geared towards interactive MUAs; therefore, some criteria may not be applicable to MHonArc.

    NOTE:

    All notes about conformance is based upon the default MIME-related resource settings: MIMEFILTERS, MIMEARGS , CHARSETCONVERTERS, CHARSETALIASES.

    1. Always generate a "MIME-Version: 1.0" header field in any message it creates.

      MHonArc

      Not applicable.

    2. Recognize the Content-Transfer-Encoding header field and decode all received data encoded by either quoted-printable or base64 implementations. The identity transformations 7bit, 8bit, and binary must also be recognized.

      MHonArc

      Base64, quoted-printable, 7bit, 8bit, and binary are supported. Also, uuencode is supported: uuencode, x-uuencode, and x-uue.

      Any non-7bit data that is sent without encoding must be properly labelled with a content-transfer-encoding of 8bit or binary, as appropriate. If the underlying transport does not support 8bit or binary (as SMTP [RFC-821] does not), the sender is required to both encode and label data using an appropriate Content-Transfer-Encoding such as quoted-printable or base64.

      MHonArc

      Not applicable.

    3. Must treat any unrecognized Content-Transfer-Encoding as if it had a Content-Type of "application/octet-stream", regardless of whether or not the actual Content-Type is recognized.

      MHonArc

      Currently, MHonArc will still call the registered content-type filter for the specified Content-Type, but the $isdecoded will be set to a false value. With the default set of filters, the $isdecoded flag is ignored. Therefore, behavior could be considered undefined when MHonArc process a message with an unrecognized Content-Transfer-Encoding.

    4. Recognize and interpret the Content-Type header field, and avoid showing users raw data with a Content-Type field other than text. Implementations must be able to send at least text/plain messages, with the character set specified with the charset parameter if it is not US-ASCII.

      MHonArc

      MHonArc conforms to the first sentence of the paragraph The second sentence is not applicable.

    5. Ignore any content type parameters whose names they do not recognize.

      MHonArc

      Yes.

    6. Explicitly handle the following media type values, to at least the following extents:

      Text:

      • Recognize and display "text" mail with the character set "US-ASCII."

        MHonArc

        Yes.

      • Recognize other character sets at least to the extent of being able to inform the user about what character set the message uses.

        MHonArc

        Not really applicable. Warnings are generated during processing if a character set is encountered that is not recognized.

      • Recognize the "ISO-8859-*" character sets to the extent of being able to display those characters that are common to ISO-8859-* and US-ASCII, namely all characters represented by octet values 1-127.

        MHonArc

        Yes.

      • For unrecognized subtypes in a known character set, show or offer to show the user the "raw" version of the data after conversion of the content from canonical form to local form.

        MHonArc

        MHonArc will treat the data as text/plain and convert.

      • Treat material in an unknown character set as if it were "application/octet-stream".

        MHonArc

        No. A warning is generated for unknown character sets. The data will be shown in raw form, with HTML special characters converted to entity references. This behavior is the default because some MUAs are known to give incorrect charset parameters.

      Image, audio, and video:

      • At a minumum provide facilities to treat any unrecognized subtypes as if they were "application/octet-stream".

        MHonArc

        All image, audio, and video types are saved to an external file with a link to the file created in the HTML. For applicable image types, they are inlined unless the image has an attachment content-disposition.

      Application:

      • Offer the ability to remove either of the quoted-printable or base64 encodings defined in this document if they were used and put the resulting information in a user file.

        MHonArc

        Most application types are decoded and saved to an external file with a link to the file created in the HTML. Some application types can be converted directly to HTML.

      Multipart:

      • Recognize the mixed subtype. Display all relevant information on the message level and the body part header level and then display or offer to display each of the body parts individually.

        MHonArc

        Yes. Each part is automatically processed according to its media-type.

      • Recognize the "alternative" subtype, and avoid showing the user redundant parts of multipart/alternative mail.

        MHonArc

        Yes. MHonArc also provides the MIMEALTPREFS resource to allow users to control media-type preferences for multipart/alternative mail.

      • Recognize the "multipart/digest" subtype, specifically using "message/rfc822" rather than "text/plain" as the default media type for body parts inside "multipart/digest" entities.

        MHonArc

        Yes.

      • Treat any unrecognized subtypes as if they were "mixed".

        MHonArc

        Yes.

      Message:

      • Recognize and display at least the RFC822 message encapsulation (message/rfc822) in such a way as to preserve any recursive structure, that is, displaying or offering to display the encapsulated data in accordance with its media type.

        MHonArc

        Yes.

      • Treat any unrecognized subtypes as if they were "application/octet-stream".

        MHonArc

        Yes.

    7. Upon encountering any unrecognized Content-Type field, an implementation must treat it as if it had a media type of "application/octet-stream" with no parameter sub-arguments. How such data are handled is up to an implementation, but likely options for handling such unrecognized data include offering the user to write it into a file (decoded from its mail transport format) or offering the user to name a program to which the decoded data should be passed as input.

      MHonArc

      Yes. The data is passed to the m2h_external::filter to be saved to an external file.

    8. Conformant user agents are required, if they provide non-standard support for non-MIME messages employing character sets other than US-ASCII, to do so on received messages only. Conforming user agents must not send non-MIME messages containing anything other than US-ASCII text.

      In particular, the use of non-US-ASCII text in mail messages without a MIME-Version field is strongly discouraged as it impedes interoperability when sending messages between regions with different localization conventions. Conforming user agents MUST include proper MIME labelling when sending anything other than plain text in the US-ASCII character set.

      MHonArc

      The DEFCHARSET resource can be used to specify what character set to use if no character set is specified. By default, US-ASCII is assumed.

      In addition, non-MIME user agents should be upgraded if at all possible to include appropriate MIME header information in the messages they send even if nothing else in MIME is supported. This upgrade will have little, if any, effect on non-MIME recipients and will aid MIME in correctly displaying such messages. It also provides a smooth transition path to eventual adoption of other MIME capabilities.

      MHonArc

      Not applicable.

    9. Conforming user agents must ensure that any string of non-white-space printable US-ASCII characters within a "*text" or "*ctext" that begins with "=?" and ends with "?=" be a valid encoded-word. ("begins" means: At the start of the field-body or immediately following linear-white-space; "ends" means: At the end of the field-body or immediately preceding linear-white-space.) In addition, any "word" within a "phrase" that begins with "=?" and ends with "?=" must be a valid encoded-word.

      MHonArc

      Yes.

    10. Conforming user agents must be able to distinguish encoded-words from "text", "ctext", or "word"s, according to the rules in section 4, anytime they appear in appropriate places in message headers. It must support both the "B" and "Q" encodings for any character set which it supports. The program must be able to display the unencoded text if the character set is "US-ASCII". For the ISO-8859-* character sets, the mail reading program must at least be able to display the characters which are also in the US-ASCII set.

      MHonArc

      MHonArc supports non-ASCII encoding of text in message headers, including the "B" and "Q" encodings. See CHARSETCONVERTERS for a list of charsets supported.


    Other Stuff Supported

    The following lists other MIME-related features supported by MHonArc:

    • Support for uuencoding as a Content-Transfer-Encoding.

    • Support for many media-types (including the ability to extend that support). For a complete list, along with more information, see the MIMEFILTERS resource. Note, many media-types cannot be directly converted into HTML. For these types, they are saved to a separate file with a link to the file inserted in the converted HTML message data.

    • The ability to explicitly control media-type preferences of multipart/alternative data via the MIMEALTPREFS resource

    • Support for multipart/related by allowing filters to access other message parts via content-ids.

    • Support for cid: URLs in text/html data. The provides support for things like MHTML: MIME E-mail Encapsulation of Aggregate Documents, RFC 2110.

    • Support for RFC 2369, The Use of URLs as Meta-Syntax for Core Mail List Commands and their Transport through Message Header Fields. The URLs in list header fields will be converted into hypertext links.


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

    $Date: 2003/10/06 22:04:14 $
    MHonArc
    Copyright © 1999, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2.6.18/doc/resources/0000755004705000001440000000000011512360072014673 5ustar ehoodusersMHonArc-2.6.18/doc/resources/msgpgssmarkup.html0000644004705000001440000003037311512360070020470 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-2.6.18/doc/resources/tnexttoplink.html0000644004705000001440000003072311512360071020330 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-2.6.18/doc/resources/conlen.html0000644004705000001440000000635211512360070017043 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-2.6.18/doc/resources/tfoot.html0000644004705000001440000001714411512360070016721 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-2.6.18/doc/resources/msggmtdatefmt.html0000644004705000001440000001434311512360070020427 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-2.6.18/doc/resources/tnextinlinkia.html0000644004705000001440000003016511512360070020445 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-2.6.18/doc/resources/msglocaldatefmt.html0000644004705000001440000001446711512360070020741 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-2.6.18/doc/resources/rcfile.html0000644004705000001440000003724511512360070017036 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-2.6.18/doc/resources/force.html0000644004705000001440000001005711512360070016660 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-2.6.18/doc/resources/mimeincs.html0000644004705000001440000001442311512360070017367 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-2.6.18/doc/resources/idxpgssmarkup.html0000644004705000001440000000644011512360070020464 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-2.6.18/doc/resources/idxsize.html0000644004705000001440000000616711512360070017250 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-2.6.18/doc/resources/include.html0000644004705000001440000000710211512360070017202 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-2.6.18/doc/resources/tsliceend.html0000644004705000001440000003252211512360071017536 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-2.6.18/doc/resources/litemplate.html0000644004705000001440000003040311512360070017717 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-2.6.18/doc/resources/tidxpgbegin.html0000644004705000001440000002006011512360070020061 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-2.6.18/doc/resources/ttopbuttonia.html0000644004705000001440000003041011512360071020312 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-2.6.18/doc/resources/datefields.html0000644004705000001440000001377011512360070017673 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-2.6.18/doc/resources/uselocaltime.html0000644004705000001440000000674111512360071020256 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-2.6.18/doc/resources/msgpgbegin.html0000644004705000001440000003076511512360070017714 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-2.6.18/doc/resources/refslitxt.html0000644004705000001440000003026711512360070017613 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-2.6.18/doc/resources/attachmenturl.html0000644004705000001440000000641411512360070020437 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-2.6.18/doc/resources/newsurl.html0000644004705000001440000000753711512360070017272 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-2.6.18/doc/resources/idxfname.html0000644004705000001440000000620011512360070017350 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-2.6.18/doc/resources/tendbuttonia.html0000644004705000001440000003041111512360070020256 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-2.6.18/doc/resources/tendlink.html0000644004705000001440000003127711512360070017401 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-2.6.18/doc/resources/tsubjectbeg.html0000644004705000001440000000710011512360071020057 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-2.6.18/doc/resources/tnextbuttonia.html0000644004705000001440000003114011512360070020466 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-2.6.18/doc/resources/fasttempfiles.html0000644004705000001440000000754611512360070020441 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-2.6.18/doc/resources/tnextinbutton.html0000644004705000001440000003125311512360070020510 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-2.6.18/doc/resources/subjectreplyrxp.html0000644004705000001440000000757611512360070021043 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-2.6.18/doc/resources/tcontbegin.html0000644004705000001440000003105611512360070017720 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-2.6.18/doc/resources/tprevpglink.html0000644004705000001440000001653211512360071020134 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-2.6.18/doc/resources/prevpglink.html0000644004705000001440000001751011512360070017744 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-2.6.18/doc/resources/tslicesubjectbeg.html0000644004705000001440000003235611512360071021112 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-2.6.18/doc/resources/tslicecontend.html0000644004705000001440000003226111512360071020422 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-2.6.18/doc/resources/weekdaysabr.html0000644004705000001440000000717111512360071020067 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-2.6.18/doc/resources/ttoplinkia.html0000644004705000001440000003031011512360071017733 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-2.6.18/doc/resources/otherindexes.html0000644004705000001440000001572711512360070020274 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-2.6.18/doc/resources/tindentend.html0000644004705000001440000000624011512360070017715 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-2.6.18/doc/resources/tnexttopbutton.html0000644004705000001440000003077111512360071020711 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-2.6.18/doc/resources/maxsize.html0000644004705000001440000000654011512360070017244 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-2.6.18/doc/resources/usinglastpg.html0000644004705000001440000000734611512360071020132 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-2.6.18/doc/resources/tendlinkia.html0000644004705000001440000003034211512360070017703 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-2.6.18/doc/resources/dbfile.html0000644004705000001440000000710511512360070017007 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-2.6.18/doc/resources/idxpgend.html0000644004705000001440000001672511512360070017374 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-2.6.18/doc/resources/iconurlprefix.html0000644004705000001440000001110011512360070020441 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-2.6.18/doc/resources/followsymlinks.html0000644004705000001440000000663511512360070020665 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-2.6.18/doc/resources/charsetaliases.html0000644004705000001440000002331111512360070020552 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-2.6.18/doc/resources/fieldsbeg.html0000644004705000001440000000771111512360070017511 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-2.6.18/doc/resources/tprevinbutton.html0000644004705000001440000003126111512360071020506 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-2.6.18/doc/resources/afs.html0000644004705000001440000000620311512360070016331 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-2.6.18/doc/resources/modtime.html0000644004705000001440000000635711512360070017230 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-2.6.18/doc/resources/noteia.html0000644004705000001440000003012011512360070017032 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-2.6.18/doc/resources/keeponrmm.html0000644004705000001440000001005111512360070017551 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-2.6.18/doc/resources/tsublistbeg.html0000644004705000001440000001575011512360071020117 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-2.6.18/doc/resources/fieldstyles.html0000644004705000001440000001054311512360070020111 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-2.6.18/doc/resources/tslicetopbeg.html0000644004705000001440000003230211512360071020244 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-2.6.18/doc/resources/dayend.html0000644004705000001440000000571311512360070017031 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-2.6.18/doc/resources/tprevtoplinkia.html0000644004705000001440000003016711512360071020642 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-2.6.18/doc/resources/textclipfunc.html0000644004705000001440000001645511512360070020302 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-2.6.18/doc/resources/folrefs.html0000644004705000001440000000647511512360070017233 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-2.6.18/doc/resources/listbegin.html0000644004705000001440000002170411512360070017543 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-2.6.18/doc/resources/news.html0000644004705000001440000000606611512360070016543 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-2.6.18/doc/resources/daybegin.html0000644004705000001440000003102311512360070017340 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-2.6.18/doc/resources/printxcomments.html0000644004705000001440000001072511512360070020656 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-2.6.18/doc/resources/ttopbutton.html0000644004705000001440000003112011512360071017777 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-2.6.18/doc/resources/labelbeg.html0000644004705000001440000000644311512360070017323 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-2.6.18/doc/resources/msgsep.html0000644004705000001440000000776211512360070017071 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-2.6.18/doc/resources/addressmodifycode.html0000644004705000001440000001140111512360070021244 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-2.6.18/doc/resources/fldend.html0000644004705000001440000000644411512360070017023 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-2.6.18/doc/resources/tprevtopbutton.html0000644004705000001440000003100711512360071020700 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-2.6.18/doc/resources/tprevbuttonia.html0000644004705000001440000003115111512360071020467 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-2.6.18/doc/resources/stdout.html0000644004705000001440000000664711512360070017116 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-2.6.18/doc/resources/subjectheader.html0000644004705000001440000003004711512360070020373 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-2.6.18/doc/resources/defcharset.html0000644004705000001440000000654711512360070017703 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-2.6.18/doc/resources/tslicebeg.html0000644004705000001440000003246611512360071017534 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-2.6.18/doc/resources/msgpgend.html0000644004705000001440000003006711512360070017371 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-2.6.18/doc/resources/attachmentdir.html0000644004705000001440000001360011512360070020406 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-2.6.18/doc/resources/main.html0000644004705000001440000000572511512360070016514 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-2.6.18/doc/resources/prevlinkia.html0000644004705000001440000003051511512360070017727 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-2.6.18/doc/resources/spammode.html0000644004705000001440000001201511512360070017363 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-2.6.18/doc/resources/authorend.html0000644004705000001440000000601411512360070017551 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-2.6.18/doc/resources/thread.html0000644004705000001440000000574311512360070017037 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-2.6.18/doc/resources/fileperms.html0000644004705000001440000001177111512360070017554 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-2.6.18/doc/resources/lock.html0000644004705000001440000000706611512360070016520 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-2.6.18/doc/resources/fieldsend.html0000644004705000001440000000652411512360070017523 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-2.6.18/doc/resources/posixstrftime.html0000644004705000001440000001015311512360070020477 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-2.6.18/doc/resources/folupbegin.html0000644004705000001440000000764511512360070017725 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-2.6.18/doc/resources/tsliceindentbeg.html0000644004705000001440000003232311512360071020726 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-2.6.18/doc/resources/nextlinkia.html0000644004705000001440000003051011512360070017724 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-2.6.18/doc/resources/refsend.html0000644004705000001440000000700211512360070017204 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-2.6.18/doc/resources/mimeargs.html0000644004705000001440000001000511512360070017357 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-2.6.18/doc/resources/tindentbegin.html0000644004705000001440000001003511512360070020230 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-2.6.18/doc/resources/authorbegin.html0000644004705000001440000003065311512360070020075 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-2.6.18/doc/resources/stderr.html0000644004705000001440000000644511512360070017073 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-2.6.18/doc/resources/tslicesubjectend.html0000644004705000001440000003234511512360071021121 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-2.6.18/doc/resources/headbodysep.html0000644004705000001440000002761611512360070020062 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-2.6.18/doc/resources/tnexttopbuttonia.html0000644004705000001440000003023711512360071021220 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-2.6.18/doc/resources/mimedecoders.html0000644004705000001440000001143211512360070020220 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-2.6.18/doc/resources/prevbutton.html0000644004705000001440000003147311512360070017777 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-2.6.18/doc/resources/mimefilters.html0000644004705000001440000022167011512360070020107 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-2.6.18/doc/resources/labelstyles.html0000644004705000001440000001042611512360070020105 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-2.6.18/doc/resources/tidxlabel.html0000644004705000001440000000601011512360070017524 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-2.6.18/doc/resources/umask.html0000644004705000001440000000634011512360071016703 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-2.6.18/doc/resources/textencode.html0000644004705000001440000004520211512360070017724 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-2.6.18/doc/resources/defrcfile.html0000644004705000001440000000673711512360070017517 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-2.6.18/doc/resources/charsetconverters.html0000644004705000001440000005676611512360070021347 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-2.6.18/doc/resources/lockmethod.html0000644004705000001440000002005711512360070017714 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-2.6.18/doc/resources/tslicelitxt.html0000644004705000001440000003225111512360071020133 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-2.6.18/doc/resources/tsliceindentend.html0000644004705000001440000003233711512360071020744 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-2.6.18/doc/resources/authsort.html0000644004705000001440000000600211512360070017426 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-2.6.18/doc/resources/mhpattern.html0000644004705000001440000000672011512360070017566 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-2.6.18/doc/resources/toplinks.html0000644004705000001440000003271611512360071017434 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-2.6.18/doc/resources/reverse.html0000644004705000001440000000703311512360070017235 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-2.6.18/doc/resources/scan.html0000644004705000001440000001454211512360070016511 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  Søren 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-2.6.18/doc/resources/tprevinlink.html0000644004705000001440000003133411512360071020131 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-2.6.18/doc/resources/nextbuttonia.html0000644004705000001440000003120111512360070020300 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-2.6.18/doc/resources/msgexcfilter.html0000644004705000001440000001064711512360070020263 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-2.6.18/doc/resources/nosubjecttxt.html0000644004705000001440000000574511512360070020326 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-2.6.18/doc/resources/gzipfiles.html0000644004705000001440000000716711512360070017566 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-2.6.18/doc/resources/botlinks.html0000644004705000001440000003211611512360070017407 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-2.6.18/doc/resources/tslicesublistend.html0000644004705000001440000003231711512360071021146 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-2.6.18/doc/resources/tprevtoplink.html0000644004705000001440000003101711512360071020323 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-2.6.18/doc/resources/lang.html0000644004705000001440000001266311512360070016510 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
    

    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.

    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-2.6.18/doc/resources/title.html0000644004705000001440000000660411512360070016706 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-2.6.18/doc/resources/nextbutton.html0000644004705000001440000003143011512360070017772 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-2.6.18/doc/resources/tnextinbuttonia.html0000644004705000001440000003025411512360070021022 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-2.6.18/doc/resources/modifybodyaddresses.html0000644004705000001440000000635211512360070021630 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-2.6.18/doc/resources/tprevlinkia.html0000644004705000001440000003042411512360071020113 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-2.6.18/doc/resources/archive.html0000644004705000001440000000712111512360070017201 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-2.6.18/doc/resources/tlevels.html0000644004705000001440000000630011512360070017234 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-2.6.18/doc/resources/msghead.html0000644004705000001440000003003211512360070017165 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-2.6.18/doc/resources/tnextpglink.html0000644004705000001440000001652211512360071020135 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-2.6.18/doc/resources/localdatefmt.html0000644004705000001440000001470211512360070020222 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-2.6.18/doc/resources/annotate.html0000644004705000001440000001444411512360070017377 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-2.6.18/doc/resources/labelend.html0000644004705000001440000000643411512360070017334 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-2.6.18/doc/resources/tliend.html0000644004705000001440000000627711512360070017052 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-2.6.18/doc/resources/notedir.html0000644004705000001440000003212211512360070017223 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-2.6.18/doc/resources/tslice.html0000644004705000001440000001504411512360071017047 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-2.6.18/doc/resources/subjectthreads.html0000644004705000001440000000715711512360070020603 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-2.6.18/doc/resources/folupend.html0000644004705000001440000000671611512360070017405 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-2.6.18/doc/resources/locktries.html0000644004705000001440000000617411512360070017566 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-2.6.18/doc/resources/mailto.html0000644004705000001440000000607311512360070017052 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-2.6.18/doc/resources/subjectstripcode.html0000644004705000001440000000754711512360070021150 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-2.6.18/doc/resources/tnextinlink.html0000644004705000001440000003130011512360070020123 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-2.6.18/doc/resources/subsort.html0000644004705000001440000000600211512360070017256 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-2.6.18/doc/resources/reconvert.html0000644004705000001440000001050611512360070017570 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-2.6.18/doc/resources/single.html0000644004705000001440000000632411512360070017045 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-2.6.18/doc/resources/notetext.html0000644004705000001440000003114411512360070017434 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-2.6.18/doc/resources/msgidlink.html0000644004705000001440000003065511512360070017551 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-2.6.18/doc/resources/tprevinbuttonia.html0000644004705000001440000003026611512360071021024 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-2.6.18/doc/resources/htmlext.html0000644004705000001440000000717111512360070017252 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-2.6.18/doc/resources/tidxprefix.html0000644004705000001440000000714311512360070017752 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-2.6.18/doc/resources/tslicesingletxt.html0000644004705000001440000003234011512360071021007 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-2.6.18/doc/resources/subjectend.html0000644004705000001440000000605111512360070017707 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-2.6.18/doc/resources/saveresources.html0000644004705000001440000000674511512360070020464 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-2.6.18/doc/resources/tlitxt.html0000644004705000001440000003036611512360070017117 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-2.6.18/doc/resources/tidxpgssmarkup.html0000644004705000001440000000643311512360070020652 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-2.6.18/doc/resources/doc.html0000644004705000001440000000571311512360070016332 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-2.6.18/doc/resources/tcontend.html0000644004705000001440000000574411512360070017407 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-2.6.18/doc/resources/lockdelay.html0000644004705000001440000000623611512360070017535 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-2.6.18/doc/resources/idxlabel.html0000644004705000001440000000650711512360070017353 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-2.6.18/doc/resources/decodeheads.html0000644004705000001440000001003711512360070020010 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-2.6.18/doc/resources/excs.html0000644004705000001440000001066711512360070016533 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-2.6.18/doc/resources/lockfile.html0000644004705000001440000000700511512360070017351 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-2.6.18/doc/resources/idxpgbegin.html0000644004705000001440000002113111512360070017675 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-2.6.18/doc/resources/tslicelitxtcur.html0000644004705000001440000003240311512360071020644 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-2.6.18/doc/resources/treverse.html0000644004705000001440000000643211512360071017424 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-2.6.18/doc/resources/prevpglinkia.html0000644004705000001440000001744311512360070020263 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-2.6.18/doc/resources/tsliceliend.html0000644004705000001440000003224511512360071020065 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-2.6.18/doc/resources/weekdays.html0000644004705000001440000000731111512360071017376 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-2.6.18/doc/resources/tlinoneend.html0000644004705000001440000000636111512360070017724 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-2.6.18/doc/resources/idxprefix.html0000644004705000001440000000705111512360070017564 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-2.6.18/doc/resources/note.html0000644004705000001440000003140011512360070016522 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-2.6.18/doc/resources/stdin.html0000644004705000001440000000664011512360070016706 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-2.6.18/doc/resources/fieldorder.html0000644004705000001440000001036611512360070017704 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-2.6.18/doc/resources/fromfields.html0000644004705000001440000000764511512360070017725 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-2.6.18/doc/resources/tslicesingletxtcur.html0000644004705000001440000003244111512360071021523 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-2.6.18/doc/resources/tnextbutton.html0000644004705000001440000003126511512360070020164 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-2.6.18/doc/resources/ssmarkup.html0000644004705000001440000000761611512360070017436 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-2.6.18/doc/resources/multipg.html0000644004705000001440000000663611512360070017253 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-2.6.18/doc/resources/tslicesublistbeg.html0000644004705000001440000003234111512360071021132 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-2.6.18/doc/resources/nextpglinkia.html0000644004705000001440000001742311512360070020263 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-2.6.18/doc/resources/tsingletxt.html0000644004705000001440000003010411512360071017763 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-2.6.18/doc/resources/rmm.html0000644004705000001440000001071611512360070016357 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-2.6.18/doc/resources/refsbegin.html0000644004705000001440000000775311512360070017537 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-2.6.18/doc/resources/tslicetopendcur.html0000644004705000001440000003221311512360071020770 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-2.6.18/doc/resources/sort.html0000644004705000001440000000602711512360070016553 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-2.6.18/doc/resources/tidxfname.html0000644004705000001440000000616411512360070017545 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-2.6.18/doc/resources/ttopbegin.html0000644004705000001440000003500511512360071017556 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-2.6.18/doc/resources/quiet.html0000644004705000001440000000555111512360070016714 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-2.6.18/doc/resources/months.html0000644004705000001440000000731411512360070017074 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-2.6.18/doc/resources/subjectarticlerxp.html0000644004705000001440000000711711512360070021322 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-2.6.18/doc/resources/tprevlink.html0000644004705000001440000003202211512360071017575 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-2.6.18/doc/resources/msgbodyend.html0000644004705000001440000001622311512360070017716 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-2.6.18/doc/resources/mimealtprefs.html0000644004705000001440000001323111512360070020247 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-2.6.18/doc/resources/outdir.html0000644004705000001440000000575411512360070017100 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-2.6.18/doc/resources/tsliceliendcur.html0000644004705000001440000003227511512360071020602 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-2.6.18/doc/resources/tprevpglinkia.html0000644004705000001440000001646011512360071020446 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-2.6.18/doc/resources/tnextlink.html0000644004705000001440000003200211512360070017574 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-2.6.18/doc/resources/tprevbutton.html0000644004705000001440000003130511512360071020156 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-2.6.18/doc/resources/definederived.html0000644004705000001440000003457511512360070020372 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-2.6.18/doc/resources/fldbeg.html0000644004705000001440000000643311512360070017010 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-2.6.18/doc/resources/monthsabr.html0000644004705000001440000000731611512360070017563 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-2.6.18/doc/resources/msgfoot.html0000644004705000001440000002772711512360070017254 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-2.6.18/doc/resources/prevbuttonia.html0000644004705000001440000003122111512360070020300 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-2.6.18/doc/resources/nextpglink.html0000644004705000001440000001750011512360070017745 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-2.6.18/doc/resources/tsublistend.html0000644004705000001440000000605711512360071020130 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-2.6.18/doc/resources/lastpglink.html0000644004705000001440000001712311512360070017733 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-2.6.18/doc/resources/subjectbegin.html0000644004705000001440000003070111512360070020224 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-2.6.18/doc/resources/docurl.html0000644004705000001440000000604111512360070017050 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-2.6.18/doc/resources/ttoplink.html0000644004705000001440000003115611512360071017432 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-2.6.18/doc/resources/tslicelevels.html0000644004705000001440000000653111512360071020263 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-2.6.18/doc/resources/tslicetopbegcur.html0000644004705000001440000003515511512360071020767 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-2.6.18/doc/resources/tsubsort.html0000644004705000001440000000604511512360071017452 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-2.6.18/doc/resources/tsubjectend.html0000644004705000001440000000613611512360071020100 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-2.6.18/doc/resources/prevlink.html0000644004705000001440000003226411512360070017420 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-2.6.18/doc/resources/firstpglink.html0000644004705000001440000001714511512360070020123 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-2.6.18/doc/resources/expireage.html0000644004705000001440000001050511512360070017531 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-2.6.18/doc/resources/gziplinks.html0000644004705000001440000000662311512360070017600 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-2.6.18/doc/resources/defrcname.html0000644004705000001440000000574611512360070017517 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-2.6.18/doc/resources/msgpgs.html0000644004705000001440000000775611512360070017076 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-2.6.18/doc/resources/tslicecontbeg.html0000644004705000001440000003227311512360071020414 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-2.6.18/doc/resources/tnextpglinkia.html0000644004705000001440000001645011512360071020447 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-2.6.18/doc/resources/definevar.html0000644004705000001440000001233611512360070017527 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-2.6.18/doc/resources/fieldstore.html0000644004705000001440000001200311512360070017713 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-2.6.18/doc/resources/tsort.html0000644004705000001440000000621611512360071016740 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-2.6.18/doc/resources/mailtourl.html0000644004705000001440000001427311512360070017576 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-2.6.18/doc/resources/varregex.html0000644004705000001440000000752311512360071017412 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-2.6.18/doc/resources/editidx.html0000644004705000001440000000653611512360070017223 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-2.6.18/doc/resources/tprevtopbuttonia.html0000644004705000001440000003024711512360071021217 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-2.6.18/doc/resources/ttitle.html0000644004705000001440000000654411512360071017076 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-2.6.18/doc/resources/genidx.html0000644004705000001440000000623611512360070017044 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-2.6.18/doc/resources/dbfileperms.html0000644004705000001440000001253111512360070020055 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-2.6.18/doc/resources/tslicetopend.html0000644004705000001440000003226711512360071020267 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-2.6.18/doc/resources/gzipexe.html0000644004705000001440000000720011512360070017231 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-2.6.18/doc/resources/timezones.html0000644004705000001440000003316211512360070017601 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-2.6.18/doc/resources/mimeexcs.html0000644004705000001440000001036411512360070017375 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-2.6.18/doc/resources/tslicelinone.html0000644004705000001440000003230111512360071020247 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-2.6.18/doc/resources/foluplitxt.html0000644004705000001440000003016311512360070017774 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-2.6.18/doc/resources/expiredate.html0000644004705000001440000001057711512360070017723 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-2.6.18/doc/resources/ttopend.html0000644004705000001440000000601211512360071017234 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-2.6.18/doc/resources/tfirstpglink.html0000644004705000001440000001616411512360070020307 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-2.6.18/doc/resources/nextlink.html0000644004705000001440000003222211512360070017414 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-2.6.18/doc/resources/tlastpglink.html0000644004705000001440000001613611512360070020122 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-2.6.18/doc/resources/msgprefix.html0000644004705000001440000000643211512360070017570 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-2.6.18/doc/resources/tendbutton.html0000644004705000001440000003123411512360070017750 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-2.6.18/doc/resources/tnextlinkia.html0000644004705000001440000003041711512360070020116 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-2.6.18/doc/resources/tlinone.html0000644004705000001440000000653111512360070017234 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-2.6.18/doc/resources/tnexttoplinkia.html0000644004705000001440000003015711512360071020643 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-2.6.18/doc/resources/listend.html0000644004705000001440000001710511512360070017225 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-2.6.18/doc/resources/gmtdatefmt.html0000644004705000001440000001465311512360070017724 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-2.6.18/doc/resources/tprevinlinkia.html0000644004705000001440000003017511512360071020445 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-2.6.18/doc/resources/tslicelinoneend.html0000644004705000001440000003227711512360071020752 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-2.6.18/doc/resources/checknoarchive.html0000644004705000001440000000666011512360070020543 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-2.6.18/doc/resources/thead.html0000644004705000001440000002040211512360070016642 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-2.6.18/doc/resources/add.html0000644004705000001440000000760611512360070016320 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-2.6.18/doc/resources/tidxpgend.html0000644004705000001440000001562311512360070017554 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-2.6.18/doc/resources/icons.html0000644004705000001440000001701111512360070016672 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-2.6.18/doc/resources/perlinc.html0000644004705000001440000001043511512360070017216 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-2.6.18/doc/home.png0000644004705000001440000000125607451276546014346 0ustar ehoodusers‰PNG  IHDR D¤ŠÆ PLTEÀÀÀÿf3÷Õó¨ìÊìÅì¼ê¤ç¼çµå¨åß›Ú~،ՊӫÓkÑfÐ…ÌÌÿÌ™fËhÉbƵŪũh®Â\Àªu¾¦¾w¼š»d¸Z´_±] °Œ¬i¨—i¦q.¥O¤q£b¡XŸXœN𤙙ÿ™o<™f™˜z”b<ˆV+‚U €€€~t¯}dDzl”sL0jS:ffÌfAf?f> eL4a5`+^E'^D^5^3 [E-VItV;#O+K' KHBUD*Bš§5 43b"""€7<ÿÿÌ!5øtRNS@æØfbKGDW} ÙDIDATxÚÍ’éRÂ0Fƒ¢¨¨¨¤Z·º¢¢bbT ÕD­+P—x Ãû?‰iÚQÚ‚¿ù¦ÛÎ9ó%é¡‘ o¶ÛÜFÑÏÄÖïÂoºý‚ð÷Ž<#d]xç;Í~´/ׄû&ˆ±_]oóØ'(iÜî×VvŸ‘ëˆêRõ´þÅS» þV¡„)P±±X.Ì¿“Ç”<8ëZ`gÅ©‰Ék‘æX6Z‡2lø¸Xͽ ïIP8¹zº¿@/Xen¹| 2\bcP€í…R±Æ³<^èg~f¼î àzâÐ öô¬›äñØÐ%>˜c Æ`7vÿl}ã¿ €VòÌ´Kˆf· ,ý3D‚Œ]€†ÜLŠþmɆñ$Ò±@3 ªaÎ÷+0•ÀœwVšXVŽsÉ×WZè0K'gi¦TGß …F&?Œ³P ÒAúrIEND®B`‚MHonArc-2.6.18/doc/app-diagnos.html0000644004705000001440000002524311512360071015756 0ustar ehoodusers MHonArc Reference -- Appendix: Diagnostics
    [Prev]   [TOC][FAQ][Bugs][Home]   [Next]

    Appendix: Diagnostics

    Three types of messages exist in MHonArc: Informative messages, Warnings, and Errors. Informative messages give you the current status of MHonArc's execution. Warnings signify undesired conditions, but are not critical in MHonArc's exection. Errors signify critical conditions that inhibit MHonArc from finishing its task.

    Another set of messages exists that are generated from the Perl interpreter itself. MHonArc tries its best to catch any conditions that may cause Perl to abnormally abort, but conditions may arise where this is not possible.

    This section describes the various diagnostics MHonArc may produce and messages Perl may produce.


    Informative messages

    Informative messages may be suppressed via the QUIET resource. Only the more important Informative messages are listed here.

    No new messages

    No new mail messages exist when performing an add operation to an archive. This can occur if an empty MH mail folder, or empty mailbox file, is passed to MHonArc; or the folder contains messages already in the archive.

    Trying to lock mail archive ...

    The statement means that a lock file is in place for the archive you are trying to update. Normally, an existing lock file implies that another MHonArc process is currently using the archive, and other MHonArc processes will wait awhile to see if the archive will be unlocked. The time MHonArc waits can be modified by the LOCKTRIES and LOCKDELAY resources.

    There are times when a lock file exists, but no MHonArc process is modifying the archive. This can occur if MHonArc is abnormally terminated. If you know that no other MHonArc process is editing the archive you are try to modify, then manually remove the lock file or use the FORCE resource.

    WARNING

    If LOCKMETHOD is set to flock, then the lock file should never be manually deleted. When MHonArc abnormally terminates, then the lock will be automatically released when the flock method is used. A stale lock can still occur under the flock method if for some reason a MHonArc process hangs. In this case, just kill the offending process and the lock will automatically be released.


    Warnings

    Warning messages denote some undesired event occurred, but the event is not severe enough to cause program termination.

    Warning: Could not find date for message

    MHonArc was unable to find a date for a mail message, or could not parse the date if the date is not in a common format. The message is given the current date if no date is found.

    Warning: Database (dbversion) != program (prgversion) version

    Indicates that the version of MHonArc updating an archive is different from the version of MHonArc that created the database file. Problems can arise if the database file changes in format from different version of MHonArc. See the release notes of the MHonArc distribution if changes in the databse format will effect older archives.

    Warning: Unable to create outdir/dbfile

    Indicates MHonArc was unable to create the database file dbfile for the mail archive created/modified in outdir. This message can occur if outdir permissions changed during MHonArc execution, the existing dbfile is read-only, or the file system is full.

    This warning can be severe because no future add operations can be performed to the archive.

    Warning: Unable to open footer: footer

    MHonArc was unable to open the footer file, footer, for inclusion into the index page. Make sure footer exists, and is readable by you.

    Warning: Unable to open header: header

    MHonArc was unable to open the header file, header, for inclusion into the index page. Make sure header exists, and is readable by you.

    Warning: Unable to open folder

    MHonArc was unable to open the specified mail folder for reading. Make sure folder exists and is readable (and executable if a directory) by you.

    Warning: Unable to open message: folder/message

    MHonArc was unable to open the specified MH mail message folder/message for reading. Make sure folder/message exists and is readable by you.

    Warning: Unable to open resource file: file

    MHonArc was unable to open the resource file, file, for reading. Make sure file exists, and is readable by you.

    Warning: Undefined time zone: "timezone"

    MHonArc has found an unrecognized timezone acronym, timezone, in a mail message. You can tell MHonArc about other timezone acronyms, and their hour offset to UTC, by using the TIMEZONES resource

    The timezone UTC (or GMT) is used for an undefined timezone acronyms.


    Errors

    Errors denote conditions that cause MHonArc to abort execution.

    Some error conditions may cause the MHonArc archive to become corrupted. If the error occurs when MHonArc is writing files, you may have to recreate the archive from the original messages.

    ERROR: Database read error of dbfile

    An error occured when trying to read an archive's database. The error can occur if the database file is not readable or the file got corrupted.

    ERROR: Unable to create file

    MHonArc was unable to create file. This message can occur if the directory being written to is not writable, a read-only file with the same name exists, or the file system is full.

    ERROR: Unable to create lockfile after # tries

    The statement means that MHonArc timed-out trying to obtain a lock on the archive. You may be able to avoid time-out problems by modifying the LOCKTRIES and LOCKDELAY resources.

    Sometimes a lock file exists, but no MHonArc process is modifying the archive. This can occur if MHonArc is abnormally terminated. If you know that no other MHonArc process is editting the archive you are try to modify, then manually remove the lock file or use the FORCE resource.

    WARNING

    If LOCKMETHOD is set to flock, then the lock file should never be manually deleted. When MHonArc abnormally terminates, then the lock will be automatically released when the flock method is used. A stale lock can still occur under the flock method if for some reason a MHonArc process hangs. In this case, just kill the offending process and the lock will automatically be released.

    ERROR: Unable to open file

    MHonArc was unable to open file for reading. Make sure file exists, and is readable by you.

    ERROR: Unable to require perl-library

    Make sure you properly installed MHonArc. Also make sure Perl is installed properly if the library is a standard Perl library.


    Perl Messages

    Generally, if execution is aborted and the following error messages appear, then you will have to manually delete the lock file since MHonArc will not have the chance to delete the file.

    Can't locate file in @INC at file line number.

    A library that MHonArc tried to load was not found in the Perl include search paths. This error usually implies that MHonArc was not installed correctly. Make sure that MHonArc was installed via the install.me program that is provided in the MHonArc distribution.

    file did not return a true value at file line number.

    If you are using your own MIME filters with MHonArc, make sure the library files return a true value, like 1.


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

    $Date: 2003/10/06 22:04:14 $
    MHonArc
    Copyright © 1997-2000, Earl Hood, mhonarc@mhonarc.org
    MHonArc-2.6.18/doc/faq/0000755004705000001440000000000011512360072013430 5ustar ehoodusersMHonArc-2.6.18/doc/faq/indexpgs.html0000644004705000001440000002651211512360072016145 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-2.6.18/doc/faq/usage.html0000644004705000001440000004067011512360072015431 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-2.6.18/doc/faq/monicon.png0000644004705000001440000000075507451276551015626 0ustar ehoodusers‰PNG  IHDRFBÆõHPLTE$‘Ù4-#&-W.OoKf2 _E1$n¤–ò$‘ÙHЦ‡T'°S¤bÚi¸£—“UÚ˜ò°øÐÿðÆ¿”4tRNS@æØfbKGD Ö˜ IDATxÚe’Ûv„ E†DŠ@þÿO{°]ÑæC²Í„‚[œók$  ۬žäESÚ”WàF+ë–’Š§ RëÉÇæ ŠÅmŸµŠÌ‚¢'¨‡‹=•¯NpSI© ‘cR¦Ç2{\X­VÕ¯PxȤ_ ß2rJäéÈ$bi­÷n:Ô ­ ¿!Ž…ÐžY†HÞñ!óa ó’ËÈ æå’S›ÓØ0¨uwšª•Ôö±×9r¾Ó9µÕ¶¿ŽnvŸxšVX?ÆÑçFî^¹}}­šüƒ†Ôjk¸ç)Û£0}±µÖ°´ùsÉŒ¶P4~ÎtÝçëmdöÿá|2ñ-?ö EšEjNæ.tEXtComment Imported from GIF image: mhonarc.gif.8ñIEND®B`‚MHonArc-2.6.18/doc/faq/envs.html0000644004705000001440000005476711512360072015314 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-2.6.18/doc/faq/mime.html0000644004705000001440000002521111512360072015246 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-2.6.18/doc/faq/about.html0000644004705000001440000001341011512360072015427 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-2.6.18/doc/faq/monsmall_t.png0000644004705000001440000001521507451276551016326 0ustar ehoodusers‰PNG  IHDR›d¦{²rÐPLTE$‘Ú$#"$'&&(+' . , 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<‚<ŒFƒJ†G—KƒQŒT‹Z˜X[£Q¬V­Y¦X³Y¾_±U¡MŒd–a›bk™lžs“sq£i«l«q¦|§w½~³zªs†o+ÂaÆcÍf×kÑhÚmŽwTŒxg‹wm¬ƒ­„·†¼“¼–ÂÎŒÈ…ÒØŒË›Â™ÚÚ”Þ—Ö’âšÇŸÎ¤Ò ×¬Ü³Úµæ¡í¥óªù®ã¹ç¸û¯ÿ²ý±ë¿êÂóÊøÊûÑûÕý×ÿØ÷Ñ™‡W—‚S›‹h“ˆx©˜g¬™x±¢s£`'_ˆ,f‹,c‡7l‰-m“)h“2n’4s–/r™+z¬%}³)~³%~º2{£Ir‰'ƒ½*„½,‡½*¸%‰È'‹Ê(ŠÈ#Ò%ŽÒ³¨’²¢–ƼŠÂµ©ÑÈ™×Ñ«ãݬêåºóð¹ýûÊÿÿÚýûÒñíÇÚÒÈoîð`tRNS@æØfbKGD︰â¡^IDATxÚí[ùC×öO›03LN€$¡@Û {X”%©€Ï”¨ÕŠÔ…ÇâÒö•M(Zx°¼¦ ´(вˆPPDAÑ*HHUÐWQ„¬H\Q‹¾á{ïÌ’VûÓ÷ü’Ü{Îçžýž ,–ÝŽŠŠúØÓ/"*rMÔ¯¬¿€~Záçù1}wºU#C½kV¿ïà S„yÙ;|èàÕ;082Íò;Ó©c9Ý™þËÞ¨ÈpG ÊÞ+L!spxõšÞ¡)Xjû#m SŒ+¿ô¿G 06›b(ÏöCÇõk®j§€áÐGGMl(:Hvˆ˜œvðúšõŽÚò€ [ðè—ä\Ì”°uŒì7–6|ÕQäÇE؈߃G]q$ÂÖŠ[Èb¶LZ°9:Fõõmˆº9îFnFmèë‹rtœŒMÛ¿%Ff£ãB2®ëÑ? žë'r¼:l(iÕÌw£AQ ¹ŽN@c³EûFGï¾¥ßÂÝß¡úµýQW†§‚6|% hdèwc'éßòùýÑÑ}"=!ŠûÈ-PmôÅæ¬28MÏ\€Jˆrƒæ! .ZÙÛý±±e‘}Sb`ÝŽŽº=ŧQÑ·§\>Üé »øblì¾ÈH‚Ì â¢B€pn6…X¼QÌz´ŸgàñçK½¥óI±¯Çô“§ÏŸ,H<ìÃ{§D7rýÓIN7ôéõ)M=Ünï!,|òüé'¦ _1I ræó€­ˆý‚؆Xa€m +Öv£ [ü`?òý“32‹Šv%—Œ^Š%Ý—_ÜdçêîæîêÞ3º‘ž(£‡£z¦‚6ÜîC1²Ûtq¹;{i´$™”™‘ìÏG‰ýÄl—¶±]γù#LÄeã¾.èüäÝ{ÚýÕã±§q®n®V€lÜÜÜÜíç:}Óðƒ›ÑS­ê ·wLl 7À4îéØã¯&d%ÏG]|q6W„}´ÙÐE×Úr}E˜Üá%ï§ôî±±‹8«µµµ+¹ä|×oSdþ(ï½Õ?yÍÐo]ç—šãű±îô YÅÉ<ÄEމ|¹¶k¸Ç+x¸Ï%Bøo§ÀïÞU´=±ûÉ“7š$>+VØ-ö¢;f²êFÖzïÚÉ+zbº_<[n·b…„aXòäIwâö¢]»iyÛý DùÀç)âN6r-NÈö¹¿#yó¿LOOßþõÖ”`éÒ %% €\ÝÜ%aŸ<<ß}9Ìë½ÈIªë¿¢‡fäÊ$µ E¾çv¹ûüÃ'Ã$în®ÀK””\X* IÙúõv ðËù<Ûx߇-Œ»f|²Áp>È1>>qBS"@UU_W__ß´cùèÓ÷ظڸK~—Ÿ<;ïeGZ[{¬º¥5:Úõ[Ü2ŽQí­UÖÖ¤×ùgO.û $î€á‚û/žŽ.ßÑÄÔÕW©Sa£üðÁIþУðCP,h#‘V¶ž¦édö¥±±çû¬<–^¾Ü}aÄÕÚÒJbåtÅH¼œ´ÀKkWÉ‚ Ý—//õì¬÷=»”}’ÔZ)E¸ƒ0ñ3L Œo–aBº DšÚéÖoŽ=]Ctáã?ž†ñ­%®6µà=£²7ruÜŽýW pƒBýØ °q•XóÃFŸÿñx! ÖåOÇÆ~3!)@]HÁd›§ê Wrq\gA„Öýtæôé3§êŽTþíþèãMv7óOÿèöpw•Ø€H³XÙ9ºEÏÝ»+¹ædg% 6I\Ý=ºÿxzÞÃÍÆFb·éñèý¿U©;eýTJXÄ)qœ»r5ÝúHÎ Š¢<ïÔòƒÕ_]¸|¹ëþý®…®îVVk»åç—€ðQ! ­mHKý/ú÷Ε;Fo(þÅ^`IÚX“ -9¿ÜÎZbeåîºò¾|ùÂWÕËS½y¨0.ˆ+ÿèÖ”ÐXÚÞ† )ˆó8;—€¢èéRWŒ”tÿ÷|˜«+TDÂçš[’vú%óJýÚwEïÃÛv¤¥9—/‘@eƒíaçÿÛ]²$8×¥O)ö/Jœ^q õ!0LÓ«pZKA„ûø¢(½–y/˜(/üñü‡+Àw+ Ç ˆ´´ ×sº×è×k7ô\-Ü ,#­Ày¬ÀFiÅCÀèL¾^©³?߇¡¨ïƒ}BÁ-®L߬jo…“(è¦|-ÄJ ùcîù%/WˆméãgÏ~°q•&dddü+Ù_jC±s'ì:´Ž²åuãÉoøÇ9à¤Ô?ù_`[B ÔÕæ‡gÏ/…Ø\½.AþåJ±…/èQ2Ü85ÒÐ*.\"{$·_}òP&H¥îV‚…Ÿlò’øocêßžŒ)p"ssÛq»ŽD÷i‡†´}ã¥ôv„­¹9pMiBƦfnó—xmúd¡ÀÊ]*•dŸŒ^bÉ@îÀîª!ÖËi`•ŸÜ‚T(ö)„»pÅWI_&¤gþ+!!!)É_š¡Wþ2=I.°X„ŽcϺ«NNW×é¢t(|É%=3õ t†Ô?) 0ûWfz—I_­XÈE JAZÈýV °þŒ†¯ÅËA4éÇE3'øîÝ•”°GïÏÝÿ–òÍß}×*œ÷{¸ŽÛ…ÿÎ@ ·z÷]s¾ôß»õ¶ìIHÚ¥÷g¦3Êõ# D‚<þÚðŸBNwÃÉÌBhÊž·ßõ×ç¼wWBºž€ê<-ÍÍp#ëly³]7Â@37·ôLÈ4Øž mïnÔ~ÿ<¶©ÐÂÌé†ö )‘"Šà\{.‘ wfИ¤û€Û[¼ÍøIUÀ!'ÜÎ0Ü " ‡Ÿûo3\ ¶ƒ¶CO÷ ‚#¨H9òJЀë"’“l6ïKšQñÄàÐÐÄïíâöî ”Xp·!6xqdcÛmÍRh $Ðy$††'¦eÐmÑÞ=_òØlR.r‰ýâö+Bƒ÷GR.Ä1S>ä¿'#9$4GUYWßtX²m!¸)IYMÝIÐÕ#4Rjh¿½{¶…¨7Õ×UªrBC’aèî ä›b¸PN:F¿:4`Ö_æòp\ Ä ÿ„ä¤àÔÊ&¦*·V¥&YÊÛÚÒØd bã­>aiiímdý¢„Ô*¦ÊÔà¤ä pœ7÷—W5¨Îç侨Hé‚á<Ïœ#§NOPS^¢¡ê@6±á‚kÛb#Ö€ %ׯ s@¥%æ5é19u$Ç“‡c.Jê+e_ÓÑÐæb\HÊX¨>2xìƒÆªvýÃjÄÆY ú#{B¥l5är*SÈI!.Þ¸ùÏRîdÜâ‡ü}]DöicªK6@âuÎê¿Óþö÷Õs 㳸(ÙPi4e]ûøî·e𵡖ÉóÉ%•“دK L6J}^\j"€p½Œ’Xr`JUëd•yÐs¸õÐXÚõ¢y\u.Ÿ‚ñé&U@Èv}·+NÆéÑ®‰Ü»g{H€ªi ­åÎ(Î'Z¯}l¬›±J‚Ä1鎺‰Öù'H§W¨v„¢Ëä߃Ðîñ3 ‘…îPT>EmœàS·CŠá$¡Œ½ùFÐ@;½„ð“cÏ;¯žbÝt¤0GµcÇUViEc{K9ÈèŠlhl6EÈ@ö)oio¬(Í¢¶åi¢ÕçyóLîG,¹öº1ª£¾÷±œ‡ (?`kZNaaNniYã @mj  Žö†œà¤t&*Œ°¥'ç4´wÀ•ê6¸«±¬4rIÛÀGQ„'ïõ½!4ÖÝèæP> üÅe'š›Û5†ÔÙÞ QAÕ }l ÆP5´wmhon>Q¶˜"›,âî›bc݈W ¾ÄżÅ0è:ZʳƒÓwëcÛœ]ÞÒ1Í–Fo õY‚¨"þÆCci·ÈQ™‹Üå—©5Ó0mv@`ú6M°-=0 ›1攤.ã£>r*ߢ}sl¬ëö²y ‰ hѼ„:jH¾ó;4¶wœùd@mÇËÖ·€lžÌÂþú  ±âãHNà‹Û§—ÔÙ^¢Ž}ï]x‘]ÞÞ9ýŽöÅ€%‡Œ‹ÿó.ü%t÷³Al%ßóèô­IµcªÃf ê*bZ3½Uzò•.ì Ÿ½y$@ê÷a‹÷ûÜËšBPǹs- …¡fŒ áOÒØHÂ@5ó-lh9wnª}Y÷|ö‹Ù>ñý3‚{1™cÆ m7DÕÒPÓPš’ìF"°ý@æ'gèâ4#y>¬¬„t NI) [ ¶‡rÌæ ¨åk÷F“÷¾ð›¹-Œuž;^³35Ø•ïLšpè'Bº­¸È®õnEÅÛ¤‡~jÀ1!ù®Á©;kŽŸÓíoÉ%MÄ>„ðýª ¤‘h™²$Îì7¸¾£¥6Ë[À35åŒ?·¸‡{‚~®8YBß$ÉÅ _óÄï/à˜šòÞYµ-ƒ†`î=³¸¥,Z;Sl¬ÁUŠ}]A(‚xfko) v6Ój<Ÿ°«6ÿî46wxÅ(Þ•À71X†˜9¶´ËòD4¨kŸbÕ›ômÆ4°ò£G%JàW&ž)‹, ž'±Aá‘Räž„¬Etß»(‹ºaCÃb¨:ÔrQЧ ðCeÉ£VÎ(ŒSÿaaqvTð™L˜’j¢ó|ÿ„"ºñÍjËz~üxC·½E þóA-ÖÛbB…´]\XØ3v6š´½±±B‚3q~瑤ÜÀ23™æ·(ñ¨æ?ô]æ?š£‰L›´;3ܦ$$ÉÃÑ }salì´s¶×¥á!÷ž)Àá¤gHâÖï¤L½¾rOR©ºS‡­S]š¤ÿ]f’wÈÖÄOЦ"x¦÷¸ÂˆW~¼ÝPÏ3q+ œ‚ªJ+š,šÝ¦9»˜Æ¶ø¬¦-Ûà2S”VuèÐ9pw¢'°"7fKm1J!†"žªêC:úñ;ý›LQÊ1º4Œ 8øjͱ}軿ûq|cµÊA1¡2f–×7— x˜ä» h‡}§w—Ú½tP;Shl);A´Uû®ïô6V'Áx1÷^Cжdã'XÚ_O(¦8-´YÓVZ»ˆºhá‹jKÛ4Í¡iV-úúG}pÁg[F϶ߖ („èñ?tpÂߊ·‡ÖªÕe¼-!6Kï†ejumèÄÀ©(í þÞ„@‘%¿Í¶8ÌBtÏ[AHÑ´jÍñÒö†?„Ø>ü¸¡½ô¸F}`\QH¶{" ,n–°E 1ûÏç†ê±¯Êݦs&­½ì„¦!Æú›cLƒæDY;§sÉm¡ÙUz›Cç~n #gÛZ?1W!˜à_™SP•–Q ïSÛ“rÛ55 bÞ‡sË÷6uYM§¦=7i;¼g¤UäTNœ+@¬àŠýÖΤþøX„ÃW霹 ­²µµN•–± Ü4SÛ4šæÜMÃæõÛúÍ ͉Üf¦-Üj·e¤©êZ[+Ó t¡¤âs“Ø™ö•:Yg!l< ’I*j^u0U•Wu8»´=ù¥jMgÅf8€#Öl®èÔ¨KóA?T›}¸*O•zš‹©˜T€³Ì~ÝLûÊqÅ9 -Ìrk5eÏBjôr2Ê<,ªiÌºëø¶·g.›=·§÷[«-·ô·¹Gàò¨‡¤M…”]«·’„™…Ðq–ÔŠýÕMJ¡R(É©¦ìI [ ákkT[¼èœûa`ÀÍvøá¼®”AÅåÁ5•…ôh×ê `¤ÜtU;[ØXßú‘¾|Â9QEÛóô™ƒypšyx'PÈÌÙe}Po}ËÎÂ;È#šö‡á„2ïàzÞ©R%:|_ÒïÓY+õЪN>\ áV1±›vÔAiyà–^~ ^Žq7šd³Éè»_‡+Wk4Pq§ëv0¸“U<ãú8ÍšEi«Êæ°‰Àjf€öS50¬ÏáØœO]Áj6°èX`m¨¡.Sùð»ìzj ˜÷3v«$Øsd³hQHC&¨OŽND ZôL9ÔMMm'M»æÞõZ[gm Ôi94ç)UîP9>¨‰ÃëŸ_®¸(™¥ò{FÂá:Tw€´Ö^ÖLA©Ø2DçÞ¡-ØfP4'vÐAšs˜9Õ÷JKYÔìªÅêù\®\FûÍIÕA**áp©±‚ž~Û7à±9ô}KÏ+áȨ’Šƒƒ*ÚQ›–)åŸ÷Ì! Äøºx•ÓSd:)Pjë„ {-èµWĶw`=h„úc×ZHO´Ë½\|cf熥G#‘\ ƒ¿9s˜rp ‹| ±³åg) Í›îþúô·~½»‰²2ý•:ŸÒ1›Ãgà¯@0Œ;ãQÃdºå€£Þu§ÏÔg3Ù7¦ÜÚRz”pl‹uÓEío²XŽÑÃ…ÒZ˜„ó˜Ì›]æt7Š¿Ù…?QÜz>F¤žªÏfbŽÊ»;ké)GMˆ—Oy¼Oµ,VT ýYíÎ]þ…±]*•Àøëg_m,Öu[¨²ƒé€h-„jkþ¦™Á¶¬èµµí/›lô—Giï<Ýœ­ ¨íŒf•ÓÑ€!$¥yŒÚ²Ú jò™éUìÿá#ºŒ™„åC¥¶e1ŠË“:“BÂaÖ#Ò…̇—r’‘ú" ™g‚;Žj}˜$T‘«K™ÓœLáùÈwfŠcJúíá]Ç”F˜@4gw¶1æ[Jåú»Ôth)cè¶0ˆ™4êª7á÷`–î “°)¹œ¦4TÃÆMs,_­s7íÄ:­ÎáÔù0bÛs«™¢Âá*ß¶ëö\4ø¤^$hÊužõ}¯þÂÞïu^X®Ñ‹†“Á(wfcûéi ^fÎ/gL ÍÖQFØX,¤ÚKX`‡©ifŒZÎ7—Íll?= ýSDÒŠ«¦žÓœÍeÜ 4–Ø–e.¾Q—UÓj#ƒÿœåDGÚÕJ…ȹ|¤ ¥Œ»5Æ<)¸ÃèS]Ú0aÔrg‘B¹Zûv°±zbÅsïÉ\*k+˜©|…Ñt#zü ªl4çž„¹Ãı³Þƒèh(^Œ ¼”¦SU”I;Jõ³›g¸ÆÒʨU§šRx"ŽK&F½2—Àp^@êb ÔÙoNÐŽÇ=ü¹{œþæÄ7”ç5.N àá1÷Šömacü"SÊ…σÕ˜K7jàÚl¼p3Ýû‚ÜFâ„Ê•²×üÍëј89c{RîVÃd·sßö¯ëý–É"eTnödc|y\ÌÛ©W:ºédKblÁXLK,}/[G¡Ã©Øiëô†¿ixUÒ^‹YB°QoîìÎfIµ“–éŒÚ Jªú€7Ê&–Ä\Ó¾¾¼×çKpÌ3¿¹!ÿg&ñNqîgÒïÏù ÍùžÂ!|ß:4ø°A ®¼E¡Y?ÓjÛ0Õ?yl ÷sVè"¸$Ä*fï‘ÂKhð³.{BÈňEÍÓªm\qÍ‹Œ+$ì»>›GkNC"ÞB”-*=¡>›¿A;Õ"í†ü³ê¥‹06ê²'ŠxkI×Xs+}ù<”C„wÖâði¤…/ÎòK8(ï»ò¯Ñ¤_ã…:'VŽÿŸ—>ÁÿGÃä±sPLÿ—üK&M#7WZ‘Ü 1†¼ä& nÛ&â’V+o¾Íz0‰׆Ûf\‡5/ù…éí5\3Â6|í_gP†îôDþcmÿK2Ò¿ö‘=o·Pý?M¢ÿ^;é&IEND®B`‚MHonArc-2.6.18/doc/faq/msgpgs.html0000644004705000001440000002652111512360072015624 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-2.6.18/doc/faq/archives.html0000644004705000001440000006567211512360072016142 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-2.6.18/doc/faq/faq.html0000644004705000001440000003016011512360072015065 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-2.6.18/doc/faq/security.html0000644004705000001440000003050711512360072016172 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-2.6.18/doc/faq/threads.html0000644004705000001440000001013711512360072015752 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-2.6.18/doc/faq/general.html0000644004705000001440000003172211512360072015740 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-2.6.18/doc/bug.png0000644004705000001440000000231607451276546014171 0ustar ehoodusers‰PNG  IHDR D¤ŠÆ^PLTEÀÀÀ111999JJJZZZcccsss”””œœœµµµ½½½ÆÆÆ½µµ­¥¥µ­­Æ½½­œœœŒŒ1!!9!!B!)Z91J)!ŒJ9Rs{Æ)Î)Æ¥œÎ”„ÎsZRœ)Æ1k”!œ!µ)Æ­¥kRJcJBÆ”„΄kÆ{cÆB­1Ö9Bc„!Œ!­)Æ1Î1Þ9ÆœŒ½”„ZB9ÎŒsÆ„k{RBÆZ1ÎZ1”9Bc!ÎBÆ99Z{!œ)µ1½1Ö9Î{ZÆsRµR)J!RŒ)¥1­1Œ{sŒ11Jk!„){kcJ)c1Z)R!”9c9!„1sZJsJ1J!{1Æ­œZB1B)Z9!ŒR)c)Œ9s9Z)¥JÆZƽµ„sckZJcRBµZœJÎcœ”Œ”Œ„kR9cJ1ZB)œk9B!R)µZÖkc9„J½cÎkÖsœZ”RµcÞ{{cBc9¥s)Z9¥c„kBµŒJ„Z­kÖ„ÞŒ”c¥k½{ÖŒ­œ{Œ{ZZB¥scBçœÆ­s„ZÖ”Þœï¥÷­Æ­k­”RÆŒç¥ç­­¥ŒÎœïµœ{çµ½œ­ŒÖ­ç½µœ)ƥέïÆ÷ÎçÆ¥ŒÖµïÎ÷ÖÆ­½½µ­­¥µµ­±Ã×tRNS@æØfbKGDÉj½g\IDATxÚc` "àd9ÁÄÁ[ž]„éÄIffœ*8Or°ž`ägbÇ¥€M<ÅÄ××DM‡<¯s¤¯¼¿/VyC› _ß@sK%'A, T´-¬ý­}}m|Âm 0å˽ä½m†l¬­­½0Œà R´¶J­°¶‰óUREwÆQkë³°èäPw7õkëãÇøøêõer ìmLNœHJl›Ü˜Ÿ ôˆµ=C}CSsW’DªЖ)sÖ4L\æg|T¯ubã²Åy\®rq66Ö&b™Õ½µ]%¾! ¥í½Õ¢uP7xúû[Û„KøúºÏ[5¿»¶È;»¬}ÖªÙîõ0G[ÛØØšŸ³ðèØºwçú.©š¥;÷î\^ ÷…‹µµ¼_@œ¿¯oÞ¡Ã{”HÆn9rèð"a¸#ëñ,›@S_ßè)KJÒû[¦•LZ¢ÇW ¬è`Œ‹ø¾ùÝ=›Z¶Oèž5³ P‚^Àp вñÕŒî\¹bÓÁÂm;Ö-S”ŽÀ ¶¶ñ²0‹)^µ~禴]û6¬žœ¶µâm@±©¿nóáyBk÷m]™9:V^âfÀÈRŸ»÷ðt†‡Í‹BO;›3`t„nß·‘A`ÿîFôÔ«ëbc£àkcí"= è½…Mü‰†'ÇQVÖ)[zô¾›£;ÁªÖàIEND®B`‚MHonArc-2.6.18/TODO0000644004705000001440000000357107712653410012622 0ustar ehoodusersTODO List for MHonArc ===================== Items are in no particular order: =========================================================================== => 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-2.6.18/mha-dbedit0000755004705000001440000000614107706405566014064 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-2.6.18/.htaccess0000644004705000001440000000064110243725162013720 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-2.6.18/mha-decode0000755004705000001440000001174107706405566014056 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-2.6.18/BUGS0000644004705000001440000000557211512360072012610 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-2.6.18/ACKNOWLG0000644004705000001440000001022711177375157013267 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 Salaün 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-2.6.18/INSTALL0000644004705000001440000007033011512360072013150 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-2.6.18/lib/0000755004705000001440000000000011512360072012662 5ustar ehoodusersMHonArc-2.6.18/lib/mhamain.pl0000644004705000001440000012315411512357733014651 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhamain.pl,v 2.100 2011/01/09 16:18:35 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Main library for MHonArc. ##---------------------------------------------------------------------------## ## 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., 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA ##---------------------------------------------------------------------------## package mhonarc; require 5; $VERSION = '2.6.18'; $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 $From{$key}; delete $IndexNum{$key}; delete $Refs{$key}; delete $Subject{$key}; delete $ExtraHFields{$key}; delete $MsgId{$Index2MsgId{$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 { if (!defined(%Index2MsgId)) { foreach (keys %MsgId) { $Index2MsgId{$MsgId{$_}} = $_; } } } ##--------------------------------------------------------------------------- 1; MHonArc-2.6.18/lib/mhnull.pl0000644004705000001440000000373107620046507014533 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-2.6.18/lib/mhlock.pl0000644004705000001440000001315107351420200014471 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhlock.pl,v 1.3 2001/09/17 16:10:40 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Lock functions 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; ############################################################################# ## Constants ############################################################################# sub MHA_LOCK_MODE_DIR () { 0; } ## -- Directory method: Works on all platforms, but lock dir can be ## left around if abnormal termination. sub MHA_LOCK_MODE_FLOCK () { 1; } ## -- flock() method: Works on select platforms. Can have problems ## if writing to an NFS mount depending on how perl is built. ## If available, and not writing to NFS (or reliable over NFS) ## this method is better than directory method. ############################################################################# ## Variables ############################################################################# my $_lock_file = undef; my $_flock_fh = undef; $LockFunc = undef; $UnlockFunc = undef; ############################################################################# ## Functions ############################################################################# ##--------------------------------------------------------------------------- ## set_lock_mode(): Set locking method used by MHonArc. ## sub set_lock_mode { my $mode = shift; if ($mode =~ /\D/) { STR2NUM: { if ($mode =~ /^\s*flock/) { $mode = &MHA_LOCK_MODE_FLOCK; last STR2NUM; } $mode = &MHA_LOCK_MODE_DIR; last STR2NUM; } } if ($mode == &MHA_LOCK_MODE_FLOCK) { $LockFunc = \&flock_file; $UnlockFunc = \&unflock_file; return ; } $mode = &MHA_LOCK_MODE_DIR; $LockFunc = \&create_lock_dir; $UnlockFunc = \&remove_lock_dir; $mode; } ############################################################################# ## Directory Method of Locking Functions ############################################################################# ##--------------------------------------------------------------------------- ## create_lock_dir() creates a directory to act as a lock. ## sub create_lock_dir { my($file, $tries, $sleep, $force) = @_; my $prtry = 0; my $ret = 0; $_lock_file = $file; while ($tries > 0) { if (mkdir($file, 0777)) { $ISLOCK = 1; $ret = 1; last; } sleep($sleep) if $sleep > 0; $tries--; if (!$prtry && ($tries > 0)) { print STDOUT qq/Trying to create lock ...\n/ unless $QUIET; $prtry = 1; } } if ($force) { $ISLOCK = 1; $ret = 1; } $ret; } ##--------------------------------------------------------------------------- ## remove_lock_dir removes the lock directory ## sub remove_lock_dir { if ($ISLOCK) { if (!rmdir($_lock_file)) { warn "Warning: Unable to remove $LOCKFILE: $!\n"; return 0; } $ISLOCK = 0; } 1; } ############################################################################# ## Flock Functions ############################################################################# ##--------------------------------------------------------------------------- ## flock_file(): Create archive lock using flock(2). ## sub flock_file { my($file, $tries, $sleep, $force) = @_; eval { require Symbol; require Fcntl; Fcntl->import(':DEFAULT', ':flock'); }; if ($@) { warn qq/Warning: Unable to require modules for flock() lock method: /, qq/$@\n/, qq/\tFalling back to directory method.\n/; set_lock_mode(MHA_LOCK_MODE_DIR); return &$LockFunc(@_); } $_lock_file = $file; $_flock_fh = Symbol::gensym; if (!sysopen($_flock_fh, $file, (&O_WRONLY|&O_CREAT), 0666)) { warn(qq/ERROR: Unable to create "$file": $!\n/); return 0; } my $prtry = 0; my $ret = 0; while ($tries > 0) { if (flock($_flock_fh, &LOCK_EX|&LOCK_NB)) { $ISLOCK = 1; $ret = 1; last; } sleep($sleep) if $sleep > 0; $tries--; if (!$prtry && ($tries > 0)) { print STDOUT qq/Trying to create lock ...\n/ unless $QUIET; $prtry = 1; } } if (!$ISLOCK && $force) { $_flock_fh = undef; $ISLOCK = 1; $ret = 1; } $ret; } ##--------------------------------------------------------------------------- sub unflock_file { if (defined($_flock_fh)) { flock($_flock_fh, &LOCK_UN); close($_flock_fh); $_flock_fh = undef; } $ISLOCK = 0; } ##--------------------------------------------------------------------------- ############################################################################# BEGIN { set_lock_mode(MHA_LOCK_MODE_DIR); } 1; MHonArc-2.6.18/lib/mhmimetypes.pl0000644004705000001440000003747011510057567015605 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhmimetypes.pl,v 1.22 2011/01/02 11:20:23 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## MIME type mappings. ##---------------------------------------------------------------------------## ## 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 mhonarc; use File::Basename; $UnknownExt = 'bin'; %CTExt = ( ##----------------------------------------------------------------------- ## Content-Type Extension:Description ##----------------------------------------------------------------------- '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,eps,ai: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:HPGL file', 'application/vnd.lotus-1-2-3', '123,wk4,wk3,wk1:Lotus 1-2-3', 'application/vnd.lotus-approach', 'apr,vew:Lotus Approach', 'application/vnd.lotus-freelance', 'prz,pre:Lotus Freelance', 'application/vnd.lotus-organizer', 'org,or3,or2:Lotus Organizer', 'application/vnd.lotus-screencam', 'scm:Lotus Screencam', 'application/vnd.lotus-wordpro', 'lwp,sam: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-packed', 'sdp:StarImpress packed file', 'application/vnd.stardivision.impress', 'sdd:StarImpress presentation', 'application/vnd.stardivision.mail', 'smd:StarMail mail file', 'application/vnd.stardivision.math', 'smf:StarMath document', 'application/vnd.stardivision.writer-global', 'sgl:StarWriter global document', 'application/vnd.stardivision.writer', 'sdw:StarWriter 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.global', 'sxg:OpenOffice Writer global document', 'application/vnd.sun.xml.writer', 'sxw:OpenOffice Writer 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-netcdf', 'cdf:Cdf file', 'application/x-net-install', 'ins:Net Install 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-shar', 'shar:Unix shell archive', 'application/x-sh', 'sh:Bourne shell script', '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-texinfo', 'texinfo:TeXInfo document', 'application/x-tex', 'tex:TeX document', 'application/x-timbuktu', 'tbp:timbuktu file', 'application/x-tkined', 'tki:tkined file', '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-troff', 'roff:Troff 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,aiff,aifc: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,ram: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: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,mmod:Macromodel chemical test', 'chemical/mopac-input', 'gau:Mopac 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,jpe:JPEG image', 'image/pbm', 'pbm:Portable bitmap', 'image/pgm', 'pgm:Portable graymap', 'image/png', 'png:PNG image', 'image/tiff', 'tif,tiff: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/rfc822', '822:Mail message', 'message/news', '822:News post', 'model/iges', 'iges:IGES model', 'model/vrml', 'wrl:VRML model', 'model/mesh', 'mesh:Mesh 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,mpe:MPEG movie', 'video/msvideo', 'avi:MS Video', 'video/quicktime', 'mov,qt:QuickTime movie', 'video/vivo', 'viv:vivo video', 'video/wavelet', 'wv:Wavelet video', 'video/x-sgi-movie', 'movie:SGI movie', ); ##--------------------------------------------------------------------------- ## get_mime_ext(): Get the prefered filename extension and a ## a brief description of a given mime type. ## sub get_mime_ext { my $ctype = lc shift; my($ext, $desc) = (undef, undef); if (defined($CTExt{$ctype})) { ($ext, $desc) = split(/:/, $CTExt{$ctype}, 2); } elsif (($ctype =~ s|/x-|/|) && defined($CTExt{$ctype})) { ($ext, $desc) = split(/:/, $CTExt{$ctype}, 2); } if (defined($ext)) { $ext = (split(/,/, $ext))[0]; } elsif ($ctype =~ /^text\//) { $ext = 'txt'; $desc = 'Text Data'; } else { $ext = $UnknownExt; $desc = $ctype; } ($ext, $desc); } ##--------------------------------------------------------------------------- ## write_attachment(): Write data to a file with a given content-type. ## Function can be used by content-type filters for writing data ## to a file. ## sub write_attachment { my $content = lc shift; # Content-type my $sref = shift; # Reference to data my $opt = ref($_[0]) ? shift : +{ @_ }; my $path = $opt->{'-dirpath'} || ''; my $fname = $opt->{'-filename'} || ''; my $inext = $opt->{'-ext'} || ''; my $url = $opt->{'-url'} || $AttachmentUrl || ''; my $pathname = $AttachmentDir; my $rel_outdir = 0; if (!$pathname) { $pathname = $OUTDIR; $rel_outdir = 1; } elsif (!OSis_absolute_path($pathname)) { $pathname = $OUTDIR . $DIRSEP . $pathname; $rel_outdir = 1; } my $ctype = 'application/octet-stream'; if ($content =~ m%^\s*([\w\-\./]+)%) { $ctype = $1; } if ($path) { if (OSis_absolute_path($path)) { $pathname = $path; $rel_outdir = 0; } else { $pathname .= $DIRSEP . $path; $url .= '/' if ($url); $url .= urlize_file_path($path); } } dir_create($pathname); my $ext; if (!$fname) { $ext = $inext || (get_mime_ext($ctype))[0]; } else { # Convert invalid characters in filename to underscores $fname =~ tr/\0-\40\t\n\r?:\57\134*"'<>|\177-\377/_/; } ## Write to random file first my($fh, $tmpfile) = file_temp($ext.'XXXXXXXXXX', $pathname, '.'.$ext); binmode($fh); print $fh $$sref; close($fh); ## Set pathname for file if ($fname) { # need to rename to desired filename $pathname .= $DIRSEP . $fname; if (!rename($tmpfile, $pathname)) { die qq/ERROR: Unable to rename "$tmpfile" to "$pathname": $!\n/; } } else { # just use random filename $pathname = $tmpfile; $fname = basename($tmpfile); } $url .= '/' if ($url); $url .= urlize_file_path($fname); file_chmod($pathname); if ($rel_outdir) { $pathname = $path; $pathname .= $DIRSEP if ($pathname); $pathname .= $fname; $url = join('/', $OUTDIR, $url) if $SINGLE; } ($pathname, $url); } ##--------------------------------------------------------------------------- ## Convert a filesystem path into a URL path. ## sub urlize_file_path { my $path = shift; $path =~ s/$DIRSEPREX/\//go; $path =~ s/([^\w.\-\/])/sprintf("%%%X",unpack("C",$1))/ge; $path; } ##--------------------------------------------------------------------------- sub dump_ctext_hash { local($_); foreach (sort keys %CTExt) { print STDERR $_,":",$CTExt{$_},"\n"; } } ##--------------------------------------------------------------------------- 1; MHonArc-2.6.18/lib/qprint.pl0000644004705000001440000000330210352064513014534 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: qprint.pl,v 2.7 2005/12/20 20:27:55 ehood Exp $ ## Authors: ## Earl Hood mhonarc@mhonarc.org ## Alan Barrett barrett@daisy.ee.und.ac.za ## Description: ## This library defines the routine to decode "quoted-printable" ## encoded data. ## Usage: ## require "quoted_printable.pl"; ## $text = "ed_printable'qprdecode($data); ## ##---------------------------------------------------------------------------## ## 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., 675 Mass Ave, Cambridge, MA 02139, USA. ##---------------------------------------------------------------------------## package quoted_printable; sub qprdecode { local($_) = shift; s/[^\S\r\n]*(\r?\n)/$1/g; # remove trailing whitespace on each line s/\=\r?\n//g; # remove soft linebreaks s/=\Z//; # drop any bogus soft lb at end of text s/=([0-9A-Fa-f]{2})/pack('H2',$1)/ge; # convert hex codes $_; # return result } 1; MHonArc-2.6.18/lib/mhdb.pl0000644004705000001440000005551211510267737014155 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhdb.pl,v 2.43 2011/01/03 06:42:39 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## MHonArc library defining routines for outputing database. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1995-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 ##---------------------------------------------------------------------------## use File::Basename; my $_true = "1"; my $_false = "0"; ##--------------------------------------------------------------------------- ## output_db() spits out the state of mhonarc to a file. This ## (database) file contains information to update mail threading ## when incremental adding is done. The actual database file ## is a Perl program defining all the internal data structures. ## All mhonarc does is 'require' it when updating. This is ## faster than having to extract the data from message files ## -- which would require opening every file to perform ## updates. ## sub output_db { my($pathname) = shift; my($dirname) = dirname($pathname); my($db, $tmpfile) = file_temp('dbXXXXXXXXXX', $dirname); ## Invoke pre-save callback if (defined($CBDbPreSave) && defined(&$CBDbPreSave)) { return unless &$CBDbPreSave($pathname, $tmpfile); } if (!open($db, ">$tmpfile")) { warn qq/ERROR: Unable to create "$tmpfile": $!\n/; return 0; } binmode($db); # Unix text format okay for Perl source on Windog print $db "## MHonArcDB (Automatically generated by MHonArc)\n"; print_var($db,'DbVERSION', \$VERSION); ## Meta-data print_var($db,'ContentType', \%ContentType); print_var($db,'Date', \%Date); print_var($db,'Derived', \%Derived); print_var($db,'FollowOld', \%Follow); print_var($db,'From', \%From); print_var($db,'DoFromName', \$DoFromName); print_var($db,'FromName', \%FromName) if $DoFromName; print_var($db,'DoFromAddr', \$DoFromAddr); print_var($db,'FromAddr', \%FromAddr) if $DoFromAddr; print_var($db,'IndexNum', \%IndexNum); print_var($db,'MsgId', \%MsgId); print_var($db,'Refs', \%Refs); print_var($db,'Subject', \%Subject); print_var($db,'Time', \%Time); print_var($db,'ExtraHFields',\@ExtraHFields); print_var($db,'ExtraHFields',\%ExtraHFields); print_var($db,'TListOrder', \@TListOrder); print_var($db,'LastMsgNum', \$LastMsgNum); print_var($db,'MAXPGS', \$MAXPGS); print_var($db,'MULTIIDX', \$MULTIIDX); print_var($db,'NumOfMsgs', \$NumOfMsgs); print_var($db,'NumOfPages', \$NumOfPages); print_var($db,'NumOfPrintedPages',\$NumOfPrintedPages); print_var($db,'PrintXComments',\$PrintXComments); print_var($db,'SaveRsrcs', \$SaveRsrcs); if ($SaveRsrcs) { ## Resources print_var($db,'CustomRcVars',\%CustomRcVars); print_var($db,'FieldODefs', \%FieldODefs); print_var($db,'HFieldsExc', \%HFieldsExc); print_var($db,'HeadFields', \%HeadFields); print_var($db,'HeadHeads', \%HeadHeads); print_var($db,'Icons', \%Icons); print_var($db,'UDerivedFile',\%UDerivedFile); print_var($db,'ZoneUD', \%ZoneUD); unless ($IsDefault{'CHARSETALIASES'} && !$SaveMIMECharsetAliases) { print_var($db,'SaveMIMECharsetAliases', \$_true); print_var($db,'readmail::MIMECharsetAliases', \%readmail::MIMECharsetAliases); } unless ($IsDefault{'CHARSETCONVERTERS'} && !$SaveMIMECharSetConverters) { print_var($db,'SaveMIMECharSetConverters', \$_true); print_var($db,'readmail::MIMECharSetConverters', \%readmail::MIMECharSetConverters); print_var($db,'readmail::MIMECharSetConvertersSrc', \%readmail::MIMECharSetConvertersSrc); } unless ($readmail::TextDefCharset eq 'us-ascii') { print_var($db,'readmail::TextDefCharset', \$readmail::TextDefCharset); } unless ($IsDefault{'TEXTENCODE'} && !$SaveTextEncode) { print_var($db,'SaveTextEncode', \$_true); print_var($db,'readmail::TextEncode', \$readmail::TextEncode); print_var($db,'readmail::TextEncoderFunc', \$readmail::TextEncoderFunc); print_var($db,'readmail::TextEncoderSrc', \$readmail::TextEncoderSrc); } unless ($IsDefault{'MIMEDECODERS'} && !$SaveMIMEDecoders) { print_var($db,'SaveMIMEDecoders', \$_true); print_var($db,'readmail::MIMEDecoders', \%readmail::MIMEDecoders); print_var($db,'readmail::MIMEDecodersSrc', \%readmail::MIMEDecodersSrc); } unless ($IsDefault{'MIMEFILTERS'} && !$SaveMIMEFilters) { print_var($db,'SaveMIMEFilters', \$_true); print_var($db,'readmail::MIMEFilters', \%readmail::MIMEFilters); print_var($db,'readmail::MIMEFiltersSrc', \%readmail::MIMEFiltersSrc); } unless ($IsDefault{'MIMEARGS'} && !$SaveMIMEFiltersArgs) { print_var($db,'SaveMIMEFiltersArgs', \$_true); print_var($db,'readmail::MIMEFiltersArgs', \%readmail::MIMEFiltersArgs); } if (%readmail::MIMEExcs) { print_var($db,'readmail::MIMEExcs', \%readmail::MIMEExcs) unless $IsDefault{'MIMEEXCS'}; } if (%readmail::MIMEIncs) { print_var($db,'readmail::MIMEIncs', \%readmail::MIMEIncs) unless $IsDefault{'MIMEINCS'}; } unless ($IsDefault{'MIMEALTPREFS'} && !$SaveMIMEAltPrefs) { print_var($db,'SaveMIMEAltPrefs', \$_true); print_var($db,'MIMEAltPrefs', \@MIMEAltPrefs); } print_var($db,'DateFields', \@DateFields) unless $IsDefault{'DATEFIELDS'}; print_var($db,'FieldOrder', \@FieldOrder); print_var($db,'FromFields', \@FromFields) unless $IsDefault{'FROMFIELDS'}; print_var($db,'Months', \@Months) if scalar(@Months); print_var($db,'months', \@months) if scalar(@months); print_var($db,'OtherIdxs', \@OtherIdxs) if scalar(@OtherIdxs); print_var($db,'PerlINC', \@PerlINC) if scalar(@PerlINC); print_var($db,'Weekdays', \@Weekdays) if scalar(@Weekdays); print_var($db,'weekdays', \@weekdays) if scalar(@weekdays); ## I should use a hash for this stuff instead of individual variables. ## A legacy of Perl 4 days and a program getting larger than expected. print_var($db,'AddressModify', \$AddressModify) unless $IsDefault{'AddressModify'}; print_var($db,'AddrModifyBodies', \$AddrModifyBodies); print_var($db,'AttachmentDir', \$AttachmentDir); print_var($db,'AttachmentUrl', \$AttachmentUrl); print_var($db,'CheckNoArchive', \$CheckNoArchive); print_var($db,'DOCURL', \$DOCURL); print_var($db,'NODOC', \$NODOC); print_var($db,'DecodeHeads', \$DecodeHeads); print_var($db,'DoFolRefs', \$DoFolRefs); print_var($db,'ExpireDate', \$ExpireDate); print_var($db,'ExpireTime', \$ExpireTime); print_var($db,'FastTempFiles', \$FastTempFiles); print_var($db,'FollowSymlinks', \$FollowSymlinks); print_var($db,'FROM', \$FROM); print_var($db,'GMTDateFmt', \$GMTDateFmt); print_var($db,'GzipExe', \$GzipExe); print_var($db,'GzipFiles', \$GzipFiles); print_var($db,'GzipLinks', \$GzipLinks); print_var($db,'HtmlExt', \$HtmlExt); print_var($db,'IconURLPrefix', \$IconURLPrefix); print_var($db,'IDXSIZE', \$IDXSIZE); print_var($db,'KeepOnRmm', \$KeepOnRmm); print_var($db,'Lang', \$Lang); print_var($db,'LocalDateFmt', \$LocalDateFmt); print_var($db,'MAILTOURL', \$MAILTOURL) unless $IsDefault{'MAILTOURL'}; print_var($db,'MAIN', \$MAIN); print_var($db,'MAXSIZE', \$MAXSIZE); print_var($db,'MHPATTERN', \$MHPATTERN); print_var($db,'MODTIME', \$MODTIME); print_var($db,'MSGFOOT', \$MSGFOOT); print_var($db,'MsgGMTDateFmt', \$MsgGMTDateFmt); print_var($db,'MSGHEAD', \$MSGHEAD); print_var($db,'MsgExcFilter', \$MsgExcFilter); print_var($db,'MsgLocalDateFmt',\$MsgLocalDateFmt); print_var($db,'MsgPrefix', \$MsgPrefix); print_var($db,'NewsUrl', \$NewsUrl) unless $IsDefault{'NEWSURL'}; print_var($db,'NOMAILTO', \$NOMAILTO); print_var($db,'NONEWS', \$NONEWS); print_var($db,'NOURL', \$NOURL); print_var($db,'NoMsgPgs', \$NoMsgPgs); print_var($db,'NoSubjectThreads', \$NoSubjectThreads); print_var($db,'NoSubjectTxt', \$NoSubjectTxt); print_var($db,'NoteDir', \$NoteDir); print_var($db,'POSIXstrftime', \$POSIXstrftime); print_var($db,'THREAD', \$THREAD); print_var($db,'SubArtRxp', \$SubArtRxp); print_var($db,'SubReplyRxp', \$SubReplyRxp); print_var($db,'SubStripCode', \$SubStripCode); print_var($db,'UseLocalTime', \$UseLocalTime); print_var($db,'UsingLASTPG', \$UsingLASTPG); print_var($db,'VarExp', \$VarExp); print_var($db,'MSGPGSSMARKUP', \$MSGPGSSMARKUP); print_var($db,'IDXPGSSMARKUP', \$IDXPGSSMARKUP); print_var($db,'TIDXPGSSMARKUP', \$TIDXPGSSMARKUP); print_var($db,'SSMARKUP', \$SSMARKUP); print_var($db,'SpamMode', \$SpamMode); if (!$IsDefault{'TEXTCLIPFUNC'}) { print_var($db,'TextClipFunc', \$TextClipFunc); print_var($db,'TextClipSrc', \$TextClipSrc); }; # Main index resources print_var($db,'AUTHSORT', \$AUTHSORT); print_var($db,'NOSORT', \$NOSORT); print_var($db,'REVSORT', \$REVSORT); print_var($db,'SUBSORT', \$SUBSORT); print_var($db,'AUTHBEG', \$AUTHBEG) unless $IsDefault{'AUTHBEG'}; print_var($db,'AUTHEND', \$AUTHEND) unless $IsDefault{'AUTHEND'}; print_var($db,'DAYBEG', \$DAYBEG) unless $IsDefault{'DAYBEG'}; print_var($db,'DAYEND', \$DAYEND) unless $IsDefault{'DAYEND'}; print_var($db,'IDXLABEL', \$IDXLABEL) unless $IsDefault{'IDXLABEL'}; print_var($db,'IDXNAME', \$IDXNAME); print_var($db,'IDXPGBEG', \$IDXPGBEG) unless $IsDefault{'IDXPGBEG'}; print_var($db,'IDXPGEND', \$IDXPGEND) unless $IsDefault{'IDXPGEND'}; print_var($db,'IDXPREFIX', \$IDXPREFIX); print_var($db,'LIBEG', \$LIBEG) unless $IsDefault{'LIBEG'}; print_var($db,'LIEND', \$LIEND) unless $IsDefault{'LIEND'}; print_var($db,'LITMPL', \$LITMPL) unless $IsDefault{'LITMPL'}; print_var($db,'FIRSTPGLINK', \$FIRSTPGLINK) unless $IsDefault{'FIRSTPGLINK'}; print_var($db,'LASTPGLINK', \$LASTPGLINK) unless $IsDefault{'LASTPGLINK'}; print_var($db,'NEXTPGLINK', \$NEXTPGLINK) unless $IsDefault{'NEXTPGLINK'}; print_var($db,'NEXTPGLINKIA', \$NEXTPGLINKIA) unless $IsDefault{'NEXTPGLINKIA'}; print_var($db,'PREVPGLINK', \$PREVPGLINK) unless $IsDefault{'PREVPGLINK'}; print_var($db,'PREVPGLINKIA', \$PREVPGLINKIA) unless $IsDefault{'PREVPGLINKIA'}; print_var($db,'SUBJECTBEG', \$SUBJECTBEG) unless $IsDefault{'SUBJECTBEG'}; print_var($db,'SUBJECTEND', \$SUBJECTEND) unless $IsDefault{'SUBJECTEND'}; print_var($db,'TITLE', \$TITLE); # Thread index resources print_var($db,'TNOSORT', \$TNOSORT); print_var($db,'TREVERSE', \$TREVERSE); print_var($db,'TSUBSORT', \$TSUBSORT); print_var($db,'TCONTBEG', \$TCONTBEG) unless $IsDefault{'TCONTBEG'}; print_var($db,'TCONTEND', \$TCONTEND) unless $IsDefault{'TCONTEND'}; print_var($db,'TFOOT', \$TFOOT) unless $IsDefault{'TFOOT'}; print_var($db,'THEAD', \$THEAD) unless $IsDefault{'THEAD'}; print_var($db,'TIDXLABEL', \$TIDXLABEL) unless $IsDefault{'TIDXLABEL'}; print_var($db,'TIDXNAME', \$TIDXNAME); print_var($db,'TIDXPGBEG', \$TIDXPGBEG) unless $IsDefault{'TIDXPGBEG'}; print_var($db,'TIDXPGEND', \$TIDXPGEND) unless $IsDefault{'TIDXPGEND'}; print_var($db,'TIDXPREFIX', \$TIDXPREFIX); print_var($db,'TINDENTBEG', \$TINDENTBEG) unless $IsDefault{'TINDENTBEG'}; print_var($db,'TINDENTEND', \$TINDENTEND) unless $IsDefault{'TINDENTEND'}; print_var($db,'TLEVELS', \$TLEVELS); print_var($db,'TLIEND', \$TLIEND) unless $IsDefault{'TLIEND'}; print_var($db,'TLINONE', \$TLINONE) unless $IsDefault{'TLINONE'}; print_var($db,'TLINONEEND', \$TLINONEEND) unless $IsDefault{'TLINONEEND'}; print_var($db,'TLITXT', \$TLITXT) unless $IsDefault{'TLITXT'}; print_var($db,'TFIRSTPGLINK', \$TFIRSTPGLINK) unless $IsDefault{'TFIRSTPGLINK'}; print_var($db,'TLASTPGLINK', \$TLASTPGLINK) unless $IsDefault{'TLASTPGLINK'}; print_var($db,'TNEXTPGLINK', \$TNEXTPGLINK) unless $IsDefault{'TNEXTPGLINK'}; print_var($db,'TNEXTPGLINKIA',\$TNEXTPGLINKIA) unless $IsDefault{'TNEXTPGLINKIA'}; print_var($db,'TPREVPGLINK', \$TPREVPGLINK) unless $IsDefault{'TPREVPGLINK'}; print_var($db,'TPREVPGLINKIA',\$TPREVPGLINKIA) unless $IsDefault{'TPREVPGLINKIA'}; print_var($db,'TSINGLETXT', \$TSINGLETXT) unless $IsDefault{'TSINGLETXT'}; print_var($db,'TSUBJECTBEG', \$TSUBJECTBEG) unless $IsDefault{'TSUBJECTBEG'}; print_var($db,'TSUBJECTEND', \$TSUBJECTEND) unless $IsDefault{'TSUBJECTEND'}; print_var($db,'TSUBLISTBEG', \$TSUBLISTBEG) unless $IsDefault{'TSUBLISTBEG'}; print_var($db,'TSUBLISTEND', \$TSUBLISTEND) unless $IsDefault{'TSUBLISTEND'}; print_var($db,'TTITLE', \$TTITLE); print_var($db,'TTOPBEG', \$TTOPBEG) unless $IsDefault{'TTOPBEG'}; print_var($db,'TTOPEND', \$TTOPEND) unless $IsDefault{'TTOPEND'}; print_var($db,'TSLICESINGLETXT', \$TSLICESINGLETXT) unless $IsDefault{'TSLICESINGLETXT'}; print_var($db,'TSLICETOPBEG', \$TSLICETOPBEG) unless $IsDefault{'TSLICETOPBEG'}; print_var($db,'TSLICETOPEND', \$TSLICETOPEND) unless $IsDefault{'TSLICETOPEND'}; print_var($db,'TSLICESUBLISTBEG', \$TSLICESUBLISTBEG) unless $IsDefault{'TSLICESUBLISTBEG'}; print_var($db,'TSLICESUBLISTEND', \$TSLICESUBLISTEND) unless $IsDefault{'TSLICESUBLISTEND'}; print_var($db,'TSLICELEVELS', \$TSLICELEVELS) unless $IsDefault{'TSLICELEVELS'}; print_var($db,'TSLICELITXT', \$TSLICELITXT) unless $IsDefault{'TSLICELITXT'}; print_var($db,'TSLICELIEND', \$TSLICELIEND) unless $IsDefault{'TSLICELIEND'}; print_var($db,'TSLICELINONE', \$TSLICELINONE) unless $IsDefault{'TSLICELINONE'}; print_var($db,'TSLICELINONEEND', \$TSLICELINONEEND) unless $IsDefault{'TSLICELINONEEND'}; print_var($db,'TSLICESUBJECTBEG', \$TSLICESUBJECTBEG) unless $IsDefault{'TSLICESUBJECTBEG'}; print_var($db,'TSLICESUBJECTEND', \$TSLICESUBJECTEND) unless $IsDefault{'TSLICESUBJECTEND'}; print_var($db,'TSLICEINDENTBEG', \$TSLICEINDENTBEG) unless $IsDefault{'TSLICEINDENTBEG'}; print_var($db,'TSLICEINDENTEND', \$TSLICEINDENTEND) unless $IsDefault{'TSLICEINDENTEND'}; print_var($db,'TSLICECONTBEG', \$TSLICECONTBEG) unless $IsDefault{'TSLICECONTBEG'}; print_var($db,'TSLICECONTEND', \$TSLICECONTEND) unless $IsDefault{'TSLICECONTEND'}; print_var($db,'TSLICESINGLETXTCUR', \$TSLICESINGLETXTCUR) unless $IsDefault{'TSLICESINGLETXTCUR'}; print_var($db,'TSLICETOPBEGCUR', \$TSLICETOPBEGCUR) unless $IsDefault{'TSLICETOPBEGCUR'}; print_var($db,'TSLICETOPENDCUR', \$TSLICETOPENDCUR) unless $IsDefault{'TSLICETOPENDCUR'}; print_var($db,'TSLICELITXTCUR', \$TSLICELITXTCUR) unless $IsDefault{'TSLICELITXTCUR'}; print_var($db,'TSLICELIENDCUR', \$TSLICELIENDCUR) unless $IsDefault{'TSLICELIENDCUR'}; ## Other resources print_var($db,'BOTLINKS', \$BOTLINKS) unless $IsDefault{'BOTLINKS'}; print_var($db,'FIELDSBEG', \$FIELDSBEG) unless $IsDefault{'FIELDSBEG'}; print_var($db,'FIELDSEND', \$FIELDSEND) unless $IsDefault{'FIELDSEND'}; print_var($db,'FLDBEG', \$FLDBEG) unless $IsDefault{'FLDBEG'}; print_var($db,'FLDEND', \$FLDEND) unless $IsDefault{'FLDEND'}; print_var($db,'FOLUPBEGIN', \$FOLUPBEGIN) unless $IsDefault{'FOLUPBEGIN'}; print_var($db,'FOLUPEND', \$FOLUPEND) unless $IsDefault{'FOLUPEND'}; print_var($db,'FOLUPLITXT', \$FOLUPLITXT) unless $IsDefault{'FOLUPLITXT'}; print_var($db,'HEADBODYSEP', \$HEADBODYSEP) unless $IsDefault{'HEADBODYSEP'}; print_var($db,'LABELBEG', \$LABELBEG) unless $IsDefault{'LABELBEG'}; print_var($db,'LABELEND', \$LABELEND) unless $IsDefault{'LABELEND'}; print_var($db,'MSGBODYEND', \$MSGBODYEND) unless $IsDefault{'MSGBODYEND'}; print_var($db,'MSGIDLINK', \$MSGIDLINK) unless $IsDefault{'MSGIDLINK'}; print_var($db,'MSGPGBEG', \$MSGPGBEG) unless $IsDefault{'MSGPGBEG'}; print_var($db,'MSGPGEND', \$MSGPGEND) unless $IsDefault{'MSGPGEND'}; print_var($db,'NEXTBUTTON', \$NEXTBUTTON) unless $IsDefault{'NEXTBUTTON'}; print_var($db,'NEXTBUTTONIA', \$NEXTBUTTONIA) unless $IsDefault{'NEXTBUTTONIA'}; print_var($db,'NEXTLINK', \$NEXTLINK) unless $IsDefault{'NEXTLINK'}; print_var($db,'NEXTLINKIA', \$NEXTLINKIA) unless $IsDefault{'NEXTLINKIA'}; print_var($db,'NOTE', \$NOTE) unless $IsDefault{'NOTE'}; print_var($db,'NOTEIA', \$NOTEIA) unless $IsDefault{'NOTEIA'}; print_var($db,'NOTEICON', \$NOTEICON) unless $IsDefault{'NOTEICON'}; print_var($db,'NOTEICONIA', \$NOTEICONIA) unless $IsDefault{'NOTEICONIA'}; print_var($db,'PREVBUTTON', \$PREVBUTTON) unless $IsDefault{'PREVBUTTON'}; print_var($db,'PREVBUTTONIA', \$PREVBUTTONIA) unless $IsDefault{'PREVBUTTONIA'}; print_var($db,'PREVLINK', \$PREVLINK) unless $IsDefault{'PREVLINK'}; print_var($db,'PREVLINKIA', \$PREVLINKIA) unless $IsDefault{'PREVLINKIA'}; print_var($db,'REFSBEGIN', \$REFSBEGIN) unless $IsDefault{'REFSBEGIN'}; print_var($db,'REFSEND', \$REFSEND) unless $IsDefault{'REFSEND'}; print_var($db,'REFSLITXT', \$REFSLITXT) unless $IsDefault{'REFSLITXT'}; print_var($db,'SUBJECTHEADER',\$SUBJECTHEADER) unless $IsDefault{'SUBJECTHEADER'}; print_var($db,'TNEXTBUTTON', \$TNEXTBUTTON) unless $IsDefault{'TNEXTBUTTON'}; print_var($db,'TNEXTBUTTONIA',\$TNEXTBUTTONIA) unless $IsDefault{'TNEXTBUTTONIA'}; print_var($db,'TNEXTINBUTTON', \$TNEXTINBUTTON) unless $IsDefault{'TNEXTINBUTTON'}; print_var($db,'TNEXTINBUTTONIA', \$TNEXTINBUTTONIA) unless $IsDefault{'TNEXTINBUTTONIA'}; print_var($db,'TNEXTINLINK', \$TNEXTINLINK) unless $IsDefault{'TNEXTINLINK'}; print_var($db,'TNEXTINLINKIA', \$TNEXTINLINKIA) unless $IsDefault{'TNEXTINLINKIA'}; print_var($db,'TNEXTLINK', \$TNEXTLINK) unless $IsDefault{'TNEXTLINK'}; print_var($db,'TNEXTLINKIA', \$TNEXTLINKIA) unless $IsDefault{'TNEXTLINKIA'}; print_var($db,'TOPLINKS', \$TOPLINKS) unless $IsDefault{'TOPLINKS'}; print_var($db,'TPREVBUTTON', \$TPREVBUTTON) unless $IsDefault{'TPREVBUTTON'}; print_var($db,'TPREVBUTTONIA',\$TPREVBUTTONIA) unless $IsDefault{'TPREVBUTTONIA'}; print_var($db,'TPREVINBUTTON', \$TPREVINBUTTON) unless $IsDefault{'TPREVINBUTTON'}; print_var($db,'TPREVINBUTTONIA', \$TPREVINBUTTONIA) unless $IsDefault{'TPREVINBUTTONIA'}; print_var($db,'TPREVINLINK', \$TPREVINLINK) unless $IsDefault{'TPREVINLINK'}; print_var($db,'TPREVINLINKIA', \$TPREVINLINKIA) unless $IsDefault{'TPREVINLINKIA'}; print_var($db,'TPREVLINK', \$TPREVLINK) unless $IsDefault{'TPREVLINK'}; print_var($db,'TPREVLINKIA', \$TPREVLINKIA) unless $IsDefault{'TPREVLINKIA'}; print_var($db,'TSLICEBEG', \$TSLICEBEG) unless $IsDefault{'TSLICEBEG'}; print_var($db,'TSLICEEND', \$TSLICEEND) unless $IsDefault{'TSLICEEND'}; print_var($db,'TTOPBUTTON', \$TTOPBUTTON) unless $IsDefault{'TTOPBUTTON'}; print_var($db,'TTOPBUTTONIA', \$TTOPBUTTONIA) unless $IsDefault{'TTOPBUTTONIA'}; print_var($db,'TENDBUTTON', \$TENDBUTTON) unless $IsDefault{'TENDBUTTON'}; print_var($db,'TENDBUTTONIA', \$TENDBUTTONIA) unless $IsDefault{'TENDBUTTONIA'}; print_var($db,'TTOPLINK', \$TTOPLINK) unless $IsDefault{'TTOPLINK'}; print_var($db,'TTOPLINKIA', \$TTOPLINKIA) unless $IsDefault{'TTOPLINKIA'}; print_var($db,'TENDLINK', \$TENDLINK) unless $IsDefault{'TENDLINK'}; print_var($db,'TENDLINKIA', \$TENDLINKIA) unless $IsDefault{'TENDLINKIA'}; print_var($db,'TNEXTTOPBUTTON', \$TNEXTTOPBUTTON) unless $IsDefault{'TNEXTTOPBUTTON'}; print_var($db,'TNEXTTOPBUTTONIA', \$TNEXTTOPBUTTONIA) unless $IsDefault{'TNEXTTOPBUTTONIA'}; print_var($db,'TNEXTTOPLINK', \$TNEXTTOPLINK) unless $IsDefault{'TNEXTTOPLINK'}; print_var($db,'TNEXTTOPLINKIA', \$TNEXTTOPLINKIA) unless $IsDefault{'TNEXTTOPLINKIA'}; print_var($db,'TPREVTOPBUTTON', \$TPREVTOPBUTTON) unless $IsDefault{'TPREVTOPBUTTON'}; print_var($db,'TPREVTOPBUTTONIA', \$TPREVTOPBUTTONIA) unless $IsDefault{'TPREVTOPBUTTONIA'}; print_var($db,'TPREVTOPLINK', \$TPREVTOPLINK) unless $IsDefault{'TPREVTOPLINK'}; print_var($db,'TPREVTOPLINKIA', \$TPREVTOPLINKIA) unless $IsDefault{'TPREVTOPLINKIA'}; print_var($db,'DbFilePerms', \$DbFilePerms); print_var($db,'FilePerms', \$FilePerms); print_var($db,'TSliceNBefore', \$TSliceNBefore); print_var($db,'TSliceNAfter', \$TSliceNAfter); print_var($db,'TSliceInclusive', \$TSliceInclusive); print_var($db,'UMASK', \$UMASK); } ## Invoke save callback if (defined($CBDbSave) && defined(&$CBDbSave)) { &$CBDbSave($db); } ## Make sure file ends with a true value print $db "1;\n"; close($db); if (!rename($tmpfile, $pathname)) { warn qq/ERROR: Unable to rename "$tmpfile" to "$pathname": $!\n/; return 0; } file_chmod($pathname, $DbFilePermsOct); 1; } ##--------------------------------------------------------------------------- sub escape_str { my($str) = $_[0]; $str =~ s/(['\\])/\\$1/g; $str; } ##--------------------------------------------------------------------------- sub print_var { my($fh, $name, $ref, $d) = @_; if (ref($ref) eq 'SCALAR') { if (defined($$ref)) { print $fh qq/\$$name='/, escape_str($$ref), qq/'/; } else { print $fh '$',$name, '=undef'; } print $fh qq/ unless defined(\$$name)/ if $d; print $fh qq/;\n/; return; } if (ref($ref) eq 'HASH') { my($key, $value, $sep); if (defined($name)) { print $fh "%$name=(\n"; $sep = "\n"; } else { print $fh '{'; $sep = ""; } while (($key, $value) = each(%$ref)) { print $fh qq/'/, escape_str($key), qq/',/; if (ref($value)) { print_var($fh, undef, $value, 0); print $fh ",\n"; next; } if (defined($value)) { print $fh qq/'/, escape_str($value), qq/',/, $sep; } else { print $fh 'undef,', $sep; } } if (defined($name)) { print $fh ");\n"; } else { print $fh '}'; } return; } if (ref($ref) eq 'ARRAY') { local $_; my $sep; if (defined($name)) { print $fh "\@$name=(\n"; $sep = "\n"; } else { print $fh '['; $sep = ""; } foreach (@$ref) { if (ref($_)) { print_var($fh, undef, $_, 0); print $fh ",\n"; next; } if (defined($_)) { print $fh qq/'/, escape_str($_), qq/',/, $sep; } else { print $fh 'undef,', $sep; } } if (defined($name)) { print $fh ");\n"; } else { print $fh ']'; } return; } print $fh qq/\$$name='/, escape_str($ref), qq/'/; print $fh qq/ unless defined(\$$name)/ if $d; print $fh qq/;\n/; } ##---------------------------------------------------------------------------## 1; MHonArc-2.6.18/lib/mhtime.pl0000644004705000001440000002424007351420077014514 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-2.6.18/lib/mhnote.pl0000644004705000001440000000661507351420162014524 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhnote.pl,v 1.3 2001/09/17 16:10:26 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Annotation routine 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; ##--------------------------------------------------------------------------- ## Function for annotating messages. ## sub annotate { my $notetxt = pop(@_); # last arg is note data my(@numbers) = (); my($key, %Num2Index, $num, $i, $pg, $file); local($_); ## Create list of messages to annotate foreach (@_) { # range if (/^(\d+)-(\d+)$/) { push(@numbers, $1 .. $2); # range op removes leading zeros next; } # single number if (/^\d+$/) { push(@numbers, int($_)); # int() removes leading zeros next; } # probably message-id push(@numbers, $_); } if ($#numbers < 0) { warn("Warning: No messages specified\n"); return 0; } ## Make hash to perform deletions foreach $key (keys %IndexNum) { $Num2Index{$IndexNum{$key}} = $key; } ## Define %Index2MLoc for determining min main index page update $i=0; foreach $key (sort_messages()) { $Index2MLoc{$key} = $i++; } ## Make sure notes directory exists my $notedir = get_note_dir(); if (! -d $notedir and !mkdir($notedir, 0777)) { warn qq/Warning: Unable to create "$notedir": $!\n/; return 0; } ## Annotate messages foreach $num (@numbers) { if ($key = $Num2Index{$num} || $MsgId{$num}) { ## write note to file $file = join($DIRSEP, $notedir, msgid_to_filename($Index2MsgId{$key})); if (!open(NOTEFILE, ">$file")) { warn qq/Warning: Unable to create "$file": $!\n/; next; } print NOTEFILE $notetxt; close NOTEFILE; ## flag message to be updated $Update{$IndexNum{$key}} = 1; ## mark where index page updates start if ($MULTIIDX) { $pg = int($Index2MLoc{$key}/$IDXSIZE)+1; $IdxMinPg = $pg if ($pg < $IdxMinPg || $IdxMinPg < 0); $pg = int($Index2TLoc{$key}/$IDXSIZE)+1; $TIdxMinPg = $pg if ($pg < $TIdxMinPg || $TIdxMinPg < 0); } next; } # message not in archive warn qq/Warning: Message "$num" not in archive\n/; } ## Clear data that will get recomputed %Index2MLoc = (); write_pages(); 1; } ##---------------------------------------------------------------------------## 1; MHonArc-2.6.18/lib/mhdysub.pl0000644004705000001440000001364711177375157014726 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhdysub.pl,v 2.12 2009/05/03 20:11:27 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Definition of create_routines() that creates routines are ## runtime. ##---------------------------------------------------------------------------## ## 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., 675 Mass Ave, Cambridge, MA 02139, USA. ##---------------------------------------------------------------------------## package mhonarc; my $_sub_eval_cnt = 0; ##--------------------------------------------------------------------------- ## create_routines is used to dynamically create routines that ## would benefit from being create at run-time. Routines ## that have to check against several regular expressions ## are candidates. ## ## NOTE: Subroutine references would be cleaner, but code ## pre-dates Perl 5 where references were not supported. ## sub create_routines { my($sub) = ''; ##----------------------------------------------------------------------- ## exclude_field: Used to determine if field should be excluded from ## message header ## $sub =<<'EndOfRoutine'; sub exclude_field { my($f) = shift; my $ret = 0; EXC_FIELD_SW: { EndOfRoutine # Create switch block for checking field against regular # expressions (a large || statement could also work). my $pat; foreach $pat (keys %HFieldsExc) { $sub .= join('', 'if ($f =~ /^', $pat, '/i) { $ret = 1; last EXC_FIELD_SW; }', "\n"); } $sub .=<<'EndOfRoutine'; }; $ret; } EndOfRoutine $sub .= "# $_sub_eval_cnt\n"; ++$_sub_eval_cnt; eval $sub; die("ERROR: Unable to create exclude_field routine:\n$@\n") if $@; ##----------------------------------------------------------------------- ## subject_strip: Used to apply user-defined s/// operations on ## message subjects as they are read; ## $sub =<= 0) { return $LastMsgNum if ( -s $OUTDIR . $DIRSEP . msgnum_filename($LastMsgNum)) && ((! -f $OUTDIR . $DIRSEP . msgnum_filename($LastMsgNum + 1)) ); } my $msgrex = '^'. "\Q$MsgPrefix". '(\d+)\.'. "\Q$HtmlExt". '$'; chop $msgrex if ($HtmlExt =~ /html$/i); foreach (readdir(DIR)) { if (/$msgrex/io) { $max = int($1) if $1 > $max; } } closedir(DIR); $LastMsgNum = $max; $max; } EndOfRoutine $sub .= "# $_sub_eval_cnt\n"; ++$_sub_eval_cnt; eval $sub; die("ERROR: Unable to create get_last_msg_num routine:\n$@\n") if $@; ##----------------------------------------------------------------------- ## Routine to get base subject text from index ## $sub =<<'EndOfRoutine'; sub get_base_subject { my($ret) = ($Subject{$_[0]}); 1 while $ret =~ s/$SubReplyRxp//io; if ($ret eq "") { return $NoSubjectTxt; } $ret; } EndOfRoutine $sub .= "# $_sub_eval_cnt\n"; ++$_sub_eval_cnt; eval $sub; die("ERROR: Unable to create get_base_subject routine:\n$@\n") if $@; ##----------------------------------------------------------------------- ## Routine to rewrite mail addresses in message header ## $sub =<)) { next unless $line =~ /^\s*<([^>]+)>/; $attr = ''; ($elem, $attr) = split(' ', $1, 2); $attr = '' unless defined($attr); $elem =~ tr/A-Z/a-z/; $override = ($attr =~ /override/i); $chop = ($attr =~ /chop/i); FMTSW: { if ($elem eq 'addressmodifycode') { # Code to strip subjects $AddressModify = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'attachmentdir') { # Attachments directory if ($line = &get_elem_last_line($handle, $elem)) { $AttachmentDir = $line; } last FMTSW; } if ($elem eq 'attachmenturl') { # Attachments URL if ($line = &get_elem_last_line($handle, $elem)) { $AttachmentUrl = $line; } last FMTSW; } if ($elem eq 'authorbegin' || $elem eq 'authorbeg') { # Begin for author group $AUTHBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'authorend') { # End for author group $AUTHEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'authsort') { # Sort msgs by author $AUTHSORT = 1; $NOSORT = 0; $SUBSORT = 0; last FMTSW; } if ($elem eq 'botlinks') { # Bottom links in message $BOTLINKS = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'charsetaliases') { # Charset aliases $IsDefault{'CHARSETALIASES'} = 0; readmail::MAILset_charset_aliases({ }, $override); while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/charsetaliases\s*>/i; next unless $line =~ /\S/; $line =~ s/\s//g; ($name, $aliases) = split(/;/, $line, 2); readmail::MAILset_charset_aliases({ $name => [ split(/,/, $aliases) ] }); } last FMTSW; } if ($elem eq 'charsetconverters') { # Charset filters $IsDefault{'CHARSETCONVERTERS'} = 0; if ($override) { %readmail::MIMECharSetConverters = (); %readmail::MIMECharSetConvertersSrc = (); } while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/charsetconverters\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; ($type,$routine,$plfile) = split(/;/,$line,3); $type = lc($type); $readmail::MIMECharSetConverters{$type} = $routine; $readmail::MIMECharSetConvertersSrc{$type} = $plfile if defined($plfile) and $plfile =~ /\S/; } last FMTSW; } if ($elem eq 'checknoarchive') { $CheckNoArchive = 1; last FMTSW; } if ($elem eq 'conlen') { $CONLEN = 1; last FMTSW; } if ($elem eq 'datefields') { @a = &get_list_content($handle, $elem); if (@a) { @DateFields = @a; } last FMTSW; } if ($elem eq 'daybegin' || $elem eq 'daybeg') { # Begin for day group $DAYBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'dayend') { # End for day group $DAYEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'dbfileperms') { # DBFILE creation permissions if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $DbFilePerms = $line; } last FMTSW; } if ($elem eq 'decodeheads') { $DecodeHeads = 1; last FMTSW; } if ($elem eq 'definederived') { # Custom derived file %UDerivedFile = () if $override; $line = <$handle>; last FMTSW if $line =~ /^\s*<\/definederived\s*>/i; $line =~ s/\s//g; $UDerivedFile{$line} = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'definevar') { # Custom resource variable %CustomRcVars = () if $override; $line = <$handle>; last FMTSW if $line =~ /^\s*<\/definevar\s*>/i; $line =~ s/\s//g; $CustomRcVars{$line} = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'doc') { # Link to documentation $NODOC = 0; last FMTSW; } if ($elem eq 'docurl') { # Doc URL if ($line = &get_elem_last_line($handle, $elem)) { $DOCURL = $line; } last FMTSW; } if ($elem eq 'excs') { # Exclude header fields %HFieldsExc = () if $override; while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/excs\s*>/i; next unless $line =~ /\S/; $line =~ s/\s//g; $line =~ tr/A-Z/a-z/; $HFieldsExc{$line} = 1 if $line; } last FMTSW; } if ($elem eq 'expireage') { # Time in seconds until expire if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') { $ExpireTime = $tmp; } last FMTSW; } if ($elem eq 'expiredate') { # Expiration date if ($line = &get_elem_last_line($handle, $elem)) { $ExpireDate = $line; } last FMTSW; } if ($elem eq 'fasttempfiles') { # Non-random temp files $FastTempFiles = 1; last FMTSW; } if ($elem eq 'followsymlinks') { # Allow/follow symlinks $FollowSymlinks = 1; last FMTSW; } if ($elem eq 'fieldstore') { # Fields to store @ExtraHFields = () if $override; while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/fieldstore\s*>/i; next unless $line =~ /\S/; $line =~ s/\s+//g; $line =~ tr/A-Z/a-z/; push(@ExtraHFields, $line); } last FMTSW; } if ($elem eq 'fieldstyles') { # Field text style while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/fieldstyles\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; $line =~ tr/A-Z/a-z/; ($label, $tag) = split(/:/,$line); $HeadFields{$label} = $tag; } last FMTSW; } if ($elem eq 'fieldorder') { # Field order @FieldOrder = (); %FieldODefs = (); while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/fieldorder\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; $line =~ tr/A-Z/a-z/; push(@FieldOrder, $line); $FieldODefs{$line} = 1; } # push(@FieldOrder,'-extra-') if (!$FieldODefs{'-extra-'}); last FMTSW; } if ($elem eq 'fieldsbeg' || $elem eq 'fieldsbegin') { # Begin markup of mail head $FIELDSBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'fieldsend') { # End markup of mail head $FIELDSEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'fileperms') { # File creation permissions if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $FilePerms = $line; } last FMTSW; } if ($elem eq 'firstpglink') { # First page link in index $FIRSTPGLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'fldbeg' || $elem eq 'fldbegin') { # Begin markup of field text $FLDBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'fldend') { # End markup of field text $FLDEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'folrefs') { # Print explicit fol/refs $DoFolRefs = 1; last FMTSW; } if ($elem eq 'folupbegin' || $elem eq 'folupbeg') { # Begin markup for follow-ups $FOLUPBEGIN = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'folupend') { # End markup for follow-ups $FOLUPEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'foluplitxt') { # Follow-up link markup $FOLUPLITXT = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'fromfields') { # Fields to get author @a = &get_list_content($handle, $elem); if (@a) { @FromFields = @a; } last FMTSW; } if ($elem eq 'gmtdatefmt') { # GMT date format if ($line = &get_elem_last_line($handle, $elem)) { $GMTDateFmt = $line; } last FMTSW; } if ($elem eq 'gzipexe') { # Gzip executable if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s+$//g; $GzipExe = $line; } last FMTSW; } if ($elem eq 'gzipfiles') { $GzipFiles = 1; last FMTSW; } if ($elem eq 'gziplinks') { $GzipLinks = 1; last FMTSW; } if ($elem eq 'headbodysep') { $HEADBODYSEP = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'htmlext') { # Extension for HTML files if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $HtmlExt = $line; } last FMTSW; } if ($elem eq 'icons') { # Icons %Icons = () if $override; while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/icons\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; ($type, $url) = split(/[;:]/,$line,2); $type =~ tr/A-Z/a-z/; $Icons{$type} = $url; } last FMTSW; } if ($elem eq 'iconurlprefix') { # Prefix for ICON urls if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s+//g; $IconURLPrefix = $line; } last FMTSW; } if ($elem eq 'idxfname') { # Index filename if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $IDXNAME = $line; } last FMTSW; } if ($elem eq 'idxlabel') { # Index label $IDXLABEL = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'idxpgbegin' || $elem eq 'idxpgbeg') { # Opening markup of index $IDXPGBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'idxpgend') { # Closing markup of index $IDXPGEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'idxprefix') { # Prefix for main idx pages if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $IDXPREFIX = $line; } last FMTSW; } if ($elem eq 'idxsize') { # Size of index if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') { $IDXSIZE = $tmp; } last FMTSW; } if ($elem eq 'include') { # Include other rc files while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/include\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s+$//; $line = $pathhead . $line if ($line !~ /$DIRSEPREX/o); &read_resource_file($line); } last FMTSW; } if ($elem eq 'keeponrmm') { # Keep files on rmm $KeepOnRmm = 1; last FMTSW; } if ($elem eq 'lang') { # Locale/language $Lang = &get_elem_last_line($handle, $elem); $Lang =~ s/\s+//g; last FMTSW; } if ($elem eq 'labelbeg' || $elem eq 'labelbegin') { # Begin markup of label $LABELBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'labelend') { # End markup of label $LABELEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'labelstyles') { # Field label style while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/labelstyles\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; $line =~ tr/A-Z/a-z/; ($label, $tag) = split(/:/,$line); $HeadHeads{$label} = $tag; } last FMTSW; } if ($elem eq 'lastpglink') { # Last page link in index $LASTPGLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'listbegin' || $elem eq 'listbeg') { # List begin $LIBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'listend') { # List end $LIEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'litemplate') { # List item template $LITMPL = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'localdatefmt') { # Local date format if ($line = &get_elem_last_line($handle, $elem)) { $LocalDateFmt = $line; } last FMTSW; } if ($elem eq 'lockmethod') { # Locking method if ($line = &get_elem_last_line($handle, $elem)) { $LockMethod = &set_lock_mode($line); } last FMTSW; } if ($elem eq 'mailto') { # Convert e-mail addrs $NOMAILTO = 0; last FMTSW; } if ($elem eq 'mailtourl') { # mailto URL while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mailtourl\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; $MAILTOURL = $line; } last FMTSW; } if ($elem eq 'main') { # Print main index $MAIN = 1; last FMTSW; } if ($elem eq 'maxpgs') { # Max number of index pages if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') { $MAXPGS = $tmp; } last FMTSW; } if ($elem eq 'maxsize') { # Size of archive if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') { $MAXSIZE = $tmp; } last FMTSW; } if ($elem eq 'msgbodyend') { # Markup after message body $MSGBODYEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'msgexcfilter') { # Code selectively exclude msgs $MsgExcFilter = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'msgpgs') { # Output message pages $NoMsgPgs = 0; last FMTSW; } if ($elem eq 'msgprefix') { # Prefix for message files if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $MsgPrefix = $line; } last FMTSW; } if ($elem eq 'mhpattern') { # File pattern MH-like dirs if ($line = &get_elem_last_line($handle, $elem)) { $MHPATTERN = $line; } last FMTSW; } if ($elem eq 'mimealtprefs') { # Mime alternative prefs $IsDefault{'MIMEALTPREFS'} = 0; @MIMEAltPrefs = (); while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mimealtprefs\s*>/i; $line =~ s/\s//g; push(@MIMEAltPrefs, lc($line)) if $line; } last FMTSW; } if ($elem eq 'mimedecoders') { # Mime decoders $IsDefault{'MIMEDECODERS'} = 0; if ($override) { %readmail::MIMEDecoders = (); %readmail::MIMEDecodersSrc = (); } while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mimedecoders\s*>/i; next unless $line =~ /\S/; $line =~ s/\s//g; ($type,$routine,$plfile) = split(/;/,$line,3); $type =~ tr/A-Z/a-z/; $readmail::MIMEDecoders{$type} = $routine; $readmail::MIMEDecodersSrc{$type} = $plfile if $plfile =~ /\S/; } last FMTSW; } if ($elem eq 'mimefilters') { # Mime filters $IsDefault{'MIMEFILTERS'} = 0; if ($override) { %readmail::MIMEFilters = (); %readmail::MIMEFiltersSrc = (); } while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mimefilters\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; ($type,$routine,$plfile) = split(/;/,$line,3); $type =~ tr/A-Z/a-z/; $readmail::MIMEFilters{$type} = $routine; $readmail::MIMEFiltersSrc{$type} = $plfile if $plfile =~ /\S/; } last FMTSW; } if ($elem eq 'mimeargs') { # Mime arguments $IsDefault{'MIMEARGS'} = 0; %readmail::MIMEFiltersArgs = () if $override; while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mimeargs\s*>/i; next unless $line =~ /\S/; $line =~ s/^\s+//; if ($line =~ /;/) { ($type, $arg) = split(/;/,$line,2); } else { ($type, $arg) = split(/:/,$line,2); } $type =~ tr/A-Z/a-z/ if $type =~ m%/%; $readmail::MIMEFiltersArgs{$type} = $arg; } last FMTSW; } if ($elem eq 'mimeexcs') { # Mime exclusions $IsDefault{'MIMEEXCS'} = 0; %readmail::MIMEExcs = () if $override; while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mimeexcs\s*>/i; $line =~ s/\s//g; $line =~ tr/A-Z/a-z/; $readmail::MIMEExcs{$line} = 1 if $line; } last FMTSW; } if ($elem eq 'mimeincs') { # Mime includes $IsDefault{'MIMEINCS'} = 0; %readmail::MIMEIncs = () if $override; while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mimeincs\s*>/i; $line =~ s/\s//g; $line =~ tr/A-Z/a-z/; $readmail::MIMEIncs{$line} = 1 if $line; } last FMTSW; } if ($elem eq 'modifybodyaddresses') { # Modify addresses in bodies $AddrModifyBodies = 1; last FMTSW; } if ($elem eq 'months') { # Full month names @a = &get_list_content($handle, $elem); if (scalar(@a)) { @Months = @a; } last FMTSW; } if ($elem eq 'monthsabr') { # Abbreviated month names @a = &get_list_content($handle, $elem); if (scalar(@a)) { @months = @a; } last FMTSW; } if ($elem eq 'modtime') { # Mod time same as msg date $MODTIME = 1; last FMTSW; } if ($elem eq 'msgfoot') { # Message footer text $MSGFOOT = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'msggmtdatefmt') { # Message GMT date format if ($line = &get_elem_last_line($handle, $elem)) { $MsgGMTDateFmt = $line; } last FMTSW; } if ($elem eq 'msghead') { # Message header text $MSGHEAD = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'msgidlink') { $MSGIDLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'msglocaldatefmt') { # Message local date format if ($line = &get_elem_last_line($handle, $elem)) { $MsgLocalDateFmt = $line; } last FMTSW; } if ($elem eq 'msgpgbegin' || $elem eq 'msgpgbeg') { # Opening markup of message $MSGPGBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'msgpgend') { # Closing markup of message $MSGPGEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'msgsep') { # Message separator if ($line = &get_elem_last_line($handle, $elem)) { $FROM = $line; } last FMTSW; } if ($elem eq 'multipg') { # Print multi-page indexes $MULTIIDX = 1; last FMTSW; } if ($elem eq 'newsurl') { # News URL while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/newsurl\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; $NewsUrl = $line; } last FMTSW; } if ($elem eq 'nextbutton') { # Next button link in message $NEXTBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'nextbuttonia') { $NEXTBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'nextlink') { # Next link in message $NEXTLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'nextlinkia') { $NEXTLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'nextpglink') { # Next page link in index $NEXTPGLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'nextpglinkia') { $NEXTPGLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'news') { # News for linking $NONEWS = 0; last FMTSW; } if ($elem eq 'noauthsort') { # Do not sort msgs by author $AUTHSORT = 0; last FMTSW; } if ($elem eq 'nochecknoarchive') { $CheckNoArchive = 0; last FMTSW; } if ($elem eq 'noconlen') { # Ignore content-length $CONLEN = 0; last FMTSW; } if ($elem eq 'nodecodeheads') { # Don't decode charsets $DecodeHeads = 0; last FMTSW; } if ($elem eq 'nodoc') { # Do not link to docs $NODOC = 1; last FMTSW; } if ($elem eq 'nofasttempfiles') { # Random temp files $FastTempFiles = 0; last FMTSW; } if ($elem eq 'nofollowsymlinks') { # Do not allow/follow symlinks $FollowSymlinks = 0; last FMTSW; } if ($elem eq 'nofolrefs') { # Don't print explicit fol/refs $DoFolRefs = 0; last FMTSW; } if ($elem eq 'nomodifybodyaddresses') { # Don't modify addresses $AddrModifyBodies = 0; last FMTSW; } if ($elem eq 'nogzipfiles') { # Don't gzip files $GzipFiles = 0; last FMTSW; } if ($elem eq 'nogziplinks') { # Don't add ".gz" to links $GzipLinks = 0; last FMTSW; } if ($elem eq 'nokeeponrmm') { # Remove files on rmm $KeepOnRmm = 0; last FMTSW; } if ($elem eq 'nomailto') { # Do not convert e-mail addrs $NOMAILTO = 1; last FMTSW; } if ($elem eq 'nomain') { # No main index $MAIN = 0; last FMTSW; } if ($elem eq 'nomodtime') { # Do not change mod times $MODTIME = 0; last FMTSW; } if ($elem eq 'nomsgpgs') { # Do not print message pages $NoMsgPgs = 1; last FMTSW; } if ($elem eq 'nomultipg') { # Single page index $MULTIIDX = 0; last FMTSW; } if ($elem eq 'nonews') { # Ignore news for linking $NONEWS = 1; last FMTSW; } if ($elem eq 'noposixstrftime') { # Do not use POSIX::strftime() $POSIXstrftime = 0; last FMTSW; } if ($elem eq 'noreverse') { # Sort in normal order $REVSORT = 0; last FMTSW; } if ($elem eq 'nosaveresources') { # Do not save resources $SaveRsrcs = 0; last FMTSW; } if ($elem eq 'nosort') { # Do not sort messages $NOSORT = 1; last FMTSW; } if ($elem eq 'nospammode') { # Do not do anti-spam stuff $SpamMode = 0; last FMTSW; } if ($elem eq 'nosubjectthreads') { # No check subjects for threads $NoSubjectThreads = 1; last FMTSW; } if ($elem eq 'nosubjecttxt') { # Text to use if no subject $NoSubjectTxt = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'nosubsort') { # Do not sort msgs by subject $SUBSORT = 0; last FMTSW; } if ($elem eq 'note') { # Annotation markup $NOTE = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'notedir') { # Notes directory if ($line = &get_elem_last_line($handle, $elem)) { $NoteDir = $line; } last FMTSW; } if ($elem eq 'noteia') { # No Annotation markup $NOTEIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'noteicon') { # Note icon $NOTEICON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'noteiconia') { # Note icon when no annotation $NOTEICONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'nothread') { # No thread index $THREAD = 0; last FMTSW; } if ($elem eq 'notreverse') { # Thread sort in normal order $TREVERSE = 0; last FMTSW; } if ($elem eq 'notsubsort' || $elem eq 'tnosubsort') { # No subject order for threads $TSUBSORT = 0; last FMTSW; } if ($elem eq 'notsort' || $elem eq 'tnosort') { # Raw order for threads $TNOSORT = 1; $TSUBSORT = 0; last FMTSW; } if ($elem eq 'nourl') { # Ignore URLs $NOURL = 1; last FMTSW; } if ($elem eq 'nouselocaltime') { # Not using localtime $UseLocalTime = 0; last FMTSW; } if ($elem eq 'nousinglastpg') { # Not using $LASTPG$ $UsingLASTPG = 0; last FMTSW; } if ($elem eq 'otherindexes') { # Other indexes @OtherIdxs = () if $override; unshift(@OtherIdxs, &get_pathname_content($handle, $elem)); last FMTSW; } if ($elem eq 'perlinc') { # Define perl search paths @PerlINC = () if $override; unshift(@PerlINC, &get_pathname_content($handle, $elem)); last FMTSW; } if ($elem eq 'posixstrftime') { # Use POSIX::strftime() $POSIXstrftime = 1; last FMTSW; } if ($elem eq 'prevbutton') { # Prev button link in message $PREVBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'prevbuttonia') { # Prev i/a button link $PREVBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'prevlink') { # Prev link in message $PREVLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'prevlinkia') { # Prev i/a link $PREVLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'prevpglink') { # Prev page link for index $PREVPGLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'prevpglinkia') { $PREVPGLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'printxcomments') { # Print info X- comments $PrintXComments = 1; last FMTSW; } if ($elem eq 'noprintxcomments') { # Don't print info X- comments $PrintXComments = 0; last FMTSW; } if ($elem eq 'refsbegin' || $elem eq 'refsbeg') { # Explicit ref links begin $REFSBEGIN = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'refsend') { # Explicit ref links end $REFSEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'refslitxt') { # Explicit ref link $REFSLITXT = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'reverse') { # Reverse sort $REVSORT = 1; last FMTSW; } if ($elem eq 'saveresources') { # Save resources in db $SaveRsrcs = 1; last FMTSW; } if ($elem eq 'sort') { # Sort messages by date $NOSORT = 0; $AUTHSORT = 0; $SUBSORT = 0; last FMTSW; } if ($elem eq 'spammode') { # Obfsucate/hide addresses $SpamMode = 1; last FMTSW; } if ($elem eq 'ssmarkup') { # Initial page markup $SSMARKUP = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'msgpgssmarkup') { # Initial message page markup $MSGPGSSMARKUP = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'idxpgssmarkup') { # Initial index page markup $IDXPGSSMARKUP = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tidxpgssmarkup') { # Initial thread idx page markup $TIDXPGSSMARKUP = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'subjectarticlerxp') { # Regex for language articles if ($line = &get_elem_last_line($handle, $elem)) { $SubArtRxp = $line; } last FMTSW; } if ($elem eq 'subjectreplyrxp') { # Regex for reply text if ($line = &get_elem_last_line($handle, $elem)) { $SubReplyRxp = $line; } last FMTSW; } if ($elem eq 'subjectstripcode') { # Code to strip subjects $SubStripCode = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'subjectthreads') { # Check subjects for threads $NoSubjectThreads = 0; last FMTSW; } if ($elem eq 'subsort') { # Sort messages by subject $SUBSORT = 1; $AUTHSORT = 0; $NOSORT = 0; last FMTSW; } if ($elem eq 'subjectbegin' || $elem eq 'subjectbeg') { # Begin for subject group $SUBJECTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'subjectend') { # End for subject group $SUBJECTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'subjectheader') { $SUBJECTHEADER = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tcontbegin' || $elem eq 'tcontbeg') { # Thread cont. start $TCONTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tcontend') { # Thread cont. end $TCONTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'textclipfunc') { # Text clipping function $TextClipFunc = undef; $TextClipSrc = undef; while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/textclipfunc\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; ($TextClipFunc,$TextClipSrc) = split(/;/,$line,2); } } if ($elem eq 'defcharset') { # Default charset $readmail::TextDefCharset = lc get_elem_last_line($handle, $elem); $readmail::TextDefCharset =~ s/\s//g; $readmail::TextDefCharset = 'us-ascii' if $readmail::TextDefCharset eq ''; } if ($elem eq 'tendbutton') { # End of thread button $TENDBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tendbuttonia') { $TENDBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tendlink') { # End of thread link $TENDLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tendlinkia') { $TENDLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'textencode') { # Text encoder $readmail::TextEncode = undef; $readmail::TextEncoderFunc = undef; $readmail::TextEncoderSrc = undef; while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/textencode\s*>/i; next unless $line =~ /\S/; ($type,$routine,$plfile) = split(/;/,$line,3); $type =~ s/\s//g; $routine =~ s/\s//g; $plfile =~ s/^\s+//; $plfile =~ s/\s+\z//g; $readmail::TextEncode = lc $type; $readmail::TextEncoderFunc = $routine; $readmail::TextEncoderSrc = $plfile if defined($plfile) and $plfile =~ /\S/; $IsDefault{'TEXTENCODE'} = 0; } last FMTSW; } if ($elem eq 'tfirstpglink') { # First thread page link $TFIRSTPGLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tfoot') { # Thread idx foot $TFOOT = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'thead') { # Thread idx head $THEAD = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tidxfname') { # Threaded idx filename if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $TIDXNAME = $line; } last FMTSW; } if ($elem eq 'tidxlabel') { # Thread index label $TIDXLABEL = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tidxpgbegin' || $elem eq 'tidxpgbeg') { # Opening markup of thread idx $TIDXPGBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tidxpgend') { # Closing markup of thread idx $TIDXPGEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tidxprefix') { # Prefix for thread idx pages if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $TIDXPREFIX = $line; } last FMTSW; } if ($elem eq 'timezones') { # Time zones if ($override) { %ZoneUD = (); } while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/timezones\s*>/i; $line =~ s/\s//g; $line =~ tr/a-z/A-Z/; ($acro,$hr) = split(/:/,$line); $acro =~ tr/a-z/A-Z/; $ZoneUD{$acro} = $hr; } last FMTSW; } if ($elem eq 'tindentbegin' || $elem eq 'tindentbeg') { # Thread indent start $TINDENTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tindentend') { # Thread indent end $TINDENTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'title') { # Title of index page $TITLE = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tlastpglink') { # Last thread page link $TLASTPGLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tlevels') { # Level of threading if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') { $TLEVELS = $tmp; } last FMTSW; } if ($elem eq 'tlinone') { # Markup for missing message $TLINONE = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tlinoneend') { # End markup for missing msg $TLINONEEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tlitxt') { # Thread idx list item $TLITXT = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tliend') { # Thread idx list item end $TLIEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'toplinks') { # Top links in message $TOPLINKS = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslice') { ($TSliceNBefore, $TSliceNAfter, $TSliceInclusive) = &get_list_content($handle, $elem); last FMTSW; } if ($elem eq 'tslicebeg' || $elem eq 'tslicebegin') { # Start of thread slice $TSLICEBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsliceend') { # End of thread slice $TSLICEEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicelevels') { # Level of slice threading if (($tmp = &get_elem_int($handle, $elem, 1)) ne '') { $TSLICELEVELS = $tmp; } last FMTSW; } if ($elem eq 'tslicesingletxt') { $TSLICESINGLETXT = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicetopbegin' || $elem eq 'tslicetopbeg') { $TSLICETOPBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicetopend') { $TSLICETOPEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicesublistbeg' || $elem eq 'tslicesublistbegin') { $TSLICESUBLISTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicesublistend') { $TSLICESUBLISTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicelitxt') { $TSLICELITXT = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsliceliend') { $TSLICELIEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicelinone') { $TSLICELINONE = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicelinoneend') { $TSLICELINONEEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicesubjectbeg' || $elem eq 'tslicesubjectbegin') { $TSLICESUBJECTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicesubjectend') { $TSLICESUBJECTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsliceindentbegin' || $elem eq 'tsliceindentbeg') { $TSLICEINDENTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsliceindentend') { $TSLICEINDENTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicecontbegin' || $elem eq 'tslicecontbeg') { $TSLICECONTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicecontend') { $TSLICECONTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicesingletxtcur') { $TSLICESINGLETXTCUR = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicetopbegincur' || $elem eq 'tslicetopbegcur') { $TSLICETOPBEGCUR = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicetopendcur') { $TSLICETOPENDCUR = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tslicelitxtcur') { $TSLICELITXTCUR = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsliceliendcur') { $TSLICELIENDCUR = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsort') { # Date order for threads $TNOSORT = 0; $TSUBSORT = 0; last FMTSW; } if ($elem eq 'tsubsort') { # Subject order for threads $TNOSORT = 0; $TSUBSORT = 1; last FMTSW; } if ($elem eq 'tsublistbeg' || $elem eq 'tsublistbegin') { # List begin in sub-thread $TSUBLISTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsublistend') { # List end in sub-thread $TSUBLISTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsubjectbeg' || $elem eq 'tsubjectbegin') { # Begin markup for sub thread $TSUBJECTBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsubjectend') { # End markup for sub thread $TSUBJECTEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tsingletxt') { # Markup for single msg $TSINGLETXT = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'ttopbegin' || # Begin for top of a thread $elem eq 'ttopbeg') { # (more consistent name) $TTOPBEG = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'ttopend') { # End for a thread $TTOPEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'ttitle') { # Title of threaded idx $TTITLE = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'thread') { # Create thread index $THREAD = 1; last FMTSW; } if ($elem eq 'tnextbutton') { # Thread Next button link $TNEXTBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextbuttonia') { $TNEXTBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextinbutton') { # Within Thread Next button link $TNEXTINBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextinbuttonia') { $TNEXTINBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextinlink') { # Within Thread Next link $TNEXTINLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextinlinkia') { $TNEXTINLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextlink') { # Thread Next link $TNEXTLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextlinkia') { $TNEXTLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextpglink') { # Thread next page link $TNEXTPGLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnextpglinkia') { $TNEXTPGLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevbutton') { # Thread Prev button link $TPREVBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevbuttonia') { $TPREVBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevinbutton') { # Within thread previous button $TPREVINBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevinbuttonia') { $TPREVINBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevinlink') { # Within thread previous link $TPREVINLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevinlinkia') { $TPREVINLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevlink') { # Thread previous link $TPREVLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevlinkia') { $TPREVLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevpglink') { # Thread previous page link $TPREVPGLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevpglinkia') { $TPREVPGLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'treverse') { # Reverse order of threads $TREVERSE = 1; last FMTSW; } if ($elem eq 'tnexttopbutton') { # Next thread button $TNEXTTOPBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnexttopbuttonia') { $TNEXTTOPBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnexttoplink') { # Next thread link $TNEXTTOPLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tnexttoplinkia') { $TNEXTTOPLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevtopbutton') { # Previous thread button $TPREVTOPBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevtopbuttonia') { $TPREVTOPBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevtoplink') { # Previous thread link $TPREVTOPLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'tprevtoplinkia') { $TPREVTOPLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'ttopbutton') { # Top of thread button $TTOPBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'ttopbuttonia') { $TTOPBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'ttoplink') { # Top of thread link $TTOPLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'ttoplinkia') { $TTOPLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } if ($elem eq 'umask') { # Umask of process if ($line = &get_elem_last_line($handle, $elem)) { $line =~ s/\s//g; $UMASK = $line; } last FMTSW; } if ($elem eq 'uselocaltime') { # Use localtime for day groups $UseLocalTime = 1; last FMTSW; } if ($elem eq 'usinglastpg') { $UsingLASTPG = 1; last FMTSW; } if ($elem eq 'varregex') { # Regex matching rc vars $tmp = &get_elem_last_line($handle, $elem); # only take value if not blank $VarExp = $tmp if $tmp =~ /\S/; last FMTSW; } if ($elem eq 'weekdays') { # Full weekday name @a = &get_list_content($handle, $elem); if (scalar(@a)) { @Weekdays = @a; } last FMTSW; } if ($elem eq 'weekdaysabr') { # Abbreviated weekday name @a = &get_list_content($handle, $elem); if (scalar(@a)) { @weekdays = @a; } last FMTSW; } } ## End FMTSW } close($handle); 1; } ##---------------------------------------------------------------------- sub get_elem_content { my($filehandle, $gi, $chop) = @_; my($ret) = ''; while (<$filehandle>) { last if /^\s*<\/$gi\s*>/i; $ret .= $_; } $ret =~ s/\r?\n?$// if $chop; $ret; } ##---------------------------------------------------------------------- sub get_elem_int { my($filehandle, $gi, $abs) = @_; my($ret) = ''; while (<$filehandle>) { last if /^\s*<\/$gi\s*>/i; next unless /^\s*[-+]?\d+\s*$/; s/[+\s]//g; s/-// if $abs; $ret = $_; } $ret; } ##---------------------------------------------------------------------- sub get_elem_last_line { my($filehandle, $gi) = @_; my($ret) = ''; while (<$filehandle>) { last if /^\s*<\/$gi\s*>/i; next unless /\S/; $ret = $_; } $ret =~ s/\r?\n?$//; $ret; } ##---------------------------------------------------------------------- sub get_list_content { my($filehandle, $gi) = @_; my(@items) = (); while (<$filehandle>) { last if /^\s*<\/$gi\s*>/i; next unless /\S/; s/\r?\n?$//; push(@items, split(/[:;]/, $_)); } @items; } ##---------------------------------------------------------------------- sub get_pathname_content { my($filehandle, $gi) = @_; my(@items) = (); while (<$filehandle>) { last if /^\s*<\/$gi\s*>/i; next unless /\S/; s/\r?\n?$//; push(@items, split(/$PATHSEP/o, $_)); } @items; } ##---------------------------------------------------------------------------## 1; MHonArc-2.6.18/lib/mhscan.pl0000644004705000001440000000424107351420175014500 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhscan.pl,v 1.3 2001/09/17 16:10:37 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Scan routine 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; ##--------------------------------------------------------------------------- ## Function to do scan feature. ## sub scan { local($key, $num, $index, $day, $mon, $year, $from, $date, $subject, $time, @array); print STDOUT "$NumOfMsgs messages in $OUTDIR:\n\n"; print STDOUT sprintf("%5s %s %-15s %-43s\n", "Msg #", "YYYY/MM/DD", "From", "Subject"); print STDOUT sprintf("%5s %s %-15s %-43s\n", "-" x 5, "----------", "-" x 15, "-" x 43); @array = &sort_messages(); foreach $index (@array) { $date = &time2mmddyy((split(/$X/o, $index))[0], 'yyyymmdd'); $num = $IndexNum{$index}; $from = substr(&extract_email_name($From{$index}), 0, 15); $subject = substr($Subject{$index}, 0, 43); print STDOUT sprintf("%5d %s %-15s %-43s\n", $num, $date, $from, $subject); } } ##--------------------------------------------------------------------------- 1; MHonArc-2.6.18/lib/mhmsgextbody.pl0000644004705000001440000001347410233754275015755 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhmsgextbody.pl,v 1.5 2005/04/27 18:23:57 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Library defines routine to filter message/external-body parts to ## HTML for MHonArc. ## Filter routine can be registered with the following: ## ## message/external-body;m2h_msg_extbody::filter;mhmsgextbody.pl ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter ## Copyright (C) 1999-2001,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_msg_extbody; ##---------------------------------------------------------------------------## ## message/external-body filter for MHonArc. ## The following filter arguments are recognized ($args): ## ## 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. ## sub filter { my($fields, $data, $isdecode, $args) = @_; $args = '' unless defined $args; # grab content-type my $ctype = $fields->{'content-type'}[0]; return '' unless $ctype =~ /\S/; # parse argument string my $b_lfile = $args =~ /\blocal-file\b/i; my $ret = ''; my $parms = readmail::MAILparse_parameter_str($ctype, 1); my $access_type = lc $parms->{'access-type'}{'value'}; $access_type =~ s/\s//g; my $cdesc = mhonarc::htmlize($fields->{'content-description'}[0]) || ''; $$data =~ s/\A\s+//; my $dfields = readmail::MAILread_header($data); my $dctype = mhonarc::htmlize($dfields->{'content-type'}[0]) || ''; my $dmd5 = mhonarc::htmlize($dfields->{'content-md5'}[0]) || ''; my $size = mhonarc::htmlize($parms->{'size'}{'value'}) || ''; my $expires = mhonarc::htmlize($parms->{'expiration'}{'value'}) || ''; my $name = $parms->{'name'}{'value'} || ''; ATYPE: { ## FTP, TFTP, ANON-FTP if ( $access_type eq 'ftp' || $access_type eq 'anon-ftp' || $access_type eq 'tftp' || $access_type eq 'http' || $access_type eq 'x-http' ) { my $site = $parms->{'site'}{'value'} || $parms->{'host'}{'value'} || ''; my $port = $parms->{'port'}{'value'} || ''; $port = ':'.$port if $port ne ''; my $dir = $parms->{'directory'}{'value'} || $parms->{'path'}{'value'} || ''; $dir = '/'.$dir unless $dir =~ m|^/| || $dir eq ''; my $mode = $parms->{'mode'}{'value'} || ''; my $proto = ($access_type eq 'x-http' || $access_type eq 'http') ? 'http' : ($access_type eq 'tftp') ? 'tftp' : 'ftp'; my $url = $proto . '://' . mhonarc::urlize($site.$port) . $dir . '/' . mhonarc::urlize_path($name); $ret = '
    '; $ret .= qq|$cdesc
    \n| if $cdesc; $ret .= qq|<$url>
    \n|; $ret .= qq|Content-type: $dctype
    \n| if $dctype; $ret .= qq|MD5: $dmd5
    \n| if $dmd5; $ret .= qq|Size: $size bytes
    \n| if $size; $ret .= qq|Transfer-mode: $mode
    \n| if $mode; $ret .= qq|Expires: $expires
    \n| if $expires; $ret .= qq|Username/password may be required.
    \n| if $access_type eq 'ftp'; $ret .= "
    \n"; last ATYPE; } ## Local file if ($access_type eq 'local-file') { last ATYPE unless $b_lfile; my $site = $parms->{'site'}{'value'} || ''; my $url = 'file://' . mhonarc::urlize_path($name); $ret = '
    '; $ret .= qq|$cdesc
    \n| if $cdesc; $ret .= qq|<$url>
    \n|; $ret .= qq|Content-type: $dctype
    \n| if $dctype; $ret .= qq|MD5: $dmd5
    \n| if $dmd5; $ret .= qq|Size: $size bytes
    \n| if $size; $ret .= qq|Expires: $expires
    \n| if $expires; $ret .= qq|File accessible from the following domain: | . qq|$site
    \n| if $site; $ret .= "
    \n"; last ATYPE; } ## Mail server if ($access_type eq 'mail-server') { # not supported last ATYPE; } ## URL if ($access_type eq 'url') { my $url = $parms->{'url'}{'value'}; $url =~ s/[\s<>]+//g; $url =~ s/javascript/_javascript_/ig; $ret = '
    '; $ret .= qq|$cdesc
    \n| if $cdesc; $ret .= qq|<$url>
    \n|; $ret .= qq|Content-type: $dctype
    \n| if $dctype; $ret .= qq|MD5: $dmd5
    \n| if $dmd5; $ret .= qq|Size: $size bytes
    \n| if $size; $ret .= qq|Expires: $expires
    \n| if $expires; $ret .= "
    \n"; last ATYPE; } last ATYPE; } ($ret); } ##---------------------------------------------------------------------------## 1; MHonArc-2.6.18/lib/base64.pl0000644004705000001440000001357111510020062014300 0ustar ehoodusers# $Id: base64.pl,v 2.5 2011/01/02 06:50:26 ehood Exp $ # # Library based on Perl 4 code from: # base64.pl -- A perl package to handle MIME-style BASE64 encoding # A. P. Barrett , October 1993 # Revision: 1.4 Date: 1994/08/11 16:08:51 # # Subsequent changes made by Earl Hood, earl@earlhood.com. package base64; my $_have_MIME_Base64; BEGIN { eval { require MIME::Base64; }; $_have_MIME_Base64 = scalar($@) ? 0 : 1; } # Synopsis: # require 'base64.pl'; # # $uuencode_string = &base64::b64touu($base64_string); # $binary_string = &base64::b64decode($base64_string); # $base64_string = &base64::uutob64($uuencode_string); # $base64_string = &base64::b64encode($binary_string); # $uuencode_string = &base64::uuencode($binary_string); # $binary_string = &base64::uudecode($uuencode_string); # # uuencode and base64 input strings may contain multiple lines, # but may not contain any headers or trailers. (For uuencode, # remove the begin and end lines, and for base64, remove the MIME # headers and boundaries.) # # uuencode and base64 output strings will be contain multiple # lines if appropriate, but will not contain any headers or # trailers. (For uuencode, add the "begin" line and the # " \nend\n" afterwards, and for base64, add any MIME stuff # afterwards.) #################### my $base64_alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'. 'abcdefghijklmnopqrstuvwxyz'. '0123456789+/'; my $base64_pad = '='; my $uuencode_alphabet = q|`!"#$%&'()*+,-./0123456789:;<=>?|. '@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_'; my $uuencode_pad = '`'; # Build some strings for use in tr/// commands. # Some uuencodes use " " and some use "`", so we handle both. # We also need to protect backslashes and other special characters. my $tr_uuencode = " ".$uuencode_alphabet; $tr_uuencode =~ s/(\W)/\\$1/g; my $tr_base64 = "A".$base64_alphabet; $tr_base64 =~ s/(\W)/\\$1/g; sub b64touu { local ($_) = shift; my ($result); # zap bad characters and translate others to uuencode alphabet eval qq{ tr|$tr_base64||cd; tr|$tr_base64|$tr_uuencode|; }; # break into lines of 60 encoded chars, prepending "M" for uuencode while (s/^(.{60})//) { $result .= 'M' . $1 . "\n"; } # any leftover chars go onto a shorter line # with padding to the next multiple of 4 chars if ($_ ne '') { $result .= substr($uuencode_alphabet, length($_)*3/4, 1) . $_ . ($uuencode_pad x ((60 - length($_)) % 4)) . "\n"; } # return result $result; } sub b64decode { # call more efficient module if available (ehood, 2003-09-28) if ($_have_MIME_Base64) { return &MIME::Base64::decode_base64; } # substr() usage added by ehood, 1996/04/16 local($str) = shift; my($result, $tmp, $offset, $len); # zap bad characters and translate others to uuencode alphabet eval qq{ \$str =~ tr|$tr_base64||cd; \$str =~ tr|$tr_base64|$tr_uuencode|; }; # break into lines of 60 encoded chars, prepending "M" for uuencode, # and then using perl's builtin uudecoder to convert to binary. $result = ''; # init return string $offset = 0; # init offset to 0 $len = length($str); # store length while ($offset+60 <= $len) { # loop until < 60 chars left $tmp = substr($str, $offset, 60); # grap 60 char block $offset += 60; # increment offset $result .= unpack('u', 'M' . $tmp); # decode block } # also decode any leftover chars if ($offset < $len) { $tmp = substr($str, $offset, $len-$offset); $result .= unpack('u', substr($uuencode_alphabet, length($tmp)*3/4, 1) . $tmp); } # return result $result; } sub uutob64 { # This is the most difficult, because some perverse uuencoder # might have made lines that do not describe multiples of 3 bytes. # I don't see any better method than uudecoding to binary and then # b64encoding the binary. &b64encode(&uudecode); # implicitly pass @_ to &uudecode } sub b64encode { # call more efficient module if available (ehood, 2003-09-28) if ($_have_MIME_Base64) { return &MIME::Base64::encode_base64; } local ($_) = shift; my ($chunk); my ($result); # break into chunks of 45 input chars, use perl's builtin # uuencoder to convert each chunk to uuencode format, # then kill the leading "M", translate to the base64 alphabet, # and finally append a newline. while (s/^([\s\S]{45})//) { $chunk = substr(pack('u', $1), $[+1, 60); eval qq{ \$chunk =~ tr|$tr_uuencode|$tr_base64|; }; $result .= $chunk . "\n"; } # any leftover chars go onto a shorter line # with uuencode padding converted to base64 padding if ($_ ne '') { $chunk = substr(pack('u', $_), $[+1, int((length($_)+2)/3)*4 - (45-length($_))%3); eval qq{ \$chunk =~ tr|$tr_uuencode|$tr_base64|; }; $result .= $chunk . ($base64_pad x ((60 - length($chunk)) % 4)) . "\n"; } # return result $result; } sub uuencode { local ($_) = shift; my ($result); # break into chunks of 45 input chars, and use perl's builtin # uuencoder to convert each chunk to uuencode format. # (newline is added by builtin uuencoder.) while (s/^([\s\S]{45})//) { $result .= pack('u', $1); } # any leftover chars go onto a shorter line # with padding to the next multiple of 4 chars if ($_ ne '') { $result .= pack('u', $_); } # return result $result; } sub uudecode { local ($_) = shift; my $result = ''; # strip out begin/end lines (ehood, 1996/03/21) s/^\s*begin[^\n]+\n//; s/\nend\s*$//; # use perl's builtin uudecoder to convert each line while (s/^([^\n]+\n?)//) { last if substr($1, 0, 1) eq '`'; $result .= unpack('u', $1); } # return result $result; } 1; MHonArc-2.6.18/lib/osinit.pl0000644004705000001440000001061310256110155014524 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: osinit.pl,v 2.8 2005/06/21 22:10:53 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## A library for setting up a script based upon the OS the script ## is running under. The main routine defined is OSinit. See ## the routine for specific information. ##---------------------------------------------------------------------------## ## 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 ##---------------------------------------------------------------------------## use File::Basename; package mhonarc; ##---------------------------------------------------------------------------## ## OSinit() checks what operating system we are running on set ## some global variables that can be used by the calling routine. ## All global variables are exported to package main. ## ## Variables set: ## ## $MSDOS => Set to 1 if running under MS-DOS/Windows ## $MACOS => Set to 1 if running under Mac ## $UNIX => Set to 1 if running under Unix ## $VMS => Set to 1 if running under VMS ## $DIRSEP => Directory separator character ## $DIRSEPREX => Directory separator character for use in ## regular expressions. ## $PATHSEP => Recommend path list separator ## $CURDIR => Current working directory ## $PROG => Program name with leading pathname component ## stripped off. ## ## If running under a Mac and the script is a droplet, command-line ## options will be prompted for unless $noOptions argument is ## set to true. ## sub OSinit { my($noOptions) = shift; ## Check what system we are executing under my($tmp); if ($^O =~ /vms/i) { $MSDOS = 0; $MACOS = 0; $UNIX = 0; $VMS = 1; $DIRSEP = '/'; $CURDIR = '.'; $PATHSEP = ':'; fileparse_set_fstype('VMS'); } elsif (($^O !~ /cygwin/i) && (($^O =~ /mswin/i) || ($^O =~ /\bdos\b/i) || ($^O =~ /\bos2\b/i) || (($tmp = $ENV{'COMSPEC'}) && ($tmp =~ /^[a-zA-Z]:\\/) && (-e $tmp))) ) { $MSDOS = 1; $MACOS = 0; $UNIX = 0; $VMS = 0; $DIRSEP = '\\'; $CURDIR = '.'; $PATHSEP = ';'; fileparse_set_fstype(($^O =~ /mswin/i) ? 'MSWin32' : 'MSDOS'); } elsif (defined($MacPerl::Version)) { $MSDOS = 0; $MACOS = 1; $UNIX = 0; $VMS = 0; $DIRSEP = ':'; $CURDIR = ':'; $PATHSEP = "\n"; fileparse_set_fstype('MacOS'); } else { $MSDOS = 0; $MACOS = 0; $UNIX = 1; $VMS = 0; $DIRSEP = '/'; $CURDIR = '.'; $PATHSEP = ':'; fileparse_set_fstype('UNIX'); } ## Store name of program if ($MSDOS) { $DIRSEPREX = "\\\\\\/"; } else { ($DIRSEPREX = $DIRSEP) =~ s/(\W)/\\$1/g; } ($PROG = $0) =~ s%.*[$DIRSEPREX]%%o; ## Ask for command-line options if script is a Mac droplet ## Code taken from the MacPerl FAQ if (!$noOptions && defined($MacPerl::Version) && ( $MacPerl::Version =~ /Application$/ )) { # we're running from the app local( $cmdLine, @args ); $cmdLine = &MacPerl::Ask( "Enter command line options:" ); require "shellwords.pl"; @args = &shellwords( $cmdLine ); unshift( @ARGV, @args ); } } ##---------------------------------------------------------------------------## ## OSis_absolute_path() returns true if a string is an absolute path ## sub OSis_absolute_path { if ($MSDOS) { return $_[0] =~ /^([a-z]:)?[\\\/]/i; } if ($MACOS) { ## Not sure about Mac return $_[0] =~ /^:/o; } $_[0] =~ m|^/|o; ## Unix (fallback) } ##---------------------------------------------------------------------------## 1; MHonArc-2.6.18/lib/iso8859.pl0000644004705000001440000000257507604517522014373 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: iso8859.pl,v 2.6 2003/01/01 07:57:06 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## THIS FILE IS DEPRECATED. ##---------------------------------------------------------------------------## ## 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 iso_8859; use MHonArc::CharEnt; BEGIN { *str2sgml = \&MHonArc::CharEnt::str2sgml; } ##---------------------------------------------------------------------------## 1; MHonArc-2.6.18/lib/mhthread.pl0000644004705000001440000004643611510047765015041 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhthread.pl,v 2.13 2011/01/02 10:14:13 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Thread 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_thread_index outputs the thread index ## sub write_thread_index { local($onlypg) = shift; local($tmpl, $handle); local($index) = (""); local(*a); local($PageNum, $PageSize, $totalpgs, %Printed); local($lastlevel, $tlevel, $iscont, $i, $offstart, $offend); my($tmpfile); local($level) = 0; ## !!!Used in print_thread!!! local($last0index) = ''; ## Make sure list orders are set if (!scalar(@TListOrder)) { &compute_threads(); } if (!scalar(@MListOrder)) { # need for resource variable expansions @MListOrder = &sort_messages(); %Index2MLoc = (); @Index2MLoc{@MListOrder} = (0 .. $#MListOrder); } &compute_page_total(); @ThreadList = @TListOrder; $PageNum = $onlypg || 1; $totalpgs = $onlypg || $NumOfPrintedPages; for ( ; $PageNum <= $totalpgs; ++$PageNum) { next if $PageNum < $TIdxMinPg; if ($MULTIIDX) { $offstart = ($PageNum-1) * $IDXSIZE; $offend = $offstart + $IDXSIZE-1; $offend = $#TListOrder if $#TListOrder < $offend; @a = @TListOrder[$offstart..$offend]; if ($PageNum > 1) { $TIDXPATHNAME = join("", $OUTDIR, $DIRSEP, $TIDXPREFIX, $PageNum, ".", $HtmlExt); } else { $TIDXPATHNAME = join($DIRSEP, $OUTDIR, $TIDXNAME); } } else { $TIDXPATHNAME = join($DIRSEP, $OUTDIR, $TIDXNAME); if ($IDXSIZE && (($i = ($#ThreadList+1) - $IDXSIZE) > 0)) { if ($TREVERSE) { @NotIdxThreadList = splice(@ThreadList, $IDXSIZE); } else { @NotIdxThreadList = splice(@ThreadList, 0, $i); } } *a = *ThreadList; } $PageSize = scalar(@a); if ($IDXONLY) { $handle = \*STDOUT; } else { ($handle, $tmpfile) = file_temp('tidxXXXXXXXXXX', $OUTDIR); } print STDOUT "Writing $TIDXPATHNAME ...\n" unless $QUIET; $tmpl = ($TIDXPGSSMARKUP ne '') ? $TIDXPGSSMARKUP : $SSMARKUP; if ($tmpl ne '') { $tmpl =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; } print $handle "\n"; ($tmpl = $TIDXPGBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; ($tmpl = $THEAD) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; ## Flag visible messages for use in printing thread index page foreach $index (@a) { $TVisible{$index} = 1; } ## Print index. Print unless message has been printed, or ## unless it has reference that is visible. $level = 0; # !!!Used in print_thread!!! $lastlevel = $ThreadLevel{$a[0]}; # check if continuing a thread if ($lastlevel > 0) { ($tmpl = $TCONTBEG) =~ s/$VarExp/&replace_li_var($1,$a[0])/geo; print $handle $tmpl; } # perform any indenting for ($i=0; $i < $lastlevel; ++$i) { ++$level; if ($level <= $TLEVELS) { ($tmpl = $TINDENTBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; } } # print index listing foreach $index (@a) { $tlevel = $ThreadLevel{$index}; if (($lastlevel > 0) && ($tlevel < $lastlevel)) { for ($i=$tlevel; $i < $lastlevel; ++$i) { if ($level <= $TLEVELS) { ($tmpl = $TINDENTEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; } --$level; } $lastlevel = $tlevel; if ($lastlevel < 1) { # Check if continuation done ($tmpl = $TCONTEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; } } unless ($Printed{$index} || ($HasRef{$index} && $TVisible{$HasRef{$index}})) { &print_thread($handle, $index, ($lastlevel > 0) ? 0 : 1); } } # unindent if required for ($i=0; $i < $lastlevel; ++$i) { if ($level <= $TLEVELS) { ($tmpl = $TINDENTEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; } --$level; } # close continuation if required if ($lastlevel > 0) { ($tmpl = $TCONTEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; } ## Reset visibility flags foreach $index (@a) { $TVisible{$index} = 0; } ($tmpl = $TFOOT) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; &output_doclink($handle); ($tmpl = $TIDXPGEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; print $handle $tmpl; print $handle "\n"; if (!$IDXONLY) { close($handle); file_gzip($tmpfile) if $GzipFiles; file_chmod(file_rename($tmpfile, $TIDXPATHNAME)); } } } ##--------------------------------------------------------------------------- ## Routine to compute the order messages are listed by thread. ## Main use is to provide the ability to correctly define ## values for resource variables related to next/prev thread ## message. ## ## NOTE: Thread order is determined by all the messages in an ## archive, and not by what is visible in the thread index page. ## Hence, if the thread index page size is less than number of ## messages, the next/prev messages of thread (accessible via ## resource variables) will not necessarily correspond to the ## actual physical next/prev message listed in the thread index. ## ## The call to do_thread() defines the TListOrder array for use ## in expanding thread related resource variables. ## sub compute_threads { local(%FirstSub2Index) = (); local(%Counted) = (); local(%stripsub) = (); local(@refs); local($index, $msgid, $refindex, $depth, $tmp); ## Reset key data structures @TListOrder = (); %Index2TLoc = (); %ThreadLevel = (); %HasRef = (); %HasRefDepth = (); %Replies = (); %SReplies = (); ## Sort by date first for subject based threads @ThreadList = sort_messages(0,0,0,0); ## Find first occurrances of subjects if (!$NoSubjectThreads) { foreach $index (@ThreadList) { $tmp = lc $Subject{$index}; 1 while (($tmp =~ s/^$SubReplyRxp//io) || ($tmp =~ s/\s*-\s*re(ply|sponse)\s*$//io)); $stripsub{$index} = $tmp; next unless $tmp =~ /\S/; $FirstSub2Index{$tmp} = $index unless defined($FirstSub2Index{$tmp}) || (defined($Refs{$index}) && grep($MsgId{$_}, @{$Refs{$index}})); } } ## Compute thread data TCOMP: foreach $index (@ThreadList) { next unless defined($Refs{$index}); # Check for explicit threading if (@refs = @{$Refs{$index}}) { $depth = 0; while ($msgid = pop(@refs)) { if (($refindex = $MsgId{$msgid})) { $HasRef{$index} = $refindex; $HasRefDepth{$index} = $depth; if ($Replies{$refindex}) { push(@{$Replies{$refindex}}, $index); } else { $Replies{$refindex} = [ $index ]; } next TCOMP; } ++$depth; } } } continue { # Check for subject-based threading if (!$NoSubjectThreads && !$HasRef{$index}) { $refindex = $FirstSub2Index{$stripsub{$index}}; if ($refindex && ($refindex ne $index)) { $HasRef{$index} = $refindex; $HasRefDepth{$index} = 0; if ($SReplies{$refindex}) { push(@{$SReplies{$refindex}}, $index); } else { $SReplies{$refindex} = [ $index ]; } } } } ## Calculate thread listing order @ThreadList = sort_messages($TNOSORT, $TSUBSORT, 0, $TREVERSE); foreach $index (@ThreadList) { unless ($Counted{$index} || $HasRef{$index}) { &do_thread($index, 0); } } } ##--------------------------------------------------------------------------- ## do_thread() computes the order messages are listed by thread. ## Uses %Counted defined locally in compute_thread_from_list(). ## do_thread() main purpose is to set the TListOrder array and ## Index2TLoc assoc array. ## sub do_thread { local($idx, $level) = ($_[0], $_[1]); local(@repls, @srepls) = (); ## Get replies @repls = sort increase_index @{$Replies{$idx}} if defined($Replies{$idx}); @srepls = sort increase_index @{$SReplies{$idx}} if defined($SReplies{$idx}); ## Add index to printed order list (IMPORTANT SIDE-EFFECT) push(@TListOrder, $idx); $Index2TLoc{$idx} = $#TListOrder; ## Mark message $Counted{$idx} = 1; $ThreadLevel{$idx} = $level; if (@repls) { foreach (@repls) { &do_thread($_, $level + 1 + $HasRefDepth{$_}); } } if (@srepls) { foreach (@srepls) { &do_thread($_, $level + 1 + $HasRefDepth{$_}); } } } ##--------------------------------------------------------------------------- ## Routine to print thread. ## Uses %Printed defined by caller. ## sub print_thread { local($handle, $idx, $top) = ($_[0], $_[1], $_[2]); my(@repls, @srepls) = (); my($attop, $haverepls, $hvnirepls, $single, $depth, $i); my $didtliend = 0; ## Get replies @repls = sort increase_index @{$Replies{$idx}} if defined($Replies{$idx}); @srepls = sort increase_index @{$SReplies{$idx}} if defined($SReplies{$idx}); $depth = $HasRefDepth{$idx}; $hvnirepls = (@repls || @srepls); @repls = grep($TVisible{$_}, @repls); @srepls = grep($TVisible{$_}, @srepls); $haverepls = (@repls || @srepls); ## $hvnirepls is a flag if the message has replies, but they are ## not visible. $haverepls is a flag if the message has visible ## replies. $hvnirepls is used to determine the $attop and ## $single flags. $haverepls is used for determine recursive ## calls and level. ## Print entry #$attop = ($top && $haverepls); #$single = ($top && !$haverepls); $attop = ($top && $hvnirepls); $single = ($top && !$hvnirepls); if ($attop) { &print_thread_var($handle, $idx, \$TTOPBEG); } elsif ($single) { &print_thread_var($handle, $idx, \$TSINGLETXT); } else { ## Check for missing messages if ($DoMissingMsgs) { for ($i=$depth; $i > 0; --$i) { ++$level; &print_thread_var($handle, $idx, \$TLINONE); &print_thread_var($handle, $idx, \$TSUBLISTBEG) if $level <= $TLEVELS; } } &print_thread_var($handle, $idx, \$TLITXT); } ## Increment level count if their are replies ++$level if ($haverepls); ## Print list item close if hit max depth if (!$attop && !$single && ($level > $TLEVELS)) { &print_thread_var($handle, $idx, \$TLIEND); $didtliend = 1; } ## Mark message printed $Printed{$idx} = 1; ## Print sub-threads if (scalar(@repls) || scalar(@srepls)) { &print_thread_var($handle, $idx, \$TSUBLISTBEG) if $level <= $TLEVELS; foreach (@repls) { &print_thread($handle, $_); } if (@srepls) { &print_thread_var($handle, $idx, \$TSUBJECTBEG); foreach (@srepls) { &print_thread($handle, $_); } &print_thread_var($handle, $idx, \$TSUBJECTEND); } &print_thread_var($handle, $idx, \$TSUBLISTEND) if $level <= $TLEVELS; } ## Decrement level count if their were replies --$level if ($haverepls); ## Check for missing messages if ($DoMissingMsgs && !($attop || $single)) { for ($i=$depth; $i > 0; --$i) { &print_thread_var($handle, $idx, \$TSUBLISTEND) if $level <= $TLEVELS; &print_thread_var($handle, $idx, \$TLINONEEND); --$level; } } ## Close entry text if ($attop) { &print_thread_var($handle, $idx, \$TTOPEND); } elsif (!$single && !$didtliend) { &print_thread_var($handle, $idx, \$TLIEND); } } ##--------------------------------------------------------------------------- ## Print out text based upon resource variable referenced by $tvar. ## sub print_thread_var { my($handle, $index, $tvar) = @_; my($tmpl); ($tmpl = $$tvar) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $handle $tmpl; } ##--------------------------------------------------------------------------- ## make_thread_slice generates a slice of the thread listing. ## Arguments are: ## ## $refindex : Reference message index that slice is based ## $bcnt : Number of messages before $refindex to list ## $acnt : Number of messages after $refindex to list ## ## Returns string containing thread slice text. ## sub make_thread_slice { my($refindex, $bcnt, $acnt, $inclusive) = @_; my($slicetxt) = ""; my($pos) = $Index2TLoc{$refindex}; my($start) = $pos - $bcnt; my($end) = $pos + $acnt; $start = 0 if $start < 0; $end = $#TListOrder if $end > $#TListOrder; if ($inclusive) { # adjust before count if ($bcnt == 0 || $ThreadLevel{$TListOrder[$pos]} <= 0) { $start = $pos; } else { for ($i=$pos-1; ($i > $start) && ($i > 0); --$i) { last if ($ThreadLevel{$TListOrder[$i]} <= 0); } $start = $i; } # adjust after count if ($acnt != 0) { for ($i=$pos+1; ($i <= $end) && ($i <= $#TListOrder); ++$i) { last if ($ThreadLevel{$TListOrder[$i]} <= 0); } $end = $i-1; } } my(@a) = @TListOrder[$start..$end]; my($lastlevel) = $ThreadLevel{$a[0]}; my($tmpl, $index, $tlevel, $iscont, $i); local($level) = 0; ## XXX: Used in make_thread!!! local(%Printed) = (); ## XXX: Used in make_thread!!! ($tmpl = $TSLICEBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; $slicetxt .= $tmpl; ## Flag visible messages for use in printing thread foreach $index (@a) { $TVisible{$index} = 1; } # check if continuing a thread if ($lastlevel > 0) { ($tmpl = $TSLICECONTBEG) =~ s/$VarExp/&replace_li_var($1,$a[0])/geo; $slicetxt .= $tmpl; } # perform any indenting for ($i=0; $i < $lastlevel; ++$i) { ++$level; if ($level <= $TSLICELEVELS) { ($tmpl = $TSLICEINDENTBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; $slicetxt .= $tmpl; } } # print index listing foreach $index (@a) { $tlevel = $ThreadLevel{$index}; if (($lastlevel > 0) && ($tlevel < $lastlevel)) { for ($i=$tlevel; $i < $lastlevel; ++$i) { if ($level <= $TSLICELEVELS) { ($tmpl = $TSLICEINDENTEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; $slicetxt .= $tmpl; } --$level; } $lastlevel = $tlevel; if ($lastlevel < 1) { # Check if continuation done ($tmpl = $TSLICECONTEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; $slicetxt .= $tmpl; } } unless ($Printed{$index} || ($HasRef{$index} && $TVisible{$HasRef{$index}})) { $slicetxt .= &make_thread($index, (($lastlevel > 0) ? 0 : 1), $refindex); } } # unindent if required for ($i=0; $i < $lastlevel; ++$i) { if ($level <= $TSLICELEVELS) { ($tmpl = $TSLICEINDENTEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; $slicetxt .= $tmpl; } --$level; } # close continuation if required if ($lastlevel > 0) { ($tmpl = $TSLICECONTEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; $slicetxt .= $tmpl; } ## Reset visibility flags foreach $index (@a) { $TVisible{$index} = 0; } ($tmpl = $TSLICEEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; $slicetxt .= $tmpl; $slicetxt; } ##--------------------------------------------------------------------------- ## Routine to generate text representing a thread. ## Used by make_thread_slice(). ## Uses %Printed and $level defined by caller. ## sub make_thread { my($idx, $top, $refidx) = @_; my($attop, $haverepls, $hvnirepls, $single, $depth, $i); my(@repls, @srepls) = ( ); my($ret) = ""; ## Get replies @repls = sort increase_index @{$Replies{$idx}} if defined($Replies{$idx}); @srepls = sort increase_index @{$SReplies{$idx}} if defined($SReplies{$idx}); $depth = $HasRefDepth{$idx}; $hvnirepls = (@repls || @srepls); @repls = grep($TVisible{$_}, @repls); @srepls = grep($TVisible{$_}, @srepls); $haverepls = (@repls || @srepls); ## $hvnirepls is a flag if the message has replies, but they are ## not visible. $haverepls is a flag if the message has visible ## replies. $hvnirepls is used to determine the $attop and ## $single flags. $haverepls is used for determine recursive ## calls and level. ## Print entry $attop = ($top && $hvnirepls); $single = ($top && !$hvnirepls); if ($attop) { $ret .= &expand_thread_var($idx, ($idx eq $refidx) ? \$TSLICETOPBEGCUR : \$TSLICETOPBEG); } elsif ($single) { $ret .= &expand_thread_var($idx, ($idx eq $refidx) ? \$TSLICESINGLETXTCUR: \$TSLICESINGLETXT); } else { ## Check for missing messages if ($DoMissingMsgs) { for ($i = $depth; $i > 0; $i--) { $level++; $ret .= &expand_thread_var($idx, \$TSLICELINONE); $ret .= &expand_thread_var($idx, \$TSLICESUBLISTBEG) if $level <= $TSLICELEVELS; } } $ret .= &expand_thread_var($idx, ($idx eq $refidx) ? \$TSLICELITXTCUR : \$TSLICELITXT); } ## Increment level count if their are replies if ($haverepls) { $level++; } ## Mark message printed $Printed{$idx} = 1; ## Print sub-threads if (@repls) { $ret .= &expand_thread_var($idx, \$TSLICESUBLISTBEG) if $level <= $TSLICELEVELS; foreach (@repls) { $ret .= &make_thread($_, 0, $refidx); } $ret .= &expand_thread_var($idx, \$TSLICESUBLISTEND) if $level <= $TSLICELEVELS; } if (@srepls) { $ret .= &expand_thread_var($idx, \$TSLICESUBLISTBEG) if $level <= $TSLICELEVELS; $ret .= &expand_thread_var($idx, \$TSLICESUBJECTBEG); foreach (@srepls) { $ret .= &make_thread($_, 0, $refidx); } $ret .= &expand_thread_var($idx, \$TSLICESUBJECTEND); $ret .= &expand_thread_var($idx, \$TSLICESUBLISTEND) if $level <= $TSLICELEVELS; } ## Decrement level count if their were replies if ($haverepls) { $level--; } ## Check for missing messages if ($DoMissingMsgs && !($attop || $single)) { for ($i = $depth; $i > 0; $i--) { $ret .= &expand_thread_var($idx, \$TSLICESUBLISTEND) if $level <= $TSLICELEVELS; $ret .= &expand_thread_var($idx, \$TSLICELINONEEND); $level--; } } ## Close entry text if ($attop) { $ret .= &expand_thread_var($idx, ($idx eq $refidx) ? \$TSLICETOPENDCUR : \$TSLICETOPEND); } elsif (!$single) { $ret .= &expand_thread_var($idx, ($idx eq $refidx) ? \$TSLICELIENDCUR : \$TSLICELIEND); } $ret; } ##--------------------------------------------------------------------------- ## Expand text based upon resource variable referenced by $tvar. ## sub expand_thread_var { my($index, $tvar) = @_; my($expstr); ($expstr = $$tvar) =~ s/$VarExp/&replace_li_var($1,$index)/geo; $expstr; } ##--------------------------------------------------------------------------- 1; MHonArc-2.6.18/lib/mhopt.pl0000644004705000001440000012422111512241752014353 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhopt.pl,v 2.67 2011/01/09 05:13:14 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Routines to set options for MHonArc. ##---------------------------------------------------------------------------## ## 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 mhonarc; use Getopt::Long; use Time::Local; ##--------------------------------------------------------------------------- ## get_resources() is responsible for grabbing resource settings from ## the command-line and resource file(s). ## sub get_resources { my($tmp); my(%opt) = (); local($_); die(qq{Try "$PROG -help" for usage information\n}) unless GetOptions(\%opt, 'add', # Add a message to archive 'afs', # Bypass file permission checks 'addressmodifycode=s', # Perl expression for modifying displayed addresses 'annotate', # Add a note to message(s) 'attachmentdir=s', # Pathname to attachment files directory 'attachmenturl=s', # URL to attachment files directory 'authsort', # Sort by author 'archive', # Create an archive (the default) 'conlen', # Honor Content-Length fields 'checknoarchive', # Check for 'no archive' flag in messages 'datefields=s', # Fields that contains the date of a message 'dbfile=s', # Database/state filename for mhonarc archive 'dbfileperms=i',# Octal permission to set DBFILE 'debug', # Turn on debugging 'decodeheads', # Decode all 1522 encoded data in message headers 'definevar|definevars=s@', # Define custom resource variables 'doc', # Print link to doc at end of index page 'docurl=s', # URL to mhonarc documentation 'editidx', # Change index page layout only 'expiredate=s', # Message cut-off date 'expireage=i', # Time in seconds from current if message expires 'fasttempfiles',# Do not use random filenames for temporary files 'followsymlinks', # Follow/allow symlinks when create files 'fileperms=i', # Octal permission to create files 'folrefs', # Print links to explicit follow-ups/references 'footer=s', # File containing user text for bottom of index page # (option no longer applicable) 'force', # Perform archive operation even if unable to lock 'fromfields=s', # Fields that contains the 'from' of a message 'genidx', # Generate an index based upon archive contents 'gmtdatefmt=s', # Date specification for GMT date 'gzipexe=s', # Pathname of Gzip executable 'gzipfiles', # Gzip files 'gziplinks', # Add ".gz" extensions to files 'header=s', # File containing user text for top of index page # (option no longer applicable) 'htmlext=s', # Extension for HTML files 'iconurlprefix=s', # Prefix for icon urls 'idxfname=s', # Filename of index page 'idxprefix=s', # Filename prefix for multi-page main index 'idxsize=i', # Maximum number of messages shown in indexes 'keeponrmm', # Do not delete message files on archive remove 'lang=s', # Set locale/language 'localdatefmt=s', # Date specification for local date 'lock', # Do archive locking (default) 'lockdelay=i', # Time delay in seconds between lock tries 'lockmethod=s', # Set the method of locking 'locktries=i', # Number of tries in locking an archive 'mailtourl=s', # URL to use for e-mail address hyperlinks 'main', # Create a main index 'maxpgs=i', # Maximum number of index pages 'maxsize=i', # Maximum number of messages allowed in archive 'mbox', # Use mailbox format (ignored now) 'mh', # Use MH mail folders format (ignored now) 'mhpattern=s', # Regular expression for message files in a directory 'modifybodyaddresses', # addressmodifycode applies to text entities 'modtime', # Set modification time on files to message date 'months=s', # Month names 'monthsabr=s', # Abbreviated month names 'msgexcfilter=s', # Perl expression(s) for selective message exclusion 'msgpgs', # Create message pages 'msgsep=s', # Message separator for mailbox files 'msgprefix=s', # Filename prefix for message files 'multipg', # Generate multi-page indexes 'news', # Add links to newsgroups 'newsurl=s', # URL to use for news hyperlinks 'noauthsort', # Do not sort by author 'noarchive', # Do not create an archive 'nochecknoarchive', # Do not check for 'no archive' flag in messages 'noconlen', # Ignore Content-Length fields 'nodecodeheads', # Do not decode 1522 encoded data in message headers 'nodoc', # Do not print link to doc at end of index page 'nofasttempfiles', # Use random filenames for temporary files 'nofollowsymlinks', # Do not follow symlinks when creating files 'nofolrefs', # Do not print links to explicit follow-ups/references 'nogzipfiles', # Do not Gzip files 'nogziplinks', # Do not add '.gz' extensions to files 'nokeeponrmm', # Delete message files on archive remove 'nolock', # Do no archive locking 'nomailto', # Do not add in mailto links for e-mail addresses 'nomain', # Do not create a main index 'nomsgpgs', # Do not create message pages 'nomodtime', # Do no set modification time on files to message date 'nomultipg', # Do not generate multi-page indexes 'nonews', # Do not add links to newsgroups 'noposixstrftime', # Use own implementation for time format process 'noprintxcomments', # Do not print X- comments 'noreverse', # List messages in normal order 'nosaveresources', # Do not save resource values in db 'nosort', # Do not sort 'nospammode', # Do not run in (anti)spam mode 'nosubsort', # Do not sort by subject 'nosubjectthreads', # Do not do subject based threading 'nosubjecttxt=s', # Text to use if message has no subject 'notedir', # Location of notes 'notetext=s@', # Text data of note 'nothread', # Do not create threaded index 'notreverse', # List oldest thread first 'notsubsort|tnosubsort', # Do not list threads by subject 'notsort|tnosort', # List threads by ordered processed 'nourl', # Do not make URL hyperlinks 'otherindex|otherindexes=s@', # List of other rcfiles for extra indexes 'outdir=s', # Destination of HTML files 'pagenum=s', # Page to output if -genidx 'perlinc=s@', # List of paths to search for MIME filters 'posixstrftime', # Use POSIX strftime() 'printxcomments', # Print X- comments 'quiet', # No status messages while running 'rcfile=s@', # Resource file for mhonarc 'reconvert!', # Reconvert existing messages 'varregex=s', # Regex matching resource variables 'reverse', # List messages in reverse order 'rmm', # Remove messages from an archive 'savemem', # Write message data while processing 'saveresources', # Save resource values in db 'scan', # List out archive contents to terminal 'single', # Convert a single message to HTML 'sort', # Sort messages in increasing date order 'spammode', # Run in (anti)spam mode 'stderr=s', # Set file for stderr 'stdin=s', # Set file for stdin 'stdout=s', # Set file for stdout 'subjectarticlerxp=s', # Regex for leading articles in subjects 'subjectreplyrxp=s', # Regex for leading reply string in subjects 'subjectstripcode=s', # Perl expression for modifying subjects 'subjectthreads', # Check subjects for threads 'subsort', # Sort message by subject 'tidxfname=s', # File name of threaded index page 'tidxprefix=s', # Filename prefix for multi-page thread index 'time', # Print processing time 'title=s', # Title of index page 'ttitle=s', # Title of threaded index page 'thread', # Create threaded index 'tlevels=i', # Maximum # of nested lists in threaded index 'treverse', # Reverse order of thread listing 'tslice=s', # Set size of thread slice listing 'tslicelevels=i', # Maximum # of nested lists in thread slices 'tsort', # List threads by date 'tsubsort', # List threads by subject 'umask=i', # Set umask of process 'url', # Make URL hyperlinks 'weekdays=s', # Weekday names 'weekdaysabr=s', # Abbreviated weekday names ## API (only?) options 'noarg', # Just load code 'readdb', # Just read db 'v', # Version information 'help' # A brief usage message ); ## Check for help/version options (nothing to do) if ($opt{'help'}) { &usage(); return 0; } if ($opt{'v'}) { &version(); return 0; } if ($opt{'debug'}) { $DEBUG = 1; } ## Check std{in,out,err} options DUP: { $MhaStdin = \*STDIN; #$MhaStdout = \*STDOUT; #$MhaStderr = \*STDERR; STDOUTERR: { if (defined($opt{'stdout'}) && !ref($opt{'stdout'})) { open(STDOUT, ">>$opt{'stdout'}") || die qq/ERROR: Unable to create "$opt{'stdout'}": $!\n/; if ($opt{'stderr'} eq $opt{'stdout'}) { open(STDERR, ">&STDOUT") || die qq/ERROR: Unable to dup STDOUT: $!\n/; last STDOUTERR; } } if (defined($opt{'stderr'}) && !ref($opt{'stderr'})) { open(STDERR, ">>$opt{'stderr'}") || die qq/ERROR: Unable to create "$opt{'stderr'}": $!\n/; } } if (defined($opt{'stdin'})) { if (ref($opt{'stdin'})) { $MhaStdin = $opt{'stdin'}; } else { open(STDIN, "<$opt{'stdin'}") || die qq/ERROR: Unable to open "$opt{'stdin'}": $!\n/; $MhaStdin = \*STDIN; } } my $curfh = select(STDOUT); $| = 1; select(STDERR); $| = 1; select($curfh); } ## Initialize variables require 'mhinit.pl'; &mhinit_vars(); ## These options have NO resource file equivalent. $NoArg = $opt{'noarg'}; $ReadDB = $opt{'readdb'}; $ADD = $opt{'add'}; $RMM = $opt{'rmm'}; $SCAN = $opt{'scan'}; $QUIET = $opt{'quiet'}; $EDITIDX = $opt{'editidx'}; $ANNOTATE= $opt{'annotate'}; $AFS = $opt{'afs'}; if ($opt{'genidx'}) { $IDXONLY = 1; $QUIET = 1; $ADD = 0; } else { $IDXONLY = 0; } if ($opt{'single'} && !$RMM && !$ANNOTATE) { $SINGLE = 1; $QUIET = 1; } else { $SINGLE = 0; } $ReadDB = 1 if ($ADD || $EDITIDX || $RMM || $ANNOTATE || $SCAN || $IDXONLY); $DoArchive = 1 if $opt{'archive'}; $DoArchive = 0 if $opt{'noarchive'}; $Reconvert = $opt{'reconvert'} if defined($opt{'reconvert'}); my $dolock = !$NoArg && !$opt{'nolock'}; ## Check argv unless (($#ARGV >= 0) || $ADD || $SINGLE || $EDITIDX || $SCAN || $IDXONLY || $ReadDB || !$DoArchive || $NoArg) { usage(); return -1; } ## Require needed libraries require 'ewhutil.pl'; require 'mhtime.pl'; require 'mhfile.pl'; require 'mhutil.pl'; require 'mhrcfile.pl'; require 'mhscan.pl' if $SCAN; require 'mhsingle.pl' if $SINGLE; require 'mhrmm.pl' if $RMM; require 'mhnote.pl' if $ANNOTATE; if (!$SCAN) { # require readmail library require 'readmail.pl'; mhinit_readmail_vars(); } print STDOUT "This is MHonArc v$VERSION, Perl $] $^O\n" unless $QUIET; ## Check for locale/lang setting $Lang = $opt{'lang'} if defined($opt{'lang'}); ## Evaluate site local initialization delete($INC{'mhasiteinit.pl'}); # force re-evaluation eval { require 'mhasiteinit.pl'; }; # ignore status ## Read default resource file DEFRCFILE: { if ($DefRcFile) { last DEFRCFILE if read_resource_file($DefRcFile); } my $home_dir = $ENV{'HOME'}; if (defined $home_dir) { # check if in home directory last DEFRCFILE if read_resource_file(join($DIRSEP, $home_dir, $DefRcName), 1); } local $_; foreach (@INC) { next if ($_ eq $home_dir); last DEFRCFILE if read_resource_file(join($DIRSEP, $_, $DefRcName), 1); } } ## Grab a few options @FMTFILE = @{$opt{'rcfile'}} if defined($opt{'rcfile'}); $LOCKTRIES = $opt{'locktries'} if defined($opt{'locktries'}) && ($opt{'locktries'} > 0); $LOCKDELAY = $opt{'lockdelay'} if defined($opt{'lockdelay'}) && ($opt{'lockdelay'} > 0); $FORCELOCK = $opt{'force'}; $LockMethod = &set_lock_mode($opt{'lockmethod'}) if defined($opt{'lockmethod'}); ## These options must be grabbed before reading the database file ## since these options may tells us where the database file is. $OUTDIR = $opt{'outdir'} if $opt{'outdir'}; if (!$NoArg && !($SCAN || $IDXONLY || $SINGLE)) { die qq/ERROR: "$OUTDIR" does not exist\n/ unless -e $OUTDIR; if (!$AFS) { die qq/ERROR: "$OUTDIR" is not readable\n/ unless -r $OUTDIR; die qq/ERROR: "$OUTDIR" is not writable\n/ unless -w $OUTDIR; die qq/ERROR: "$OUTDIR" is not executable\n/ unless -x $OUTDIR; } } $DBFILE = $opt{'dbfile'} if $opt{'dbfile'}; ## Create lock $LOCKFILE = join($DIRSEP, $OUTDIR, $LOCKFILE); if ($dolock && $DoArchive && !$SINGLE) { if (!&$LockFunc($LOCKFILE, $LOCKTRIES, $LOCKDELAY, $FORCELOCK)) { $! = 75; # EX_TEMPFAIL (for sendmail) die("ERROR: Unable to lock $OUTDIR after $LOCKTRIES tries\n"); } } ## Check if we need to access database file if ($ReadDB) { $DBPathName = OSis_absolute_path($DBFILE) ? $DBFILE : join($DIRSEP, $OUTDIR, $DBFILE); ## Invoke preload callback if (defined($CBDbPreLoad) && defined(&$CBDbPreLoad)) { &$CBDbPreLoad($DBPathName); } if (-e $DBPathName) { print STDOUT "Reading database ...\n" unless $QUIET; ## Just perform a require. Delete %INC entry to force ## evaluation. delete $INC{$DBPathName}; require($DBPathName) || die("ERROR: Database read error of $DBPathName\n"); ## Check db version with program version if ($VERSION ne $DbVERSION) { warn "Warning: Database ($DbVERSION) != ", "program ($VERSION) version.\n"; } ## Check for 1.x archive, and update data as needed if ($DbVERSION =~ /^1\./) { print STDOUT "Updating database $DbVERSION data ...\n" unless $QUIET; &update_data_1_to_2(); &update_data_2_1_to_later(); &update_data_2_4_to_later(); ## Check for 2.[0-4] archive } elsif ($DbVERSION =~ /^2\.[0-4]\./) { print STDOUT "Updating database $DbVERSION data ...\n" unless $QUIET; if ($DbVERSION =~ /^2\.[01]\./) { &update_data_2_1_to_later(); } &update_data_2_4_to_later(); } ## Set %Follow here just incase it does not get recomputed %Follow = %FollowOld; ## Check if %Time is defined if (!%Time) { my($k,$v); while (($k,$v) = each %IndexNum) { $Time{$k} = (split(/$X/o, $k, 2))[0]; } } if ($DoFromAddr && !%FromAddr) { my($k,$v); while (($k,$v) = each %From) { $FromAddr{$k} = extract_email_address($v); } } if ($DoFromName && !%FromName) { my($k,$v); while (($k,$v) = each %From) { $FromName{$k} = extract_email_name($v); } } } if (!$IDXONLY) { if ($#ARGV < 0) { $ADDSINGLE = 1; } # See if adding single mesg else { $ADDSINGLE = 0; } $ADD = $MhaStdin; } } my($OldMULTIIDX) = $MULTIIDX; ## Remove lock if db not going to be changed if ($SCAN || $IDXONLY) { &$UnlockFunc(); } ## Clear thread flag if genidx, must be explicitly set $THREAD = 0 if $IDXONLY; ## Read resource file(s) ## Look for resource in outdir unless existing according to ## current value. foreach (@FMTFILE) { $_ = join($DIRSEP, $OUTDIR, $_) unless -e $_; &read_resource_file($_); } ## Set locale eval { require POSIX; if ($Lang) { POSIX::setlocale(&POSIX::LC_ALL, $Lang); } else { POSIX::setlocale(&POSIX::LC_ALL, ''); } }; if ($@ && $Lang) { warn qq/Warning: Setting locale appears to not be supported: $@\n/; } ## Re-check readmail settings if (!$SCAN) { # If text encoding has been specified, change $MHeadCnvFunc. if (defined(readmail::load_textencoder())) { $MHeadCnvFunc = \&htmlize_enc_head; } } ## Check if extension for HTML files defined on the command-line $HtmlExt = $opt{'htmlext'} if defined($opt{'htmlext'}); ## Other indexes resource files if (defined($opt{'otherindex'})) { my @array = (); local($_); foreach (@{$opt{'otherindex'}}) { push(@array, split(/$PATHSEP/o, $_)); } unshift(@OtherIdxs, @array); } ## Perl INC paths if (defined($opt{'perlinc'})) { my @array = (); local($_); foreach (@{$opt{'perlinc'}}) { push(@array, split(/$PATHSEP/o, $_)); } unshift(@PerlINC, @array); } @OtherIdxs = remove_dups(\@OtherIdxs); @PerlINC = remove_dups(\@PerlINC); unshift(@INC, @PerlINC); ## Set alternative prefs if (!$SCAN) { readmail::MAILset_alternative_prefs(@MIMEAltPrefs); $IsDefault{'MIMEALTPREFS'} = !scalar(@MIMEAltPrefs); } ## Get other command-line options $DBFILE = $opt{'dbfile'} if $opt{'dbfile'}; # Override db $DBPathName = OSis_absolute_path($DBFILE) ? $DBFILE : join($DIRSEP, $OUTDIR, $DBFILE); $DOCURL = $opt{'docurl'} if $opt{'docurl'}; $FROM = $opt{'msgsep'} if $opt{'msgsep'}; $IDXPREFIX = $opt{'idxprefix'} if $opt{'idxprefix'}; $IDXSIZE = $opt{'idxsize'} if defined($opt{'idxsize'}); $IDXSIZE *= -1 if $IDXSIZE < 0; $OUTDIR = $opt{'outdir'} if $opt{'outdir'}; # Override db $MAILTOURL = $opt{'mailtourl'} if $opt{'mailtourl'}; $NewsUrl = $opt{'newsurl'} if $opt{'newsurl'}; $MAXPGS = $opt{'maxpgs'} if defined($opt{'maxpgs'}); $MAXPGS = 0 if $MAXPGS < 0; $MAXSIZE = $opt{'maxsize'} if defined($opt{'maxsize'}); $MAXSIZE = 0 if $MAXSIZE < 0; $MHPATTERN = $opt{'mhpattern'} if $opt{'mhpattern'}; $TIDXPREFIX = $opt{'tidxprefix'} if $opt{'tidxprefix'}; $TITLE = $opt{'title'} if $opt{'title'}; $TLEVELS = $opt{'tlevels'} if $opt{'tlevels'}; $TTITLE = $opt{'ttitle'} if $opt{'ttitle'}; $MsgPrefix = $opt{'msgprefix'} if defined($opt{'msgprefix'}); $GzipExe = $opt{'gzipexe'} if $opt{'gzipexe'}; $VarExp = $opt{'varregex'} if $opt{'varregex'} && ($opt{'varregex'} =~ /\S/); $TSLICELEVELS = $opt{'tslicelevels'} if $opt{'tslicelevels'}; $IconURLPrefix = $opt{'iconurlprefix'} if $opt{'iconurlprefix'}; $IDXNAME = $opt{'idxfname'} || $IDXNAME || $ENV{'M2H_IDXFNAME'} || "maillist.$HtmlExt"; $TIDXNAME = $opt{'tidxfname'} || $TIDXNAME || $ENV{'M2H_TIDXFNAME'} || "threads.$HtmlExt"; $ExpireDate = $opt{'expiredate'} if $opt{'expiredate'}; $ExpireTime = $opt{'expireage'} if $opt{'expireage'}; $ExpireTime *= -1 if $ExpireTime < 0; $GMTDateFmt = $opt{'gmtdatefmt'} if $opt{'gmtdatefmt'}; $LocalDateFmt = $opt{'localdatefmt'} if $opt{'localdatefmt'}; $AddressModify = $opt{'addressmodifycode'} if $opt{'addressmodifycode'}; $SubArtRxp = $opt{'subjectarticlerxp'} if $opt{'subjectarticlerxp'}; $SubReplyRxp = $opt{'subjectreplyrxp'} if $opt{'subjectreplyrxp'}; $SubStripCode = $opt{'subjectstripcode'} if $opt{'subjectstripcode'}; $MsgExcFilter = $opt{'msgexcfilter'} if defined($opt{'msgexcfilter'}); $NoSubjectTxt = $opt{'nosubjecttxt'} if $opt{'nosubjecttxt'}; $IdxPageNum = $opt{'pagenum'} if defined($opt{'pagenum'}); $AttachmentDir = $opt{'attachmentdir'} if defined($opt{'attachmentdir'}); $AttachmentUrl = $opt{'attachmenturl'} if defined($opt{'attachmenturl'}); ## Determine location of message note files $NoteDir = $opt{'notedir'} if $opt{'notedir'}; ## See if note text defined on command-line if (defined $opt{'notetext'}) { $NoteText = join(" ", @{$opt{'notetext'}}); } else { $NoteText = undef; } ## Parse any rc variable definition from command-line if (defined($opt{'definevar'})) { my @array = (); foreach (@{$opt{'definevar'}}) { push(@array, &parse_vardef_str($_)); } %CustomRcVars = (%CustomRcVars, @array); } $CONLEN = 1 if $opt{'conlen'}; $CONLEN = 0 if $opt{'noconlen'}; $MAIN = 1 if $opt{'main'}; $MAIN = 0 if $opt{'nomain'}; $MODTIME = 1 if $opt{'modtime'}; $MODTIME = 0 if $opt{'nomodtime'}; $MULTIIDX = 1 if $opt{'multipg'}; $MULTIIDX = 0 if $opt{'nomultipg'}; $NODOC = 0 if $opt{'doc'}; $NODOC = 1 if $opt{'nodoc'}; $NOMAILTO = 1 if $opt{'nomailto'}; $NONEWS = 0 if $opt{'news'}; $NONEWS = 1 if $opt{'nonews'}; $NOURL = 0 if $opt{'url'}; $NOURL = 1 if $opt{'nourl'}; $SLOW = 1 if $opt{'savemem'}; $THREAD = 1 if $opt{'thread'}; $THREAD = 0 if $opt{'nothread'}; $TREVERSE = 1 if $opt{'treverse'}; $TREVERSE = 0 if $opt{'notreverse'}; $DoFolRefs = 1 if $opt{'folrefs'}; $DoFolRefs = 0 if $opt{'nofolrefs'}; $GzipFiles = 1 if $opt{'gzipfiles'}; $GzipFiles = 0 if $opt{'nogzipfiles'}; $GzipLinks = 1 if $opt{'gziplinks'}; $GzipLinks = 0 if $opt{'nogziplinks'}; $NoMsgPgs = 0 if $opt{'msgpgs'}; $NoMsgPgs = 1 if $opt{'nomsgpgs'}; $SaveRsrcs = 1 if $opt{'saveresources'}; $SaveRsrcs = 0 if $opt{'nosaveresources'}; $SpamMode = 1 if $opt{'spammode'}; $SpamMode = 0 if $opt{'nospammode'}; $KeepOnRmm = 1 if $opt{'keeponrmm'}; $KeepOnRmm = 0 if $opt{'nokeeponrmm'}; $PrintXComments = 1 if $opt{'printxcomments'}; $PrintXComments = 0 if $opt{'noprintxcomments'}; $CheckNoArchive = 1 if $opt{'checknoarchive'}; $CheckNoArchive = 0 if $opt{'nochecknoarchive'}; $FastTempFiles = 1 if $opt{'fasttempfiles'}; $FastTempFiles = 0 if $opt{'nofasttempfiles'}; $FollowSymlinks = 1 if $opt{'followsymlinks'}; $FollowSymlinks = 0 if $opt{'nofollowsymlinks'}; $POSIXstrftime = 1 if $opt{'posixstrftime'}; $POSIXstrftime = 0 if $opt{'noposixstrftime'}; $AddrModifyBodies = 1 if $opt{'modifybodyaddresses'}; $AddrModifyBodies = 0 if $opt{'nomodifybodyaddresses'}; $DecodeHeads = 1 if $opt{'decodeheads'}; $DecodeHeads = 0 if $opt{'nodecodeheads'}; $readmail::DecodeHeader = $DecodeHeads; ## Clear main flag if genidx and thread specified $MAIN = 0 if $IDXONLY && $THREAD; @DateFields = split(/[:;]/, $opt{'datefields'}) if $opt{'datefields'}; @FromFields = split(/[:;]/, $opt{'fromfields'}) if $opt{'fromfields'}; foreach (@FromFields) { s/\s//g; tr/A-Z/a-z/; } ($TSliceNBefore, $TSliceNAfter, $TSliceInclusive) = split(/[:;]/, $opt{'tslice'}) if $opt{'tslice'}; @Months = split(/:/, $opt{'months'}) if defined($opt{'months'}); @months = split(/:/, $opt{'monthsabr'}) if defined($opt{'monthsabr'}); @Weekdays = split(/:/, $opt{'weekdays'}) if defined($opt{'weekdays'}); @weekdays = split(/:/, $opt{'weekdaysabr'}) if defined($opt{'weekdaysabr'}); $MULTIIDX = 0 if !$IDXSIZE; ## Set umask if ($UNIX) { $UMASK = $opt{'umask'} if defined($opt{'umask'}); eval { umask oct($UMASK); }; } $FilePerms = $opt{'fileperms'} if defined($opt{'fileperms'}); $FilePermsOct = oct($FilePerms); $DbFilePerms = $opt{'dbfileperms'} if defined($opt{'dbfileperms'}); $DbFilePermsOct = oct($DbFilePerms); ## Get sort method $AUTHSORT = 1 if $opt{'authsort'}; $AUTHSORT = 0 if $opt{'noauthsort'}; $SUBSORT = 1 if $opt{'subsort'}; $SUBSORT = 0 if $opt{'nosubsort'}; $NOSORT = 1 if $opt{'nosort'}; $NOSORT = 0 if $opt{'sort'}; $REVSORT = 1 if $opt{'reverse'}; $REVSORT = 0 if $opt{'noreverse'}; if ($NOSORT) { $SUBSORT = 0; $AUTHSORT = 0; } elsif ($SUBSORT) { $AUTHSORT = 0; } ## Check for thread listing order $TSUBSORT = 1 if $opt{'tsubsort'}; $TSUBSORT = 0 if $opt{'notsubsort'}; $TNOSORT = 1 if $opt{'notsort'}; $TNOSORT = 0 if $opt{'tsort'}; $TREVERSE = 1 if $opt{'treverse'}; $TREVERSE = 0 if $opt{'notreverse'}; if ($TNOSORT) { $TSUBSORT = 0; } $NoSubjectThreads = 1 if $opt{'nosubjectthreads'}; $NoSubjectThreads = 0 if $opt{'subjectthreads'}; ## Check if all messages must be updated (this has been simplified; ## any serious change should be done via editidx). if ($EDITIDX || ($OldMULTIIDX != $MULTIIDX)) { $UPDATE_ALL = 1; } else { $UPDATE_ALL = 0; } ## Clean up list-based resources @ExtraHFields = remove_dups(\@ExtraHFields); @FieldOrder = remove_dups(\@FieldOrder); ## Set date names &set_date_names(\@weekdays, \@Weekdays, \@months, \@Months); ## Set %Zone with user-specified timezones while (($zone, $offset) = each(%ZoneUD)) { $Zone{$zone} = $offset; } ## Require some more libaries require 'mhidxrc.pl'; &mhidxrc_set_vars(); require 'mhdysub.pl'; &create_routines(); require 'mhrcvars.pl'; require 'mhindex.pl'; require 'mhthread.pl'; require 'mhdb.pl' unless $SCAN || $IDXONLY || !$DoArchive; ## Load text clipping function if (defined($TextClipSrc)) { eval { require $TextClipSrc; }; if ($@) { warn qq/Warning: $@\n/; } } if (!defined($TextClipFunc) || !defined(&$TextClipFunc)) { $TextClipFunc = \&clip_text; $TextClipSrc = undef; $IsDefault{'TEXTCLIPFUNC'} = 1; } else { $IsDefault{'TEXTCLIPFUNC'} = 0; } ## Check if rewriting addresses in bodies if ($AddrModifyBodies) { $readmail::TextPreFilter = sub { my $fields = shift; my $data_r = shift; # do not rewrite cid: URLs. #$$data_r =~ s{($AddrExp)}{rewrite_raw_address($1)}geox; $$data_r =~ s{ ((?:cid:)?)($AddrExp) }{ ($1 eq "") ? rewrite_raw_address($2) : $1.$2; }gieox; } } ## Predefine %Index2TLoc in case of message deletion if (@TListOrder) { @Index2TLoc{@TListOrder} = (0 .. $#TListOrder); } ## Define %Index2MsgId hash foreach (keys %MsgId) { $Index2MsgId{$MsgId{$_}} = $_; } ## Set $ExpireDateTime from $ExpireDate if ($ExpireDate) { my @array = (); if (@array = &parse_date($ExpireDate)) { $ExpireDateTime = &get_time_from_date(@array[1..$#array]); } else { warn qq|Warning: Unable to parse EXPIREDATE, "$ExpireDate"\n|; } } ## Get highest message number if ($ADD) { $LastMsgNum = &get_last_msg_num(); } else { $LastMsgNum = -1; } ## Delete bogus empty entries in hashes due to bug in earlier ## versions to avoid any future problems. delete($IndexNum{''}); delete($Subject{''}); delete($From{''}); delete($MsgId{''}); delete($FollowOld{''}); delete($ContentType{''}); delete($Refs{''}); # update DOCURL if default old value if ($DOCURL eq 'http://www.oac.uci.edu/indiv/ehood/mhonarc.html') { $DOCURL = 'http://www.mhonarc.org/'; } ## Check if printing process time $TIME = $opt{'time'}; 1; } ##--------------------------------------------------------------------------- ## Version routine ## sub version { select(STDOUT); print $VINFO; } ##--------------------------------------------------------------------------- ## Usage routine ## sub usage { require 'mhusage.pl'; &mhusage(); } ##--------------------------------------------------------------------------- ## Routine to update 1.x data structures to 2.0. ## sub update_data_1_to_2 { local(%EntName2Char) = ( 'lt', '<', 'gt', '>', 'amp', '&', ); #-------------------------------------- sub entname_to_char { my($name) = shift; my($ret) = $EntName2Char{$name}; if (!$ret) { $ret = "&$name;"; } $ret; } #-------------------------------------- my($index); foreach $index (keys %From) { $From{$index} =~ s/\&([\w\-.]+);/&entname_to_char($1)/ge; } foreach $index (keys %Subject) { $Subject{$index} =~ s/\&([\w\-.]+);/&entname_to_char($1)/ge; } delete $IndexNum{''}; $TLITXT = '
  • ' . $TLITXT unless ($TLITXT) && ($TLITXT =~ /
  • /i); $THEAD .= "
      \n" unless ($THEAD) && ($THEAD =~ m%
        \s*$%i); $TFOOT = "
      \n" unless ($TFOOT) && ($TFOOT =~ m%^\s*
    %i); } ##--------------------------------------------------------------------------- ## Update 2.1, or earlier, data. ## sub update_data_2_1_to_later { # we can preserve filter arguments if (defined(%main::MIMEFiltersArgs)) { warn qq/ preserving MIMEARGS...\n/; %readmail::MIMEFiltersArgs = %main::MIMEFiltersArgs; $IsDefault{'MIMEARGS'} = 0; } } ##--------------------------------------------------------------------------- ## Update 2.4, or earlier, data. ## sub update_data_2_4_to_later { # convert Perl 4 style data to Perl 5 style my($index, $value); while (($index, $value) = each(%Refs)) { next if ref($value); $Refs{$index} = [ split(/$X/o, $value) ]; } while (($index, $value) = each(%FollowOld)) { next if ref($value); $FollowOld{$index} = [ split(/$bs/o, $value) ]; } while (($index, $value) = each(%Derived)) { next if ref($value); $Derived{$index} = [ split(/$X/o, $value) ]; } } ##--------------------------------------------------------------------------- ## Initialize readmail.pl variables ## sub mhinit_readmail_vars { $readmail::DEBUG = $DEBUG; ## Default decoders %readmail::MIMEDecoders = ( '7bit' => 'as-is', '8bit' => 'as-is', 'binary' => 'as-is', 'base64' => 'base64::b64decode', 'quoted-printable' => 'quoted_printable::qprdecode', 'x-uuencode' => 'base64::uudecode', 'x-uue' => 'base64::uudecode', 'uuencode' => 'base64::uudecode', ); %readmail::MIMEDecodersSrc = ( 'base64' => 'base64.pl', 'quoted-printable' => 'qprint.pl', 'x-uuencode' => 'base64.pl', 'x-uue' => 'base64.pl', 'uuencode' => 'base64.pl', ); $IsDefault{'MIMEDECODERS'} = 1; ## Default filters %readmail::MIMEFilters = ( # Content-type Filter #----------------------------------------------------------------- "application/ms-tnef", "m2h_null::filter", "application/octet-stream", "m2h_external::filter", "application/x-patch", "m2h_text_plain::filter", "message/delivery-status", "m2h_text_plain::filter", "message/external-body", "m2h_msg_extbody::filter", "message/partial", "m2h_text_plain::filter", "text/enriched", "m2h_text_enriched::filter", "text/html", "m2h_text_html::filter", "text/plain", "m2h_text_plain::filter", "text/richtext", "m2h_text_enriched::filter", "text/tab-separated-values", "m2h_text_tsv::filter", "text/x-html", "m2h_text_html::filter", "application/*", "m2h_external::filter", "audio/*", "m2h_external::filter", "chemical/*", "m2h_external::filter", "image/*", "m2h_external::filter", "model/*", "m2h_external::filter", "text/*", "m2h_text_plain::filter", "video/*", "m2h_external::filter", "x-sun-attachment", "m2h_text_plain::filter", ); %readmail::MIMEFiltersSrc = ( # Content-type Filter #----------------------------------------------------------------- "application/ms-tnef", "mhnull.pl", "application/octet-stream", "mhexternal.pl", "application/x-patch", "mhtxtplain.pl", "message/delivery-status", "mhtxtplain.pl", "message/external-body", "mhmsgextbody.pl", "message/partial", "mhtxtplain.pl", "text/enriched", "mhtxtenrich.pl", "text/html", "mhtxthtml.pl", "text/plain", "mhtxtplain.pl", "text/richtext", "mhtxtenrich.pl", "text/tab-separated-values", "mhtxttsv.pl", "text/x-html", "mhtxthtml.pl", "application/*", "mhexternal.pl", "audio/*", "mhexternal.pl", "chemical/*", "mhexternal.pl", "image/*", "mhexternal.pl", "model/*", "mhexternal.pl", "text/*", "mhtxtplain.pl", "video/*", "mhexternal.pl", "x-sun-attachment", "mhtxtplain.pl", ); $IsDefault{'MIMEFILTERS'} = 1; ## Default filter arguments %readmail::MIMEFiltersArgs = ( # Content-type Arguments #----------------------------------------------------------------- 'm2h_external::filter', 'inline', ); $IsDefault{'MIMEARGS'} = 1; ## Charset filters %readmail::MIMECharSetConverters = ( # Character set Converter Function #----------------------------------------------------------------- 'plain', 'mhonarc::htmlize', 'us-ascii', 'mhonarc::htmlize', 'iso-8859-1', 'MHonArc::CharEnt::str2sgml', 'iso-8859-2', 'MHonArc::CharEnt::str2sgml', 'iso-8859-3', 'MHonArc::CharEnt::str2sgml', 'iso-8859-4', 'MHonArc::CharEnt::str2sgml', 'iso-8859-5', 'MHonArc::CharEnt::str2sgml', 'iso-8859-6', 'MHonArc::CharEnt::str2sgml', 'iso-8859-7', 'MHonArc::CharEnt::str2sgml', 'iso-8859-8', 'MHonArc::CharEnt::str2sgml', 'iso-8859-9', 'MHonArc::CharEnt::str2sgml', 'iso-8859-10', 'MHonArc::CharEnt::str2sgml', 'iso-8859-11', 'MHonArc::CharEnt::str2sgml', 'iso-8859-13', 'MHonArc::CharEnt::str2sgml', 'iso-8859-14', 'MHonArc::CharEnt::str2sgml', 'iso-8859-15', 'MHonArc::CharEnt::str2sgml', 'iso-8859-16', 'MHonArc::CharEnt::str2sgml', 'iso-2022-jp', 'MHonArc::CharEnt::str2sgml', 'iso-2022-kr', 'MHonArc::CharEnt::str2sgml', 'euc-jp', 'MHonArc::CharEnt::str2sgml', 'utf-8', 'MHonArc::CharEnt::str2sgml', 'cp866', 'MHonArc::CharEnt::str2sgml', 'cp932', 'MHonArc::CharEnt::str2sgml', 'cp936', 'MHonArc::CharEnt::str2sgml', 'cp949', 'MHonArc::CharEnt::str2sgml', 'cp950', 'MHonArc::CharEnt::str2sgml', 'cp1250', 'MHonArc::CharEnt::str2sgml', 'cp1251', 'MHonArc::CharEnt::str2sgml', 'cp1252', 'MHonArc::CharEnt::str2sgml', 'cp1253', 'MHonArc::CharEnt::str2sgml', 'cp1254', 'MHonArc::CharEnt::str2sgml', 'cp1255', 'MHonArc::CharEnt::str2sgml', 'cp1256', 'MHonArc::CharEnt::str2sgml', 'cp1257', 'MHonArc::CharEnt::str2sgml', 'cp1258', 'MHonArc::CharEnt::str2sgml', 'koi-0', 'MHonArc::CharEnt::str2sgml', 'koi-7', 'MHonArc::CharEnt::str2sgml', 'koi8-a', 'MHonArc::CharEnt::str2sgml', 'koi8-b', 'MHonArc::CharEnt::str2sgml', 'koi8-e', 'MHonArc::CharEnt::str2sgml', 'koi8-f', 'MHonArc::CharEnt::str2sgml', 'koi8-r', 'MHonArc::CharEnt::str2sgml', 'koi8-u', 'MHonArc::CharEnt::str2sgml', 'gost19768-87', 'MHonArc::CharEnt::str2sgml', 'viscii', 'MHonArc::CharEnt::str2sgml', 'big5-eten', 'MHonArc::CharEnt::str2sgml', 'big5-hkscs', 'MHonArc::CharEnt::str2sgml', 'gb2312', 'MHonArc::CharEnt::str2sgml', 'macarabic', 'MHonArc::CharEnt::str2sgml', 'maccentraleurroman', 'MHonArc::CharEnt::str2sgml', 'maccroatian', 'MHonArc::CharEnt::str2sgml', 'maccyrillic', 'MHonArc::CharEnt::str2sgml', 'macgreek', 'MHonArc::CharEnt::str2sgml', 'machebrew', 'MHonArc::CharEnt::str2sgml', 'macicelandic', 'MHonArc::CharEnt::str2sgml', 'macromanian', 'MHonArc::CharEnt::str2sgml', 'macroman', 'MHonArc::CharEnt::str2sgml', 'macthai', 'MHonArc::CharEnt::str2sgml', 'macturkish', 'MHonArc::CharEnt::str2sgml', 'hp-roman8', 'MHonArc::CharEnt::str2sgml', 'default', '-ignore-', ); %readmail::MIMECharSetConvertersSrc = ( # Character set Converter Function #----------------------------------------------------------------- 'plain', undef, 'us-ascii', undef, 'iso-8859-1', 'MHonArc/CharEnt.pm', 'iso-8859-2', 'MHonArc/CharEnt.pm', 'iso-8859-3', 'MHonArc/CharEnt.pm', 'iso-8859-4', 'MHonArc/CharEnt.pm', 'iso-8859-5', 'MHonArc/CharEnt.pm', 'iso-8859-6', 'MHonArc/CharEnt.pm', 'iso-8859-7', 'MHonArc/CharEnt.pm', 'iso-8859-8', 'MHonArc/CharEnt.pm', 'iso-8859-9', 'MHonArc/CharEnt.pm', 'iso-8859-10', 'MHonArc/CharEnt.pm', 'iso-8859-11', 'MHonArc/CharEnt.pm', 'iso-8859-13', 'MHonArc/CharEnt.pm', 'iso-8859-14', 'MHonArc/CharEnt.pm', 'iso-8859-15', 'MHonArc/CharEnt.pm', 'iso-8859-16', 'MHonArc/CharEnt.pm', 'iso-2022-jp', 'MHonArc/CharEnt.pm', 'iso-2022-kr', 'MHonArc/CharEnt.pm', 'euc-jp', 'MHonArc/CharEnt.pm', 'utf-8', 'MHonArc/CharEnt.pm', 'cp866', 'MHonArc/CharEnt.pm', 'cp932', 'MHonArc/CharEnt.pm', 'cp936', 'MHonArc/CharEnt.pm', 'cp949', 'MHonArc/CharEnt.pm', 'cp950', 'MHonArc/CharEnt.pm', 'cp1250', 'MHonArc/CharEnt.pm', 'cp1251', 'MHonArc/CharEnt.pm', 'cp1252', 'MHonArc/CharEnt.pm', 'cp1253', 'MHonArc/CharEnt.pm', 'cp1254', 'MHonArc/CharEnt.pm', 'cp1255', 'MHonArc/CharEnt.pm', 'cp1256', 'MHonArc/CharEnt.pm', 'cp1257', 'MHonArc/CharEnt.pm', 'cp1258', 'MHonArc/CharEnt.pm', 'koi-0', 'MHonArc/CharEnt.pm', 'koi-7', 'MHonArc/CharEnt.pm', 'koi8-a', 'MHonArc/CharEnt.pm', 'koi8-b', 'MHonArc/CharEnt.pm', 'koi8-e', 'MHonArc/CharEnt.pm', 'koi8-f', 'MHonArc/CharEnt.pm', 'koi8-r', 'MHonArc/CharEnt.pm', 'koi8-u', 'MHonArc/CharEnt.pm', 'gost19768-87', 'MHonArc/CharEnt.pm', 'viscii', 'MHonArc/CharEnt.pm', 'big5-eten', 'MHonArc/CharEnt.pm', 'big5-hkscs', 'MHonArc/CharEnt.pm', 'gb2312', 'MHonArc/CharEnt.pm', 'macarabic', 'MHonArc/CharEnt.pm', 'maccentraleurroman', 'MHonArc/CharEnt.pm', 'maccroatian', 'MHonArc/CharEnt.pm', 'maccyrillic', 'MHonArc/CharEnt.pm', 'macgreek', 'MHonArc/CharEnt.pm', 'machebrew', 'MHonArc/CharEnt.pm', 'macicelandic', 'MHonArc/CharEnt.pm', 'macromanian', 'MHonArc/CharEnt.pm', 'macroman', 'MHonArc/CharEnt.pm', 'macthai', 'MHonArc/CharEnt.pm', 'macturkish', 'MHonArc/CharEnt.pm', 'hp-roman8', 'MHonArc/CharEnt.pm', 'default', undef, ); $IsDefault{'CHARSETCONVERTERS'} = 1; ## Default charset aliases readmail::MAILset_charset_aliases({ 'us-ascii' => [ 'ascii', 'ansi_x3.4-1968', 'iso646', 'iso646-us', 'iso646.irv:1991', 'cp367', 'ibm367', 'csascii', 'iso-ir-6', 'us' ], 'iso-8859-1' => [ 'latin1', 'l1', 'iso_8859_1', 'iso_8859-1:1987', 'iso8859-1', 'iso8859_1', '8859-1', '8859_1', 'cp819', 'ibm819', 'x-mac-latin1', 'iso-ir-100' ], 'iso-8859-2' => [ 'latin2', 'l2', 'iso_8859_2', 'iso_8859-2:1987', 'iso8859-2', 'iso8859_2', '8859-2', '8859_2', 'iso-ir-101' ], 'iso-8859-3' => [ 'latin3', 'l3', 'iso_8859_3', 'iso_8859-3:1988', 'iso8859-3', 'iso8859_3', '8859-3', '8859_3', 'iso-ir-109' ], 'iso-8859-4' => [ 'latin4', 'l4', 'iso_8859_4', 'iso_8859-4:1988', 'iso8859-4', 'iso8859_4', '8859-4', '8859_4', 'iso-ir-110' ], 'iso-8859-5' => [ 'iso_8859-5:1988', 'cyrillic', 'iso-ir-144' ], 'iso-8859-6' => [ 'iso_8859-6:1987', 'arabic', 'asmo-708', 'ecma-114', 'iso-ir-127' ], 'iso-8859-7' => [ 'iso_8859-7:1987', 'greek', 'greek8', 'ecma-118', 'elot_928', 'iso-ir-126' ], 'iso-8859-8' => [ 'iso-8859-8-i', 'iso_8859-8:1988', 'hebrew', 'iso-ir-138' ], 'iso-8859-9' => [ 'latin5', 'l5', 'iso_8859_9', 'iso-8859_9:1989', 'iso8859-9', 'iso8859_9', '8859-9', '8859_9', 'iso-ir-148' ], 'iso-8859-10' => [ 'latin6', 'l6', 'iso_8859_10', 'iso_8859-10:1993', 'iso8859-10', 'iso8859_10', '8859-10', '8859_10', 'iso-ir-157' ], 'iso-8859-13' => [ 'latin7' ,'l7' ], 'iso-8859-14' => [ 'latin8' ,'l8' ], 'iso-8859-15' => [ 'latin9', 'latin0', 'l9', 'l0', 'iso_8859_15', 'iso8859-15', 'iso8859_15', '8859-15', '8859_15' ], 'iso-2022-jp' => [ 'iso-2022-jp-1' ], 'utf-8' => [ 'utf8' ], 'cp932' => [ 'shiftjis', 'shift_jis', 'shift-jis', 'x-sjis', 'ms_kanji', 'csshiftjis' ], 'cp936' => [ 'gbk', 'ms936', 'windows-936' ], 'cp949' => [ 'euc-kr', 'ks_c_5601-1987', 'ks_c_5601-1989', 'ksc_5601', 'iso-ir-149', 'windows-949', 'ms949', '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', 'ecma-113:1986' ], 'koi8-r' => [ 'cp878' ], 'gost-19768-87' => [ 'ecma-cyrillic', 'ecma-113', 'ecma-113:1988' ], 'big5-eten' => [ 'big5', 'csbig5', 'tcs-big5', 'tcsbig5' ], 'big5-hkscs' => [ 'big5hkscs', 'big5hk', 'hkscs-big5', 'hk-big5' ], 'gb2312' => [ 'gb_2312-80', 'csgb2312', 'hz-gb-2312', 'iso-ir-58', 'euc-cn', 'chinese', 'csiso58gb231280' ], 'macarabic' => [ 'apple-arabic', 'x-mac-arabic' ], 'maccentraleurroman' => [ 'apple-centeuro', 'x-mac-centraleurroman' ], 'maccroatian' => [ 'apple-croatian', 'x-mac-croatian' ], 'maccyrillic' => [ 'apple-cyrillic', 'x-mac-cyrillic' ], 'macgreek' => [ 'apple-greek', 'x-mac-greek' ], 'machebrew' => [ 'apple-hebrew', 'x-mac-hebrew' ], 'macicelandic' => [ 'apple-iceland', 'x-mac-icelandic' ], 'macromanian' => [ 'apple-romanian', 'x-mac-romanian' ], 'macroman' => [ 'apple-roman', 'mac', 'macintosh', 'x-mac-roman' ], 'macthai' => [ 'apple-thai', 'x-mac-thai' ], 'macturkish' => [ 'apple-turkish', 'x-mac-turkish' ], }); $IsDefault{'CHARSETALIASES'} = 1; ## Content-Types to exclude: ## Nothing is excluded by default. %readmail::MIMEExcs = ( ); $IsDefault{'MIMEEXCS'} = 1; ## Content-Types to only include: ## Blank by default: include everything %readmail::MIMEIncs = ( ); $IsDefault{'MIMEIncs'} = 1; ## Content-type multipart/alternative preferences ## Note: The variable is not a readmail package variable, but it ## is used to set readmail package properties. @MIMEAltPrefs = ( ); $IsDefault{'MIMEALTPREFS'} = 1; ## Text encoding $readmail::TextEncode = undef; $IsDefault{'TEXTENCODE'} = 1; $readmail::FormatHeaderFunc = \&mhonarc::htmlize_header; $MHeadCnvFunc = \&readmail::MAILdecode_1522_str; } ##--------------------------------------------------------------------------- 1; MHonArc-2.6.18/lib/mhutil.pl0000644004705000001440000004720111510035170014521 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-2.6.18/lib/mhrcvars.pl0000644004705000001440000006655711177375157015110 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-2.6.18/lib/mhtxtenrich.pl0000644004705000001440000001605411507437070015571 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-2.6.18/lib/iso2022jp.pl0000644004705000001440000001405411177400310014652 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: iso2022jp.pl,v 1.10 2009/05/03 20:38:32 ehood Exp $ ## Author(s): ## Earl Hood mhonarc@mhonarc.org ## NIIBE Yutaka gniibe@mri.co.jp ## Takashi P.KATOH p-katoh@shiratori.riec.tohoku.ac.jp ## Description: ## Library defines routine to process iso-2022-jp data. ##---------------------------------------------------------------------------## ## Copyright (C) 1995-2002 ## Earl Hood, mhonarc@mhonarc.org ## NIIBE Yutaka, gniibe@mri.co.jp ## Takashi P.KATOH, p-katoh@shiratori.riec.tohoku.ac.jp ## ## 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 iso_2022_jp; $Url = '(http://|https://|ftp://|afs://|wais://|telnet://|ldap://' . '|gopher://|news:|nntp:|mid:|cid:|mailto:|prospero:)'; $UrlExp = $Url . q%[^\s\(\)\|<>"']*[^\.?!;,"'\|\[\]\(\)\s<>]%; $HUrlExp = $Url . q%[^\s\(\)\|<>"'\&]*[^\.?!;,"'\|\[\]\(\)\s<>\&]%; ##---------------------------------------------------------------------------## ## str2html(): Convert an iso-2022-jp string into HTML. Function ## interface similiar as iso8859.pl function. ## sub str2html { jp2022_to_html($_[0], 1); } ##---------------------------------------------------------------------------## ## Function to convert ISO-2022-JP data into HTML. Function is based ## on the following RFCs: ## ## RFC-1468 I ## J. Murai, M. Crispin, E. van der Poel, "Japanese Character ## Encoding for Internet Messages", 06/04/1993. (Pages=6) ## ## RFC-1554 I ## M. Ohta, K. Handa, "ISO-2022-JP-2: Multilingual Extension of ## ISO-2022-JP", 12/23/1993. (Pages=6) ## sub jp2022_to_html { my($body) = shift; my($nourl) = shift; my(@lines) = split(/\r?\n/,$body); my($ret, $ascii_text); local($_); $ret = ""; my $cnt = scalar(@lines); my $i = 0; foreach (@lines) { my $line = ""; # a trick to process preceding ASCII text $_ = "\033(B" . $_ unless /^\033/; # Process Each Segment while(1) { if (s/^(\033\([BJ])//) { # Single Byte Segment $line .= $1; while(1) { if (s/^([^\033]+)//) { # ASCII plain text $ascii_text = $1; # Replace meta characters in ASCII plain text $ascii_text =~ s%\&%\&%g; $ascii_text =~ s%<%\<%g; $ascii_text =~ s%>%\>%g; ## Convert URLs to hyperlinks $ascii_text =~ s%($HUrlExp)%$1%gio unless $nourl; $line .= $ascii_text; } elsif (s/(\033\.[A-F])//) { # G2 Designate Sequence $line .= $1; } elsif (s/(\033N[ -])//) { # Single Shift Sequence $line .= $1; } else { last; } } } elsif (s/^(\033\$[\@AB]|\033\$\([CD])//) { # Double Byte Segment $line .= $1; while (1) { if (s/^([!-~][!-~]+)//) { # Double Char plain text $line .= $1; } elsif (s/(\033\.[A-F])//) { # G2 Designate Sequence $line .= $1; } elsif (s/(\033N[ -])//) { # Single Shift Sequence $line .= $1; } else { last; } } } else { # Something wrong in text $line .= $_; last; } } # remove a `trick' $line =~ s/^\033\(B//; $ret .= $line; # add back eol $ret .= "\n" unless (++$i >= $cnt); } ($ret); } ##---------------------------------------------------------------------------## ## clip($str, $length, $is_html, $has_tags): Clip an iso-2022-jp string. ## ## The last argument $is_html specifies '&' should be treated ## as HTML character or not. ## (i.e., the length of '&' will be 1 if $is_html). ## sub clip { # &clip($str, 10, 1, 1); my($str) = shift; my($length) = shift; my($is_html) = shift; my($has_tags) = shift; my($ret, $inascii); local($_) = $str; $ret = ""; # a trick to process preceding ASCII text $_ = "\033(B" . $_ unless /^\033/; # Process Each Segment CLIP: while(1) { if (s/^(\033\([BJ])//) { # Single Byte Segment $inascii = 1; $ret .= $1; while(1) { if (s/^([^\033])//) { # ASCII plain text if ($is_html) { if (($1 eq '<') && $has_tags) { s/^[^>\033]*>//; } else { if ($1 eq '&') { s/^([^\;]*\;)//; $ret .= "&$1"; } else { $ret .= $1; } $length--; } } else { $ret .= $1; $length--; } } elsif (s/(\033\.[A-F])//) { # G2 Designate Sequence $ret .= $1; } elsif (s/(\033N[ -])//) { # Single Shift Sequence $ret .= $1; $length--; } else { last; } last CLIP if ($length <= 0); } } elsif (s/^(\033\$[\@AB]|\033\$\([CD])//) { # Double Byte Segment $inascii = 0; $ret .= $1; while (1) { if (s/^([!-~][!-~])//) { # Double Char plain text $ret .= $1; # The length of a double-byte-char is assumed 2. # If we consider compatibility with UTF-8, it should be 1. $length -= 2; } elsif (s/(\033\.[A-F])//) { # G2 Designate Sequence $ret .= $1; } elsif (s/(\033N[ -])//) { # Single Shift Sequence $ret .= $1; $length--; } else { last; } last CLIP if ($length <= 0); } } else { # Something wrong in text $ret .= $_; last; } } # remove a `trick' $ret =~ s/^\033\(B//; # Shuold we check the last \033\([BJ] sequence? # (I believe it is too paranoid). $ret .= "\033(B" unless $inascii; ($ret); } ##---------------------------------------------------------------------------## 1; MHonArc-2.6.18/lib/mhrmm.pl0000644004705000001440000000644507351420173014355 0ustar ehoodusers##---------------------------------------------------------------------------## ## File: ## $Id: mhrmm.pl,v 1.6 2001/09/17 16:10:35 ehood Exp $ ## Author: ## Earl Hood mhonarc@mhonarc.org ## Description: ## Rmm routine 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; ##--------------------------------------------------------------------------- ## Function for removing messages. ## sub rmm { my(@numbers) = (); my($key, %Num2Index, $num, $i, $pg); local($_); ## Create list of messages to remove foreach (@_) { # range if (/^(\d+)-(\d+)$/) { push(@numbers, int($1) .. int($2)); next; } # single number if (/^\d+$/) { push(@numbers, int($_)); next; } # probably message-id push(@numbers, $_); } if ($#numbers < 0) { warn("Warning: No messages specified\n"); return 0; } ## Make hash to perform deletions foreach $key (keys %IndexNum) { $Num2Index{$IndexNum{$key}} = $key; } ## Set @MListOrder to flag next/prev messages to be updated. ## @TListOrder is already set since it is saved in db. @MListOrder = &sort_messages(); $i=0; foreach $key (@MListOrder) { $Index2MLoc{$key} = $i++; } ## Remove messages foreach $num (@numbers) { if (($key = $Num2Index{$num}) || ($key = $MsgId{$num})) { &delmsg($key); # Need to flag messages that link to deleted message so # they will be updated. foreach (@{$FollowOld{$index}}) { $Update{$IndexNum{$_}} = 1; } $Update{$IndexNum{$TListOrder[$Index2TLoc{$key}-1]}} = 1; $Update{$IndexNum{$TListOrder[$Index2TLoc{$key}+1]}} = 1; $Update{$IndexNum{$MListOrder[$Index2MLoc{$key}-1]}} = 1; $Update{$IndexNum{$MListOrder[$Index2MLoc{$key}+1]}} = 1; # Mark where index page updates start if ($MULTIIDX) { $pg = int($Index2MLoc{$key}/$IDXSIZE)+1; $IdxMinPg = $pg if ($pg < $IdxMinPg || $IdxMinPg < 0); $pg = int($Index2TLoc{$key}/$IDXSIZE)+1; $TIdxMinPg = $pg if ($pg < $TIdxMinPg || $TIdxMinPg < 0); } next; } # message not in archive warn qq/Warning: Message "$num" not in archive\n/; } ## Clear loc data; it will get recomputed @MListOrder = (); %Index2MLoc = (); write_pages(); 1; } ##---------------------------------------------------------------------------## 1; MHonArc-2.6.18/lib/mhtxthtml.pl0000644004705000001440000004620411512357136015265 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