I am spending time working on the next major release of MHonArc.
There are still some minor touch-ups required and the documentation
needs to be updated to reflect the new functionality (which may take
some time). I will have a beta release when the docs are updated.
I can make the alpha version available for those interested.
To give you an idea of what MHonArc v2.0 can do, there is a
sample archive for your viewing at the following URL:
IMPORTANT NOTE: This sample archive makes use of (netscape)
frames and tables. Hence, you need a frame-aware and
table-aware browser. The main point of the demo archive is
to illustrate the customization capabilies of mhonarc v2.0.
The resource file that creates the archive may be obtained at
BTW, there is NO inherent support of frames and tables in MHonArc v2.0.
The defaults still utilize HTML 2.0 markup. The customization
capabilities allow you to take advantage of HTML extensions if you
choose to do so.
Following is currently the changes list for v2.0. If there is some
feature that you think would be nice to have in v2.0, then send
a follow-up message (of course donations are welcome to give more
weight to your requests, or if you just feel like giving... :-).
Changes in MHonArc v2.0
o RFC 1522 support. Charset filters can be plugged in to
handle character sets not recognized by mhonarc.
The library, iso8859.pl, contains charset filters
for character sets iso-8859-[1-10].
o Multi-page index generation.
o Subject-based threading is done inconjunction with explicit
o Missing messages in a thread are recognized when processing
messages that utilize the References field.
o New resources for customizing thread indexes. There is
now complete user control on how thread indexes are
o Resource are available to access the next and previous messages
in thread from messages.
o Inclusion of files containing resource settings can be
done within a resource file.
o Support for user defined resource variables.
o Support for user defined derived files for messages.
o Support for the Content-Length field.
o Modification time of messages, and derived files, can be
Set to the Received/Date time specified in the message.
o More control on how mail headers get formatted.
o Added filter in mhexternal.pl to be the default filter
for main content-types: application, image, video, audio.
o Updated mhexternal.pl to show content-type if the data
is not recognized.
o Updated parse_date() routine in mhutil.pl to ignore
character case when mapping month and weekday names to
o The comment declaration "<!--X-Body-of-Message-->" is
now inserted between the message header and body. Helps
in the building of some search indexes to restrict searches
on message data.
o Fixed bug in creating links of message-ids. Mhonarc blindingly
made links of message-ids when editting messages w/o
consideration that the message-ids may already be linked. This
caused markup like the following to occur:
<A HREF="..."><A HREF="..."><A HREF="...">...</A></A></A>...
Browsers handle the invalid markup with no problems, causing
the bug to go unnoticed for a long time. Now, only new
added message-ids are scanned for when creating links.
o Reorganized code. Some new libraries have been created
to help in maintenance.
o Complete list of new resources:
- Specify character set filters
CONLEN - Honor content-lengths
DEFINEVAR - Define resource variables
DEFINEDERIVED - Define user defined derived file
FIELDSBEG - Begin markup of converted mail header
FIELDSEND - End markup of converted mail header
FLDBEG - Begin markup of mail header field text
FLDEND - End markup of mail header field text
FOLREFS - Print links to explicit follow-ups & refs
HEADBODYSEP - Markup between converted mail header & body
INCLUDE - Read resources from other files
LABELBEG - Begin markup of mail header label
LABELEND - End markup of mail header label
MAIN - Create main index
MODTIME - Set file times to message dates
MULTIPG - Create multi-page indexes
NEXTPGLINK - Link to next page in main index
NEXTPGLINK - Inactive link to next page in main index
NOCONLEN - Ignore content-lengths
NOFOLREFS - Do not print links to follow-ups & refs
NOMAIN - Do not create main index
NOMODTIME - Do not set file times to message dates
NOMULTIPG - Do not create multi-page indexes
PREVPGLINK - Link to previous page in main index
PREVPGLINKIA - Inactive link to previous page in main index
SUBJECTHEADER - Markup for subject header in converted mail
TSUBLISTBEG - List begin in sub-thread
TSUBLISTEND - List end in sub-thread
TSUBJECTBEG - Begin markup for subject-based sub-thread
TSUBJECTEND - End markup for subject-based sub-thread
TSINGLETXT - Markup for mesg not part of a thread
TTOPBEGIN - Begin for top of a thread
TTOPEND - End for a thread
TLINONE - Markup for missing message in a thread
TLIEND - Thread idx list item end
TNEXTBUTTON - Thread next button template
TNEXTBUTTONIA - Inactive thread next button template
TNEXTLINK - Thread next link template
TNEXTLINKIA - Inactive thread next link template
TNEXTPGLINK - Link to next page in thread index
TNEXTPGLINKIA - Inactive link to next page in thread index
TPREVBUTTON - Thread previous button template
TPREVBUTTONIA - Inactive thread previous button template
TPREVLINK - Thread previous link template
TPREVLINKIA - Inactive thread previous link template
TPREVPGLINK - Link to prev page in thread index
TPREVPGLINKIA - Inactive link to prev page in thread index
o List of removed resources:
o Complete list of new resource variables:
(NOTE: Some variables are only valid in certain contexts)
$NEXTPG$ - Filename of next main index page
$NEXTPGLINK$ - Link to next page of main index
$NUMOFPAGES$ - Total number of pages in index
$PAGENUM$ - Current page number of index
$PREVPG$ - Filename of previous main index page
$PREVPGLINK$ - Link to previous page of main index
$TNEXTBUTTON$ - Button for next mesg in thread
$TNEXTFROM$ - From of next mesg in thread
$TNEXTFROMADDR$ - From address of next mesg in thread
$TNEXTFROMNAME$ - From name of next mesg in thread
$TNEXTLINK$ - Link for next mesg in thread
$TNEXTMSG$ - Next mesg filename in thread
$TNEXTMSGNUM$ - Next mesg number in thread
$TNEXTPG$ - Filename of next thread index page
$TNEXTPGLINK$ - Link to next page of thread index
$TNEXTSUBJECT$ - Next mesg subject in thread
$TPREVBUTTON$ - Button for prev mesg in thread
$TPREVFROM$ - From of previous mesg in thread
$TPREVFROMADDR$ - From address of previous mesg in thread
$TPREVFROMNAME$ - From name of previous mesg in thread
$TPREVLINK$ - Link for prev mesg in thread
$TPREVMSG$ - Previous mesg filename in thread
$TPREVMSGNUM$ - Previous mesg number in thread
$TPREVPG$ - Filename of previous thread index page
$TPREVPGLINK$ - Link to previous page of thread index
$TPREVSUBJECT$ - Previous mesg subject in thread
o New command-line options:
-conlen - Honor Content-Length fields
-folrefs - Print links to explicit follow-ups/references
-main - Create a main index
-modtime - Set modification time on files to message
-multipg - Generate multi-page indexes
-noconlen - Ignore Content-Length fields
-nofolrefs - Do not print links to explicit
-nomain - Do not create a main index
-nomodtime - Do not set mod time on files to message date
-nomultipg - Do not generate multi-page indexes
-v - Print version information
o Removed command-line options:
o Some internal changes to how data is stored in databases
(needed for 1522 support). v2.0 will automatically
modify 1.x databases to the 2.0 format.
o The -single option utilizes the same mail output routine
utilized by regular archive processing.
o Some changes to default resource settings.
Earl Hood | ISOGEN INTERNATIONAL CORP
ehood(_at_)isogen(_dot_)com | dba Highland Consulting
Phone: 214-953-0004 x127 | 2200 North Lamar #230
FAX: 214-953-3152 | Dallas, TX 75202