[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

MHonArc v2.5.0b Is Available



MHonArc Users,

A beta release of v2.5 is available for download from
<http://www.mhonarc.org/>.

NOTE: v2.5 contains changes that include some incompatibilities with
previous releases.  These incompatibilities should not affect most
users, BUT, make sure to read the release notes before using v2.5 to
see if some of the changes may affect you.

Summary of bug fixes:
--------------------

    Version:	2.4.5 - 2.4.9
    Problem:   	Numerous '$' characters are scattered throughout
		archive pages.
    Solution:	This problem can occur with a bad VARREGEX resource
		setting, or if set to the empty string.  mhrcfile.pl
		updated to only honor a VARREGEX setting if it is
		non-blank.  It is still up to the user to be extremely
		careful when setting this resource.  A big warning
		has been added to the VARREGEX resource reference
		page about the usage of the resource.

    Version:	2.4.9, and earlier
    Problem:   	Default value of TSLICE resource was "0:0".
    Solution:	The docs say the default should be "0:4", so code
		fixed in mhinit.pl to reflect docs.  Note, existing
		archives that used the default value will have 0:0
		and would require an explicit setting of TSLICE to
		correct.  Fixed default will only affect new archives.

    Version:	2.4.9, and earlier
    Problem:   	M2H_RCFILE envariable setting had no affect.
    Solution:	Bug introduced when multiple rcfiles could be
		specified on the command-line.  Fixed in mhinit.pl.

    Version:	2.4.9
    Problem:   	Image URLs in HTML data are stripped out.
    Solution:	Fixed in mhtxthtml.pl


Summary of changes:
------------------

    o	API for MIMEFILTERS has been changed.  Content filters are
	now called as follows:

	  ($html, @files) =
	      &filter($fields_hash_ref, $body_data_ref, $is_decoded,
		      $filter_args);

	Paramaters:
	  $fields_hash_ref
		      A reference to hash of message/part header
		      fields.  Keys are field names in lowercase
		      and values are array references containing the
		      field values.  For example, to obtain the
		      content-type, if defined, you would do:

			$fields_hash_ref->{'content-type'}[0]

		      Values for a fields are stored in arrays since
		      duplication of fields are possible.  For example,
		      the Received: header field is typically repeated
		      multiple times.  For fields that only occur once,
		      then array for the field will only contain one
		      item.

	  $body_data_ref
		      Reference to body data.  It is okay for the
		      filter to modify the text in-place.

	  $is_decoded
		      Boolean flag if body data has been decoded.
		      This is normally true unless some non-standard
		      content-transfer-encoding is used.

	  $filter_args
		      String containing filter args as defined by
		      MIMEARGS resource.

	Return:
	  The return value is still treated in the same manner as
	  previous releases.  The first item in the return list is
	  the text that should printed to the message page.  Any
	  other items in the return list are derived filenames created
	  by the filter.  If undef, or the empty string, is returned,
	  readmail.pl assumes the filter was unable to filter the
	  data.

	All the filters provided in the MHonArc distribution have
	been modified to use the new calling convention.

    o	The HEADER and FOOTER resources are no longer supported.

    o	The default value of DEFRCNAME is now ".mhonarc.mrc"
	("mhonarc.mrc" for Win/DOS).

    o	ISO8859 character set data processing now defaults to using
	the MHonArc::CharEnt module.  The old iso8859.pl library
	is still provided for compatibility with older archives.
	To update archives to use the new settings, you can run
	the following command,

	    mha-dbedit -rcfile examples/def-mime.mrc \
		       -outdir /path/to/archive

	where "examples/def-mime.mrc" represents the default MIME
	processing resources for MHonArc provided within the MHonArc
	distribution.

	The new module is more efficient in memory usage by only
	loading mappings for character sets actually processed.  The
	old iso8859.pl library preloads all mappings.  Also, the
	module is designed to be easily extensible for processing
	any 8-bit-based character sets.

    o	Reference, follow-up, and derived file information of a
	message is now stored in a different format in the database
	(and internally).  MHonArc will auto-update older archives
	to the new format.  The newer format should provide some
	performance improvement.

    o	Messages with no subjects are now stored with no subjects.
	In previous releases, the text "No Subject" was automatically
	added as a message was parsed, hence there was no real
	indicator that a message had no real subject.

	A related change is that messages without subject text
	are skipped in subject-based thread detection.  Therefore,
	a no-subject message will never be a possible follow-up,
	but it is still possible for it to be an explicit follow-up
	if it includes reference message-ids.

	NOTE: This functionality does not apply to messages
	processed by earlier versions where the text "No Subject"
	was auto-applied to messages when parsed.  A recreation
	of an archive from the original message data would
	have to be done to have new behavior applied to message
	processed by earlier releases.

	A messages with no subject will now have the string
	"[no subject]" displayed any time the $SUBJECT$ resource
	variable is used for the message.

    o	New resources:

	    FIRSTPGLINK 	Link markup for first page of main index.
	    LASTPGLINK 		Link markup for last page of main index.
	    TFIRSTPGLINK 	Link markup for first page of thread index.
	    TLASTPGLINK 	Link markup for last page of thread index.
	    TNEXTINBUTTON	Button markup for next message
				within a thread.
	    TNEXTINBUTTONIA	Inactive button markup for next
				message within a thread.
	    TNEXTINLINK 	Link markup for next message within
				a thread.
	    TNEXTINLINKIA	Inactive link markup for next
				message within a thread.
	    TNEXTTOPBUTTON	Button markup for first message in
				the next thread.
	    TNEXTTOPBUTTONIA	Inactive button markup for first
				message in the next thread.
	    TPREVINBUTTON	Button markup for previous message
				within a thread.
	    TPREVINBUTTONIA	Inactive button markup for previous
				message within a thread.
	    TPREVINLINK 	Link markup for previous message
				within a thread.
	    TPREVINLINKIA	Inactive link markup for previous
				message within a thread.
	    TPREVTOPBUTTON	Button markup for first message in the
				previous thread.
	    TPREVTOPBUTTONIA	Inactive button markup for first
				message in the previous thread.
	    TSLICECONTBEGIN	Thread slice markup before the
				continuation of a broken thread.
	    TSLICECONTEND	Thread slice markup after the
				continuation of a broken thread.
	    TSLICEINDENTBEGIN	Thread slice markup for opening a level
				when continuing a broken thread.
	    TSLICEINDENTEND	Thread slice markup for closing a level
				when continuing a broken thread.
	    TSLICELIEND 	Ending markup for a thread slice
				message listing.
	    TSLICELIENDCUR	Ending markup for a thread slice
				message listing.
	    TSLICELINONE	Thread slice markup for a missing
				message in thread slice.
	    TSLICELINONEEND	Ending markup for a missing message in
				thread slice.
	    TSLICELITXT 	Markup for a thread slice message
				listing.
	    TSLICELITXTCUR	Markup for a thread slice message
				listing if current message.
	    TSLICESINGLETXT	Markup for a thread slice listing with
				no follow-ups.
	    TSLICESINGLETXTCUR	Markup for a thread slice listing with
				no follow-ups if current message.
	    TSLICESUBJECTBEG	Markup before a subject based thread
				slice listing.
	    TSLICESUBJECTEND	Markup after a subject based thread
				slice listing.
	    TSLICESUBLISTBEG	Thread slice markup for starting a
				sub-thread.
	    TSLICESUBLISTEND	Thread slice markup for ending a
				sub-thread.
	    TSLICETOPBEGIN	Thread slice markup for the root/start
				of a thread.
	    TSLICETOPBEGINCUR	Thread slice markup for the root/start
				of a thread.
	    TSLICETOPEND	Thread slice markup for the end of a
				thread.
	    TSLICETOPENDCUR	Thread slice markup for the end of a
				thread if current message.

    o	$TSLICE$ resource variable can now take up to three arguments:

	    $TSLICE(<before>;<after>;<inclusive>)$

	where,

	    <before>	: Number indicated the maximum number of
			  message to print before the current message.
			  If empty, the before value specified in
			  TSLICE resource will be used.
	    <after>	: Number indicated the maximum number of
			  message to print after the current message.
			  If empty, the after value specified in
			  TSLICE resource will be used.
	    <inclusive> : If `1', only messages within the current
			  thread will be printed.  If `0', messages
			  from the previous and next threads can
			  be printed if the values for <before> and
			  <after> would go beyond the current thread.

    o	TSLICE resource updated to allow specification of default
	value of inclusive flag.

    o	The following new message specifications can be used for
	message data-related resource variables:

	    TNEXTIN		Next message within current thread.
	    TNEXTTOP		Start of next thread.
	    TPREVIN		Next message within current thread.
	    TPREVTOP		Start of previous thread.

	When used as arguments to the the $BUTTON$ and $LINK$ resource
	variables, the TNEXTINBUTTON(IA), TNEXTTOPBUTTON(IA),
	TPREVINBUTTON(IA), TPREVTOPBUTTON(IA), TNEXTINLINK(IA),
	TNEXTTOPLINK(IA), TPREVINLINK(IA), TPREVTOPLINK(IA) resources
	are respectively applied.

    o	The use of TNEXT, TPREV (and new TNEXTTOP and TPREVTOP)
	message specifications in resource variables behave more
	intuitively when TREVERSE is active.  If at the boundaries
	of a thread, TNEXT and TPREV will reference the first
	message of the next thread by date and the first message
	of the previous thread by date, respectively.

    o	Version of MHonArc and Perl are printed when MHonArc starts
	unless QUIET is active.

    o	mhtxtplain.pl (text/plain) filter changes:

	.   If the htmlcheck option is set and it is detected that
	    the data is HTML, an attempt is first made to use the
	    registered text/html filter via MIMEFILTERS.  If none
	    is defined, mhtxthtml.pl will be used.

	.   When uudecode option is set, an attempt is to use
	    the registered decoder for uuencode via MIMEDECODERS.
	    If not defined, then base64::uudecode is used from
	    base64.pl.

    o	mhtxthtml.pl (text/html) filter changes:

	.   Elements that have URL attributes that auto-load data --
	    IMG, BODY, IFRAME, FRAME, OBJECT, SCRIPT, INPUT -- have the
	    atributes converted to 'javascript:void(0);' URLs.	See new
	    'allownoncidurls' filter argument below for more details.

	.   The follow filter arguments have been added:

	    allownoncidurls Preserve URL-based attributes that are not
			    cid: URLs.	Normally, any URL-based
			    attribute -- href, src, background,
			    classid, data, longdesc -- will be
			    converted to 'javascript:void(0);'
			    if it is not a cid: URL.  This is to
			    prevent malicious URLs that verify mail
			    addresses for spam purposes, secretly set
			    cookies, or gather some statistical data
			    automatically with the use of elements
			    that cause browsers to automatically
			    fetch data: IMG, BODY, IFRAME, FRAME,
			    OBJECT, SCRIPT, INPUT.

	    notitle  	    Do not print title.

    o	Searching for OTHERINDEXES resource files has been modified.
	The following lists the search order for an OTHERINDEXES
	resource file:

	    1. Current working directory.
	    2. Same directory that the first resource file was read as
	       specified by the RCFILE resource.
	    3. User's home directory.
	    4. Archive directory.
	    5. Perl's @INC.

    o	FIRST, LAST, TFIRST, and TLAST idx_page_spec arguments to
	$PGLINK$ are now supported via the FIRSTPGLINK, LASTPGLINK,
	TFIRSTPGLINK, and TLASTPGLINK resources.

    o	$PGLINKLIST$ resource variable changed to print entire
	list of page links if no arguments are provided.  To get
	the entire list for thread indexes, use: $PGLINKLIST(T)$.

    o	Date parsing routine updated to recognize dates in the
	following format: Weekday, Month DD, YYYY HH:MM Zone.
	Apparently, this is useful if converting mail saved to
	a file in text format from MS Outlook.

    o	Support for defining Perl function callbacks when a
	new message header is read and just after a message body
	has been converted.  Documentation about the callbacks is
	provided in a new API appendix section in the documentation
	and is provided in comments in the example mhasiteinit.pl
	provided in the examples/ directory.

    o	Various internal changes have been made to try to eradicate
	Perl 4-based conventions.  For example, the use of typeglobs to
	pass by "reference" has been replaced by using real references.

	Assuming nothing was screwed up, this change should be
	transparent to most users (with the notable exception of the
	API changes to MIMEFILTERS registered routines).  However,
	if you have mucked with MHonArc internals, or created custom
	modifications, you may need to be aware that changes have
	been made.


[Index of Archives]     [Bugtraq]     [Yosemite News]     [Mhonarc Home]