diff --git a/ACKNOWLG b/ACKNOWLG index b3ffc2b..59b2780 100644 --- a/ACKNOWLG +++ b/ACKNOWLG @@ -1,55 +1,54 @@ -ACKNOWLEDGEMENTS for MHonArc - - http://www.oac.uci.edu/indiv/ehood/mhonarc.html - -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: - - A. P. Barrett - For developing a base64 library. The library has been adapted - to decode base64 messages by MHonArc. - - 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 mhonarc mailing list. - - Roman Czyborra - For his help with the MosaicMail script. - - Timothy Finin - Whose initial feedback on mbox2html (my first mail->HTML - program) caused the ball rolling on developing a more complete - mail-to-HTML program. - - Stephen Franlin - For providing the machine facilities for housing the MHonArc - home page. - - Ken Harward - For helping me tackle Perl problems and for bouncing ideas - off. - - Phyllis Imperatrice - For the initial sketch of the MHonArc logo. - - 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 to get the - ball rolling for MacPerl usage. - - NIIBE Yutaka - For the contribution of a text/plain filter to process - ISO-2022 encoded mail messages (ie. Japanese character set). - ---------------------------------------------------------------------------- -Earl Hood, ehood@medusa.acs.uci.edu -@(#) ACKNOWLG 97/05/14 19:06:19 @(#) +ACKNOWLEDGEMENTS for MHonArc + + http://www.oac.uci.edu/indiv/ehood/mhonarc.html + +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: + + A. P. Barrett + For developing a base64 library. The library has been adapted + to decode base64 messages by MHonArc. + + 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 mhonarc mailing list. + + Roman Czyborra + For his help with the MosaicMail script. + + Timothy Finin + Whose initial feedback on mbox2html (my first mail->HTML + program) caused the ball rolling on developing a more complete + mail-to-HTML program. + + Stephen Franlin + For providing the machine facilities for housing the MHonArc + home page. + + Ken Harward + For helping me tackle Perl problems and for bouncing ideas + off. + + Phyllis Imperatrice + For the initial sketch of the MHonArc logo. + + 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 to get the + ball rolling for MacPerl usage. + + NIIBE Yutaka + For the contribution of a text/plain filter to process + ISO-2022 encoded mail messages (ie. Japanese character set). + +--------------------------------------------------------------------------- +Earl Hood, earlhood@usa.net diff --git a/BUGS b/BUGS index 3d99d55..d785002 100644 --- a/BUGS +++ b/BUGS @@ -1,372 +1,505 @@ - BUGS 98/03/03 19:09:35 - Bug History for MHonArc - -Each bug listing has the following fields: - - Version: Lists the version of MHonArc that the bug was - reported against. It is possible a bug could - be applicable to earlier versions. Version listed - is when the bug was discovered. - Problem: A description of the bug. - Solution: A description of what was done to fix the bug. - Version Fixed: The version that the solution exists in, if - applicable. - - -Bug List ------------------------------------------------------------------------- -Version: 2.1.2 -Problem: The @TListOrder array is empty in .mhonarc.db when - MULTIPG is set. This may cause some messages not - getting properly updated when new messages are added. -Solution: Removed use of splice on @TListOrder when MULTIPG. - Now, array slices are used so @TListOrder is preserved. -Version Fixed: 2.2.0 ------------------------------------------------------------------------- -Version: 2.1.2 -Problem: Convert ISO-2022-JP messages can generate "Out of - Memory" errors. -Solution: The cleanup of mhtxtplain.pl's iso-2022-jp code - introduced a bug that caused an infinite loop and - to gobble memoery until it ran out. The fix was - straight-forward. -Version Fixed: 2.2.0 ------------------------------------------------------------------------- -Version: 2.1.2 -Problem: Quoted text that is broken due to maxwidth setting of - the mhtxtplain.pl filter did not have the quote - character prepended to broken the text. -Solution: A regex updated to dealing with a leading space before - quote character. -Version Fixed: 2.2.0 ------------------------------------------------------------------------- -Version: 2.1.1 -Problem: Documentation of MAILTOURL incorrectly states that - the $TO$ resource variable is the value of the - To: message header field. -Solution: Fixed documentation to state that $TO$ represents the - address being hyperlinked. -Version Fixed: 2.1.2 ------------------------------------------------------------------------- -Version: 2.1.1 -Problem: Attachments saved to files with spaces in filename - (due to "usename" option set to m2h_external::filter), - will cause anchors to the attachments in the HTML - message contain spaces. -Solution: Fixed m2h_external::filter to escape special characters - in the URL linking to the external file. -Version Fixed: 2.1.2 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Message with dates after 2037, or before 1970, will hang - MHonArc, not get processed, or listed in wrong order. -Solution: The problem is that Perl's timelocal.pl library cannot - handle dates out of those ranges (same applies to - Time::Local). Since get_time_from_date() is the only - routine require the services of timelocal.pl, the - routine will generate a warning of bad years and use - the current year. -Version Fixed: 2.1.1 (Work-around) ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Anchors to attachments in a message converted via - SINGLE do not contain OUTDIR if OUTDIR is specified. - OUTDIR may want to be set to all attachments to be - contained in a separate directory from the converted - message. -Solution: mhexternal.pl now checks $SINGLE variable set by the - main code during startup. If set, the value of - $OUTDIR is prepending to any hrefs to external files. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: February is misspelled "Febuary" in mhtime.pl. -Solution: Change the spelling so its correct. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Lowercase timezones in dates are not recognized. -Solution: Code modified to convert zones to uppercase when - performing hash lookups. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Specified filenames of attachments sometimes have a - ';' appended when utilizing the "usename" option is - set for mhexternal.pl. -Solution: Fixed MAILhead_get_disposition() in readmail.pl to - strip off ';' parameter separator. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Specified filenames with spaces of attachments are not - recognized properly. Filename gets truncated to first - occurance of a space. -Solution: Fixed MAILhead_get_disposition() in readmail.pl to - to handle filenames with spaces. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: The HTMLEXT resource does not affect the numbered index - page filenames of a MUTLIPG archive. -Solution: write_main_index() and write_thread_index() fixed. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Anchor text of MAILTOURL links is translated to URL - escaped text. -Solution: mailUrl() routine fixed. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Message 0 could not be deleted if specified with more - than one 0 (eg: 00000); -Solution: rmm() routine fixed. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: SUBJECTHEADER does not get stored in the db. -Solution: output_db() routine updated to save SUBJECTHEADER. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Empty links can be created if there is no "From" defined - for a message and it is used as link text. -Solution: Use 'No Author' as "From" if not defined. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: If a user defined resource variable is a string that - Perl interprets as a false value, it will not be used. -Solution: Changed code to used define() function in - replace_li_vars(). -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.1.0 -Problem: Expired messages are not removed when a the main index - is not sorted by date. -Solution: Always sort message by date when doing expire check. -Version Fixed: 2.1.1 ------------------------------------------------------------------------- -Version: 2.0.1 -Problem: An undefined subroutine error occured during an - RMM operation when there are messages with non-ASCII - encodings in message headers. -Solution: Proper libraries are now loaded for RMM operations. -Version Fixed: 2.1.0 ------------------------------------------------------------------------- -Version: 2.0.1 -Problem: Subjects using the "... -Reply" convention started - a new thread. -Solution: Fixed typo in regexp. -Version Fixed: 2.1.0 ------------------------------------------------------------------------- -Version: 2.0.1 -Problem: Nested anchor markup occurs on index pages when - a message's subject contains a URL and the subject - is used to link to the message page. -Solution: Replaced default routine that converts subject text - to HTML to a routine that does not hyperlink URLs. -Version Fixed: 2.1.0 ------------------------------------------------------------------------- -Version: 2.0.0 -Problem: Bogus empty entry shows up in the database. Bogus - entry appears if a duplicate message is detected. - Potential visible problems of bogus entry are: mailto - links in headers corrupted; a blank listing in the - index. Maybe other potential problems. -Solution: There is a bug in some versions of Perl where a - hash key gets added invalidly. The section of code that - this occurs has been modified to avoid the problem. - For existing databases with a bogus empty entry, - MHonArc now removes any empty key entries. - However, it is recommed to rebuild the archive. -Version Fixed: 2.0.1 ------------------------------------------------------------------------- -Version: 2.0.0 -Problem: Index pages are not properly updated if zero messages - are in the archive (like through the -rmm option). - Even -editidx cannot cause a proper update. -Solution: Page count was set to zero when no messages exist. This - caused problems in conditional checks in the write index - routines. To fix, page count is forced to 1 if their - are no messages. -Version Fixed: 2.0.1 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: Index pages with last page links are not updated - when a new page is added. -Solution: All index pages are regenerated if a new page - is added. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: "-idxsize 0" does not give unlimited page size. -Solution: Problem fixed and now works as documented. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: "-maxsize 0" does not reset archive with - unlimited messages allowed. -Solution: Problem fixed and now works as documented. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: Non-ASCII text encodings (=?ISO-..?...) are not - properly decoded when EDITIDX is set. -Solution: The charset filter libraries are now loaded - for EDITIDX. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: MODTIME resource setting not remembered across - archive updates. -Solution: MODTIME resource is now properly stored in the - database. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: Specifying -rmm and -single caused confusion on - what MHonArc does. -Solution: The case is properly handled, with -rmm taking - precedence. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: 4 digit year not checked before 2 digit year - when parsing dates. -Solution: Fixed. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: Some index pages in multipage indexes not - updated when messages expire. -Solution: Fixed; all pages are regenerated when a message - expires. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: Setting MONTHS and MONTHSABR had no effect. -Solution: Fixed. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: $TNEXTFROM$ actually gave the value of $NEXTFROM$. -Solution: Fixed. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: Numerical timezone offsets not handled properly - when the offset contained non-zero minutes. This - caused message to be sorted wrong by date. -Solution: Fixed. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: Some characters were not properly escaped when - specifying the "in URL" modifier to a resource - variable. -Solution: Fixed. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: Thread (formatting) information lost when a - thread is split across multiple pages. -Solution: Fixed. New resources (TCONTBEGIN, TCONTEND, - TINDENTBEGIN, TINDENTEND) exist to preserve - formatting of threads across pages. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 3 -Problem: If specifying the REVERSE resource, the next/prev - links in messages do not point to the proper - message as one may expect. -Solution: This should be fixed by the new behavior of - $NEXT...$ and $PREV...$ resource variables. -Version Fixed: 2.0.0 ------------------------------------------------------------------------- -Version: 2.0.0 beta 2 -Problem: Perl aborts with message "Undefined subroutine - &main::output_db called ..." when the GENIDX resource - is set. -Solution: Fixed. The output_db function is not applicable when - GENIDX is active. -Version Fixed: 2.0.0 beta 3 ------------------------------------------------------------------------- -Version: 2.0.0 beta 2 -Problem: Duplicate resource filenames are not removed from the - OTHERINDEXES resource. This caused duplicate work - to be performed. -Solution: Fixed. Any duplicate filenames are removed before - applying the OTHERINDEXES resource. -Version Fixed: 2.0.0 beta 3 ------------------------------------------------------------------------- -Version: 2.0.0 beta 2 -Problem: Indexes created via the OTHERINDEXES resource contain - no messages. -Solution: Fixed. -Version Fixed: 2.0.0 beta 3 ------------------------------------------------------------------------- -Version: 2.0.0 beta 2 -Problem: The markup defined by TSUBLISTEND may appear when there - is no corresponding TSUBLISTBEG. -Solution: Fixed. -Version Fixed: 2.0.0 beta 3 ------------------------------------------------------------------------- -Version: 2.0.0 beta 1 -Problem: A multipart boundary specified with a capital boundary - parameter, and not in quotes, was not recognized. -Solution: Fixed -Version Fixed: 2.0.0 beta 2 ------------------------------------------------------------------------- -Version: 1.2.3 -Problem: Generation of links of message-ids when editting - messages w/o consideration that the message-ids - may already be linked. This caused nested anchor - markup. -Solution: Fixed. Only new message-ids are checked for. -Version Fixed: 2.0.0 beta 1 ------------------------------------------------------------------------- -Version: 1.2.2 -Problem: The ';' character may appear in derived files if the - "usename" option is set for the mhexternal.pl filter. -Solution: Fixed. -Version Fixed: 1.2.3 ------------------------------------------------------------------------- -Version: 1.2.2 -Problem: The '/' character is not properly recognized in e-mail - addresses when e-mail addressess are being converted - to mailto links in message headers. -Solution: Fixed. -Version Fixed: 1.2.3 ------------------------------------------------------------------------- -Version: 1.2.2 -Problem: Database read failures occur in add operations on - MS-DOS systems. -Solution: Fixed (?) -Version Fixed: 1.2.3 ------------------------------------------------------------------------- -Version: 1.2.1 -Problem: The TIDXPGEND resource actually sets the value of the - TIDXPGBEG resource. -Solution: Fixed. -Version Fixed: 1.2.2 ------------------------------------------------------------------------- -Version: 1.2.0 -Problem: MHonArc will abort execution under MS-DOS due to - regular expression error. -Solution: Fixed. -Version Fixed: 1.2.1 ------------------------------------------------------------------------- -Version: 1.2.0 -Problem: install.me will abort execution under MS-DOS due to - regular expression error. -Solution: Fixed. -Version Fixed: 1.2.1 ------------------------------------------------------------------------- -Version: 1.2.0 -Problem: A reverse index listing is incorrect if the index size - is less than the archive size. -Solution: Fixed. -Version Fixed: 1.2.1 ------------------------------------------------------------------------- +Bug History for MHonArc +======================= + +@(#) BUGS 98/11/08 13:05:02 + +Each bug listing has the following fields: + + Version: Lists the version of MHonArc that the bug was + reported against. It is possible a bug could + be applicable to earlier versions. Version listed + is when the bug was discovered. + Problem: A description of the bug. + Solution: A description of what was done to fix the bug. + Version Fixed: The version that the solution exists in, if + applicable. + +Bug List +------------------------------------------------------------------------ +Version: 2.3.0-2.3.2 +Problem: -otherindex and -perlinc command-line options do not + work. Using them has no affect. +Solution: Subtle precedence issue in Perl variable operations; + problem fixed. +Version Fixed: 2.3.3 +------------------------------------------------------------------------ +Version: 2.3.0-2.3.2 +Problem: Resource variable expansion not working properly in + MAILTOURL resource. +Solution: Certain variables in read_mail_header() where put in + my() declarations when they should stay as local()'s. + Changed back. +Version Fixed: 2.3.3 +------------------------------------------------------------------------ +Version: 2.3.0-2.3.2 +Problem: Next/previous message link resource variables are + reversed when REVERSE is on. +Solution: REVERSE check was left out in new v2.3 replace_li_var(). + Check added in. +Version Fixed: 2.3.3 +------------------------------------------------------------------------ +Version: 2.3.0, 2.3.1 +Problem: Some resource variables (eg $SUBJECTNA$) expand to + blank values when using -single. +Solution: SINGLE mode sets @MListOrder and %Index2MLoc to support + the new way in v2.3 replace_li_var() resolves resource + variables. +Version Fixed: 2.3.2 +------------------------------------------------------------------------ +Version: 2.3.1 (maybe earlier versions also) +Problem: MHonArc does not handle message range specification + with leading zeros in numbers in -rmm mode. +Solution: int() is used within Perl's range operator to force + the stripping of leading zeros. +Version Fixed: 2.3.2 +------------------------------------------------------------------------ +Version: 2.3.0 +Problem: Attachments of the same type get written to the same + filename. +Solution: Another my/local gotcha. Note, writing attachments + has been redone so other filters besided mhexternal.pl + can write data to files. +Version Fixed: 2.3.1 +------------------------------------------------------------------------ +Version: 2.0.0 - 2.2.0 +Problem: A bogus TCONTBEGIN may get printed at the beginning + of a thread index page. Most common when TREVERSE + specified. +Solution: @TListOrder now serves as the basis for list iteration + when printing a thread index page instead of the list + returned by t_sort_messages(). Note, old method may + cause other minor errors in thread index page + generation. +Version Fixed: 2.3.0 +------------------------------------------------------------------------ +Version: 2.2.0, 2.3.0 beta +Problem: Duplicate index list entries are generating for threads + indexes generated via OTHERINDEXES with TREVERSE active. +Solution: All key data structures are now reset when recomputing + threads. +Version Fixed: 2.3.0 +------------------------------------------------------------------------ +Version: 2.2.0, 2.3.0 beta +Problem: Threads are not listed in reverse order when THREAD + and TREVERSE are set for an OTHERINDEXES resource file. +Solution: Thread data structures are now reset before each + OTHERINDEXES index. If an OTHERINDEXES resource file + specified THREAD, than threads will be recomputed + for the given index defined by resource file. +Version Fixed: 2.3.0 +------------------------------------------------------------------------ +Version: 2.3.0 beta +Problem: Mail addresses in message headers are not getting + converted to mailto links. +Solution: MHonArc still uses typeglobs for passing data around + by "reference" (left-over from Perl 4 days). One + of the variables in the message header formatting + routine was changed back to a local() variable to + supporting passing it via a typeglob sub-routines. +Version Fixed: 2.3.0 +------------------------------------------------------------------------ +Version: 2.3.0 beta +Problem: Cannot copy file error occurs during installation when + copy documentation to destination location. +Solution: Updated install.cfg to reflect file changes to + documentation. +Version Fixed: 2.3.0 +------------------------------------------------------------------------ +Version: 2.3.0 beta +Problem: Author index generated via the OTHERINDEXES resource + does not list messages in proper order. Other main + indexes generated via OTHERINDEXES may suffer the + same problem. +Solution: The write_main_index() did not reset %Index2MLoc + properly, affecting resource variable resolution. If + @MListOrder is recomputed, %Index2MLoc will be + redefined. +Version Fixed: 2.3.0 +------------------------------------------------------------------------ +Version: 2.3.0 beta +Problem: PG(PREV) and PG(TPREV) did not resolve to IDXFNAME and + TIDXFNAME, respectively. They resolved to (T)IDXPREFIX + with the page number 1. +Solution: Simple fix to page number check. +Version Fixed: 2.3.0 +------------------------------------------------------------------------ +Version: 2.2.0, 2.3.0 beta +Problem: Messages grouped under wrong date in date-based index. +Solution: The problem is related to a descrepency of GMT time + and local time, and what time format is being used + in the DAYBEGIN resource. The resource USINGLOCALTIME + has been added to give the choice betweem GMT or + local time for determining day groups. +Version Fixed: 2.3.0 +------------------------------------------------------------------------ +Version: 2.2.0 +Problem: Get "times not implemented at mhamain.pl line 74" error + on Win32 systems. +Solution: Call to times is put in an eval block. +Version Fixed: 2.3.0 alpha +------------------------------------------------------------------------ +Version: 2.2.0 +Problem: When a message that gets automatically deleted via + MAXSIZE or the message expiration, related message + sometimes do not get update -- causing messages to + have links to non-existent messages. Problem manifiest + when main sort option is not by date. +Solution: Automatic message deletion now properly marks related + message by specified main sort option. +Version Fixed: 2.3.0 alpha +------------------------------------------------------------------------ +Version: 2.1.2 +Problem: The @TListOrder array is empty in .mhonarc.db when + MULTIPG is set. This may cause some messages not + getting properly updated when new messages are added. +Solution: Removed use of splice on @TListOrder when MULTIPG. + Now, array slices are used so @TListOrder is preserved. +Version Fixed: 2.2.0 +------------------------------------------------------------------------ +Version: 2.1.2 +Problem: Convert ISO-2022-JP messages can generate "Out of + Memory" errors. +Solution: The cleanup of mhtxtplain.pl's iso-2022-jp code + introduced a bug that caused an infinite loop and + to gobble memory until it ran out. The fix was + straight-forward. +Version Fixed: 2.2.0 +------------------------------------------------------------------------ +Version: 2.1.2 +Problem: Quoted text that is broken due to maxwidth setting of + the mhtxtplain.pl filter did not have the quote + character prepended to broken the text. +Solution: A regex updated to dealing with a leading space before + quote character. +Version Fixed: 2.2.0 +------------------------------------------------------------------------ +Version: 2.1.1 +Problem: Documentation of MAILTOURL incorrectly states that + the $TO$ resource variable is the value of the + To: message header field. +Solution: Fixed documentation to state that $TO$ represents the + address being hyperlinked. +Version Fixed: 2.1.2 +------------------------------------------------------------------------ +Version: 2.1.1 +Problem: Attachments saved to files with spaces in filename + (due to "usename" option set to m2h_external::filter), + will cause anchors to the attachments in the HTML + message contain spaces. +Solution: Fixed m2h_external::filter to escape special characters + in the URL linking to the external file. +Version Fixed: 2.1.2 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Message with dates after 2037, or before 1970, will hang + MHonArc, not get processed, or listed in wrong order. +Solution: The problem is that Perl's timelocal.pl library cannot + handle dates out of those ranges (same applies to + Time::Local). Since get_time_from_date() is the only + routine require the services of timelocal.pl, the + routine will generate a warning of bad years and use + the current year. +Version Fixed: 2.1.1 (Work-around) +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Anchors to attachments in a message converted via + SINGLE do not contain OUTDIR if OUTDIR is specified. + OUTDIR may want to be set to all attachments to be + contained in a separate directory from the converted + message. +Solution: mhexternal.pl now checks $SINGLE variable set by the + main code during startup. If set, the value of + $OUTDIR is prepending to any hrefs to external files. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: February is misspelled "Febuary" in mhtime.pl. +Solution: Change the spelling so its correct. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Lowercase timezones in dates are not recognized. +Solution: Code modified to convert zones to uppercase when + performing hash lookups. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Specified filenames of attachments sometimes have a + ';' appended when utilizing the "usename" option is + set for mhexternal.pl. +Solution: Fixed MAILhead_get_disposition() in readmail.pl to + strip off ';' parameter separator. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Specified filenames with spaces of attachments are not + recognized properly. Filename gets truncated to first + occurance of a space. +Solution: Fixed MAILhead_get_disposition() in readmail.pl to + to handle filenames with spaces. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: The HTMLEXT resource does not affect the numbered index + page filenames of a MUTLIPG archive. +Solution: write_main_index() and write_thread_index() fixed. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Anchor text of MAILTOURL links is translated to URL + escaped text. +Solution: mailUrl() routine fixed. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Message 0 could not be deleted if specified with more + than one 0 (eg: 00000); +Solution: rmm() routine fixed. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: SUBJECTHEADER does not get stored in the db. +Solution: output_db() routine updated to save SUBJECTHEADER. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Empty links can be created if there is no "From" defined + for a message and it is used as link text. +Solution: Use 'No Author' as "From" if not defined. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: If a user defined resource variable is a string that + Perl interprets as a false value, it will not be used. +Solution: Changed code to used define() function in + replace_li_vars(). +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.1.0 +Problem: Expired messages are not removed when a the main index + is not sorted by date. +Solution: Always sort message by date when doing expire check. +Version Fixed: 2.1.1 +------------------------------------------------------------------------ +Version: 2.0.1 +Problem: An undefined subroutine error occured during an + RMM operation when there are messages with non-ASCII + encodings in message headers. +Solution: Proper libraries are now loaded for RMM operations. +Version Fixed: 2.1.0 +------------------------------------------------------------------------ +Version: 2.0.1 +Problem: Subjects using the "... -Reply" convention started + a new thread. +Solution: Fixed typo in regexp. +Version Fixed: 2.1.0 +------------------------------------------------------------------------ +Version: 2.0.1 +Problem: Nested anchor markup occurs on index pages when + a message's subject contains a URL and the subject + is used to link to the message page. +Solution: Replaced default routine that converts subject text + to HTML to a routine that does not hyperlink URLs. +Version Fixed: 2.1.0 +------------------------------------------------------------------------ +Version: 2.0.0 +Problem: Bogus empty entry shows up in the database. Bogus + entry appears if a duplicate message is detected. + Potential visible problems of bogus entry are: mailto + links in headers corrupted; a blank listing in the + index. Maybe other potential problems. +Solution: There is a bug in some versions of Perl where a + hash key gets added invalidly. The section of code that + this occurs has been modified to avoid the problem. + For existing databases with a bogus empty entry, + MHonArc now removes any empty key entries. + However, it is recommed to rebuild the archive. +Version Fixed: 2.0.1 +------------------------------------------------------------------------ +Version: 2.0.0 +Problem: Index pages are not properly updated if zero messages + are in the archive (like through the -rmm option). + Even -editidx cannot cause a proper update. +Solution: Page count was set to zero when no messages exist. This + caused problems in conditional checks in the write index + routines. To fix, page count is forced to 1 if their + are no messages. +Version Fixed: 2.0.1 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: Index pages with last page links are not updated + when a new page is added. +Solution: All index pages are regenerated if a new page + is added. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: "-idxsize 0" does not give unlimited page size. +Solution: Problem fixed and now works as documented. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: "-maxsize 0" does not reset archive with + unlimited messages allowed. +Solution: Problem fixed and now works as documented. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: Non-ASCII text encodings (=?ISO-..?...) are not + properly decoded when EDITIDX is set. +Solution: The charset filter libraries are now loaded + for EDITIDX. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: MODTIME resource setting not remembered across + archive updates. +Solution: MODTIME resource is now properly stored in the + database. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: Specifying -rmm and -single caused confusion on + what MHonArc does. +Solution: The case is properly handled, with -rmm taking + precedence. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: 4 digit year not checked before 2 digit year + when parsing dates. +Solution: Fixed. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: Some index pages in multipage indexes not + updated when messages expire. +Solution: Fixed; all pages are regenerated when a message + expires. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: Setting MONTHS and MONTHSABR had no effect. +Solution: Fixed. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: $TNEXTFROM$ actually gave the value of $NEXTFROM$. +Solution: Fixed. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: Numerical timezone offsets not handled properly + when the offset contained non-zero minutes. This + caused message to be sorted wrong by date. +Solution: Fixed. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: Some characters were not properly escaped when + specifying the "in URL" modifier to a resource + variable. +Solution: Fixed. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: Thread (formatting) information lost when a + thread is split across multiple pages. +Solution: Fixed. New resources (TCONTBEGIN, TCONTEND, + TINDENTBEGIN, TINDENTEND) exist to preserve + formatting of threads across pages. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 3 +Problem: If specifying the REVERSE resource, the next/prev + links in messages do not point to the proper + message as one may expect. +Solution: This should be fixed by the new behavior of + $NEXT...$ and $PREV...$ resource variables. +Version Fixed: 2.0.0 +------------------------------------------------------------------------ +Version: 2.0.0 beta 2 +Problem: Perl aborts with message "Undefined subroutine + &main::output_db called ..." when the GENIDX resource + is set. +Solution: Fixed. The output_db function is not applicable when + GENIDX is active. +Version Fixed: 2.0.0 beta 3 +------------------------------------------------------------------------ +Version: 2.0.0 beta 2 +Problem: Duplicate resource filenames are not removed from the + OTHERINDEXES resource. This caused duplicate work + to be performed. +Solution: Fixed. Any duplicate filenames are removed before + applying the OTHERINDEXES resource. +Version Fixed: 2.0.0 beta 3 +------------------------------------------------------------------------ +Version: 2.0.0 beta 2 +Problem: Indexes created via the OTHERINDEXES resource contain + no messages. +Solution: Fixed. +Version Fixed: 2.0.0 beta 3 +------------------------------------------------------------------------ +Version: 2.0.0 beta 2 +Problem: The markup defined by TSUBLISTEND may appear when there + is no corresponding TSUBLISTBEG. +Solution: Fixed. +Version Fixed: 2.0.0 beta 3 +------------------------------------------------------------------------ +Version: 2.0.0 beta 1 +Problem: A multipart boundary specified with a capital boundary + parameter, and not in quotes, was not recognized. +Solution: Fixed +Version Fixed: 2.0.0 beta 2 +------------------------------------------------------------------------ +Version: 1.2.3 +Problem: Generation of links of message-ids when editting + messages w/o consideration that the message-ids + may already be linked. This caused nested anchor + markup. +Solution: Fixed. Only new message-ids are checked for. +Version Fixed: 2.0.0 beta 1 +------------------------------------------------------------------------ +Version: 1.2.2 +Problem: The ';' character may appear in derived files if the + "usename" option is set for the mhexternal.pl filter. +Solution: Fixed. +Version Fixed: 1.2.3 +------------------------------------------------------------------------ +Version: 1.2.2 +Problem: The '/' character is not properly recognized in e-mail + addresses when e-mail addressess are being converted + to mailto links in message headers. +Solution: Fixed. +Version Fixed: 1.2.3 +------------------------------------------------------------------------ +Version: 1.2.2 +Problem: Database read failures occur in add operations on + MS-DOS systems. +Solution: Fixed (?) +Version Fixed: 1.2.3 +------------------------------------------------------------------------ +Version: 1.2.1 +Problem: The TIDXPGEND resource actually sets the value of the + TIDXPGBEG resource. +Solution: Fixed. +Version Fixed: 1.2.2 +------------------------------------------------------------------------ +Version: 1.2.0 +Problem: MHonArc will abort execution under MS-DOS due to + regular expression error. +Solution: Fixed. +Version Fixed: 1.2.1 +------------------------------------------------------------------------ +Version: 1.2.0 +Problem: install.me will abort execution under MS-DOS due to + regular expression error. +Solution: Fixed. +Version Fixed: 1.2.1 +------------------------------------------------------------------------ +Version: 1.2.0 +Problem: A reverse index listing is incorrect if the index size + is less than the archive size. +Solution: Fixed. +Version Fixed: 1.2.1 +------------------------------------------------------------------------ diff --git a/CHANGES b/CHANGES index 530f20a..7761861 100644 --- a/CHANGES +++ b/CHANGES @@ -1,1186 +1,1460 @@ -CHANGES for MHonArc - - http://www.oac.uci.edu/indiv/ehood/mhonarc.html - -Revision history for MHonArc. Changes listed are brief. Consult -the documentation for further information/clarification. It is -possible that not all changes are documented here. - -MM/DD/YY(YY) -======================================================================= -####################################################################### -======================================================================= -03/03/1998 (2.2.0) - - Enhancements/Changes - -------------------- - *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* - - Please read the RELNOTES file for important information regarding - upgrading to v2.2.0 from previous releases. - - o New resource - - MSGIDLINK - Hyperlink markup for message-ids - SUBJECTARTICLERXP - Regex to match articles (a,an,the) - in subject text. - SUBJECTREPLYRXP - Regex to match reply annotation - in subject text. - TSLICE - Set the size of a thread slice listing - TSLICEBEG - Begin markup of a thread slice listing - TSLICEEND - End markup of a thread slice listing - - o New resource variables - - $TSLICE$ - Print thread listing slice relative to - current message. - - o Added default=charset option to mhtxtplain.pl filter. - - o Added mhtxttsv.pl to handle text/tab-separated-values - content. - - o Expanded list of recognized content-types in mhexternal.pl. - - o Changed loading of decoders, charset convertes, and - content-type filters to be done on demand. Should - provide an increase in start-up time. - - o Modified source so no Perl structures are in the "main" - package. The base package is now "mhonarc". This - should make it easier for incorporating mhonarc into - another Perl program. - - *IMPORTANT*: This change causes changes to db file format. - See release notes on how to upgrade pre v2.2 archives. - - o Main routines are now located in mhamain.pl. The main - mhonarc source file now just requires mhamain.pl and - just calls two main functions. - - o Although code should still be Perl 4 compatible, Perl - related resource documentation now puts preference to - Perl 5 notations (eg: MIMEFILTERS, CHARSETCONVERTERS). - -======================================================================= -02/23/1998 (2.1.2) - - Enhancements/Changes - -------------------- - - o Added the following resources: - - ARCHIVE Create archive files - FROMFIELDS Define fields to extract "FROM" - USINGLASTPG Is $LASTPG$ in use - - o Removed (almost) all uses of $& in code. Still used - in readmail.pl for decoding non-ASCII encoded text. - - o Changed the default value of CHARSETCONVERTS resource. - The plain, us-ascii, and iso-8859-1 charsets now - default to main::htmlize. This provided a significant - performance improvement when process a large amount of - input. - - o Moved thread related routines into a file called - mhthread.pl. - - o MIMEFILTERS, MIMEARGS, and CHARSETCONVERTS resources - support Perl 5 package qualification in function names - if a semi-colon is used instead of a colon as the - list values separator. - - o Probably some other changes I forgot about. - - Bug Fixes - --------- - Problem: Documentation of MAILTOURL incorrectly states that - the $TO$ resource variable is the value of the - To: message header field. - Solution: Fixed documentation to state that $TO$ represents the - address being hyperlinked. - - Problem: Attachments saved to files with spaces in filename - (due to "usename" option set to m2h_external::filter), - will cause anchors to the attachments in the HTML - message contain spaces. - Solution: Fixed m2h_external::filter to escape special characters - in the URL linking to the external file. - -======================================================================= -02/18/1998 (2.1.1) - - Enhancements/Changes - -------------------- - - o Added DATEFIELDS resource. The resource allows the user to - specify the fields (and order) that are checked when - MHonArc extracts the date of a message. - - o RMM can now take message number ranges and/or message-ids. - - o Added $FROMADDR$ variable for MAILTOURL resource. - - o Message-id printed in warning about unable to parse date. - Helps users locate offending message. - - o 'No Author' used if no message sender is not present. - - Bug Fixes - --------- - Problem: Message with dates after 2037, or before 1970, will hang - MHonArc, not get processed, or listed in wrong order. - Solution: The problem is that Perl's timelocal.pl library cannot - handle dates out of those ranges (same applies to - Time::Local). Since get_time_from_date() is the only - routine require the services of timelocal.pl, the - routine will generate a warning of bad years and use - the current year. - - Problem: Anchors to attachments in a message converted via - SINGLE do not contain OUTDIR if OUTDIR is specified. - OUTDIR may want to be set to all attachments to be - contained in a separate directory from the converted - message. - Solution: mhexternal.pl now checks $SINGLE variable set by the - main code during startup. If set, the value of - $OUTDIR is prepending to any hrefs to external files. - - Problem: February is misspelled "Febuary" in mhtime.pl. - Solution: Change the spelling so its correct. - - Problem: Lowercase timezones in dates are not recognized. - Solution: Code modified to convert zones to uppercase when - performing hash lookups. - - Problem: Specified filenames of attachments sometimes have a - ';' appended when utilizing the "usename" option is - set for mhexternal.pl. - Solution: Fixed MAILhead_get_disposition() in readmail.pl to - strip off ';' parameter separator. - - Problem: Specified filenames with spaces of attachments are not - recognized properly. Filename gets truncated to first - occurance of a space. - Solution: Fixed MAILhead_get_disposition() in readmail.pl to - to handle filenames with spaces. - - Problem: The HTMLEXT resource does not affect the numbered index - page filenames of a MUTLIPG archive. - Solution: write_main_index() and write_thread_index() fixed. - - Problem: Anchor text of MAILTOURL links is translated to URL - escaped text. - Solution: mailUrl() routine fixed. - - Problem: Message 0 could not be deleted if specified with more - than one 0 (eg: 00000); - Solution: rmm() routine fixed. - - Problem: SUBJECTHEADER does not get stored in the db. - Solution: output_db() routine updated to save SUBJECTHEADER. - - Problem: Empty links can be created if there is no "From" defined - for a message and it is used as link text. - Solution: Use 'No Author' as "From" if not defined. - - Problem: If a user defined resource variable is a string that - Perl interprets as a false value, it will not be used. - Solution: Changed code to used define() function in - replace_li_vars(). - - Problem: Expired messages are not removed when a the main index - is not sorted by date. - Solution: Always sort message by date when doing expire check. - -======================================================================= -06/09/97 (2.1.0) - - Enhancements/Changes - -------------------- - - o Added the following resources: - - DEFRCNAME Base name of default resource file - FOLUPBEGIN Begin markup for message follow-ups - FOLUPEND End markup for message follow-ups - FOLUPLITXT Markup for follow-up list entry - GZIPEXE Pathname of gzip executable - GZIPFILES Gzip files - GZIPLINKS Add ".gz" to filenames in URLs - HTMLEXT HTML extension for files - MSGBODYEND Markup at end of converted message body - MSGPREFIX Prefix for message filenames - REFSBEGIN Begin markup for message references - REFSEND End markup for message references - REFSLITXT Markup for reference list entry - TSORT Sort threads by date or message number - TSUBSORT Sort threads by subject - - o Changes to mhexternal.pl filter: - - - Two new options: useicons and iconurl="url". - - Added some more content-types to CTExt hash. - - o Added filter for text/enriched data (mhtxtenrich.pl). - - o Changed default setting for MIMEFILTERS. The following - was added: - - model/*:m2h_external'filter:mhexternal.pl - text/enriched:m2h_text_enriched'filter:mhtxtenrich.pl - text/richtext:m2h_text_enriched'filter:mhtxtenrich.pl - - o Some code moved to new library files (mhopt.pl, - mhfile.pl). - - - Bug Fixes - --------- - Problem: An undefined subroutine error occured during an - RMM operation when there are messages with non-ASCII - encodings in message headers. - Solution: Proper libraries are now loaded for RMM operations. - - Problem: Subjects using the "... -Reply" convention started - a new thread. - Solution: Fixed typo in regexp. - - Problem: Nested anchor markup occurs on index pages where - a message's subject contains a URL and the subject - is used to link to the message page. - Solution: Replaced default routine that converts subject text - - -======================================================================= -05/23/97 (2.0.1) - - Bug Fixes - --------- - - Problem: Bogus empty entry shows up in the database. Bogus - entry appears if a duplicate message is detected. - Potential visible problems of bogus entry are: mailto - links in headers corrupted; a blank listing in the - index. Maybe other potential problems. - Solution: There is a be a bug in some versions of Perl where a - hash key gets added invalidly. The section of code that - this occurs has been modified to avoid the problem. - For existing databases with a bogus empty entry, - MHonArc now removes any empty key entries. - However, it is recommed to rebuild the archive. - - Problem: Index pages are not properly updated if zero messages - are in the archive (like through the -rmm option). - Even -editidx cannot cause a proper update. - Solution: Page count was set to zero when no messages exist. This - caused problems in conditional checks in the write index - routines. To fix, page count is forced to 1 if their - are no messages. - -======================================================================= -05/16/97 (2.0.0) - - Enhancements: - - o Added TCONTBEGIN, TCONTEND, TINDENTBEGIN, TINDENTEND - resources. They are provided to support the formatting - of threads that split across multiple pages of a - multipage index. - - o Added "nonfixed", "maxwidth", and "keepspace" options - to text/plain (mhtxtplain.pl) filter. - - o A directory file is now used for performing archive - locking. This should provide better portability across - operating systems. - - o Dervied files returned from filters can be directories. - If so, the any directory is completely removed if the - message is removed. - - o The mhexternal.pl filter can now output files into - a subdirectory with the "subdir" option. This may be - useful for those wanting to use the "usename" option - and avoid potential filename conflicts. - - o The $NEXT...$ and $PREV...$ resource variables now - behave as one may expect. I.e. The are always relative - to the base sort method: date, author, subject, message - number. The REVERSE resource has no effect on their - values. Therefore, the variables no longer refer to - the actual physical listing order. This new behavior - no longer requires a users to redefine button and link - resources for the sake of specifying REVERSE. - - o "Resent-To" and "Resent-Cc" will now have e-mail - address hyperlinked. - - o Unknown types processed by mhexternal.pl now default - to have a ".bin" extension. This should cause HTTP - servers to treat the file as application/octet-stream. - - o Standard input can be specified as the source of a - mailbox by using a lone "-" on the command-line. Note: - You may need to specify "--" first to shut-off option - processing so the "-" is not interpreted as the start - of an option. - - Bug Fixes: - - o Problem: Index pages with last page links are not updated - when a new page is added. - Solution: All index pages are regenerated if a new page - is added. - - o Problem: "-idxsize 0" does not give unlimited page size. - Solution: Problem fixed and now works as documented. - - o Problem: "-maxsize 0" does not reset archive with - unlimited messages allowed. - Solution: Problem fixed and now works as documented. - - o Problem: Non-ASCII text encodings (=?ISO-..?...) are not - properly decoded when EDITIDX is set. - Solution: The charset filter libraries are now loaded - for EDITIDX. - - o Problem: MODTIME resource setting not remembered across - archive updates. - Solution: MODTIME resource is now properly stored in the - database. - - o Problem: Specifying -rmm and -single caused confusion on - what MHonArc does. - Solution: The case is properly handled, with -rmm taking - precedence. - - o Problem: 4 digit year not checked before 2 digit year - when parsing dates. - Solution: Fixed. - - o Problem: Some index pages in multipage indexes not - updated when messages expire. - Solution: Fixed; all pages are regenerated when a message - expires. - - o Problem: Setting MONTHS and MONTHSABR had no effect. - Solution: Fixed. - - o Problem: $TNEXTFROM$ actually gave the value of $NEXTFROM$. - Solution: Fixed. - - o Problem: Numerical timezone offsets not handled properly - when the offset contained non-zero minutes. This - caused message to be sorted wrong by date. - Solution: Fixed. - - o Problem: Some characters were not properly escaped when - specifying the "in URL" modifier to a resource - variable. - Solution: Fixed. - - o Problem: Thread (formatting) information lost when a - thread is split across multiple pages. - Solution: Fixed. New resources (TCONTBEGIN, TCONTEND, - TINDENTBEGIN, TINDENTEND) exist to preserve - formatting of threads across pages. - - o Problem: If specifying the REVERSE, the next/prev - links in messages do not point to the proper - message as one may expect. - Solution: This should be fixed by the new behavior of - $NEXT...$ and $PREV...$ resource variables. - - -======================================================================= -02/28/97 (2.0.0 beta 3) - - o Removed bogus call to output_db() when GENIDX is active. - The routine is not loaded when GENIDX is active and the - call causes Perl to abort. - - o Duplicates of the OTHERINDEXES resource should no longer - occur. Before, if the OTHERINDEXES resource gets set - during invocation, mhonarc would store duplicate values, - causing unnecessary work to be performed. - - o Fixed problem with blank indexes being created for - OTHERINDEXES. Apparently, there is a bug in Perl, and - a work-around fix has been done. - - o Fixed bug where an extra TSUBLISTEND could get generated. - - -======================================================================= -02/17/97 (2.0.0 beta 2) - - o Added element and -nosubsort option. - - o Changed M2H_DATEFMT envariable to M2H_GMTDATEFMT. - - o Documented LOCKTRIES and LOCKDELAY resources. - - o New resources: - - AUTHORBEGIN - Markup for start of author group - AUTHOREND - Markup for end of author group - AUTHSORT - Sort messages by author - DAYBEGIN - Markup for start of day group - DAYEND - Markup for end of day group - IDXLABEL - Label for main index - MSGGMTDATEFMT - Format of $MSGGMTDATE$ - MSGLOCALDATEFMT - Format of $MSGLOCALDATE$ - SUBJECTBEGIN - Markup for start of subject group - SUBJECTEND - Markup for end of subject group - TIDXLABEL - Label for thread index - - o New resource variables - - $IDXLABEL$ - Label for main index - $MSGGMTDATE$ - Date of message in GMT format - $MSGLOCALDATE$ - Date of message in local format - $TIDXLABEL$ - Label for thread index - - o Some enhancements to the documentation. - - o Some code changes. - - -======================================================================= -01/31/97 (2.0.0 beta 1) - - 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 - threading. - - 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 - formatted. - - 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 a default resource file. The default resource - file is one of the following, in the order of precedence: - - 1. File specified by the M2H_DEFRCFILE envariable - 2. $HOME/.mhonarc.rc - 3. /.mhonarc.rc - - "" is the path of the MHonArc library - directory defined during installation. For MS-DOS, replace - ".mhonarc.rc" with "MHONARC.RC". - - 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 List of enhancements to mhexternal.pl: - - - Show content-type if the data is not recognized. - - New `ext' filter option to define the extension to - use for the created file. - - New `type' filter option to define the "english" - type name of the create file. - - Content-Disposition is supported. Filenames are - ignored still unless `usename' argument passed to - filter. - - Added recognition of few more content-types - - o Updated date parsing to figure out the date of a message to be - more robust on how it parses a date. If unable to parse - date, the message will take on the current time for sorting - purposes. Also, character case is ignored in month and weekday - names. - - o The comment declaration "" is - now inserted between the message header and body. Helps - in the building of some search indexes to restrict searches - on message data. - - o Many resource settings are no longer stored in database if - the resource is the default value. Save some disk space and - allows resources to self adjust when a dependent resource is - changed. - - o The text/plain filter in mhtxtplain.pl has the following - enhancements: - - - Check for charset to control character conversion. - - Integrated iso-2022-jp filter (keys off charset) - - Filter option "quote" cause quoted text in message - to be italicized. - - Filter option "asis" defines a list of charsets to - not convert to sgml entitites. Example usage: - - asis=iso-8859-1:iso-8859-2 - - o mhtxt2022.pl has been removed since the code has been - integrated into mhtxtplain.pl. - - o Resource file elements that have textual content (ie. no - line oriented content) can specify the "chop" attribute - to have the last end-of-line stripped from the content. - Example usage: - - - [Next] - - - o Fixed bug in creating links of message-ids. Mhonarc blindingly - made links of message-ids when editting messages w/o - consideration that the message-ids may already be linked. This - caused markup like the following to occur: - - ...... - - Browsers handle the invalid markup with no problems, causing - the bug to go unnoticed for a long time. Now, only new - added message-ids are scanned for when creating links. - - o $readmail'FieldSep should now be used instead of $FieldSep - for separating duplicate fields in a parsed message header. - - o The -scan output now prints a 4 digit year. - - o Bogus space no longer appears in subjects and dates. - - o Outdir permissions are not checked if -single specified. - - o Some internal changes to how data is stored in databases - (needed for 1522 support). v2.0 will automatically - modify 1.x databases to the 2.0 format. - - o The -single option utilizes the same mail output routine - utilized by regular archive processing. - - o MhonArc will now handle numbers with leading zeros when - the -rmm option is specified. - - o New resources: - - CHARSETCONVERTERS - - Specify character set filters - CONLEN - Honor content-lengths - DECODEHEADS - Decode 1522 encoded data, set for decode - only, as message headers are read (see - note below) - DEFINEVAR - Define resource variables - DEFINEDERIVED - Define user defined derived file - EXPIREDATE - Message cut-off date - EXPIREAGE - Time in seconds from current if msg expires - FIELDSBEG - Begin markup of converted mail header - FIELDSEND - End markup of converted mail header - FLDBEG - Begin markup of mail header field text - FLDEND - End markup of mail header field text - FOLREFS - Print links to explicit follow-ups & refs - GMTDATEFMT - Format of $GMTDATE$ - HEADBODYSEP - Markup between converted mail header & body - IDXPREFIX - Prefix for multi-page main index filenames - INCLUDE - Read resources from other files - LABELBEG - Begin markup of mail header label - LABELEND - End markup of mail header label - LOCALDATEFMT - Format of $LOCALDATE$ - MAIN - Create main index - MHPATTERN - Expression for mesg files in a directory - MODTIME - Set file times to message dates - MONTHS - Full month names: EOL or ':' separated - MONTHSABR - Abbrieviated month names: EOL or ':' - separated - MULTIPG - Create multi-page indexes - NEXTPGLINK - Link to next page in main index - NEXTPGLINK - Inactive link to next page in main index - NOCONLEN - Ignore content-lengths - NODECODEHEADS - Leave message headers "as is" when read - (see note below) - NOFOLREFS - Do not print links to follow-ups & refs - NOMAIN - Do not create main index - NOMODTIME - Do not set file times to message dates - NOMULTIPG - Do not create multi-page indexes - PREVPGLINK - Link to previous page in main index - PREVPGLINKIA - Inactive link to previous page in main index - SUBJECTHEADER - Markup for subject header in converted mail - TIDXPREFIX - Prefix for multi-page thread index filenames - TSUBLISTBEG - List begin in sub-thread - TSUBLISTEND - List end in sub-thread - TSUBJECTBEG - Begin markup for subject-based sub-thread - TSUBJECTEND - End markup for subject-based sub-thread - TSINGLETXT - Markup for mesg not part of a thread - TTOPBEGIN - Begin for top of a thread - TTOPEND - End for a thread - TLINONE - Markup for missing message in a thread - TLIEND - Thread idx list item end - TNEXTBUTTON - Thread next button template - TNEXTBUTTONIA - Inactive thread next button template - TNEXTLINK - Thread next link template - TNEXTLINKIA - Inactive thread next link template - TNEXTPGLINK - Link to next page in thread index - TNEXTPGLINKIA - Inactive link to next page in thread index - TPREVBUTTON - Thread previous button template - TPREVBUTTONIA - Inactive thread previous button template - TPREVLINK - Thread previous link template - TPREVLINKIA - Inactive thread previous link template - TPREVPGLINK - Link to prev page in thread index - TPREVPGLINKIA - Inactive link to prev page in thread index - WEEKDAYS - Full weekday names: EOL or ':' separated - WEEKDAYSABR - Abbrieviated weekday names: EOL or ':' - separated - - - NOTE - 1522 processing is done when creating HTML output and - the (relevant) data stored in the database stays in - encoded form. The DECODEHEADS resource can be set - to decode decode-only charsets when message headers - are read. Hence, the decode-only charsets will be - stored in decoded form. Regular 1522 processing is - still done to still-encoded data when generating output. - The default is NODECODEHEADS. - - o List of removed resources: - - NOTSUBSORT, TSUBSORT - - o New resource variables: - (NOTE: Some variables are only valid in certain contexts) - - $FIRSTPG$ - Filename of first page of main index - $IDXPREFIX$ - Prefix to main index pages' filenames - $LASTPG$ - Filename of last page of main index - $NEXTPG$ - Filename of next main index page - $NEXTPGLINK$ - Link to next page of main index - $NUMOFPAGES$ - Total number of pages in index - $PAGENUM$ - Current page number of index - $PREVPG$ - Filename of previous main index page - $PREVPGLINK$ - Link to previous page of main index - $TFIRSTPG$ - Filename of first page of thread index - $TIDXPREFIX$ - Prefix to thread index pages' filenames - $TLASTPG$ - Filename of last page of thread index - $TNEXTBUTTON$ - Button for next mesg in thread - $TNEXTFROM$ - From of next mesg in thread - $TNEXTFROMADDR$ - From address of next mesg in thread - $TNEXTFROMNAME$ - From name of next mesg in thread - $TNEXTLINK$ - Link for next mesg in thread - $TNEXTMSG$ - Next mesg filename in thread - $TNEXTMSGNUM$ - Next mesg number in thread - $TNEXTPG$ - Filename of next thread index page - $TNEXTPGLINK$ - Link to next page of thread index - $TNEXTSUBJECT$ - Next mesg subject in thread - $TPREVBUTTON$ - Button for prev mesg in thread - $TPREVFROM$ - From of previous mesg in thread - $TPREVFROMADDR$ - From address of previous mesg in thread - $TPREVFROMNAME$ - From name of previous mesg in thread - $TPREVLINK$ - Link for prev mesg in thread - $TPREVMSG$ - Previous mesg filename in thread - $TPREVMSGNUM$ - Previous mesg number in thread - $TPREVPG$ - Filename of previous thread index page - $TPREVPGLINK$ - Link to previous page of thread index - $TPREVSUBJECT$ - Previous mesg subject in thread - - o Removed resources: - - NOTSUBSORT, TSUBSORT - - o Some changes to default resource settings. - - o Reorganized code. Some new libraries have been created - to help in maintenance. - - o Source code has been put under SCCS revision control. - - -======================================================================= -07/12/96 (1.2.3) - - o Extracted initialization of data structures into mhinit.pl. - The file is just required from the main source. - - o Use q{} instead of qq{} when trying to read database file. - Should fix require problem under MS-DOS. - - o Added comments at beginning - of messages. May aid in database recovery techniques. - - o ';'s are now deleted in filenames in mhexternal.pl - (applicable only when "usename" option specified) - - o Added recognition of '/' when converted e-mail addresses - to mailto links in message headers. - - o Simple fix to mhtxt2022.pl for execution under Perl 5. - - -======================================================================= -04/18/96 (1.2.2) - - o Increased the speed performance of base64 decoding. Speed - increase is much greater under Perl 4 than Perl 5. - - o Added -time option to print out total CPU execution time. - Mainly used for debugging reasons (like checking on - base64 decoding times). Time information is sent to - standard error. - - o Added M2H_LOCKDELAY envariable and -lockdelay option. - Either can be used to adjust the sleep time between - attempts to lock the archive. - - o Added -force option to override a lock on an archive if - attempts to lock fail. - - o Added image/x-bmp and image/x-pcx to the default supported - MIME types. - - o Ignore "Sv:" at the beginning of subjects when sorting by - subject. "Sv:" is Danish for "Re:". - - o Fixed bug in mhutil.pl where TIDXPGEND actually set - TIDXPGBEG. - - o Dynamically define exclude_field routine after reading - user options. exclude_field is utilized when formatting - a message header in HTML. Defining the routine at run-time - helps reduce the regular expression overhead the old version - of the routine entailed. There should be an increase in - overall execution time. - - -======================================================================= -03/22/96 (1.2.1) - - o Added support for x-uuencode content-transfer-encoding. - - o Added -locktries command-line option. - - o Added the resource variable $OUTDIR$. - - o mhexternal.pl filter will use the name parameter string - on the content-type field as the anchor text to the file - if there is no content-description. - - o application/x-patch is recognized and processed by the - text/plain filter (mhtxtplain.pl). - - o Fixed bug in install.me and osinit.pl where setting - $'PROG caused perl to terminate if $'DIRSEP was a backslash - (occured under MS-DOS usage). - - o Fixed bug in install.me in the create_dir routine. - If $DIRSEP was a backslash, the regular expression setting - @a would cause perl to abort with an error. - - o Fixed database bug where the MIMEARGS resource setting - was not being stored. - - o Fixed index listing bug where a reverse listing was not - correct if an index size was specified less than the - current size of the archive. - - -======================================================================= -03/01/96 (1.2.0) - - o Rewrote message parser routine so it will work under Perl 5 - for multipart messages. The rewrite also allows some - additional features that are mentioned below. - - o The -mbox and -mh options are no longer required. MHonArc - will automatically determine which mode to operate in - based upon the file arguments. Hence, one can specify - MH folders and mailbox files on the same command-line. - Both options are ignored if specified. - - o An HTML index of an archive contents can be generated to - standard output (-genidx). - - o Message header lines not conforming to RFC 822 are ignored. - (Eg: Those pesky "From " lines should not show up anymore -- - please do not confuse this with the regular "From:" lines; - note the colon vs the space). - - o New resources: - - BOTLINKS - May be used to completely customize - the links at the bottom of messages. - IDXPGBEGIN - Opening markup for main index page. - Allows one to redefine opening HTML - element, HEAD element, TITLE element, - opening BODY element, etc. - IDXPGEND - Closing markup for main index page. - IDXSIZE - Set the maximum number of messages - listed in index. This is different - in MAXSIZE where MAXSIZE will remove - older messages when the MAXSIZE limit - is reached in the archive. - MIMEARGS - Define arguments to filters - MSGPGBEGIN - Opening markup for message pages. - Allows one to redefine opening HTML - element, HEAD element, TITLE element, - opening BODY element, etc. - MSGPGEND - Closing markup for message pages. - NEXTBUTTON - Defines the 'Next' button. - NEXTBUTTONIA - Defines the 'Next' button when it is - inactive. - NEXTLINK - Defines the 'Next' link. - NEXTLINKIA - Defines the 'Next' link when it is - inactive. - NOTSUBSORT - Do not sort threads by subject. - OTHERINDEXES - List other resource files defining - other indexes to create when creating, - or updating, an archive. - PREVBUTTON - Defines the 'Prev' button. - PREVBUTTONIA - Defines the 'Prev' button when it is - inactive. - PREVLINK - Defines the 'Prev' link. - PREVLINKIA - Defines the 'Prev' link when it is - inactive. - TIDXPGBEGIN - Opening markup for thread index page. - Allows one to redefine opening HTML - element, HEAD element, TITLE element, - opening BODY element, etc. - TIDXPGEND - Closing markup for thread index page. - TOPLINKS - May be used to completely customize - the buttons at the top of messages. - TSUBSORT - Sort threads listed by subject. - - o Removed resources: - - INDEXBL, INDEXFL, MBOX, MH, NEXTBL, NEXTFL, PREVBL, - PREVFL, TINDEXBL, TINDEXFL - - Resource were removed because they were no longer applicable - and/or have been superceded by other resources. MHonArc - will still honor old resource settings (where applicable) of - older archives and incorporate them into the new resource - settings. - - o When specifying the resource file, mhonarc will now do - the following to determine its location: - - 1. If its an absolute pathname, mhonarc uses it. - 2. If it is a relative pathname, mhonarc checks for - it relative to the current working directory. - 3. Otherwise, mhonarc checks for it relative to - location of the archive as specified by outdir. - - This resolution will allow you to place resource files with - the archive if desired (can be useful when using the - OTHERINDEXES resource element). - - o Because of the new resources available, many
's are no - longer hard-coded and are controllable by resources.
's - are still used in message pages to separate message data - from mhonarc data. - - o Added resource variables: - (NOTE: Some variables are only valid in certain contexts) - - $DDMMYY$ - Date of message in dd/mm/yy format - $IDXSIZE$ - Max size of index list - $MMDDYY$ - Date of message in mm/dd/yy format - $MSGID$ - Message id - $NEXTBUTTON$ - Next button markup - $NEXTFROM$ - From field of next listed message - $NEXTFROMADDR$ - From e-mail address of next listed message - $NEXTFROMNAME$ - From name of next listed message - $NEXTLINK$ - Next link markup - $NEXTMSGNUM$ - Number of next listed message - $NEXTSUBJECT$ - Subject text of next listed message - $NUMOFIDXMSG$ - Number of messages in index list - $PREVBUTTON$ - Previous button markup - $PREVFROM$ - From field of previous listed message - $PREVFROMADDR$ - From e-mail address of prev listed message - $PREVFROMNAME$ - From name of previous listed message - $PREVLINK$ - Previous link markup - $PREVMSGNUM$ - Number of previous message - $PREVSUBJECT$ - Subject text of previous listed message - $YYMMDD$ - Date of message in yy/mm/dd format - - o Can specify a 'U' with variable length specifier to denote - replacement string is to be used in a URL. Examples: - - $SUBJECTNA:40U$ - $MSGID:U$ - - The 'U' causes the replace text to have special characters - escaped as denoted by the URL spec. NOTE: Specify ":U" - should NOT be used in the MAILTOURL resource; the variables - will automatically be expanded according to the URL spec. - Specifyind ":U" or a length specifier in the MAILTOURL - resource will prevent mhonarc from detecting the variable. - - o New command-line options: - - -genidx - Generate HTML index of archive contents - to stdout. - -idxsize - Maximum number of messages shown in indexes - -notsubsort - Do not sort threads listed by subject. - -savemem - Write message data while processing - -tsubsort - Sort threads listed by subject. - - o The library mhtxt2022.pl has been added that provides - a filter to process ISO-2022 (Japanese) encoded mail messages. - See mhtxt2022.pl on how to hook it in. - - o The mhexternal.pl filter by default ignores any filename - specification in the message for creating derived files. - This avoids name conflicts and security problems. - The "usename" filter option may be used to override this. - - o Mime filters are now called with two additional arguments: - - $converted_data = &function( - $header, *parsed_header_assoc_array, - *message_data, $decoded_flag, - $optional_filter_arguments); - - The $decoded_flag is set to 1 if the *message_data has been - decoded. $optional_filter_arguments contains an optional - argument string as determined by the filter. - - o Mime filters can now be registered for multipart types - and message types. This allows one to override mhonarc's - conversion of these types, and completely replace mhonarc's - message->HTML conversion process. - - o Mime filters should now use $'FieldSep instead of $'X for - accessing parsed message headers. - - o Mime filters can be registered for a base type. Ie. - It is no longer required to explicitly list each possible - subtype if a single filter is to be used for them all. - Example: - - - image/*:myfilter'imagefilter:myfilter.pl - - - Registers "myfilter'filter" for all image data types, - regardless of subtype. However, if an explicit entry - exists for a subtype, then that filter is called. - Example: - - - image/*:myfilter'imagefilter:myfilter.pl - image/gif:myfilter'giffilter:myfilter.pl - - - "myfilter'giffilter" is called for all image/gif data. - "myfilter'imagefilter" is called for all other image data. - - o A new resource, MIMEARGS, may be used to pass optional arguments - to filters to control their behavior. The format of the - argument string is controlled by the various filters. The - arguments can be specified by a specific content-type, or - for the filter routine in general. A content-type argument - will be used over any arguments specified for a filter. - - Example usage: - - - image/gif:inline usename - m2h_external'filter:usename - - - See the documentation for possible arguments to filters. - - o Installation program can now be invoked in batch mode. - - o Thread index properly includes docurl as main index. - -nodocurl will prevent the inclusion as with the main index. - - o Fixed bug in mhtxthtml.pl on properly propogating a base - URL to relative URLs starting with a "/". - - o Fixed bug where single quotes, and backslashed in keys of - associative arrays in the database file were not getting - escaped. - - o Fixed bug where spaces and special characters were not - properly escaped in URL strings: spaces were left as-is, - and special characters were deleted. - - o Removed illegal invocation choices in the Synopsis of the - documentation. - - -======================================================================= -04/24/95 (1.1.1) - - o Fixed bug in -scan output where month in date was off by - one. - - -======================================================================= -04/21/95 (1.1.0) - - o Made modifications to make MHonArc suitable to run - under MS-DOS without modification. MHonArc will - automatically detect if it is running under Unix or MS-DOS. - - o Added support for a thread index. MHonArc will create a - complimentary index to the main index showing message - threads. - - o Archive messages can be deleted. - - o A listing to stdout of an archives contents can be - generated. - - o Maximum number of messages for an archive can be set. - Older messages (based on sort method) are removed - automatically during add operations. - - o MHonArc will now recognize if you try to add in a message - that already exists in an archive. - - o The -editdx option will now also cause a updating of all - mail messages. Guarantees resource changes to affect all - messages. - - o Added the following resource file elements: - - MSGFOOT -- Footer text for converted messages - MSGHEAD -- Header text for converted messages - NODOC -- Do not put link to documentation - NOTHREAD -- Do not create thread index - TFOOT -- Text at bottom of thread index page - THEAD -- Text at top of thread index page - THREAD -- Create thread index - TLEVELS -- Depth of thread listing - TLITXT -- Template text for entry in thread - index - TIDXFNAME -- Thread index filename - TINDEXBL -- Top button label in messages to - thread index - TINDEXFL -- Verbose label in message to thread - index - TTITLE -- Title of thread index page - - o Added the following command-line options: - - -maxsize -- Maxinum # messages in an archive - -nodoc -- Do not put link to documentation - -nothread -- Do not create thread index - -rmm -- Remove messages from an archive - -scan -- Listing of archive to stdout - -thread -- Create thread index - -tidxfname -- Thread index filename - -tlevels -- Depth of thread listing - -ttitle -- Title of thread index page - - o Added the following environment variables: - - M2H_MAXSIZE -- Maxinum # messages in an archive - M2H_THREAD -- If non-zero, create thread index - M2H_TIDXFNAME -- Thread index filename - M2H_TLEVELS -- Depth of thread listing - M2H_TTITLE -- Title of thread index page - - o Added the following variables for template resources - (applicability of variables vary depending on the resource): - - $DOCURL$ -- URL to documentation - $IDXFNAME$ -- Main index page filename - $IDXTITLE$ -- Main index page title - $NEXTMSG$ -- Next message filename - $PREVMSG$ -- Previous message filename - $PROG$ -- Program name - $TIDXFNAME$ -- Thread index page filename - $TIDXTITLE$ -- Thread index page title - $VERSION$ -- Version number of the program - - o Added $FROM$, $MSGID$, and $SUBJECT$ variables to be used - in the MAILTOURL resource. - - o The string `$$' in template resources will produce a `$' in - the output. - - o Fixed problem with messages (with follow-ups) getting - unnecessarily updated when messages are added to an archive. - - o Only a CR/LF, or LF, pair will terminate a message head. - Before, MHonArc was terminating message heads when - encountering an empty line or a line that only contained - whitespace (which was incorrect behavior). - - o Fixed bug in mhexternal.pl dealing with the `name' parameter - in the content-type field. Surrounding "s or 's were not - being deleted causing filenames with quotes to be written. - - o mhexternal.pl: The head of a pathname in the `name' - parameter in the content-type field is stripped off before - writing the external file. I.e. Only the base filename is - used. - - o Only one
after the H1 subject in messages will appear - if no message header fields are printed. - - o Added recognition of the following content-types in - mhexternal.pl: - - application/mac-binhex40 - - o Added a extras/ directory containing useful programs for - MHonArc. See README in the directory for information on - the programs contained in there. - - o To support -rmm, MIME filters now return an array. The - first array value is the HTML for the message, and any other - array values are filenames of files generated by the - filter. This allows MHonArc to know of any extra files that - must be deleted when a message is removed. - - o Some routines from the main mhonarc source file have been - moved into a separate librarys: readmail.pl, mhdb.pl, - mhutil.pl - - o The default URL to the documentation is now, - - http://www.oac.uci.edu/indiv/ehood/mhonarc.html - - The old URL, - - http://www.oac.uci.edu/indiv/ehood/mhonarc.doc.html - - is still valid. - - o There's probably other stuff, but I cannot remember. - - -======================================================================= -10/01/94 (1.0.0) - - o First release -- See RELNOTES about compatibility issues - with mail2html. - - -======================================================================= -####################################################################### -======================================================================= -Earl Hood, ehood@medusa.acs.uci.edu -@(#) CHANGES 98/03/03 19:10:13 @(#) + Version History for MHonArc + =========================== + + +Version history for MHonArc. Changes listed are brief. Consult +the documentation for further information/clarification. It is +possible that not all changes are documented here. + +MM/DD/YYYY +======================================================================= +####################################################################### +======================================================================= +11/08/1998 (2.3.3) + + Bug Fixes + --------- + Problem: -otherindex and -perlinc command-line options do not + work. Using them has no affect. + Solution: Subtle precedence issue in Perl variable operations; + problem fixed. + + Problem: Resource variable expansion not working properly in + MAILTOURL resource. + Solution: Certain variables in read_mail_header() where put in + my() declarations when they should stay as local()'s. + Changed back. + + Problem: Next/previous message link resource variables are + reversed when REVERSE is on. + Solution: REVERSE check was left out in new v2.3 replace_li_var(). + Check added in. + +======================================================================= +11/01/1998 (2.3.2) + + Enhancements/Changes + -------------------- + o A new (improved) install.me program to do the installation. + See INSTALL for more information. + + Bug Fixes + --------- + Problem: Some resource variables (eg $SUBJECTNA$) expand to + blank values when using -single. + Solution: SINGLE mode sets @MListOrder and %Index2MLoc to support + the new way in v2.3 replace_li_var() resolves resource + variables. + + Problem: MHonArc does not handle message range specification + with leading zeros in numbers in -rmm mode. + Solution: int() is used within Perl's range operator to force + the stripping of leading zeros. + +======================================================================= +10/25/1998 (2.3.1) + + Enhancements/Changes + -------------------- + Please read the RELNOTES file for important information regarding + upgrading to v2.2.x, or later, from pre-v2.2 releases. + + o Support for MHTML. I.e. An HTML document that references data + included as other parts to the mail message, will be converted + so the data will be shown where referenced. Before, all + referenced data was shown at the end of the message. + + o Auto-computing the name for attachments no longer caches + data, so performance may decrease when processing MIME + messages. This change is required since multiple filters can + now write data to files and not all to the same directory (a + common utility function now exists for writing data to a file). + Also, it avoids behavioral problems with custom front-ends + that operate on multiple archives in a single process. + + o Changes to readmail.pl inorder to support MHTML. Changes + done should help the handling of other multipart/related + data types. + + Bug Fixes + --------- + Problem: Attachments of the same type get written to the same + filename. + Solution: Another my/local gotcha. Note, writing attachments + has been redone so other filters besided mhexternal.pl + can write data to files. + +======================================================================= +10/10/1998 (2.3.0) + + o Perl 5 is now required to run MHonArc. Although the code + base is still "Perl 4-style", many changes made use of Perl 5 + constructs. + + o New utility programs added to the dustribution: + + mha-dbedit - Make resource/db changes w/o touching + pages. + mha-dbrecover - Rebuild database from HTML message + files. + + o Many resource variables have been changed to take arguments + to control what values the variables will expand to. Because, + of this, many variables are now deprecated. However, old + forms of resource variables are still recognized. + + See the documentation for more information on resource + variables (a new section on resource variables has been + added to the documentation) and the newer syntax. + + o New resources: + + AFS - Skip archive directory permission check + ANNOTATE - Annotate message(s). + LOCK - To lock, or not to lock. + MSGPGS - Print, or not, message pages. + NOTE - Annotate markup. + NOTEIA - Inactive annotate markup. + NOTEDIR - Directory where annotations are located. + NOTETEXT - Annotation text. + PAGENUM - Page to output when using GENIDX with + MULTIPG. + READDB - Just load the database + (useful for application front-ends). + USELOCALTIME - Use localtime to determine day groups in + date index listing. + + o New resource variables: + + $DDMMYYYY$ - Day/Mon/Year(4 digit) + $MMDDYYYY$ - Mon/Day/Year(4 digit) + $MSG$ - Filename of message page + $SORTTYPE$ - Type of sort in use for main index + $TSORTTYPE$ - Type of sort in use for thread index + $YYYYMMDD$ - Year(4 digit)/Mon/Day + + Note, many other variables have been changed. See docs for + more information. + + o Added "J" modifier for resource variables. When specified, + escapes quote characters so expanded values can be used + within JavaScript strings. + + o Added "usenameext" option to mhexternal.pl filter. When + specified, mhexternal.pl will use the filename specified in + the message for determining the filename extension to use. + + o The -rcfile option can be specified multiple times. Resource + files specified are read in the order specified. + + o The -definevars options has been deprecated in favor of + -definevar (no ending 's'). -definevar can be specified + multiple times on the command-line. The usaage of it is + exactly the same as -definevars. The -definevars is still + supported for backwards compatibility. + + o The -perlinc option can be specified multiple times. + + o For the mhtxtplain.pl filter, the TARGET attribute for links is + now specified only if the target option is specified. + + o MHonArc is now smarter when the RMM resource is used. MHonArc + will now only update pages that are required when messages + are removed instead of doing a force update on all pages. + RMM operations will now perform much faster. + + o Subject based replies are *no longer* treated as a separate + "group" when printing thread index pages. I.e. Subject based + replies no longer cause a separate TSUBLISTBEG and TSUBLISTEND + to be invoked. Before, it was a problem if the HTML OL + element was used. OL numbering would restart when subject + based replies were printed. + + o GENIDX now supports the use of MULTIPG (w/IDXSIZE). + + o MHonArc uses rename instead of file copying when editing + pages. Should provide a speed increase when editing archive + pages. + + o Reason when a file cannot be opened or created is printed + ($! is now included in the error message). + + o If unable to lock an archive (and -force not specified), + MHonArc will now return an exit status of 75 (EX_TEMPFAIL). + This is for the benefit of MTAs (like sendmail) where + MHonArc is called via an alias. + + o Some changes to code to make it suitable for MHonArc to be + embedded into other Perl programs. The most significant + changes was to make it possible to process more than one + archive in a single process instance (note, archives can + only be processed in sequence and not in parallel). Now it + easier to write different application front-ends to MHonArc. + + o Some other code cleanup in the hopes to improve performance. + + Bug Fixes + --------- + Problem: Get "times not implemented at mhamain.pl line 74" error + on Win32 systems. + Solution: Call to times is put in an eval block. + + Problem: When a message that gets automatically deleted via + MAXSIZE or the message expiration, related message + sometimes do not get update -- causing messages to + have links to non-existent messages. Problem manifiest + when main sort option is not by date. + Solution: Automatic message deletion now properly marks related + message by specified main sort option. + + Problem: Messages grouped under wrong date in date-based index. + Solution: The problem is related to a descrepency of GMT time + and local time, and what time format is being used + in the DAYBEGIN resource. The resource USINGLOCALTIME + has been added to give the choice betweem GMT or + local time for determining day groups. + + Problem: A bogus TCONTBEGIN may get printed at the beginning + of a thread index page. Most common when TREVERSE + specified. + Solution: @TListOrder now serves as the basis for list iteration + when printing a thread index page instead of the list + returned by t_sort_messages(). Note, old method may + cause other minor errors in thread index page + generation. + + Problem: Duplicate index list entries are generating for threads + indexes generated via OTHERINDEXES with TREVERSE active. + Solution: All key data structures are now reset when recomputing + threads. + + Problem: Threads are not listed in reverse order when THREAD + and TREVERSE are set for an OTHERINDEXES resource file. + Solution: Thread data structures are now reset before each + OTHERINDEXES index. If an OTHERINDEXES resource file + specified THREAD, than threads will be recomputed + for the given index defined by resource file. + + Beta Bug Fixes + -------------- + The following are bug fixes related to the beta release: + + Problem: PG(PREV) and PG(TPREV) did not resolve to IDXFNAME and + TIDXFNAME, respectively. They resolved to (T)IDXPREFIX + with the page number 1. + Solution: Simple fix to page number check. + + Problem: Author index generated via the OTHERINDEXES resource + does not list messages in proper order. Other main + indexes generated via OTHERINDEXES may suffer the + same problem. + Solution: The write_main_index() did not reset %Index2MLoc + properly, affecting resource variable resolution. If + @MListOrder is recomputed, %Index2MLoc will be + redefined. + + Problem: Cannot copy file error occurs during installation when + copy documentation to destination location. + Solution: Updated install.cfg to reflect file changes to + documentation. + + Problem: Mail addresses in message headers are not getting + converted to mailto links. + Solution: MHonArc still uses typeglobs for passing data around + by "reference" (left-over from Perl 4 days). One + of the variables in the message header formatting + routine was changed back to a local() variable to + supporting passing it via a typeglob sub-routines. + +======================================================================= +03/03/1998 (2.2.0) + + Enhancements/Changes + -------------------- + + o New resource + + MSGIDLINK - Hyperlink markup for message-ids + SUBJECTARTICLERXP - Regex to match articles (a,an,the) + in subject text. + SUBJECTREPLYRXP - Regex to match reply annotation + in subject text. + TSLICE - Set the size of a thread slice listing + TSLICEBEG - Begin markup of a thread slice listing + TSLICEEND - End markup of a thread slice listing + + o New resource variables + + $TSLICE$ - Print thread listing slice relative to + current message. + + o Added default=charset option to mhtxtplain.pl filter. + + o Added mhtxttsv.pl to handle text/tab-separated-values + content. + + o Expanded list of recognized content-types in mhexternal.pl. + + o Changed loading of decoders, charset convertes, and + content-type filters to be done on demand. Should + provide an increase in start-up time. + + o Modified source so no Perl structures are in the "main" + package. The base package is now "mhonarc". This + should make it easier for incorporating mhonarc into + another Perl program. + + *IMPORTANT*: This change causes changes to db file format. + See release notes on how to upgrade pre v2.2 archives. + + o Main routines are now located in mhamain.pl. The main + mhonarc source file now just requires mhamain.pl and + just calls two main functions. + + o Although code should still be Perl 4 compatible, Perl + related resource documentation now puts preference to + Perl 5 notations (eg: MIMEFILTERS, CHARSETCONVERTERS). + + Bug Fixes + --------- + Problem: The @TListOrder array is empty in .mhonarc.db when + MULTIPG is set. This may cause some messages not + getting properly updated when new messages are added. + Solution: Removed use of splice on @TListOrder when MULTIPG. + Now, array slices are used so @TListOrder is preserved. + + Problem: Convert ISO-2022-JP messages can generate "Out of + Memory" errors. + Solution: The cleanup of mhtxtplain.pl's iso-2022-jp code + introduced a bug that caused an infinite loop and + to gobble memoery until it ran out. The fix was + straight-forward. + + Problem: Quoted text that is broken due to maxwidth setting of + the mhtxtplain.pl filter did not have the quote + character prepended to broken the text. + Solution: A regex updated to dealing with a leading space before + quote character. + +======================================================================= +02/23/1998 (2.1.2) + + Enhancements/Changes + -------------------- + + o Added the following resources: + + ARCHIVE Create archive files + FROMFIELDS Define fields to extract "FROM" + USINGLASTPG Is $LASTPG$ in use + + o Removed (almost) all uses of $& in code. Still used + in readmail.pl for decoding non-ASCII encoded text. + + o Changed the default value of CHARSETCONVERTS resource. + The plain, us-ascii, and iso-8859-1 charsets now + default to main::htmlize. This provided a significant + performance improvement when process a large amount of + input. + + o Moved thread related routines into a file called + mhthread.pl. + + o MIMEFILTERS, MIMEARGS, and CHARSETCONVERTS resources + support Perl 5 package qualification in function names + if a semi-colon is used instead of a colon as the + list values separator. + + o Probably some other changes I forgot about. + + Bug Fixes + --------- + Problem: Documentation of MAILTOURL incorrectly states that + the $TO$ resource variable is the value of the + To: message header field. + Solution: Fixed documentation to state that $TO$ represents the + address being hyperlinked. + + Problem: Attachments saved to files with spaces in filename + (due to "usename" option set to m2h_external::filter), + will cause anchors to the attachments in the HTML + message contain spaces. + Solution: Fixed m2h_external::filter to escape special characters + in the URL linking to the external file. + +======================================================================= +02/18/1998 (2.1.1) + + Enhancements/Changes + -------------------- + + o Added DATEFIELDS resource. The resource allows the user to + specify the fields (and order) that are checked when + MHonArc extracts the date of a message. + + o RMM can now take message number ranges and/or message-ids. + + o Added $FROMADDR$ variable for MAILTOURL resource. + + o Message-id printed in warning about unable to parse date. + Helps users locate offending message. + + o 'No Author' used if no message sender is not present. + + Bug Fixes + --------- + Problem: Message with dates after 2037, or before 1970, will hang + MHonArc, not get processed, or listed in wrong order. + Solution: The problem is that Perl's timelocal.pl library cannot + handle dates out of those ranges (same applies to + Time::Local). Since get_time_from_date() is the only + routine require the services of timelocal.pl, the + routine will generate a warning of bad years and use + the current year. + + Problem: Anchors to attachments in a message converted via + SINGLE do not contain OUTDIR if OUTDIR is specified. + OUTDIR may want to be set to all attachments to be + contained in a separate directory from the converted + message. + Solution: mhexternal.pl now checks $SINGLE variable set by the + main code during startup. If set, the value of + $OUTDIR is prepending to any hrefs to external files. + + Problem: February is misspelled "Febuary" in mhtime.pl. + Solution: Change the spelling so its correct. + + Problem: Lowercase timezones in dates are not recognized. + Solution: Code modified to convert zones to uppercase when + performing hash lookups. + + Problem: Specified filenames of attachments sometimes have a + ';' appended when utilizing the "usename" option is + set for mhexternal.pl. + Solution: Fixed MAILhead_get_disposition() in readmail.pl to + strip off ';' parameter separator. + + Problem: Specified filenames with spaces of attachments are not + recognized properly. Filename gets truncated to first + occurance of a space. + Solution: Fixed MAILhead_get_disposition() in readmail.pl to + to handle filenames with spaces. + + Problem: The HTMLEXT resource does not affect the numbered index + page filenames of a MUTLIPG archive. + Solution: write_main_index() and write_thread_index() fixed. + + Problem: Anchor text of MAILTOURL links is translated to URL + escaped text. + Solution: mailUrl() routine fixed. + + Problem: Message 0 could not be deleted if specified with more + than one 0 (eg: 00000); + Solution: rmm() routine fixed. + + Problem: SUBJECTHEADER does not get stored in the db. + Solution: output_db() routine updated to save SUBJECTHEADER. + + Problem: Empty links can be created if there is no "From" defined + for a message and it is used as link text. + Solution: Use 'No Author' as "From" if not defined. + + Problem: If a user defined resource variable is a string that + Perl interprets as a false value, it will not be used. + Solution: Changed code to used define() function in + replace_li_vars(). + + Problem: Expired messages are not removed when a the main index + is not sorted by date. + Solution: Always sort message by date when doing expire check. + +======================================================================= +06/09/97 (2.1.0) + + Enhancements/Changes + -------------------- + + o Added the following resources: + + DEFRCNAME Base name of default resource file + FOLUPBEGIN Begin markup for message follow-ups + FOLUPEND End markup for message follow-ups + FOLUPLITXT Markup for follow-up list entry + GZIPEXE Pathname of gzip executable + GZIPFILES Gzip files + GZIPLINKS Add ".gz" to filenames in URLs + HTMLEXT HTML extension for files + MSGBODYEND Markup at end of converted message body + MSGPREFIX Prefix for message filenames + REFSBEGIN Begin markup for message references + REFSEND End markup for message references + REFSLITXT Markup for reference list entry + TSORT Sort threads by date or message number + TSUBSORT Sort threads by subject + + o Changes to mhexternal.pl filter: + + - Two new options: useicons and iconurl="url". + - Added some more content-types to CTExt hash. + + o Added filter for text/enriched data (mhtxtenrich.pl). + + o Changed default setting for MIMEFILTERS. The following + was added: + + model/*:m2h_external'filter:mhexternal.pl + text/enriched:m2h_text_enriched'filter:mhtxtenrich.pl + text/richtext:m2h_text_enriched'filter:mhtxtenrich.pl + + o Some code moved to new library files (mhopt.pl, + mhfile.pl). + + + Bug Fixes + --------- + Problem: An undefined subroutine error occured during an + RMM operation when there are messages with non-ASCII + encodings in message headers. + Solution: Proper libraries are now loaded for RMM operations. + + Problem: Subjects using the "... -Reply" convention started + a new thread. + Solution: Fixed typo in regexp. + + Problem: Nested anchor markup occurs on index pages where + a message's subject contains a URL and the subject + is used to link to the message page. + Solution: Replaced default routine that converts subject text + + +======================================================================= +05/23/97 (2.0.1) + + Bug Fixes + --------- + + Problem: Bogus empty entry shows up in the database. Bogus + entry appears if a duplicate message is detected. + Potential visible problems of bogus entry are: mailto + links in headers corrupted; a blank listing in the + index. Maybe other potential problems. + Solution: There is a be a bug in some versions of Perl where a + hash key gets added invalidly. The section of code that + this occurs has been modified to avoid the problem. + For existing databases with a bogus empty entry, + MHonArc now removes any empty key entries. + However, it is recommed to rebuild the archive. + + Problem: Index pages are not properly updated if zero messages + are in the archive (like through the -rmm option). + Even -editidx cannot cause a proper update. + Solution: Page count was set to zero when no messages exist. This + caused problems in conditional checks in the write index + routines. To fix, page count is forced to 1 if their + are no messages. + +======================================================================= +05/16/97 (2.0.0) + + Enhancements: + + o Added TCONTBEGIN, TCONTEND, TINDENTBEGIN, TINDENTEND + resources. They are provided to support the formatting + of threads that split across multiple pages of a + multipage index. + + o Added "nonfixed", "maxwidth", and "keepspace" options + to text/plain (mhtxtplain.pl) filter. + + o A directory file is now used for performing archive + locking. This should provide better portability across + operating systems. + + o Dervied files returned from filters can be directories. + If so, the any directory is completely removed if the + message is removed. + + o The mhexternal.pl filter can now output files into + a subdirectory with the "subdir" option. This may be + useful for those wanting to use the "usename" option + and avoid potential filename conflicts. + + o The $NEXT...$ and $PREV...$ resource variables now + behave as one may expect. I.e. The are always relative + to the base sort method: date, author, subject, message + number. The REVERSE resource has no effect on their + values. Therefore, the variables no longer refer to + the actual physical listing order. This new behavior + no longer requires a users to redefine button and link + resources for the sake of specifying REVERSE. + + o "Resent-To" and "Resent-Cc" will now have e-mail + address hyperlinked. + + o Unknown types processed by mhexternal.pl now default + to have a ".bin" extension. This should cause HTTP + servers to treat the file as application/octet-stream. + + o Standard input can be specified as the source of a + mailbox by using a lone "-" on the command-line. Note: + You may need to specify "--" first to shut-off option + processing so the "-" is not interpreted as the start + of an option. + + Bug Fixes: + + o Problem: Index pages with last page links are not updated + when a new page is added. + Solution: All index pages are regenerated if a new page + is added. + + o Problem: "-idxsize 0" does not give unlimited page size. + Solution: Problem fixed and now works as documented. + + o Problem: "-maxsize 0" does not reset archive with + unlimited messages allowed. + Solution: Problem fixed and now works as documented. + + o Problem: Non-ASCII text encodings (=?ISO-..?...) are not + properly decoded when EDITIDX is set. + Solution: The charset filter libraries are now loaded + for EDITIDX. + + o Problem: MODTIME resource setting not remembered across + archive updates. + Solution: MODTIME resource is now properly stored in the + database. + + o Problem: Specifying -rmm and -single caused confusion on + what MHonArc does. + Solution: The case is properly handled, with -rmm taking + precedence. + + o Problem: 4 digit year not checked before 2 digit year + when parsing dates. + Solution: Fixed. + + o Problem: Some index pages in multipage indexes not + updated when messages expire. + Solution: Fixed; all pages are regenerated when a message + expires. + + o Problem: Setting MONTHS and MONTHSABR had no effect. + Solution: Fixed. + + o Problem: $TNEXTFROM$ actually gave the value of $NEXTFROM$. + Solution: Fixed. + + o Problem: Numerical timezone offsets not handled properly + when the offset contained non-zero minutes. This + caused message to be sorted wrong by date. + Solution: Fixed. + + o Problem: Some characters were not properly escaped when + specifying the "in URL" modifier to a resource + variable. + Solution: Fixed. + + o Problem: Thread (formatting) information lost when a + thread is split across multiple pages. + Solution: Fixed. New resources (TCONTBEGIN, TCONTEND, + TINDENTBEGIN, TINDENTEND) exist to preserve + formatting of threads across pages. + + o Problem: If specifying the REVERSE, the next/prev + links in messages do not point to the proper + message as one may expect. + Solution: This should be fixed by the new behavior of + $NEXT...$ and $PREV...$ resource variables. + + +======================================================================= +02/28/97 (2.0.0 beta 3) + + o Removed bogus call to output_db() when GENIDX is active. + The routine is not loaded when GENIDX is active and the + call causes Perl to abort. + + o Duplicates of the OTHERINDEXES resource should no longer + occur. Before, if the OTHERINDEXES resource gets set + during invocation, mhonarc would store duplicate values, + causing unnecessary work to be performed. + + o Fixed problem with blank indexes being created for + OTHERINDEXES. Apparently, there is a bug in Perl, and + a work-around fix has been done. + + o Fixed bug where an extra TSUBLISTEND could get generated. + + +======================================================================= +02/17/97 (2.0.0 beta 2) + + o Added element and -nosubsort option. + + o Changed M2H_DATEFMT envariable to M2H_GMTDATEFMT. + + o Documented LOCKTRIES and LOCKDELAY resources. + + o New resources: + + AUTHORBEGIN - Markup for start of author group + AUTHOREND - Markup for end of author group + AUTHSORT - Sort messages by author + DAYBEGIN - Markup for start of day group + DAYEND - Markup for end of day group + IDXLABEL - Label for main index + MSGGMTDATEFMT - Format of $MSGGMTDATE$ + MSGLOCALDATEFMT - Format of $MSGLOCALDATE$ + SUBJECTBEGIN - Markup for start of subject group + SUBJECTEND - Markup for end of subject group + TIDXLABEL - Label for thread index + + o New resource variables + + $IDXLABEL$ - Label for main index + $MSGGMTDATE$ - Date of message in GMT format + $MSGLOCALDATE$ - Date of message in local format + $TIDXLABEL$ - Label for thread index + + o Some enhancements to the documentation. + + o Some code changes. + + +======================================================================= +01/31/97 (2.0.0 beta 1) + + 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 + threading. + + 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 + formatted. + + 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 a default resource file. The default resource + file is one of the following, in the order of precedence: + + 1. File specified by the M2H_DEFRCFILE envariable + 2. $HOME/.mhonarc.rc + 3. /.mhonarc.rc + + "" is the path of the MHonArc library + directory defined during installation. For MS-DOS, replace + ".mhonarc.rc" with "MHONARC.RC". + + 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 List of enhancements to mhexternal.pl: + + - Show content-type if the data is not recognized. + - New `ext' filter option to define the extension to + use for the created file. + - New `type' filter option to define the "english" + type name of the create file. + - Content-Disposition is supported. Filenames are + ignored still unless `usename' argument passed to + filter. + - Added recognition of few more content-types + + o Updated date parsing to figure out the date of a message to be + more robust on how it parses a date. If unable to parse + date, the message will take on the current time for sorting + purposes. Also, character case is ignored in month and weekday + names. + + o The comment declaration "" is + now inserted between the message header and body. Helps + in the building of some search indexes to restrict searches + on message data. + + o Many resource settings are no longer stored in database if + the resource is the default value. Save some disk space and + allows resources to self adjust when a dependent resource is + changed. + + o The text/plain filter in mhtxtplain.pl has the following + enhancements: + + - Check for charset to control character conversion. + - Integrated iso-2022-jp filter (keys off charset) + - Filter option "quote" cause quoted text in message + to be italicized. + - Filter option "asis" defines a list of charsets to + not convert to sgml entitites. Example usage: + + asis=iso-8859-1:iso-8859-2 + + o mhtxt2022.pl has been removed since the code has been + integrated into mhtxtplain.pl. + + o Resource file elements that have textual content (ie. no + line oriented content) can specify the "chop" attribute + to have the last end-of-line stripped from the content. + Example usage: + + + [Next] + + + o Fixed bug in creating links of message-ids. Mhonarc blindingly + made links of message-ids when editting messages w/o + consideration that the message-ids may already be linked. This + caused markup like the following to occur: + + ...... + + Browsers handle the invalid markup with no problems, causing + the bug to go unnoticed for a long time. Now, only new + added message-ids are scanned for when creating links. + + o $readmail'FieldSep should now be used instead of $FieldSep + for separating duplicate fields in a parsed message header. + + o The -scan output now prints a 4 digit year. + + o Bogus space no longer appears in subjects and dates. + + o Outdir permissions are not checked if -single specified. + + o Some internal changes to how data is stored in databases + (needed for 1522 support). v2.0 will automatically + modify 1.x databases to the 2.0 format. + + o The -single option utilizes the same mail output routine + utilized by regular archive processing. + + o MhonArc will now handle numbers with leading zeros when + the -rmm option is specified. + + o New resources: + + CHARSETCONVERTERS + - Specify character set filters + CONLEN - Honor content-lengths + DECODEHEADS - Decode 1522 encoded data, set for decode + only, as message headers are read (see + note below) + DEFINEVAR - Define resource variables + DEFINEDERIVED - Define user defined derived file + EXPIREDATE - Message cut-off date + EXPIREAGE - Time in seconds from current if msg expires + FIELDSBEG - Begin markup of converted mail header + FIELDSEND - End markup of converted mail header + FLDBEG - Begin markup of mail header field text + FLDEND - End markup of mail header field text + FOLREFS - Print links to explicit follow-ups & refs + GMTDATEFMT - Format of $GMTDATE$ + HEADBODYSEP - Markup between converted mail header & body + IDXPREFIX - Prefix for multi-page main index filenames + INCLUDE - Read resources from other files + LABELBEG - Begin markup of mail header label + LABELEND - End markup of mail header label + LOCALDATEFMT - Format of $LOCALDATE$ + MAIN - Create main index + MHPATTERN - Expression for mesg files in a directory + MODTIME - Set file times to message dates + MONTHS - Full month names: EOL or ':' separated + MONTHSABR - Abbrieviated month names: EOL or ':' + separated + MULTIPG - Create multi-page indexes + NEXTPGLINK - Link to next page in main index + NEXTPGLINK - Inactive link to next page in main index + NOCONLEN - Ignore content-lengths + NODECODEHEADS - Leave message headers "as is" when read + (see note below) + NOFOLREFS - Do not print links to follow-ups & refs + NOMAIN - Do not create main index + NOMODTIME - Do not set file times to message dates + NOMULTIPG - Do not create multi-page indexes + PREVPGLINK - Link to previous page in main index + PREVPGLINKIA - Inactive link to previous page in main index + SUBJECTHEADER - Markup for subject header in converted mail + TIDXPREFIX - Prefix for multi-page thread index filenames + TSUBLISTBEG - List begin in sub-thread + TSUBLISTEND - List end in sub-thread + TSUBJECTBEG - Begin markup for subject-based sub-thread + TSUBJECTEND - End markup for subject-based sub-thread + TSINGLETXT - Markup for mesg not part of a thread + TTOPBEGIN - Begin for top of a thread + TTOPEND - End for a thread + TLINONE - Markup for missing message in a thread + TLIEND - Thread idx list item end + TNEXTBUTTON - Thread next button template + TNEXTBUTTONIA - Inactive thread next button template + TNEXTLINK - Thread next link template + TNEXTLINKIA - Inactive thread next link template + TNEXTPGLINK - Link to next page in thread index + TNEXTPGLINKIA - Inactive link to next page in thread index + TPREVBUTTON - Thread previous button template + TPREVBUTTONIA - Inactive thread previous button template + TPREVLINK - Thread previous link template + TPREVLINKIA - Inactive thread previous link template + TPREVPGLINK - Link to prev page in thread index + TPREVPGLINKIA - Inactive link to prev page in thread index + WEEKDAYS - Full weekday names: EOL or ':' separated + WEEKDAYSABR - Abbrieviated weekday names: EOL or ':' + separated + + + NOTE + 1522 processing is done when creating HTML output and + the (relevant) data stored in the database stays in + encoded form. The DECODEHEADS resource can be set + to decode decode-only charsets when message headers + are read. Hence, the decode-only charsets will be + stored in decoded form. Regular 1522 processing is + still done to still-encoded data when generating output. + The default is NODECODEHEADS. + + o List of removed resources: + + NOTSUBSORT, TSUBSORT + + o New resource variables: + (NOTE: Some variables are only valid in certain contexts) + + $FIRSTPG$ - Filename of first page of main index + $IDXPREFIX$ - Prefix to main index pages' filenames + $LASTPG$ - Filename of last page of main index + $NEXTPG$ - Filename of next main index page + $NEXTPGLINK$ - Link to next page of main index + $NUMOFPAGES$ - Total number of pages in index + $PAGENUM$ - Current page number of index + $PREVPG$ - Filename of previous main index page + $PREVPGLINK$ - Link to previous page of main index + $TFIRSTPG$ - Filename of first page of thread index + $TIDXPREFIX$ - Prefix to thread index pages' filenames + $TLASTPG$ - Filename of last page of thread index + $TNEXTBUTTON$ - Button for next mesg in thread + $TNEXTFROM$ - From of next mesg in thread + $TNEXTFROMADDR$ - From address of next mesg in thread + $TNEXTFROMNAME$ - From name of next mesg in thread + $TNEXTLINK$ - Link for next mesg in thread + $TNEXTMSG$ - Next mesg filename in thread + $TNEXTMSGNUM$ - Next mesg number in thread + $TNEXTPG$ - Filename of next thread index page + $TNEXTPGLINK$ - Link to next page of thread index + $TNEXTSUBJECT$ - Next mesg subject in thread + $TPREVBUTTON$ - Button for prev mesg in thread + $TPREVFROM$ - From of previous mesg in thread + $TPREVFROMADDR$ - From address of previous mesg in thread + $TPREVFROMNAME$ - From name of previous mesg in thread + $TPREVLINK$ - Link for prev mesg in thread + $TPREVMSG$ - Previous mesg filename in thread + $TPREVMSGNUM$ - Previous mesg number in thread + $TPREVPG$ - Filename of previous thread index page + $TPREVPGLINK$ - Link to previous page of thread index + $TPREVSUBJECT$ - Previous mesg subject in thread + + o Removed resources: + + NOTSUBSORT, TSUBSORT + + o Some changes to default resource settings. + + o Reorganized code. Some new libraries have been created + to help in maintenance. + + o Source code has been put under SCCS revision control. + + +======================================================================= +07/12/96 (1.2.3) + + o Extracted initialization of data structures into mhinit.pl. + The file is just required from the main source. + + o Use q{} instead of qq{} when trying to read database file. + Should fix require problem under MS-DOS. + + o Added comments at beginning + of messages. May aid in database recovery techniques. + + o ';'s are now deleted in filenames in mhexternal.pl + (applicable only when "usename" option specified) + + o Added recognition of '/' when converted e-mail addresses + to mailto links in message headers. + + o Simple fix to mhtxt2022.pl for execution under Perl 5. + + +======================================================================= +04/18/96 (1.2.2) + + o Increased the speed performance of base64 decoding. Speed + increase is much greater under Perl 4 than Perl 5. + + o Added -time option to print out total CPU execution time. + Mainly used for debugging reasons (like checking on + base64 decoding times). Time information is sent to + standard error. + + o Added M2H_LOCKDELAY envariable and -lockdelay option. + Either can be used to adjust the sleep time between + attempts to lock the archive. + + o Added -force option to override a lock on an archive if + attempts to lock fail. + + o Added image/x-bmp and image/x-pcx to the default supported + MIME types. + + o Ignore "Sv:" at the beginning of subjects when sorting by + subject. "Sv:" is Danish for "Re:". + + o Fixed bug in mhutil.pl where TIDXPGEND actually set + TIDXPGBEG. + + o Dynamically define exclude_field routine after reading + user options. exclude_field is utilized when formatting + a message header in HTML. Defining the routine at run-time + helps reduce the regular expression overhead the old version + of the routine entailed. There should be an increase in + overall execution time. + + +======================================================================= +03/22/96 (1.2.1) + + o Added support for x-uuencode content-transfer-encoding. + + o Added -locktries command-line option. + + o Added the resource variable $OUTDIR$. + + o mhexternal.pl filter will use the name parameter string + on the content-type field as the anchor text to the file + if there is no content-description. + + o application/x-patch is recognized and processed by the + text/plain filter (mhtxtplain.pl). + + o Fixed bug in install.me and osinit.pl where setting + $'PROG caused perl to terminate if $'DIRSEP was a backslash + (occured under MS-DOS usage). + + o Fixed bug in install.me in the create_dir routine. + If $DIRSEP was a backslash, the regular expression setting + @a would cause perl to abort with an error. + + o Fixed database bug where the MIMEARGS resource setting + was not being stored. + + o Fixed index listing bug where a reverse listing was not + correct if an index size was specified less than the + current size of the archive. + + +======================================================================= +03/01/96 (1.2.0) + + o Rewrote message parser routine so it will work under Perl 5 + for multipart messages. The rewrite also allows some + additional features that are mentioned below. + + o The -mbox and -mh options are no longer required. MHonArc + will automatically determine which mode to operate in + based upon the file arguments. Hence, one can specify + MH folders and mailbox files on the same command-line. + Both options are ignored if specified. + + o An HTML index of an archive contents can be generated to + standard output (-genidx). + + o Message header lines not conforming to RFC 822 are ignored. + (Eg: Those pesky "From " lines should not show up anymore -- + please do not confuse this with the regular "From:" lines; + note the colon vs the space). + + o New resources: + + BOTLINKS - May be used to completely customize + the links at the bottom of messages. + IDXPGBEGIN - Opening markup for main index page. + Allows one to redefine opening HTML + element, HEAD element, TITLE element, + opening BODY element, etc. + IDXPGEND - Closing markup for main index page. + IDXSIZE - Set the maximum number of messages + listed in index. This is different + in MAXSIZE where MAXSIZE will remove + older messages when the MAXSIZE limit + is reached in the archive. + MIMEARGS - Define arguments to filters + MSGPGBEGIN - Opening markup for message pages. + Allows one to redefine opening HTML + element, HEAD element, TITLE element, + opening BODY element, etc. + MSGPGEND - Closing markup for message pages. + NEXTBUTTON - Defines the 'Next' button. + NEXTBUTTONIA - Defines the 'Next' button when it is + inactive. + NEXTLINK - Defines the 'Next' link. + NEXTLINKIA - Defines the 'Next' link when it is + inactive. + NOTSUBSORT - Do not sort threads by subject. + OTHERINDEXES - List other resource files defining + other indexes to create when creating, + or updating, an archive. + PREVBUTTON - Defines the 'Prev' button. + PREVBUTTONIA - Defines the 'Prev' button when it is + inactive. + PREVLINK - Defines the 'Prev' link. + PREVLINKIA - Defines the 'Prev' link when it is + inactive. + TIDXPGBEGIN - Opening markup for thread index page. + Allows one to redefine opening HTML + element, HEAD element, TITLE element, + opening BODY element, etc. + TIDXPGEND - Closing markup for thread index page. + TOPLINKS - May be used to completely customize + the buttons at the top of messages. + TSUBSORT - Sort threads listed by subject. + + o Removed resources: + + INDEXBL, INDEXFL, MBOX, MH, NEXTBL, NEXTFL, PREVBL, + PREVFL, TINDEXBL, TINDEXFL + + Resource were removed because they were no longer applicable + and/or have been superceded by other resources. MHonArc + will still honor old resource settings (where applicable) of + older archives and incorporate them into the new resource + settings. + + o When specifying the resource file, mhonarc will now do + the following to determine its location: + + 1. If its an absolute pathname, mhonarc uses it. + 2. If it is a relative pathname, mhonarc checks for + it relative to the current working directory. + 3. Otherwise, mhonarc checks for it relative to + location of the archive as specified by outdir. + + This resolution will allow you to place resource files with + the archive if desired (can be useful when using the + OTHERINDEXES resource element). + + o Because of the new resources available, many
's are no + longer hard-coded and are controllable by resources.
's + are still used in message pages to separate message data + from mhonarc data. + + o Added resource variables: + (NOTE: Some variables are only valid in certain contexts) + + $DDMMYY$ - Date of message in dd/mm/yy format + $IDXSIZE$ - Max size of index list + $MMDDYY$ - Date of message in mm/dd/yy format + $MSGID$ - Message id + $NEXTBUTTON$ - Next button markup + $NEXTFROM$ - From field of next listed message + $NEXTFROMADDR$ - From e-mail address of next listed message + $NEXTFROMNAME$ - From name of next listed message + $NEXTLINK$ - Next link markup + $NEXTMSGNUM$ - Number of next listed message + $NEXTSUBJECT$ - Subject text of next listed message + $NUMOFIDXMSG$ - Number of messages in index list + $PREVBUTTON$ - Previous button markup + $PREVFROM$ - From field of previous listed message + $PREVFROMADDR$ - From e-mail address of prev listed message + $PREVFROMNAME$ - From name of previous listed message + $PREVLINK$ - Previous link markup + $PREVMSGNUM$ - Number of previous message + $PREVSUBJECT$ - Subject text of previous listed message + $YYMMDD$ - Date of message in yy/mm/dd format + + o Can specify a 'U' with variable length specifier to denote + replacement string is to be used in a URL. Examples: + + $SUBJECTNA:40U$ + $MSGID:U$ + + The 'U' causes the replace text to have special characters + escaped as denoted by the URL spec. NOTE: Specify ":U" + should NOT be used in the MAILTOURL resource; the variables + will automatically be expanded according to the URL spec. + Specifyind ":U" or a length specifier in the MAILTOURL + resource will prevent mhonarc from detecting the variable. + + o New command-line options: + + -genidx - Generate HTML index of archive contents + to stdout. + -idxsize - Maximum number of messages shown in indexes + -notsubsort - Do not sort threads listed by subject. + -savemem - Write message data while processing + -tsubsort - Sort threads listed by subject. + + o The library mhtxt2022.pl has been added that provides + a filter to process ISO-2022 (Japanese) encoded mail messages. + See mhtxt2022.pl on how to hook it in. + + o The mhexternal.pl filter by default ignores any filename + specification in the message for creating derived files. + This avoids name conflicts and security problems. + The "usename" filter option may be used to override this. + + o Mime filters are now called with two additional arguments: + + $converted_data = &function( + $header, *parsed_header_assoc_array, + *message_data, $decoded_flag, + $optional_filter_arguments); + + The $decoded_flag is set to 1 if the *message_data has been + decoded. $optional_filter_arguments contains an optional + argument string as determined by the filter. + + o Mime filters can now be registered for multipart types + and message types. This allows one to override mhonarc's + conversion of these types, and completely replace mhonarc's + message->HTML conversion process. + + o Mime filters should now use $'FieldSep instead of $'X for + accessing parsed message headers. + + o Mime filters can be registered for a base type. Ie. + It is no longer required to explicitly list each possible + subtype if a single filter is to be used for them all. + Example: + + + image/*:myfilter'imagefilter:myfilter.pl + + + Registers "myfilter'filter" for all image data types, + regardless of subtype. However, if an explicit entry + exists for a subtype, then that filter is called. + Example: + + + image/*:myfilter'imagefilter:myfilter.pl + image/gif:myfilter'giffilter:myfilter.pl + + + "myfilter'giffilter" is called for all image/gif data. + "myfilter'imagefilter" is called for all other image data. + + o A new resource, MIMEARGS, may be used to pass optional arguments + to filters to control their behavior. The format of the + argument string is controlled by the various filters. The + arguments can be specified by a specific content-type, or + for the filter routine in general. A content-type argument + will be used over any arguments specified for a filter. + + Example usage: + + + image/gif:inline usename + m2h_external'filter:usename + + + See the documentation for possible arguments to filters. + + o Installation program can now be invoked in batch mode. + + o Thread index properly includes docurl as main index. + -nodocurl will prevent the inclusion as with the main index. + + o Fixed bug in mhtxthtml.pl on properly propogating a base + URL to relative URLs starting with a "/". + + o Fixed bug where single quotes, and backslashed in keys of + associative arrays in the database file were not getting + escaped. + + o Fixed bug where spaces and special characters were not + properly escaped in URL strings: spaces were left as-is, + and special characters were deleted. + + o Removed illegal invocation choices in the Synopsis of the + documentation. + + +======================================================================= +04/24/95 (1.1.1) + + o Fixed bug in -scan output where month in date was off by + one. + + +======================================================================= +04/21/95 (1.1.0) + + o Made modifications to make MHonArc suitable to run + under MS-DOS without modification. MHonArc will + automatically detect if it is running under Unix or MS-DOS. + + o Added support for a thread index. MHonArc will create a + complimentary index to the main index showing message + threads. + + o Archive messages can be deleted. + + o A listing to stdout of an archives contents can be + generated. + + o Maximum number of messages for an archive can be set. + Older messages (based on sort method) are removed + automatically during add operations. + + o MHonArc will now recognize if you try to add in a message + that already exists in an archive. + + o The -editdx option will now also cause a updating of all + mail messages. Guarantees resource changes to affect all + messages. + + o Added the following resource file elements: + + MSGFOOT -- Footer text for converted messages + MSGHEAD -- Header text for converted messages + NODOC -- Do not put link to documentation + NOTHREAD -- Do not create thread index + TFOOT -- Text at bottom of thread index page + THEAD -- Text at top of thread index page + THREAD -- Create thread index + TLEVELS -- Depth of thread listing + TLITXT -- Template text for entry in thread + index + TIDXFNAME -- Thread index filename + TINDEXBL -- Top button label in messages to + thread index + TINDEXFL -- Verbose label in message to thread + index + TTITLE -- Title of thread index page + + o Added the following command-line options: + + -maxsize -- Maxinum # messages in an archive + -nodoc -- Do not put link to documentation + -nothread -- Do not create thread index + -rmm -- Remove messages from an archive + -scan -- Listing of archive to stdout + -thread -- Create thread index + -tidxfname -- Thread index filename + -tlevels -- Depth of thread listing + -ttitle -- Title of thread index page + + o Added the following environment variables: + + M2H_MAXSIZE -- Maxinum # messages in an archive + M2H_THREAD -- If non-zero, create thread index + M2H_TIDXFNAME -- Thread index filename + M2H_TLEVELS -- Depth of thread listing + M2H_TTITLE -- Title of thread index page + + o Added the following variables for template resources + (applicability of variables vary depending on the resource): + + $DOCURL$ -- URL to documentation + $IDXFNAME$ -- Main index page filename + $IDXTITLE$ -- Main index page title + $NEXTMSG$ -- Next message filename + $PREVMSG$ -- Previous message filename + $PROG$ -- Program name + $TIDXFNAME$ -- Thread index page filename + $TIDXTITLE$ -- Thread index page title + $VERSION$ -- Version number of the program + + o Added $FROM$, $MSGID$, and $SUBJECT$ variables to be used + in the MAILTOURL resource. + + o The string `$$' in template resources will produce a `$' in + the output. + + o Fixed problem with messages (with follow-ups) getting + unnecessarily updated when messages are added to an archive. + + o Only a CR/LF, or LF, pair will terminate a message head. + Before, MHonArc was terminating message heads when + encountering an empty line or a line that only contained + whitespace (which was incorrect behavior). + + o Fixed bug in mhexternal.pl dealing with the `name' parameter + in the content-type field. Surrounding "s or 's were not + being deleted causing filenames with quotes to be written. + + o mhexternal.pl: The head of a pathname in the `name' + parameter in the content-type field is stripped off before + writing the external file. I.e. Only the base filename is + used. + + o Only one
after the H1 subject in messages will appear + if no message header fields are printed. + + o Added recognition of the following content-types in + mhexternal.pl: + + application/mac-binhex40 + + o Added a extras/ directory containing useful programs for + MHonArc. See README in the directory for information on + the programs contained in there. + + o To support -rmm, MIME filters now return an array. The + first array value is the HTML for the message, and any other + array values are filenames of files generated by the + filter. This allows MHonArc to know of any extra files that + must be deleted when a message is removed. + + o Some routines from the main mhonarc source file have been + moved into a separate librarys: readmail.pl, mhdb.pl, + mhutil.pl + + o The default URL to the documentation is now, + + http://www.oac.uci.edu/indiv/ehood/mhonarc.html + + The old URL, + + http://www.oac.uci.edu/indiv/ehood/mhonarc.doc.html + + is still valid. + + o There's probably other stuff, but I cannot remember. + + +======================================================================= +10/01/94 (1.0.0) + + o First release -- See RELNOTES about compatibility issues + with mail2html. + + +======================================================================= +####################################################################### +======================================================================= +Earl Hood, earlhood@usa.net +@(#) CHANGES 98/11/08 13:06:01 diff --git a/FILELIST b/FILELIST new file mode 100644 index 0000000..92f5242 --- /dev/null +++ b/FILELIST @@ -0,0 +1,61 @@ +name:MHonArc +bin:mhonarc +bin:mha-dbedit +bin:mha-dbrecover +lib:lib/base64.pl +lib:lib/ewhutil.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/mhmimetypes.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/mhtxtsetext.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/rfc822.pl +doc:doc/app-bugs.html +doc:doc/app-diagnos.html +doc:doc/app-utilsprg.html +doc:doc/blank.gif +doc:doc/bug.gif +doc:doc/contacts.html +doc:doc/faq +doc:doc/faq.gif +doc:doc/home.gif +doc:doc/index.html +doc:doc/intro.html +doc:doc/layout.html +doc:doc/mhonarc.html +doc:doc/monicon.gif +doc:doc/next.gif +doc:doc/prev.gif +doc:doc/quickstart.html +doc:doc/rcvars.html +doc:doc/resources +doc:doc/resources.html +doc:doc/ssbg75.jpg +doc:doc/stampwb2.gif +doc:doc/up.gif diff --git a/INSTALL b/INSTALL index 0ee51c8..2575277 100644 --- a/INSTALL +++ b/INSTALL @@ -1,59 +1,207 @@ -INSTALL for MHonArc - - http://www.oac.uci.edu/indiv/ehood/mhonarc.html - ---------------------------------------------------------------------------- - - NOTE - Installation has changed slightly from 1.x releases. Please - read the following instructions if you are familiar with - the 1.x installation process. - -This document gives the basic method for installing MHonArc on a Unix or -MS-DOS/Windows system. - -Instructions - - Interactive Installing: - - Run the following command: - - perl install.me - - 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. - - Batch Install: - - 1. Edit the file 'install.cfg'. Knowledge of Perl is helpful. - 2. Run the following command: - - perl install.me batch - - The installation program will output information on what - is being installed and where it is being installed. - -Notes on Installation Program - - o The '#!' line in the installed mhonarc program is set to - point to the Perl executable specified in the installation - process (this has no meaning under MS-DOS). - - o The installed mhonarc program has code added so it will find - its default libraries specified in the installation program. - I.e. The install lib directory is added to mhonarc's search - path so it will find its libraries. - - o If you specify paths that do not exist, the install.me - program will create the path ONLY if running in interactive - mode. If running in batch mode, you must check that all paths - specified exist. - - o MSDOS/Windows users: You many need to create a batch file - for easy invocation of MHonArc. An example batch file - exists in the bat/ directory of the distribution. - ---------------------------------------------------------------------------- -Copyright (C) 1997, Earl Hood, ehood@medusa.acs.uci.edu -@(#) INSTALL 97/05/15 16:59:14 @(#) +INSTALL for MHonArc +=================== + + +--------------------------------------------------------------------------- +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, earlhood@usa.net, about arranging an alternative license. + +--------------------------------------------------------------------------- +TABLE OF CONTENTS + + o SUMMARY + o SYSTEM REQUIREMENTS + o INSTALLING FILES + o install.me NOTES + o WIN32 NOTES + o ALTERNATE OPERATING SYSTEMS + o MANUAL INSTALLATION + o RESOURCE FILE EDITING + +--------------------------------------------------------------------------- +SUMMARY + +This document gives the basic method for installing MHonArc on your +system. Please read this entire document before installation. + + NOTE Please read RELNOTES before installing MHonArc for any + news about compatibility with previous versions and/or + important usage information. + +--------------------------------------------------------------------------- +SYSTEM REQUIREMENTS + + o Perl 5 is installed. If you do not have Perl 5, goto + for download information. + +--------------------------------------------------------------------------- +INSTALLING FILES + +Provided in the MHonArc distribution is a Perl program, "install.me" +that will install MHonArc on your system. To run the program, type +the following at your shell prompt: + + shell-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 to have root/admin privileges +to have a successful install. + +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: + + -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 + -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: + + shell-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: + + shell-prompt> perl install.me -nobin -nolib -noman + +If you want to install files relative to your home directory, do the +following: + + shell-prompt> perl install.me -prefix $HOME + +--------------------------------------------------------------------------- +install.me NOTES + + o 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. + + o 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 should NOT have to set your + PERL5LIB environment variable if you install the library files + in a location not in the default perl library search path. + + o If you specify paths that do not exist, the install.me + program will create the paths for you. If running in + interactive mode, you will be prompted before each path + is created. + + o install.me supports environment variable interpolation in + pathnames specified during interactive installation. + For example, if you want to install the 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 '~' 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 + ~/bin + + o If you want to abort the installation, just enter the + termination character. For Unix systems, it is normally + Ctrl-C; for Win32 systems, it is normally Ctrl-Z. + +--------------------------------------------------------------------------- +WIN32 NOTES + + o 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. + + o In the logo/ directory of the distribution is a BMP file + "mhaicon.bmp". You can copy the image into your Windows Icon + directory. Then through the file types editor of the file + explorer, you can specify mhaicon.bmp as the icon for MHonArc + resource (.mrc) files. + +--------------------------------------------------------------------------- +ALTERNATE OPERATING SYSTEMS + +In many cases, the install.me program will work 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 will not work properly for your system, here are the +steps to install MHonArc manually: + + o Copy library (*.pl) files in the "lib" directory to the + library location you desire. + + o Copy the program files to the location you want them + installed. After copying, you must edit the each file + as follows: + + - Edit the "#!/..." line (the first line of each file) + to be the complete pathname of your perl interpreter. + Note, this step is only required for systems (Unix) + that support "#!". + + - Add a new line right after the "#!/..." line 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. + +--------------------------------------------------------------------------- +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. + +--------------------------------------------------------------------------- +Copyright (C) 1997-1998, Earl Hood, earlhood@usa.net +@(#) INSTALL 98/11/08 15:56:28 diff --git a/Makefile b/Makefile deleted file mode 100644 index d5562cd..0000000 --- a/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -##---------------------------------------------------------------------------## -## @(#) Makefile 1.6 98/03/03 19:05:56 -##---------------------------------------------------------------------------## - -CHMOD = /bin/chmod -RM = /bin/rm -PRGS = mhonarc -TXTFILES = ACKNOWLG CHANGES COPYING README RELNOTES INSTALL BUGS -DOSIFY = dosify -PERL = perl -INSTALLPRG = install.me -INSTALLCFG = install.cfg - -default: - $(CHMOD) a+x $(PRGS) - $(CHMOD) -R a+r,a+X . - $(DOSIFY) $(TXTFILES) - -install: - $(PERL) $(INSTALLPRG) - -install-batch: - $(PERL) $(INSTALLPRG) batch - -test: - @echo "No tests" - -clean: - @echo "Nothing to clean" diff --git a/Makefile.PL b/Makefile.PL new file mode 100644 index 0000000..64d0bfe --- /dev/null +++ b/Makefile.PL @@ -0,0 +1,58 @@ + +# @(#) Makefile.PL 1.1 98/11/08 15:41:21 +# 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. + +open(MAKEFILE, ">Makefile") || + die "Unable to create Makefile: $!\n"; + +%vars = ( map { split(/=/, $_) } @ARGV ); +my $opt_prefix = defined($vars{'PREFIX'}) ? + "-prefix $vars{'PREFIX'}" : ""; +my $opt_binpath = defined($vars{'INSTALLSCRIPT'}) ? + "-prefix $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'}) ? + "-prefix $vars{'INSTALLMAN1DIR'}" : ""; + $opt_manpath =~ s/man1$//; + +my $instme_args = "$opt_prefix $opt_binpath $opt_libpath $opt_manpath"; + + +print MAKEFILE < + + Copyright (C) 1995-1998 + Earl Hood, earlhood@usa.net --------------------------------------------------------------------------- - *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* +USING/COPYING - Please read the RELNOTES file for important - information regarding upgrading to v2.2.0 - from previous releases. + 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, earlhood@usa.net, about arranging an alternative license. --------------------------------------------------------------------------- - MHonArc -- Internet mail-to-HTML converter - Copyright (C) 1995-1998 Earl Hood, ehood@medusa.acs.uci.edu - - 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. +SUMMARY + +MHonArc is a Perl program for converting mail messages as specified +in RFC 822 and the MIME standard to HTML. MHonArc can perform the +following tasks: + + * Convert MH mail folders or UUCP/Unix style mailboxes into an HTML + mail archive. + * Add or remove messages to an existing HTML mail archive generated + by MHonArc. + * Convert a single message to HTML. + +Along with these tasks, MHonArc provides the following: + + * A main customizable index for mail messages archived. + * A customizable thread index listing messages by thread. + * Control over message formatting. + * The ability to hook in your own custom message filters. + --------------------------------------------------------------------------- -CONTENTS +FILE CONTENTS ACKNOWLG Thanks to people BUGS Bug list 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) -bat/ Batch files for MS-DOS users +RELNOTES Release notes for MHonArc (!!!!PLEASE READ!!!!) doc/ Documentation for MHonArc examples/ Example resource files for MHonArc extras/ Extra programs for use with MHonArc (See extras/README) -faq/ FAQ for MHonArc -install.cfg Base installation configuration file install.me Installation program for MHonArc lib/ Libraries/MIME filters used by MHonArc logo/ Gifs of the MHonArc logo +mha-dbedit* Modify database without regenerating pages +mha-dbrecover* Rebuild database from HTML message pages mhonarc* The MHonArc program ---------------------------------------------------------------------------- - *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* - - Please read the RELNOTES file for important - information regarding upgrading to v2.2.0 - from previous releases. - --------------------------------------------------------------------------- INSTALLATION + Please read RELNOTES before installing MHonArc for any news + about compatibility with previous versions and/or important + usage information. + Read the file INSTALL for instructions on how to install MHonArc. --------------------------------------------------------------------------- @@ -91,7 +95,7 @@ DOCUMENTATION Documentation for MHonArc is located in the doc/ directory. The main documentation for MHonArc is in multiple HTML files. - Load mhonarc.html in the doc/ directory into your Web browser to + Load index.html in the doc/ directory into your Web browser to get started. Filenames of the documentation do NOT follow the 8.3 convention. @@ -99,12 +103,7 @@ DOCUMENTATION to read the documentation locally. Some tables are used in the documentation. Therefore, having - a table-capable viewer is beneficial. If your viewer does not - recognize tables, the documentation should still be usable. - - Also provided is a version of the MHonArc FAQ in the faq/ - directory. The FAQ is also in HTML. Load faq.html into your - Web browser to read the FAQ. + a table-capable viewer is beneficial, but not essential. --------------------------------------------------------------------------- MAILING LIST @@ -114,24 +113,30 @@ MAILING LIST the latest news about MHonArc. To subscribe to the mailing list, send mail to - mhonarc-request@rosat.mpe-garching.mpg.de with the single word - "subscribe" (without the quotes) as the message body. + mhonarc-request@ncsa.uiuc.edu with the single word "subscribe" + (without the quotes) as the message body. - Mail sent to mhonarc@rosat.mpe-garching.mpg.de will be distributed - to all subscribers. + Mail sent to mhonarc@ncsa.uiuc.edu will be distributed to all + subscribers. + + The list is restricted to subscribers only. Messages sent to the + list by non-subscribers are manually screened before distribution; + which may incur a significant delay before the message is actually + seen be subscribers. Any spam messages are happily redirected + to /dev/null. The WWW archive of the mailing list is located at - (http://www.rosat.mpe-garching.mpg.de/mailing-lists/mhonarc/) - and is searchable via a Glimpse search engine. + and is + searchable via a Glimpse search engine. --------------------------------------------------------------------------- BUGS/COMMENTS/SUGGESTIONS? If you have any bugs/comments/suggestions about MHonArc, you may send mail to the MHonArc mailing list, - mhonarc@rosat.mpe-garching.mpg.de. + . - NOTE: The author of MHonArc *is* subscribed to the list. + NOTE: The author of MHonArc *IS* subscribed to the list. If it is a bug you are reporting, please include the following in your message: @@ -146,22 +151,20 @@ BUGS/COMMENTS/SUGGESTIONS? files, resource files, environment settings, etc). Before sending e-mail, make sure the documentation, or FAQ, does - not already have an answer to your question/problem. + not already have an answer to your question/problem. Also, check + the MHonArc home page to see if you have the latest version of + MHonArc. --------------------------------------------------------------------------- -USING/COPYING - MHonArc is free to use, but feel free to send the author a donation + 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 donars are more likely to - get more timely responses ;-) - - MHonArc is distributed under the GNU General Public License. - The rules for using and copying MHonArc are explained in the - file COPYING. + 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. --------------------------------------------------------------------------- -Copyright (C) 1995-1998, Earl Hood, ehood@medusa.acs.uci.edu -@(#) README 98/03/03 19:06:23 +Copyright (C) 1995-1998, Earl Hood, earlhood@usa.net +@(#) README 98/11/08 13:06:00 diff --git a/RELNOTES b/RELNOTES index 58f2fb8..c39f872 100644 --- a/RELNOTES +++ b/RELNOTES @@ -1,128 +1,162 @@ -Release Notes for MHonArc - - http://www.oac.uci.edu/indiv/ehood/mhonarc.html - -Also read the CHANGES document for changes that may affect you if -you are a user of an earlier version of MHonArc. - -=========================================================================== -Version 2.2.0 - - o *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* - - If you have archives created with v2.1.x, or earlier, you - must update the archive before using v2.2.0, and later. If - you are creating new archives, then you can skip the how-to - on upgrading older archives. - - To update your v2.1.x, or earlier, archives, you can run the - -editidx option with the def-mime.rc resource in the examples - directory on your archives. For example: - - mhonarc -editidx -rcfile examples/def-mime.rc \ - -outdir /path/to/archive - - Make sure that the mhonarc you are using is v2.2.0, or later. - Of course, change the -rcfile and -outdir pathname to reflect - where you are running mhonarc and where your archive is - located, respectively. - - The key is to apply the def-mime.rc to all your archives. - 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.rc - to include your settings and use the variant version when - updating your archives. - - o If you have written any custom MIME filters, you filters may - be affected by v2.2.0. 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. - - ---------------------------------------------------------------------------- -Version 2.1.2 - - o The new default setting for CHARSETCONVERTERS will not get - used in existing archives. If you want the settings to - help improve the performance on existing archives, you need - to define the following resource: - - - plain:main'htmlize: - us-ascii:main'htmlize: - iso-8859-1:main'htmlize: - - - If you do not specify a resource file each time you update - and archive, you can create one with the above settings and - do -editidx so subsequent updates will use the new settings - (you do not need to respecify the resource file again after - the -editidx operation). - - o For a reason why you may want to set the ARCHIVE resource to - 0, see the ARCHIVE resource page of the documentation. - ---------------------------------------------------------------------------- -Version 2.1.1 - - o A bug-fix, minor enhancement, release. There are no - changes to MHonArc that require any special notes. - - o A new (contributed) program, prsfrom.pl, has been added to - the extras directory. This program may be of use depending - on the type of input you pass to MHonArc. See the extras - README for more information. - ---------------------------------------------------------------------------- -Version 2.1.0 - - o See the Warnings in the documentation for the new HTMLEXT - and MSGPREFIX resources before using them. - - o To take advantage of the new default MIMEFILTERS setting - for existing archives, you will need set the MIMEFILERS - resource in a update operation. The simplest approach - is to perform an -editidx on existing archives with a - resource file containing the following settings: - - - model/*:m2h_external'filter:mhexternal.pl - text/enriched:m2h_text_enriched'filter:mhtxtenrich.pl - text/richtext:m2h_text_enriched'filter:mhtxtenrich.pl - - ---------------------------------------------------------------------------- - -Version 2.0.1 - - See the BUGS file for an important bug fix related to - empty database entries. - ---------------------------------------------------------------------------- - -Version 2.0.0 - - o The installation process has changed slightly. Please - read the installation instructions in the README - carefully. - - o Documentation is now provided only in HTML. - - o There are some changes to how data is stored in the - database file from v1.x. If MHonArc v2.0 reads a 1.x - archive, it will automatically convert the 1.x data into - 2.0 data. All existing resource settings will be preserved. - - NOTE - Once an archive has been processed by v2.0, the - database may no longer be utilized by v1.x. If - v1.x is used later to process the archive, - unpredictable results will occur. - - -=========================================================================== -98/03/03 19:09:24 +Release Notes for MHonArc +========================= + + +Read the CHANGES document for changes that may affect you if you are +a user of an earlier version of MHonArc. + +=========================================================================== +Version 2.3.3 + + See notes below about v2.3.x releases if upgrading from v2.2, + or earlier, or from an earlier v2.3 release. + +Version 2.3.2 + + o A new (improved) "install.me" exists to install MHonArc. + See INSTALL for more information. + +Version 2.3.0, 2.3.1 + + o If you have archives created with v2.1.x, or earlier, you + must update the archives before using versions v2.3, or + later. + + To update your archives, you use the mha-dbedit program + using the def-mime.mrc in the examples directory. For example: + + mha-dbedit -rcfile examples/def-mime.mrc \ + -outdir /path/to/archive + + Make sure that the mhonarc you are using is v2.3, or later. + 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. + +=========================================================================== +== Past Release Notes == +=========================================================================== +Version 2.2.0 + + o *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* *IMPORTANT* + + If you have archives created with v2.1.x, or earlier, you + must update the archive before using v2.2.0, and later. If + you are creating new archives, then you can skip the how-to + on upgrading older archives. + + To update your v2.1.x, or earlier, archives, you can run the + -editidx option with the def-mime.rc resource in the examples + directory on your archives. For example: + + mhonarc -editidx -rcfile examples/def-mime.rc \ + -outdir /path/to/archive + + Make sure that the mhonarc you are using is v2.2.0, or later. + Of course, change the -rcfile and -outdir pathname to reflect + where you are running mhonarc and where your archive is + located, respectively. + + The key is to apply the def-mime.rc to all your archives. + 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.rc + to include your settings and use the variant version when + updating your archives. + + o If you have written any custom MIME filters, you filters may + be affected by v2.2.0. 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. + + +--------------------------------------------------------------------------- +Version 2.1.2 + + o The new default setting for CHARSETCONVERTERS will not get + used in existing archives. If you want the settings to + help improve the performance on existing archives, you need + to define the following resource: + + + plain:main'htmlize: + us-ascii:main'htmlize: + iso-8859-1:main'htmlize: + + + If you do not specify a resource file each time you update + and archive, you can create one with the above settings and + do -editidx so subsequent updates will use the new settings + (you do not need to respecify the resource file again after + the -editidx operation). + + o For a reason why you may want to set the ARCHIVE resource to + 0, see the ARCHIVE resource page of the documentation. + +--------------------------------------------------------------------------- +Version 2.1.1 + + o A bug-fix, minor enhancement, release. There are no + changes to MHonArc that require any special notes. + + o A new (contributed) program, prsfrom.pl, has been added to + the extras directory. This program may be of use depending + on the type of input you pass to MHonArc. See the extras + README for more information. + +--------------------------------------------------------------------------- +Version 2.1.0 + + o See the Warnings in the documentation for the new HTMLEXT + and MSGPREFIX resources before using them. + + o To take advantage of the new default MIMEFILTERS setting + for existing archives, you will need set the MIMEFILERS + resource in a update operation. The simplest approach + is to perform an -editidx on existing archives with a + resource file containing the following settings: + + + model/*:m2h_external'filter:mhexternal.pl + text/enriched:m2h_text_enriched'filter:mhtxtenrich.pl + text/richtext:m2h_text_enriched'filter:mhtxtenrich.pl + + +--------------------------------------------------------------------------- +Version 2.0.1 + + See the BUGS file for an important bug fix related to + empty database entries. + +--------------------------------------------------------------------------- +Version 2.0.0 + + o The installation process has changed slightly. Please + read the installation instructions in the README + carefully. + + o Documentation is now provided only in HTML. + + o There are some changes to how data is stored in the + database file from v1.x. If MHonArc v2.0 reads a 1.x + archive, it will automatically convert the 1.x data into + 2.0 data. All existing resource settings will be preserved. + + NOTE + Once an archive has been processed by v2.0, the + database may no longer be utilized by v1.x. If + v1.x is used later to process the archive, + unpredictable results will occur. + +=========================================================================== +@(#) RELNOTES 98/11/08 13:04:27 +Earl Hood, earlhood@usa.net diff --git a/doc/bugs.html b/doc/app-bugs.html similarity index 69% rename from doc/bugs.html rename to doc/app-bugs.html index 0e040c5..3e463d6 100644 --- a/doc/bugs.html +++ b/doc/app-bugs.html @@ -2,18 +2,62 @@ -MHonArc -- Bugs +MHonArc v2.3 -- Appendix: Bugs - +

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


-

Bugs

+

Appendix: Bugs

+ +
+

Reporting Bugs

+ +

To report a bug against MHonArc, send mail to +mhonarc@ncsa.uiuc.edu and +please include the following information: +

+ +
    +
  • Version of Perl (can be retrievied by "perl -v").
  • +
  • Version of the program (can be retrievied by "mhonarc -v").
  • +
  • The operating system you are using (on Unix the output +of "uname -a" is useful).
  • +
  • The exact command-line used to invoke the program.
  • +
  • Error/diagnostic messages from the program.
  • +
  • Any other information that might prove useful (eg. input +files, resource files, environment settings, etc).
  • +
+ +

If possible, avoid sending a huge mail message. Try to make the +bug reproducable with the smallest amount of data that is possible. +If this is difficult, then either provide URLs to any data needed +to reproduce the bug, or state that data can be provided via +private mail to any persons concerned. +

+ +

Note, some bug reports are not actual bugs, but usage errors. +Make sure you have checked the problem against the documentation and FAQ +before sending a report. Also, check the +bug list +in the +documentation to see if the bug has already been reported (and maybe +fixed). You may need to go the +MHonArc +home page +to check the bug list in case you are not using the latest version +of MHonArc. +

+ + +
+

Bug List

The following gives a list of bugs reported against MHonArc. Each bug listing shows the version the @@ -23,8 +67,6 @@

Bugs

the bug was fixed.

-

Bug List

- @@ -32,6 +74,362 @@

Bug List

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -64,7 +462,7 @@

Bug List

@@ -1088,20 +1486,20 @@

Bug List


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


-98/03/03 18:58:32
+98/11/08 12:24:47
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/diagnos.html b/doc/app-diagnos.html similarity index 86% rename from doc/diagnos.html rename to doc/app-diagnos.html index 6a4dd9d..3a21a96 100644 --- a/doc/diagnos.html +++ b/doc/app-diagnos.html @@ -1,18 +1,19 @@ -MHonArc -- Diagnostics +MHonArc v2.3 -- Appendix: Diagnostics - +

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


-

Diagnostics

+

Appendix: Diagnostics

Three types of messages exist in MHonArc: Informative messages, Warnings, and @@ -214,19 +215,19 @@

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


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


-98/03/03 18:58:30
+98/10/24 17:31:02
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/app-utilsprg.html b/doc/app-utilsprg.html new file mode 100644 index 0000000..7ce8383 --- /dev/null +++ b/doc/app-utilsprg.html @@ -0,0 +1,90 @@ + + + +MHonArc v2.3 -- Appendix: Utility Programs + + + + + +

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

+ +
+ +

Appendix: Utility Programs

+ +

This appendix describes the adiitional 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: +

+
+    % 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: +

+
+    % 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 as follows: +

+
+    % 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: +

+
+    % mha-dbrecover -rcfile res.mrc -outdir /path/to/archive
+
+ + +
+ +

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

+ + +
+
+98/10/24 17:31:02
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/blank.gif b/doc/blank.gif new file mode 100644 index 0000000..68c0385 Binary files /dev/null and b/doc/blank.gif differ diff --git a/doc/bug.gif b/doc/bug.gif new file mode 100644 index 0000000..794cfd6 Binary files /dev/null and b/doc/bug.gif differ diff --git a/doc/contacts.html b/doc/contacts.html index f29bfad..daf3b47 100644 --- a/doc/contacts.html +++ b/doc/contacts.html @@ -1,14 +1,14 @@ - -MHonArc -- Contacts - - +MHonArc v2.3 -- Contacts + +

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

@@ -19,16 +19,17 @@

Contacts


Mailing List

-

A mailing list, mhonarc@rosat.mpe-garching.mpg.de, is available to +

A mailing list, +mhonarc@ncsa.uiuc.edu, +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.

-

To subscribe to the mailing list, send mail to mhonarc-request@rosat.mpe-garching.mpg.de with the command,

+

To subscribe to the mailing list, send mail to +mhonarc-request@ncsa.uiuc.edu with the command,

 subscribe
@@ -37,15 +38,44 @@ 

Mailing List

as the message body.

-

If you send mail mhonarc@rosat.mpe-garching.mpg.de, your message will be -distributed to all subscribers on the list.

+

If you send mail +mhonarc@ncsa.uiuc.edu, +your message will be +distributed to all subscribers on the list. +

+ +

The list is restricted to subscribers only. Messages sent +to the list by non-subscribers are manually screened before distribution. +Therefore, there may be a significant delay before the message is +actually seen be subscribers. Any spam messages are happily redirected +to /dev/null. +

-

The mailing list is archived by Majordomo. You -can also use the WWW to access the archive (with -full text search using glimpse) at <URL:http://www.rosat.mpe-garching.mpg.de/mailing-lists/mhonarc/> +

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

+ +

To subscribe, send mail to +

+
+    majordomo@ncsa.uiuc.edu
+
+

with the body of your message containing the single line +

+
+subscribe mhonarc-allow
+
+

You can now send messages to +mhonarc@ncsa.uiuc.edu +with from the address you sent the subscribe request. +

+ +

The mailing list is archived by Majordomo. You +can use the WWW to access the archive (with +full text search using glimpse) at +<URL:http://www.xray.mpe.mpg.de/mailing-lists/mhonarc/>


@@ -54,13 +84,25 @@

People

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

+
Achim Bohnet
+ach@mpe.mpg.de +

Maintainer, of the MHonArc mailing list archive. +

+
Earl Hood
-ehood@medusa.acs.uci.edu +earlhood@usa.net

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

+
+
Christopher Lindsey
+mhonarc-owner@ncsa.uiuc.edu +

Administrator of the MHonArc mailing list. +

+
Steve Pacenka
sp17@cornell.edu @@ -68,16 +110,9 @@

People

environments, and help test (in the early days).

-
-
Achim Bohnet
-ach@mpe.mpg.de -

Administrator, and maintainer, of the -MHonArc mailing list.

-
MHonArc users
-mhonarc@rosat.mpe-garching.mpg.de +mhonarc@ncsa.uiuc.edu

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

@@ -86,19 +121,19 @@

People


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


-98/02/13 20:06:43
+98/10/24 17:31:03
MHonArc
-Copyright © 1997, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/faq.gif b/doc/faq.gif new file mode 100644 index 0000000..c876e43 Binary files /dev/null and b/doc/faq.gif differ diff --git a/faq/about.html b/doc/faq/about.html similarity index 95% rename from faq/about.html rename to doc/faq/about.html index d176999..75a2619 100644 --- a/faq/about.html +++ b/doc/faq/about.html @@ -120,8 +120,8 @@

Version

Location

Version2.3.0-2.3.2
Problem-otherindex and -perlinc command-line options do not work. Using them has no affect. +
SolutionSubtle precedence issue in Perl variable operations; problem fixed. +
Fixed2.3.3

Version2.3.0-2.3.2
ProblemResource variable expansion not working properly in MAILTOURL resource. +
SolutionCertain variables in read_mail_header() where put in my() declarations when they should stay as local()'s. + Changed back. +
Fixed2.3.3

Version2.3.0-2.3.2
ProblemNext/previous message link resource variables are reversed when REVERSE is on. +
SolutionREVERSE check was left out in new v2.3 replace_li_var(). Check added in. +
Fixed2.3.3

Version2.3.0, 2.3.1
ProblemSome resource variables (eg $SUBJECTNA$) expand to blank values when using -single. +
SolutionSINGLE mode sets @MListOrder and %Index2MLoc to support the new way in v2.3 replace_li_var() resolves resource + variables. +
Fixed2.3.2

Version2.3.1 (maybe earlier versions also)
ProblemMHonArc does not handle message range specification with leading zeros in numbers in -rmm mode. +
Solutionint() is used within Perl's range operator to force the stripping of leading zeros. +
Fixed2.3.2

Version2.3.0
ProblemAttachments of the same type get written to the same filename. +
SolutionAnother my/local gotcha. Note, writing attachments has been redone so other filters besided mhexternal.pl + can write data to files. +
Fixed2.3.1

Version2.0.0 - 2.2.0
ProblemA bogus TCONTBEGIN may get printed at the beginning of a thread index page. Most common when TREVERSE + specified. +
Solution@TListOrder now serves as the basis for list iteration when printing a thread index page instead of the list + returned by t_sort_messages(). Note, old method may + cause other minor errors in thread index page + generation. +
Fixed2.3.0

Version2.2.0, 2.3.0 beta
ProblemDuplicate index list entries are generating for threads indexes generated via OTHERINDEXES with TREVERSE active. +
SolutionAll key data structures are now reset when recomputing threads. +
Fixed2.3.0

Version2.2.0, 2.3.0 beta
ProblemThreads are not listed in reverse order when THREAD and TREVERSE are set for an OTHERINDEXES resource file. +
SolutionThread data structures are now reset before each OTHERINDEXES index. If an OTHERINDEXES resource file + specified THREAD, than threads will be recomputed + for the given index defined by resource file. +
Fixed2.3.0

Version2.3.0 beta
ProblemMail addresses in message headers are not getting converted to mailto links. +
SolutionMHonArc still uses typeglobs for passing data around by "reference" (left-over from Perl 4 days). One + of the variables in the message header formatting + routine was changed back to a local() variable to + supporting passing it via a typeglob sub-routines. +
Fixed2.3.0

Version2.3.0 beta
ProblemCannot copy file error occurs during installation when copy documentation to destination location. +
SolutionUpdated install.cfg to reflect file changes to documentation. +
Fixed2.3.0

Version2.3.0 beta
ProblemAuthor index generated via the OTHERINDEXES resource does not list messages in proper order. Other main + indexes generated via OTHERINDEXES may suffer the + same problem. +
SolutionThe write_main_index() did not reset %Index2MLoc properly, affecting resource variable resolution. If + @MListOrder is recomputed, %Index2MLoc will be + redefined. +
Fixed2.3.0

Version2.3.0 beta
ProblemPG(PREV) and PG(TPREV) did not resolve to IDXFNAME and TIDXFNAME, respectively. They resolved to (T)IDXPREFIX + with the page number 1. +
SolutionSimple fix to page number check.
Fixed2.3.0

Version2.2.0, 2.3.0 beta
ProblemMessages grouped under wrong date in date-based index.
SolutionThe problem is related to a descrepency of GMT time and local time, and what time format is being used + in the DAYBEGIN resource. The resource USINGLOCALTIME + has been added to give the choice betweem GMT or + local time for determining day groups. +
Fixed2.3.0

Version2.2.0
ProblemGet "times not implemented at mhamain.pl line 74" error on Win32 systems. +
SolutionCall to times is put in an eval block.
Fixed2.3.0 alpha

Version2.2.0
ProblemWhen a message that gets automatically deleted via MAXSIZE or the message expiration, related message + sometimes do not get update -- causing messages to + have links to non-existent messages. Problem manifiest + when main sort option is not by date. +
SolutionAutomatic message deletion now properly marks related message by specified main sort option. +
Fixed2.3.0 alpha

Version 2.1.2
Solution The cleanup of mhtxtplain.pl's iso-2022-jp code introduced a bug that caused an infinite loop and - to gobble memoery until it ran out. The fix was + to gobble memory until it ran out. The fix was straight-forward.
-

(http://www.oac.uci.edu/indiv/ehood/MHonArc/faq/faq.html) +

<URL:http://www.oac.uci.edu/indiv/ehood/MHonArc/doc/faq/faq.html>

@@ -131,8 +131,8 @@

Location

Author

-

Earl Hood, ehood@medusa.acs.uci.edu

+

Earl Hood, +earlhood@usa.net


@@ -145,7 +145,7 @@

Author


-98/02/18 18:56:42
+98/09/30 23:02:02
MHonArc
diff --git a/faq/archives.html b/doc/faq/archives.html similarity index 77% rename from faq/archives.html rename to doc/faq/archives.html index 45ac3bd..5a4cf5f 100644 --- a/faq/archives.html +++ b/doc/faq/archives.html @@ -18,10 +18,12 @@

Archives

@@ -181,6 +182,16 @@

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

MESS WITH THEM.

+ +
+ +
+

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

+
+ +

Yes. +

+
@@ -192,7 +203,7 @@

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


-98/02/18 18:56:46
+98/09/30 23:02:05
MHonArc
diff --git a/faq/threads.html b/doc/faq/threads.html similarity index 97% rename from faq/threads.html rename to doc/faq/threads.html index b7eeb22..341a61d 100644 --- a/faq/threads.html +++ b/doc/faq/threads.html @@ -36,7 +36,7 @@

How does threading work?

news software, while In-Reply-To is normally utilized be e-mail software.

-

In v2.0, MHonArc will also check message subjects for +

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). @@ -98,7 +98,7 @@

How can I get my MUA to define the References or In-R
-98/02/18 18:56:46
+98/09/30 23:02:05
MHonArc
diff --git a/faq/usage.html b/doc/faq/usage.html similarity index 83% rename from faq/usage.html rename to doc/faq/usage.html index 1cbeff4..5681939 100644 --- a/faq/usage.html +++ b/doc/faq/usage.html @@ -17,6 +17,8 @@

General Usage

Examples

-

None. +

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

Version

@@ -90,13 +100,13 @@

See Also


-98/03/03 18:19:27
+98/09/19 18:27:07
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/daybegin.html b/doc/resources/daybegin.html index dff876d..a1aa75d 100644 --- a/doc/resources/daybegin.html +++ b/doc/resources/daybegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<DAYBEGIN>
markup ...
</DAYBEGIN>
@@ -74,88 +74,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -166,7 +166,7 @@

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 from that day: +followed by a sub-listing of the messages for that day:

@@ -202,19 +202,20 @@ 

See Also

DAYEND, -SORT +SORT, +USELOCALTIME


-98/03/03 18:19:27
+98/10/10 15:29:28
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/dayend.html b/doc/resources/dayend.html index 0fa6667..db34405 100644 --- a/doc/resources/dayend.html +++ b/doc/resources/dayend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<DAYEND>
markup ...
</DAYEND>
@@ -62,7 +62,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -90,13 +91,13 @@

See Also


-98/03/03 18:19:27
+98/09/19 18:27:08
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/dbfile.html b/doc/resources/dbfile.html index 17e1f9b..122a515 100644 --- a/doc/resources/dbfile.html +++ b/doc/resources/dbfile.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<DBFILE>
filename
</DBFILE>
@@ -33,7 +33,7 @@

Syntax

Command-line Option
-

+


-dbfile filename

@@ -69,7 +69,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -95,10 +96,10 @@

See Also


-98/03/03 18:19:28
+98/09/19 18:27:08
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/decodeheads.html b/doc/resources/decodeheads.html index b8a9734..d3dbf01 100644 --- a/doc/resources/decodeheads.html +++ b/doc/resources/decodeheads.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,14 +25,14 @@

Syntax

Element(s)
-

+


<DECODEHEADS>
<NODECODEHEADS>

Command-line Option(s)
-

+


-decodeheads
-nodecodeheads

@@ -49,11 +49,16 @@

Description

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. Hence, the -decode-only charsets will be stored in decoded form. Regular MIME +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. +


@@ -66,7 +71,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -93,10 +99,10 @@

See Also


-98/03/03 18:19:28
+98/09/19 18:27:08
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/definederived.html b/doc/resources/definederived.html index 206c28f..4badcc5 100644 --- a/doc/resources/definederived.html +++ b/doc/resources/definederived.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<DEFINEDERIVED>
filename
file contents ...
@@ -46,7 +46,7 @@

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

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -446,10 +322,10 @@

See Also


-98/03/03 18:19:28
+98/09/19 18:27:08
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/definevar.html b/doc/resources/definevar.html index 4c0ba10..d7bc7fb 100644 --- a/doc/resources/definevar.html +++ b/doc/resources/definevar.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<DEFINEVAR>
variable-name
value ...
@@ -33,8 +33,8 @@

Syntax

Command-line Option
-

--definevars variable-specification-list +


+-definevar variable-specification-list

@@ -48,20 +48,36 @@

Description

DEFINEVAR can be defined on the command-line or in the resource file.

-

On the command-line, the option is called -definevars -(note the 's'). The following argument after -definevars +

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

-

If VALUE contains whitespace, then it must be surrounded -by single or double quotes. Use single quotes if the VALUE -contained double quotes. Use double quotes if the VALUE -contains single quotes. Multiple name/value pairs are separated +

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 @@ -82,8 +98,7 @@

Default Setting


Resource Variables

-

Variables that are applicable to where user-defined -variable is referenced. +

N/A

@@ -116,7 +131,7 @@

Examples

-    % mhonarc -definevars "MAIN-TITLE='mhonarc mailing list'" ...
+    % mhonarc -definevar MAIN-TITLE='mhonarc mailing list' ...
 
@@ -136,10 +151,10 @@

See Also


-98/03/03 18:19:28
+98/09/19 18:27:08
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/defrcfile.html b/doc/resources/defrcfile.html index a73254c..27382bd 100644 --- a/doc/resources/defrcfile.html +++ b/doc/resources/defrcfile.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -45,8 +45,9 @@

Description

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 the default values resource -values of MHonArc. +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.

@@ -97,13 +98,13 @@

See Also


-98/03/03 18:19:29
+98/09/19 18:27:08
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/defrcname.html b/doc/resources/defrcname.html index b76f59e..28b6359 100644 --- a/doc/resources/defrcname.html +++ b/doc/resources/defrcname.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -77,13 +77,13 @@

See Also


-98/03/03 18:19:29
+98/09/19 18:27:08
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/doc.html b/doc/resources/doc.html index 481a2f7..584330a 100644 --- a/doc/resources/doc.html +++ b/doc/resources/doc.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,14 +25,14 @@

Syntax

Element(s)
-

+


<DOC>
<NODOC>

Command-line Option(s)
-

+


-doc
-nodoc

@@ -59,7 +59,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -86,10 +87,10 @@

See Also


-98/03/03 18:19:29
+98/09/19 18:27:08
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/docurl.html b/doc/resources/docurl.html index ceee254..7301544 100644 --- a/doc/resources/docurl.html +++ b/doc/resources/docurl.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<DOCURL>
URL
</DOCURL>
@@ -33,7 +33,7 @@

Syntax

Command-line Option
-

+


-docurl URL

@@ -45,6 +45,8 @@

Syntax

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.

@@ -58,7 +60,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -85,10 +88,10 @@

See Also


-98/03/03 18:19:29
+98/09/19 18:27:08
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/editidx.html b/doc/resources/editidx.html index f5ef093..3e2ab03 100644 --- a/doc/resources/editidx.html +++ b/doc/resources/editidx.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -57,7 +57,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -84,10 +85,10 @@

See Also


-98/03/03 18:19:29
+98/09/19 18:27:08
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/excs.html b/doc/resources/excs.html index 1321c7f..0e2d11f 100644 --- a/doc/resources/excs.html +++ b/doc/resources/excs.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<EXCS>
field-name
field-name
@@ -64,7 +64,7 @@

Description

NOTE

EXCS takes precedence over the FIELDORDER resource. Therefore, -any field listed in EXCS will always be excluded regardless if the field is +any field matched by EXCS will always be excluded regardless if the field is listed in FIELDORDER.

@@ -100,7 +100,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -111,7 +112,7 @@

Examples

 <Excs Override>
-.*
+.
 </Excs>
 
@@ -141,10 +142,10 @@

See Also


-98/03/03 18:19:30
+98/09/19 18:27:08
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/expireage.html b/doc/resources/expireage.html index 630bd73..11b9a64 100644 --- a/doc/resources/expireage.html +++ b/doc/resources/expireage.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<EXPIREAGE>
seconds
</EXPIREAGE>
@@ -33,7 +33,7 @@

Syntax

Command-line Option
-

+


-expireage seconds

@@ -45,7 +45,7 @@

Syntax

Description

EXPIREAGE specifies the time in seconds from the current -time if a message has expired. I.e. If the difference +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 @@ -94,7 +94,7 @@

Description


Default Setting

-

Nil. +

0

@@ -137,13 +137,13 @@

See Also


-98/03/03 18:19:30
+98/09/19 18:27:08
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/expiredate.html b/doc/resources/expiredate.html index 55853ba..d8950bf 100644 --- a/doc/resources/expiredate.html +++ b/doc/resources/expiredate.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<EXPIREDATE>
date
</EXPIREDATE>
@@ -33,7 +33,7 @@

Syntax

Command-line Option
-

+


-expiredate date

@@ -134,13 +134,13 @@

See Also


-98/03/03 18:19:30
+98/09/19 18:27:08
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/fieldorder.html b/doc/resources/fieldorder.html index 42a049d..26caf07 100644 --- a/doc/resources/fieldorder.html +++ b/doc/resources/fieldorder.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<FIELDORDER>
1st-field-name
2nd-field-name
@@ -65,7 +65,7 @@

Description

NOTE

EXCS takes precedence over the FIELDORDER resource. Therefore, -any field listed in EXCS will always be excluded regardless if the field is +any field matched by EXCS will always be excluded regardless if the field is listed in FIELDORDER.

@@ -90,7 +90,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -125,10 +126,10 @@

See Also


-98/03/03 18:19:31
+98/09/19 18:27:09
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/fieldsbeg.html b/doc/resources/fieldsbeg.html index 231998f..b304b3d 100644 --- a/doc/resources/fieldsbeg.html +++ b/doc/resources/fieldsbeg.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<FIELDSBEG>
markup ...
</FIELDSBEG>
@@ -52,7 +52,7 @@

Default Setting

 <FieldsBeg>
-<UL>
+<UL>
 </FieldsBeg>
 
@@ -60,7 +60,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -127,10 +128,10 @@

See Also


-98/03/03 18:19:31
+98/09/19 18:27:09
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/fieldsend.html b/doc/resources/fieldsend.html index 3bf420d..8cf475e 100644 --- a/doc/resources/fieldsend.html +++ b/doc/resources/fieldsend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<FIELDSEND>
markup ...
</FIELDSEND>
@@ -60,7 +60,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -97,10 +98,10 @@

See Also


-98/03/03 18:19:31
+98/09/19 18:27:09
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/fieldstyles.html b/doc/resources/fieldstyles.html index 0b4b0d6..2577e41 100644 --- a/doc/resources/fieldstyles.html +++ b/doc/resources/fieldstyles.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<FIELDSTYLES>
field_name:html_element
field_name:html_element
@@ -54,7 +54,7 @@

Description

field_name. If html_element is empty, then the field text is not wrapped in any element.

-

MHonArc defines +

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.

@@ -78,7 +78,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -121,10 +122,10 @@

See Also


-98/03/03 18:19:31
+98/09/19 18:27:09
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/fldbeg.html b/doc/resources/fldbeg.html index 20b6f9d..a4a8e73 100644 --- a/doc/resources/fldbeg.html +++ b/doc/resources/fldbeg.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<FLDBEG>
markup ...
</FLDBEG>
@@ -56,7 +56,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -93,10 +94,10 @@

See Also


-98/03/03 18:19:32
+98/09/19 18:27:09
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/fldend.html b/doc/resources/fldend.html index d6da366..1047e63 100644 --- a/doc/resources/fldend.html +++ b/doc/resources/fldend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<FLDEND>
markup ...
</FLDEND>
@@ -56,7 +56,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -93,10 +94,10 @@

See Also


-98/03/03 18:19:32
+98/09/19 18:27:09
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/folrefs.html b/doc/resources/folrefs.html index 6ecef0f..26ca57b 100644 --- a/doc/resources/folrefs.html +++ b/doc/resources/folrefs.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,14 +25,14 @@

Syntax

Element(s)
-

+


<FOLREFS>
<NOFOLREFS>

Command-line Option(s)
-

+


-folrefs
-nofolrefs

@@ -49,15 +49,6 @@

Description

body.

-

The format of the follow-ups and references links cannot be -customized. If you desire to have all message links in a custom -format, you may want to shut this resource off and rely on the -TPREVLINK and -TNEXTLINK resources, or the -use of the $TSLICE$ resource variable in a -message page resource. -

-

Default Setting

@@ -69,7 +60,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -90,20 +82,24 @@

Version

See Also

-TNEXTLINK, -TNEXTLINKIA, -TPREVLINK, -TPREVLINKIA, -TSLICE, +FOLUPBEGIN, +FOLUPEND, +FOLUPLITXT, +REFSBEGIN, +REFSEND, +REFSLITXT +

+

+Page Layout


-98/03/03 18:19:32
+98/09/19 18:27:09
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/folupbegin.html b/doc/resources/folupbegin.html index e5912bd..d23f7b4 100644 --- a/doc/resources/folupbegin.html +++ b/doc/resources/folupbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -117,8 +117,8 @@

See Also

MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/folupend.html b/doc/resources/folupend.html index 8960764..ea5d980 100644 --- a/doc/resources/folupend.html +++ b/doc/resources/folupend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,7 +23,7 @@

Syntax

Element
-

+


<FOLUPEND>
markup...
</FOLUPEND>
@@ -95,13 +95,13 @@

See Also


-98/03/03 18:19:33
+98/09/19 18:27:09
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/foluplitxt.html b/doc/resources/foluplitxt.html index 9fec758..3a9cfba 100644 --- a/doc/resources/foluplitxt.html +++ b/doc/resources/foluplitxt.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,7 +23,7 @@

Syntax

Element
-

+


<FOLUPLITXT>
markup...
</FOLUPLITXT>
@@ -72,88 +72,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -185,13 +185,13 @@

See Also


-98/03/03 18:19:33
+98/09/19 18:27:09
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/footer.html b/doc/resources/footer.html index 451aff7..7297dab 100644 --- a/doc/resources/footer.html +++ b/doc/resources/footer.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -81,7 +81,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -110,10 +111,10 @@

See Also


-98/03/03 18:19:33
+98/09/19 18:27:09
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/force.html b/doc/resources/force.html index e099efd..4bc4ad5 100644 --- a/doc/resources/force.html +++ b/doc/resources/force.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -40,28 +40,48 @@

Syntax


Description

-

FORCE causes MHonArc to override the lock on +

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 +

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

MHonArc will still try to perform a normal lock before forcing the issue.

@@ -98,19 +118,20 @@

See Also

LOCKDELAY, +LOCKFILE, LOCKTRIES


-98/03/03 18:19:33
+98/09/19 18:27:09
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/fromfields.html b/doc/resources/fromfields.html index 5b4003f..8abf623 100644 --- a/doc/resources/fromfields.html +++ b/doc/resources/fromfields.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -26,7 +26,7 @@

Syntax

Element
-

+


<FROMFIELDS>
field1:field2:...:Syntax

Command-line Option
-

+


-fromfields field1:field2:...:fieldN @@ -91,13 +91,13 @@

See Also


-98/03/03 18:19:33
+98/09/19 18:27:09
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/genidx.html b/doc/resources/genidx.html index b0ff91c..43fed8b 100644 --- a/doc/resources/genidx.html +++ b/doc/resources/genidx.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -40,14 +40,17 @@

Syntax


Description

-

GENIDX instructs MHonArc to generate an index +

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

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.

@@ -88,13 +91,13 @@

See Also


-98/03/03 18:19:34
+98/09/19 18:27:09
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/gmtdatefmt.html b/doc/resources/gmtdatefmt.html index 8571ba5..f780fbd 100644 --- a/doc/resources/gmtdatefmt.html +++ b/doc/resources/gmtdatefmt.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<GMTDATEFMT>
date-format
</GMTDATEFMT>
@@ -33,7 +33,7 @@

Syntax

Command-line Option
-

+


-gmtdatefmt date-format

@@ -56,7 +56,7 @@

Description

The following lists the possible conversion specifications:

- +
@@ -158,7 +158,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -202,7 +203,7 @@

See Also

98/03/03 18:19:34
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/gzipexe.html b/doc/resources/gzipexe.html index d45d071..85ee871 100644 --- a/doc/resources/gzipexe.html +++ b/doc/resources/gzipexe.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<GZIPEXE>
pathname
</GZIPEXE>
@@ -32,7 +32,7 @@

Syntax

Command-line Option
-

+


-gzipexe pathname

@@ -42,7 +42,7 @@

Syntax

Description

-

GZIPEXE defines the pathname of the Gzip executable. +

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 @@ -96,13 +96,13 @@

See Also


-98/03/03 18:19:34
+98/09/19 18:27:10
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/gzipfiles.html b/doc/resources/gzipfiles.html index bc40cb1..f0f2887 100644 --- a/doc/resources/gzipfiles.html +++ b/doc/resources/gzipfiles.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,14 +24,14 @@

Syntax

Element(s)
-

+


<GZIPFILES>
<NOGZIPFILES>

Command-line Option(s)
-

+


-gzipfiles
-nogzipfiles

@@ -44,7 +44,7 @@

Description

GZIPFILES tells MHonArc if it should gzip files it creates. This resource is useful if you have an archive with large messages, -or you need to conserve disk space. +and/or you need to conserve disk space.

Spec
@@ -57,6 +57,18 @@

Description

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

@@ -92,13 +104,13 @@

See Also


-98/03/03 18:19:34
+98/09/19 18:27:10
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/gziplinks.html b/doc/resources/gziplinks.html index 4565b99..ad29001 100644 --- a/doc/resources/gziplinks.html +++ b/doc/resources/gziplinks.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,14 +24,14 @@

Syntax

Element(s)
-

+


<GZIPLINKS>
<NOGZIPLINKS>

Command-line Option(s)
-

+


-gziplinks
-nogziplinks

@@ -87,13 +87,13 @@

See Also


-98/03/03 18:19:35
+98/09/19 18:27:10
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/headbodysep.html b/doc/resources/headbodysep.html index 7654893..2c7dd62 100644 --- a/doc/resources/headbodysep.html +++ b/doc/resources/headbodysep.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<HEADBODYSEP>
markup
</HEADBODYSEP>
@@ -74,52 +74,52 @@

Resource Variables

VariableValue -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -149,10 +149,10 @@

See Also


-98/03/03 18:19:35
+98/09/19 18:27:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/header.html b/doc/resources/header.html index 377746c..6e61e84 100644 --- a/doc/resources/header.html +++ b/doc/resources/header.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<HEADER>
filename
</HEADER>
@@ -33,7 +33,7 @@

Syntax

Command-line Option
-

+


-header filename

@@ -82,7 +82,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -111,10 +112,10 @@

See Also


-98/03/03 18:19:35
+98/09/19 18:27:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/htmlext.html b/doc/resources/htmlext.html index 24a9525..17b1183 100644 --- a/doc/resources/htmlext.html +++ b/doc/resources/htmlext.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -43,7 +43,7 @@

Syntax

Description

HTMLEXT defines the extension for all HTML files generated -by MHonArc. The value of the resource shoule NOT +by MHonArc. The value of the resource should NOT include the ".".

@@ -95,13 +95,13 @@

See Also


-98/03/03 18:19:35
+98/09/19 18:27:10
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/icons.html b/doc/resources/icons.html index c703fdc..1e06b69 100644 --- a/doc/resources/icons.html +++ b/doc/resources/icons.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -107,7 +107,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -152,10 +153,10 @@

See Also


-98/03/03 18:19:36
+98/09/19 18:27:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/idxfname.html b/doc/resources/idxfname.html index 38bd68e..065582c 100644 --- a/doc/resources/idxfname.html +++ b/doc/resources/idxfname.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -61,7 +61,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -89,10 +90,10 @@

See Also


-98/03/03 18:19:36
+98/09/19 18:27:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/idxlabel.html b/doc/resources/idxlabel.html index e128913..8c8883d 100644 --- a/doc/resources/idxlabel.html +++ b/doc/resources/idxlabel.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -96,13 +96,13 @@

See Also


-98/03/03 18:19:36
+98/09/19 18:27:10
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/idxpgbegin.html b/doc/resources/idxpgbegin.html index 6b61040..ba6039f 100644 --- a/doc/resources/idxpgbegin.html +++ b/doc/resources/idxpgbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -47,7 +47,7 @@

Description

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 on the +resource is used, or have other needs that require control over the beginning markup, you can set the IDXPGBEGIN resource to what you desire.

@@ -78,111 +78,95 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NEXTPG$ -Filename of next page of the main index. - - -$NEXTPGLINK$ -Markup linking to the next page of the main index. - - -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PAGENUM$ +$PAGENUM$ Current index page number. -$PREVPG$ -Filename of the previous page of the main index. +$PG$ +Filename of an index page. -$PREVPGLINK$ -Markup linking to the previous page of the main index. +$PGLINK$ +Markup linking to a main index page. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -229,10 +213,10 @@

See Also


-98/03/03 18:19:36
+98/09/19 18:27:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/idxpgend.html b/doc/resources/idxpgend.html index 587680f..2dfcc0f 100644 --- a/doc/resources/idxpgend.html +++ b/doc/resources/idxpgend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -67,111 +67,95 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NEXTPG$ -Filename of next page of the main index. - - -$NEXTPGLINK$ -Markup linking to the next page of the main index. - - -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PAGENUM$ +$PAGENUM$ Current index page number. -$PREVPG$ -Filename of the previous page of the main index. +$PG$ +Filename of an index page. -$PREVPGLINK$ -Markup linking to the previous page of the main index. +$PGLINK$ +Markup linking to a main index page. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -204,10 +188,10 @@

See Also


-98/03/03 18:19:37
+98/09/19 18:27:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/idxprefix.html b/doc/resources/idxprefix.html index 00907f5..5009c4a 100644 --- a/doc/resources/idxprefix.html +++ b/doc/resources/idxprefix.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -74,7 +74,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -103,10 +104,10 @@

See Also


-98/03/03 18:19:37
+98/09/19 18:27:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/idxsize.html b/doc/resources/idxsize.html index f86a10a..94bf7c2 100644 --- a/doc/resources/idxsize.html +++ b/doc/resources/idxsize.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -46,7 +46,10 @@

Description

IDXSIZE defines the maximum number of messages listed on an index page. Please do not confuse with -MAXSIZE. +MAXSIZE. +

+ +

Setting IDXSIZE to 0 produces an unlimited page size.

@@ -60,7 +63,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -88,10 +92,10 @@

See Also


-98/03/03 18:19:37
+98/09/19 18:27:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/include.html b/doc/resources/include.html index 1c882da..dd69efa 100644 --- a/doc/resources/include.html +++ b/doc/resources/include.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -64,7 +64,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -100,10 +101,10 @@

See Also


-98/03/03 18:19:37
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/labelbeg.html b/doc/resources/labelbeg.html index be5ec9b..487b858 100644 --- a/doc/resources/labelbeg.html +++ b/doc/resources/labelbeg.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -58,7 +58,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -95,10 +96,10 @@

See Also


-98/03/03 18:19:37
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/labelend.html b/doc/resources/labelend.html index f2f905e..dedc196 100644 --- a/doc/resources/labelend.html +++ b/doc/resources/labelend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -58,7 +58,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -95,10 +96,10 @@

See Also


-98/03/03 18:19:38
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/labelstyles.html b/doc/resources/labelstyles.html index 36d988f..6606411 100644 --- a/doc/resources/labelstyles.html +++ b/doc/resources/labelstyles.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -54,7 +54,7 @@

Description

label_name. If html_element is empty, then the label is not wrapped in any element.

-

MHonArc defines +

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.

@@ -78,7 +78,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -122,10 +123,10 @@

See Also


-98/03/03 18:19:38
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/listbegin.html b/doc/resources/listbegin.html index 53ef867..2f27c23 100644 --- a/doc/resources/listbegin.html +++ b/doc/resources/listbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -75,7 +75,7 @@

Default Setting

<UL> <LI><A HREF="$TIDXFNAME$">Thread Index</A></LI> </UL> -$PREVPGLINK$$NEXTPGLINK$ +$PGLINK(PREV)$$PGLINK(NEXT)$ <HR> <UL> </ListBegin> @@ -91,111 +91,95 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NEXTPG$ -Filename of next page of the main index. - - -$NEXTPGLINK$ -Markup linking to the next page of the main index. - - -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PAGENUM$ +$PAGENUM$ Current index page number. -$PREVPG$ -Filename of the previous page of the main index. +$PG$ +Filename of an index page. -$PREVPGLINK$ -Markup linking to the previous page of the main index. +$PGLINK$ +Markup linking to a main index page. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -219,10 +203,10 @@

Examples

<tr align="center"> <th colspan=4>Page $PAGENUM$ of $NUMOFPAGES$ <tr> -<td align="left">$PREVPGLINK$ -<td align="right">[<a href="$FIRSTPG$">First Page</a>] -<td align="left">[<a href="$LASTPG$">Last Page</a>] -<td align="right">$NEXTPGLINK +<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> @@ -250,10 +234,10 @@

See Also


-98/03/03 18:19:38
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/listend.html b/doc/resources/listend.html index 649d36e..e165e75 100644 --- a/doc/resources/listend.html +++ b/doc/resources/listend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -70,111 +70,95 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NEXTPG$ -Filename of next page of the main index. - - -$NEXTPGLINK$ -Markup linking to the next page of the main index. - - -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PAGENUM$ +$PAGENUM$ Current index page number. -$PREVPG$ -Filename of the previous page of the main index. +$PG$ +Filename of an index page. -$PREVPGLINK$ -Markup linking to the previous page of the main index. +$PGLINK$ +Markup linking to a main index page. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -206,10 +190,10 @@

See Also


-98/03/03 18:19:38
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/litemplate.html b/doc/resources/litemplate.html index c8024c1..2dfc2a5 100644 --- a/doc/resources/litemplate.html +++ b/doc/resources/litemplate.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -72,88 +72,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -193,10 +193,10 @@

See Also


-98/03/03 18:19:39
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/localdatefmt.html b/doc/resources/localdatefmt.html index 48d8753..f7380bc 100644 --- a/doc/resources/localdatefmt.html +++ b/doc/resources/localdatefmt.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -158,7 +158,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -199,10 +200,10 @@

See Also


-98/03/03 18:19:39
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/lock.html b/doc/resources/lock.html new file mode 100644 index 0000000..1697411 --- /dev/null +++ b/doc/resources/lock.html @@ -0,0 +1,110 @@ + + + +MHonArc Resources: LOCK + + + +
+MHonArc Resource List +
+ +
+

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, +LOCKTRIES +

+ + +
+
+98/09/19 18:27:11
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/lockdelay.html b/doc/resources/lockdelay.html index 0b24155..a529ee0 100644 --- a/doc/resources/lockdelay.html +++ b/doc/resources/lockdelay.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -83,19 +83,20 @@

See Also

FORCE, +LOCK, LOCKTRIES


-98/03/03 18:19:39
+98/09/19 18:27:11
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/lockfile.html b/doc/resources/lockfile.html new file mode 100644 index 0000000..f9a962f --- /dev/null +++ b/doc/resources/lockfile.html @@ -0,0 +1,90 @@ + + + +MHonArc Resources: LOCKFILE + + + +
+MHonArc Resource List +
+ +
+

LOCKFILE

+ + +

Syntax

+ +
+ +
Envariable
+

+M2H_LOCKFILE= +

+
+ +
Element
+


+<LOCKFILE>
+</LOCKFILE>
+

+
+ +
Command-line Option
+

+-lockfile +

+
+ +
+ + +

Description

+ +

+

+ + +

Default Setting

+ +

+

+ + +

Resource Variables

+ +

N/A +

+ + +

Examples

+ +

None. +

+ + +

Version

+ +

+

+ + +

See Also

+ +

+

+ + +
+
+98/09/19 18:27:11
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/locktries.html b/doc/resources/locktries.html index b84e2e4..877aab8 100644 --- a/doc/resources/locktries.html +++ b/doc/resources/locktries.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -82,19 +82,20 @@

See Also

FORCE, +LOCK, LOCKDELAY


-98/03/03 18:19:39
+98/09/19 18:27:11
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/mailto.html b/doc/resources/mailto.html index ff45d6c..971655b 100644 --- a/doc/resources/mailto.html +++ b/doc/resources/mailto.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -45,7 +45,7 @@

Syntax


Description

-

If the MAILTO resource is on, e-mail addresses in message +

If the MAILTO resource is on, mail addresses in message headers will be converted into mailto URL links as defined by the MAILTOURL @@ -63,7 +63,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -90,10 +91,10 @@

See Also


-98/03/03 18:19:40
+98/09/19 18:27:11
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/mailtourl.html b/doc/resources/mailtourl.html index 249d96b..9c83cc9 100644 --- a/doc/resources/mailtourl.html +++ b/doc/resources/mailtourl.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -44,8 +44,8 @@

Syntax


Description

-

The MAILTOURL defines the URL template for hyperlinked e-mail -addressed in message headers when the +

The MAILTOURL defines the URL template for hyperlinking mail +addresses in message headers when the MAILTO resource is active.

@@ -77,39 +77,8 @@

Default Setting


Resource Variables

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariableValue
$FROM$The complete text in the From: field.
$FROMADDR$Address portion of From: field.
$MSGID$The message-id of the message.
$SUBJECT$The subject text of the message.
$SUBJECTNA$The subject text of the message.
$TO$The email address being converted into a hyperlink. -It is NOT the value of the To: field. The variable -name is misleading.
+

N/A +


@@ -143,10 +112,10 @@

See Also


-98/03/03 18:19:40
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/main.html b/doc/resources/main.html index 41e1c6d..131cca4 100644 --- a/doc/resources/main.html +++ b/doc/resources/main.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -45,7 +45,7 @@

Syntax


Description

-

If MAIN is on, MHonArc will create the main index +

If MAIN is on, MHonArc will create the main index page(s) for the archive. If off, no main index is created.

@@ -60,7 +60,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -87,10 +88,10 @@

See Also


-98/03/03 18:19:40
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/maxsize.html b/doc/resources/maxsize.html index 962e616..ef95eca 100644 --- a/doc/resources/maxsize.html +++ b/doc/resources/maxsize.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -71,7 +71,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -98,10 +99,10 @@

See Also


-98/03/03 18:19:40
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/mhpattern.html b/doc/resources/mhpattern.html index 0bb5fed..a26dee8 100644 --- a/doc/resources/mhpattern.html +++ b/doc/resources/mhpattern.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -46,7 +46,7 @@

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 +MHPATTERN allows you to tell MHonArc which message files to read when a specified mail folder is a directory.

@@ -62,13 +62,14 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


Examples

-

The following example shows how you can tell MHonArc to +

The following example shows how you can tell MHonArc to process every non-dotfile in a directory:

@@ -101,10 +102,10 @@

See Also


-98/03/03 18:19:40
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/mimeargs.html b/doc/resources/mimeargs.html index 42518d4..afda3e4 100644 --- a/doc/resources/mimeargs.html +++ b/doc/resources/mimeargs.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -97,7 +97,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -131,10 +132,10 @@

See Also


-98/03/03 18:19:41
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/mimefilters.html b/doc/resources/mimefilters.html index 1cd64d0..ef1c4b7 100644 --- a/doc/resources/mimefilters.html +++ b/doc/resources/mimefilters.html @@ -312,6 +312,7 @@

Default Setting

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/partial; m2h_text_plain::filter; mhtxtplain.pl text/*; m2h_text_plain::filter; mhtxtplain.pl text/enriched; m2h_text_enriched::filter; mhtxtenrich.pl @@ -323,6 +324,7 @@

Default Setting

text/x-html; m2h_text_html::filter; mhtxthtml.pl text/x-setext; m2h_text_setext::filter; mhtxtsetext.pl video/*; m2h_external::filter; mhexternal.pl +x-sun-attachment; m2h_text_plain::filter; mhtxtplain.pl </MIMEFilters> @@ -410,6 +412,15 @@

m2h_external::filter

option).

+ +usenameext +

Use (file)name attribute for determining the extension +of derived file. Use this option with caution +since it can lead to +security problems (however, see the subdir +option). +

+

All arguments should be separated by at least one space.

@@ -506,10 +517,18 @@

m2h_external::filter

v5d Vis5D dataset +application/vnd.framemaker +fm +FrameMaker document + application/vnd.hp-hpgl hpg HPGL file +application/vnd.mif +mif +Frame MIF document + application/vnd.ms-excel xls MS-Excel spreadsheet @@ -527,7 +546,7 @@

m2h_external::filter

WinHelp document application/wordperfect5.1 -hlp +wp WordPerfect 5.1 document application/x-asap @@ -766,10 +785,18 @@

m2h_external::filter

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 @@ -1179,10 +1206,29 @@

m2h_text_html::filter

This filter is designed to process text/html or text/x-html data. -The filter modifies the HTML so it can be -included validly into the message page. Any head data will be -stripped out, but the title will be extracted and prepended -to the body data. +The filter modifies HTML documents so they can be +included into the message pages without causing invalid markup +to occur. The following modification are done to HTML documents when +processed by MHonArc: +

+
    +
  • The HEAD element is removed. Since some elements within the HEAD +element may be relevant to the rest of the document, the following is +done when removing the HEAD element:

    +
      +
    • The title will be extracted and prepended + to the body data. +
    • Any BASE URL will be propogated to any relative URLs in the + document. +
    +

    +
  • +
  • cid: URLs are resolved, if possible. Therefore, +if image data related to the HTML document is included with the message, +the URLs will be modified to the filenames of the images that were +decoded.

    +
  • +


@@ -1268,7 +1314,7 @@

m2h_text_plain::filter

target=name

Set the TARGET attribute of an anchor links generated from -hyperlinking URLs. Default value is "_top". +hyperlinking URLs.

@@ -1294,14 +1340,92 @@

m2h_text_tsv::filter


Resource Variables

-

N/A

+

N/A +


Examples

-

None. +

The following code is an example filter for HTML message data +(note, this example has a subset of the functionality of the HTML +filter used by MHonArc):

+
+##---------------------------------------------------------------------------##
+##    Copyright (C) 1995-1998	Earl Hood, earlhood@usa.net
+##---------------------------------------------------------------------------##
+
+package m2h_text_html;
+
+$Url	= '(\w+://|\w+:)';	# Beginning of URL match expression
+
+##---------------------------------------------------------------------------
+##	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.
+##
+sub filter {
+    local($header, *fields, *data, $isdecode, $args) = @_;
+    local($base, $title, $tmp);
+    $base 	= '';
+    $title	= '';
+    $tmp	= '';
+
+    ## Get/remove title
+    if ($data =~ s%<title\s*>([^<]*)</title\s*>%%i) {
+        $title = "<ADDRESS>Title: <STRONG>$1</STRONG></ADDRESS>\n";
+    }
+    ## Get/remove BASE url
+    if ($data =~ s%(<base\s[^>]*>)%%i) {
+        $tmp = $1;
+        if ($tmp =~ m|href\s*=\s*['"]([^'"]+)['"]|i) {
+	    $base = $1;
+	} elsif ($tmp =~ m|href\s*=\s*([^\s>]+)|i) {
+	    $base = $1;
+	}
+    } elsif ((defined($tmp = $fields{'content-base'}) ||
+	      defined($tmp = $fields{'content-location'})) &&
+	     ($tmp =~ m%/%)) {
+	($base = $tmp) =~ s/['"\s]//g;
+    }
+    $base =~ s%(.*/).*%$1%;
+
+    ## Strip out certain elements/tags
+    $data =~ s%<!doctype\s[^>]*>%%i;
+    $data =~ s%</?html[^>]*>%%ig;
+    $data =~ s%</?body[^>]*>%%ig;
+    $data =~ s%<head\s*>[\s\S]*</head\s*>%%i;
+
+    ## Modify relative urls to absolute using BASE
+    if ($base =~ /\S/) {
+        $data =~ s%(href\s*=\s*['"])([^'"]+)(['"])%
+		   &addbase($base,$1,$2,$3)%gei;
+        $data =~ s%(src\s*=\s*['"])([^'"]+)(['"])%
+                   &addbase($base,$1,$2,$3)%gei;
+    }
+
+    ($title . $data);
+}
+##---------------------------------------------------------------------------
+sub addbase {
+    local($b, $pre, $u, $suf) = @_;
+    local($ret);
+    $u =~ s/^\s+//;
+    if ($u =~ m%^$Url%o) {	# Non-relative URL, do nothing
+        $ret = $pre . $u . $suf;
+    } else {			# Relative URL
+	if ($u =~ m%^/%) {		# Check for "/..."
+	    $b =~ s%^(${Url}[^/]*)/.*%$1%o;	# Get hostname:port number
+	}
+        $ret = $pre . $b . $u . $suf;
+    }
+    $ret;
+}
+##---------------------------------------------------------------------------
+
+1;
+

@@ -1323,10 +1447,10 @@

See Also


-98/03/03 18:19:41
+98/10/24 16:57:31
MHonArc
-Copyright © 1997-1998 Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998 Earl Hood, earlhood@usa.net
diff --git a/doc/resources/modtime.html b/doc/resources/modtime.html index 4ea14e0..bb251ce 100644 --- a/doc/resources/modtime.html +++ b/doc/resources/modtime.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element(s)
-

+


<MODTIME>
<NOMODTIME>
@@ -33,7 +33,7 @@

Syntax

Command-line Option(s)
-

+


-modtime
-nomodtime
@@ -46,13 +46,21 @@

Syntax


Description

-

If MODTIME is active, force converted message files to have the same -file modification times as the dates of the messages. This features is -useful for archives that are indexed by a search engine. The search -index can be incrementally updated based upon the modification times -of the message files. +

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 have not be +applicable under some operating systems. +

+
+

Default Setting

@@ -64,7 +72,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -90,10 +99,10 @@

See Also


-98/03/03 18:19:41
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/months.html b/doc/resources/months.html index 4715150..f4ecc15 100644 --- a/doc/resources/months.html +++ b/doc/resources/months.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -71,7 +71,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -102,10 +103,10 @@

See Also


-98/03/03 18:19:41
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/monthsabr.html b/doc/resources/monthsabr.html index 2bb23b8..6a2335d 100644 --- a/doc/resources/monthsabr.html +++ b/doc/resources/monthsabr.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -71,7 +71,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -102,10 +103,10 @@

See Also


-98/03/03 18:19:42
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msgbodyend.html b/doc/resources/msgbodyend.html index 9d296f4..5de8841 100644 --- a/doc/resources/msgbodyend.html +++ b/doc/resources/msgbodyend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -60,52 +60,52 @@

Resource Variables

VariableValue -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -129,17 +129,20 @@

See Also

HEADBODYSEP, SUBJECTHEADER

+

+Page Layout +


-98/03/03 18:19:42
+98/09/19 18:27:12
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msgfoot.html b/doc/resources/msgfoot.html index e68d2c3..8ce72ff 100644 --- a/doc/resources/msgfoot.html +++ b/doc/resources/msgfoot.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -65,288 +65,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -381,7 +257,7 @@

See Also

98/03/03 18:19:42
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msggmtdatefmt.html b/doc/resources/msggmtdatefmt.html index e144c91..a400e48 100644 --- a/doc/resources/msggmtdatefmt.html +++ b/doc/resources/msggmtdatefmt.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -158,7 +158,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -186,14 +187,15 @@

See Also

WEEKDAYS, WEEKDAYSABR

+


-98/03/03 18:19:42
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msghead.html b/doc/resources/msghead.html index 70d7be9..abf95de 100644 --- a/doc/resources/msghead.html +++ b/doc/resources/msghead.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -65,288 +65,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. - - -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -374,14 +250,17 @@

See Also

MSGPGBEGIN, MSGPGEND

+

+Page Layout +


-98/03/03 18:19:43
+98/09/19 18:27:12
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msgidlink.html b/doc/resources/msgidlink.html index 5648903..0886c76 100644 --- a/doc/resources/msgidlink.html +++ b/doc/resources/msgidlink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -64,288 +64,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -378,13 +254,13 @@

See Also


-98/03/03 18:19:43
+98/09/19 18:27:13
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msglocaldatefmt.html b/doc/resources/msglocaldatefmt.html index 536ef89..032b3b1 100644 --- a/doc/resources/msglocaldatefmt.html +++ b/doc/resources/msglocaldatefmt.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -158,7 +158,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -191,10 +192,10 @@

See Also


-98/03/03 18:19:43
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msgpgbegin.html b/doc/resources/msgpgbegin.html index 36b53f3..db3c254 100644 --- a/doc/resources/msgpgbegin.html +++ b/doc/resources/msgpgbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -76,288 +76,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. - - -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -385,14 +261,17 @@

See Also

MSGHEAD, MSGPGEND

+

+Page Layout +


-98/03/03 18:19:43
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msgpgend.html b/doc/resources/msgpgend.html index 59a628a..de53794 100644 --- a/doc/resources/msgpgend.html +++ b/doc/resources/msgpgend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. - - -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -378,14 +254,17 @@

See Also

MSGHEAD, MSGPGBEGIN

+

+Page Layout +


-98/03/03 18:19:44
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msgpgs.html b/doc/resources/msgpgs.html new file mode 100644 index 0000000..ca02d5f --- /dev/null +++ b/doc/resources/msgpgs.html @@ -0,0 +1,107 @@ + + + +MHonArc Resources: MSGPGS + + + +
+MHonArc Resource List
+
+ +
+

MSGPGS

+ + +

Syntax

+ +
+ +
Envariable
+

+M2H_MSGPGS=[ 0 | 1 ] +

+
+ +
Element
+


+<MSGPGS>
+<NOMSGPGS>
+

+
+ +
Command-line Option
+


+-msgpgs +-nomsgpgs +

+
+ +
+ + +

Description

+ +

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. Note, relevant resources that link +to message pages would have to be redefined to use URLs that 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 the index pages generated. +

+ + +

Default Setting

+ +

On. +

+ + +

Resource Variables

+ +

N/A +

+ + +

Examples

+ +

Not yet. +

+ + +

Version

+ +

2.3.0 +

+ + +

See Also

+ +

+

+ + +
+
+98/09/30 22:33:43
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/msgprefix.html b/doc/resources/msgprefix.html index 5b8927b..2258e90 100644 --- a/doc/resources/msgprefix.html +++ b/doc/resources/msgprefix.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -89,13 +89,13 @@

See Also


-98/03/03 18:19:44
+98/09/19 18:27:13
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/msgsep.html b/doc/resources/msgsep.html index 5caaa02..b8d312d 100644 --- a/doc/resources/msgsep.html +++ b/doc/resources/msgsep.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -63,7 +63,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -108,10 +109,10 @@

See Also


-98/03/03 18:19:44
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/multipg.html b/doc/resources/multipg.html index 62308de..5bfaf02 100644 --- a/doc/resources/multipg.html +++ b/doc/resources/multipg.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -47,10 +47,10 @@

Syntax


Description

-

When MULTIPG is set, MHonArc will break up the indexes +

When MULTIPG is set, MHonArc will break up the indexes into muliple pages with each page containing IDXSIZE messages. If -IDXSIZE is not defined to a finite value, then MULTIPG is +IDXSIZE is not set to a finite value, then MULTIPG is shut off.

@@ -65,7 +65,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -86,7 +87,7 @@

Version

See Also

-IDXSIZE +IDXSIZE, NEXTPGLINK, NEXTPGLINKIA, PREVPGLINK, @@ -100,10 +101,10 @@

See Also


-98/03/03 18:19:44
+98/10/10 15:34:43
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/news.html b/doc/resources/news.html index db10aef..5608efa 100644 --- a/doc/resources/news.html +++ b/doc/resources/news.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element(s)
-

+


<NEWS>
<NONEWS>
@@ -34,7 +34,7 @@

Syntax

Command-line Option(s)
-

+


-news
-nonews
@@ -47,7 +47,7 @@

Syntax


Description

-

When NEWS is on, newsgroups listed in the Newsgroup field +

When NEWS is on, newsgroups listed in the Newsgroup field of a message header will be converted to news URL hyperlinks.

@@ -63,7 +63,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -89,10 +90,10 @@

See Also


-98/03/03 18:19:45
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/nextbutton.html b/doc/resources/nextbutton.html index bb607a8..ec6d211 100644 --- a/doc/resources/nextbutton.html +++ b/doc/resources/nextbutton.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<NEXTBUTTON>
markup ...
</NEXTBUTTON>
@@ -42,11 +42,11 @@

Syntax


Description

-

NEXTBUTTON defines the value for the $NEXTBUTTON$ +

NEXTBUTTON defines the value for the $BUTTON(NEXT)$ resource variable when there is a next message to the current message according to the message list order of the main index. See the NEXTBUTTONIA for defining the -value of $NEXTBUTTON$ when there is no next message. +value of $BUTTON(NEXT)$ when there is no next message.

@@ -55,7 +55,7 @@

Default Setting

 <NextButton chop>
-[<A HREF="$NEXTMSG$">Date Next</A>]
+[<A HREF="$MSG(NEXT)$">Date Next</A>]
 </NextButton>
 
@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -365,7 +241,7 @@

Examples

 <NextButton chop>
-<A HREF="$NEXTMSG$"><IMG SRC="next.gif" ALT="[Date Next]"></A>
+<A HREF="$MSG(NEXT)$"><IMG SRC="next.gif" ALT="[Date Next]"></A>
 </NextButton>
 
@@ -392,10 +268,10 @@

See Also


-98/03/03 18:19:45
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/nextbuttonia.html b/doc/resources/nextbuttonia.html index 26bb314..a4c5463 100644 --- a/doc/resources/nextbuttonia.html +++ b/doc/resources/nextbuttonia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<NEXTBUTTONIA>
markup ...
</NEXTBUTTONIA>
@@ -42,11 +42,11 @@

Syntax


Description

-

NEXTBUTTONIA defines the value for the $NEXTBUTTON$ +

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 $NEXTBUTTON$ when there is a next message. +value of $BUTTON(NEXT)$ when there is a next message.

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -392,10 +268,10 @@

See Also


-98/03/03 18:19:45
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/nextlink.html b/doc/resources/nextlink.html index a4bdaa6..7b177a7 100644 --- a/doc/resources/nextlink.html +++ b/doc/resources/nextlink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<NEXTLINK>
markup ...
</NEXTLINK>
@@ -42,7 +42,7 @@

Syntax


Description

-

NEXTLINK defines the value for the $NEXTLINK$ +

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 @@ -52,7 +52,7 @@

Description

See the NEXTLINKIA for defining the -value of $NEXTLINK$ when there is no next message. +value of $LINK(NEXT)$ when there is no next message.

@@ -62,7 +62,7 @@

Default Setting

 <NextLink>
 <LI>Next by sort-type:
-<STRONG><A HREF="$NEXTMSG$">$NEXTSUBJECT$</A></STRONG>
+<STRONG><A HREF="$MSG(NEXT)$">$SUBJECT(NEXT)$</A></STRONG>
 </LI>
 </NextLink>
 
@@ -81,288 +81,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -372,14 +248,14 @@

Resource Variables

Examples

The following shows an alternative to the default setting by -add the author of the next message: +including the author of the next message:

 <NextLink>
 <LI>Next by Date:
-<STRONG><A HREF="$NEXTMSG$">$NEXTSUBJECT$</A></STRONG>,
-<EM>$NEXTFROMNAME$</EM>
+<STRONG><A HREF="$MSG(NEXT)$">$SUBJECT(NEXT)$</A></STRONG>,
+<EM>$FROMNAME(NEXT)$</EM>
 </LI>
 </NextLink>
 
@@ -407,10 +283,10 @@

See Also


-98/03/03 18:19:45
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/nextlinkia.html b/doc/resources/nextlinkia.html index 5f0f377..f400009 100644 --- a/doc/resources/nextlinkia.html +++ b/doc/resources/nextlinkia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<NEXTLINKIA>
markup ...
</NEXTLINKIA>
@@ -42,14 +42,14 @@

Syntax


Description

-

NEXTLINKIA defines the value for the $NEXTLINKIA$ +

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 $NEXTLINK$ when there is a next message. +value of $LINK(NEXT)$ when there is a next message.

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -385,10 +261,10 @@

See Also


-98/03/03 18:19:46
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/nextpglink.html b/doc/resources/nextpglink.html index 122f913..5c1f4ce 100644 --- a/doc/resources/nextpglink.html +++ b/doc/resources/nextpglink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<NEXTPGLINK>
markup ...
</NEXTPGLINK>
@@ -42,14 +42,14 @@

Syntax


Description

-

NEXTPGLINK defines the value for the $NEXTPGLINK$ +

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 $NEXTPGLINK$ when there is no next page. +value of $PGLINK(NEXT)$ when there is no next page.

@@ -59,7 +59,7 @@

Default Setting

 <NextPgLink chop>
-[<A HREF="$NEXTPG$">Next Page</A>]
+[<A HREF="$PG(NEXT)$">Next Page</A>]
 </NextPgLink>
 
@@ -73,111 +73,95 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NEXTPG$ -Filename of next page of the main index. - - -$NEXTPGLINK$ -Markup linking to the next page of the main index. - - -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PAGENUM$ +$PAGENUM$ Current index page number. -$PREVPG$ -Filename of the previous page of the main index. +$PG$ +Filename of an index page. -$PREVPGLINK$ -Markup linking to the previous page of the main index. +$PGLINK$ +Markup linking to a main index page. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -212,10 +196,10 @@

See Also


-98/03/03 18:19:46
+98/09/19 18:27:13
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/nextpglinkia.html b/doc/resources/nextpglinkia.html index 0398130..ebb9d79 100644 --- a/doc/resources/nextpglinkia.html +++ b/doc/resources/nextpglinkia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<NEXTPGLINKIA>
markup ...
</NEXTPGLINKIA>
@@ -42,14 +42,14 @@

Syntax


Description

-

NEXTPGLINKIA defines the value for the $NEXTPGLINKIA$ +

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 $NEXTPGLINK$ when there is a next page. +value of $PGLINK(NEXT)$ when there is a next page.

@@ -73,111 +73,95 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NEXTPG$ -Filename of next page of the main index. - - -$NEXTPGLINK$ -Markup linking to the next page of the main index. - - -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PAGENUM$ +$PAGENUM$ Current index page number. -$PREVPG$ -Filename of the previous page of the main index. +$PG$ +Filename of an index page. -$PREVPGLINK$ -Markup linking to the previous page of the main index. +$PGLINK$ +Markup linking to a main index page. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -212,10 +196,10 @@

See Also


-98/03/03 18:19:46
+98/09/19 18:27:14
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/note.html b/doc/resources/note.html new file mode 100644 index 0000000..94e5d29 --- /dev/null +++ b/doc/resources/note.html @@ -0,0 +1,286 @@ + + + +MHonArc Resources: NOTE + + + +
+MHonArc Resource List +
+ +
+

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
$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.
$FIRSTPG$Filename of first page of main index.
$FROM$The complete text in the From: field of the message.
$FROMADDR$The e-mail address in 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 context-type sensistive icon.
$ICONURL$The URL to the context-type sensistive icon.
$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.
$LASTPG$Filename of last page in of main index.
$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.
$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.
$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
$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.
$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 +

+ + +
+
+98/09/19 18:27:14
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/notedir.html b/doc/resources/notedir.html new file mode 100644 index 0000000..8163640 --- /dev/null +++ b/doc/resources/notedir.html @@ -0,0 +1,294 @@ + + + +MHonArc Resources: NOTEDIR + + + +
+MHonArc Resource List +
+ +
+

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
$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.
$FIRSTPG$Filename of first page of main index.
$FROM$The complete text in the From: field of the message.
$FROMADDR$The e-mail address in 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 context-type sensistive icon.
$ICONURL$The URL to the context-type sensistive icon.
$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.
$LASTPG$Filename of last page in of main index.
$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.
$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.
$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
$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.
$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 +

+ + +
+
+98/09/19 18:27:14
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/noteia.html b/doc/resources/noteia.html new file mode 100644 index 0000000..3afdd18 --- /dev/null +++ b/doc/resources/noteia.html @@ -0,0 +1,261 @@ + + + +MHonArc Resources: NOTEIA + + + +
+MHonArc Resource List +
+ +
+

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
$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.
$FIRSTPG$Filename of first page of main index.
$FROM$The complete text in the From: field of the message.
$FROMADDR$The e-mail address in 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 context-type sensistive icon.
$ICONURL$The URL to the context-type sensistive icon.
$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.
$LASTPG$Filename of last page in of main index.
$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.
$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.
$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
$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.
$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 +

+ + +
+
+98/09/19 18:27:14
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/notetext.html b/doc/resources/notetext.html new file mode 100644 index 0000000..aeeecfa --- /dev/null +++ b/doc/resources/notetext.html @@ -0,0 +1,267 @@ + + + +MHonArc Resources: NOTETEXT + + + +
+MHonArc Resource List +
+ +
+

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, +ANNOTATION must be set. To access +the value of NOTETEXT within +page layout resources, use the +$NOTETEXT$ resource variable. +

+ +

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
$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.
$FIRSTPG$Filename of first page of main index.
$FROM$The complete text in the From: field of the message.
$FROMADDR$The e-mail address in 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 context-type sensistive icon.
$ICONURL$The URL to the context-type sensistive icon.
$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.
$LASTPG$Filename of last page in of main index.
$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.
$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.
$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
$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.
$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

+ +

+

+ + +

See Also

+ +

+ANNOTATE, +NOTE, +NOTEDIR +

+ + +
+
+98/09/19 18:27:14
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/otherindexes.html b/doc/resources/otherindexes.html index d98c07b..4e544ed 100644 --- a/doc/resources/otherindexes.html +++ b/doc/resources/otherindexes.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -27,7 +27,7 @@

Syntax

Element
-

+


<OTHERINDEXES>
rcfile1:rcfile2:...
@@ -152,7 +152,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -195,10 +196,10 @@

See Also


-98/03/03 18:19:46
+98/09/19 18:27:14
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/outdir.html b/doc/resources/outdir.html index a4e3a53..8d8541e 100644 --- a/doc/resources/outdir.html +++ b/doc/resources/outdir.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -59,7 +59,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -89,7 +90,7 @@

See Also

98/03/03 18:19:46
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/perlinc.html b/doc/resources/perlinc.html index 955a6b1..48d2024 100644 --- a/doc/resources/perlinc.html +++ b/doc/resources/perlinc.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -27,7 +27,7 @@

Syntax

Element
-

+


<PERLINC>
path1:path2:...
@@ -84,7 +84,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -120,10 +121,10 @@

See Also


-98/03/03 18:19:47
+98/09/19 18:27:14
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/prevbutton.html b/doc/resources/prevbutton.html index d73ebfb..deea4d1 100644 --- a/doc/resources/prevbutton.html +++ b/doc/resources/prevbutton.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<PREVBUTTON>
markup ...
</PREVBUTTON>
@@ -42,11 +42,11 @@

Syntax


Description

-

PREVBUTTON defines the value for the $PREVBUTTON$ +

PREVBUTTON defines the value for the $BUTTON(PREV)$ resource variable when there is a previous message to the current message according to the message list order of the main index. See the PREVBUTTONIA for defining the -value of $PREVBUTTON$ when there is no next message. +value of $BUTTON(PREV)$ when there is no next message.

@@ -55,7 +55,7 @@

Default Setting

 <PrevButton chop>
-[<A HREF="$PREVMSG$">Date Prev</A>]
+[<A HREF="$MSG(PREV)$">Date Prev</A>]
 </PrevButton>
 
@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -365,7 +241,7 @@

Examples

 <PrevButton chop>
-<A HREF="$PREVMSG$"><IMG SRC="prev.gif" ALT="[Date Prev]"></A>
+<A HREF="$MSG(PREV)$"><IMG SRC="prev.gif" ALT="[Date Prev]"></A>
 </PrevButton>
 
@@ -392,10 +268,10 @@

See Also


-98/03/03 18:19:47
+98/09/19 18:27:14
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/prevbuttonia.html b/doc/resources/prevbuttonia.html index 9cb6549..d3dac4a 100644 --- a/doc/resources/prevbuttonia.html +++ b/doc/resources/prevbuttonia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<PREVBUTTONIA>
markup ...
</PREVBUTTONIA>
@@ -42,11 +42,11 @@

Syntax


Description

-

PREVBUTTONIA defines the value for the $PREVBUTTON$ +

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 $PREVBUTTON$ when there is a next message. +value of $BUTTON(PREV)$ when there is a next message.

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -392,10 +268,10 @@

See Also


-98/03/03 18:19:47
+98/09/19 18:27:14
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/prevlink.html b/doc/resources/prevlink.html index e8d0a62..652ffa0 100644 --- a/doc/resources/prevlink.html +++ b/doc/resources/prevlink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<PREVLINK>
markup ...
</PREVLINK>
@@ -42,7 +42,7 @@

Syntax


Description

-

PREVLINK defines the value for the $PREVLINK$ +

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 @@ -52,7 +52,7 @@

Description

See PREVLINKIA for defining the -value of $PREVLINK$ when there is no previous message. +value of $LINK(PREV)$ when there is no previous message.

@@ -62,7 +62,7 @@

Default Setting

 <PrevLink>
 <LI>Prev by sort-type:
-<STRONG><A HREF="$PREVMSG$">$PREVSUBJECT$</A></STRONG>
+<STRONG><A HREF="$MSG(PREV)$">$SUBJECT(PREV)$</A></STRONG>
 </LI>
 </PrevLink>
 
@@ -81,288 +81,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -372,14 +248,14 @@

Resource Variables

Examples

The following shows an alternative to the default setting by -add the author of the previous message: +including the author of the previous message:

 <PrevLink>
 <LI>Prev by sort-type:
-<STRONG><A HREF="$PREVMSG$">$PREVSUBJECT$</A></STRONG>,
-<EM>$PREVFROMNAME$</EM>
+<STRONG><A HREF="$MSG(PREV)$">$PREVSUBJECT(PREV)$</A></STRONG>,
+<EM>$FROMNAME(PREV)$</EM>
 </LI>
 </PrevLink>
 
@@ -407,10 +283,10 @@

See Also


-98/03/03 18:19:47
+98/09/19 18:27:14
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/prevlinkia.html b/doc/resources/prevlinkia.html index ac373e1..4bf1617 100644 --- a/doc/resources/prevlinkia.html +++ b/doc/resources/prevlinkia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -42,14 +42,14 @@

Syntax


Description

-

PREVLINKIA defines the value for the $PREVLINK$ +

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 $PREVLINK$ when there is a previous message. +value of $LINK(PREV)$ when there is a previous message.

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -385,10 +261,10 @@

See Also


-98/03/03 18:19:48
+98/09/19 18:27:14
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/prevpglink.html b/doc/resources/prevpglink.html index 8299ae2..49ee2d6 100644 --- a/doc/resources/prevpglink.html +++ b/doc/resources/prevpglink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<PREVPGLINK>
markup ...
</PREVPGLINK>
@@ -42,14 +42,14 @@

Syntax


Description

-

PREVPGLINK defines the value for the $PREVPGLINK$ +

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 $PREVPGLINK$ when there is no previous page. +value of $PGLINK(PREV)$ when there is no previous page.

@@ -59,7 +59,7 @@

Default Setting

 <PrevPgLink chop>
-[<A HREF="$PREVPG$">Prev Page</A>]
+[<A HREF="$PG(PREV)$">Prev Page</A>]
 </PrevPgLink>
 
@@ -73,111 +73,95 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NEXTPG$ -Filename of next page of the main index. - - -$NEXTPGLINK$ -Markup linking to the next page of the main index. - - -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PAGENUM$ +$PAGENUM$ Current index page number. -$PREVPG$ -Filename of the previous page of the main index. +$PG$ +Filename of an index page. -$PREVPGLINK$ -Markup linking to the previous page of the main index. +$PGLINK$ +Markup linking to a main index page. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -212,10 +196,10 @@

See Also


-98/03/03 18:19:48
+98/09/19 18:27:14
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/prevpglinkia.html b/doc/resources/prevpglinkia.html index ae512ee..546a452 100644 --- a/doc/resources/prevpglinkia.html +++ b/doc/resources/prevpglinkia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<PREVPGLINKIA>
markup ...
</PREVPGLINKIA>
@@ -42,14 +42,14 @@

Syntax


Description

-

PREVPGLINKIA defines the value for the $PREVPGLINK$ +

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 $PREVPGLINK$ when there is a previous page. +value of $PGLINK(PREV)$ when there is a previous page.

@@ -73,111 +73,95 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NEXTPG$ -Filename of next page of the main index. - - -$NEXTPGLINK$ -Markup linking to the next page of the main index. - - -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PAGENUM$ +$PAGENUM$ Current index page number. -$PREVPG$ -Filename of the previous page of the main index. +$PG$ +Filename of an index page. -$PREVPGLINK$ -Markup linking to the previous page of the main index. +$PGLINK$ +Markup linking to a main index page. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -212,10 +196,10 @@

See Also


-98/03/03 18:19:48
+98/09/19 18:27:15
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/quiet.html b/doc/resources/quiet.html index 349a0ff..b0319ee 100644 --- a/doc/resources/quiet.html +++ b/doc/resources/quiet.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -41,9 +41,9 @@

Syntax


Description

-

When QUIET is active, MHonArc will suppress all +

When QUIET is active, MHonArc suppresses all informational diagnostics when processing. Error and warning -diagnostics will still get outputed. +diagnostics will still get printed.

@@ -57,7 +57,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -83,10 +84,10 @@

See Also


-98/03/03 18:19:48
+98/09/19 18:27:15
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/rcfile.html b/doc/resources/rcfile.html index 27fb172..fe0201b 100644 --- a/doc/resources/rcfile.html +++ b/doc/resources/rcfile.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -41,16 +41,16 @@

Syntax


Description

-

RCFILE tells MHonArc what the resource file is. +

RCFILE tells MHonArc what the resource file is. The resource file allows you to specify most of the resources set by environment variables and command-line options, and it allows you to specify -other resources to control MHonArc's behavior. +other resources to control MHonArc's behavior.

Resource file syntax

Resources are set in the file by using elements similiar -in style to HTML/SGML markup. However, MHonArc uses simpler +in style to HTML/SGML markup. However, MHonArc uses simpler parsing rules for the resource file than standard SGML:

    @@ -64,7 +64,7 @@

    Resource file syntax

    You should use SGML comment declarations (<!-- ... -->) when commenting a resource file. This will eliminate possible conflict with later -versions of MHonArc if more stricter parsing rules are +versions of MHonArc if more stricter parsing rules are adopted.

    @@ -83,15 +83,15 @@

    Resource file syntax

    before the close tag.

  • Some elements can take an optional attribute called -"Override", if applicable. This tells MHonArc +"Override", if applicable. This tells MHonArc that the contents of the element will completely override the default -behavior of MHonArc, and previous instances of the element. +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", if applicable. This tells MHonArc +"Chop", if applicable. This tells MHonArc to remove the last line-break of the element's content.

    @@ -109,72 +109,11 @@

    Resource variables

    part of there content. Resource variables represent data that can only be defined during run-time. I.e. Resource variables will get expanded to an appropriate value during the execution -of MHonArc. +of MHonArc. For more information on resource variables, see +the section: Resource Variables.

    -

    The syntax of variables in resources -is as follows:

    - -

    $VARIABLE[:[N][U]]$ -

    - -

    The items in []'s are optional. Definition of each part:

    - -
    $ - -

    The $ character represents the beginning, and -ending, of the variable.

    - -
    VARIABLE - -

    This is the the actual name of the variable. Variable names are -case sensitive. -

    - -
    :[N][U] (optional) - -

    This defines a maximum length of the replacement string for -the variable. The option "U" denotes that the replacement -string should be treated as part of a URL string. This can be useful -when the variable may contain special characters, and the variable -is used as part of a URL.

    - -
    - -

    No whitespace is allowed between the opening -$ and closing $. If an unrecognize d variable -is encountered, it gets replaced with an empty string. If a literal -"$" is needed, use "$$".

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

    -
    - -

    Here are some examples of legal variable usage: -

    -
      -
    • $SUBJECT$ -
    • $FROMNAME$ -
    • $SUBJECT:50$ -
    • $SUBJECTNA:60U$ -
    • $FROMADDR:U$ -
    - -

    The description of for each resource will contain a list +

    The description for each resource will contain a list of all applicable variables that may be used in defining the resource's value.

    @@ -359,13 +298,13 @@

    See Also


    -98/03/03 18:19:49
    +98/09/19 18:27:15
    MHonArc
    Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
    +>Earl Hood, earlhood@usa.net
    diff --git a/doc/resources/refsbegin.html b/doc/resources/refsbegin.html index 411ef69..e46c7d2 100644 --- a/doc/resources/refsbegin.html +++ b/doc/resources/refsbegin.html @@ -6,7 +6,7 @@
    -MHonArc Resource List
    +MHonArc Resource List

    @@ -23,7 +23,7 @@

    Syntax

Element
-

+


<REFSBEGIN>
markup...
</REFSBEGIN>
@@ -109,17 +109,20 @@

See Also

REFSEND, REFSLITXT

+

+Page Layout +


-98/03/03 18:19:49
+98/09/19 18:27:15
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/refsend.html b/doc/resources/refsend.html index d1473aa..024857f 100644 --- a/doc/resources/refsend.html +++ b/doc/resources/refsend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,7 +23,7 @@

Syntax

Element
-

+


<REFSEND>
markup...
</REFSEND>
@@ -91,17 +91,20 @@

See Also

REFSBEGIN, REFSLITXT

+

+Page Layout +


-98/03/03 18:19:49
+98/09/19 18:27:15
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/refslitxt.html b/doc/resources/refslitxt.html index 5ef85ec..3b3946d 100644 --- a/doc/resources/refslitxt.html +++ b/doc/resources/refslitxt.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,7 +23,7 @@

Syntax

Element
-

+


<REFSLITXT>
markup...
</REFSLITXT>
@@ -72,88 +72,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -181,17 +181,20 @@

See Also

REFSBEGIN, REFSEND

+

+Page Layout +


-98/03/03 18:19:49
+98/09/19 18:27:15
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/reverse.html b/doc/resources/reverse.html index efa478f..125aa35 100644 --- a/doc/resources/reverse.html +++ b/doc/resources/reverse.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element(s)
-

+


<REVERSE>
<NOREVERSE>
@@ -34,7 +34,7 @@

Syntax

Command-line Option(s)
-

+


-reverse
-noreverse
@@ -48,7 +48,7 @@

Syntax

Description

If the REVERSE resource on, message groups in the main index will be -listed in the reverse chronological +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 @@ -68,7 +68,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -102,10 +103,10 @@

See Also


-98/03/03 18:19:50
+98/09/19 18:27:15
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/rmm.html b/doc/resources/rmm.html index 6bf8388..f49f87a 100644 --- a/doc/resources/rmm.html +++ b/doc/resources/rmm.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -29,7 +29,7 @@

Syntax

Command-line Option
-

+


-rmm msgnum ...
-rmm msgnum-msgnum ...
-rmm msg-id ...
@@ -60,7 +60,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -123,10 +124,10 @@

See Also


-98/03/03 18:19:50
+98/09/19 18:27:15
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/scan.html b/doc/resources/scan.html index ea4d2ca..e6cbc66 100644 --- a/doc/resources/scan.html +++ b/doc/resources/scan.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -57,7 +57,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -143,10 +144,10 @@

See Also


-98/03/03 18:19:50
+98/09/19 18:27:15
MHonArc
-Copyright © 1997-1998 Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998 Earl Hood, earlhood@usa.net
diff --git a/doc/resources/single.html b/doc/resources/single.html index 051be45..8df46a2 100644 --- a/doc/resources/single.html +++ b/doc/resources/single.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -40,9 +40,9 @@

Syntax


Description

-

When SINGLE is on, MHonArc will interpret input +

When SINGLE is on, MHonArc will interpret input as a single message to convert to HTML with no archive -processing performed. Input can from a filename on the command-line +processing performed. Input can specified as a filename on the command-line or from standard input. The converted message is sent to standard output.

@@ -70,7 +70,7 @@

Examples

% mhonarc -single < messagefile > file.html
-or,
+or,
% cat messagefile | mhonarc -single > file.html @@ -98,13 +98,13 @@

See Also


-98/03/03 18:19:50
+98/09/19 18:27:16
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/sort.html b/doc/resources/sort.html index b29b4df..803b383 100644 --- a/doc/resources/sort.html +++ b/doc/resources/sort.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element(s)
-

+


<SORT>
<NOSORT>
@@ -34,7 +34,7 @@

Syntax

Command-line Option(s)
-

+


-sort
-nosort
@@ -49,7 +49,7 @@

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. +ordered processed (ie. by message number).

@@ -63,7 +63,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -91,10 +92,10 @@

See Also


-98/03/03 18:19:51
+98/09/19 18:27:16
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/subjectarticlerxp.html b/doc/resources/subjectarticlerxp.html index 38affd9..1eb2199 100644 --- a/doc/resources/subjectarticlerxp.html +++ b/doc/resources/subjectarticlerxp.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<SUBJECTARTICLERXP>
perl_regex
</SUBJECTARTICLERXP>
@@ -32,7 +32,7 @@

Syntax

Command-line Option
-

+


-subjectarticlerxp perl_regex

@@ -97,13 +97,13 @@

See Also


-98/03/03 18:19:51
+98/09/19 18:27:16
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/subjectbegin.html b/doc/resources/subjectbegin.html index 08b24e0..b59525d 100644 --- a/doc/resources/subjectbegin.html +++ b/doc/resources/subjectbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<SUBJECTBEGIN>
markup ...
</SUBJECTBEGIN>
@@ -48,7 +48,7 @@

Description

SUBJECTBEGIN defines the beginning markup of a subject group in the main index if the SUBSORT -reosource is set. +resource is set. A subject group is a group of messages with the same subject.

@@ -73,88 +73,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -165,7 +165,7 @@

Examples

The following example resource settings cause the main index to be sorted by subject. The listing will contain each subject -followed by a sub-listing of the author's: +followed by an author sub-listing:

@@ -204,13 +204,13 @@ 

See Also


-98/03/03 18:19:51
+98/09/19 18:27:16
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/subjectend.html b/doc/resources/subjectend.html index cf1239c..81de6b1 100644 --- a/doc/resources/subjectend.html +++ b/doc/resources/subjectend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<SUBJECTEND>
markup ...
</SUBJECTEND>
@@ -62,7 +62,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -90,13 +91,13 @@

See Also


-98/03/03 18:19:51
+98/09/19 18:27:16
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/subjectheader.html b/doc/resources/subjectheader.html index 74229ae..b0347b6 100644 --- a/doc/resources/subjectheader.html +++ b/doc/resources/subjectheader.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<SUBJECTHEADER>
markup ...
</SUBJECTHEADER>
@@ -45,9 +45,9 @@

Description

SUBJECTHEADER defines the markup for the main subject line above the message header of message pages. If the SUBJECTHEADER resource is changed and messages already exist -in the archive, those messages will not inherit the change. +in the archive, the existing messages will not inherit the change. Therefore, you need to be sure about the value of SUBJECTHEADER -when create an archive. +when creating an archive.

@@ -71,52 +71,52 @@

Resource Variables

VariableValue -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -145,10 +145,10 @@

See Also


-98/03/03 18:19:51
+98/09/19 18:27:16
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/subjectreplyrxp.html b/doc/resources/subjectreplyrxp.html index eb6280f..c009f7d 100644 --- a/doc/resources/subjectreplyrxp.html +++ b/doc/resources/subjectreplyrxp.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<SUBJECTREPLYRXP>
perl_regex
</SUBJECTREPLYRXP>
@@ -96,13 +96,13 @@

See Also


-98/03/03 18:19:52
+98/09/19 18:27:16
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/subjectstripcode.html b/doc/resources/subjectstripcode.html new file mode 100644 index 0000000..cc4b521 --- /dev/null +++ b/doc/resources/subjectstripcode.html @@ -0,0 +1,113 @@ + + + +MHonArc Resources: SUBJECTSTRIPCODE + + + +
+MHonArc Resource List +
+ +
+

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

+ +

+

+ + +
+
+98/09/19 18:27:16
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/subsort.html b/doc/resources/subsort.html index e6738ad..bec204a 100644 --- a/doc/resources/subsort.html +++ b/doc/resources/subsort.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element(s)
-

+


<SUBSORT>
<NOSUBSORT>
@@ -34,7 +34,7 @@

Syntax

Command-line Option(s)
-

+


-subsort
-nosubsort
@@ -62,7 +62,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -90,10 +91,10 @@

See Also


-98/03/03 18:19:52
+98/09/19 18:27:16
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tcontbegin.html b/doc/resources/tcontbegin.html index 4db5fcd..255d186 100644 --- a/doc/resources/tcontbegin.html +++ b/doc/resources/tcontbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,7 +23,7 @@

Syntax

Element
-

+


<TCONTBEGIN>
markup...
</TCONTBEGIN>
@@ -42,7 +42,7 @@

Syntax

Description

TCONTBEGIN defines the markup to occur before the continuation -of a broken thread. When MHonArc creates a multi-page +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 @@ -82,88 +82,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -192,13 +192,13 @@

See Also


-98/03/03 18:19:52
+98/09/19 18:27:16
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tcontend.html b/doc/resources/tcontend.html index 4736eab..b109649 100644 --- a/doc/resources/tcontend.html +++ b/doc/resources/tcontend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,7 +23,7 @@

Syntax

Element
-

+


<TCONTEND>
markup...
</TCONTEND>
@@ -59,7 +59,8 @@

Default Setting

Resource Variables

-

N/A

+

N/A +

Examples

@@ -83,13 +84,13 @@

See Also


-98/03/03 18:19:52
+98/09/19 18:27:16
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tfoot.html b/doc/resources/tfoot.html index 9b2716f..0f81ebe 100644 --- a/doc/resources/tfoot.html +++ b/doc/resources/tfoot.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TFOOT>
markup ...
</TFOOT>
@@ -67,107 +67,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -188,10 +164,10 @@

Examples

<table border=0 width="100%"> <tbody> <tr> -<td align="left">$TPREVPGLINK$ -<td align="right">[<a href="$TFIRSTPG$">First Page</a>] -<td align="left">[<a href="$TLASTPG$">Last Page</a>] -<td align="right">$TNEXTPGLINK$ +<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> @@ -213,14 +189,17 @@

See Also

THEAD

+

+Page Layout +


-98/03/03 18:19:53
+98/09/19 18:27:16
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/thead.html b/doc/resources/thead.html index deff5e9..f36713b 100644 --- a/doc/resources/thead.html +++ b/doc/resources/thead.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<THEAD>
markup ...
</THEAD>
@@ -59,7 +59,7 @@

Default Setting

<UL> <LI><A HREF="$IDXFNAME$">Main Index</A></LI> </UL> -$TPREVPGLINK$$TNEXTPGLINK$ +$PGLINK(TPREV)$$PGLINK(TNEXT)$ <HR> <UL> </THead> @@ -88,107 +88,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -213,10 +189,10 @@

Examples

<tr align="center"> <th colspan=4>Page $PAGENUM$ of $NUMOFPAGES$ <tr> -<td align="left">$TPREVPGLINK$ -<td align="right">[<a href="$TFIRSTPG$">First Page</a>] -<td align="left">[<a href="$TLASTPG$">Last Page</a>] -<td align="right">$TNEXTPGLINK$ +<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> @@ -245,10 +221,10 @@

See Also


-98/03/03 18:19:53
+98/09/19 18:27:16
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/thread.html b/doc/resources/thread.html index 0d6b50d..614919a 100644 --- a/doc/resources/thread.html +++ b/doc/resources/thread.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,14 +25,14 @@

Syntax

Element(s)
-

+


<THREAD>
<NOTHREAD>

Command-line Option(s)
-

+


-thread
-nothread
@@ -45,7 +45,7 @@

Syntax


Description

-

If THREAD is on, MHonArc will create the thread index +

If THREAD is on, MHonArc will create the thread index page(s) for the archive. If off, no thread index is created.

@@ -60,7 +60,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -87,10 +88,10 @@

See Also


-98/03/03 18:19:53
+98/09/19 18:27:16
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tidxfname.html b/doc/resources/tidxfname.html index 9d22569..f81dbfa 100644 --- a/doc/resources/tidxfname.html +++ b/doc/resources/tidxfname.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<TIDXFNAME>
filename
</TIDXFNAME>
@@ -61,7 +61,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -89,10 +90,10 @@

See Also


-98/03/03 18:19:53
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tidxlabel.html b/doc/resources/tidxlabel.html index 8b00c23..b3939bb 100644 --- a/doc/resources/tidxlabel.html +++ b/doc/resources/tidxlabel.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<TIDXLABEL>
markup ... </TIDXLABEL>
@@ -90,13 +90,13 @@

See Also


-98/03/03 18:19:54
+98/09/19 18:27:17
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tidxpgbegin.html b/doc/resources/tidxpgbegin.html index 2790b06..ea2f834 100644 --- a/doc/resources/tidxpgbegin.html +++ b/doc/resources/tidxpgbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TIDXPGBEGIN>
markup ...
</TIDXPGBEGIN>
@@ -78,107 +78,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -199,7 +175,7 @@

Examples

<HEAD> <TITLE>$TIDXTITLE$</TITLE> </HEAD> -<BODY background="tidxbg.gif" bgproperties="fixed"> +<BODY background="tidxbg.gif" bgproperties="fixed"> <H1>$TIDXTITLE$</H1> </TIdxPgBegin> @@ -224,10 +200,10 @@

See Also


-98/03/03 18:19:54
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tidxpgend.html b/doc/resources/tidxpgend.html index 2455b84..3e4a953 100644 --- a/doc/resources/tidxpgend.html +++ b/doc/resources/tidxpgend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TIDXPGEND>
markup ...
</TIDXPGEND>
@@ -67,107 +67,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -198,10 +174,10 @@

See Also


-98/03/03 18:19:54
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tidxprefix.html b/doc/resources/tidxprefix.html index fe9e441..1189edc 100644 --- a/doc/resources/tidxprefix.html +++ b/doc/resources/tidxprefix.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<TIDXPREFIX>
prefix
</TIDXPREFIX>
@@ -49,7 +49,8 @@

Description

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. For example, the filenames for a 4 page +".html" following (or the value defined by the +HTMLEXT). For example, the filenames for a 4 page thread index would be the following:

@@ -76,7 +77,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -104,10 +106,10 @@

See Also


-98/03/03 18:19:54
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/timezones.html b/doc/resources/timezones.html index 911138c..781e130 100644 --- a/doc/resources/timezones.html +++ b/doc/resources/timezones.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TIMEZONES>
timezone_acronym:hour_offset
timezone_acronym:hour_offset
@@ -55,7 +55,7 @@

Description

EST. The hour offset should be positive for timezones West of UTC, and negative for time zones East of UTC.

-

MHonArc has a default list of timezone acronyms +

MHonArc has a default list of timezone acronyms defined with hour offsets. Therefore, the list given in the resource file will augment the default list, unless the "Override" attribute is specified. If @@ -64,9 +64,9 @@

Description

are discarded, and only the timezone acronyms specified in the TIMEZONES element will be used.

-

Much of the time, the date used by MHonArc has an hour +

Much of the time, the date used by MHonArc has an hour offset instead of a timezone acronym. However, mail messages may -contain timezone acronyms in received/sent dates and MHonArc +contain timezone acronyms in received/sent dates and MHonArc must be told what the hour offset from UTC the timezone acronym represents in order to properly sort messages by date.

@@ -95,7 +95,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -121,10 +122,10 @@

See Also


-98/03/03 18:19:55
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tindentbegin.html b/doc/resources/tindentbegin.html index 6f4419b..e5b911a 100644 --- a/doc/resources/tindentbegin.html +++ b/doc/resources/tindentbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,9 +23,9 @@

Syntax

Element
-

+


<TINDENTBEGIN>
-markup...
+markup...
</TINDENTBEGIN>

@@ -42,11 +42,11 @@

Syntax

Description

TINDENTBEGIN defines the markup for opening a level for the -continuation of a broken thread. When MHonArc creates a +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 +TINDENTBEGIN will be used for each level that MHonArc must create inorder to restart the thread.

@@ -73,7 +73,7 @@

Resource Variables

Examples

-

By default, MHonArc uses the UL element for listing +

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 @@ -104,17 +104,20 @@

See Also

TCONTBEGIN, TINDENTEND

+

+Page Layout +


-98/03/03 18:19:55
+98/09/19 18:27:17
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tindentend.html b/doc/resources/tindentend.html index cd3d4c3..85cee6a 100644 --- a/doc/resources/tindentend.html +++ b/doc/resources/tindentend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,9 +23,9 @@

Syntax

Element
-

+


<TINDENTEND>
-markup...
+markup...
</TINDENTEND>

@@ -81,17 +81,20 @@

See Also

TINDENTBEGIN

+

+Page Layout +


-98/03/03 18:19:55
+98/09/19 18:27:17
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/title.html b/doc/resources/title.html index 599c162..5a0aeff 100644 --- a/doc/resources/title.html +++ b/doc/resources/title.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<TITLE>
string
</TITLE>
@@ -61,7 +61,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -97,10 +98,10 @@

See Also


-98/03/03 18:19:55
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tlevels.html b/doc/resources/tlevels.html index cab2b50..e663353 100644 --- a/doc/resources/tlevels.html +++ b/doc/resources/tlevels.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<TLEVELS>
number
</TLEVELS>
@@ -47,8 +47,8 @@

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 and cause text to be squished on the -left-side of an HTML viewer.

+indentations in deep threads which may cause text to be squished on the +right-side of an HTML viewer.


@@ -61,7 +61,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -87,10 +88,10 @@

See Also


-98/03/03 18:19:56
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tliend.html b/doc/resources/tliend.html index 879f95c..7236dee 100644 --- a/doc/resources/tliend.html +++ b/doc/resources/tliend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TLIEND>
markup ...
</TLIEND>
@@ -71,89 +71,8 @@

Default Setting


Resource Variables

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariableValue
$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.
$DDMMYY$Message date in dd/mm/yy format.
$FROM$The complete text in the From field.
$FROMADDR$The e-mail address in the From field.
$FROMNAME$The human name of the person in the From field.
$ICON$The context-type sensistive icon.
$ICONURL$The URL to the context-type sensistive icon.
$LOCALDATE$Current local date.
$MMDDYY$Message date in mm/dd/yy format.
$MSGID$The message-id of the message.
$MSGNUM$The message numbers assigned to the message by MHonArc (includes leading zeros).
$NUMFOLUP$Number of explicit follow-ups to the message.
$ORDNUM$The current listing number of the message.
$SUBJECT$The subject text of the message wrapped in an anchor element that hyperlinks to the message.
$SUBJECTNA$The subject text of the message without the anchor element.
$YYMMDD$Message date in yy/mm/dd format.
+

N/A +


@@ -180,10 +99,10 @@

See Also


-98/03/03 18:19:56
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tlinone.html b/doc/resources/tlinone.html index 3df4d0d..c62660c 100644 --- a/doc/resources/tlinone.html +++ b/doc/resources/tlinone.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TLINONE>
markup ...
</TLINONE>
@@ -71,7 +71,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -94,14 +95,17 @@

See Also

TLINONEEND

+

+Page Layout +


-98/03/03 18:19:56
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tlinoneend.html b/doc/resources/tlinoneend.html index 151ce27..0e676bc 100644 --- a/doc/resources/tlinoneend.html +++ b/doc/resources/tlinoneend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TLINONEEND>
markup ...
</TLINONEEND>
@@ -70,7 +70,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -93,14 +94,17 @@

See Also

TLINONE

+

+Page Layout +


-98/03/03 18:19:56
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tlitxt.html b/doc/resources/tlitxt.html index ad630b5..1f7acbd 100644 --- a/doc/resources/tlitxt.html +++ b/doc/resources/tlitxt.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TLITXT>
markup ...
</TLITXT>
@@ -78,88 +78,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -187,14 +187,17 @@

See Also

TSINGLETXT, TTOPBEGIN

+

+Page Layout +


-98/03/03 18:19:56
+98/09/19 18:27:17
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tnextbutton.html b/doc/resources/tnextbutton.html index 38075dc..5a3e0c5 100644 --- a/doc/resources/tnextbutton.html +++ b/doc/resources/tnextbutton.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TNEXTBUTTON>
markup ...
</TNEXTBUTTON>
@@ -42,11 +42,11 @@

Syntax


Description

-

TNEXTBUTTON defines the value for the $TNEXTBUTTON$ +

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 $TNEXTBUTTON$ when there is no next message. +value of $BUTTON(TNEXT)$ when there is no next message.

@@ -55,7 +55,7 @@

Default Setting

 <TNextButton chop>
-[<A HREF="$TNEXTMSG$">Thread Next</A>]
+[<A HREF="$MSG(TNEXT)$">Thread Next</A>]
 <TNextButton>
 
@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -365,7 +241,7 @@

Examples

 <TNextButton chop>
-<A HREF="$TNEXTMSG$"><IMG SRC="tnext.gif" ALT="[Thread Next]"></A>
+<A HREF="$MSG(TNEXT)$"><IMG SRC="tnext.gif" ALT="[Thread Next]"></A>
 <TNextButton>
 
@@ -390,10 +266,10 @@

See Also


-98/03/03 18:19:57
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tnextbuttonia.html b/doc/resources/tnextbuttonia.html index 7a1ef5f..ead5fd8 100644 --- a/doc/resources/tnextbuttonia.html +++ b/doc/resources/tnextbuttonia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TNEXTBUTTONIA>
markup ...
</TNEXTBUTTONIA>
@@ -42,11 +42,11 @@

Syntax


Description

-

TNEXTBUTTONIA defines the value for the $TNEXTBUTTON$ +

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 $TNEXTBUTTON$ when there is a next message. +value of $BUTTON(TNEXT)$ when there is a next message.

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -390,10 +266,10 @@

See Also


-98/03/03 18:19:57
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tnextlink.html b/doc/resources/tnextlink.html index 3323b44..17ed854 100644 --- a/doc/resources/tnextlink.html +++ b/doc/resources/tnextlink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TNEXTLINK>
markup ...
</TNEXTLINK>
@@ -42,7 +42,7 @@

Syntax


Description

-

TNEXTLINK defines the value for the $TNEXTLINK$ +

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 @@ -52,7 +52,7 @@

Description

See the TNEXTLINKIA for defining the -value of $TNEXTLINK$ when there is no next message. +value of $LINK(TNEXT)$ when there is no next message.

@@ -62,7 +62,7 @@

Default Setting

 <TNextLink>
 <LI>Next by Thread:
-<STRONG><A HREF="$TNEXTMSG$">$TNEXTSUBJECT$</A></STRONG>
+<STRONG><A HREF="$MSG(TNEXT)$">$SUBJECT(TNEXT)$</A></STRONG>
 </LI>
 </TNextLink>
 
@@ -77,288 +77,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -374,8 +250,8 @@

Examples

 <TNextLink>
 <LI>Next by Thread:
-<STRONG><A HREF="$TNEXTMSG$">$TNEXTSUBJECT$</A></STRONG>,
-<EM>$TNEXTFROMNAME$</EM>
+<STRONG><A HREF="$MSG(TNEXT)$">$SUBJECT(TNEXT)$</A></STRONG>,
+<EM>$FROMNAME(TNEXT)$</EM>
 </LI>
 </TNextLink>
 
@@ -401,10 +277,10 @@

See Also


-98/03/03 18:19:57
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tnextlinkia.html b/doc/resources/tnextlinkia.html index 8f2ecd1..e4a652b 100644 --- a/doc/resources/tnextlinkia.html +++ b/doc/resources/tnextlinkia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -42,14 +42,14 @@

Syntax


Description

-

TNEXTLINKIA defines the value for the $TNEXTLINKIA$ +

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 $TNEXTLINK$ when there is a next message. +value of $LINK(TNEXT)$ when there is a next message.

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -383,10 +259,10 @@

See Also


-98/03/03 18:19:57
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tnextpglink.html b/doc/resources/tnextpglink.html index a8ad19c..e6a9ee1 100644 --- a/doc/resources/tnextpglink.html +++ b/doc/resources/tnextpglink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TNEXTPGLINK>
markup ...
</TNEXTPGLINK>
@@ -42,14 +42,14 @@

Syntax


Description

-

TNEXTPGLINK defines the value for the $TNEXTPGLINK$ +

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 $TNEXTPGLINK$ when there is no next page. +value of $PGLINK(TNEXT)$ when there is no next page.

@@ -59,7 +59,7 @@

Default Setting

 <TNextPgLink chop>
-[<A HREF="$TNEXTPG$">Next Page</A>]
+[<A HREF="$PG(TNEXT)$">Next Page</A>]
 </TNextPgLink>
 
@@ -73,107 +73,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -208,10 +184,10 @@

See Also


-98/03/03 18:19:58
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tnextpglinkia.html b/doc/resources/tnextpglinkia.html index cb205b7..71858bb 100644 --- a/doc/resources/tnextpglinkia.html +++ b/doc/resources/tnextpglinkia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TNEXTPGLINKIA>
markup ...
</TNEXTPGLINKIA>
@@ -42,14 +42,14 @@

Syntax


Description

-

TNEXTPGLINKIA defines the value for the $TNEXTPGLINKIA$ +

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 $TNEXTPGLINK$ when there is a next page. +value of $PGLINK(TNEXT)$ when there is a next page.

@@ -73,107 +73,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -208,10 +184,10 @@

See Also


-98/03/03 18:19:58
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/toplinks.html b/doc/resources/toplinks.html index aad29cc..b4d8028 100644 --- a/doc/resources/toplinks.html +++ b/doc/resources/toplinks.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -61,7 +61,7 @@

Default Setting

 <TopLinks>
 <HR>
-$PREVBUTTON$$NEXTBUTTON$$TPREVBUTTON$$TNEXTBUTTON$[<A
+$BUTTON(PREV)$$BUTTON(NEXT)$$BUTTON(TPREV)$$BUTTON(TNEXT)$[<A
 HREF="$IDXFNAME$#$MSGNUM$">Date Index</A>][<A
 HREF="$TIDXFNAME$#$MSGNUM$">Thread Index</A>]
 </TopLinks>
@@ -77,288 +77,164 @@ 

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -374,7 +250,7 @@

Examples

 <TopLinks>
 <HR>
-$PREVBUTTON$$NEXTBUTTON$$TPREVBUTTON$$TNEXTBUTTON$<A
+$BUTTON(PREV)$$BUTTON(NEXT)$$BUTTON(TPREV)$$BUTTON(TNEXT)$<A
 HREF="$IDXFNAME$#$MSGNUM$"><IMG
 SRC="dateidx.gif" ALT="[Date Index]"></A><A
 HREF="$TIDXFNAME$#$MSGNUM$"><IMG
@@ -407,10 +283,10 @@ 

See Also


-98/03/03 18:19:58
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tprevbutton.html b/doc/resources/tprevbutton.html index b32ae36..0fddcaf 100644 --- a/doc/resources/tprevbutton.html +++ b/doc/resources/tprevbutton.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TPREVBUTTON>
markup ...
</TPREVBUTTON>
@@ -42,11 +42,11 @@

Syntax


Description

-

TPREVBUTTON defines the value for the $TPREVBUTTON$ +

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 $TPREVBUTTON$ when there is no next message. +value of $BUTTON(TPREV)$ when there is no next message.

@@ -55,7 +55,7 @@

Default Setting

 <TPrevButton chop>
-[<A HREF="$PREVMSG$">Thread Prev</A>]
+[<A HREF="$MSG(PREV)$">Thread Prev</A>]
 </TPrevButton>
 
@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -365,7 +241,7 @@

Examples

 <TPrevButton chop>
-<A HREF="$TPREVMSG$"><IMG SRC="tprev.gif" ALT="[Thread Prev]"></A>
+<A HREF="$MSG(TPREV)$"><IMG SRC="tprev.gif" ALT="[Thread Prev]"></A>
 </TPrevButton>
 
@@ -390,10 +266,10 @@

See Also


-98/03/03 18:19:58
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tprevbuttonia.html b/doc/resources/tprevbuttonia.html index 03b95b9..150f311 100644 --- a/doc/resources/tprevbuttonia.html +++ b/doc/resources/tprevbuttonia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -42,11 +42,11 @@

Syntax


Description

-

TPREVBUTTONIA defines the value for the $TPREVBUTTON$ +

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 $TPREVBUTTON$ when there is a next message. +value of $BUTTON(TPREV)$ when there is a next message.

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -390,10 +266,10 @@

See Also


-98/03/03 18:19:59
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tprevlink.html b/doc/resources/tprevlink.html index 85a48a8..542661d 100644 --- a/doc/resources/tprevlink.html +++ b/doc/resources/tprevlink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -42,7 +42,7 @@

Syntax


Description

-

TPREVLINK defines the value for the $TPREVLINK$ +

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 @@ -52,7 +52,7 @@

Description

See TPREVLINKIA for defining the -value of $TPREVLINK$ when there is no previous message. +value of $LINK(TPREV)$ when there is no previous message.

@@ -62,7 +62,7 @@

Default Setting

 <TPrevLink>
 <LI>Prev by Thread:
-<STRONG><A HREF="$TPREVMSG$">$TPREVSUBJECT$</A></STRONG>
+<STRONG><A HREF="$MSG(TPREV)$">$SUBJECT(TPREV)$</A></STRONG>
 </LI>
 </TPrevLink>
 
@@ -77,288 +77,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -374,8 +250,8 @@

Examples

 <TPrevLink>
 <LI>Prev by Thread:
-<STRONG><A HREF="$TPREVMSG$">$TPREVSUBJECT$</A></STRONG>,
-<EM>$TPREVFROMNAME$</EM>
+<STRONG><A HREF="$MSG(TPREV)$">$SUBJECT(TPREV)$</A></STRONG>,
+<EM>$FROMNAME(TPREV)$</EM>
 </LI>
 </TPrevLink>
 
@@ -401,10 +277,10 @@

See Also


-98/03/03 18:19:59
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tprevlinkia.html b/doc/resources/tprevlinkia.html index 37ae1b7..966f330 100644 --- a/doc/resources/tprevlinkia.html +++ b/doc/resources/tprevlinkia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TPREVLINKIA>
markup ...
</TPREVLINKIA>
@@ -42,14 +42,14 @@

Syntax


Description

-

TPREVLINKIA defines the value for the $TPREVLINK$ +

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 $TPREVLINK$ when there is a previous message. +value of $LINK(TPREV)$ when there is a previous message.

@@ -69,288 +69,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -383,10 +259,10 @@

See Also


-98/03/03 18:19:59
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tprevpglink.html b/doc/resources/tprevpglink.html index 4394adb..7ecbe39 100644 --- a/doc/resources/tprevpglink.html +++ b/doc/resources/tprevpglink.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TPREVPGLINK>
markup ...
</TPREVPGLINK>
@@ -42,14 +42,14 @@

Syntax


Description

-

TPREVPGLINK defines the value for the $TPREVPGLINK$ +

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 $TPREVPGLINK$ when there is no previous page. +value of $PGLINK(TPREV)$ when there is no previous page.

@@ -59,7 +59,7 @@

Default Setting

 <TPrevPgLink chop>
-[<A HREF="$TPREVPG$">Prev Page</A>]
+[<A HREF="$PG(TPREV)$">Prev Page</A>]
 </TPrevPgLink>
 
@@ -73,107 +73,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -208,10 +184,10 @@

See Also


-98/03/03 18:19:59
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tprevpglinkia.html b/doc/resources/tprevpglinkia.html index 979055c..7500ed7 100644 --- a/doc/resources/tprevpglinkia.html +++ b/doc/resources/tprevpglinkia.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TPREVPGLINKIA>
markup ...
</TPREVPGLINKIA>
@@ -42,14 +42,14 @@

Syntax


Description

-

TPREVPGLINKIA defines the value for the $TPREVPGLINK$ +

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 $TPREVPGLINK$ when there is a previous page. +value of $PGLINK(TPREV)$ when there is a previous page.

@@ -73,107 +73,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -208,10 +184,10 @@

See Also


-98/03/03 18:20:00
+98/09/19 18:27:18
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/treverse.html b/doc/resources/treverse.html index 7f79163..7623b90 100644 --- a/doc/resources/treverse.html +++ b/doc/resources/treverse.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element(s)
-

+


<TREVERSE>
<NOTREVERSE>
@@ -34,7 +34,7 @@

Syntax

Command-line Option(s)
-

+


-treverse
-notreverse
@@ -66,7 +66,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -95,10 +96,10 @@

See Also


-98/03/03 18:20:00
+98/09/19 18:27:19
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tsingletxt.html b/doc/resources/tsingletxt.html index 0454f27..ce32b89 100644 --- a/doc/resources/tsingletxt.html +++ b/doc/resources/tsingletxt.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TSINGLETXT>
markup ...
</TSINGLETXT>
@@ -76,88 +76,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -188,10 +188,10 @@

See Also


-98/03/03 18:20:00
+98/09/19 18:27:19
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tslice.html b/doc/resources/tslice.html index dcdf716..bfeb23c 100644 --- a/doc/resources/tslice.html +++ b/doc/resources/tslice.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TSLICE>
number:number
</TSLICE>
@@ -92,19 +92,19 @@

See Also

TSLICEBEG, -TSLICEBEG +TSLICEEND


-98/03/03 18:20:00
+98/09/19 18:27:19
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tslicebeg.html b/doc/resources/tslicebeg.html index 7f3ee4b..de2fdde 100644 --- a/doc/resources/tslicebeg.html +++ b/doc/resources/tslicebeg.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,7 +23,7 @@

Syntax

Element
-

+


<TSLICEBEG>
markup...
</TSLICEBEG>
@@ -76,288 +76,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -390,13 +266,13 @@

See Also


-98/03/03 18:20:01
+98/09/19 18:27:19
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tsliceend.html b/doc/resources/tsliceend.html index 5d0bcc6..8e0727f 100644 --- a/doc/resources/tsliceend.html +++ b/doc/resources/tsliceend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -23,7 +23,7 @@

Syntax

Element
-

+


<TSLICEEND>
markup...
</TSLICEEND>
@@ -76,288 +76,164 @@

Resource Variables

VariableValue -$DATE$ +$BUTTON$ +Button markup linking to a message. + + +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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$ +$GMTDATE$ Current GMT date. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LINK$ +Link markup linking to a message. + + +$LOCALDATE$ Current local date. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. + + +$MSG$ +Filename of message. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NEXTBUTTON$ -Next button markup linking to the next message. - - -$NEXTFROM$ -Content of From field of the next message. - - -$NEXTFROMADDR$ -E-mail address contained in From field of the next message. - - -$NEXTFROMNAME$ -Human name contained in From field of the next message. - - -$NEXTLINK$ -Next link markup linking to the next message. - - -$NEXTMSG$ -Filename of next message. - - -$NEXTMSGNUM$ -Number assigned to next message. - - -$NEXTSUBJECT$ -Subject of next message. - - -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PREVBUTTON$ -Previous button markup linking to the previous message. - - -$PREVFROM$ -Content of From field of the previous message. - - -$PREVFROMADDR$ -E-mail address contained in From field of the previous message. - - -$PREVFROMNAME$ -Human name contained in From field of the previous message. - - -$PREVLINK$ -Previous link markup linking to the previous message. - - -$PREVMSG$ -Filename of previous message. - - -$PREVMSGNUM$ -Number assigned to previous message. - - -$PREVSUBJECT$ -Subject of previous message. - - -$PROG$ +$PROG$ Program name -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTBUTTON$ -Next button markup linking to the next message according to the thread index list order. - - -$TNEXTFROM$ -Content of From field of the next message according to the list order of the thread index. - - -$TNEXTFROMADDR$ -E-mail address contained in From field of the next message according to the list order of the thread index. - - -$TNEXTFROMNAME$ -Human name contained in From field of the next message according to the list order of the thread index. - - -$TNEXTLINK$ -Next link markup linking to the next message according to the thread index list order. - - -$TNEXTMSG$ -Filename of next message according to the list order of the thread index. - - -$TNEXTMSGNUM$ -Number assigned to next message according to the list order of the thread index. - - -$TNEXTSUBJECT$ -Subject of next message according to the list order of the thread index. - - -$TPREVBUTTON$ -Previous button markup linking to the previous message according to the thread index list order. - - -$TPREVFROM$ -Content of From field of the previous message according to the list order of the thread index. - - -$TPREVFROMADDR$ -E-mail address contained in From field of the previous message according to the list order of the thread index. - - -$TPREVFROMNAME$ -Human name contained in From field of the previous message according to the list order of the thread index. - - -$TPREVLINK$ -Previous link markup linking to the previous message according to the thread index list order. - - -$TPREVMSG$ -Filename of previous message according to the list order of the thread index. - - -$TPREVMSGNUM$ -Number assigned to previous message according to the list order of the thread index. - - -$TPREVSUBJECT$ -Subject of previous message according to the list order of the thread index. - - -$TSLICE$ -A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. +$TSLICE$ +A slice of the thread listing relative to the current message. Size of slice determined by the TSLICE resource. -$VERSION$ +$VERSION$ Program version. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -390,13 +266,13 @@

See Also


-98/03/03 18:20:01
+98/09/19 18:27:19
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tsort.html b/doc/resources/tsort.html index 039ad72..a0403e0 100644 --- a/doc/resources/tsort.html +++ b/doc/resources/tsort.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,14 +24,14 @@

Syntax

Element(s)
-

+


<TSORT>
<NOTSORT>

Command-line Option(s)
-

+


-tsort
-notsort

@@ -83,13 +83,13 @@

See Also


-98/03/03 18:20:01
+98/09/19 18:27:19
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tsubjectbeg.html b/doc/resources/tsubjectbeg.html index 56f4ca5..fcb0911 100644 --- a/doc/resources/tsubjectbeg.html +++ b/doc/resources/tsubjectbeg.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TSUBJECTBEG>
markup ...
</TSUBJECTBEG>
@@ -55,7 +55,7 @@

Default Setting

 <TSubjectBeg>
-&lt;Possible follow-up(s)&gt;<BR>
+<LI>&lt;Possible follow-up(s)&gt;</LI>
 </TSubjectBeg>
 
@@ -63,7 +63,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -80,6 +81,9 @@

Examples

</TSubjectBeg> +

Note the blank line between the open and close tags. +

+

Version

@@ -94,14 +98,17 @@

See Also

TSUBJECTEND

+

+Page Layout +


-98/03/03 18:20:01
+98/10/10 15:33:10
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tsubjectend.html b/doc/resources/tsubjectend.html index daec3c2..5d51f1c 100644 --- a/doc/resources/tsubjectend.html +++ b/doc/resources/tsubjectend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TSUBJECTEND>
markup ...
</TSUBJECTEND>
@@ -58,7 +58,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -80,14 +81,17 @@

See Also

TSUBJECTBEG

+

+Page Layout +


-98/03/03 18:20:02
+98/09/19 18:27:19
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tsublistbeg.html b/doc/resources/tsublistbeg.html index 0fe29a6..ae75ace 100644 --- a/doc/resources/tsublistbeg.html +++ b/doc/resources/tsublistbeg.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TSUBLISTBEG>
markup ...
</TSUBLISTBEG>
@@ -66,107 +66,83 @@

Resource Variables

VariableValue -$DOCURL$ +$DOCURL$ URL to documentation. -$FIRSTPG$ +$FIRSTPG$ Filename of first page of main index. -$GMTDATE$ +$GMTDATE$ Current GMT date. -$IDXFNAME$ +$IDXFNAME$ Filename of main index page. -$IDXLABEL$ +$IDXLABEL$ Label for main index page. -$IDXPREFIX$ +$IDXPREFIX$ Prefix of filenames of main index pages. -$IDXSIZE$ +$IDXSIZE$ Max number of messages that may be listed in index page. -$IDXTITLE$ +$IDXTITLE$ The title of the main index page. -$LASTPG$ +$LASTPG$ Filename of last page in of main index. -$LOCALDATE$ +$LOCALDATE$ Current local date. -$NUMOFIDXMSG$ +$NUMOFIDXMSG$ Number of message listed. -$NUMOFMSG$ +$NUMOFMSG$ Number of messages in the archive. -$NUMOFPAGES$ +$NUMOFPAGES$ Number of index pages. -$OUTDIR$ +$OUTDIR$ Pathname of archive. -$PROG$ +$PROG$ Program name -$TFIRSTPG$ -Filename of first page of thread index. - - -$TIDXFNAME$ +$TIDXFNAME$ Filename of thread index page. -$TIDXLABEL$ +$TIDXLABEL$ Label for thread index page. -$TIDXPREFIX$ +$TIDXPREFIX$ Prefix of filenames of thread index pages. -$TIDXTITLE$ +$TIDXTITLE$ Title of thread index. -$TLASTPG$ -Filename of last page of thread index. - - -$TNEXTPG$ -Filename of next page of the thread index. - - -$TNEXTPGLINK$ -Markup linking to the next page of the thread index. - - -$TPREVPG$ -Filename of the previous page of the thread index. - - -$TPREVPGLINK$ -Markup linking to the previous page of the thread index. - - -$VERSION$ +$VERSION$ Program version. @@ -194,14 +170,17 @@

See Also

TSUBLISTEND, TTOPBEGIN

+

+Page Layout +


-98/03/03 18:20:02
+98/09/19 18:27:19
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tsublistend.html b/doc/resources/tsublistend.html index 949f78b..411483b 100644 --- a/doc/resources/tsublistend.html +++ b/doc/resources/tsublistend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TSUBLISTEND>
markup ...
</TSUBLISTEND>
@@ -60,7 +60,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -83,14 +84,17 @@

See Also

TSUBLISTBEG,

+

+Page Layout +


-98/03/03 18:20:02
+98/09/19 18:27:19
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/tsubsort.html b/doc/resources/tsubsort.html index 0e03b79..40bf566 100644 --- a/doc/resources/tsubsort.html +++ b/doc/resources/tsubsort.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,14 +24,14 @@

Syntax

Element(s)
-

+


<TSUBSORT>
<NOTSUBSORT>

Command-line Option(s)
-

+


-tsubsort
-notsubsort

@@ -76,19 +76,19 @@

See Also

THREAD, TREVERSE, -TSORT CHANGE MODE +TSORT


-98/03/03 18:20:02
+98/09/19 18:27:19
MHonArc
Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/ttitle.html b/doc/resources/ttitle.html index 8a17281..0d91639 100644 --- a/doc/resources/ttitle.html +++ b/doc/resources/ttitle.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<TTITLE>
string
</TTITLE>
@@ -61,7 +61,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -97,10 +98,10 @@

See Also


-98/03/03 18:20:02
+98/09/19 18:27:19
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/ttopbegin.html b/doc/resources/ttopbegin.html index 838ce41..a312f8e 100644 --- a/doc/resources/ttopbegin.html +++ b/doc/resources/ttopbegin.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TTOPBEGIN>
markup ...
</TTOPBEGIN>
@@ -68,88 +68,88 @@

Resource Variables

VariableValue -$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_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_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. +$A_NAME$ +The NAME attribute to use in an anchor for messages to link to the index page. -$DATE$ +$DATE$ The date of the message. -$DDMMYY$ -Message date in dd/mm/yy format. +$DDMMYYYY$ +Message date in dd/mm/yyyy format. -$FROM$ -The complete text in the From: field of the message. +$FROM$ +The complete text in the From: field of the message. -$FROMADDR$ -The e-mail address in the From: field of the message. +$FROMADDR$ +The e-mail address in 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. +$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. -$ICON$ +$ICON$ The context-type sensistive icon. -$ICONURL$ +$ICONURL$ The URL to the context-type sensistive icon. -$MMDDYY$ -Message date in mm/dd/yy format. +$MMDDYYYY$ +Message date in mm/dd/yyyy format. -$MSGGMTDATE$ +$MSGGMTDATE$ GMT date of current message. -$MSGID$ +$MSGID$ The message-id of the message. -$MSGLOCALDATE$ +$MSGLOCALDATE$ Local date of current message. -$MSGNUM$ -The message number assigned to the message by MHonArc (includes leading zeros). +$MSGNUM$ +The message number assigned to the message by MHonArc (includes leading zeros). -$MSGPREFIX$ +$MSGPREFIX$ Filename prefix for message files. -$NUMFOLUP$ +$NUMFOLUP$ Number of explicit follow-ups to the message. -$ORDNUM$ +$ORDNUM$ The current listing number of the message. -$SUBJECT$ +$SUBJECT$ The subject text of the message wrapped in an anchor element that hyperlinks to the message. -$SUBJECTNA$ +$SUBJECTNA$ The subject text of the message without the anchor element. -$YYMMDD$ -Message date in yy/mm/dd format. +$YYYYMMDD$ +Message date in yyyy/mm/dd format. @@ -158,7 +158,7 @@

Resource Variables


Examples

-

MHonArc has several resources for customizing +

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. @@ -240,14 +240,17 @@

See Also

TSUBJECTBEG, TTOPEND

+

+Page Layout +


-98/03/03 18:20:03
+98/09/19 18:27:19
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/ttopend.html b/doc/resources/ttopend.html index b5276a1..3fbc027 100644 --- a/doc/resources/ttopend.html +++ b/doc/resources/ttopend.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element
-

+


<TTOPEND>
markup ...
</TTOPEND>
@@ -59,7 +59,8 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -82,14 +83,17 @@

See Also

TTOPBEGIN

+

+Page Layout +


-98/03/03 18:20:03
+98/09/19 18:27:19
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/umask.html b/doc/resources/umask.html index b5436cd..b892f13 100644 --- a/doc/resources/umask.html +++ b/doc/resources/umask.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -25,7 +25,7 @@

Syntax

Element
-

+


<UMASK>
umask
</UMASK>
@@ -45,8 +45,8 @@

Syntax

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 +MHonArc process. This resource is only valid +on Unix systems. Consult the umask(1) manpage for more information.

@@ -61,14 +61,15 @@

Default Setting


Resource Variables

-

N/A

+

N/A +


Examples

If you want to make sure that the files created by -MHonArc are readable by others, do something like +MHonArc are readable by others, do something like the following:

@@ -93,10 +94,10 @@

See Also


-98/03/03 18:20:03
+98/09/19 18:27:20
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/uselocaltime.html b/doc/resources/uselocaltime.html new file mode 100644 index 0000000..315f179 --- /dev/null +++ b/doc/resources/uselocaltime.html @@ -0,0 +1,111 @@ + + + +MHonArc Resources: USELOCALTIME + + + +
+MHonArc Resource List
+
+ +
+

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 +

+ + +
+
+98/10/10 15:26:50
+ +MHonArc
+Copyright © 1998, Earl Hood, earlhood@usa.net
+
+ + + diff --git a/doc/resources/usinglastpg.html b/doc/resources/usinglastpg.html index ae1aa1a..23c79e0 100644 --- a/doc/resources/usinglastpg.html +++ b/doc/resources/usinglastpg.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -24,7 +24,7 @@

Syntax

Element(s)
-

+


<USINGLASTPG>
<NOUSINGLASTPG>

@@ -47,7 +47,7 @@

Description

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 $LASTPG$) gets updated. +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 @@ -92,13 +92,13 @@

See Also


-98/03/03 18:20:03
+98/09/19 18:27:20
MHonArc
Copyright © 1998, Earl Hood, ehood@medusa.acs.uci.edu
+>Earl Hood, earlhood@usa.net
diff --git a/doc/resources/weekdays.html b/doc/resources/weekdays.html index bcf86b0..b96ec8d 100644 --- a/doc/resources/weekdays.html +++ b/doc/resources/weekdays.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -27,7 +27,7 @@

Syntax

Element
-

+


<WEEKDAYS>
day1:day2:...:Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -102,10 +103,10 @@

See Also


-98/03/03 18:20:04
+98/09/19 18:27:20
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/resources/weekdaysabr.html b/doc/resources/weekdaysabr.html index 8ee0fc1..7b23fc9 100644 --- a/doc/resources/weekdaysabr.html +++ b/doc/resources/weekdaysabr.html @@ -6,7 +6,7 @@
-MHonArc Resource List
+MHonArc Resource List

@@ -27,7 +27,7 @@

Syntax

Element
-

+


<WEEKDAYSABR>
day1:day2:...:Default Setting


Resource Variables

-

N/A

+

N/A +


@@ -103,10 +104,10 @@

See Also


-98/03/03 18:20:04
+98/09/19 18:27:20
MHonArc
-Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
+Copyright © 1997-1998, Earl Hood, earlhood@usa.net
diff --git a/doc/ssbg75.jpg b/doc/ssbg75.jpg new file mode 100644 index 0000000..af7bdec Binary files /dev/null and b/doc/ssbg75.jpg differ diff --git a/doc/stampwb2.gif b/doc/stampwb2.gif new file mode 100644 index 0000000..83408d4 Binary files /dev/null and b/doc/stampwb2.gif differ diff --git a/doc/up.gif b/doc/up.gif new file mode 100644 index 0000000..036d0c6 Binary files /dev/null and b/doc/up.gif differ diff --git a/examples/date.mrc b/examples/date.mrc new file mode 100644 index 0000000..2c99655 --- /dev/null +++ b/examples/date.mrc @@ -0,0 +1,66 @@ + + + + + + + + + + + + +%B %d, %y + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
$MSGLOCALDATE$
$MSGLOCALDATE(CUR;%H:%M)$$SUBJECT$$FROMNAME$$NOTE$
+ diff --git a/examples/def-mime.rc b/examples/def-mime.mrc similarity index 91% rename from examples/def-mime.rc rename to examples/def-mime.mrc index 022fd20..aa790b7 100644 --- a/examples/def-mime.rc +++ b/examples/def-mime.mrc @@ -1,6 +1,6 @@ - - - ->> +>> >> -<< +<< << @@ -231,10 +231,10 @@ $MAIN-TITLE$ (thread) Page $PAGENUM$ of $NUMOFPAGES$ -<<<< -$TPREVPGLINK$ -$TNEXTPGLINK$ ->>>> +<<<< +$PGLINK(TPREV)$ +$PGLINK(TNEXT)$ +>>>>
@@ -252,10 +252,10 @@ $MAIN-TITLE$ (thread) - @@ -301,7 +301,7 @@ $MAIN-TITLE$ (thread) is based on the subject of the message. --> -Possible follow-ups +
  • Possible follow-ups
  • ->> +>> >> @@ -361,7 +361,7 @@ $MAIN-TITLE$ (date) the first page of the index. --> -<< +<< << @@ -384,10 +384,10 @@ $MAIN-TITLE$ (date) -
    <<<< -$TPREVPGLINK$ -$TNEXTPGLINK$ ->>>> +<<<< +$PGLINK(TPREV)$ +$PGLINK(TNEXT)$ +>>>>
    Page $PAGENUM$ of $NUMOFPAGES$
    Page $PAGENUM$ of $NUMOFPAGES$
    <<<< -$PREVPGLINK$ -$NEXTPGLINK$ ->>>> +<<<< +$PGLINK(PREV)$ +$PGLINK(NEXT)$ +>>>>

    @@ -405,10 +405,10 @@ $MAIN-TITLE$ (date) - @@ -562,7 +562,7 @@ $TSLICE$ actually utilized in the derived navigational files. --> -Next +Next @@ -570,7 +570,7 @@ Next -Prev +Prev @@ -578,7 +578,7 @@ Prev -Next +Next @@ -586,7 +586,7 @@ Next -Prev +Prev diff --git a/examples/icons.rc b/examples/icons.mrc similarity index 96% rename from examples/icons.rc rename to examples/icons.mrc index c972909..cfc19e4 100644 --- a/examples/icons.rc +++ b/examples/icons.mrc @@ -1,6 +1,6 @@
    -Last update: $CURDATE$
    +Last update: $LOCALDATE$
    $NUMOFMSG$ messages

    diff --git a/examples/mhonarc.vim b/examples/mhonarc.vim new file mode 100644 index 0000000..8763ac4 --- /dev/null +++ b/examples/mhonarc.vim @@ -0,0 +1,309 @@ +" Vim syntax file +" Language: MHonArc Resource File +" Maintainer: Earl Hood +" Last change: 98/10/10 15:49:20 + +" 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 "\$[^$]*\$" + +" MHonArc tag names +syn keyword mhaTagName contained annotate archive authorbegin authorend authsort +syn keyword mhaTagName contained botlinks charsetconverters conlen datefields +syn keyword mhaTagName contained daybegin dayend dbfile decodeheads definederived +syn keyword mhaTagName contained definevar defrcfile defrcname doc docurl +syn keyword mhaTagName contained editidx excs expireage expiredate +syn keyword mhaTagName contained fieldorder fieldsbeg fieldsend fieldstyles +syn keyword mhaTagName contained fldbeg fldend folrefs folupbegin folupend +syn keyword mhaTagName contained foluplitxt footer force fromfields genidx +syn keyword mhaTagName contained gmtdatefmt gzipexe gzipfiles gziplinks headbodysep +syn keyword mhaTagName contained header htmlext icons idxfname idxlabel +syn keyword mhaTagName contained idxpgbegin idxpgend idxprefix idxsize include +syn keyword mhaTagName contained labelbeg labelend labelstyles listbegin listend +syn keyword mhaTagName contained litemplate localdatefmt lock lockdelay locktries +syn keyword mhaTagName contained mailto mailtourl main maxsize mhpattern mimeargs +syn keyword mhaTagName contained mimefilters modtime months monthsabr msgbodyend +syn keyword mhaTagName contained msgfoot msggmtdatefmt msghead msgidlink +syn keyword mhaTagName contained msglocaldatefmt msgpgbegin msgpgend msgprefix +syn keyword mhaTagName contained msgpgs msgsep multipg news nextbutton nextbuttonia +syn keyword mhaTagName contained nextlink nextlinkia nextpglink nextpglinkia +syn keyword mhaTagName contained nofolrefs nomsgpgs noreverse nothread notreverse +syn keyword mhaTagName contained nouselocaltime +syn keyword mhaTagName contained note noteia notetext otherindexes outdir pagenum +syn keyword mhaTagName contained perlinc prevbutton prevbuttonia prevlink +syn keyword mhaTagName contained prevlinkia prevpglink prevpglinkia quiet readdb +syn keyword mhaTagName contained rcfile refsbegin refsend refslitxt reverse +syn keyword mhaTagName contained rmm scan single sort subjectarticlerxp +syn keyword mhaTagName contained subjectbegin subjectend subjectheader +syn keyword mhaTagName contained subjectreplyrxp subjectstripcode subsort +syn keyword mhaTagName contained tcontbegin tcontend tfoot thead thread +syn keyword mhaTagName contained tidxfname tidxlabel tidxpgbegin tidxpgend +syn keyword mhaTagName contained tidxprefix timezones tindentbegin tindentend +syn keyword mhaTagName contained title tlevels tliend tlinone tlinoneend tlitxt +syn keyword mhaTagName contained tnextbutton tnextbuttonia tnextlink tnextlinkia +syn keyword mhaTagName contained tnextpglink tnextpglinkia toplinks tprevbutton +syn keyword mhaTagName contained tprevbuttonia tprevlink tprevlinkia tprevpglink +syn keyword mhaTagName contained tprevpglinkia treverse tsingletxt tslice +syn keyword mhaTagName contained tslicebeg tsliceend tsort tsubjectbeg +syn keyword mhaTagName contained tsubjectend tsublistbeg tsublistend tsubsort +syn keyword mhaTagName contained ttitle ttopbegin ttopend umask uselocaltime +syn keyword mhaTagName contained usinglastpg weekdays weekdaysabr + +" 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 " + + + + + + + + +

  • $SUBJECTNA$ +
      + + + + +
    + + + + +
  • $FROMNAME$
  • + diff --git a/faq/general.html b/faq/general.html deleted file mode 100644 index 6aa1a47..0000000 --- a/faq/general.html +++ /dev/null @@ -1,275 +0,0 @@ - - - -MHonArc FAQ: General Information - - - -

    -[Prev][Next][TOC][Home] -

    - - - -
    -

    General

    - - - - - - -
    -
    <<<< -$PREVPGLINK$ -$NEXTPGLINK$ ->>>> +<<<< +$PGLINK(PREV)$ +$PGLINK(NEXT)$ +>>>>
    Page $PAGENUM$ of $NUMOFPAGES$
    -
    -

    What is MHonArc?

    -
    - -

    MHonArc is a Perl -program for converting e-mail messages as specified in RFC 822 and -the -MIME standard to HTML. -MHonArc can perform the following tasks:

    - -
      -
    • Convert MH -mail folders or UUCP/Unix style mailboxes into an HTML mail archive. -
    • Add or remove messages to an existing HTML mail archive generated -by MHonArc. -
    • Convert a single message to HTML. -
    - -

    Along with these tasks, MHonArc provides the following: -

    - -
      -
    • A main customizable index for mail messages archived. -
    • A customizable thread index listing messages by thread. -
    • Control over message formatting. -
    • The ability to hook in your own custom message filters. -
    • And other things to numerous to mention here. -
    - - - -
    - -
    -

    What's the latest version of MhonArc?

    -
    - -

    2.2.0 -

    - - -
    - -
    -

    Where can I get MHonArc?

    -
    - -

    The latest information on MHonArc, -and its availability, may be obtained at (http://www.oac.uci.edu/indiv/ehood/mhonarc.html). -

    - - -
    - -
    -

    How much does MHonArc cost?

    -
    - -

    Its FREE! MHonArc is distributed under -the GNU General Public License. A copy of the license is included in -the distribution. Please read it for more information.

    - - - - - - - - - -

    NOTE

    Although MHonArc is freely available, it is NOT -in the public domain. Applicable copyrights still apply. -

    -

    - -

    Of course, the author of MHonArc will not decline any donations -from appreciative users. -

    - - -
    - -
    -

    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@rosat.mpe-garching.mpg.de, 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.

    - -

    To subscribe to the mailing list, send mail to mhonarc-request@rosat.mpe-garching.mpg.de -with the command,

    - -
    -subscribe
    -
    - -

    as the message body. -

    - -

    If you send mail mhonarc@rosat.mpe-garching.mpg.de, your message will be -distributed to all subscribers on the list.

    - -

    The mailing list is archived by -Majordomo. You can also use the WWW to access -the archive (with full text search using -Glimpse) at -(http://www.rosat.mpe-garching.mpg.de/mailing-lists/mhonarc/) -

    - - -
    - -
    -

    How does MHonArc compare to other e-mail converters, like Hypermail?

    -
    - -

    Hypermail -is probably the only other major free program for archiving -e-mail on the Web. There are other free programs available, -but Hypermail and MHonArc appear to be the two major programs -in use. -

    -

    Although Hypermail is a good product, -MHonArc has the following advanatages: -

    - - - - - - -
    NOTE

    If you notice any errors regarding the information related -to Hypermail, please contact the FAQ maintainer. -

    -
    - -
      -
    • MHonArc is still being developed and supported (a mailing -list exists for MHonArc users). I believe Hypermail is no longer -developed, or supported, by EIT. Development of Hypermail is -isolated among individual users and no new home for Hypermail is -known (to my knowledge). -

      -
    • -
    • Support variant mail folders types. Hypermail supports only -UUCP style mailboxes. -

      -
    • -
    • Support for MIME. Hypermail does not support MIME. With -the MIME model, you can extend MHonArc to handle content-types -that it does not support by default. Also, with MIME, non-textual -data like images will be handled properly. -

      -
    • -
    • Page customization. MHonArc gives you complete control -on how pages are formatted. This allows you to tailor your archives -to fit the style of your Web site. Hypermail has a predefined -style for pages generated. Note, Hypermail does support some -simple options that effect how data is converted to HTML. -

      -
    • -
    • Multi-platform support. MHonArc basically runs on any system -that Perl runs. Hypermail is only known to run on Unix systems, -however, there may be a WinNT port. -

      -
    • -
    - -

    The other major difference is that MHonArc is written in -Perl, and Hypermail is written in C (there is also a Lisp version). -There are pros and cons of both languages. In sum, Perl allows -for easier modification, portability, and extensiblility. C -provides better execution speed. -

    - -

    There are other differences, so consult the documentation of -both programs to get a more complete list. Your needs willl -ultimately decide which program is best for you. -

    - - -
    - -
    -

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

    -
    - -

    Take your pick: -

    - - - -
    - - -

    -[Prev][Next][TOC][Home] -

    - - -
    -
    -98/03/03 19:19:45
    - -MHonArc
    -Copyright © 1997-1998, Earl Hood, ehood@medusa.acs.uci.edu
    -
    - - diff --git a/install.cfg b/install.cfg deleted file mode 100644 index 6646741..0000000 --- a/install.cfg +++ /dev/null @@ -1,80 +0,0 @@ -##************************************************************************## -## 98/03/03 19:05:40 -##************************************************************************## - -## Set flags -$dobin = 1; # Set to 1 if exectuables to install -$dolib = 1; # Set to 1 if libraries to install -$dodoc = 1; # Set to 1 if documents to install -$doman = 0; # No manpages to install - -## Set default values -$bindir = (!$MSDOS ? '/usr/local/bin' : 'C:\\BIN'); -$libdir = (!$MSDOS ? '/usr/local/lib/MHonArc' : 'C:\\LIB\\MHONARC'); -$docdir = (!$MSDOS ? '/usr/local/lib/MHonArc/doc' : 'C:\\DOC\\MHONARC'); -$perlprg = (!$MSDOS ? '/usr/local/bin/perl' : 'C:\\BIN\\PERL.EXE'); - - -##************************************************************************## -## SHOULD NOT HAVE TO MODIFY ANYTHING PASSED HERE -##************************************************************************## - -## Set files to install -$relbin = '.'; # Location of source bin files relative to install.me -@binfiles = ( - 'mhonarc', -); -$rellib = 'lib'; # Location of source lib files relative to install.me -@libfiles = ( - 'base64.pl', - 'ewhutil.pl', - 'iso8859.pl', - 'mhamain.pl', - 'mhdb.pl', - 'mhdysub.pl', - 'mhexternal.pl', - 'mhfile.pl', - 'mhidxrc.pl', - 'mhinit.pl', - 'mhopt.pl', - 'mhrcfile.pl', - 'mhrcvars.pl', - 'mhthread.pl', - 'mhtime.pl', - 'mhtxtenrich.pl', - 'mhtxthtml.pl', - 'mhtxtplain.pl', - 'mhtxtsetext.pl', - 'mhtxttsv.pl', - 'mhusage.pl', - 'mhutil.pl', - 'osinit.pl', - 'qprint.pl', - 'readmail.pl', - 'rfc822.pl', -); -$reldoc = 'doc'; # Location of source doc files relative to install.me -@docfiles = ( - 'contacts.html', - 'diagnos.html', - 'intro.html', - 'layout.html', - 'mhonarc.html', - 'quickstart.html', - 'resources', # This is a directory - 'resources.html', - 'monicon.gif', - 'monstamp_t.gif', -); - -## Define intro text -$introText =< to accept -the default values listed in ()'s. - -EndofIntro - -1; diff --git a/install.me b/install.me index 91b2018..ffbbc1f 100755 --- a/install.me +++ b/install.me @@ -1,16 +1,19 @@ -#! /usr/local/bin/perl +#!/opt/perl/bin/perl ##---------------------------------------------------------------------------## ## File: -## @(#) install.me 1.8 97/05/15 16:55:42 @(#) +## @(#) install.me 1.10 98/11/08 15:54:02 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu -## Description: -## Configurable installation program. -## Create an install.cfg file to define variables with the -## values appropriate for the software you want to install. +## Earl Hood, earlhood@usa.net +## Summary: +## Installation program for Perl applications. It is an alternative +## to the MakeMaker/Makefile.PL method for "pure" Perl applications. +## This program provides an interactive method of installation. ## +## Files to install are determined by the FILELIST file. Each +## file to install is listed in the file with a prefix telling +## the installation program the type of file it is. ##---------------------------------------------------------------------------## -## Copyright (C) 1995-1997 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1997,1998 Earl Hood, earlhood@usa.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 @@ -24,237 +27,517 @@ ## ## 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. +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +## 02111-1307, USA ##---------------------------------------------------------------------------## -############################################################################### -package main; -## Check what system we are executing under -{ - local($tmp); - if (($tmp = $ENV{'COMSPEC'}) && ($tmp =~ /[a-zA-Z]:\\/) && (-e $tmp)) { - $'MSDOS = 1; $'MACOS = 0; $'UNIX = 0; - $'DIRSEP = '\\'; $'CURDIR = '.'; - } elsif (defined($MacPerl'Version)) { - $'MSDOS = 0; $'MACOS = 1; $'UNIX = 0; - $'DIRSEP = ':'; $'CURDIR = ':'; - } else { - $'MSDOS = 0; $'MACOS = 0; $'UNIX = 1; - $'DIRSEP = '/'; $'CURDIR = '.'; - } - ## Store name of program - ($'DIRSEPrxp = $'DIRSEP) =~ s/(\W)/\\$1/g; - ($'PROG = $0) =~ s%.*[$DIRSEPrxp]%%o; -} +package InstallMe; -eval 'umask 022' if $UNIX; # Set umask +use strict; +use vars qw( + $MSDOS $MACOS $UNIX $VMS $WINDOWS + $DIRSEP $DIRSEPRX $CURDIR + $PROG $PATHSEP + $OSType + %DirSep %CurDir %PathSep +); +use Config; +use FileHandle; +use Getopt::Long; -##--------------------------------------------------------------------------- -## BEGIN template for install.cfg -## +my $MacCLPrompt; -## Flag if Perl 5 install (use "use lib ..." instead if @INC) -$doPerl5 = 0; +############################################################################### +## OS Configuration Code +############################################################################### -## Set flags -$dobin = 1; # Set to 1 if exectuables to install -$dolib = 1; # Set to 1 if libraries to install -$dodoc = 1; # Set to 1 if documents to install -$doman = 1; # Set to 1 if manpages to install +BEGIN { + %DirSep = ( + macos => ':', + msdos => '\\', + unix => '/', + vms => '/', # ?? + windows => '\\', + ); + %CurDir = ( + macos => ':', # ?? + msdos => '.', + unix => '.', + vms => '.', # ?? + windows => '.', + ); + %PathSep = ( + macos => ';', # ?? + msdos => ';', + unix => ':', + vms => ':', # ?? + windows => ';', + ); + + my $dontknow = 0; + + ## Init variables + $MACOS = 0; $MSDOS = 0; + $UNIX = 0; $VMS = 0; + $WINDOWS = 0; + $DIRSEP = '/'; $CURDIR = '.'; + $PATHSEP = ':'; + + ## See if ostype can be determined from osname in Config + if (defined $^O) { + $_ = $^O; + } else { + require Config; + $_ = $Config::Config{'osname'}; + } -## Set default values -$bindir = (!$MSDOS ? '/usr/local/bin' : 'C:\\BIN'); -$libdir = (!$MSDOS ? '/usr/local/lib' : 'C:\\LIB'); -$docdir = (!$MSDOS ? '/usr/local/lib' : 'C:\\DOC'); -$mandir = (!$MSDOS ? '/usr/local/man' : 'C:\\MAN'); -$perlprg = (!$MSDOS ? '/usr/local/bin/perl' : 'C:\\BIN\\PERL.EXE'); + if (/mac/i) { + $MACOS = 1; + $OSType = 'macos'; + } elsif (/vms/i) { + $VMS = 1; + $OSType = 'vms'; + } elsif (/msdos/i) { + $MSDOS = 1; + $OSType = 'msdos'; + } elsif (/mswin/i or /winnt/i) { + $WINDOWS = 1; $MSDOS = 1; + $OSType = 'windows'; + } elsif (/unix/i or + /aix/i or + /bsd/i or + /dynix/i or + /hpux/i or + /solaris/i or + /sunos/i or + /ultrix/i or + /linux/i) { + $UNIX = 1; + $OSType = 'unix'; + } else { + $dontknow = 1; + } -## Set files to install. File can be a directory. If so, the -## directory is copied to destination + ## 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'; + } -$relbin = '.'; # Location of source bin files relative to install.me -@binfiles = (); + ## MacOS + } elsif (defined($MacPerl::Version)) { + $MACOS = 1; + $OSType = 'macos'; -$rellib = 'lib'; # Location of source lib files relative to install.me -@libfiles = (); + ## Unix (fallback case) + } else { + $UNIX = 1; + $OSType = 'unix'; + } + } -$reldoc = 'doc'; # Location of source doc files relative to install.me -@docfiles = (); + ## Set other variables + $DIRSEP = $DirSep{$OSType}; + if ($MSDOS or $WINDOWS) { + $DIRSEPRX = "\\\\\\/"; + } else { + ($DIRSEPRX = $DIRSEP) =~ s/(\W)/\\$1/g; + } + $CURDIR = $CurDir{$OSType}; + $PATHSEP = $PathSep{$OSType}; -$relman = 'man'; # Location of source manpages relative to install.me -@manfiles = (); + ## Store name of program + ($PROG = $0) =~ s%.*[$DIRSEPRX]%%o; -## Define intro text -$introText =< to accept -the default values listed in ()'s. + ## Flag to prompt for command-line options on a Mac + $MacCLPrompt = 1; +} -EndofIntro +##---------------------------------------------------------------------------## +## CLinit() initializes @ARGV. Currently, it does nothing under +## MSDOS and Unix. ## -## END template for install.cfg -##--------------------------------------------------------------------------- - -##--------------------------------------------------------------------------- -## Main routine -##--------------------------------------------------------------------------- -{ +## 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 ); + } +} -$Batch = 0; -$CfgFile = "install.cfg"; -if ($ARGV[0] =~ /^batch$/i) { - shift(@ARGV); - $Batch = 1; +##---------------------------------------------------------------------------## +## 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, @_); } -if ($ARGV[0] =~ /\S/) { - $CfgFile = shift(@ARGV); + +##---------------------------------------------------------------------------## +## 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]); } -require $CfgFile || die "Unable to require $CfgFile\n"; +##---------------------------------------------------------------------------## +## is_absolute_path() returns true if a string is an absolute path +## +sub is_absolute_path { -{ package uio; - @LastText = (); ## Cached text - $use_handler = 1; ## Flag to use private CONT signal handler + 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 } -if ($Batch) { ## Check for batch mode - print STDOUT "Batch mode install ...\n"; +############################################################################### +## Initialize Globals +############################################################################### + +my %Files = (); +my %DefValues = (); +my %OptValues = (); -} else { ## Interactive mode - print STDOUT $introText; - &print_note("Make sure all pathnames are absolute."); - &pause(); +############################################################################### +## Parse Command-line +############################################################################### - $dobin = 0 unless scalar(@binfiles); - $dolib = 0 unless scalar(@libfiles); - $dodoc = 0 unless scalar(@docfiles); - $doman = 0 unless scalar(@manfiles); - do { - ## Get installation directories and path to Perl +{ + CLinit(); + my $ret = + GetOptions(\%OptValues, + qw( + batch + prefix=s + binpath=s + docpath=s + libpath=s + manpath=s + perl=s + filelist=s + nobin + nodoc + nolib + noman + + help)); + + if (!$ret or $OptValues{"help"}) { + usage(); + exit !$ret; + } + + my $cfg_prefix = $Config{'prefix'}; + $DefValues{'binpath'} = $Config{'installbin'}; + $DefValues{'libpath'} = $Config{'installsitelib'}; + $DefValues{'manpath'} = $Config{'installman1dir'}; + if (defined($OptValues{'prefix'})) { + $DefValues{'binpath'} =~ s/^\Q$cfg_prefix/$OptValues{'prefix'}/o; + $DefValues{'libpath'} =~ s/^\Q$cfg_prefix/$OptValues{'prefix'}/o; + $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'} +} + +############################################################################### +## Do It +############################################################################### + +{ + my($dobin, $dolib, $dodoc, $doman); + + ## Get installation files + ## ---------------------- + read_manifest($OptValues{'filelist'} || $DefValues{'filelist'}, + \%Files); + + $DefValues{'docpath'} .= $DIRSEP . $Files{'name'}[0] + if $Files{'name'}[0]; + $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; + + ## 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) { - $tmp = &prompt_user_def("Perl executable", $perlprg, 0, 1); - last if -x $tmp; - print STDERR "$tmp not executable\n"; + $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'} = ''; } - $perlprg = $tmp; - if ($dobin) { - do { - $tmp = &interpolate_path( - &prompt_user_def("Location to install programs", - $bindir, 0, 1)); - } while (!&create_dir($tmp)); - $bindir = $tmp; + } + + ## Install files + ## ------------- + print STDERR "($OptValues{'perl'})\n"; + 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($OptValues{'binpath'}, 1) <= 0) { die "\n"; } + foreach (@{$Files{'bin'}}) { + print STDOUT " $_ => "; + ($file = $_) =~ s%.*/%%o; + $destfile = join('', $OptValues{'binpath'}, $DIRSEP, $file); + print STDOUT $destfile, "\n"; + cp($_, $destfile, $plprefix, $WINDOWS); + eval q{chmod 0755, $destfile;}; } - if ($dolib) { - do { - $tmp = &interpolate_path( - &prompt_user_def("Location to install libraries", - $libdir, 0, 1)); - } while (!&create_dir($tmp)); - $libdir = $tmp; + } + if ($dolib) { + print STDOUT qq(Installing lib files to "$OptValues{'libpath'}":\n); + if (create_dir($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($_, $destfile); } - if ($dodoc) { - if (&ask_question("Install documentation", 1)) { - do { - $tmp = &interpolate_path( - &prompt_user_def("Location to install docs", - $docdir, 0, 1)); - } while (!&create_dir($tmp)); - $docdir = $tmp; - } else { - $dodoc = 0; - } + } + if ($dodoc) { + print STDOUT qq(Installing docs to "$OptValues{'docpath'}":\n); + if (create_dir($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($_, $destfile); } - if ($doman) { - if (&ask_question("Install manpages", 1)) { - do { - $tmp = &interpolate_path( - &prompt_user_def("Location to install manpages", - $mandir, 0, 1)); - } while (!&create_dir($tmp)); - $mandir = $tmp; - } else { - $doman = 0; - } + } + if ($doman) { + my $sect; + print STDOUT qq(Installing manpages to "$OptValues{'manpath'}":\n); + if (create_dir($OptValues{'manpath'}, 1) <= 0) { die "\n"; } + foreach (@{$Files{'man'}}) { + print STDOUT " $_ => "; + ($file = $_) =~ s%.*/%%o; + ($sect = $file) =~ s%.*\.%%o; + $destfile = join('', $OptValues{'manpath'}, + $DIRSEP, "man", $sect, $DIRSEP, $file); + print STDOUT $destfile, "\n"; + cp($_, $destfile); } - print STDOUT "\n", - "You've specified the following:\n", - "\tPerl location: $perlprg\n"; - print STDOUT "\tProgram directory: $bindir\n" if $dobin; - print STDOUT "\tLibrary directory: $libdir\n" if $dolib; - print STDOUT "\tDoc directory: $docdir\n" if $dodoc; - print STDOUT "\tMan directory: $mandir\n" if $doman; - } while (!&ask_question("Is this correct", 1)); -} - -## Install files -$perlprg = "#!$perlprg\n"; -if ($dolib) { - if ($doPerl5) { - $perlprg .= "use lib '$libdir';\n"; - } else { - $perlprg .= "unshift(\@INC, '$libdir');\n"; } } -if ($dobin && @binfiles) { - print STDOUT "Installing the following into $bindir\n"; - foreach $file (@binfiles) { - ($destfile = $file) =~ s%.*$DIRSEPrxp%%o; - &cp("$relbin$DIRSEP$file", "$bindir$DIRSEP$destfile", $perlprg); - print STDOUT "\t", $file, "\n"; - eval 'chmod 0755, "$bindir$DIRSEP$file"'; +############################################################################### +## 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; } -if ($dolib && @libfiles) { - print STDOUT "Installing the following into $libdir\n"; - foreach $file (@libfiles) { - ($destfile = $file) =~ s%.*$DIRSEPrxp%%o; - &cp("$rellib$DIRSEP$file", "$libdir$DIRSEP$destfile"); - print STDOUT "\t", $file, "\n"; + +##------------------------------------------------------------------------ +## 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; } -if ($dodoc && @docfiles) { - print STDOUT "Installing the following into $docdir\n"; - foreach $file (@docfiles) { - ($destfile = $file) =~ s%.*$DIRSEPrxp%%o; - &cp("$reldoc$DIRSEP$file", "$docdir$DIRSEP$destfile"); - print STDOUT "\t", $file, "\n"; + +##------------------------------------------------------------------------ +## 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; } -if ($doman && @manfiles) { - print STDOUT "Installing the following into $mandir\n"; - local($sect) = (1); - foreach $file (@manfiles) { - ($destfile = $file) =~ s%.*$DIRSEPrxp%%o; - ($sect) = $destfile =~ m%\.([\d\w]+)$%; - &create_dir("$mandir${DIRSEP}man${sect}", 1); - &cp("$relman$DIRSEP$file", - "$mandir${DIRSEP}man${sect}${DIRSEP}$destfile"); - print STDOUT "\t$file -> $mandir${DIRSEP}man${sect}\n"; + +##------------------------------------------------------------------------ +## 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($value, 1) > 0; + } else { + my $stat; + while (1) { + $value = interpolate_path(prompt_user($prompt, $default)); + $stat = create_dir($value); + if ($stat > 0) { last; } + if ($stat == 0) { next; } + } } + $value; } -exit 0; -} +##------------------------------------------------------------------------ +## create_dir() creates a directory path +## +sub create_dir { + my $d = shift; # Directory path + my $noask = shift; # Don't ask to create flag -##--------------------------------------------------------------------------- -## Main subroutines -##--------------------------------------------------------------------------- + if (-e $d) { + if (-w $d) { return 1; } + warn qq/"$d" is not writable\n/; + return -1; + } -sub create_dir { - local($d) = shift; - local($noask) = shift; - local(@a) = grep($_ ne '', split(/$'DIRSEPrxp/o, $d)); - local($path, $dir); + my(@a) = grep($_ ne '', split(/[$DIRSEPRX]/o, $d)); + my($path, $dir, $curpath); - if ((! -e $d) && (!$noask)) { - return 0 unless &ask_question(qq{$d does not exist. Create}, 1); + if (!$noask) { + return 0 unless prompt_user_yn(qq{"$d" does not exist. Create}, 1); } if ($MSDOS) { - if ($d =~ m%^\s*([a-zA-Z]:)?[/\\]%) { + if ($d =~ m%^\s*(?:[a-zA-Z]:)?[/\\]%) { $path = shift @a; } else { $path = $CURDIR; @@ -267,490 +550,188 @@ sub create_dir { } } foreach $dir (@a) { - if (! -e "$path$DIRSEP$dir") { - if (!mkdir("$path$DIRSEP$dir", 0777)) { - print STDERR "Unable to create $path$DIRSEP$dir: $!\n"; - return 0; + $curpath = "$path$DIRSEP$dir"; + if (! -e $curpath) { + if (!mkdir($curpath, 0777)) { + warn qq/Unable to create "$curpath": $!\n/; + return -1; } - } elsif (! -d "$path$DIRSEP$dir") { - print STDERR "$dir is not a directory\n"; - return 0; + } elsif (! -d $curpath) { + warn qq/"$curpath" is not a directory\n/; + return -1; } $path .= $DIRSEP . $dir; } if (! -w $d) { - print STDERR "$d not writable\n"; - return 0; + warn qq/"$d" not writable\n/; + return -1; } 1; } -##--------------------------------------------------------------------------- +##------------------------------------------------------------------------ +## interpolate_path() expands any special characters in a +## pathname. +## sub interpolate_path { - local($path) = shift; + my($path) = shift; - $path =~ s/^~/$ENV{'HOME'}/; + $path =~ s/^~/$ENV{'HOME'}/e; $path =~ s/\$(\w+)/$ENV{$1}/ge; + $path =~ s/\$\{(\w+)\}/$ENV{$1}/ge; $path; } -##--------------------------------------------------------------------------- +##------------------------------------------------------------------------ +## cp() copies a file, or directory. +## sub cp { - local($src, $dst, $prepend) = @_; + my($src, $dst, $prepend, $mkbat) = @_; if (-d $src) { if (! -e $dst) { - mkdir($dst,0777) || die "Unable to create $dst: $!\n"; + mkdir($dst,0777) or die "Unable to create $dst: $!\n"; } - opendir(DIR, $src) || die "Unable to open $src: $!\n"; - @files = grep(!/^(sccs|\.|\..)$/i, readdir(DIR)); + 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); + cp($srcpn, $dstpn, $prepend, $mkbat); } else { - &cpfile($srcpn, $dstpn, $prepend); + cpfile($srcpn, $dstpn, $prepend, $mkbat); } } } else { - &cpfile($src, $dst, $prepend); + cpfile($src, $dst, $prepend, $mkbat); } } -##--------------------------------------------------------------------------- +##------------------------------------------------------------------------ +## cpfile() copies a file. Any text in $prepend will be prepending +## to the destination file. +## sub cpfile { - local($src, $dst, $prepend) = @_; + my($src, $dst, $prepend, $mkbat) = @_; + my($bflag); - open(SRC, $src) || die "Unable to open $src: $!\n"; - open(DST, "> $dst") || die "Unable to create $dst: $!\n"; - if (-B $src) { binmode( SRC ); binmode( DST ); } + 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) { + 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 + } if ($prepend) { print DST $prepend; } print DST ; - close(SRC); - close(DST); -} + if (!$bflag && $mkbat) { + print DST <<'EndOfBat'; +__END__ +:endofperl +EndOfBat + } -############################################################################### -##---------------------------------------------------------------------------## -## File: -## @(#) uio.pl 1.2 97/03/11 12:29:46 @(#) -## Author: -## Earl Hood ehood@medusa.acs.uci.edu -## Description: -## This package contains subroutines for user input routines and -## screen output routines. -##---------------------------------------------------------------------------## -## Copyright (C) 1994-1997 Earl Hood, ehood@medusa.acs.uci.edu -## -## 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. -##---------------------------------------------------------------------------## - -if (!$uio'NoDate) { - # date.pl is needed for get_later_date() - require 'date.pl' || warn "Unable to require date.pl\n"; -} - -package uio; - -##---------------------------------------------------------------------------## -## The following routines are defined in this package. All routines -## work off of STDOUT. -## sub main'ask_question -- ask yes/no question -## sub main'do_num_menu -- autonumber menu items & print -## sub main'flush -- flush filehandle -## sub main'get_char_choice -- get char that is in list -## sub main'get_later_date -- Get date later than some date -## sub main'get_lc_string -- get string converted to lowercase -## sub main'get_string -- get string -## sub main'pause -- pause until hit -## sub main'print_error -- print error message -## sub main'print_info -- print information message -## sub main'print_menu -- print a menu to screen -## sub main'print_note -- print note message -## sub main'print_warning -- print warning message -## sub main'prompt_user -- prompt user for string -## sub main'prompt_user_def -- prompt_user() with default value -## -## Private routines. -## sub handler -- private SIGCONT handler -## sub print_message -- print typed message to screen -## sub print_txt -- print text and cache it -## sub reset_handler -- unregister handler() -## sub set_handler -- register handler() -## -## Notes: -## For the pause() and prompt_user*() routines, a signal handler -## is registered to handle the SIGCONT signal. This enables the -## routines to redisplay the prompt after the program has been -## suspended and continued while prompting the user for input. -## The handler has to redisplay the text, therefore the mentioned -## routines use the print_txt() for caching the prompt text. -## -## When the signal handler is registered, any existing handler for -## SIGCONT is stored and is called first before redisplaying the -## cached text. Uio's signal handler can be disabled if the -## variable $uio'use_handler is set to zero. By default, the -## value is one. More inforamtion is below in the various -## subroutine descriptions. -##---------------------------------------------------------------------------## - - ##------------------## - ## Global variables ## - ##------------------## -##--------------------------------------------------------------------------- - -@LastText = (); ## Cached text -$use_handler = 1; ## Flag to use private CONT signal handler -$term_io_bug = 0; ## Flag if bogus reads must be done when - ## consective suspend/foregrounds are done -$ext_sigcont; ## External CONT handler - -##--------------------------------------------------------------------------- - - ##---------------------------------## - ## Private subroutine declerations ## - ##---------------------------------## -##--------------------------------------------------------------------------- -## print_txt() prints @_ to STDOUT. It also makes a copy of @_ to -## an array called @LastText. Any outside package can access it -## using uio'LastText. This is useful for redisplaying text -## after the program has been suspended and continued. -## -sub print_txt { - print STDOUT @_; @LastText = @_; + close(SRC); + close(DST); } -##--------------------------------------------------------------------------- -## This routine is used by print_{error, info, note, warning} -## routines to output an informitive message to STDOUT. +##------------------------------------------------------------------------ +## 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 print_message { - local($type, $mesg) = ($_[0], join("", @_[1 .. $#_])); - local($head) = sprintf(" %9s", "$type "); - local($indent) = " " x 13; - local($i, $dashes, @array); - - @array = split(/\n/, $mesg); - foreach (@array) { $i = length($_) if length($_) > $i; } - $dashes = " " x 4 . "-" x ($i+10); - $mesg = join("\n", @array); - $* = 1; - $mesg =~ s/\n/\n$indent/g; - $mesg = $head . $mesg; - print STDOUT "$dashes\n", "$mesg\n", "$dashes\n"; - $* = 0; -} - -##--------------------------------------------------------------------------- -## handler() is the private signal handler for the uio package. -## It's used to when SIGCONT is caught for redisplay cached text. -## The external handler is called if defined. +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 handler { - if ($ext_sigcont ne 'IGNORE' && $ext_sigcont ne 'DEFAULT' && - $ext_sigcont ne "") { &$ext_sigcont(@_); } - print STDOUT @LastText; - &'flush(STDOUT); - push(@Redo, 1) if $term_io_bug; -} - -##--------------------------------------------------------------------------- -## set_handler() sets the private CONT signal handler. -## -sub set_handler { - return unless $use_handler; - $ext_sigcont = $SIG{'CONT'}; - $SIG{'CONT'} = "uio'handler"; +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; } -##--------------------------------------------------------------------------- -## reset_handler() restores the external handler +##---------------------------------------------------------------------------## ## -sub reset_handler { - return unless $use_handler; - $SIG{'CONT'} = $ext_sigcont; +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 + -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 } -##--------------------------------------------------------------------------- - - ##--------------------------------## - ## Public subroutine declerations ## - ##--------------------------------## -##--------------------------------------------------------------------------- -## print_menu() a tabular list of items in a "menu" type format. The -## list is printed in column major order. -## Parameters: -## $title : The title of the menu if not null. -## $cols : Number of columns in menu. -## $box : Boolean flag for drawing a box around menu. -## $sep : Separator string between columns. -## @menu_items : Array of menu items. -## In box mode the title appears above the box. Care must be taken -## in the number of columns chosen when menu items string lengths get -## long. This routine assumes there is plenty of screen space to -## print out the menu. -## -sub main'print_menu { - local($title, $cols, $box, $sep, @menu_items) = @_; - local($i, $j, $indent, $sp, $fmt, $lside, $rside); - - $sp = " "; $indent = $sp x 8; - foreach (@menu_items) { $i = length($_) if length($_) > $i; } - $fmt = "%-${i}s"; - $dashes = "-" x (($cols-1)*length($sep) + $cols*$i + 2); - $lines = ($#menu_items+1)/$cols; - $lines = ($lines == int($lines) ? $lines : int($lines)+1); - print STDOUT "$indent$title\n" if $title ne ""; ## Print $title - print STDOUT "$indent $dashes\n" if $box; ## Print top of box - $lside = ($box ? "| " : " "); - $rside = ($box ? " |\n" : " \n"); - for ($i=0; $i < $lines; $i++) { - print STDOUT $indent, $lside; - for ($j=0; $j < $cols; $j++) { - print STDOUT sprintf($fmt, $menu_items[$i + $j*$lines]); - print STDOUT $sep if $j < $cols-1; - } - print STDOUT $rside; - } - print STDOUT "$indent $dashes\n" if $box; -} -##--------------------------------------------------------------------------- -## do_num_menu() automatically generates a numbered list of items -## for selection. The routine returns the string item that is -## selected. This routine also appends a "Other" option and -## if selected, will prompt for a user defined string. -## -sub main'do_num_menu { - local($title, $prompt, $isother, $otherprompt, $otherdef, $cols, - @array) = @_; - local(@menu_items) = @array; - local($i, $tmp); - - ## Prepend numbers to items ## - for ($i=0; $i <= $#menu_items; $i++) { - $menu_items[$i] = $i+1 . " = \"$menu_items[$i]\""; - } - ## Add other selection if needed ## - push(@menu_items, $i+1 . " = Other") if $isother; - ## Print menu ## - print STDOUT "\n$title:\n\n"; - &'print_menu("", $cols, 0, " " x 5, @menu_items); - ## Get selection ## - while (1) { - $tmp = &'prompt_user_def("\n$prompt", "1", 0, 0); - last if ($tmp >= 1 && $tmp <= $#menu_items+1); - &'print_error("Invalid selection -- $tmp"); - } - ## Determine selection ## - if ($isother && $tmp == $#menu_items+1) { - $tmp = &'prompt_user_def(" Other: $otherprompt", $otherdef, 1, 0); - } - else { $tmp = $array[$tmp-1]; } - $tmp; -} -##--------------------------------------------------------------------------- -## print_*() routines to print a message of type '*' to the screen. -## -sub main'print_error { &print_message("ERROR", @_); } -sub main'print_info { &print_message("Info:", @_); } -sub main'print_note { &print_message("Note:", @_); } -sub main'print_warning { &print_message("WARNING", @_); } -##--------------------------------------------------------------------------- -## Get string from STDIN and lowercase it. -## called "get_lc_string". -## -sub main'get_lc_string { - local($tmp); - $tmp = ; - if ($term_io_bug) { while (shift(@Redo)) { $tmp = ; } } - chop $tmp; - $tmp =~ tr/A-Z/a-z/; - $tmp; -} -##--------------------------------------------------------------------------- -## Get string from STDIN. -## -sub main'get_string { - local($tmp); - $tmp = ; - if ($term_io_bug) { while (shift(@Redo)) { $tmp = ; } } - chop $tmp; - $tmp; -} -##--------------------------------------------------------------------------- -## Pause output until CR is hit. -## -sub main'pause { - &set_handler(); - local($tmp); - &print_txt("\nHit to continue ... "); - $tmp = ; - if ($term_io_bug) { while (shift(@Redo)) { $tmp = ; } } - &reset_handler(); -} -##--------------------------------------------------------------------------- -## Prompt user for a string of input. This routine appends a "->" -## to the prompt string. All leading and trailing whitespaces are -## removed from the input string before returned. -## -sub main'prompt_user { - &set_handler(); - local($prompt, $nonnull, $return) = @_; - local($tmp); - $prompt .= "\n" if $return; - $prompt .= " -> "; - while (1) { - &print_txt($prompt); - $tmp = &'get_string(); - &'print_error("Entry cannot be blank."), next - if $nonnull && $tmp =~ /^\s*$/; - $tmp =~ s/^\s*(.*[^\s])\s*$/\1/; ## strip beginning/trailing spaces - last; - } - &reset_handler(); - $tmp; -} -##--------------------------------------------------------------------------- -## Like prompt_user() but a default choice is given. -## -sub main'prompt_user_def { - &set_handler(); - local($prompt, $default, $nonnull, $return) = @_; - local($tmp); - $prompt .= " (\"$default\")"; - $prompt .= "\n" if $return; - $prompt .= " -> "; - while(1) { - &print_txt($prompt); - $tmp = &'get_string(); - $tmp = $default if $tmp =~ m/^\s*$/; - &'print_error("Entry cannot be blank."), next - if $nonnull && $tmp =~ /^\s*$/; - $tmp =~ s/^\s*(.*[^\s])\s*$/\1/; - last; - } - &reset_handler(); - $tmp; -} -##--------------------------------------------------------------------------- -## ask_question() asks a yes/no question. $default signifies the -## default response: 1 = yes, 0 = no. The default response and -## a '?' are appended to the prompt. -## -sub main'ask_question { - &set_handler(); - local($prompt, $default) = @_; - local($tmp, $ret); - if ($default) { $prompt .= " (\"y\")"; } - else { $prompt .= " (\"n\")"; }; - while(1) { - &print_txt("$prompt? "); - $tmp = &'get_lc_string(); - $ret = 1, last if ($tmp =~ /^\s*$/ && $default); - $ret = 0, last if ($tmp =~ /^\s*$/ && !$default); - $ret = 1, last if ($tmp =~ /^\s*y\s*$/ || $tmp =~ /^\s*yes*\s*$/); - $ret = 0, last if ($tmp =~ /^\s*n\s*$/ || $tmp =~ /^\s*no*\s*$/); - } - &reset_handler(); - $ret; -} -##--------------------------------------------------------------------------- -## get_char_choice() gets a single character response. Valid -## character responses are specified by @chars. A default can -## be specified by $default, and it is the choice if CR is hit. -## All whitespaces (except \r and \n) and non-specified chars -## are ignored. This function returns with choice when a valid -## character is hit. Character choices are case-insensitive. -## -## The terminal is put into raw mode for get_char_choice() to -## perform its task. Because of this, SIGINT, SIGQUIT, and -## SIGTERM are temporarily ignored until a valid character is -## hit. The original signal handlers are restored before the -## functions returns. -## -sub main'get_char_choice { - local($default, @chars) = @_; - local($in, $return); - local($choices) = join(" ", @chars); - $choices =~ tr/A-Z/a-z/; - local($sigint, $sigquit, $sigterm, $sigtstp) = - ($SIG{'INT'}, $SIG{'QUIT'}, $SIG{'TERM'}, $SIG{'TSTP'}); - - &'flush(STDOUT); - $SIG{'INT'} = 'IGNORE'; $SIG{'QUIT'} = 'IGNORE'; $SIG{'TERM'} = 'IGNORE'; - $SIG{'TSTP'} = 'IGNORE'; - system("stty raw -echo"); ## Set terminal in raw mode - while (1) { - $in = getc(STDIN); - $return = $default, last if $default ne "" && - ($in eq "\r" || $in eq "\n"); - next if $in =~ /\s/; - $in =~ tr/A-Z/a-z/; - $in =~ s/([\[\]\(\)\.\^\{\}\$\*\?\+\\\|])/\\\1/g; - $return = $in, last if $choices =~ /$in/; - } - system("stty -raw echo"); ## Restore terminal - print STDOUT "$return\n"; ## Output selection - $SIG{'INT'} = $sigint; ## Restore signal handler - $SIG{'QUIT'} = $sigquit; ## Restore signal handler - $SIG{'TERM'} = $sigterm; ## Restore signal handler - $SIG{'TSTP'} = $sigtstp; ## Restore signal handler - $return; -} -##--------------------------------------------------------------------------- -## flush() flushes the buffer of passed in filehandle. Copied from -## "flush.pl". -## -sub main'flush { - local($old) = select(shift); - $| = 1; - print ""; - $| = 0; - select($old); -} -##--------------------------------------------------------------------------- -## get_later_date() retrieves from STDIN a date later than the -## julian date $ljdate. $prompt is the user prompt and $default -## is the default response. This routine uses the julian date -## routines defined in "date.pl". "date.pl" must be required -## somewhere in the Perl program for this routine to work. -## -sub main'get_later_date { - local($prompt, $default, $ljdate) = @_; - local($tmp, $i, $m, $d, $y, $wd); - while (1) { - $tmp = &'prompt_user_def($prompt, $default, 1, 0); - if ($tmp !~ m!^(\d{1,2})[-/](\d{1,2})[-/](\d{2}|\d{4})$!) { - &'print_error("Incorrect date specification -- $tmp\n", - "Valid date formats: 02-28-94, 4/1/94, 12-25-1994."); - } - else { - $i = &'jday($1, $2, ($3 > 1900 ? $3 : "19".$3)); - last if $i > $ljdate; - ($m, $d, $y, $wd) = &'jdate($ljdate); - &'print_error("Date must be later than $m/$d/$y."); - } - } - $tmp; -} -##--------------------------------------------------------------------------- -1; ## end package diff --git a/lib/ewhutil.pl b/lib/ewhutil.pl index 385b86a..d8e6618 100644 --- a/lib/ewhutil.pl +++ b/lib/ewhutil.pl @@ -1,12 +1,12 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) ewhutil.pl 2.1 98/03/02 20:24:24 +## @(#) ewhutil.pl 2.2 98/08/10 23:19:14 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Generic utility routines ##---------------------------------------------------------------------------## -## Copyright (C) 1996-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1996-1998 Earl Hood, earlhood@usa.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 @@ -29,9 +29,9 @@ ## sub remove_dups { local(*array) = shift; - local(%dup); - @array = grep($dup{$_}++ < 1, @array); - %dup = (); + return () unless scalar(@array); + my %dup = (); + @array = grep(!$dup{$_}++, @array); } ##--------------------------------------------------------------------------- @@ -43,22 +43,31 @@ sub numerically { ##--------------------------------------------------------------------------- ## "Entify" special characters -## + sub htmlize { # Older name - local($txt) = $_[0]; + my($txt) = $_[0]; $txt =~ s/&/\&/g; $txt =~ s/>/>/g; $txt =~ s//>/g; $txt =~ s/); + } + 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) { + $QUIET = 0; + 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; + } + if ($THREAD) { + &compute_threads(); + &write_thread_index($IdxPageNum); + } else { + &write_main_index($IdxPageNum); + } return 1; } - ## Following (may) cause changes to an archive - local($mesg, $tmp, $index, $sub, $from, $i, $date, $fh, $tmp2); - local(@array, @array2); + ## Get here, we are processing mail folders + + local($mesg, $tmp, $index, $sub, $from, $i, $date, $fh); local(%fields); $i = $NumOfMsgs; ##-------------------## ## Read mail folders ## ##-------------------## - ## Just editing pages - if ($EDITIDX || $IDXONLY) { + if ($EDITIDX) { print STDOUT "Editing $OUTDIR layout ...\n" unless $QUIET; - ## Removing messages - } elsif ($RMM) { - print STDOUT "Removing messages from $OUTDIR ...\n" - unless $QUIET; - &rmm(@ARGV); - ## Adding a single message } elsif ($ADDSINGLE) { print STDOUT "Adding message to $OUTDIR\n" unless $QUIET; @@ -157,7 +272,8 @@ sub doit { $handle, $index, $header, - *fields); + *fields, + $NoMsgPgs); } ## Adding/converting mail{boxes,folders} @@ -203,7 +319,8 @@ sub doit { $fh, $index, $header, - *fields); + *fields, + $NoMsgPgs); # Check if conserving memory if ($SLOW && $DoArchive) { &output_mail($index, 1, 1); @@ -245,7 +362,8 @@ sub doit { $fh, $index, $header, - *fields); + *fields, + $NoMsgPgs); if ($SLOW && $DoArchive) { &output_mail($index, 1, 1); $Update{$IndexNum{$index}} = 1; @@ -268,64 +386,95 @@ sub doit { } ## Check if there are any new messages - if (!$EDITIDX && !$IDXONLY && $i == $NumOfMsgs) { + if (!$EDITIDX && ($i == $NumOfMsgs)) { print STDOUT "\nNo new messages\n" unless $QUIET; return 1; } - ##---------------------------------------------## - ## Setup data structures for final HTML output ## - ##---------------------------------------------## + ## Write pages + &write_pages(); + 1; +} + +##--------------------------------------------------------------------------- +## write_pages writes out all archive pages and db +## +sub write_pages { + local($i, $key, $index, $tmp, $tmp2); + my(@array2); ## Remove old message if hit maximum size or expiration - if (!$IDXONLY && (($MAXSIZE && ($NumOfMsgs > $MAXSIZE)) || - $ExpireTime || $ExpireDateTime)) { + 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. - @array = sort increase_index keys %Subject; + @MListOrder = sort_messages(); + @Index2MLoc{@MListOrder} = (0 .. $#MListOrder); - &ign_signals(); # Ignore termination signals + # Ignore termination signals + &ign_signals(); - while ($index = shift(@array)) { + ## Expiration based upon time + my($mloc, $tloc); + foreach $index (sort increase_index keys %Subject) { last unless ($MAXSIZE && ($NumOfMsgs > $MAXSIZE)) || (&expired_time(&get_time_from_index($index))); &delmsg($index); - $IdxMinPg = 0; - $TIdxMinPg = 0; - $Update{$IndexNum{$array[0]}} = 1; # Update next - foreach (split(/$bs/o, $FollowOld{$index})) { # Update any replies - $Update{$IndexNum{$_}} = 1; + + # Mark messages that need to be updated + if (!$NoMsgPgs) { + $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 (split(/$bs/o, $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); } - $Update{$IndexNum{$TListOrder[$Index2TLoc{$index}-1]}} = 1; - $Update{$IndexNum{$TListOrder[$Index2TLoc{$index}+1]}} = 1; } } - ## Set MListOrder + ## Reset MListOrder @MListOrder = &sort_messages(); + @Index2MLoc{@MListOrder} = (0 .. $#MListOrder); - ## Compute follow up messages with side-effect of setting %Index2MLoc - $i = 0; - foreach $index (@MListOrder) { - $Index2MLoc{$index} = $i; $i++; - - $FolCnt{$index} = 0 unless $FolCnt{$index}; - if (@array2 = split(/$X/o, $Refs{$index})) { - $tmp2 = $array2[$#array2]; - next unless defined($IndexNum{$MsgId{$tmp2}}); - $tmp = $MsgId{$tmp2}; - if ($Follow{$tmp}) { $Follow{$tmp} .= $bs . $index; } - else { $Follow{$tmp} = $index; } - $FolCnt{$tmp}++; - } - } + ## 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 (!$IDXONLY && $ADD) { + if ($ADD) { if ($UPDATE_ALL) { foreach $index (@MListOrder) { $Update{$IndexNum{$index}} = 1; } $IdxMinPg = 0; @@ -388,13 +537,7 @@ sub doit { ## Compute total number of pages $i = $NumOfPages; - if ($MULTIIDX && $IDXSIZE) { - $NumOfPages = int($NumOfMsgs/$IDXSIZE); - ++$NumOfPages if ($NumOfMsgs/$IDXSIZE) > $NumOfPages; - $NumOfPages = 1 if $NumOfPages == 0; - } else { - $NumOfPages = 1; - } + &compute_page_total(); ## Update all pages for $LASTPG$ if ($UsingLASTPG && ($i != $NumOfPages)) { @@ -409,188 +552,94 @@ sub doit { print STDOUT "\n" unless $QUIET; ## Write indexes and mail - if (!$IDXONLY) { - &write_mail(); - &write_main_index() if $MAIN; - &write_thread_index() if $THREAD; + &write_mail() unless $NoMsgPgs; + &write_main_index() if $MAIN; + &write_thread_index() if $THREAD; - } elsif ($THREAD) { - &write_thread_index(); - - } elsif ($MAIN) { - &write_main_index(); - } + ## Write database + print STDOUT "Writing database ...\n" unless $QUIET; + &output_db($DBPathName); ## Write any alternate indexes - if (!$IDXONLY) { - - ## Write database - print STDOUT "Writing database ...\n" unless $QUIET; - &output_db($DBPathName); - - $IdxMinPg = 0; $TIdxMinPg = 0; - - foreach $tmp (@OtherIdxs) { - $THREAD = 0; - $tmp = "${OUTDIR}${DIRSEP}$tmp" - unless ($tmp =~ m%^/%) || (-e $tmp); - - if (&read_fmt_file($tmp)) { - if ($THREAD) { - &write_thread_index(); - } else { - &write_main_index(); + $IdxMinPg = 0; $TIdxMinPg = 0; + my($rc, $rcfile); + OTHERIDX: foreach $rc (@OtherIdxs) { + $THREAD = 0; + + ## find other index resource file + IDXFIND: { + if (! -e $rc) { + $rcfile = join($DIRSEP, $OUTDIR, $rc); + 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; } + + } else { + $rcfile = $rc; + } + } + + ## read resource file and print index + if (&read_fmt_file($rcfile)) { + if ($THREAD) { + @TListOrder = (); + &write_thread_index(); + } else { + @MListOrder = (); + &write_main_index(); } } - - print STDOUT "$NumOfMsgs messages\n" unless $QUIET; - } - - 1; -} - -##--------------------------------------------------------------------------- -## 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); - } -} - -##--------------------------------------------------------------------------- -## Routine to perform conversion of a single mail message to -## HTML. -## -sub single { - local($mhead,$index,$from,$date,$sub,$header,$handle,$mesg, - $template,$filename,%fields); - - ## Prevent any verbose output - $QUIET = 1; - - ## See where input is coming from - if ($ARGV[0]) { - ($handle = &file_open($ARGV[0])) || - die("ERROR: Unable to open $ARGV[0]\n"); - $filename = $ARGV[0]; - } else { - $handle = 'STDIN'; } - ## Read header - ($index,$from,$date,$sub,$header) = - &read_mail_header($handle, *mhead, *fields); - - ($From{$index},$Date{$index},$Subject{$index}) = ($from,$date,$sub); - $MsgHead{$index} = $mhead; - - ## Read rest of message - $Message{$index} = &read_mail_body($handle, $index, $header, *fields); + print STDOUT "$NumOfMsgs messages\n" unless $QUIET; - ## Output mail - &output_mail($index, 1, 0); - - close($handle); } ##--------------------------------------------------------------------------- -## Function for removing messages. +## Compute follow-ups ## -sub rmm { - local(@numbers) = (); - local($key, %Num2Index, $num); - local($_); +sub compute_follow_ups { + my $idxlst = shift; + my($index, $tmp, $tmp2); + my(@array); - ## Create list of messages to remove - 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) { - die("ERROR: No messages specified\n"); - } - - ## Make hash to perform deletions - foreach $key (keys %IndexNum) { - $Num2Index{$IndexNum{$key}} = $key; - } - - ## Remove messages - foreach $num (@numbers) { - # message number - if (($num =~ /^\d+$/) && ($key = $Num2Index{$num})) { - &delmsg($key); - next; - } + %Follow = (); + foreach $index (@$idxlst) { + $FolCnt{$index} = 0 unless $FolCnt{$index}; + if ( defined($Refs{$index}) && + (@array = split(/$X/o, $Refs{$index}))) { - # message-id - $num =~ s/[<>]//g; # remove <>'s in case message-id - if ($key = $MsgId{$num}) { - &delmsg($key); - next; + $tmp2 = $array[$#array]; + next unless defined($MsgId{$tmp2}) && + defined($IndexNum{$MsgId{$tmp2}}); + $tmp = $MsgId{$tmp2}; + if ($Follow{$tmp}) { $Follow{$tmp} .= $bs . $index; } + else { $Follow{$tmp} = $index; } + ++$FolCnt{$tmp}; } - - # message not in archive - warn qq/Warning: Message "$num" not in archive\n/; } } ##--------------------------------------------------------------------------- -sub delmsg { - local($key) = @_; - local($filename); - local($pathname); - - &defineIndex2MsgId(); - $msgnum = $IndexNum{$key}; return 0 if ($msgnum eq ''); - $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 $MsgId{$Index2MsgId{$key}}; - &file_remove($filename); - foreach $filename (split(/$X/o, $Derived{$key})) { - $pathname = "${OUTDIR}${DIRSEP}${filename}"; - if (-d $pathname) { - &dir_remove($pathname); - } else { - &file_remove("${OUTDIR}${DIRSEP}${filename}"); - } +## 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; + } else { + $NumOfPages = 1; } - delete $Derived{$key}; - $NumOfMsgs--; - 1; } ##--------------------------------------------------------------------------- @@ -618,164 +667,17 @@ sub write_mail { print STDOUT "\n" unless $QUIET; } -##--------------------------------------------------------------------------- -## write_main_index outputs main index of archive -## -sub write_main_index { - local(@array) = (); - local($outhandle, $i, $i_p0, $filename, $tmpl, $isfirst, $tmp, - $mlfh, $mlinfh); - local(@a, $PageNum); - - @array = &sort_messages(); - - for ($PageNum = 1; $PageNum <= $NumOfPages; $PageNum++) { - if ($MULTIIDX) { - @a = splice(@array, 0, $IDXSIZE); - } - next if $PageNum < $IdxMinPg; - - $isfirst = 1; - - if ($MULTIIDX) { - if ($PageNum > 1) { - $IDXPATHNAME = join("", $OUTDIR, $DIRSEP, - $IDXPREFIX, $PageNum, ".", $HtmlExt); - } else { - $IDXPATHNAME = ${OUTDIR} . ${DIRSEP} . ${IDXNAME}; - } - } else { - if ($IDXSIZE && (($i = ($#array+1) - $IDXSIZE) > 0)) { - if ($REVSORT) { - splice(@array, $IDXSIZE); - } else { - splice(@array, 0, $i); - } - } - $IDXPATHNAME = ${OUTDIR} . ${DIRSEP} . ${IDXNAME}; - *a = *array; - } - - ## Open/create index file - if ($ADD) { - if (&file_exists($IDXPATHNAME)) { - &file_copy($IDXPATHNAME, "${OUTDIR}${DIRSEP}tmp.$$"); - ($mlinfh = &file_open("${OUTDIR}${DIRSEP}tmp.$$")) - || die("ERROR: Unable to open ${OUTDIR}${DIRSEP}tmp.$$\n"); - $MLCP = 1; - } else { - $MLCP = 0; - } - } - if ($IDXONLY) { - $outhandle = STDOUT; - } else { - ($outhandle = &file_create($IDXPATHNAME, $GzipFiles)) || - die("ERROR: Unable to create $IDXPATHNAME\n"); - } - print STDOUT "Writing $IDXPATHNAME ...\n" unless $QUIET; - - ## Print top part of index - &output_maillist_head($outhandle, $mlinfh); - - ## Output links to messages - - if ($NOSORT) { - foreach $index (@a) { - ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } - - } elsif ($SUBSORT) { - local($prevsub) = ''; - foreach $index (@a) { - if (($tmp = &get_base_subject($index)) ne $prevsub) { - $prevsub = $tmp; - if (!$isfirst) { - ($tmpl = $SUBJECTEND) =~ - s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } else { - $isfirst = 0; - } - ($tmpl = $SUBJECTBEG) =~ - s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } - ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } - ($tmpl = $SUBJECTEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - - } elsif ($AUTHSORT) { - local($prevauth) = ''; - foreach $index (@a) { - if (($tmp = &get_base_author($index)) ne $prevauth) { - $prevauth = $tmp; - if (!$isfirst) { - ($tmpl = $AUTHEND) =~ - s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } else { - $isfirst = 0; - } - ($tmpl = $AUTHBEG) =~ - s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } - ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } - ($tmpl = $AUTHEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - - } else { - local($prevdate) = ''; - local($time); - foreach $index (@a) { - $time = &get_time_from_index($index); - $tmp = join("", (localtime($time))[3,4,5]); - if ($tmp ne $prevdate) { - $prevdate = $tmp; - if (!$isfirst) { - ($tmpl = $DAYEND) =~ - s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } else { - $isfirst = 0; - } - ($tmpl = $DAYBEG) =~ - s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } - ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } - ($tmpl = $DAYEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; - print $outhandle $tmpl; - } - - ## Print bottom part of index - &output_maillist_foot($outhandle, $mlinfh); - close($outhandle) unless $IDXONLY; - if ($MLCP) { - close($mlinfh); - &file_remove("${OUTDIR}${DIRSEP}tmp.$$"); - } - } -} - ##--------------------------------------------------------------------------- ## read_mail_header() is responsible for parsing the header of ## a mail message. ## sub read_mail_header { local($handle, *mesg, *fields) = @_; - local(%l2o, $header, $index, $from, $sub, $date, $tmp, $msgid, - @refs, @array); + my(%l2o, $header, $index, $date, $tmp, @refs, @array); + local($from, $sub, $msgid); + local($_); - $header = &readmail'MAILread_file_header($handle, *fields, *l2o); + $header = &readmail::MAILread_file_header($handle, *fields, *l2o); @refs = (); @array = (); @@ -784,12 +686,20 @@ sub read_mail_header { ##------------## $msgid = $fields{'message-id'} || $fields{'msg-id'} || $fields{'content-id'}; - if (!($msgid =~ s/\s*<([^>]*)>\s*/$1/g)) { - $msgid =~ s/^\s*//; - $msgid =~ s/\s*$//; + if (defined($msgid)) { + if ($msgid =~ /<([^>]*)>/) { + $msgid = $1; + } else { + $msgid =~ s/^\s+//; + $msgid =~ s/\s+$//; + } + } else { + # create bogus ID if none exists + $msgid = join("", $$,'.',time,'.',$_msgid_cnt++, + '@NO-ID-FOUND.mhonarc.com'); } - ## Return if message already exists in archive ## + ## Return if message already exists in archive if ($msgid && defined($MsgId{$msgid})) { return ("", "", "", "", ""); } @@ -804,12 +714,13 @@ sub read_mail_header { ## Treat received field specially if ($_ eq 'received') { @array = split(/;/, - (split(/$readmail'FieldSep/o, $fields{$_}))[0]); + (split(/$readmail::FieldSep/o, $fields{$_}))[0]); $date = pop @array; ## Any other field should just be a date } else { - $date = (split(/$readmail'FieldSep/o, $fields{$_}))[0]; + $date = (split(/$readmail::FieldSep/o, $fields{$_}))[0]; } + $date =~ s/^\s+//; $date =~ s/\s+$//; ## See if time_t can be determined. if (($date =~ /\w/) && (@array = &parse_date($date))) { @@ -818,13 +729,15 @@ sub read_mail_header { } } if ($index eq "") { - warn "\nWarning: Could not parse date for message\n", - " Message-Id: <$msgid>\n"; - $date = "" unless $date =~ /\S/; - $index = time; # Use current time + warn qq/\nWarning: Could not parse date for message\n/, + qq/ Message-Id: <$msgid>\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 ## + ## Return if message too old to add if (&expired_time($index)) { return ("", "", "", "", ""); } @@ -832,8 +745,9 @@ sub read_mail_header { ##-------------## ## Get Subject ## ##-------------## - if ($fields{'subject'} !~ /^\s*$/) { - ($sub = $fields{'subject'}) =~ s/\s*$//; + if (defined($fields{'subject'}) and $fields{'subject'} =~ /\S/) { + ($sub = $fields{'subject'}) =~ s/\s+$//; + $sub = subject_strip($sub) if $SubStripCode; } else { $sub = 'No Subject'; } @@ -852,13 +766,15 @@ sub read_mail_header { ##----------------## ## Get References ## ##----------------## - $tmp = $fields{'references'}; - while ($tmp =~ s/<([^>]+)>//) { - push(@refs, $1); + if (defined($tmp = $fields{'references'})) { + while ($tmp =~ s/<([^<>]+)>//) { + push(@refs, $1); + } } - $tmp = $fields{'in-reply-to'}; - if ($tmp =~ s/^[^<]*<([^>]*)>.*$/$1/) { - push(@refs, $tmp) unless $tmp =~ /^\s*$/; + if (defined($tmp = $fields{'in-reply-to'})) { + my $irtoid = ""; + while ($tmp =~ s/<([^<>]+)>//) { $irtoid = $1 }; + push(@refs, $irtoid) if $irtoid; } ##------------------------## @@ -866,7 +782,7 @@ sub read_mail_header { ##------------------------## $mesg .= &htmlize_header(*fields, *l2o); - ## Insure uniqueness of msg-id + ## Insure uniqueness of index $index .= $X . sprintf("%d",$LastMsgNum+1); if ($fields{'content-type'}) { @@ -881,6 +797,7 @@ sub read_mail_header { if ($msgid) { $MsgId{$msgid} = $index; $NewMsgId{$msgid} = $index; # Track new message-ids + $Index2MsgId{$index} = $msgid; } &remove_dups(*refs); # Remove duplicate msg-ids $Refs{$index} = join($X, @refs) if (@refs); @@ -894,25 +811,25 @@ sub read_mail_header { ## sub read_mail_body { local($handle, $index, $header, *fields, $skip) = @_; - local($ret, $data) = ('', ''); - local(@files) = (); + my($ret, $data) = ('', ''); + my(@files) = (); + local($_); ## 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 Perl 5. - ## + ## when/if I get around to rewriting mhonarc in (OO) Perl 5. $MHAmsgnum = &fmt_msgnum($IndexNum{$index}) unless $skip; - ## Slurp of message body + ## Slurp up message body ## UUCP mailbox if ($MBOX) { if ($CONLEN && $fields{"content-length"}) { # Check for content-length - local($len, $cnt) = ($fields{"content-length"}, 0); + my($len, $cnt) = ($fields{"content-length"}, 0); if ($len) { while (<$handle>) { - $cnt += length($_); # Increment byte count - $data .= $_; # Save data - last if $cnt >= $len # Last if hit length + $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?) @@ -920,25 +837,25 @@ sub read_mail_body { $_ = <$handle>; } - } else { # No content-length + } else { # No content-length while (<$handle>) { last if /$FROM/o; - $data .= $_; + $data .= $_ unless $skip; } } ## MH message file - } else { - while (<$handle>) { - $data .= $_; - } + } elsif (!$skip) { + local $/ = undef; + $data = <$handle>; } ## Filter data return '' if $skip; $fields{'content-type'} = 'text/plain' - if $fields{'content-type'} =~ /^\s*$/; - ($ret, @files) = &readmail'MAILread_body($header, $data, + if (!defined($fields{'content-type'})) || + ($fields{'content-type'} !~ /\S/); + ($ret, @files) = &readmail::MAILread_body($header, $data, $fields{'content-type'}, $fields{'content-transfer-encoding'}); $ret = join('', @@ -976,15 +893,13 @@ sub output_mail { if ($adding) { return ($i_p0,$filename) unless $Update{$IndexNum{$index}}; - &file_copy($filepathname, $tmppathname); - ($msginfh = &file_open($tmppathname)) || - die("ERROR: Unable to open $tmppathname\n"); + &file_rename($filepathname, $tmppathname); + $msginfh = &file_open($tmppathname); } if ($SINGLE) { $msghandle = 'STDOUT'; } else { - ($msghandle = &file_create($filepathname, $GzipFiles)) || - die("ERROR: Unable to create $filepathname\n"); + $msghandle = &file_create($filepathname, $GzipFiles); } ## Output HTML header @@ -994,26 +909,31 @@ sub output_mail { } } if (!$nocustom) { - &defineIndex2MsgId(); + #&defineIndex2MsgId(); # Output comments -- more informative, but can be used for # error recovering. print $msghandle - "\n", - "\n", - "\n", - "\n", - "\n", - "\n"; - foreach (split(/$X/o, $Refs{$index})) { - print $msghandle - "\n"; + "\n", + "\n", + "\n", + "\n", + "\n", + "\n"; + #ContentType + + if (defined($Refs{$index})) { + foreach (split(/$X/o, $Refs{$index})) { + print $msghandle + "\n"; + #Reference-Id + } + } + if (defined($Derived{$index})) { + foreach (split(/$X/o, $Derived{$index})) { + print $msghandle + "\n"; + } } print $msghandle "\n"; @@ -1047,7 +967,7 @@ sub output_mail { } print $msghandle "\n\n"; - ## Output message body + ## Output message data if ($adding) { $tmp2 = ''; while (<$msginfh>) { @@ -1068,7 +988,9 @@ sub output_mail { $MsgHead{$index} =~ s%($AddrExp)%&link_refmsgid($1)%geo; $Message{$index} =~ s%($AddrExp)%&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; @@ -1087,7 +1009,7 @@ sub output_mail { print $msghandle "\n"; ($template = $MSGBODYEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; print $msghandle $template; - if (!$nocustom && $DoFolRefs) { + if (!$nocustom && $DoFolRefs && defined($Follow{$index})) { @array2 = split(/$bs/o, $Follow{$index}); if ($#array2 >= 0) { ($template = $FOLUPBEGIN) =~ @@ -1110,23 +1032,24 @@ sub output_mail { while (<$msginfh>) { last if /\n"; - if (!$nocustom && $DoFolRefs) { + if (!$nocustom && $DoFolRefs && defined($Refs{$index})) { @array2 = split(/$X/o, $Refs{$index}); $tmp2 = 0; # flag for when first ref printed if ($#array2 >= 0) { foreach (@array2) { - if (defined($IndexNum{$MsgId{$_}})) { - 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,$MsgId{$_})/geo; + next unless defined($MsgId{$_}); + next unless defined($IndexNum{$MsgId{$_}}); + 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,$MsgId{$_})/geo; + print $msghandle $template; } + if ($tmp2) { ($template = $REFSEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; @@ -1189,156 +1112,85 @@ sub output_mail { warn "Warning: Unable to create $tmp2\n"; } } - if (@array2 = split(/$X/o, $Derived{$index})) { + if (defined($Derived{$index}) && + (@array2 = split(/$X/o, $Derived{$index}))) { &remove_dups(*array2); $Derived{$index} = join($X, @array2); } ## Set modification times -- Use eval incase OS does not support utime. if ($MODTIME && !$SINGLE) { - eval q% + eval { $tmp = &get_time_from_index($index); @array2 = split(/$X/o, $Derived{$index}); grep($_ = $OUTDIR . $DIRSEP . $_, @array2); unshift(@array2, $filepathname); &file_utime($tmp, $tmp, @array2); - %; + }; } ($i_p0, $filename); } -##--------------------------------------------------------------------------- -## Routine to convert a msgid to an anchor -## -sub link_refmsgid { - local($refmsgid, $onlynew) = @_; - - if (defined($IndexNum{$MsgId{$refmsgid}}) && - (!$onlynew || $NewMsgId{$refmsgid})) { - local($lreftmpl) = $MSGIDLINK; - $lreftmpl =~ s/$VarExp/&replace_li_var($1,$MsgId{$refmsgid})/geo; - $lreftmpl; - } else { - $refmsgid; - } -} +############################################################################# +## Miscellaneous routines +############################################################################# ##--------------------------------------------------------------------------- -## output_maillist_head() outputs the beginning of the index page. +## delmsg delets a message from the archive. ## -sub output_maillist_head { - local($handle, $cphandle) = @_; - local($tmp, $index, $headfh); - $index = ""; - - print $handle "\n"; - - ## Output title - ($tmp = $IDXPGBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; - print $handle $tmp; - print $handle "\n"; - - if ($MLCP) { - while (<$cphandle>) { last if /\n"; - if ($headfh = &file_open($HEADER)) { - while (<$headfh>) { print $handle $_; } - close($headfh); + #&defineIndex2MsgId(); + $msgnum = $IndexNum{$key}; return 0 if ($msgnum eq ''); + $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 $MsgId{$Index2MsgId{$key}}; + &file_remove($filename); + foreach $filename (split(/$X/o, $Derived{$key})) { + $pathname = (&OSis_absolute_path($filename)) ? + $filename : + join($DIRSEP, $OUTDIR, $filename); + if (-d $pathname) { + &dir_remove($pathname); } else { - warn "Warning: Unable to open header: $HEADER\n"; + &file_remove($pathname); } - if ($MLCP) { - while (<$cphandle>) { last if /\n"; - } elsif ($MLCP) { # Preserve maillist header - while (<$cphandle>) { - print $handle $_; - last if /\n", - "\n"; } - - print $handle "\n"; - ($tmp = $LIBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; - print $handle $tmp; + delete $Derived{$key}; + $NumOfMsgs--; + 1; } ##--------------------------------------------------------------------------- -## output_maillist_foot() outputs the end of the index page. +## Routine to convert a msgid to an anchor ## -sub output_maillist_foot { - local($handle, $cphandle) = @_; - local($tmp, $index, $footfh); - $index = ""; - - ($tmp = $LIEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; - print $handle $tmp; - print $handle "\n"; - - ## Skip past index in old maillist file - if ($MLCP) { - while (<$cphandle>) { last if /\n"; - if ($footfh = &file_open($FOOTER)) { - while (<$footfh>) { print $handle $_; } - close($footfh); - } else { - warn "Warning: Unable to open footer: $FOOTER\n"; - } - if ($MLCP) { - while (<$cphandle>) { last if /\n"; - } elsif ($MLCP) { # Preserve maillist footer - while (<$cphandle>) { - print $handle $_; - last if /\n", - "\n"; + if (defined($MsgId{$refmsgid}) && + defined($IndexNum{$MsgId{$refmsgid}}) && + (!$onlynew || $NewMsgId{$refmsgid})) { + local($lreftmpl) = $MSGIDLINK; + $lreftmpl =~ s/$VarExp/&replace_li_var($1,$MsgId{$refmsgid})/geo; + $lreftmpl; + } else { + $refmsgid; } - - &output_doclink($handle); - - ## Close document - ($tmp = $IDXPGEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; - print $handle $tmp; - - print $handle "\n"; } ##--------------------------------------------------------------------------- -## Output link to documentation, if specified +## Retrieve next available message number. Should only be used +## when an archive is locked. ## -sub output_doclink { - local($handle) = ($_[0]); - if (!$NODOC && $DOCURL) { - print $handle "
    \n"; - print $handle - "
    \n", - "Mail converted by ", - qq|MHonArc $VERSION\n|, - "
    \n"; - } -} - -############################################################################# -## Miscellaneous routines -############################################################################# -##--------------------------------------------------------------------------- sub getNewMsgNum { $NumOfMsgs++; $LastMsgNum++; $LastMsgNum; @@ -1365,34 +1217,21 @@ sub ign_signals { ## a termination signal is sent to mhonarc. ## sub set_handler { - $SIG{'ABRT'} = q/mhonarc'quit/; - $SIG{'HUP'} = q/mhonarc'quit/; - $SIG{'INT'} = q/mhonarc'quit/; - $SIG{'PIPE'} = q/mhonarc'quit/; - $SIG{'QUIT'} = q/mhonarc'quit/; - $SIG{'TERM'} = q/mhonarc'quit/; - $SIG{'USR1'} = q/mhonarc'quit/; - $SIG{'USR2'} = q/mhonarc'quit/; -} - -##--------------------------------------------------------------------------- -## Routine to clean up stuff -## -sub clean_up { - &remove_lock_file(); - $EndTime = (times)[0]; - local($cputime) = $EndTime - $StartTime; - if ($TIME) { - printf(STDERR "\nTime: %.2f CPU seconds\n", $cputime); - } - $cputime; + $SIG{'ABRT'} = \&mhonarc::quit; + $SIG{'HUP'} = \&mhonarc::quit; + $SIG{'INT'} = \&mhonarc::quit; + $SIG{'PIPE'} = \&mhonarc::quit; + $SIG{'QUIT'} = \&mhonarc::quit; + $SIG{'TERM'} = \&mhonarc::quit; + $SIG{'USR1'} = \&mhonarc::quit; + $SIG{'USR2'} = \&mhonarc::quit; } ##--------------------------------------------------------------------------- ## Quit execution ## sub quit { - &clean_up(); + close_archive(); exit 0; } diff --git a/lib/mhdb.pl b/lib/mhdb.pl index 4176d84..28fd5be 100644 --- a/lib/mhdb.pl +++ b/lib/mhdb.pl @@ -1,13 +1,13 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhdb.pl 2.2 98/03/03 14:27:42 +## @(#) mhdb.pl 2.5 98/10/10 16:29:01 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## MHonArc library defining routines for outputing database. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1995-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 @@ -29,288 +29,257 @@ ## 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 -## fast and avoids storing mail threading info in the HTML message -## files -- which would require opening every file to perform +## 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 { - local($pathname) = shift; - if (open(DB, "> $pathname")) { + my($pathname) = shift; + local(*DB); - print DB "## MHonArcDB\n"; - &print_var(DB, 'DbVERSION', *VERSION); + if (!open(DB, "> $pathname")) { + warn qq/ERROR: Unable to create database "$pathname": $!\n/; + return 0; + } + binmode(DB); # Unix text format okay for Perl source on Windog - &print_assoc(DB, 'ContentType', *ContentType); - &print_assoc(DB, 'CustomRcVars', *CustomRcVars); - &print_assoc(DB, 'Date', *Date); - &print_assoc(DB, 'Derived', *Derived); - &print_assoc(DB, 'FieldODefs', *FieldODefs); - &print_assoc(DB, 'FollowOld', *Follow); - &print_assoc(DB, 'From', *From); - &print_assoc(DB, 'HFieldsExc', *HFieldsExc); - &print_assoc(DB, 'HeadFields', *HeadFields); - &print_assoc(DB, 'HeadHeads', *HeadHeads); - &print_assoc(DB, 'Icons', *Icons); - &print_assoc(DB, 'IndexNum', *IndexNum); - &print_assoc(DB, "readmail'MIMECharSetConverters", - *readmail'MIMECharSetConverters); - &print_assoc(DB, "readmail'MIMECharSetConvertersSrc", - *readmail'MIMECharSetConvertersSrc); - &print_assoc(DB, "readmail'MIMEFilters", - *readmail'MIMEFilters); - &print_assoc(DB, "readmail'MIMEFiltersSrc", - *readmail'MIMEFiltersSrc); - &print_assoc(DB, "readmail'MIMEFiltersArgs", - *readmail'MIMEFiltersArgs); - &print_assoc(DB, 'MsgId', *MsgId); - &print_assoc(DB, 'Refs', *Refs); - &print_assoc(DB, 'Subject', *Subject); - &print_assoc(DB, 'UDerivedFile', *UDerivedFile); - &print_assoc(DB, 'Zone', *Zone); +print DB "## MHonArcDB (Automatically generated by MHonArc)\n"; +print_var(DB,'DbVERSION', *VERSION); - &print_array(DB, 'DateFields', *DateFields) - unless $IsDefault{'DATEFIELDS'}; - &print_array(DB, 'FieldOrder', *FieldOrder); - &print_array(DB, 'FromFields', *FromFields) - unless $IsDefault{'FROMFIELDS'}; - &print_array(DB, 'Months', *Months); - &print_array(DB, 'months', *months); - &print_array(DB, 'OtherIdxs', *OtherIdxs); - &print_array(DB, 'PerlINC', *PerlINC); - &print_array(DB, 'TListOrder', *TListOrder); - &print_array(DB, 'Weekdays', *Weekdays); - &print_array(DB, 'weekdays', *weekdays); +print_assoc(DB,'ContentType', *ContentType); +print_assoc(DB,'CustomRcVars',*CustomRcVars); +print_assoc(DB,'Date', *Date); +print_assoc(DB,'Derived', *Derived); +print_assoc(DB,'FieldODefs', *FieldODefs); +print_assoc(DB,'FollowOld', *Follow); +print_assoc(DB,'From', *From); +print_assoc(DB,'HFieldsExc', *HFieldsExc); +print_assoc(DB,'HeadFields', *HeadFields); +print_assoc(DB,'HeadHeads', *HeadHeads); +print_assoc(DB,'Icons', *Icons); +print_assoc(DB,'IndexNum', *IndexNum); +print_assoc(DB,'MsgId', *MsgId); +print_assoc(DB,'Refs', *Refs); +print_assoc(DB,'Subject', *Subject); +print_assoc(DB,'UDerivedFile',*UDerivedFile); +print_assoc(DB,'Zone', *Zone); - ## I should use a hash for this stuff instead of - ## individual variables +print_assoc(DB, "readmail::MIMECharSetConverters", + *readmail::MIMECharSetConverters); +print_assoc(DB, "readmail::MIMECharSetConvertersSrc", + *readmail::MIMECharSetConvertersSrc); +print_assoc(DB, "readmail::MIMEFilters", + *readmail::MIMEFilters); +print_assoc(DB, "readmail::MIMEFiltersSrc", + *readmail::MIMEFiltersSrc); +print_assoc(DB, "readmail::MIMEFiltersArgs", + *readmail::MIMEFiltersArgs); - &print_var(DB, 'DOCURL', *DOCURL); - &print_var(DB, 'DecodeHeads', *DecodeHeads); - &print_var(DB, 'DoFolRefs', *DoFolRefs); - &print_var(DB, 'ExpireDate', *ExpireDate); - &print_var(DB, 'ExpireTime', *ExpireTime); - &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, 'IDXSIZE', *IDXSIZE); - &print_var(DB, 'LocalDateFmt', *LocalDateFmt); - &print_var(DB, 'MAILTOURL', *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, 'MsgLocalDateFmt', *MsgLocalDateFmt); - &print_var(DB, 'MsgPrefix', *MsgPrefix); - &print_var(DB, 'MULTIIDX', *MULTIIDX); - &print_var(DB, 'NOMAILTO', *NOMAILTO); - &print_var(DB, 'NONEWS', *NONEWS); - &print_var(DB, 'NOURL', *NOURL); - &print_var(DB, 'NumOfMsgs', *NumOfMsgs); - &print_var(DB, 'NumOfPages', *NumOfPages); - &print_var(DB, 'THREAD', *THREAD); - &print_var(DB, 'SubArtRxp', *SubArtRxp); - &print_var(DB, 'SubReplyRxp', *SubReplyRxp); - &print_var(DB, 'UsingLASTPG', *UsingLASTPG); +print_array(DB,'DateFields', *DateFields) unless $IsDefault{'DATEFIELDS'}; +print_array(DB,'FieldOrder', *FieldOrder); +print_array(DB,'FromFields', *FromFields) unless $IsDefault{'FROMFIELDS'}; +print_array(DB,'Months', *Months); +print_array(DB,'months', *months); +print_array(DB,'OtherIdxs', *OtherIdxs); +print_array(DB,'PerlINC', *PerlINC); +print_array(DB,'TListOrder', *TListOrder); +print_array(DB,'Weekdays', *Weekdays); +print_array(DB,'weekdays', *weekdays); - # Main index resources - &print_var(DB, 'AUTHSORT', *AUTHSORT); - &print_var(DB, 'NOSORT', *NOSORT); - &print_var(DB, 'REVSORT', *REVSORT); - &print_var(DB, 'SUBSORT', *SUBSORT); - if ($MAIN) { - &print_var(DB, 'IDXNAME', *IDXNAME); - &print_var(DB, 'IDXPREFIX', *IDXPREFIX); - &print_var(DB, 'TITLE', *TITLE); +## I should use a hash for this stuff instead of individual variables - &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, 'IDXPGBEG', *IDXPGBEG) - unless $IsDefault{'IDXPGBEG'}; - &print_var(DB, 'IDXPGEND', *IDXPGEND) - unless $IsDefault{'IDXPGEND'}; - &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, '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,'DOCURL', *DOCURL); +print_var(DB,'DecodeHeads', *DecodeHeads); +print_var(DB,'DoFolRefs', *DoFolRefs); +print_var(DB,'ExpireDate', *ExpireDate); +print_var(DB,'ExpireTime', *ExpireTime); +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,'IDXSIZE', *IDXSIZE); +print_var(DB,'LocalDateFmt', *LocalDateFmt); +print_var(DB,'MAILTOURL', *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,'MsgLocalDateFmt',*MsgLocalDateFmt); +print_var(DB,'MsgPrefix', *MsgPrefix); +print_var(DB,'MULTIIDX', *MULTIIDX); +print_var(DB,'NOMAILTO', *NOMAILTO); +print_var(DB,'NoMsgPgs', *NoMsgPgs); +print_var(DB,'NONEWS', *NONEWS); +print_var(DB,'NOURL', *NOURL); +print_var(DB,'NoteDir', *NoteDir); +print_var(DB,'NumOfMsgs', *NumOfMsgs); +print_var(DB,'NumOfPages', *NumOfPages); +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); - # Thread index resources - if ($THREAD) { - &print_var(DB, 'TIDXNAME', *TIDXNAME); - &print_var(DB, 'TIDXPREFIX', *TIDXPREFIX); - &print_var(DB, 'TTITLE', *TTITLE); - &print_var(DB, 'TIDXLABEL', *TIDXLABEL) - unless $IsDefault{'TIDXLABEL'}; - &print_var(DB, 'TIDXPGBEG', *TIDXPGBEG) - unless $IsDefault{'TIDXPGBEG'}; - &print_var(DB, 'TIDXPGEND', *TIDXPGEND) - unless $IsDefault{'TIDXPGEND'}; - &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, 'TLEVELS', *TLEVELS); - &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, 'TINDENTBEG', *TINDENTBEG) - unless $IsDefault{'TINDENTBEG'}; - &print_var(DB, 'TINDENTEND', *TINDENTEND) - unless $IsDefault{'TINDENTEND'}; - &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, '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, 'TTOPBEG', *TTOPBEG) unless $IsDefault{'TTOPBEG'}; - &print_var(DB, 'TTOPEND', *TTOPEND) unless $IsDefault{'TTOPEND'}; +# Main index resources +print_var(DB,'AUTHSORT', *AUTHSORT); +print_var(DB,'NOSORT', *NOSORT); +print_var(DB,'REVSORT', *REVSORT); +print_var(DB,'SUBSORT', *SUBSORT); - ## 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, '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, '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, '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, 'TSliceNBefore', *TSliceNBefore); - &print_var(DB, 'TSliceNAfter', *TSliceNAfter); - &print_var(DB, 'UMASK', *UMASK); +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,'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); - print DB "1;\n"; # for require - } else { - warn "Warning: Unable to create database, $pathname\n"; - } +# 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,'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'}; + +## 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,'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,'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,'TSliceNBefore',*TSliceNBefore); +print_var(DB,'TSliceNAfter', *TSliceNAfter); +print_var(DB,'UMASK', *UMASK); + +print DB "1;\n"; # for require + + close(DB); + 1; } + ##--------------------------------------------------------------------------- sub print_assoc { local($handle, $name, *assoc) = @_; print $handle "%$name=(\n"; foreach (keys %assoc) { - print $handle qq{'}, &escape_str($_), qq{','}, - &escape_str($assoc{$_}), qq{',\n}; + print $handle qq/'/, &escape_str($_), qq/',/; + if (defined($assoc{$_})) { + print $handle qq/'/, &escape_str($assoc{$_}), qq/',\n/; + } else { + print $handle "undef,\n"; + } } print $handle ");\n"; } + ##--------------------------------------------------------------------------- sub print_array { local($handle, $name, *array) = @_; print $handle "\@$name=(\n"; foreach (@array) { - print $handle qq{'}, &escape_str($_), qq{',\n}; + print $handle qq/'/, &escape_str($_), qq/',\n/; } print $handle ");\n"; } + ##--------------------------------------------------------------------------- sub print_var { local($handle, $name, *var, $d) = @_; - print $handle qq{\$$name='}, &escape_str($var), qq{'}; - print $handle qq{ unless defined(\$$name)} if $d; - print $handle qq{;\n}; + print $handle qq/\$$name='/, &escape_str($var), qq/'/; + print $handle qq/ unless defined(\$$name)/ if $d; + print $handle qq/;\n/; } + ##--------------------------------------------------------------------------- sub escape_str { - local($str) = $_[0]; + my($str) = $_[0]; $str =~ s/\\/\\\\/g; $str =~ s/'/\\'/g; diff --git a/lib/mhdysub.pl b/lib/mhdysub.pl index 2c8ba93..4711cfe 100644 --- a/lib/mhdysub.pl +++ b/lib/mhdysub.pl @@ -1,14 +1,14 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhdysub.pl 2.1 98/03/02 @(#) +## @(#) mhdysub.pl 2.2 98/08/10 23:21:42 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Definition of create_routines() that creates routines are ## runtime. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1996 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1996-1998 Earl Hood, earlhood@usa.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 @@ -27,6 +27,8 @@ 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 @@ -34,38 +36,97 @@ package mhonarc; ## are candidates. ## sub create_routines { - local($sub) = ''; + my($sub) = ''; ##----------------------------------------------------------------------- ## exclude_field: Used to determine if field should be excluded from ## message header ## $sub =<<'EndOfRoutine'; - sub exclude_field { - local($f) = shift; - local($pat, $ret); - $ret = 0; - EXC_FIELD_SW: { + 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). - foreach $pat (keys %HFieldsExc) { - $sub .= join('', - 'if ($f =~ /^', - $pat, - '/i) { $ret = 1; last EXC_FIELD_SW; }', - "\n"); - } + # 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; } + $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 =< $max; } + } + close(DIR); + $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; + $ret; + } +EndOfRoutine + + $sub .= "# $_sub_eval_cnt\n"; ++$_sub_eval_cnt; + eval $sub; + die("ERROR: Unable to create get_base_subject routine:\n$@\n") if $@; } + ##---------------------------------------------------------------------------## 1; diff --git a/lib/mhexternal.pl b/lib/mhexternal.pl index ffaaba5..b2aec36 100644 --- a/lib/mhexternal.pl +++ b/lib/mhexternal.pl @@ -1,8 +1,8 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhexternal.pl 2.2 98/03/03 18:47:20 +## @(#) mhexternal.pl 2.5 98/10/24 17:14:01 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Library defines a routine for MHonArc to filter content-types ## that cannot be directly filtered into HTML, but a linked to an @@ -19,7 +19,7 @@ ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1995-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 @@ -39,189 +39,6 @@ package m2h_external; -%ExtCnt = (); # Array of filename counters for generated files -$UnknownExt = 'bin'; -$SubDir = 0; - -%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/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/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/vnd.hp-hpgl', 'hpg,hpgl:HPGL file', - '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/vis5d', 'v5d:Vis5D dataset', - 'application/winhlp', 'hlp:WinHelp document', - 'application/wordperfect5.1', 'hlp:WordPerfect 5.1 document', - 'application/x-net-install', 'ins:Net Install file', - 'application/x-asap', 'asp:asap file', - 'application/x-bcpio', 'bcpio:BCPIO file', - 'application/x-cpio', 'cpio:CPIO file', - 'application/x-csh', 'csh:C-Shell script', - 'application/x-compress', 'Z:Unix compressed data', - '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-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/zip', 'zip:Zip archive', - - 'audio/basic', 'snd:Basic audio', - 'audio/echospeech', 'es:Echospeech audio', - 'audio/midi', 'midi:MIDI 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/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-input', 'gau:Gaussian chemical test', - '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 test', - '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/mopac-input', 'mop:MOPAC data ', - 'chemical/ncbi-asn1', 'asn:NCBI data', - 'chemical/pdb', 'pdb:PDB chemical test', - 'chemical/rosdal', 'ros:Rosdal 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/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/x-xwd', 'xwd:X window dump', - 'image/x-xwindowdump', 'xwd:X window dump', - - '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', - - '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', - -); - ##--------------------------------------------------------------------------- ## Filter routine. ## @@ -253,25 +70,31 @@ package m2h_external; ## since it can lead to filename conflicts and ## security problems. ## +## usenameext Use (file)name attribute for determining the +## extension for the derived file. Use this option +## with caution since it can lead to security +## problems. +## sub filter { local($header, *fields, *data, $isdecode, $args) = @_; - local($ret, - $filename, $urlfile, - $name, $nameparm, - $path, - $disp, - $ctype, $type, $ext, - $iconurl, $icon_mu, - $inline, - $target, - $inext, $intype); - local($debug) = 0; + my($ret, + $filename, $urlfile, + $name, $nameparm, + $path, + $disp, + $ctype, $type, $ext, + $iconurl, $icon_mu, + $inline, + $target, + $inext, $intype); + my($debug) = 0; + + require 'mhmimetypes.pl'; ## Init variables + $args = '' unless defined($args); $name = ''; $ctype = ''; - $type = ''; - $ext = ''; $inline = 0; $inext = ''; $intype = ''; @@ -286,9 +109,10 @@ sub filter { ## Get content-type ($ctype) = $fields{'content-type'} =~ m%^\s*([\w\-\./]+)%; $ctype =~ tr/A-Z/a-z/; + $type = (mhonarc::get_mime_ext($ctype))[1]; ## Get disposition - ($disp, $nameparm) = &readmail'MAILhead_get_disposition(*fields); + ($disp, $nameparm) = &readmail::MAILhead_get_disposition(*fields); if ($debug) { &debug("Content-type: $ctype", @@ -297,58 +121,46 @@ sub filter { } ## Check if using name - if ($args =~ /usename/i) { + if ($args =~ /\busename\b/i) { $name = $nameparm; } else { $name = ''; } - ## Chech if file goes in a subdirectory - if ($args =~ /subdir/i) { - $path = join('', $mhonarc'MsgPrefix, $mhonarc'MHAmsgnum, '.dir'); + ## Check if file goes in a subdirectory + if ($args =~ /\bsubdir\b/i) { + $path = join('', $mhonarc::MsgPrefix, $mhonarc::MHAmsgnum, '.dir'); } else { $path = ''; } ## Check if inlining (images only) if ($disp) { - $inline = ($disp =~ /inline/i); + $inline = ($disp =~ /\binline\b/i); } else { - $inline = ($args =~ /inline/i); + $inline = ($args =~ /\binline\b/i); } ## Check if extension and type description passed in - if ($args =~ /ext=(\S+)/i) { $inext = $1; $inext =~ s/['"]//g; } - if ($args =~ /type="([^"]+)"/i) { $intype = $1; } + if ($args =~ /\bext=(\S+)/i) { $inext = $1; $inext =~ s/['"]//g; } + if ($args =~ /\btype="([^"]+)"/i) { $intype = $1; } - ## Check if using icon - if ($args =~ /useicon/i) { - $iconurl = $mhonarc'Icons{$ctype} || $mhonarc'Icons{'unknown'}; - if ($args =~ /iconurl="([^"]+)"/i) { $iconurl = $1; } - $icon_mu = qq{} - if $iconurl; - } + ## Check if utilizing extension from mail header defined filename + if (($nameparm) && # filename specified, and + ($args =~ /\busenameext\b/i) && # use filename ext option set, and + ($nameparm !~ /^\./) && # filename does not begin w/dot, and + ($nameparm =~ /\.(\w+)/)) { # filename has an extention - ## Determine default filename extension - if ($inext) { - $ext = $inext; - } else { - if (defined($CTExt{$ctype})) { - ($ext, $type) = split(/:/, $CTExt{$ctype}, 2); - } else { - local($ctype2) = $ctype; - $ctype2 =~ s%/x-%/%i; - ($ext, $type) = split(/:/, $CTExt{$ctype2}, 2); - } - $ext = (split(/,/, $ext))[0]; + $inext = $1; } - $type = $intype if $intype; - if (!$ext) { - $ext = $UnknownExt; - $type = $ctype; + + ## Check if using icon + if ($args =~ /\buseicon\b/i) { + $iconurl = $mhonarc::Icons{$ctype} || $mhonarc::Icons{'unknown'}; + if ($args =~ /\biconurl="([^"]+)"/i) { $iconurl = $1; } + $icon_mu = qq/ / + if $iconurl; } - $pre = $ext; - substr($pre, 3) = "" if length($pre) > 3; # Prune prefix to 3 chars ## Check if target specified if ($args =~ /target="([^"]+)"/i) { $target = $1; } @@ -357,7 +169,7 @@ sub filter { $target = qq/ TARGET="$target"/ if $target; ## Write file - $filename = &write_file(*data, $path, $name, $pre, $ext); + $filename = mhonarc::write_attachment($ctype, \$data, $path, $name, $inext); ($urlfile = $filename) =~ s/([^\w.\-\/])/sprintf("%%%X",unpack("C",$1))/ge; if ($debug) { &debug("File-written: $filename"); @@ -367,86 +179,34 @@ sub filter { if ($inline && ($ctype =~ /image/i)) { $ret = "

    " . &htmlize($fields{'content-description'}) . "

    \n" if ($fields{'content-description'}); - $ret .= qq{

    \n}; + $ret .= qq|

    \n|; } else { - $ret = qq{

    $icon_mu } . + $ret = qq|

    $icon_mu| . (&htmlize($fields{'content-description'}) || $nameparm || $type) . - qq{

    \n}; + qq|

    \n|; } ($ret, $path || $filename); } -sub write_file { - local(*stuff, $path, $fname, $pre, $ext) = @_; - local($tmp, $cnt) = ('', ''); - - $tmp = $mhonarc'OUTDIR; - if ($path) { - $tmp .= $mhonarc'DIRSEP . $path; - mkdir($tmp, 0777); - } - - if (!$fname) { - if (!$ExtCnt{$ext}) { &set_cnt($tmp); } - $cnt = $ExtCnt{$ext}++; - $fname = $pre . sprintf("%05d.",$cnt) . $ext; - $ExtCnt{$ext} = 0 if $path; - } - $tmp .= $mhonarc'DIRSEP . $fname; - - if (open(OUTFILE, "> $tmp")) { - binmode(OUTFILE); # For MS-DOS - print OUTFILE $stuff; - close(OUTFILE); - } else { - warn "Warning: Unable to create $tmp\n"; - } - - join("", - ($mhonarc'SINGLE ? $mhonarc'OUTDIR.$mhonarc'DIRSEP : ""), - ($path ? join($mhonarc'DIRSEP,$path,$fname) : $fname)); -} - -sub set_cnt { - local(@files) = (); - if (opendir(DIR, $_[0])) { - @files = sort numerically grep(/^$pre\d+\.$ext$/i, readdir(DIR)); - close(DIR); - if (@files) { - ($ExtCnt{$ext}) = $files[$#files] =~ /(\d+)/; - $ExtCnt{$ext}++; - } else { - $ExtCnt{$ext} = 0; - } - } else { - $ExtCnt{$ext} = 0; - } -} - -sub numerically { - ($A) = $a =~ /(\d+)/; - ($B) = $b =~ /(\d+)/; - $A <=> $B; -} +##--------------------------------------------------------------------------- sub htmlize { - local($txt) = shift; + my $txt = shift; + return "" unless defined($txt); + $txt =~ s/&/\&/g; $txt =~ s/>/>/g; $txt =~ s/ $file"); - die qq{ERROR: Failed to exec "| $GzipExe > $file"\n}; + die qq{ERROR: Failed to exec "| $GzipExe > $file": $!\n}; } return $handle if open($handle, "> $file"); - die qq{ERROR: Failed to create "$file"\n}; + die qq{ERROR: Failed to create "$file": $!\n}; } sub file_exists { @@ -60,15 +66,28 @@ sub file_exists { sub file_copy { local($src, $dst) = ($_[0], $_[1]); - local($gz) = $src =~ /\.gz$/; + local($gz) = $src =~ /\.gz$/i; if ($gz || (-e "$src.gz")) { $src .= ".gz" unless $gz; - $dst .= ".gz" unless $dst =~ /\.gz$/; + $dst .= ".gz" unless $dst =~ /\.gz$/i; } &cp($src, $dst); } +sub file_rename { + local($src, $dst) = ($_[0], $_[1]); + local($gz) = $src =~ /\.gz$/i; + + if ($gz || (-e "$src.gz")) { + $src .= ".gz" unless $gz; + $dst .= ".gz" unless $dst =~ /\.gz$/i; + } + if (!rename($src, $dst)) { + die qq/ERROR: Unable to rename "$src" to "$dst": $!\n/; + } +} + sub file_remove { local($file) = shift; diff --git a/lib/mhidxrc.pl b/lib/mhidxrc.pl index 70a93fc..a05451b 100644 --- a/lib/mhidxrc.pl +++ b/lib/mhidxrc.pl @@ -1,13 +1,13 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhidxrc.pl 2.2 98/03/03 14:29:10 +## @(#) mhidxrc.pl 2.4 98/08/10 23:26:05 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## MHonArc library defining values for various index resources ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1996-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1996-1998 Earl Hood, earlhood@usa.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 @@ -27,6 +27,8 @@ package mhonarc; +sub mhidxrc_set_vars { + ##-----------------## ## Index resources ## ##-----------------## @@ -70,7 +72,7 @@ package mhonarc; $LIBEG .= "\n" if $THREAD; - $LIBEG .= '$PREVPGLINK$$NEXTPGLINK$' . "\n" if $MULTIIDX; + $LIBEG .= '$PGLINK(PREV)$$PGLINK(NEXT)$' . "\n" if $MULTIIDX; $LIBEG .= "
    \n
      \n"; $IsDefault{'LIBEG'} = 1; } @@ -147,7 +149,7 @@ package mhonarc; $THEAD .= "\n" if $MAIN; - $THEAD .= '$TPREVPGLINK$$TNEXTPGLINK$' . "\n" if $MULTIIDX; + $THEAD .= '$PGLINK(TPREV)$$PGLINK(TNEXT)$' . "\n" if $MULTIIDX; $THEAD .= "
      \n
        \n"; $IsDefault{'THEAD'} = 1; } @@ -207,7 +209,7 @@ package mhonarc; ## Template for the start of subject based section unless ($TSUBJECTBEG) { - $TSUBJECTBEG = "<Possible follow-up(s)>
        \n"; + $TSUBJECTBEG = "
      • <Possible follow-up(s)>
      • \n"; $IsDefault{'TSUBJECTBEG'} = 1; } ## Template for the end of subject based section @@ -330,9 +332,9 @@ package mhonarc; ##-----------------------------------## ## Next/prev buttons -$NEXTBUTTON = '['.$IdxTypeStr.' Next]', +$NEXTBUTTON = '['.$IdxTypeStr.' Next]', $IsDefault{'NEXTBUTTON'} = 1 unless $NEXTBUTTON; -$PREVBUTTON = '['.$IdxTypeStr.' Prev]', +$PREVBUTTON = '['.$IdxTypeStr.' Prev]', $IsDefault{'PREVBUTTON'} = 1 unless $PREVBUTTON; $NEXTBUTTONIA = "[$IdxTypeStr Next]", $IsDefault{'NEXTBUTTONIA'} = 1 unless $NEXTBUTTONIA; @@ -343,7 +345,7 @@ package mhonarc; unless ($NEXTLINK) { $NEXTLINK =<Next by $IdxTypeStr: -\$NEXTSUBJECT\$ +\$SUBJECT(NEXT)\$ EndOfStr $IsDefault{'NEXTLINK'} = 1; @@ -356,7 +358,7 @@ package mhonarc; unless ($PREVLINK) { $PREVLINK =<Prev by $IdxTypeStr: -\$PREVSUBJECT\$ +\$SUBJECT(PREV)\$ EndOfStr $IsDefault{'PREVLINK'} = 1; @@ -366,9 +368,9 @@ package mhonarc; $PREVLINKIA = '', $IsDefault{'PREVLINKIA'} = 1 unless $PREVLINKIA; ## Thread next/previous buttons -$TNEXTBUTTON = '[Thread Next]', +$TNEXTBUTTON = '[Thread Next]', $IsDefault{'TNEXTBUTTON'} = 1 unless $TNEXTBUTTON; -$TPREVBUTTON = '[Thread Prev]', +$TPREVBUTTON = '[Thread Prev]', $IsDefault{'TPREVBUTTON'} = 1 unless $TPREVBUTTON; $TNEXTBUTTONIA = '[Thread Next]', $IsDefault{'TNEXTBUTTONIA'} = 1 unless $TNEXTBUTTONIA; @@ -379,7 +381,7 @@ package mhonarc; unless ($TNEXTLINK) { $TNEXTLINK =<<'EndOfStr';
      • Next by thread: -$TNEXTSUBJECT$ +$SUBJECT(TNEXT)$
      • EndOfStr $IsDefault{'TNEXTLINK'} = 1; @@ -392,7 +394,7 @@ package mhonarc; unless ($TPREVLINK) { $TPREVLINK =<<'EndOfStr';
      • Prev by thread: -$TPREVSUBJECT$ +$SUBJECT(TPREV)$
      • EndOfStr $IsDefault{'TPREVLINK'} = 1; @@ -404,9 +406,9 @@ package mhonarc; ## Top links in message if (!$TOPLINKS) { $TOPLINKS = "
        \n"; - $TOPLINKS .= '$PREVBUTTON$$NEXTBUTTON$' + $TOPLINKS .= '$BUTTON(PREV)$$BUTTON(NEXT)$' if $MAIN; - $TOPLINKS .= '$TPREVBUTTON$$TNEXTBUTTON$' + $TOPLINKS .= '$BUTTON(TPREV)$$BUTTON(TNEXT)$' if $THREAD; $TOPLINKS .= '[$IDXLABEL$]' if $MAIN; @@ -418,8 +420,8 @@ package mhonarc; ## Bottom links in message if (!$BOTLINKS) { $BOTLINKS = "
          \n"; - $BOTLINKS .= '$PREVLINK$$NEXTLINK$' if $MAIN; - $BOTLINKS .= '$TPREVLINK$$TNEXTLINK$' if $THREAD; + $BOTLINKS .= '$LINK(PREV)$$LINK(NEXT)$' if $MAIN; + $BOTLINKS .= '$LINK(TPREV)$$LINK(TNEXT)$' if $THREAD; if ($MAIN || $THREAD) { $BOTLINKS .= "
        • Index(es):\n
            \n"; $BOTLINKS .= '
          • ' . @@ -478,13 +480,13 @@ package mhonarc; ## Next/previous main/thread index page links ## ##--------------------------------------------## -$NEXTPGLINK = '[Next Page]', +$NEXTPGLINK = '[Next Page]', $IsDefault{'NEXTPGLINK'} = 1 unless $NEXTPGLINK; -$PREVPGLINK = '[Prev Page]', +$PREVPGLINK = '[Prev Page]', $IsDefault{'PREVPGLINK'} = 1 unless $PREVPGLINK; -$TNEXTPGLINK = '[Next Page]', +$TNEXTPGLINK = '[Next Page]', $IsDefault{'TNEXTPGLINK'} = 1 unless $TNEXTPGLINK; -$TPREVPGLINK = '[Prev Page]', +$TPREVPGLINK = '[Prev Page]', $IsDefault{'TPREVPGLINK'} = 1 unless $TPREVPGLINK; $NEXTPGLINKIA = '[Next Page]', @@ -496,11 +498,26 @@ package mhonarc; $TPREVPGLINKIA = '[Prev Page]', $IsDefault{'TPREVPGLINKIA'} = 1 unless $TPREVPGLINKIA; +##---------------## +## Miscellaneous ## +##---------------## + $MSGIDLINK = '$MSGID$', $IsDefault{'MSGIDLINK'} = 1 unless $MSGIDLINK; +$NOTE = '$NOTETEXT$', + $IsDefault{'NOTE'} = 1 unless $NOTE; +$NOTEIA = '', + $IsDefault{'NOTEIA'} = 1 unless $NOTEIA; +$NOTEICON = '', + $IsDefault{'NOTEICON'} = 1 unless $NOTEICON; +$NOTEICONIA = '', + $IsDefault{'NOTEICONIA'} = 1 unless $NOTEICONIA; + ## Set unknown icon $Icons{'unknown'} = $Icons{'text/plain'} unless $Icons{'unknown'}; +} + ##---------------------------------------------------------------------------## 1; diff --git a/lib/mhindex.pl b/lib/mhindex.pl new file mode 100644 index 0000000..2602c7b --- /dev/null +++ b/lib/mhindex.pl @@ -0,0 +1,303 @@ +##---------------------------------------------------------------------------## +## File: +## @(#) mhindex.pl 1.3 98/10/10 16:33:39 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## Main index routines for mhonarc +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +package mhonarc; + +##--------------------------------------------------------------------------- +## write_main_index outputs main index of archive +## +sub write_main_index { + local($onlypg) = @_; + local($MLCP); + local($outhandle, $i, $i_p0, $filename, $tmpl, $isfirst, $tmp, + $mlfh, $mlinfh, $tmpfile, $offstart, $offend); + local(*a); + local($PageNum, $PageSize, $totalpgs); + + &compute_page_total(); + $PageNum = $onlypg || 1; + $totalpgs = $onlypg || $NumOfPages; + if (!scalar(@MListOrder)) { + @MListOrder = &sort_messages(); + %Index2MLoc = (); + @Index2MLoc{@MListOrder} = (0 .. $#MListOrder); + } + + for ( ; $PageNum <= $totalpgs; ++$PageNum) { + next if $PageNum < $IdxMinPg; + + $isfirst = 1; + $MLCP = 0; + + if ($MULTIIDX) { + $offstart = ($PageNum-1) * $IDXSIZE; + $offend = $offstart + $IDXSIZE-1; + $offend = $#MListOrder if $#MListOrder < $offend; + @a = @MListOrder[$offstart..$offend]; + + if ($PageNum > 1) { + $IDXPATHNAME = join("", $OUTDIR, $DIRSEP, + $IDXPREFIX, $PageNum, ".", $HtmlExt); + } else { + $IDXPATHNAME = join($DIRSEP, $OUTDIR, $IDXNAME); + } + + } else { + if ($IDXSIZE && (($i = ($#MListOrder+1) - $IDXSIZE) > 0)) { + if ($REVSORT) { + splice(@MListOrder, $IDXSIZE); + } else { + splice(@MListOrder, 0, $i); + } + } + $IDXPATHNAME = join($DIRSEP, $OUTDIR, $IDXNAME); + *a = *MListOrder; + } + $PageSize = scalar(@a); + + ## Open/create index file + if ($IDXONLY) { + $outhandle = 'STDOUT'; + + } else { + if ($ADD && &file_exists($IDXPATHNAME)) { + $tmpfile = join($DIRSEP, $OUTDIR, "tmp.$$"); + &file_rename($IDXPATHNAME, $tmpfile); + ($mlinfh = &file_open($tmpfile)) + || die("ERROR: Unable to open $tmpfile\n"); + $MLCP = 1; + } + ($outhandle = &file_create($IDXPATHNAME, $GzipFiles)) || + die("ERROR: Unable to create $IDXPATHNAME\n"); + } + print STDOUT "Writing $IDXPATHNAME ...\n" unless $QUIET; + + ## Print top part of index + &output_maillist_head($outhandle, $mlinfh); + + ## Output links to messages + + if ($NOSORT) { + foreach $index (@a) { + ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } + + } elsif ($SUBSORT) { + local($prevsub) = ''; + foreach $index (@a) { + if (($tmp = &get_base_subject($index)) ne $prevsub) { + $prevsub = $tmp; + if (!$isfirst) { + ($tmpl = $SUBJECTEND) =~ + s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } else { + $isfirst = 0; + } + ($tmpl = $SUBJECTBEG) =~ + s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } + ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } + ($tmpl = $SUBJECTEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + + } elsif ($AUTHSORT) { + local($prevauth) = ''; + foreach $index (@a) { + if (($tmp = &get_base_author($index)) ne $prevauth) { + $prevauth = $tmp; + if (!$isfirst) { + ($tmpl = $AUTHEND) =~ + s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } else { + $isfirst = 0; + } + ($tmpl = $AUTHBEG) =~ + s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } + ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } + ($tmpl = $AUTHEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + + } else { + local($prevdate) = ''; + local($time); + foreach $index (@a) { + $time = &get_time_from_index($index); + $tmp = join("", $UseLocalTime ? (localtime($time))[3,4,5] : + (gmtime($time))[3,4,5]); + if ($tmp ne $prevdate) { + $prevdate = $tmp; + if (!$isfirst) { + ($tmpl = $DAYEND) =~ + s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } else { + $isfirst = 0; + } + ($tmpl = $DAYBEG) =~ + s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } + ($tmpl = $LITMPL) =~ s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } + ($tmpl = $DAYEND) =~ s/$VarExp/&replace_li_var($1,$index)/geo; + print $outhandle $tmpl; + } + + ## Print bottom part of index + &output_maillist_foot($outhandle, $mlinfh); + close($outhandle) unless $IDXONLY; + if ($MLCP) { + close($mlinfh); + &file_remove($tmpfile); + } + } +} + +##--------------------------------------------------------------------------- +## output_maillist_head() outputs the beginning of the index page. +## +sub output_maillist_head { + local($handle, $cphandle) = @_; + local($tmp, $index, $headfh); + $index = ""; + + print $handle "\n"; + + ## Output title + ($tmp = $IDXPGBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; + print $handle $tmp; + print $handle "\n"; + + if ($MLCP) { + while (<$cphandle>) { last if /\n"; + if ($headfh = &file_open($HEADER)) { + while (<$headfh>) { print $handle $_; } + close($headfh); + } else { + warn "Warning: Unable to open header: $HEADER\n"; + } + if ($MLCP) { + while (<$cphandle>) { last if /\n"; + } elsif ($MLCP) { # Preserve maillist header + while (<$cphandle>) { + print $handle $_; + last if /\n", + "\n"; + } + + print $handle "\n"; + ($tmp = $LIBEG) =~ s/$VarExp/&replace_li_var($1,'')/geo; + print $handle $tmp; +} + +##--------------------------------------------------------------------------- +## output_maillist_foot() outputs the end of the index page. +## +sub output_maillist_foot { + local($handle, $cphandle) = @_; + local($tmp, $index, $footfh); + $index = ""; + + ($tmp = $LIEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; + print $handle $tmp; + print $handle "\n"; + + ## Skip past index in old maillist file + if ($MLCP) { + while (<$cphandle>) { last if /\n"; + if ($footfh = &file_open($FOOTER)) { + while (<$footfh>) { print $handle $_; } + close($footfh); + } else { + warn "Warning: Unable to open footer: $FOOTER\n"; + } + if ($MLCP) { + while (<$cphandle>) { last if /\n"; + } elsif ($MLCP) { # Preserve maillist footer + while (<$cphandle>) { + print $handle $_; + last if /\n", + "\n"; + } + + &output_doclink($handle); + + ## Close document + ($tmp = $IDXPGEND) =~ s/$VarExp/&replace_li_var($1,'')/geo; + print $handle $tmp; + + print $handle "\n"; +} + +##--------------------------------------------------------------------------- +## Output link to documentation, if specified +## +sub output_doclink { + local($handle) = ($_[0]); + if (!$NODOC && $DOCURL) { + print $handle "
            \n"; + print $handle + "
            \n", + "Mail converted by ", + qq|MHonArc $VERSION\n|, + "
            \n"; + } +} + +##--------------------------------------------------------------------------- +1; diff --git a/lib/mhinit.pl b/lib/mhinit.pl index 2e0e253..6d08273 100644 --- a/lib/mhinit.pl +++ b/lib/mhinit.pl @@ -1,13 +1,13 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhinit.pl 2.2 98/03/03 14:30:12 +## @(#) mhinit.pl 2.9 98/10/10 21:31:25 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Initialization stuff for MHonArc. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1995-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 @@ -29,6 +29,8 @@ package mhonarc; ##---------------------------------------------------------------------------## +sub mhinit_vars { + ## The %Zone array should be augmented to contain all timezone ## specifications with the positive/negative hour offset from UTC ## (GMT). (There has got to be a better way to handle timezones) @@ -116,9 +118,10 @@ package mhonarc; %AddIndex = (); # Flags for messages that must be written @MListOrder = (); # List of indexes in order printed on main index +%Index2Mloc = (); # Map index to position in main index @TListOrder = (); # List of indexes in order printed on thread index %Index2Tloc = (); # Map index to position in thread index -%Index2Mloc = (); # Map index to position in main index +%ThreadLevel = (); # Map index to thread level %UDerivedFile = (); # Key = filename template. Value = content template @@ -148,6 +151,7 @@ package mhonarc; $NumOfPages = 0; # Number of index pages $IdxMinPg = -1; # Starting page of index for updating $TIdxMinPg = -1; # Starting page of thread index for updating +$IdxPageNum = 0; # Page to output if genidx $DBPathName = ''; # Full pathname of database file ##---------------------------------------------------------------------- @@ -155,29 +159,32 @@ package mhonarc; ##---------------------------------------------------------------------- ## Default filters ## -%readmail'MIMEFilters = ( +%readmail::MIMEFilters = ( # Content-type Filter #------------------------------------------------------------------- - "application/x-patch", "m2h_text_plain'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/setext", "m2h_text_setext'filter", - "text/tab-separated-values", "m2h_text_tsv'filter", - "text/x-html", "m2h_text_html'filter", - "text/x-setext", "m2h_text_setext'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", + "application/x-patch", "m2h_text_plain::filter", + "message/delivery-status", "m2h_text_plain::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/setext", "m2h_text_setext::filter", + "text/tab-separated-values", "m2h_text_tsv::filter", + "text/x-html", "m2h_text_html::filter", + "text/x-setext", "m2h_text_setext::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 = ( +%readmail::MIMEFiltersSrc = ( # Content-type Filter #------------------------------------------------------------------- "application/x-patch", "mhtxtplain.pl", @@ -198,11 +205,13 @@ package mhonarc; "model/*", "mhexternal.pl", "text/*", "mhtxtplain.pl", "video/*", "mhexternal.pl", + + "x-sun-attachment", "mhtxtplain.pl", ); ## Default filter arguments ## -%readmail'MIMEFiltersArgs = ( +%readmail::MIMEFiltersArgs = ( # Content-type Arguments #------------------------------------------------------------------- "image/gif", "inline", @@ -213,24 +222,24 @@ package mhonarc; ## Charset filters ## -%readmail'MIMECharSetConverters = ( +%readmail::MIMECharSetConverters = ( # Character set Converter Function #------------------------------------------------------------------- - "plain", "mhonarc'htmlize", - "us-ascii", "mhonarc'htmlize", - "iso-8859-1", "mhonarc'htmlize", - "iso-8859-2", "iso_8859'str2sgml", - "iso-8859-3", "iso_8859'str2sgml", - "iso-8859-4", "iso_8859'str2sgml", - "iso-8859-5", "iso_8859'str2sgml", - "iso-8859-6", "iso_8859'str2sgml", - "iso-8859-7", "iso_8859'str2sgml", - "iso-8859-8", "iso_8859'str2sgml", - "iso-8859-9", "iso_8859'str2sgml", - "iso-8859-10", "iso_8859'str2sgml", + "plain", "mhonarc::htmlize", + "us-ascii", "mhonarc::htmlize", + "iso-8859-1", "mhonarc::htmlize", + "iso-8859-2", "iso_8859::str2sgml", + "iso-8859-3", "iso_8859::str2sgml", + "iso-8859-4", "iso_8859::str2sgml", + "iso-8859-5", "iso_8859::str2sgml", + "iso-8859-6", "iso_8859::str2sgml", + "iso-8859-7", "iso_8859::str2sgml", + "iso-8859-8", "iso_8859::str2sgml", + "iso-8859-9", "iso_8859::str2sgml", + "iso-8859-10", "iso_8859::str2sgml", "default", "-ignore-", ); -%readmail'MIMECharSetConvertersSrc = ( +%readmail::MIMECharSetConvertersSrc = ( # Character set Converter Function #------------------------------------------------------------------- "plain", undef, @@ -253,7 +262,7 @@ package mhonarc; ##------------------------------------------------------------------------ ## Variable to hold function for converting message header text. -$MHeadCnvFunc = "mhonarc'htmlize"; +$MHeadCnvFunc = "mhonarc::htmlize"; ## Regexp for variable detection $VarExp = '\$([^\$]*)\$'; @@ -263,17 +272,19 @@ package mhonarc; ## Grab environment variable settings ## +$AFS = $ENV{'M2H_AFS'} || 0; +$ANNOTATE = $ENV{'M2H_ANNOTATE'} || 0; $DBFILE = $ENV{'M2H_DBFILE'} || (($MSDOS || $VMS) ? "mhonarc.db": ".mhonarc.db"); $DOCURL = $ENV{'M2H_DOCURL'} || 'http://www.oac.uci.edu/indiv/ehood/mhonarc.html'; $FOOTER = $ENV{'M2H_FOOTER'} || ""; $HEADER = $ENV{'M2H_HEADER'} || ""; -$IDXNAME = ""; # Set in get_cli_opts() +$IDXNAME = ""; # Set in get_resources() $IDXPREFIX = $ENV{'M2H_IDXPREFIX'} || "mail"; $TIDXPREFIX= $ENV{'M2H_TIDXPREFIX'} || "thrd"; $IDXSIZE = $ENV{'M2H_IDXSIZE'} || 0; -$TIDXNAME = ""; # Set in get_cli_opts() +$TIDXNAME = ""; # Set in get_resources() $OUTDIR = $ENV{'M2H_OUTDIR'} || $CURDIR; $FMTFILE = $ENV{'M2H_RCFILE'} || ""; $TTITLE = $ENV{'M2H_TTITLE'} || "Mail Thread Index"; @@ -294,44 +305,49 @@ package mhonarc; (($MSDOS || $VMS) ? "mhonarc.rc": ".mhonarc.rc"); $GzipExe = $ENV{'M2H_GZIPEXE'} || 'gzip'; -$GMTDateFmt = $ENV{'M2H_GMTDATEFMT'} || ''; -$LocalDateFmt = $ENV{'M2H_LOCALDATEFMT'} || ''; -$ExpireDate = $ENV{'M2H_EXPIREDATE'} || ''; - $ExpireDateTime = 0; -$ExpireTime = $ENV{'M2H_EXPIREAGE'} || 0; +$GMTDateFmt = $ENV{'M2H_GMTDATEFMT'} || ''; +$LocalDateFmt = $ENV{'M2H_LOCALDATEFMT'} || ''; +$ExpireDate = $ENV{'M2H_EXPIREDATE'} || ''; +$ExpireDateTime = 0; +$ExpireTime = $ENV{'M2H_EXPIREAGE'} || 0; $MsgGMTDateFmt = $ENV{'M2H_MSGGMTDATEFMT'} || ''; $MsgLocalDateFmt= $ENV{'M2H_MSGLOCALDATEFMT'} || ''; -$CONLEN = defined($ENV{'M2H_CONLEN'}) ? $ENV{'M2H_CONLEN'} : 0; -$MAIN = defined($ENV{'M2H_MAIN'}) ? $ENV{'M2H_MAIN'} : 1; -$MULTIIDX = defined($ENV{'M2H_MULTIPG'}) ? $ENV{'M2H_MULTIPG'} : 0; -$MODTIME = defined($ENV{'M2H_MODTIME'}) ? $ENV{'M2H_MODTIME'} : 0; -$NODOC = defined($ENV{'M2H_DOC'}) ? !$ENV{'M2H_DOC'} : 0; -$NOMAILTO = defined($ENV{'M2H_MAILTO'}) ? !$ENV{'M2H_MAILTO'} : 0; -$NONEWS = defined($ENV{'M2H_NEWS'}) ? !$ENV{'M2H_NEWS'} : 0; -$NOSORT = defined($ENV{'M2H_SORT'}) ? !$ENV{'M2H_SORT'} : 0; -$NOURL = defined($ENV{'M2H_URL'}) ? !$ENV{'M2H_SORT'} : 0; -$REVSORT = defined($ENV{'M2H_REVSORT'}) ? $ENV{'M2H_REVSORT'} : 0; -$SUBSORT = defined($ENV{'M2H_SUBSORT'}) ? $ENV{'M2H_SUBSORT'} : 0; -$AUTHSORT = defined($ENV{'M2H_AUTHSORT'}) ? $ENV{'M2H_AUTHSORT'} : 0; -$THREAD = defined($ENV{'M2H_THREAD'}) ? $ENV{'M2H_THREAD'} : 1; -$TNOSORT = defined($ENV{'M2H_TSORT'}) ? !$ENV{'M2H_TSORT'} : 0; -$TREVERSE = defined($ENV{'M2H_TREVERSE'}) ? $ENV{'M2H_TREVERSE'} : 0; -$TSUBSORT = defined($ENV{'M2H_TSUBSORT'}) ? $ENV{'M2H_TSUBSORT'} : 0; -$GzipFiles = defined($ENV{'M2H_GZIPFILES'}) ? $ENV{'M2H_GZIPFILES'} : 0; -$GzipLinks = defined($ENV{'M2H_GZIPLINKS'}) ? $ENV{'M2H_GZIPLINKS'} : 0; +$NoteDir = $ENV{'M2H_NOTEDIR'} || 'notes'; + +$CONLEN = defined($ENV{'M2H_CONLEN'}) ? $ENV{'M2H_CONLEN'} : 0; +$MAIN = defined($ENV{'M2H_MAIN'}) ? $ENV{'M2H_MAIN'} : 1; +$MULTIIDX = defined($ENV{'M2H_MULTIPG'}) ? $ENV{'M2H_MULTIPG'} : 0; +$MODTIME = defined($ENV{'M2H_MODTIME'}) ? $ENV{'M2H_MODTIME'} : 0; +$NODOC = defined($ENV{'M2H_DOC'}) ? !$ENV{'M2H_DOC'} : 0; +$NOMAILTO = defined($ENV{'M2H_MAILTO'}) ? !$ENV{'M2H_MAILTO'} : 0; +$NoMsgPgs = defined($ENV{'M2H_MSGPGS'}) ? !$ENV{'M2H_MSGPGS'} : 0; +$NONEWS = defined($ENV{'M2H_NEWS'}) ? !$ENV{'M2H_NEWS'} : 0; +$NOSORT = defined($ENV{'M2H_SORT'}) ? !$ENV{'M2H_SORT'} : 0; +$NOURL = defined($ENV{'M2H_URL'}) ? !$ENV{'M2H_SORT'} : 0; +$REVSORT = defined($ENV{'M2H_REVSORT'}) ? $ENV{'M2H_REVSORT'} : 0; +$SUBSORT = defined($ENV{'M2H_SUBSORT'}) ? $ENV{'M2H_SUBSORT'} : 0; +$AUTHSORT = defined($ENV{'M2H_AUTHSORT'}) ? $ENV{'M2H_AUTHSORT'} : 0; +$THREAD = defined($ENV{'M2H_THREAD'}) ? $ENV{'M2H_THREAD'} : 1; +$TNOSORT = defined($ENV{'M2H_TSORT'}) ? !$ENV{'M2H_TSORT'} : 0; +$TREVERSE = defined($ENV{'M2H_TREVERSE'}) ? $ENV{'M2H_TREVERSE'} : 0; +$TSUBSORT = defined($ENV{'M2H_TSUBSORT'}) ? $ENV{'M2H_TSUBSORT'} : 0; +$GzipFiles = defined($ENV{'M2H_GZIPFILES'}) ? $ENV{'M2H_GZIPFILES'} : 0; +$GzipLinks = defined($ENV{'M2H_GZIPLINKS'}) ? $ENV{'M2H_GZIPLINKS'} : 0; +$UseLocalTime= defined($ENV{'M2H_USELOCALTIME'}) ? + $ENV{'M2H_USELOCALTIME'} : 0; if ($UNIX) { - eval q/ + eval { $UMASK = defined($ENV{'M2H_UMASK'}) ? $ENV{'M2H_UMASK'} : sprintf("%o",umask); - /; + }; } $DecodeHeads = defined($ENV{'M2H_DECODEHEADS'}) ? $ENV{'M2H_DECODEHEADS'} : 0; -$DoArchive = defined($ENV{'M2H_ARCHIVE'}) ? $ENV{'M2H_ARCHIVE'} : 1; -$DoFolRefs = defined($ENV{'M2H_FOLREFS'}) ? $ENV{'M2H_FOLREFS'} : 1; +$DoArchive = defined($ENV{'M2H_ARCHIVE'}) ? $ENV{'M2H_ARCHIVE'} : 1; +$DoFolRefs = defined($ENV{'M2H_FOLREFS'}) ? $ENV{'M2H_FOLREFS'} : 1; $UsingLASTPG = defined($ENV{'M2H_USINGLASTPG'}) ? $ENV{'M2H_USINGLASTPG'} : 1; @OtherIdxs = defined($ENV{'M2H_OTHERINDEXES'}) ? @@ -344,117 +360,134 @@ package mhonarc; split(/:/, $ENV{'M2H_FROMFIELDS'}) : (); ($TSliceNBefore, $TSliceNAfter) = defined($ENV{'M2H_TSLICE'}) ? - split(/:/, $ENV{'M2H_TSLICE'}) : (0, 4); + split(/:/, $ENV{'M2H_TSLICE'}) : (0, 0); +## Regex representing "article" words for stripping out when doing +## subject sorting. $SubArtRxp = $ENV{'M2H_SUBJECTARTICLERXP'} || q/^(the|a|an)\s+/; + +## Regex representing reply/forward prefixes to subject. $SubReplyRxp = $ENV{'M2H_SUBJECTREPLYRXP'} || q/^\s*(re|sv|fwd|fw)[\[\]\d]*[:>-]+\s*/; +## Code for stripping subjects +$SubStripCode = $ENV{'M2H_SUBJECTSTRIPCODE'} || ""; + ## Arrays for months and weekdays. If empty, the default settings ## in mhtime.pl are used. -@Months = $ENV{'M2H_MONTHS'} ? split(/:/, $ENV{'M2H_MONTHS'}) : (); -@months = $ENV{'M2H_MONTHSABR'} ? split(/:/, $ENV{'M2H_MONTHSABR'}) : (); -@Weekdays = $ENV{'M2H_WEEKDAYS'} ? split(/:/, $ENV{'M2H_WEEKDAYS'}) : (); +@Months = $ENV{'M2H_MONTHS'} ? split(/:/, $ENV{'M2H_MONTHS'}) : (); +@months = $ENV{'M2H_MONTHSABR'} ? split(/:/, $ENV{'M2H_MONTHSABR'}) : (); +@Weekdays = $ENV{'M2H_WEEKDAYS'} ? split(/:/, $ENV{'M2H_WEEKDAYS'}) : (); @weekdays = $ENV{'M2H_WEEKDAYSABR'} ? split(/:/, $ENV{'M2H_WEEKDAYSABR'}) : (); ## Many of the following are set during runtime after the -## database has been read. The variables are listed here -## as a quick reference. -## -$IDXLABEL = ''; # Label for main index -$LIBEG = ''; # List open template for main index -$LIEND = ''; # List close template for main index -$LITMPL = ''; # List item template -$AUTHBEG = ''; # Begin of author group -$AUTHEND = ''; # End of author group -$DAYBEG = ''; # Begin of a day group -$DAYEND = ''; # End of a day group -$SUBJECTBEG = ''; # Begin of subject group -$SUBJECTEND = ''; # End of subject group - -$TIDXLABEL = ''; # Label for thread index -$THEAD = ''; # Thread index header (and list start) -$TFOOT = ''; # Thread index footer (and list end) -$TSINGLETXT = ''; # Single/lone thread entry template -$TTOPBEG = ''; # Top of a thread begin template -$TTOPEND = ''; # Top of a thread end template -$TSUBLISTBEG = ''; # Sub-thread list open -$TSUBLISTEND = ''; # Sub-thread list close -$TLITXT = ''; # Thread list item text -$TLIEND = ''; # Thread list item end -$TLINONE = ''; # List item for missing message in thread -$TLINONEEND = ''; # List item end for missing message in thread -$TSUBJECTBEG = ''; # Pre-text for subject-based items -$TSUBJECTEND = ''; # Post-text for subject-based items -$TINDENTBEG = ''; # Thread indent open -$TINDENTEND = ''; # Thread indent close -$TCONTBEG = ''; # Thread continue open -$TCONTEND = ''; # Thread continue close - -$TSLICEBEG = ''; # Start of thread slice -$TSLICEEND = ''; # End of thread slice - -$MSGFOOT = ''; # Message footer -$MSGHEAD = ''; # Message header -$TOPLINKS = ''; # Message links at top of message -$BOTLINKS = ''; # Message links at bottom of message -$SUBJECTHEADER = ''; # Markup for message main subject line -$HEADBODYSEP = ''; # Markup between mail header and body -$MSGBODYEND = ''; # Markup at end of message data - -$FIELDSBEG = ''; # Beginning markup for mail header -$FIELDSEND = ''; # End markup for mail header -$FLDBEG = ''; # Beginning markup for field text -$FLDEND = ''; # End markup for field text -$LABELBEG = ''; # Beginning markup for field label -$LABELEND = ''; # End markup for field label - -$NEXTBUTTON = ''; # Next button template -$NEXTBUTTONIA = ''; # Next inactive button template -$PREVBUTTON = ''; # Previous button template -$PREVBUTTONIA = ''; # Previous inactive button template -$NEXTLINK = ''; # Next link template -$NEXTLINKIA = ''; # Next inactive link template -$PREVLINK = ''; # Previous link template -$PREVLINKIA = ''; # Previous inactive link template - -$TNEXTBUTTON = ''; # Thread Next button template -$TNEXTBUTTONIA = ''; # Thread Next inactive button template -$TPREVBUTTON = ''; # Thread Previous button template -$TPREVBUTTONIA = ''; # Thread Previous inactive button template -$TNEXTLINK = ''; # Thread Next link template -$TNEXTLINKIA = ''; # Thread Next inactive link template -$TPREVLINK = ''; # Thread Previous link template -$TPREVLINKIA = ''; # Thread Previous inactive link template - -$IDXPGBEG = ''; # Beginning of main index page -$IDXPGEND = ''; # Ending of main index page -$TIDXPGBEG = ''; # Beginning of thread index page -$TIDXPGEND = ''; # Ending of thread index page - -$MSGPGBEG = ''; # Beginning of message page -$MSGPGEND = ''; # Ending of message page - -$NEXTPGLINK = ''; # Next page link template -$NEXTPGLINKIA = ''; # Next page inactive link template -$PREVPGLINK = ''; # Previous page link template -$PREVPGLINKIA = ''; # Previous page inactive link template - -$TNEXTPGLINK = ''; # Thread next page link template -$TNEXTPGLINKIA = ''; # Thread next page inactive link template -$TPREVPGLINK = ''; # Thread previous page link template -$TPREVPGLINKIA = ''; # Thread previous page inactive link template - -$FOLUPBEGIN = ''; # Start of follow-ups for message page -$FOLUPLITXT = ''; # Markup for follow-up list entry -$FOLUPEND = ''; # End of follow-ups for message page -$REFSBEGIN = ''; # Start of refs for message page -$REFSLITXT = ''; # Markup for ref list entry -$REFSEND = ''; # End of refs for message page - -$MSGIDLINK = ''; # Markup for linking message-ids +## database and resources have been read. The variables are +## listed here as a quick reference. + +$ADDSINGLE = 0; # Flag if adding a single message +$IDXONLY = 0; # Flag if generating index to stdout +$RMM = 0; # Flag if removing messages +$SCAN = 0; # Flag if doing an archive scan + +$IDXLABEL = ''; # Label for main index +$LIBEG = ''; # List open template for main index +$LIEND = ''; # List close template for main index +$LITMPL = ''; # List item template +$AUTHBEG = ''; # Begin of author group +$AUTHEND = ''; # End of author group +$DAYBEG = ''; # Begin of a day group +$DAYEND = ''; # End of a day group +$SUBJECTBEG = ''; # Begin of subject group +$SUBJECTEND = ''; # End of subject group + +$TIDXLABEL = ''; # Label for thread index +$THEAD = ''; # Thread index header (and list start) +$TFOOT = ''; # Thread index footer (and list end) +$TSINGLETXT = ''; # Single/lone thread entry template +$TTOPBEG = ''; # Top of a thread begin template +$TTOPEND = ''; # Top of a thread end template +$TSUBLISTBEG = ''; # Sub-thread list open +$TSUBLISTEND = ''; # Sub-thread list close +$TLITXT = ''; # Thread list item text +$TLIEND = ''; # Thread list item end +$TLINONE = ''; # List item for missing message in thread +$TLINONEEND = ''; # List item end for missing message in thread +$TSUBJECTBEG = ''; # Pre-text for subject-based items +$TSUBJECTEND = ''; # Post-text for subject-based items +$TINDENTBEG = ''; # Thread indent open +$TINDENTEND = ''; # Thread indent close +$TCONTBEG = ''; # Thread continue open +$TCONTEND = ''; # Thread continue close + +$TSLICEBEG = ''; # Start of thread slice +$TSLICEEND = ''; # End of thread slice + +$MSGFOOT = ''; # Message footer +$MSGHEAD = ''; # Message header +$TOPLINKS = ''; # Message links at top of message +$BOTLINKS = ''; # Message links at bottom of message +$SUBJECTHEADER = ''; # Markup for message main subject line +$HEADBODYSEP = ''; # Markup between mail header and body +$MSGBODYEND = ''; # Markup at end of message data + +$FIELDSBEG = ''; # Beginning markup for mail header +$FIELDSEND = ''; # End markup for mail header +$FLDBEG = ''; # Beginning markup for field text +$FLDEND = ''; # End markup for field text +$LABELBEG = ''; # Beginning markup for field label +$LABELEND = ''; # End markup for field label + +$NEXTBUTTON = ''; # Next button template +$NEXTBUTTONIA = ''; # Next inactive button template +$PREVBUTTON = ''; # Previous button template +$PREVBUTTONIA = ''; # Previous inactive button template +$NEXTLINK = ''; # Next link template +$NEXTLINKIA = ''; # Next inactive link template +$PREVLINK = ''; # Previous link template +$PREVLINKIA = ''; # Previous inactive link template + +$TNEXTBUTTON = ''; # Thread Next button template +$TNEXTBUTTONIA = ''; # Thread Next inactive button template +$TPREVBUTTON = ''; # Thread Previous button template +$TPREVBUTTONIA = ''; # Thread Previous inactive button template +$TNEXTLINK = ''; # Thread Next link template +$TNEXTLINKIA = ''; # Thread Next inactive link template +$TPREVLINK = ''; # Thread Previous link template +$TPREVLINKIA = ''; # Thread Previous inactive link template + +$IDXPGBEG = ''; # Beginning of main index page +$IDXPGEND = ''; # Ending of main index page +$TIDXPGBEG = ''; # Beginning of thread index page +$TIDXPGEND = ''; # Ending of thread index page + +$MSGPGBEG = ''; # Beginning of message page +$MSGPGEND = ''; # Ending of message page + +$NEXTPGLINK = ''; # Next page link template +$NEXTPGLINKIA = ''; # Next page inactive link template +$PREVPGLINK = ''; # Previous page link template +$PREVPGLINKIA = ''; # Previous page inactive link template + +$TNEXTPGLINK = ''; # Thread next page link template +$TNEXTPGLINKIA = ''; # Thread next page inactive link template +$TPREVPGLINK = ''; # Thread previous page link template +$TPREVPGLINKIA = ''; # Thread previous page inactive link template + +$FOLUPBEGIN = ''; # Start of follow-ups for message page +$FOLUPLITXT = ''; # Markup for follow-up list entry +$FOLUPEND = ''; # End of follow-ups for message page +$REFSBEGIN = ''; # Start of refs for message page +$REFSLITXT = ''; # Markup for ref list entry +$REFSEND = ''; # End of refs for message page + +$MSGIDLINK = ''; # Markup for linking message-ids + +$NOTE = ''; # Markup template when annotation available +$NOTEIA = ''; # Markup template when annotation not available +$NOTEICON = ''; # Markup template for note icon if annotation +$NOTEICONIA = ''; # Markup template for note icon if no annotation ## The following associative array if for defining custom ## resource variables @@ -463,9 +496,11 @@ package mhonarc; $X = "\034"; # Value separator (should equal $;) # NOTE: Older versions used this variable for # the multiple field separator in parsed - # message headers. $readmail'FieldSep should + # message headers. $readmail::FieldSep should # now be used (readmail.pl). +} + ##---------------------------------------------------------------------------## 1; diff --git a/lib/mhmimetypes.pl b/lib/mhmimetypes.pl new file mode 100644 index 0000000..00468af --- /dev/null +++ b/lib/mhmimetypes.pl @@ -0,0 +1,332 @@ +##---------------------------------------------------------------------------## +## File: +## @(#) mhmimetypes.pl 1.1 98/10/24 17:19:30 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## MIME type mappings. +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +package mhonarc; + +$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/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/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/vnd.framemaker', 'fm:FrameMaker document', + 'application/vnd.hp-hpgl', 'hpg,hpgl:HPGL file', + '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/vis5d', 'v5d:Vis5D dataset', + 'application/winhlp', 'hlp:WinHelp document', + 'application/wordperfect5.1', 'wp:WordPerfect 5.1 document', + 'application/x-net-install', 'ins:Net Install file', + 'application/x-asap', 'asp:asap file', + 'application/x-bcpio', 'bcpio:BCPIO file', + 'application/x-cpio', 'cpio:CPIO file', + 'application/x-csh', 'csh:C-Shell script', + 'application/x-compress', 'Z:Unix compressed data', + '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-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/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/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-input', 'gau:Gaussian chemical test', + '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 test', + '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/mopac-input', 'mop:MOPAC data ', + 'chemical/ncbi-asn1', 'asn:NCBI data', + 'chemical/pdb', 'pdb:PDB chemical test', + 'chemical/rosdal', 'ros:Rosdal 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/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/x-xwd', 'xwd:X window dump', + 'image/x-xwindowdump', 'xwd:X window dump', + + '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', + + '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]; + } 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 $ctype = lc shift; + my $sref = shift; + my $path = shift; + my $fname = shift; + my $inext = shift; + my($cnt, $pre, $ext, $pathname); + + local(*OUTFILE); + + $pathname = $OUTDIR; + if ($path) { + $pathname .= $DIRSEP . $path; + mkdir($pathname, 0777); + } + + ## If no filename specified, generate it + if (!$fname) { + ($cnt, $pre, $ext) = get_cnt($ctype, $pathname, $inext); + $fname = $pre . $cnt . '.' . $ext; + + ## Else, filename given + } else { + $fname =~ tr/ \t\n\r/_/; # Convert spaces to underscore + } + + ## Set pathname for file + $pathname .= $DIRSEP . $fname; + + if (open(OUTFILE, "> $pathname")) { + binmode(OUTFILE); # For MS-DOS + print OUTFILE $$sref; + close(OUTFILE); + } else { + warn qq/Warning: Unable to create "$pathname": $!\n/; + } + + join("", + ($mhonarc::SINGLE ? $mhonarc::OUTDIR.$mhonarc::DIRSEP : ""), + ($path ? join($mhonarc::DIRSEP,$path,$fname) : $fname)); +} + +##--------------------------------------------------------------------------- +## get_cnt(): Function that returns a list which can be used to +## generate a unique filename for a given content-type. +## +sub get_cnt { + my $ctype = shift; # content-type + my $dir = shift || $CURDIR; # directory + my $inext = shift; # passed in extension (optional) + + my(@files) = (); + my $ext = $inext || (get_mime_ext($ctype))[0]; + my $pre = $ext; + my $cnt = -1; + local(*DIR); + + substr($pre, 3) = "" if length($pre) > 3; + + if (!opendir(DIR, $dir)) { + warn qq/Warning: Unable to open "$dir": $!\n/; + } else { + @files = sort file_numeric grep(/^$pre\d+\.$ext$/i, readdir(DIR)); + closedir(DIR); + if (@files) { + ($cnt) = $files[$#files] =~ /(\d+)/; + } + } + ++$cnt; + (sprintf("%05d", $cnt), $pre, $ext); +} + +##--------------------------------------------------------------------------- + +sub file_numeric { + ($A) = $a =~ /(\d+)/; + ($B) = $b =~ /(\d+)/; + $A <=> $B; +} + +##--------------------------------------------------------------------------- + +sub dump_ctext_hash { + local($_); + foreach (sort keys %CTExt) { + print STDERR $_,":",$CTExt{$_},"\n"; + } +} + +##--------------------------------------------------------------------------- +1; diff --git a/lib/mhmsgfile.pl b/lib/mhmsgfile.pl new file mode 100644 index 0000000..66b7d31 --- /dev/null +++ b/lib/mhmsgfile.pl @@ -0,0 +1,127 @@ +##---------------------------------------------------------------------------## +## File: +## @(#) mhmsgfile.pl 1.1 98/08/10 23:56:33 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## MHonArc library for dealing with HTML message files. Mainly +## for parsing existing message files inorder to extract archive +## related data. +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +package mhonarc; + +##---------------------------------------------------------------------------## +## Dependent libraries: +## ewhutil.pl, mhtime.pl +##---------------------------------------------------------------------------## + +##---------------------------------------------------------------------------## +## parse_data_from_msg(): 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. +## +sub parse_data_from_msg { + my $fh = shift; # An open filehandle + my %field = (); + my($field, $value); + local($_); + + while (<$fh>) { + last if /^$//; # Remove comc + ($field, $value) = split(/: /, $_, 2); + push(@{$field{lc $field}}, uncommentize($value)); + } + \%field; +} + +##---------------------------------------------------------------------------## +## load_date_from_msg_file(): Function to read db data from a +## a MHonArc message file directly into db hashes. +## +sub load_data_from_msg_file { + my $filename = shift; # Name of file to read + my $msgnum = shift; # Message number for file + local(*MSGFILE); + + if (!open(MSGFILE, $filename)) { + warn qq/Warning: Unable to open "$filename": $!\n/; + return 0; + } + + my $href = parse_data_from_msg(\*MSGFILE); + close(MSGFILE); + + if (!defined($href->{'subject'})) { + warn qq/Warning: Unable to find Subject for "$filename"\n/; + return 0; + } + + my $index = ""; + my $date = $href->{'date'}[0]; + + ## Determine date of message + if (($date =~ /\S/) && (@array = parse_date($date))) { + $index = get_time_from_date(@array[1..$#array]); + } else { + $index = time; + $date = &time2str("", $index, 1) unless $date =~ /\S/; + } + $index .= $X . int($msgnum); + + ## Assign data to hashes + $Date{$index} = $date; + $Subject{$index} = $href->{'subject'}[0]; + $From{$index} = defined($href->{'from'}) ? $href->{'from'}[0] : + 'No author'; + if (defined($href->{'message-id'})) { + $Index2MsgId{$index} = $href->{'message-id'}[0]; + $MsgId{$href->{'message-id'}[0]} = $index; + $NewMsgId{$href->{'message-id'}[0]} = $index; + } + + if (defined($href->{'content-type'})) { + $ContentType{$index} = $href->{'content-type'}[0]; + } elsif (defined($href->{'contenttype'})) { # older versions + $ContentType{$index} = $href->{'contenttype'}[0]; + } + + if (defined($href->{'reference'})) { + $Refs{$index} = join($X, @{$href->{'reference'}}); + } elsif (defined($href->{'reference-id'})) { # older versions + $Refs{$index} = join($X, @{$href->{'reference-id'}}); + } + + if (defined($href->{'derived'})) { + $Derived{$index} = join($X, @{$href->{'derived'}}); + } + + $IndexNum{$index} = int($msgnum); + + 1; +} + +##---------------------------------------------------------------------------## +1; diff --git a/lib/mhnote.pl b/lib/mhnote.pl new file mode 100644 index 0000000..1c9c42c --- /dev/null +++ b/lib/mhnote.pl @@ -0,0 +1,120 @@ +##---------------------------------------------------------------------------## +## File: +## @(#) mhnote.pl 1.1 98/08/10 23:56:33 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## Annotation routine for MHonArc. +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +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; diff --git a/lib/mhnull.pl b/lib/mhnull.pl new file mode 100644 index 0000000..4902e11 --- /dev/null +++ b/lib/mhnull.pl @@ -0,0 +1,40 @@ +##---------------------------------------------------------------------------## +## File: +## @(#) mhnull.pl 1.2 98/09/30 22:51:11 +## Author: +## Earl Hood earlhood@usa.net +## 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 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +package m2h_null; + +sub filter { + " "; # Return a bogus space to denote success for readmail.pl +} + +##---------------------------------------------------------------------------## +1; diff --git a/lib/mhopt.pl b/lib/mhopt.pl index d004cba..c8b3581 100644 --- a/lib/mhopt.pl +++ b/lib/mhopt.pl @@ -1,13 +1,13 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhopt.pl 2.3 98/03/03 15:09:40 +## @(#) mhopt.pl 2.8 98/11/08 11:55:42 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Routines to set options for MHonArc. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1997-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1997-1998 Earl Hood, earlhood@usa.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 @@ -27,23 +27,30 @@ package mhonarc; +use Getopt::Long; + ##--------------------------------------------------------------------------- -## get_cli_opts() is responsible for grabbing command-line options -## and also settings the resource file. +## get_resources() is responsible for grabbing resource settings from +## the command-line and resource file(s). ## -sub get_cli_opts { - local($tmp, @array); +sub get_resources { + my($tmp); + my(%opt) = (); + local($_); die(qq{Try "$PROG -help" for usage information\n}) unless - &NGetOpt( + GetOptions(\%opt, "add", # Add a message to archive + "afs", # Bypass file permission checks + "annotate", # Add a note to message(s) "authsort", # Sort by author "archive", # Create an archive (the default) "conlen", # Honor Content-Length fields - "datefields=s", # Fields that contains the date of a message + "datefields=s", # Fields that contains the date of a message "dbfile=s", # Database/state filename for mhonarc archive "decodeheads", # Decode all 1522 encoded data in message headers - "definevars=s", # Define custom resource variables + "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 @@ -52,7 +59,7 @@ sub get_cli_opts { "folrefs", # Print links to explicit follow-ups/references "footer=s", # File containing user text for bottom of index page "force", # Perform archive operation even if unable to lock - "fromfields=s", # Fields that contains the "from" of a message + "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 @@ -63,7 +70,9 @@ sub get_cli_opts { "idxfname=s", # Filename of index page "idxprefix=s", # Filename prefix for multi-page main index "idxsize=i", # Maximum number of messages shown in indexes - "localdatefmt=s", # Date specification for local date + "localdatefmt=s", + # Date specification for local date + "lock", # Do archive locking (default) "lockdelay=i", # Time delay in seconds between lock tries "locktries=i", # Number of tries in locking an archive "mailtourl=s", # URL to use for e-mail address hyperlinks @@ -75,6 +84,7 @@ sub get_cli_opts { "modtime", # Set modification time on files to message date "months=s", # Month names "monthsabr=s", # Abbreviated month names + "msgpgs", # Create message pages "msgsep=s", # Message separator for mailbox files "msgprefix=s", # Filename prefix for message files "multipg", # Generate multi-page indexes @@ -82,35 +92,46 @@ sub get_cli_opts { "noauthsort", # Do not sort by author "noarchive", # Do not create an archive "noconlen", # Ignore Content-Length fields - "nodecodeheads",# Do not decode all 1522 encoded data in message headers + "nodecodeheads", + # Do not decode 1522 encoded data in message headers "nodoc", # Do not print link to doc at end of index page "nofolrefs", # Do not print links to explicit follow-ups/references "nogzipfiles", # Do not Gzip files "nogziplinks", # Do not add ".gz" extensions to files + "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 "noreverse", # List messages in normal order "nosort", # Do not sort "nosubsort", # Do not sort by subject + "notedir", # Location of notes + "notetext=s@", # Text data of note "nothread", # Do not create threaded index "notreverse", # List oldest thread first "nourl", # Do not make URL hyperlinks - "otherindexes=s", # List of other rcfiles for extra indexes + "otherindex|otherindexes=s@", + # List of other rcfiles for extra indexes "outdir=s", # Destination of HTML files - "perlinc=s", # List of paths to search for MIME filters + "pagenum=s", # Page to output if -genidx + "perlinc=s@", # List of paths to search for MIME filters "quiet", # No status messages while running - "rcfile=s", # Resource file for mhonarc + "rcfile=s@", # Resource file for mhonarc "reverse", # List messages in reverse order "rmm", # Remove messages from an archive "savemem", # Write message data while processing "scan", # List out archive contents to terminal "single", # Convert a single message to HTML "sort", # Sort messages in increasing date order - "subjectarticlerxp=s", # Regex for leading articles in subjects - "subjectreplyrxp=s", # Regex for leading reply string in subjects + "subjectarticlerxp=s", + # Regex for leading articles in subjects + "subjectreplyrxp=s", + # Regex for leading reply string in subjects + "subjectstripcode=s", + # Perl expression for modifying subjects "subsort", # Sort message by subject "tidxfname=s", # File name of threaded index page "tidxprefix=s", # Filename prefix for multi-page thread index @@ -128,108 +149,139 @@ sub get_cli_opts { "umask=i", # Set umask of process "url", # Make URL hyperlinks "weekdays=s", # Weekday names - "weekdaysabr=s",# Abbreviated 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 (defined($opt_help)) { - &usage(); - return 0; - } - if (defined($opt_v)) { - &version(); - return 0; - } + if ($opt{'help'}) { &usage(); return 0; } + if ($opt{'v'}) { &version(); return 0; } + + ## Initialize variables + require 'mhinit.pl' || die("ERROR: Unable to require mhinit.pl\n"); + &mhinit_vars(); ## These options have NO resource file equivalent. - ## - $ADD = defined($opt_add); - $RMM = defined($opt_rmm); - $SCAN = defined($opt_scan); - $QUIET = defined($opt_quiet); - $EDITIDX = defined($opt_editidx); - if (defined($opt_genidx)) { - $IDXONLY = 1; $QUIET = 1; + $NoArg = $opt{'noarg'}; + $ReadDB = $opt{'readdb'}; + + $ADD = $opt{'add'}; + $RMM = $opt{'rmm'}; + $SCAN = $opt{'scan'}; + $QUIET = $opt{'quiet'}; + $EDITIDX = $opt{'editidx'}; + $ANNOTATE= $opt{'annotate'}; + if ($opt{'genidx'}) { + $IDXONLY = 1; $QUIET = 1; $ADD = 0; } else { $IDXONLY = 0; } - if (defined($opt_single) && !$RMM) { + 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'}; + + my $dolock = !$opt{'nolock'}; ## Check argv - &usage() unless ($#ARGV >= 0) || $ADD || $SINGLE || - $EDITIDX || $SCAN || $IDXONLY; + unless (($#ARGV >= 0) || $ADD || $SINGLE || $EDITIDX || $SCAN || + $IDXONLY || $ReadDB || !$DoArchive || $NoArg) { + usage(); + return -1; + } ## Require needed libraries require 'timelocal.pl' || die("ERROR: Unable to require timelocal.pl\n"); require 'ewhutil.pl' || die("ERROR: Unable to require ewhutil.pl\n"); - require 'mhinit.pl' || die("ERROR: Unable to require mhinit.pl\n"); require 'mhtime.pl' || die("ERROR: Unable to require mhtime.pl\n"); require 'mhfile.pl' || die("ERROR: Unable to require mhfile.pl\n"); require 'mhutil.pl' || die("ERROR: Unable to require mhutil.pl\n"); + require 'mhscan.pl' || die("ERROR: Unable to require mhscan.pl\n") + if $SCAN; + require 'mhsingle.pl' || die("ERROR: Unable to require mhsingle.pl\n") + if $SINGLE; + require 'mhrmm.pl' || die("ERROR: Unable to require mhrmm.pl\n") + if $RMM; + require 'mhnote.pl' || die("ERROR: Unable to require mhnote.pl\n") + if $ANNOTATE; if ($DefRcFile) { &read_fmt_file($DefRcFile); } else { - $tmp = $ENV{'HOME'} . $DIRSEP . $DefRcName; - $tmp = $INC[0] . $DIRSEP . $DefRcName unless (-e $tmp); + $tmp = join($DIRSEP, $ENV{'HOME'}, $DefRcName); + $tmp = join($DIRSEP, $INC[0], $DefRcName) unless (-e $tmp); if (-e $tmp) { &read_fmt_file($tmp); } } ## Grab a few options - $FMTFILE = $opt_rcfile if $opt_rcfile; - $LOCKTRIES = $opt_locktries if ($opt_locktries > 0); - $LOCKDELAY = $opt_lockdelay if ($opt_lockdelay > 0); - $FORCELOCK = defined($opt_force); + @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'}; ## 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 (!$SINGLE && - (!(-r $OUTDIR) || !(-w $OUTDIR) || !(-x $OUTDIR))) { - die("ERROR: Unable to access $OUTDIR\n"); + $OUTDIR = $opt{'outdir'} if $opt{'outdir'}; + if (!$NoArg && !($SCAN || $IDXONLY)) { + 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; + } + $DBFILE = $opt{'dbfile'} if $opt{'dbfile'}; ## Create lockfile - ## - $LOCKFILE = "${OUTDIR}${DIRSEP}${LOCKFILE}"; - if (!$SINGLE && !&create_lock_file($LOCKFILE, 1, 0, 0)) { - print STDOUT "Trying to lock mail archive in $OUTDIR ...\n" + &set_handler(); + $LOCKFILE = join($DIRSEP, $OUTDIR, $LOCKFILE); + if ($dolock && $DoArchive && !$SINGLE && + !&create_lock_file($LOCKFILE, 1, 0, 0)) { + + print STDOUT qq/Trying to lock mail archive in "$OUTDIR" ...\n/ unless $QUIET; if (!&create_lock_file($LOCKFILE, $LOCKTRIES-1, $LOCKDELAY, $FORCELOCK)) { + $! = 75; # EX_TEMPFAIL (for sendmail) die("ERROR: Unable to create $LOCKFILE after $LOCKTRIES tries\n"); } } - ## Race condition exists: if process is terminated before termination - ## handlers set, lock file will not get removed. - ## - &set_handler(); - ## Check if we need to access database file - ## - if ($ADD || $EDITIDX || $RMM || $SCAN || $IDXONLY) { + if ($ReadDB) { $DBFILE = ".mail2html.db" - unless (-e "${OUTDIR}${DIRSEP}${DBFILE}") || - (!-e "${OUTDIR}${DIRSEP}.mail2html.db"); + unless (-e join($DIRSEP, $OUTDIR, $DBFILE)) || + (!-e join($DIRSEP, $OUTDIR, ".mail2html.db")); $DBPathName = join($DIRSEP, $OUTDIR, $DBFILE); + if (-e $DBPathName) { print STDOUT "Reading database ...\n" unless $QUIET; - require $DBPathName || + + ## 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"; @@ -241,156 +293,191 @@ sub get_cli_opts { unless $QUIET; &update_data_1_to_2(); } + + ## Set %Follow here just incase it does not get recomputed + %Follow = %FollowOld; + } + if (!$IDXONLY) { + if ($#ARGV < 0) { $ADDSINGLE = 1; } # See if adding single mesg + else { $ADDSINGLE = 0; } + $ADD = 'STDIN'; } - if ($#ARGV < 0) { $ADDSINGLE = 1; } # See if adding single mesg - else { $ADDSINGLE = 0; } - $ADD = 'STDIN'; } - local($OldMULTIIDX) = $MULTIIDX; + my($OldMULTIIDX) = $MULTIIDX; - ## Remove lock file if scanning messages - ## - if ($SCAN) { + ## Remove lock file if db not going to be changed + if ($SCAN || $IDXONLY) { &remove_lock_file(); } - ## Read resource file (I initially used the term 'format file'). - ## Look for resource in outdir if not absolute path or not - ## existing according to current value. - ## - if ($FMTFILE) { - $FMTFILE = join($DIRSEP, $OUTDIR, $FMTFILE) - unless ($FMTFILE =~ m%^/%) || (-e $FMTFILE); - &read_fmt_file($FMTFILE); + ## Read resource file(s) (I initially used the term 'format file'). + ## Look for resource in outdir unless existing according to + ## current value. + foreach (@FMTFILE) { + $_ = join($DIRSEP, $OUTDIR, $_) unless -e $_; + &read_fmt_file($_); } ## Check if extension for HTML files defined on the command-line - $HtmlExt = $opt_htmlext if defined($opt_htmlext); + $HtmlExt = $opt{'htmlext'} if defined($opt{'htmlext'}); $RFC1522 = 1; # Always True - unshift(@OtherIdxs, split(/$PATHSEP/o, $opt_otherindexes)) - if defined($opt_otherindexes); - unshift(@PerlINC, split(/$PATHSEP/o, $opt_perlinc)) - if defined($opt_perlinc); + ## 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); + } + &remove_dups(*OtherIdxs); &remove_dups(*PerlINC); - ## Require MIME filters and other libraries - ## + ## Require mail parsing library unshift(@INC, @PerlINC); if (!$SCAN) { - ## Require readmail library + # require readmail library require 'readmail.pl' || die("ERROR: Unable to require readmail.pl\n"); - $readmail'FormatHeaderFunc = "mhonarc'htmlize_header"; - $MHeadCnvFunc = "readmail'MAILdecode_1522_str"; + $readmail::FormatHeaderFunc = \&mhonarc::htmlize_header; + $MHeadCnvFunc = \&readmail::MAILdecode_1522_str; } ## Get other command-line options - ## - $DBFILE = $opt_dbfile if $opt_dbfile; # Set again to override db - $DBPathName = join($DIRSEP, $OUTDIR, $DBFILE); - $DOCURL = $opt_docurl if $opt_docurl; - $FOOTER = $opt_footer if $opt_footer; - $FROM = $opt_msgsep if $opt_msgsep; - $HEADER = $opt_header if $opt_header; - $IDXPREFIX = $opt_idxprefix if $opt_idxprefix; - $IDXSIZE = $opt_idxsize if defined($opt_idxsize); + $DBFILE = $opt{'dbfile'} if $opt{'dbfile'}; # Override db + $DBPathName = join($DIRSEP, $OUTDIR, $DBFILE); + + $DOCURL = $opt{'docurl'} if $opt{'docurl'}; + $FOOTER = $opt{'footer'} if $opt{'footer'}; + $FROM = $opt{'msgsep'} if $opt{'msgsep'}; + $HEADER = $opt{'header'} if $opt{'header'}; + $IDXPREFIX = $opt{'idxprefix'} if $opt{'idxprefix'}; + $IDXSIZE = $opt{'idxsize'} if defined($opt{'idxsize'}); $IDXSIZE *= -1 if $IDXSIZE < 0; - $OUTDIR = $opt_outdir if $opt_outdir; # Set again to override db - $MAILTOURL = $opt_mailtourl if $opt_mailtourl; - $MAXSIZE = $opt_maxsize if defined($opt_maxsize); + $OUTDIR = $opt{'outdir'} if $opt{'outdir'}; # Override db + $MAILTOURL = $opt{'mailtourl'} if $opt{'mailtourl'}; + $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; - - $IDXNAME = $opt_idxfname || $IDXNAME || $ENV{'M2H_IDXFNAME'} || + $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'}; + + $IDXNAME = $opt{'idxfname'} || $IDXNAME || $ENV{'M2H_IDXFNAME'} || "maillist.$HtmlExt"; - $TIDXNAME = $opt_tidxfname || $TIDXNAME || $ENV{'M2H_TIDXFNAME'} || + $TIDXNAME = $opt{'tidxfname'} || $TIDXNAME || $ENV{'M2H_TIDXFNAME'} || "threads.$HtmlExt"; - $ExpireDate = $opt_expiredate if $opt_expiredate; - $ExpireTime = $opt_expireage if $opt_expireage; + $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; + $GMTDateFmt = $opt{'gmtdatefmt'} if $opt{'gmtdatefmt'}; + $LocalDateFmt = $opt{'localdatefmt'} if $opt{'localdatefmt'}; + + $SubArtRxp = $opt{'subjectarticlerxp'} if $opt{'subjectarticlerxp'}; + $SubReplyRxp = $opt{'subjectreplyrxp'} if $opt{'subjectreplyrxp'}; + $SubStripCode = $opt{'subjectstripcode'} if $opt{'subjectstripcode'}; + + $IdxPageNum = $opt{'pagenum'} if defined($opt{'pagenum'}); - $SubArtRxp = $opt_subjectarticlerxp if $subjectarticlerxp; - $SubReplyRxp = $opt_subjectreplyrxp if $subjectreplyrxp; + ## 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 - %CustomRcVars = (%CustomRcVars, &parse_vardef_str($opt_definevars)) - if ($opt_definevars); - - $CONLEN = 1 if defined($opt_conlen); - $CONLEN = 0 if defined($opt_noconlen); - $MAIN = 1 if defined($opt_main); - $MAIN = 0 if defined($opt_nomain); - $MODTIME = 1 if defined($opt_modtime); - $MODTIME = 0 if defined($opt_nomodtime); - $MULTIIDX = 1 if defined($opt_multipg); - $MULTIIDX = 0 if defined($opt_nomultipg); - $NODOC = 0 if defined($opt_doc); - $NODOC = 1 if defined($opt_nodoc); - $NOMAILTO = 1 if defined($opt_nomailto); - $NONEWS = 0 if defined($opt_news); - $NONEWS = 1 if defined($opt_nonews); - $NOURL = 0 if defined($opt_url); - $NOURL = 1 if defined($opt_nourl); - $SLOW = 1 if defined($opt_savemem); - $THREAD = 1 if defined($opt_thread); - $THREAD = 0 if defined($opt_nothread); - $TREVERSE = 1 if defined($opt_treverse); - $TREVERSE = 0 if defined($opt_notreverse); - $DoArchive = 1 if defined($opt_archive); - $DoArchive = 0 if defined($opt_noarchive); - $DoFolRefs = 1 if defined($opt_folrefs); - $DoFolRefs = 0 if defined($opt_nofolrefs); - $GzipFiles = 1 if defined($opt_gzipfiles); - $GzipFiles = 0 if defined($opt_nogzipfiles); - $GzipLinks = 1 if defined($opt_gziplinks); - $GzipLinks = 0 if defined($opt_nogziplinks); - - $DecodeHeads = 1 if defined($opt_decodeheads); - $DecodeHeads = 0 if defined($opt_nodecodeheads); - $readmail'DecodeHeader = $DecodeHeads; - - @DateFields = split(/:/, $opt_datefields) if $opt_datefields; + 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'}; + + $DecodeHeads = 1 if $opt{'decodeheads'}; + $DecodeHeads = 0 if $opt{'nodecodeheads'}; + $readmail::DecodeHeader = $DecodeHeads; + + @DateFields = split(/:/, $opt{'datefields'}) if $opt{'datefields'}; foreach (@DateFields) { s/\s//g; tr/A-Z/a-z/; } - @FromFields = split(/:/, $opt_fromfields) if $opt_fromfields; + @FromFields = split(/:/, $opt{'fromfields'}) if $opt{'fromfields'}; foreach (@FromFields) { s/\s//g; tr/A-Z/a-z/; } - ($TSliceNBefore, $TSliceNAfter) = split(/:/, $opt_tslice) if $opt_tslice; + ($TSliceNBefore, $TSliceNAfter) = 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); + @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 $IDXONLY || !$IDXSIZE; + $MULTIIDX = 0 if !$IDXSIZE; ## Set umask if ($UNIX) { - $UMASK = $opt_umask if $opt_umask; - eval 'umask oct($UMASK)'; + $UMASK = $opt{'umask'} if defined($opt{'umask'}); + eval { umask oct($UMASK); }; } ## Get sort method - ## - $AUTHSORT = 1 if defined($opt_authsort); - $AUTHSORT = 0 if defined($opt_noauthsort); - $SUBSORT = 1 if defined($opt_subsort); - $SUBSORT = 0 if defined($opt_nosubsort); - $NOSORT = 1 if defined($opt_nosort); - $NOSORT = 0 if defined($opt_sort); - $REVSORT = 1 if defined($opt_reverse); - $REVSORT = 0 if defined($opt_noreverse); + $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) { @@ -398,56 +485,53 @@ sub get_cli_opts { } ## Check for thread listing order - $TSUBSORT = 1 if defined($opt_tsubsort); - $TSUBSORT = 0 if defined($opt_tnosubsort); - $TNOSORT = 1 if defined($opt_tnosort); - $TNOSORT = 0 if defined($opt_tsort); - $TREVERSE = 1 if defined($opt_treverse); - $TREVERSE = 0 if defined($opt_notreverse); + $TSUBSORT = 1 if $opt{'tsubsort'}; + $TSUBSORT = 0 if $opt{'tnosubsort'}; + $TNOSORT = 1 if $opt{'tnosort'}; + $TNOSORT = 0 if $opt{'tsort'}; + $TREVERSE = 1 if $opt{'treverse'}; + $TREVERSE = 0 if $opt{'notreverse'}; if ($TNOSORT) { $TSUBSORT = 0; } ## Check if all messages must be updated (this has been simplified; ## any serious change should be done via editidx). - ## - if ($RMM || $EDITIDX || ($OldMULTIIDX != $MULTIIDX)) { + if ($EDITIDX || ($OldMULTIIDX != $MULTIIDX)) { $UPDATE_ALL = 1; } else { $UPDATE_ALL = 0; } ## Set date names - ## &set_date_names(*weekdays, *Weekdays, *months, *Months); ## Require some more libaries + require 'mhidxrc.pl' || die("ERROR: Unable to require mhidxrc.pl\n"); + &mhidxrc_set_vars(); - ## Set index resources. - require 'mhidxrc.pl' || die("ERROR: Unable to require mhidxrc.pl\n"); - - ## Create dynamic subroutines. - require 'mhdysub.pl' || die("ERROR: Unable to require mhdysub.pl\n"); + require 'mhdysub.pl' || die("ERROR: Unable to require mhdysub.pl\n"); &create_routines(); - ## Require library for expanding resource variables require 'mhrcvars.pl' || die("ERROR: Unable to require mhrcvars.pl\n"); - - ## Require library containing thread routines + require 'mhindex.pl' || die("ERROR: Unable to require mhindex.pl\n"); require 'mhthread.pl' || die("ERROR: Unable to require mhthread.pl\n"); - - ## Require database write library if needed - if (!($SCAN || $IDXONLY)) { - require 'mhdb.pl' || die("ERROR: Unable to require mhdb.pl\n"); - } + require 'mhdb.pl' || die("ERROR: Unable to require mhdb.pl\n") + unless $SCAN || $IDXONLY || !$DoArchive; ## 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 { @@ -464,7 +548,6 @@ sub get_cli_opts { ## Delete bogus empty entries in hashes due to bug in earlier ## versions to avoid any future problems. - ## delete($IndexNum{''}); delete($Subject{''}); delete($From{''}); @@ -474,7 +557,7 @@ sub get_cli_opts { delete($Refs{''}); ## Check if printing process time - $TIME = defined($opt_time); + $TIME = $opt{'time'}; 1; } @@ -494,14 +577,15 @@ sub usage { require 'mhusage.pl' || die("ERROR: Unable to require mhusage.pl.\n", "Did you install MHonArc properly?\n"); + &mhusage(); } ##--------------------------------------------------------------------------- ## create_lock_file() creates a directory to act as a lock. ## sub create_lock_file { - local($file, $tries, $sleep, $force) = @_; - local($umask, $ret); + my($file, $tries, $sleep, $force) = @_; + my($umask, $ret); $ret = 0; while ($tries > 0) { if (mkdir($file, 0777)) { @@ -559,15 +643,15 @@ sub update_data_1_to_2 { ); #-------------------------------------- sub entname_to_char { - local($name) = shift; - local($ret) = $EntName2Char{$name}; + my($name) = shift; + my($ret) = $EntName2Char{$name}; if (!$ret) { $ret = "&$name;"; } $ret; } #-------------------------------------- - local($index); + my($index); foreach $index (keys %From) { $From{$index} =~ s/\&([\w-.]+);/&entname_to_char($1)/ge; } diff --git a/lib/mhrcfile.pl b/lib/mhrcfile.pl index 631fdb0..ee35ddd 100644 --- a/lib/mhrcfile.pl +++ b/lib/mhrcfile.pl @@ -1,13 +1,13 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhrcfile.pl 2.2 98/03/03 14:30:49 +## @(#) mhrcfile.pl 2.6 98/10/10 16:29:34 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Routines for parsing resource files ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1996-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1996-1998 Earl Hood, earlhood@usa.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 @@ -32,16 +32,14 @@ package mhonarc; ## (The code for this routine could probably be simplified). ## sub read_resource_file { - local($file) = shift; - local($line, $tag, $label, $acro, $hr, $type, $routine, $plfile, - $url, $arg, $tmp, @a); - local($elem, $attr, $override, $handle, $pathhead, $chop); + my($file) = shift; + my($line, $tag, $label, $acro, $hr, $type, $routine, $plfile, + $url, $arg, $tmp, @a); + my($elem, $attr, $override, $handle, $pathhead, $chop); $override = 0; - if (!($handle = &file_open($file))) { - warn "Warning: Unable to open resource file: $file\n"; - return 0; - } + $handle = &file_open($file); + if ($file =~ m%(.*[$DIRSEPREX])%o) { $pathhead = $1; } else { @@ -49,10 +47,11 @@ sub read_resource_file { } print STDOUT "Reading resource file: $file ...\n" unless $QUIET; - while ($line = <$handle>) { + while (defined($line = <$handle>)) { 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); @@ -77,10 +76,10 @@ sub read_resource_file { } if ($elem eq "charsetconverters") { # Charset filters if ($override) { - %readmail'MIMECharSetConverters = (); - %readmail'MIMECharSetConvertersSrc = (); + %readmail::MIMECharSetConverters = (); + %readmail::MIMECharSetConvertersSrc = (); } - while ($line = <$handle>) { + while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/charsetconverters\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; @@ -90,9 +89,9 @@ sub read_resource_file { ($type,$routine,$plfile) = split(/:/,$line,3); } $type =~ tr/A-Z/a-z/; - $readmail'MIMECharSetConverters{$type} = $routine; - $readmail'MIMECharSetConvertersSrc{$type} = $plfile - if $plfile =~ /\S/; + $readmail::MIMECharSetConverters{$type} = $routine; + $readmail::MIMECharSetConvertersSrc{$type} = $plfile + if defined($plfile) and $plfile =~ /\S/; } last FMTSW; } @@ -149,7 +148,7 @@ sub read_resource_file { } if ($elem eq "excs") { # Exclude header fields %HFieldsExc = () if $override; - while ($line = <$handle>) { + while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/excs\s*>/i; $line =~ s/\s//g; $line =~ tr/A-Z/a-z/; $HFieldsExc{$line} = 1 if $line; @@ -169,7 +168,7 @@ sub read_resource_file { last FMTSW; } if ($elem eq "fieldstyles") { # Field text style - while ($line = <$handle>) { + 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/; @@ -180,7 +179,7 @@ sub read_resource_file { } if ($elem eq "fieldorder") { # Field order @FieldOrder = (); %FieldODefs = (); - while ($line = <$handle>) { + 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/; @@ -206,18 +205,18 @@ sub read_resource_file { $FLDEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } - if ($elem eq "folrefs") { + if ($elem eq "folrefs") { # Print explicit fol/refs $DoFolRefs = 1; last FMTSW; } - if ($elem eq "folupbegin") { + if ($elem eq "folupbegin") { # Begin markup for follow-ups $FOLUPBEGIN = &get_elem_content($handle, $elem, $chop); last FMTSW; } - if ($elem eq "folupend") { + if ($elem eq "folupend") { # End markup for follow-ups $FOLUPEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } - if ($elem eq "foluplitxt") { + if ($elem eq "foluplitxt") { # Follow-up link markup $FOLUPLITXT = &get_elem_content($handle, $elem, $chop); last FMTSW; } @@ -228,7 +227,7 @@ sub read_resource_file { } last FMTSW; } - if ($elem eq "fromfields") { + if ($elem eq "fromfields") { # Fields to get author @a = &get_list_content($handle, $elem); if (@a) { @FromFields = @a; } last FMTSW; @@ -272,7 +271,7 @@ sub read_resource_file { } if ($elem eq "icons") { # Icons %Icons = () if $override; - while ($line = <$handle>) { + while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/icons\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; @@ -315,7 +314,7 @@ sub read_resource_file { last FMTSW; } if ($elem eq "include") { # Include other rc files - while ($line = <$handle>) { + while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/include\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s+$//; @@ -333,7 +332,7 @@ sub read_resource_file { last FMTSW; } if ($elem eq "labelstyles") { # Field label style - while ($line = <$handle>) { + 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/; @@ -364,7 +363,7 @@ sub read_resource_file { $NOMAILTO = 0; last FMTSW; } if ($elem eq "mailtourl") { # mailto URL - while ($line = <$handle>) { + while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mailtourl\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; @@ -372,7 +371,7 @@ sub read_resource_file { } last FMTSW; } - if ($elem eq "main") { + if ($elem eq "main") { # Print main index $MAIN = 1; last FMTSW; } if ($elem eq "maxsize") { # Size of archive @@ -381,10 +380,13 @@ sub read_resource_file { } last FMTSW; } - if ($elem eq "msgbodyend") { + if ($elem eq "msgbodyend") { # Markup after message body $MSGBODYEND = &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; @@ -400,10 +402,10 @@ sub read_resource_file { } if ($elem eq "mimefilters") { # Mime filters if ($override) { - %readmail'MIMEFilters = (); - %readmail'MIMEFiltersSrc = (); + %readmail::MIMEFilters = (); + %readmail::MIMEFiltersSrc = (); } - while ($line = <$handle>) { + while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mimefilters\s*>/i; next if $line =~ /^\s*$/; $line =~ s/\s//g; @@ -413,14 +415,14 @@ sub read_resource_file { ($type,$routine,$plfile) = split(/:/,$line,3); } $type =~ tr/A-Z/a-z/; - $readmail'MIMEFilters{$type} = $routine; - $readmail'MIMEFiltersSrc{$type} = $plfile if $plfile =~ /\S/; + $readmail::MIMEFilters{$type} = $routine; + $readmail::MIMEFiltersSrc{$type} = $plfile if $plfile =~ /\S/; } last FMTSW; } if ($elem eq "mimeargs") { # Mime arguments - %readmail'MIMEFiltersArgs = () if $override; - while ($line = <$handle>) { + %readmail::MIMEFiltersArgs = () if $override; + while (defined($line = <$handle>)) { last if $line =~ /^\s*<\/mimeargs\s*>/i; next unless $line =~ /\S/; $line =~ s/^\s+//; @@ -430,7 +432,7 @@ sub read_resource_file { ($type, $arg) = split(/:/,$line,2); } $type =~ tr/A-Z/a-z/ if $type =~ m%/%; - $readmail'MIMEFiltersArgs{$type} = $arg; + $readmail::MIMEFiltersArgs{$type} = $arg; } last FMTSW; } @@ -489,7 +491,7 @@ sub read_resource_file { } last FMTSW; } - if ($elem eq "multipg") { + if ($elem eq "multipg") { # Print multi-page indexes $MULTIIDX = 1; last FMTSW; } if ($elem eq "nextbutton") { # Next button link in message @@ -526,19 +528,19 @@ sub read_resource_file { if ($elem eq "noconlen") { # Ignore content-length $CONLEN = 0; last FMTSW; } - if ($elem eq "nodecodeheads") { + 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 "nofolrefs") { + if ($elem eq "nofolrefs") { # Don't print explicit fol/refs $DoFolRefs = 0; last FMTSW; } - if ($elem eq "nogzipfiles") { + if ($elem eq "nogzipfiles") { # Don't gzip files $GzipFiles = 0; last FMTSW; } - if ($elem eq "nogziplinks") { + if ($elem eq "nogziplinks") { # Don't add ".gz" to links $GzipLinks = 0; last FMTSW; } if ($elem eq "nomailto") { # Do not convert e-mail addrs @@ -550,6 +552,9 @@ sub read_resource_file { 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; } @@ -567,6 +572,28 @@ sub read_resource_file { $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; } @@ -576,7 +603,10 @@ sub read_resource_file { if ($elem eq "nourl") { # Ignore URLs $NOURL = 1; last FMTSW; } - if ($elem eq "nousinglastpg") { + 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 @@ -593,7 +623,7 @@ sub read_resource_file { $PREVBUTTON = &get_elem_content($handle, $elem, $chop); last FMTSW; } - if ($elem eq "prevbuttonia") { + if ($elem eq "prevbuttonia") { # Prev i/a button link $PREVBUTTONIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } @@ -601,7 +631,7 @@ sub read_resource_file { $PREVLINK = &get_elem_content($handle, $elem, $chop); last FMTSW; } - if ($elem eq "prevlinkia") { + if ($elem eq "prevlinkia") { # Prev i/a link $PREVLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } @@ -613,15 +643,15 @@ sub read_resource_file { $PREVPGLINKIA = &get_elem_content($handle, $elem, $chop); last FMTSW; } - if ($elem eq "refsbegin") { + if ($elem eq "refsbegin") { # Explicit ref links begin $REFSBEGIN = &get_elem_content($handle, $elem, $chop); last FMTSW; } - if ($elem eq "refsend") { + if ($elem eq "refsend") { # Explicit ref links end $REFSEND = &get_elem_content($handle, $elem, $chop); last FMTSW; } - if ($elem eq "refslitxt") { + if ($elem eq "refslitxt") { # Explicit ref link $REFSLITXT = &get_elem_content($handle, $elem, $chop); last FMTSW; } @@ -634,18 +664,22 @@ sub read_resource_file { $AUTHSORT = 0; $SUBSORT = 0; last FMTSW; } - if ($elem eq "subjectarticlerxp") { + if ($elem eq "subjectarticlerxp") { # Regex for language articles if ($line = &get_elem_last_line($handle, $elem)) { $SubArtRxp = $line; } last FMTSW; } - if ($elem eq "subjectreplyrxp") { + 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 "subsort") { # Sort messages by subject $SUBSORT = 1; $AUTHSORT = 0; $NOSORT = 0; @@ -707,7 +741,7 @@ sub read_resource_file { } if ($elem eq "timezones") { # Time zones %Zone = () if $override; - while ($line = <$handle>) { + 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); @@ -876,6 +910,9 @@ sub read_resource_file { } last FMTSW; } + if ($elem eq "uselocaltime") { # Use localtime for day groups + $UseLocalTime = 1; last FMTSW; + } if ($elem eq "usinglastpg") { $UsingLASTPG = 1; last FMTSW; } diff --git a/lib/mhrcvars.pl b/lib/mhrcvars.pl index f8063f6..97e3239 100644 --- a/lib/mhrcvars.pl +++ b/lib/mhrcvars.pl @@ -1,13 +1,13 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhrcvars.pl 2.2 98/03/03 14:31:22 +## @(#) mhrcvars.pl 2.5 98/11/02 22:32:45 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Defines routine for expanding resource variables. ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1996-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1996-1998 Earl Hood, earlhood@usa.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 @@ -27,266 +27,334 @@ 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 { - local($val, $index) = ($_[0], $_[1]); - local($var,$len,$canclip,$raw,$isurl,$tmp,$ret) = ('',0,0,0,0,'',''); - local($expand) = (0); - local($n) = (0); - local($pi, $ni, $tni, $tpi, - $isfirst, $islast, $tisfirst, $tislast); + 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($isfirst, $islast, $tisfirst, $tislast); + my($lref, $key, $pos); + my($arg, $opt) = ("", ""); + + ## 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//ig); + $jstr = 1 if ($len =~ s/j//ig); ## Set index related variables if ($index ne '') { if ($REVSORT) { - $ni = $MListOrder[$Index2MLoc{$index}-1]; - $pi = $MListOrder[$Index2MLoc{$index}+1]; $isfirst = ($Index2MLoc{$index} == $#MListOrder); $islast = ($Index2MLoc{$index} == 0); } else { - $ni = $MListOrder[$Index2MLoc{$index}+1]; - $pi = $MListOrder[$Index2MLoc{$index}-1]; $isfirst = ($Index2MLoc{$index} == 0); $islast = ($Index2MLoc{$index} == $#MListOrder); } - $tni = $TListOrder[$Index2TLoc{$index}+1]; - $tpi = $TListOrder[$Index2TLoc{$index}-1]; $tisfirst = ($Index2TLoc{$index} == 0); $tislast = ($Index2TLoc{$index} == $#TListOrder); } ## Do variable replacement REPLACESW: { - if ($var eq 'SUBJECT') { - $canclip = 1; $raw = 1; $isurl = 0; - $tmp = $Subject{$index}; - last REPLACESW; - } - if ($var eq 'SUBJECTNA') { - $canclip = 1; $raw = 1; - $tmp = $Subject{$index}; - last REPLACESW; - } - if ($var eq 'A_ATTR') { - $isurl = 0; - $tmp = qq{NAME="} . &fmt_msgnum($IndexNum{$index}) . - qq{" HREF="} . - &msgnum_filename($IndexNum{$index}) . - qq{"}; - last REPLACESW; - } - if ($var eq 'A_NAME') { - $isurl = 0; - $tmp = qq{NAME="} . &fmt_msgnum($IndexNum{$index}) . qq{"}; - last REPLACESW; - } - if ($var eq 'A_HREF') { - $isurl = 0; - $tmp = qq{HREF="} . &msgnum_filename($IndexNum{$index}) . qq{"}; - last REPLACESW; - } - if ($var eq 'DATE') { - $tmp = $Date{$index}; - last REPLACESW; - } - if ($var eq 'DDMMYY') { - $tmp = &time2mmddyy((split(/$X/o, $index))[0], 'ddmmyy'); - last REPLACESW; - } - if ($var eq 'DOCURL') { - $isurl = 0; - $tmp = $DOCURL; - last REPLACESW; - } - if ($var eq 'FROM') { - $canclip = 1; $raw = 1; - $tmp = $From{$index}; - last REPLACESW; - } - if ($var eq 'FROMADDR') { - $canclip = 1; $raw = 1; - $tmp = &extract_email_address($From{$index}); - last REPLACESW; - } - if ($var eq 'FROMNAME') { + + ## -------------------------------------- ## + ## 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; + } + my($cnd1, $cnd2, $cnd3) = (0,0,0); + if (($cnd1 = ($var eq 'FROM')) || ## Message "From:" + ($cnd2 = ($var eq 'FROMADDR')) || ## Message from mail address + ($cnd3 = ($var eq 'FROMNAME'))) { ## Message from name + my $esub = $cnd1 ? sub { $_[0]; } : + $cnd2 ? \&extract_email_address : + \&extract_email_name; $canclip = 1; $raw = 1; - $tmp = &extract_email_name($From{$index}); + ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); + $tmp = defined($key) ? &$esub($From{$key}) : "(nil)"; last REPLACESW; } - if ($var eq 'GMTDATE') { - $tmp = &time2str($GMTDateFmt, time, 0); + if ($var eq 'ICON') { ## Message icon + ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); + if (!defined($key)) { $tmp = ""; last REPLACESW; } + $tmp = $Icons{$ContentType{$key}} ? + join(qq||) : + qq|[unknown]|; last REPLACESW; } - if ($var eq 'ICON') { - if ($Icons{$ContentType{$index}}) { - $tmp = qq||; - } else { - $tmp = qq|[unknown]|; - } - last REPLACESW; - } - if ($var eq 'ICONURL') { + if ($var eq 'ICONURL') { ## URL to message icon $isurl = 0; - if ($Icons{$ContentType{$index}}) { - $tmp = $Icons{$ContentType{$index}}; + ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); + if ($Icons{$ContentType{$key}}) { + $tmp = $Icons{$ContentType{$key}}; } else { $tmp = $Icons{'unknown'}; } last REPLACESW; } - if ($var eq 'IDXFNAME') { - if ($MULTIIDX && - ($n = int($Index2MLoc{$index}/$IDXSIZE)+1) > 1) { - - $tmp = sprintf("%s%d.$HtmlExt", - $IDXPREFIX, $index ne '' ? $n : 1); - - } else { - $tmp = $IDXNAME; - } - $tmp .= ".gz" if $GzipLinks; - last REPLACESW; - } - if ($var eq 'IDXLABEL') { - $tmp = $IDXLABEL; - last REPLACESW; - } - if ($var eq 'IDXSIZE') { - $tmp = $IDXSIZE; + if ($var eq 'MSG') { ## Filename of message page + ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); + $tmp = defined($key) ? &msgnum_filename($IndexNum{$key}) : ""; last REPLACESW; } - if ($var eq 'IDXTITLE') { - $canclip = 1; $expand = 1; - $tmp = $TITLE; + if ($var eq 'MSGGMTDATE') { ## Message GMT date + ($lref, $key, $pos, $opt) = compute_msg_pos($index, $var, $arg); + $tmp = &time2str($opt || $MsgGMTDateFmt, + &get_time_from_index($key), 0); last REPLACESW; } - if ($var eq 'LOCALDATE') { - $tmp = &time2str($LocalDateFmt, time, 1); + if ($var eq 'MSGID') { ## Message-ID + ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); + $tmp = defined($key) ? $Index2MsgId{$index} : ""; last REPLACESW; } - if ($var eq 'MMDDYY') { - $tmp = &time2mmddyy((split(/$X/o, $index))[0], 'mmddyy'); + if ($var eq 'MSGLOCALDATE') { ## Message local date + ($lref, $key, $pos, $opt) = compute_msg_pos($index, $var, $arg); + $tmp = &time2str($opt || $MsgLocalDateFmt, + &get_time_from_index($key), 1); last REPLACESW; } - if ($var eq 'MSGGMTDATE') { - $tmp = &time2str($MsgGMTDateFmt, &get_time_from_index($index), 0); + 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 'MSGID') { - &defineIndex2MsgId(); - $tmp = $Index2MsgId{$index}; + 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 'MSGLOCALDATE') { - $tmp = &time2str($MsgLocalDateFmt, &get_time_from_index($index), 1); + 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 'MSGNUM') { - $tmp = &fmt_msgnum($IndexNum{$index}); + if ($var eq 'NOTETEXT') { ## Annotation text + ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); + $tmp = get_note($key); last REPLACESW; } - if ($var eq 'MSGPREFIX') { - $tmp = $MsgPrefix; + 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 'NEXTFROM') { - $canclip = 1; $raw = 1; - $tmp = $From{$ni}; + 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 'NEXTFROMADDR') { - $canclip = 1; $raw = 1; - $tmp = &extract_email_address($From{$ni}); + if ($var eq 'SUBJECT') { ## Message subject + $canclip = 1; $raw = 1; $isurl = 0; + ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); + $tmp = defined($key) ? $Subject{$key} : ""; last REPLACESW; } - if ($var eq 'NEXTFROMNAME') { + if ($var eq 'SUBJECTNA') { ## Message subject (not linked) $canclip = 1; $raw = 1; - $tmp = &extract_email_name($From{$ni}); - last REPLACESW; - } - if ($var eq 'NEXTMSG') { - $tmp = &msgnum_filename($IndexNum{$ni}); + ($lref, $key, $pos) = compute_msg_pos($index, $var, $arg); + $tmp = defined($key) ? $Subject{$key} : ""; last REPLACESW; } - if ($var eq 'NEXTMSGNUM') { - $tmp = &fmt_msgnum($IndexNum{$ni}); - last REPLACESW; - } - if ($var eq 'NEXTSUBJECT') { - $canclip = 1; $raw = 1; - $tmp = $Subject{$ni}; + + ## ------------------------------------- ## + ## Message navigation resource variables ## + ## ------------------------------------- ## + if ($var eq 'BUTTON') { + $expand = 1; + SW: { + if ($arg eq 'NEXT') { + $tmp = (!$islast) ? $NEXTBUTTON : $NEXTBUTTONIA; + last SW; } + if ($arg eq 'PREV') { + $tmp = (!$isfirst) ? $PREVBUTTON : $PREVBUTTONIA; + last SW; } + if ($arg eq 'TNEXT') { + $tmp = (!$tislast) ? $TNEXTBUTTON : $TNEXTBUTTONIA; + last SW; } + if ($arg eq 'TPREV') { + $tmp = (!$tisfirst) ? $TPREVBUTTON : $TPREVBUTTONIA; + last SW; } + } last REPLACESW; } - if ($var eq 'NUMFOLUP') { - $tmp = $FolCnt{$index}; + if ($var eq 'LINK') { + $expand = 1; + SW: { + if ($arg eq 'NEXT') { + $tmp = (!$islast) ? $NEXTLINK : $NEXTLINKIA; + last SW; } + if ($arg eq 'PREV') { + $tmp = (!$isfirst) ? $PREVLINK : $PREVLINKIA; + last SW; } + if ($arg eq 'TNEXT') { + $tmp = (!$tislast) ? $TNEXTLINK : $TNEXTLINKIA; + last SW; } + if ($arg eq 'TPREV') { + $tmp = (!$tisfirst) ? $TPREVLINK : $TPREVLINKIA; + last SW; } + } last REPLACESW; } - if ($var eq 'NUMOFIDXMSG') { - $tmp = ($NumOfMsgs > $IDXSIZE ? $IDXSIZE : $NumOfMsgs); + + if ($var eq 'TSLICE') { + $tmp = &make_thread_slice($index, $TSliceNBefore, $TSliceNAfter) + if ($TSliceNBefore != 0 || $TSliceNAfter != 0); last REPLACESW; } - if ($var eq 'NUMOFMSG') { - $tmp = $NumOfMsgs; + + ## -------------------------------- ## + ## 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 'ORDNUM') { - $tmp = $i+1; + 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 'OUTDIR') { - $tmp = $OUTDIR; + 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 'PREVFROM') { - $canclip = 1; $raw = 1; - $tmp = $From{$pi}; + if ($var eq 'IDXFNAME') { ## Filename of index page + if ($MULTIIDX && ($n = int($Index2MLoc{$index}/$IDXSIZE)+1) > 1) { + $tmp = sprintf("%s%d.$HtmlExt", + $IDXPREFIX, $index ne '' ? $n : 1); + } else { + $tmp = $IDXNAME; + } + $tmp .= ".gz" if $GzipLinks; last REPLACESW; } - if ($var eq 'PREVFROMADDR') { - $canclip = 1; $raw = 1; - $tmp = &extract_email_address($From{$pi}); + if ($var eq 'IDXLABEL') { ## Label for main index + $tmp = $IDXLABEL; last REPLACESW; } - if ($var eq 'PREVFROMNAME') { - $canclip = 1; $raw = 1; - $tmp = &extract_email_name($From{$pi}); + if ($var eq 'IDXSIZE') { ## Index page size + $tmp = $IDXSIZE; last REPLACESW; } - if ($var eq 'PREVMSG') { - $tmp = &msgnum_filename($IndexNum{$pi}); + if ($var eq 'IDXTITLE') { ## Main index title + $canclip = 1; $expand = 1; + $tmp = $TITLE; last REPLACESW; } - if ($var eq 'PREVMSGNUM') { - $tmp = &fmt_msgnum($IndexNum{$pi}); + if ($var eq 'NUMOFIDXMSG') { ## Number of item on the index page + $tmp = $PageSize; last REPLACESW; } - if ($var eq 'PREVSUBJECT') { - $canclip = 1; $raw = 1; - $tmp = $Subject{$pi}; + if ($var eq 'NUMOFMSG') { ## Total number of messages + $tmp = $NumOfMsgs; last REPLACESW; } - if ($var eq 'PROG') { - $tmp = $PROG; + 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) { - + if ($MULTIIDX && ($n = int($Index2TLoc{$index}/$IDXSIZE)+1) > 1) { $tmp = sprintf("%s%d.$HtmlExt", $TIDXPREFIX, $index ne '' ? $n : 1); - } else { $tmp = $TIDXNAME; } @@ -302,154 +370,37 @@ sub replace_li_var { $tmp = $TTITLE; last REPLACESW; } - if ($var eq 'TSLICE') { - $tmp = &make_thread_slice($index, $TSliceNBefore, $TSliceNAfter); - last REPLACESW; - } - if ($var eq 'VERSION') { - $tmp = $VERSION; - last REPLACESW; - } - if ($var eq 'YYMMDD') { - $tmp = &time2mmddyy((split(/$X/o, $index))[0], 'yymmdd'); - last REPLACESW; - } - if ($var eq '') { - $tmp = '$'; - last REPLACESW; - } - - ## - ## Next/Prev buttons/links - ## - if ($var eq 'NEXTBUTTON') { - $expand = 1; - $tmp = (!$islast) ? $NEXTBUTTON : $NEXTBUTTONIA; - last REPLACESW; - } - if ($var eq 'NEXTLINK') { - $expand = 1; - $tmp = (!$islast) ? $NEXTLINK : $NEXTLINKIA; - last REPLACESW; - } - if ($var eq 'PREVBUTTON') { - $expand = 1; - $tmp = (!$isfirst) ? $PREVBUTTON : $PREVBUTTONIA; - last REPLACESW; - } - if ($var eq 'PREVLINK') { - $expand = 1; - $tmp = (!$isfirst) ? $PREVLINK : $PREVLINKIA; + if ($var eq 'TSORTTYPE') { + TSORTTYPE: { + if ($TNOSORT) { $tmp = 'Number'; last TSORTTYPE; } + if ($TSUBSORT) { $tmp = 'Subject'; last TSORTTYPE; } + $tmp = 'Date'; + last TSORTTYPE; + } last REPLACESW; } - ## - ## Thread Next/Prev buttons/links - ## - if ($var eq 'TNEXTBUTTON') { - $expand = 1; - $tmp = (!$tislast) ? $TNEXTBUTTON : $TNEXTBUTTONIA; - last REPLACESW; - } - if ($var eq 'TNEXTLINK') { - $expand = 1; - $tmp = (!$tislast) ? $TNEXTLINK : $TNEXTLINKIA; - last REPLACESW; - } - if ($var eq 'TPREVBUTTON') { - $expand = 1; - $tmp = (!$tisfirst) ? $TPREVBUTTON : $TPREVBUTTONIA; - last REPLACESW; - } - if ($var eq 'TPREVLINK') { + if ($var eq 'PGLINK') { $expand = 1; - $tmp = (!$tisfirst) ? $TPREVLINK : $TPREVLINKIA; - last REPLACESW; - } - - ## - ## Thread related variables - ## - if ($var eq 'TNEXTFROM') { - $canclip = 1; $raw = 1; - $tmp = $From{$tni}; - last REPLACESW; - } - if ($var eq 'TNEXTFROMADDR') { - $canclip = 1; $raw = 1; - $tmp = &extract_email_address($From{$tni}); - last REPLACESW; - } - if ($var eq 'TNEXTFROMNAME') { - $canclip = 1; $raw = 1; - $tmp = &extract_email_name($From{$tni}); - last REPLACESW; - } - if ($var eq 'TNEXTMSG') { - $tmp = &msgnum_filename($IndexNum{$tni}); - last REPLACESW; - } - if ($var eq 'TNEXTMSGNUM') { - $tmp = &fmt_msgnum($IndexNum{$tni}); - last REPLACESW; - } - if ($var eq 'TNEXTSUBJECT') { - $canclip = 1; $raw = 1; - $tmp = $Subject{$tni}; - last REPLACESW; - } - if ($var eq 'TPREVFROM') { - $canclip = 1; $raw = 1; - $tmp = $From{$tpi}; - last REPLACESW; - } - if ($var eq 'TPREVFROMADDR') { - $canclip = 1; $raw = 1; - $tmp = &extract_email_address($From{$tpi}); - last REPLACESW; - } - if ($var eq 'TPREVFROMNAME') { - $canclip = 1; $raw = 1; - $tmp = &extract_email_name($From{$tpi}); - last REPLACESW; - } - if ($var eq 'TPREVMSG') { - $tmp = &msgnum_filename($IndexNum{$tpi}); - last REPLACESW; - } - if ($var eq 'TPREVMSGNUM') { - $tmp = &fmt_msgnum($IndexNum{$tpi}); - last REPLACESW; - } - if ($var eq 'TPREVSUBJECT') { - $canclip = 1; $raw = 1; - $tmp = $Subject{$tpi}; + SW: { + if ($arg eq 'NEXT') { + $tmp = $PageNum < $NumOfPages ? + $NEXTPGLINK : $NEXTPGLINKIA; + last SW; } + if ($arg eq 'PREV') { + $tmp = $PageNum > 1 ? $PREVPGLINK : $PREVPGLINKIA; + last SW; } + if ($arg eq 'TNEXT') { + $tmp = $PageNum < $NumOfPages ? + $TNEXTPGLINK : $TNEXTPGLINKIA; + last SW; } + if ($arg eq 'TPREV') { + $tmp = $PageNum > 1 ? $TPREVPGLINK : $TPREVPGLINKIA; + last SW; } + } last REPLACESW; } - ## - ## Multi-page index variables - ## - if ($var eq 'NEXTPGLINK') { - $expand = 1; - $tmp = $PageNum < $NumOfPages ? $NEXTPGLINK : $NEXTPGLINKIA; - last REPLACESW; - } - if ($var eq 'PREVPGLINK') { - $expand = 1; - $tmp = $PageNum > 1 ? $PREVPGLINK : $PREVPGLINKIA; - last REPLACESW; - } - if ($var eq 'TNEXTPGLINK') { - $expand = 1; - $tmp = $PageNum < $NumOfPages ? $TNEXTPGLINK : $TNEXTPGLINKIA; - last REPLACESW; - } - if ($var eq 'TPREVPGLINK') { - $expand = 1; - $tmp = $PageNum > 1 ? $TPREVPGLINK : $TPREVPGLINKIA; - last REPLACESW; - } if ($var eq 'PAGENUM') { $tmp = $PageNum; last REPLACESW; @@ -458,73 +409,83 @@ sub replace_li_var { $tmp = $NumOfPages; last REPLACESW; } - if ($var eq 'NEXTPG') { - $tmp = sprintf("%s%d.$HtmlExt", $IDXPREFIX, $PageNum+1); - $tmp .= ".gz" if $GzipLinks; - last REPLACESW; - } - if ($var eq 'PREVPG') { - $tmp = $PageNum > 2 ? - sprintf("%s%d.$HtmlExt", $IDXPREFIX, $PageNum-1) : - $IDXNAME; + + 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 = $NumOfPages; last SW; } + if ($arg =~ /^-?\d+$/) { $num = $PageNum+$arg; last SW; } + } + if ($num < 2) { + $tmp = $t ? $TIDXNAME : $IDXNAME; + } else { + $num = $NumOfPages if $num > $NumOfPages; + $tmp = sprintf("%s%d.$HtmlExt", $prefix, $num); + } $tmp .= ".gz" if $GzipLinks; last REPLACESW; } - if ($var eq 'TNEXTPG') { - $tmp = sprintf("%s%d.$HtmlExt", $TIDXPREFIX, $PageNum+1); - $tmp .= ".gz" if $GzipLinks; + + ## -------------------------------- ## + ## Miscellaneous resource variables ## + ## -------------------------------- ## + if ($var eq 'DOCURL') { + $isurl = 0; + $tmp = $DOCURL; last REPLACESW; } - if ($var eq 'TPREVPG') { - $tmp = $PageNum > 2 ? - sprintf("%s%d.$HtmlExt", $TIDXPREFIX, $PageNum-1) : - $TIDXNAME; - $tmp .= ".gz" if $GzipLinks; + if ($var eq 'GMTDATE') { + $tmp = &time2str($arg || $GMTDateFmt, time, 0); last REPLACESW; } - if ($var eq 'FIRSTPG') { - $tmp = $IDXNAME; - $tmp .= ".gz" if $GzipLinks; + if ($var eq 'IDXPREFIX') { + $tmp = $IDXPREFIX; last REPLACESW; } - if ($var eq 'LASTPG') { - $tmp = ($MULTIIDX && $NumOfPages > 1 ? sprintf("%s%d.$HtmlExt", - $IDXPREFIX, $NumOfPages) : - $IDXNAME); - $tmp .= ".gz" if $GzipLinks; + if ($var eq 'LOCALDATE') { + $tmp = &time2str($arg || $LocalDateFmt, time, 1); last REPLACESW; } - if ($var eq 'TFIRSTPG') { - $tmp = $TIDXNAME; - $tmp .= ".gz" if $GzipLinks; + if ($var eq 'MSGPREFIX') { + $tmp = $MsgPrefix; last REPLACESW; } - if ($var eq 'TLASTPG') { - $tmp = ($MULTIIDX && $NumOfPages > 1 ? sprintf("%s%d.$HtmlExt", - $TIDXPREFIX, $NumOfPages) : - $TIDXNAME); - $tmp .= ".gz" if $GzipLinks; + if ($var eq 'OUTDIR') { + $tmp = $OUTDIR; last REPLACESW; } - if ($var eq 'IDXPREFIX') { - $tmp = $IDXPREFIX; + 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 - ## + ## --------------------------- ## + ## User defined variable check ## + ## --------------------------- ## if (defined($CustomRcVars{$var})) { $expand = 1; $tmp = $CustomRcVars{$var}; last REPLACESW; } - warn qq{Warning: Unrecognized variable: "$val"\n}; + warn qq/Warning: Unrecognized variable: "$val"\n/; return "\$$val\$"; } @@ -552,18 +513,79 @@ sub replace_li_var { } $ret = substr($ret, 0, $len); } + + # Check if JavaScript string + $ret =~ s/(["'])/\\$1/g if $jstr; } ## Check for subject link - $ret = qq{$ret} - if $var eq 'SUBJECT'; + qq|">$ret| + if $var eq 'SUBJECT' && $arg eq ""; $ret; } +##---------------------------------------------------------------------------## +## compute_msg_pos(): Get message location data. +## +sub compute_msg_pos { + my($idx, $var, $arg) = @_; + my($ofs, $pos, $aref, $href, $key); + my $opt = undef; + my $flip = 0; + + ## Determine what list type + if ($arg =~ s/^T//) { + $aref = \@TListOrder; + $href = \%Index2TLoc; + } else { + $aref = \@MListOrder; + $href = \%Index2MLoc; + $flip = $REVSORT; + } + + ## Extract out optional data + ($arg, $opt) = split(/;/, $arg); + + SW: { + $ofs = 0, last SW + if $arg eq "" or $arg eq 'CUR'; + $ofs = ($flip ? 1 : -1), last SW + if $arg eq 'PREV'; + $ofs = ($flip ? -1 : 1), last SW + if $arg eq 'NEXT'; + $ofs = ($flip ? $aref->[$#$aref] : $aref->[0]), last SW + if $arg eq 'FIRST'; + $ofs = ($flip ? $aref->[$#$aref] : $aref->[0]), last SW + if $arg eq 'LAST'; + $ofs = ($flip ? -$arg : $arg), last SW + if $arg =~ /^-?\d+$/; + if ($arg eq 'PARENT') { + my $level = $ThreadLevel{$idx}; + $pos = $Index2TLoc{$idx}; + for ( ; $pos >= 0; --$pos) { + last if $ThreadLevel{$TListOrder[$pos]} < $level; + } + undef $ofs; + last SW; + } + warn qq/Warning: $var: Unrecognized variable argument: "$arg"\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; diff --git a/lib/mhrmm.pl b/lib/mhrmm.pl new file mode 100644 index 0000000..90726c6 --- /dev/null +++ b/lib/mhrmm.pl @@ -0,0 +1,112 @@ +##---------------------------------------------------------------------------## +## File: +## @(#) mhrmm.pl 1.2 98/10/31 11:50:17 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## Rmm routine for MHonArc. +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +package mhonarc; + +##--------------------------------------------------------------------------- +## Function for removing messages. +## +sub rmm { + local(@numbers) = (); + local($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}) || $MsgId{$num}) { + &delmsg($key); + + # Need to flag messages that link to deleted message so + # they will be updated. + foreach (split(/$bs/o, $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; diff --git a/lib/mhscan.pl b/lib/mhscan.pl new file mode 100644 index 0000000..9961824 --- /dev/null +++ b/lib/mhscan.pl @@ -0,0 +1,55 @@ +##---------------------------------------------------------------------------## +## File: +## @(#) mhscan.pl 1.1 98/08/10 23:56:33 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## Scan routine for MHonArc +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +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; diff --git a/lib/mhsingle.pl b/lib/mhsingle.pl new file mode 100644 index 0000000..96f6767 --- /dev/null +++ b/lib/mhsingle.pl @@ -0,0 +1,72 @@ +##---------------------------------------------------------------------------## +## File: +## @(#) mhsingle.pl 1.2 98/10/31 12:10:13 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## Routines for converting a single message to HTML +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +package mhonarc; + +##--------------------------------------------------------------------------- +## Routine to perform conversion of a single mail message to +## HTML. +## +sub single { + local($mhead,$index,$from,$date,$sub,$header,$handle,$mesg, + $template,$filename,%fields); + + ## Prevent any verbose output + $QUIET = 1; + + ## See where input is coming from + if ($ARGV[0]) { + ($handle = &file_open($ARGV[0])) || + die("ERROR: Unable to open $ARGV[0]\n"); + $filename = $ARGV[0]; + } else { + $handle = 'STDIN'; + } + + ## Read header + ($index,$from,$date,$sub,$header) = + &read_mail_header($handle, *mhead, *fields); + + ($From{$index},$Date{$index},$Subject{$index}) = ($from,$date,$sub); + $MsgHead{$index} = $mhead; + + ## Read rest of message + $Message{$index} = &read_mail_body($handle, $index, $header, *fields); + + ## Set index list structures for replace_li_var() + @MListOrder = &sort_messages(); + %Index2MLoc = (); + @Index2MLoc{@MListOrder} = (0 .. $#MListOrder); + + ## Output mail + &output_mail($index, 1, 0); + + close($handle); +} + +##--------------------------------------------------------------------------- +1; diff --git a/lib/mhthread.pl b/lib/mhthread.pl index db294b9..390702b 100644 --- a/lib/mhthread.pl +++ b/lib/mhthread.pl @@ -1,13 +1,13 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhthread.pl 2.2 98/03/03 14:33:44 +## @(#) mhthread.pl 2.4 98/10/10 16:29:57 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Thread routines for MHonArc ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1995-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 @@ -31,30 +31,47 @@ package mhonarc; ## write_thread_index outputs the thread index ## sub write_thread_index { + local($onlypg) = shift; local($tmpl, $handle); local($index) = (""); - local(*a, $PageNum, %Printed); + local(*a); + local($PageNum, $PageSize, $totalpgs, %Printed); local($lastlevel, $tlevel, $iscont, $i, $offstart, $offend); local($level) = 0; ## !!!Used in print_thread!!! local($last0index) = ''; - for ($PageNum = 1; $PageNum <= $NumOfPages; $PageNum++) { + ## 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 || $NumOfPages; + + 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]; - } - next if $PageNum < $TIdxMinPg; - if ($MULTIIDX) { 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)) { @@ -66,7 +83,7 @@ sub write_thread_index { } *a = *ThreadList; } - + $PageSize = scalar(@a); if ($IDXONLY) { $handle = 'STDOUT'; @@ -184,26 +201,34 @@ sub compute_threads { local(@refs); local($index, $msgid, $refindex, $depth, $tmp); - @TListOrder = (); # reset - %Index2TLoc = (); # reset + ## Reset key data structures + @TListOrder = (); + %Index2TLoc = (); + %ThreadLevel = (); + %HasRef = (); + %HasRefDepth = (); + %Replies = (); + %SReplies = (); ## Sort by date first for subject based threads @ThreadList = sort increase_index keys %Subject; ## Find first occurrances of subjects foreach $index (@ThreadList) { - $tmp = $Subject{$index}; + $tmp = lc $Subject{$index}; 1 while (($tmp =~ s/^$SubReplyRxp//io) || ($tmp =~ s/\s*-\s*re(ply|sponse)\s*$//io)); $stripsub{$index} = $tmp; $FirstSub2Index{$tmp} = $index - unless $FirstSub2Index{$tmp} || - grep($MsgId{$_}, split(/$X/o, $Refs{$index})); + unless defined($FirstSub2Index{$tmp}) || + (defined($Refs{$index}) && + grep($MsgId{$_}, split(/$X/o, $Refs{$index}))); } ## Compute thread data TCOMP: foreach $index (@ThreadList) { + next unless defined($Refs{$index}); # Check for explicit threading if (@refs = split(/$X/o, $Refs{$index})) { @@ -223,6 +248,7 @@ sub compute_threads { ++$depth; } } + } continue { # Check for subject-based threading if (!$HasRef{$index}) { @@ -241,7 +267,6 @@ sub compute_threads { } ## Calculate thread listing order - ## @ThreadList = &t_sort_messages(); foreach $index (@ThreadList) { unless ($Counted{$index} || $HasRef{$index}) { @@ -258,11 +283,13 @@ sub compute_threads { ## sub do_thread { local($idx, $level) = ($_[0], $_[1]); - local(@repls, @srepls); + local(@repls, @srepls) = (); ## Get replies - @repls = sort increase_index split(/$bs/o, $Replies{$idx}); - @srepls = sort increase_index split(/$bs/o, $SReplies{$idx}); + @repls = sort increase_index split(/$bs/o, $Replies{$idx}) + if defined($Replies{$idx}); + @srepls = sort increase_index split(/$bs/o, $SReplies{$idx}) + if defined($SReplies{$idx}); ## Add index to printed order list (IMPORTANT SIDE-EFFECT) push(@TListOrder, $idx); @@ -290,12 +317,14 @@ sub do_thread { ## sub print_thread { local($handle, $idx, $top) = ($_[0], $_[1], $_[2]); - local(@repls, @srepls); + local(@repls, @srepls) = (); local($attop, $haverepls, $hvnirepls, $single, $depth, $i); ## Get replies - @repls = sort increase_index split(/$bs/o, $Replies{$idx}); - @srepls = sort increase_index split(/$bs/o, $SReplies{$idx}); + @repls = sort increase_index split(/$bs/o, $Replies{$idx}) + if defined($Replies{$idx}); + @srepls = sort increase_index split(/$bs/o, $SReplies{$idx}) + if defined($SReplies{$idx}); $depth = $HasRefDepth{$idx}; $hvnirepls = (@repls || @srepls); @@ -341,20 +370,18 @@ sub print_thread { $Printed{$idx} = 1; ## Print sub-threads - if (@repls) { + if (scalar(@repls) || scalar(@srepls)) { &print_thread_var($handle, $idx, *TSUBLISTBEG) if $level <= $TLEVELS; foreach (@repls) { &print_thread($handle, $_); } - &print_thread_var($handle, $idx, *TSUBLISTEND) if $level <= $TLEVELS; - } - if (@srepls) { - &print_thread_var($handle, $idx, *TSUBLISTBEG) if $level <= $TLEVELS; - &print_thread_var($handle, $idx, *TSUBJECTBEG); - foreach (@srepls) { - &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, *TSUBJECTEND); &print_thread_var($handle, $idx, *TSUBLISTEND) if $level <= $TLEVELS; } diff --git a/lib/mhtime.pl b/lib/mhtime.pl index 902acf2..904b292 100644 --- a/lib/mhtime.pl +++ b/lib/mhtime.pl @@ -1,12 +1,12 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhtime.pl 2.1 98/03/02 20:24:34 +## @(#) mhtime.pl 2.2 98/08/10 23:43:24 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Time related routines for mhonarc ##---------------------------------------------------------------------------## -## Copyright (C) 1996-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1996-1998 Earl Hood, earlhood@usa.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 @@ -83,19 +83,19 @@ sub getdate { sub time2str { package mhtime; - local($fmt, $time, $local) = @_ ; - local($date) = "" ; + my($fmt, $time, $local) = @_; + my($date) = ""; ## Get current date/time - local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = - ($local ? localtime($time) : gmtime($time)); + my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = + ($local ? localtime($time) : gmtime($time)); + + my($yearfull, $hour12); + $yearfull = $year + 1900; + $hour12 = $hour > 12 ? $hour-12 : $hour; ## Format output if ($fmt =~ /\S/) { - local($yearfull, $hour12); - $yearfull = $year + 1900; - $hour12 = $hour > 12 ? $hour-12 : $hour; - $fmt =~ s/\%a/$weekdays[$wday]/g; $fmt =~ s/\%A/$Weekdays[$wday]/g; $fmt =~ s/\%b/$months[$mon]/g; @@ -123,10 +123,10 @@ sub time2str { $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/eg ; - $fmt =~ s/\%w/$wday/g ; - $fmt =~ s/\%y/$year/g ; - $fmt =~ s/\%Y/$year+1900/ge ; + $fmt =~ s/\%S/$sec/eg; + $fmt =~ s/\%w/$wday/g; + $fmt =~ s/\%y/$year/g; + $fmt =~ s/\%Y/$year+1900/ge; $fmt =~ s/\%\%/\%/g ; @@ -134,9 +134,9 @@ sub time2str { } else { $date = sprintf("%s %s %02d %02d:%02d:%02d ". - ($local ? "%s" : "GMT %s"), + ($local ? "%d" : "GMT %d"), $weekdays[$wday], $months[$mon], - $mday, $hour, $min, $sec, $year); + $mday, $hour, $min, $sec, $yearfull); } $date ; } @@ -184,9 +184,9 @@ sub parse_date { # 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 $time eq ""; + if !defined($time) or $time eq ""; return () - unless $time ne ""; + unless defined($time) and $time ne ""; ($hr, $min, $sec) = split(/:/, $time); $sec = 0 unless $sec; # Sometimes seconds not defined @@ -229,9 +229,10 @@ sub parse_date { } # Modify month and weekday for lookup - $mon =~ tr/A-Z/a-z/; $wday =~ tr/A-Z/a-z/; + $mon = $Month2Num{lc $mon} if defined($mon); + $wday = $WDay2Num{lc $wday} if defined($wday); - ($WDay2Num{$wday}, $mday, $Month2Num{$mon}, $yr, $hr, $min, $sec, $zone); + ($wday, $mday, $mon, $yr, $hr, $min, $sec, $zone); } ##--------------------------------------------------------------------------- diff --git a/lib/mhtxtenrich.pl b/lib/mhtxtenrich.pl index 1044e9e..d3ccb7a 100644 --- a/lib/mhtxtenrich.pl +++ b/lib/mhtxtenrich.pl @@ -1,8 +1,8 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhtxtenrich.pl 2.1 98/03/02 20:24:36 +## @(#) mhtxtenrich.pl 2.2 98/08/10 23:50:38 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Library defines a routine for MHonArc to filter text/enriched ## data. @@ -16,7 +16,7 @@ ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1997-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1997-1998 Earl Hood, earlhood@usa.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 @@ -42,12 +42,16 @@ package m2h_text_enriched; sub filter { local($header, *fields, *data, $isdecode, $args) = @_; local($innofill, $chunk, $ret, $charset); - $ret = ''; + $ret = ""; + $args = "" unless defined($args); + $charset = ""; ## Grab charset parameter (if defined) - $ctype = $fields{'content-type'}; - ($charset) = $ctype =~ /charset=(\S+)/; - $charset =~ s/['"]//g; $charset =~ tr/A-Z/a-z/; + $ctype = $fields{'content-type'} || ""; + if ($ctype =~ /charset=(\S+)/) { + $charset = lc $1; + $charset =~ s/['"]//g; + } ## Convert specials $data =~ s|&|\&|gi; diff --git a/lib/mhtxthtml.pl b/lib/mhtxthtml.pl index 2f1287b..09dc8d8 100644 --- a/lib/mhtxthtml.pl +++ b/lib/mhtxthtml.pl @@ -1,8 +1,8 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhtxthtml.pl 2.1 98/03/02 @(#) +## @(#) mhtxthtml.pl 2.6 98/10/25 13:58:15 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Library defines routine to filter text/html body parts ## for MHonArc. @@ -12,7 +12,7 @@ ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1995 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 @@ -42,6 +42,7 @@ package m2h_text_html; sub filter { local($header, *fields, *data, $isdecode, $args) = @_; local($base, $title, $tmp); + local(@files) = (); # !!!Used by resolve_cid $base = ''; $title = ''; $tmp = ''; @@ -51,42 +52,99 @@ sub filter { $title = "
            Title: $1
            \n"; } ## Get/remove BASE url - if ($data =~ s%(]*>)%%i) { - $tmp = $1; - ($base) = $tmp =~ m%href\s*=\s*['"]([^'"]+)['"]%i; - $base =~ s%(.*/).*%$1%; + BASEURL: { + if ($data =~ s|(]*>)||i) { + $tmp = $1; + if ($tmp =~ m|href\s*=\s*['"]([^'"]+)['"]|i) { + $base = $1; + } elsif ($tmp =~ m|href\s*=\s*([^\s>]+)|i) { + $base = $1; + } + last BASEURL if ($base =~ /\S/); + } + if ((defined($tmp = $fields{'content-base'}) || + defined($tmp = $fields{'content-location'})) && ($tmp =~ m%/%)) { + ($base = $tmp) =~ s/['"\s]//g; + } } + $base =~ s|(.*/).*|$1|; + ## Strip out certain elements/tags - $data =~ s%]*>%%i; - $data =~ s%]*>%%ig; - $data =~ s%]*>%%ig; - $data =~ s%[\s\S]*%%i; + $data =~ s|]*>||i; + $data =~ s|]*>||ig; + $data =~ s|]*>||ig; + $data =~ s|[\s\S]*||i; ## Modify relative urls to absolute using BASE if ($base =~ /\S/) { - $data =~ s%(href\s*=\s*['"])([^'"]+)(['"])% - &addbase($base,$1,$2,$3)%gei; - $data =~ s%(src\s*=\s*['"])([^'"]+)(['"])% - &addbase($base,$1,$2,$3)%gei; + $data =~ s/((?:href|src)\s*=\s*['"])([^'"]+)(['"])/ + join("", $1, &addbase($base,$2), $3)/geix; } - ($title . $data); + ## Check for CID URLs (multipart/related HTML) + $data =~ s/((?:href|src)\s*=\s*['"])cid:([^'"]+)(['"])/ + join("", $1, &resolve_cid($2), $3)/geix; + $data =~ s/((?:href|src)\s*=\s*)cid:([^\s>]+)/ + join("", $1, '"', &resolve_cid($2), '"')/geix; + + ($title.$data, @files); } + ##--------------------------------------------------------------------------- + sub addbase { - local($b, $pre, $u, $suf) = @_; - local($ret); + my($b, $u) = @_; + my($ret); $u =~ s/^\s+//; - if ($u =~ m%^$Url%o) { # Non-relative URL, do nothing - $ret = $pre . $u . $suf; - } else { # Relative URL - if ($u =~ m%^/%) { # Check for "/..." - $b =~ s%^(${Url}[^/]*)/.*%$1%o; # Get hostname:port number + if ($u =~ m%^$Url%o || $u =~ m/^#/) { + ## Absolute URL or scroll link; do nothing + $ret = $u; + } else { + ## Relative URL + if ($u =~ /^\./) { + ## "./---" or "../---": Need to remove and adjust base + ## accordingly. + $b =~ s/\/$//; + my @a = split(/\//, $b); + my $cnt = 0; + while ($u =~ s|^(\.{1,2})/||) { ++$cnt if length($1) == 2; } + splice(@a, -$cnt) if $cnt > 0; + $b = join('/', @a, ""); + + } elsif ($u =~ m%^/%) { + ## "/---": Just use hostname:port of base. + $b =~ s%^(${Url}[^/]*)/.*%$1%o; } - $ret = $pre . $b . $u . $suf; + $ret = $b . $u; } $ret; } + +##--------------------------------------------------------------------------- + +sub resolve_cid { + my $cid = shift; + my $href = $readmail::Cid{$cid}; + if (!defined($href)) { return "cid:$cid"; } + + require 'mhmimetypes.pl'; + my $filename; + my $decodefunc = + readmail::load_decoder($href->{'fields'}{'content-transfer-encoding'}); + if (defined($decodefunc) && defined(&$decodefunc)) { + my $data = &$decodefunc($href->{'body'}); + $filename = mhonarc::write_attachment( + $href->{'fields'}{'content-type'}, \$data); + } else { + $filename = mhonarc::write_attachment( + $href->{'fields'}{'content-type'}, + \$href->{'body'}); + } + $href->{'filtered'} = 1; + push(@files, $filename); # @files defined in filter + $filename; +} + ##--------------------------------------------------------------------------- 1; diff --git a/lib/mhtxtplain.pl b/lib/mhtxtplain.pl index 550faba..5c8ef95 100644 --- a/lib/mhtxtplain.pl +++ b/lib/mhtxtplain.pl @@ -1,8 +1,8 @@ ##---------------------------------------------------------------------------## ## File: -## @(#) mhtxtplain.pl 2.1 98/03/02 20:24:30 +## @(#) mhtxtplain.pl 2.3 98/10/24 17:16:20 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## Description: ## Library defines routine to filter text/plain body parts to HTML ## for MHonArc. @@ -12,7 +12,7 @@ ## ##---------------------------------------------------------------------------## ## MHonArc -- Internet mail-to-HTML converter -## Copyright (C) 1995-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 @@ -32,10 +32,10 @@ package m2h_text_plain; -$Url = '(http://|https://|ftp://|afs://|wais://|telnet://' . +$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<>\&]%; +$UrlExp = $Url . q%[^\s\(\)\|<>"']*[^\.?!;,"'\|\[\]\(\)\s<>]%; +$HUrlExp = $Url . q%[^\s\(\)\|<>"'\&]*[^\.?!;,"'\|\[\]\(\)\s<>\&]%; $QuoteChars = '[>\|\]+:]'; $HQuoteChars = '>|[\|\]+:]'; @@ -63,34 +63,43 @@ package m2h_text_plain; ## sub filter { local($header, *fields, *data, $isdecode, $args) = @_; - local($charset, $nourl, $doquote, $igncharset, $nonfixed, - $keepspace, $maxwidth, $target, $defset); - local(%asis) = (); + my($charset, $nourl, $doquote, $igncharset, $nonfixed, + $keepspace, $maxwidth, $target, $defset); + my(%asis) = (); local($_); ## Parse arguments - $nourl = ($mhonarc'NOURL || ($args =~ /nourl/i)); - $doquote = ($args =~ /quote/i); - $nonfixed = ($args =~ /nonfixed/i); - $keepspace = ($args =~ /keepspace/i); - if ($args =~ /maxwidth=(\d+)/i) { $maxwidth = $1; } + $args = "" unless defined($args); + $nourl = ($mhonarc::NOURL || ($args =~ /\bnourl\b/i)); + $doquote = ($args =~ /\bquote\b/i); + $nonfixed = ($args =~ /\bnonfixed\b/i); + $keepspace = ($args =~ /\bkeepspace\b/i); + if ($args =~ /\bmaxwidth=(\d+)/i) { $maxwidth = $1; } else { $maxwidth = 0; } - if ($args =~ /default=(\S+)/i) { $defset = $1; } + if ($args =~ /\bdefault=(\S+)/i) { $defset = $1; } else { $defset = 'us-ascii'; } - if ($args =~ /target="([^"]+)"/i) { $target = $1; } - elsif ($args =~ /target=(\S+)/i) { $target = $1; } - else { $target = "_top"; } - $defset =~ s/['"]//g; + $target = ""; + if ($args =~ /\btarget="([^"]+)"/i) { $target = $1; } + elsif ($args =~ /\btarget=(\S+)/i) { $target = $1; } $target =~ s/['"]//g; + if ($target) { + $target = qq/TARGET="$target"/; + } + $defset =~ s/['"]//g; ## Grab charset parameter (if defined) - if ($fields{'content-type'} =~ /charset=(\S+)/i) { $charset = $1; } - else { $charset = $defset; } - $charset =~ s/['";]//g; $charset =~ tr/A-Z/a-z/; + if (defined($fields{'content-type'}) and + $fields{'content-type'} =~ /\bcharset=(\S+)/i) { + $charset = lc $1; + } else { + $charset = lc $defset; + } + $charset =~ s/['";]//g; ## Check if certain charsets should be left alone - if ($args =~ /asis=(\S+)/i) { - local(@a) = split(':', $1); + if ($args =~ /\sasis=(\S+)/i) { + my(@a) = split(':', $1); + local($_); foreach (@a) { s/["']//g; tr/A-Z/a-z/; $asis{$_} = 1; @@ -98,15 +107,14 @@ sub filter { } ## Check MIMECharSetConverters if charset should be left alone - if ($readmail'MIMECharSetConverters{$charset} eq "-decode-") { + if (defined($readmail::MIMECharSetConverters{$charset}) and + $readmail::MIMECharSetConverters{$charset} eq "-decode-") { $asis{$charset} = 1; } ## Check if max-width set if ($maxwidth) { - local($*) = 1; - $data =~ s/^(.*)$/&break_line($1, $maxwidth)/ge; - $* = 0; + $data =~ s/^(.*)$/&break_line($1, $maxwidth)/gem; } ## Convert data according to charset @@ -118,7 +126,7 @@ sub filter { ## Latin 2-6, Greek, Hebrew, Arabic } elsif ($charset =~ /iso-8859-([2-9]|10)/i) { require "iso8859.pl"; - $data = &iso_8859'str2sgml($data, $charset); + $data = &iso_8859::str2sgml($data, $charset); ## ASCII, Latin 1, Other } else { @@ -130,25 +138,21 @@ sub filter { ## Check for quoting if ($doquote) { - local($*) = 1; - $data =~ s@^( ?${HQuoteChars})(.*)$@$1$2@go; - $* = 0; + $data =~ s@^( ?${HQuoteChars})(.*)$@$1$2@gom; } ## Check if using nonfixed font if ($nonfixed) { $data =~ s/(\r?\n)/
            $1/g; if ($keepspace) { - local($*) = 1; - $data =~ s/^(.*)$/&preserve_space($1)/ge; - $* = 0; + $data =~ s/^(.*)$/&preserve_space($1)/gem; } } else { $data = "
            \n" . $data . "
            \n"; } ## Convert URLs to hyperlinks - $data =~ s@($HUrlExp)@$1@gio + $data =~ s@($HUrlExp)@$1@gio unless $nourl; ($data); @@ -168,13 +172,13 @@ sub filter { ## ## Author of function: ## NIIBE Yutaka gniibe@mri.co.jp -## (adapted for mhtxtplain.pl by Earl Hood ) +## (adapted for mhtxtplain.pl by Earl Hood ) ## (some changes made to remove use of $& and few other optimizations) ## sub jp2022 { local(*body) = shift; - local(@lines) = split(/\r?\n/,$body); - local($ret, $ascii_text); + my(@lines) = split(/\r?\n/,$body); + my($ret, $ascii_text); local($_); $ret = "
            \n";
            @@ -190,7 +194,7 @@ sub jp2022 {
             		$ascii_text =~ s%>%\>%g;
             		## Convert URLs to hyperlinks
             		$ascii_text =~ s%($HUrlExp)%$1%gio
            -		    unless $mhonarc'NOURL;
            +		    unless $mhonarc::NOURL;
             
             		$ret .= $ascii_text;
             	    } elsif (s/(\033\.[A-F])//) { # G2 Designate Sequence
            @@ -216,7 +220,7 @@ sub jp2022 {
             			$ascii_text =~ s%>%\>%g;
             			## Convert URLs to hyperlinks
             			$ascii_text =~ s%($HUrlExp)%$1%gio
            -			    unless $mhonarc'NOURL;
            +			    unless $mhonarc::NOURL;
             
             			$ret .= $ascii_text;
             		    } elsif (s/(\033\.[A-F])//) { # G2 Designate Sequence
            @@ -268,7 +272,7 @@ sub esc_chars_inplace {
             ##---------------------------------------------------------------------------##
             
             sub preserve_space {
            -    local($str) = shift;
            +    my($str) = shift;
             
                 1 while
                 $str =~ s/^([^\t]*)(\t+)/$1 . ' ' x (length($2) * 8 - length($1) % 8)/e;
            @@ -279,10 +283,10 @@ sub preserve_space {
             ##---------------------------------------------------------------------------##
             
             sub break_line {
            -    local($str) = shift;
            -    local($width) = shift;
            -    local($q, $new) = ('', '');
            -    local($try, $trywidth, $len);
            +    my($str) = shift;
            +    my($width) = shift;
            +    my($q, $new) = ('', '');
            +    my($try, $trywidth, $len);
             
                 ## Translate tabs to spaces
                 1 while
            diff --git a/lib/mhtxttsv.pl b/lib/mhtxttsv.pl
            index 3bf36eb..ba5df0e 100644
            --- a/lib/mhtxttsv.pl
            +++ b/lib/mhtxttsv.pl
            @@ -1,8 +1,8 @@
             ##---------------------------------------------------------------------------##
             ##  File:
            -##	@(#) mhtxttsv.pl 2.1 98/03/02 20:25:01
            +##	@(#) mhtxttsv.pl 2.2 98/08/10 23:53:24
             ##  Author:
            -##      Earl Hood       ehood@medusa.acs.uci.edu
            +##      Earl Hood       earlhood@usa.net
             ##  Description:
             ##	Library defines routine to filter text/tab-separated-values body
             ##	parts to HTML
            @@ -13,7 +13,7 @@
             ##              
             ##---------------------------------------------------------------------------##
             ##    MHonArc -- Internet mail-to-HTML converter
            -##    Copyright (C) 1998	Earl Hood, ehood@medusa.acs.uci.edu
            +##    Copyright (C) 1998	Earl Hood, earlhood@usa.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
            diff --git a/lib/mhusage.pl b/lib/mhusage.pl
            index 99a368a..b2ecde8 100644
            --- a/lib/mhusage.pl
            +++ b/lib/mhusage.pl
            @@ -1,14 +1,14 @@
             ##---------------------------------------------------------------------------##
             ##  File:
            -##      @(#) mhusage.pl 2.2 98/03/03 14:32:12
            +##      @(#) mhusage.pl 2.5 98/09/30 22:47:09
             ##  Author:
            -##      Earl Hood       ehood@medusa.acs.uci.edu
            +##      Earl Hood       earlhood@usa.net
             ##  Description:
             ##      Usage output.  Just require the file to have usage info
             ##	printed to STDOUT.
             ##---------------------------------------------------------------------------##
             ##    MHonArc -- Internet mail-to-HTML converter
            -##    Copyright (C) 1995-1998   Earl Hood, ehood@medusa.acs.uci.edu
            +##    Copyright (C) 1995-1998   Earl Hood, earlhood@usa.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
            @@ -28,24 +28,41 @@
             
             package mhonarc;
             
            -select(STDOUT);
            -print <]  ... 
            -        $PROG [] -rmm  ...
            +sub mhusage {
            +    my($usefh, $close);
            +    PAGER: {
            +	if ($UNIX &&
            +	    (($ENV{'PAGER'} && open(USEPAGER, "| $ENV{'PAGER'}")) ||
            +	     (open(USEPAGER, "| more")))) {
            +	    $usefh = 'USEPAGER';
            +	    $close = 1;
            +	    last PAGER;
            +	}
            +	$usefh = 'STDOUT';
            +	$close = 0;
            +    }
            +    my($curfh) = select($usefh);
            +
            +    print <]  ...
            +        $PROG -rmm []  ...
            +        $PROG -annotate [-notetext ]  ...
             Options:
               -add                     : Add message(s) to archive
            +  -afs                     : Skip archive directory permission check
            +  -annotate                : Add an annotation to message(s)
               -archive                 : Generate archive related files (the default)
               -authsort                : Sort messages by author
               -conlen                  : Honor Content-Length fields
               -datefields        : Fields to determine the date of a message
               -decodeheads             : Decode 1522 decode-only data when reading mail
            -  -definevars     : Define custom resource variables
            +  -definevar      : Define custom resource variables
               -dbfile            : Name of MHonArc database file
                                          (def: ".mhonarc.db")
               -doc                     : Print link to doc at end of index page
               -docurl             : URL to MHonArc documentation
                                          (def: "http://www.oac.uci.edu/indiv/ehood/
            -				    mhonarc.html")
            +                                    mhonarc.html")
               -editidx                 : Edit/change index page(s) and messages, only
               -expiredate        : Message cut-off date
               -expireage         : Time from current when messages expire
            @@ -56,19 +73,20 @@ package mhonarc;
               -genidx                  : Output index to stdout based upon archive contents
               -gmtdatefmt         : Format for GMT date
               -gzipexe           : Pathname of Gzip executable
            -			     (def: "gzip")
            +                             (def: "gzip")
               -gzipfiles               : Gzip files
               -gziplinks               : Add ".gz" to filenames in links
               -header            : User text to include at top of index page
               -help                    : This message
               -htmlext            : Filename extension for generated HTML files
            -			     (def: "html")
            +                             (def: "html")
               -idxfname          : Name of index page
                                          (def: "maillist.html")
               -idxprefix       : Filename prefix for multi-page main index
                                          (def: "mail")
               -idxsize <#>             : Maximum number of messages shown in indexes
               -localdatefmt       : Format for local date
            +  -lock                    : Do archive locking (default)
               -lockdelay <#>           : Time delay, in seconds, between lock tries
                                          (def: "3")
               -locktries <#>           : Maximum number of tries in locking an archive
            @@ -78,10 +96,11 @@ package mhonarc;
               -main                    : Create a main index
               -maxsize <#>             : Maximum number of messages allowed in archive
               -mhpattern          : Perl expression for message files in a directory
            -                             (def: "^\\d+$")
            +                             (def: "^\\d+\$")
               -modtime                 : Set modification time on files to message date
               -months            : Month names
               -monthsabr         : Abbreviated month names
            +  -msgpgs                  : Create message pages (the default)
               -msgprefix       : Filename prefix for message HTML files
                                          (def: "msg")
               -msgsep             : Message separator (Perl) regex for mbox files
            @@ -96,19 +115,24 @@ package mhonarc;
               -nofolrefs               : Do not print links to follow-ups/references
               -nogzipfiles             : Do not Gzip files (the default)
               -notgziplinks            : Do not add ".gz" to filenames in links
            +  -nolock                  : Do not lock archive
               -nomailto                : Do not add in mailto links for e-mail addresses
               -nomain                  : Do not create a main index
               -nomodtime               : Do not set mod time on files to message date
            +  -nomsgpgs                : Do not create message pages
               -nomultipg               : Do not generate multi-page indexes
               -nonews                  : Do not add links to newsgroups
               -noreverse               : List messages in normal order (the default)
               -nosort                  : Do not sort messages
               -nosubsort               : Do not sort messages by subject
            +  -notetext          : Text data of annotation if -annotation specified
               -nothread                : Do not create threaded index
            +  -notreverse              : List threads in order
               -nourl                   : Do not make URL hyperlinks
            -  -otherindexes      : List of other rcfiles for extra indexes
            +  -otherindex       : Other rcfile for extra index
               -outdir            : Destination/location of HTML mail archive
                                          (def: ".")
            +  -pagenum           : Output specified page if -genidx and -multipg
               -perlinc           : List of paths to search for MIME filters
               -quiet                   : Suppress status messages during execution
               -rcfile            : Resource file for MHonArc
            @@ -120,6 +144,7 @@ package mhonarc;
               -sort                    : Sort messages by date (the default)
               -subjectarticlerxp  : Regex for leading articles in subjects
               -subjectreplyrxp    : Regex for leading reply string in subjects
            +  -subjectstripcode   : Expressions for modifying subjects
               -subsort                 : Sort message by subject
               -thread                  : Create threaded index (the default)
               -tidxfname         : Filename of threaded index page
            @@ -147,16 +172,24 @@ package mhonarc;
               -weekdaysabr       : Abbreviated weekday names
             
             Description:
            -  MHonArc is a highly customizable Perl program for converting e-mail,
            +  MHonArc is a highly customizable Perl program for converting mail,
               encoded with MIME, into HTML archives.  MHonArc supports the conversion
            -  of UUCP style mailbox files or MH mail folders into HTML with an index
            -  linking to each mail message.  The -single option can be used to convert
            -  a single mail message to standard output.
            +  of UUCP-style mailbox files and MH style mail folders.  The -single
            +  option can be used to convert a single mail message to standard output.
            +
            +  The following options can be specified multiple times: -definevar,
            +  -notetext, -otherindex, -perlinc, -rcfile.
             
            -  Read the documentation for more complete usage information.
            +  Read the full documentation included with the distribution for more
            +  complete usage information.
             
             Version:
             $VINFO
             EndOfUsage
             
            +    close($usefh)  if $close;
            +    select($curfh);
            +}
            +
            +##---------------------------------------------------------------------------##
             1;
            diff --git a/lib/mhutil.pl b/lib/mhutil.pl
            index 93071b4..78bd80f 100644
            --- a/lib/mhutil.pl
            +++ b/lib/mhutil.pl
            @@ -1,13 +1,13 @@
             ##---------------------------------------------------------------------------##
             ##  File:
            -##	@(#) mhutil.pl 2.1 98/03/02 20:24:31
            +##	@(#) mhutil.pl 2.3 98/10/03 16:07:13
             ##  Author:
            -##      Earl Hood       ehood@medusa.acs.uci.edu
            +##      Earl Hood       earlhood@usa.net
             ##  Description:
             ##      Utility routines for MHonArc
             ##---------------------------------------------------------------------------##
             ##    MHonArc -- Internet mail-to-HTML converter
            -##    Copyright (C) 1995-1998	Earl Hood, ehood@medusa.acs.uci.edu
            +##    Copyright (C) 1995-1998	Earl Hood, earlhood@usa.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
            @@ -48,18 +48,16 @@ sub extract_email_address {
             ##	Get an e-mail name from $str.
             ##
             sub extract_email_name {
            -    local($str) = shift;
            -    local($ret);
            +    my($str) = shift;
            +    my($ret);
             
                 if ($str =~ s/<(\S+)>//) {		# Check for: name 
             	$ret = $1;
            -	if ($str !~ /^\s*$/) {		# strip extra whitespace
            -	    ($ret = $str) =~ s/\s+/ /g;
            +	if ($str =~ /\S/) {
            +	    $ret = $str;
             	} else {			# no name
             	    $ret =~ s/@.*//;
             	}
            -	$ret =~ s/^\s*"//;
            -	$ret =~ s/"\s*$//;
                 } elsif ($str =~ /"([^"]+)"/) {		# Name in ""'s
             	$ret = $1;
                 } elsif ($str =~ /\(([^\)]+)\)/) {		# Name in ()'s
            @@ -67,6 +65,7 @@ sub extract_email_name {
                 } else {					# Just address
             	($ret = $str) =~ s/@.*//;
                 }
            +    $ret =~ s/^["\s]+//g; $ret =~ s/["\s]+$//g;
                 $ret;
             }
             
            @@ -128,7 +127,7 @@ sub decrease_index {
             	($IndexNum{$b} <=> $IndexNum{$a});
             }
             sub increase_subject {
            -    local($A, $B) = ($Subject{$a}, $Subject{$b});
            +    my($A, $B) = ($Subject{$a}, $Subject{$b});
                 $A =~ tr/A-Z/a-z/;  $B =~ tr/A-Z/a-z/; 
                 1 while $A =~ s/$SubReplyRxp//io;
                 1 while $B =~ s/$SubReplyRxp//io;
            @@ -136,7 +135,7 @@ sub increase_subject {
                 ($A cmp $B) || (&get_time_from_index($a) <=> &get_time_from_index($b));
             }
             sub decrease_subject {
            -    local($A, $B) = ($Subject{$a}, $Subject{$b});
            +    my($A, $B) = ($Subject{$a}, $Subject{$b});
                 $A =~ tr/A-Z/a-z/;  $B =~ tr/A-Z/a-z/; 
                 1 while $A =~ s/$SubReplyRxp//io;
                 1 while $B =~ s/$SubReplyRxp//io;
            @@ -144,43 +143,18 @@ sub decrease_subject {
                 ($A cmp $B) || (&get_time_from_index($b) <=> &get_time_from_index($a));
             }
             sub increase_author {
            -    local($A, $B) = (&extract_email_name($From{$a}),
            +    my($A, $B) = (&extract_email_name($From{$a}),
             		     &extract_email_name($From{$b}));
                 $A =~ tr/A-Z/a-z/;  $B =~ tr/A-Z/a-z/;
                 ($A cmp $B) || (&get_time_from_index($a) <=> &get_time_from_index($b));
             }
             sub decrease_author {
            -    local($A, $B) = (&extract_email_name($From{$a}),
            +    my($A, $B) = (&extract_email_name($From{$a}),
             		     &extract_email_name($From{$b}));
                 $A =~ tr/A-Z/a-z/;  $B =~ tr/A-Z/a-z/;
                 ($A cmp $B) || (&get_time_from_index($b) <=> &get_time_from_index($a));
             }
             
            -##---------------------------------------------------------------------------
            -##	Routine to determine last message number in use.
            -##
            -sub get_last_msg_num {
            -    opendir(DIR, $mhonarc'OUTDIR) ||
            -	die("ERROR: Unable to open $mhonarc'OUTDIR\n");
            -    local($max) = -1;
            -
            -    local($htmlext) = $HtmlExt;
            -    local($msgpre) = $MsgPrefix;
            -    $htmlext =~ s/\W/\\$1/g;
            -    $msgpre =~ s/\W/\\$1/g;
            -
            -    local($regexp) = '^' . $msgpre . '0*(\d+)\.'. $htmlext;
            -    chop $regexp  if ($htmlext =~ /html$/i);
            -
            -    foreach (readdir(DIR)) {
            -	if (/$regexp/io) {
            -	    $max = $1  if $1 > $max;
            -	}
            -    }
            -    close(DIR);
            -    $max;
            -}
            -
             ##---------------------------------------------------------------------------
             ##	Routine for formating a message number for use in filenames or links.
             ##
            @@ -192,7 +166,7 @@ sub fmt_msgnum {
             ##	Routine to get filename of a message number.
             ##
             sub msgnum_filename {
            -    local($fmtstr) = "$MsgPrefix%05d.$HtmlExt";
            +    my($fmtstr) = "$MsgPrefix%05d.$HtmlExt";
                 $fmtstr .= ".gz"  if $GzipLinks;
                 sprintf($fmtstr, $_[0]);
             }
            @@ -208,25 +182,46 @@ sub get_filename_from_index {
             ##	Routine to get time component from index
             ##
             sub get_time_from_index {
            -    (split(/$X/o, $_[0]))[0];
            +    (split(/$X/o, $_[0], 2))[0];
             }
             
             ##---------------------------------------------------------------------------
            -##	Routine to get lc author name from index
            +##	Routine to get annotation of a message
             ##
            -sub get_base_author {
            -    local($ret) = (&extract_email_name($From{$_[0]}));
            -    $ret =~ tr/A-Z/a-z/;
            +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 get base subject text from index
            +##	Routine to determine if a message has an annotation
             ##
            -sub get_base_subject {
            -    local($ret) = ($Subject{$_[0]});
            -    1 while $ret =~ s/$SubReplyRxp//io;
            -    $ret;
            +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 {
            +    lc extract_email_name($From{$_[0]});
             }
             
             ##---------------------------------------------------------------------------
            @@ -278,8 +273,8 @@ sub expired_time {
             ##      Get HTML tags for formatting message headers
             ##
             sub get_header_tags {
            -    local($f) = shift;
            -    local($ftago, $ftagc, $tago, $tagc);
            +    my($f) = shift;
            +    my($ftago, $ftagc, $tago, $tagc);
              
                 ## Get user specified tags (this is one funcky looking code)
                 $tag = (defined($HeadHeads{$f}) ?
            @@ -299,16 +294,12 @@ sub get_header_tags {
             ##
             sub htmlize_header {
                 local(*fields, *l2o) = @_;
            -    local($tmp,
            -	  $key,
            -	  $tago,
            -	  $tagc,
            -	  $ftago,
            -	  $ftagc,
            -	  $mesg,
            -	  $item,
            -	  @array,
            -	  %hf);
            +    my($key,
            +       $tago, $tagc,
            +       $ftago, $ftagc,
            +       $mesg, $item,
            +       @array, %hf);
            +    local($tmp);
             
                 $mesg = "";
                 %hf = %fields;
            @@ -318,7 +309,7 @@ sub htmlize_header {
             		next  if $FieldODefs{$key};
             		delete $hf{$key}, next  if &exclude_field($key);
             
            -		@array = split(/$readmail'FieldSep/o, $hf{$key});
            +		@array = split(/$readmail::FieldSep/o, $hf{$key});
             		foreach $tmp (@array) {
             		    $tmp = &$MHeadCnvFunc($tmp);
             		    &field_add_links($key, *tmp);
            @@ -332,7 +323,7 @@ sub htmlize_header {
             	    }
             	} else {
             	    if (!&exclude_field($item) && $hf{$item}) {
            -		@array = (split(/$readmail'FieldSep/o, $hf{$item}));
            +		@array = (split(/$readmail::FieldSep/o, $hf{$item}));
             		foreach $tmp (@array) {
             		    $tmp = &$MHeadCnvFunc($tmp);
             		    &field_add_links($item, *tmp);
            @@ -368,8 +359,12 @@ sub field_add_links {
             ##
             sub newsurl {
                 local(*str) = shift;
            -    local($h, @groups);
            -    $str =~ s/^([^:]*:\s*)//;  $h = $1;
            +    my(@groups) = ();
            +    my $h = "";
            +
            +    if ($str =~ s/^([^:]*:\s*)//) {
            +	$h = $1;
            +    }
                 $str =~ s/\s//g;			# Strip whitespace
                 @groups = split(/,/, $str);		# Split groups
                 foreach (@groups) {			# Make hyperlinks
            @@ -394,13 +389,13 @@ sub mailto {
             ##	$sub, $msgid, $from come from read_mail_header() (ugly!!!!)
             ##
             sub mailUrl {
            -    local($eaddr) = shift;
            +    my($eaddr) = shift;
             
            -    local($url) = ($MAILTOURL);
            -    local($to) = (&urlize($eaddr));
            -    local($froml, $msgidl) = (&urlize($from), &urlize($msgid));
            -    local($fromaddrl) = (&urlize(&extract_email_address($from)));
            -    local($subjectl);
            +    my($url) = ($MAILTOURL);
            +    my($to) = (&urlize($eaddr));
            +    my($froml, $msgidl) = (&urlize($from), &urlize($msgid));
            +    my($fromaddrl) = (&urlize(&extract_email_address($from)));
            +    my($subjectl);
             
                 # Add "Re:" to subject if not present
                 if ($sub !~ /^\s*Re:/) {
            @@ -425,9 +420,9 @@ sub mailUrl {
             ##	SGML, but NAMEs are any non-whitespace character.
             ##
             sub parse_vardef_str {
            -    local($org) = shift;
            -    local(%hash) = ();
            -    local($str, $q, $var, $value);
            +    my($org) = shift;
            +    my(%hash) = ();
            +    my($str, $q, $var, $value);
             
                 ($str = $org) =~ s/^\s+//;
                 while ($str =~ s/^([^=\s]+)\s*=\s*//) {
            @@ -459,5 +454,13 @@ sub parse_vardef_str {
                 %hash;
             }
             
            +##---------------------------------------------------------------------------##
            +
            +sub msgid_to_filename {
            +    my $msgid = shift;
            +    $msgid =~ s/([^\w.\-\@])/sprintf("=%02X",unpack("C",$1))/geo;
            +    $msgid;
            +}
            +
             ##---------------------------------------------------------------------------##
             1;
            diff --git a/lib/osinit.pl b/lib/osinit.pl
            index 87504e5..ec876e1 100644
            --- a/lib/osinit.pl
            +++ b/lib/osinit.pl
            @@ -1,15 +1,15 @@
             ##---------------------------------------------------------------------------##
             ##  File:
            -##	@(#) osinit.pl 2.1 98/03/02 20:24:32
            +##	@(#) osinit.pl 2.2 98/08/10 23:38:25
             ##  Author:
            -##      Earl Hood       ehood@medusa.acs.uci.edu
            +##      Earl Hood       earlhood@usa.net
             ##  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-1998	Earl Hood, ehood@medusa.acs.uci.edu
            +##    Copyright (C) 1995-1998	Earl Hood, earlhood@usa.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
            @@ -53,47 +53,70 @@ package mhonarc;
             ##	set to true.
             ##
             sub OSinit {
            -    local($noOptions) = shift;
            +    my($noOptions) = shift;
             
                 ##  Check what system we are executing under
            -    local($tmp);
            -    $VMS = 0;
            -    eval q%$VMS = ($^O=~/vms/i);%;
            -    if (!$@ && $VMS) {
            +    my($tmp);
            +    if ($^O =~ /vms/i) {
                     $MSDOS = 0;  $MACOS = 0;  $UNIX = 0;  $VMS = 1;
             	$DIRSEP = '/';  $CURDIR = '.';
             	$PATHSEP = ':';
            -    } elsif (($tmp = $ENV{'COMSPEC'}) &&
            +
            +    } elsif (($^O !~ /cygwin/i) &&
            +    	     ($^O =~ /win/i) && 
            +    	     ($tmp = $ENV{'COMSPEC'}) &&
             	     ($tmp =~ /[a-zA-Z]:\\/) &&
             	     (-e $tmp)) {
                     $MSDOS = 1;  $MACOS = 0;  $UNIX = 0;  $VMS = 0;
             	$DIRSEP = '\\';  $CURDIR = '.';
             	$PATHSEP = ';';
            -    } elsif (defined($MacPerl'Version)) {
            +
            +    } elsif (defined($MacPerl::Version)) {
                     $MSDOS = 0;  $MACOS = 1;  $UNIX = 0;  $VMS = 0;
             	$DIRSEP = ':';  $CURDIR = ':';
             	$PATHSEP = ';';
            +
                 } else {
                     $MSDOS = 0;  $MACOS = 0;  $UNIX = 1;  $VMS = 0;
             	$DIRSEP = '/';  $CURDIR = '.';
             	$PATHSEP = ':';
                 }
            +
                 ##	Store name of program
            -    ($DIRSEPREX = $DIRSEP) =~ s/(\W)/\\$1/g;
            +    if ($MSDOS || $WINDOWS) {
            +        $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$/ )) {
            +	defined($MacPerl::Version) &&
            +	( $MacPerl::Version =~ /Application$/ )) {
             
             	# we're running from the app
             	local( $cmdLine, @args );
            -	$cmdLine = &MacPerl'Ask( "Enter command line options:" );
            +	$cmdLine = &MacPerl::Ask( "Enter command line options:" );
             	require "shellwords.pl";
             	@args = &shellwords( $cmdLine );
            -	unshift( @'ARGV, @args );
            +	unshift( @ARGV, @args );
            +    }
            +}
            +
            +##---------------------------------------------------------------------------##
            +##      OSis_absolute_path() returns true if a string is an absolute path
            +##
            +sub OSis_absolute_path {
            + 
            +    if ($MSDOS || $WINDOWS) {
            +        return $_[0] =~ /^([a-z]:)?[\\\/]/i;
            +    }
            +    if ($MACOS) {               ## Not sure about Mac
            +        return $_[0] =~ /^:/o;
                 }
            +    $_[0] =~ m|^/|o;            ## Unix (fallback)
             }
             
             ##---------------------------------------------------------------------------##
            diff --git a/lib/qprint.pl b/lib/qprint.pl
            index 7b06e90..4149332 100644
            --- a/lib/qprint.pl
            +++ b/lib/qprint.pl
            @@ -1,8 +1,8 @@
             ##---------------------------------------------------------------------------##
             ##  File:
            -##	@(#) qprint.pl 2.1 98/03/02 20:24:32
            +##	@(#) qprint.pl 2.2 98/08/10 23:38:44
             ##  Authors:
            -##      Earl Hood       ehood@medusa.acs.uci.edu
            +##      Earl Hood       earlhood@usa.net
             ##	Alan Barrett	barrett@daisy.ee.und.ac.za
             ##  Description:
             ##	This library defines the routine to decode "quoted-printable"
            @@ -12,7 +12,7 @@
             ##		$text = "ed_printable'qprdecode($data);
             ##
             ##---------------------------------------------------------------------------##
            -##    Copyright (C) 1995,1998	Earl Hood, ehood@medusa.acs.uci.edu
            +##    Copyright (C) 1995,1998	Earl Hood, earlhood@usa.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
            diff --git a/lib/readmail.pl b/lib/readmail.pl
            index 9b3f0d1..81b51a2 100644
            --- a/lib/readmail.pl
            +++ b/lib/readmail.pl
            @@ -1,8 +1,8 @@
             ##---------------------------------------------------------------------------##
             ##  File:
            -##	@(#) readmail.pl 2.1 98/03/02 20:24:33
            +##	@(#) readmail.pl 2.3 98/10/24 17:17:37
             ##  Author:
            -##      Earl Hood       ehood@medusa.acs.uci.edu
            +##      Earl Hood       earlhood@usa.net
             ##  Description:
             ##      Library defining routines to parse MIME e-mail messages.  The
             ##	library is designed so it may be reused for other e-mail
            @@ -25,7 +25,7 @@
             ##	    &MAILhead_get_disposition(*fields);
             ##
             ##---------------------------------------------------------------------------##
            -##    Copyright (C) 1996-1998	Earl Hood, ehood@medusa.acs.uci.edu
            +##    Copyright (C) 1996-1998	Earl Hood, earlhood@usa.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
            @@ -97,15 +97,15 @@ package readmail;
                 unless defined($MIMEDecoders{"8bit"});
             $MIMEDecoders{"binary"}		  = "as-is"
                 unless defined($MIMEDecoders{"binary"});
            -$MIMEDecoders{"base64"}		  = "base64'b64decode"
            +$MIMEDecoders{"base64"}		  = "base64::b64decode"
                 unless defined($MIMEDecoders{"base64"});
            -$MIMEDecoders{"quoted-printable"} = "quoted_printable'qprdecode"
            +$MIMEDecoders{"quoted-printable"} = "quoted_printable::qprdecode"
                 unless defined($MIMEDecoders{"quoted-printable"});
            -$MIMEDecoders{"x-uuencode"}	  = "base64'uudecode"
            +$MIMEDecoders{"x-uuencode"}	  = "base64::uudecode"
                 unless defined($MIMEDecoders{"x-uuencode"});
            -$MIMEDecoders{"x-uue"}     	  = "base64'uudecode"
            +$MIMEDecoders{"x-uue"}     	  = "base64::uudecode"
                 unless defined($MIMEDecoders{"x-uue"});
            -$MIMEDecoders{"uuencode"}  	  = "base64'uudecode"
            +$MIMEDecoders{"uuencode"}  	  = "base64::uudecode"
                 unless defined($MIMEDecoders{"uuencode"});
             
             $MIMEDecodersSrc{"base64"}	  	= "base64.pl"
            @@ -216,28 +216,28 @@ package readmail;
             ##  a multipart message.  The content-type of the message is passed
             ##  as an argument.
             
            -$CantProcessPartFunc		= "cantProcessPart"
            +$CantProcessPartFunc		= \&cantProcessPart
                 unless(defined($CantProcessPartFunc));
             
             ##  Function that returns a message when a part is unrecognized in a
             ##  multipart/alternative message.  I.e. No part could be processed.
             ##  No arguments are passed to function.
             
            -$UnrecognizedAltPartFunc	= "unrecognizedAltPart"
            +$UnrecognizedAltPartFunc	= \&unrecognizedAltPart
                 unless(defined($UnrecognizedAltPartFunc));
             
             ##  Function that returns a string to go before any data generated generating
             ##  from processing an embedded message (message/rfc822 or message/news).
             ##  No arguments are passed to function.
             
            -$BeginEmbeddedMesgFunc		= "beginEmbeddedMesg"
            +$BeginEmbeddedMesgFunc		= \&beginEmbeddedMesg
                 unless(defined($BeginEmbeddedMesgFunc));
             
             ##  Function that returns a string to go after any data generated generating
             ##  from processing an embedded message (message/rfc822 or message/news).
             ##  No arguments are passed to function.
             
            -$EndEmbeddedMesgFunc		= "endEmbeddedMesg"
            +$EndEmbeddedMesgFunc		= \&endEmbeddedMesg
                 unless(defined($EndEmbeddedMesgFunc));
             
             ##  Function to return a string that is a result of the functions
            @@ -254,7 +254,7 @@ package readmail;
             ##
             ##  Prototype: $return_data = &function(*fields, *lower2orig_fields);
             
            -$FormatHeaderFunc		= ""
            +$FormatHeaderFunc		= undef
                 unless(defined($FormatHeaderFunc));
             
             ###############################################################################
            @@ -345,7 +345,7 @@ sub MAILdecode_1522_str {
             	# Do not decode, but convert
             	} elsif (($charcnv =~ /-pass-:(.*)/) &&
             		 (defined(&${1}))) {
            -	    $ret .= &${1}($str_before,$lcharset);
            +	    $ret .= &${1}($strtxt,$lcharset);
             
             	# Fallback is to ignore
             	} else {
            @@ -381,11 +381,13 @@ sub MAILdecode_1522_str {
             sub MAILread_body {
                 local($header, $body, $ctypeArg, $encodingArg) = @_;
             
            -    local($type, $subtype, $boundary, $ret, $tmp, $content, $ctype, $pos);
                 local($part, $parthead, $partcontent, $partencoding);
                 local(@parts, %partfields, %partl2o) = ();
            -    local(@files) = ();
            -    local(@array) = ();
            +    local($tmphead, $decoded);
            +    my($type, $subtype, $boundary, $ret, $content, $ctype, $pos,
            +       $encoding, $decodefunc, $args);
            +    my(@files) = ();
            +    my(@array) = ();
                 $ret = "";
             
                 ## Get type/subtype
            @@ -407,32 +409,39 @@ sub MAILread_body {
                 $filter = &load_filter("$type/*")	unless $filter;
                 $filter = &load_filter("*/*")	unless $filter;
             
            +    ## Check for filter arguments
            +    $args = $MIMEFiltersArgs{$ctype};
            +    $args = $MIMEFiltersArgs{"$type/*"} if !defined($args) or $args eq '';
            +    $args = $MIMEFiltersArgs{$filter}   if !defined($args) or $args eq '';
            +
            +    ## Check encoding
            +    if (defined($encodingArg)) {
            +	$encoding = lc $encodingArg;
            +	$encoding =~ s/\s//g;
            +	$decodefunc = &load_decoder($encoding);
            +    } else {
            +	$encoding = undef;
            +	$decodefunc = undef;
            +    }
            +
                 ## A filter is defined for given content-type
                 if ($filter && defined(&$filter)) {
            -	local($tmphead, $encoding, $decodefunc, $decoded, $args);
             	$tmphead	= $header . "\n";
            -	$encoding	= $encodingArg;
            -	$decodefunc	= "";
            -	$decoded	= "";
            -	$args   	= "";
            -
            -	## Check for filter arguments
            -	$args = $MIMEFiltersArgs{$ctype};
            -	$args = $MIMEFiltersArgs{"$type/*"} if $args eq '';
            -	$args = $MIMEFiltersArgs{$filter}   if $args eq '';
             
             	## Parse message header for filter
             	&MAILread_header(*tmphead, *partfields, *partl2o);
             
            -	## Check encoding and decode data
            -	$encoding =~ s/\s//g;  $encoding =~ tr/A-Z/a-z/;
            -	$decodefunc = &load_decoder($encoding);
            -	if (defined(&$decodefunc)) {
            -	    $decoded = &$decodefunc($body);
            -	    @array = &$filter($header, *partfields, *decoded, 1, $args);
            +	## decode data
            +	if (defined($decodefunc)) {
            +	    if (defined(&$decodefunc)) {
            +		$decoded = &$decodefunc($body);
            +		@array = &$filter($header, *partfields, *decoded, 1, $args);
            +	    } else {
            +		@array = &$filter($header, *partfields, *body,
            +				  $decodefunc =~ /as-is/i, $args);
            +	    }
             	} else {
            -	    @array = &$filter($header, *partfields, *body,
            -			      $decodefunc =~ /as-is/i, $args);
            +	    @array = &$filter($header, *partfields, *body, 0, $args);
             	}
             
             	## Setup return variables
            @@ -443,6 +452,7 @@ sub MAILread_body {
                 } else {
             	## If multipart, recursively process each part
             	if ($type =~ /multipart/i) {
            +	    local(%Cid) = ();
             	    local($isalt) = $subtype =~ /alternative/i;
             
             	    ## Get boundary
            @@ -478,20 +488,39 @@ sub MAILread_body {
             	    }
             
             	    ## Process parts
            -	    foreach $part (@parts) {
            -
            -		## Read header to get content-type
            +	    my(@entity) = ();
            +	    my($cid, $href);
            +	    while (defined($part = shift(@parts))) {
             		$parthead = &MAILread_header(*part, *partfields, *partl2o);
            -		$partcontent = $partfields{'content-type'};
            -		$partencoding = $partfields{'content-transfer-encoding'};
            +		$cid = $partfields{'content-id'} || $partfields{'message-id'};
            +		$cid =~ s/[\s<>]//g;
            +		$href = {
            +		    'head'	=> $parthead,
            +		    'fields'	=> { %partfields },
            +		    'l2o'	=> { %partl2o },
            +		    'body'	=> $part,
            +		    'filtered'	=> 0,
            +		};
            +		push(@entity, $href);
            +		$Cid{$cid} = $href  if defined($cid);
            +	    }
            +
            +	    my($entity);
            +	    foreach $entity (@entity) {
            +		next  if $entity->{'filtered'};
            +
            +		$parthead     = $entity->{'head'};
            +		$part         = $entity->{'body'};
            +		$partcontent  = $entity->{'fields'}{'content-type'};
            +		$partencoding =
            +			$entity->{'fields'}{'content-transfer-encoding'};
             
             		## If content-type not defined for part, then determine
            -		## content-type based upon mulipart subtype.
            +		## content-type based upon multipart subtype.
             		if (!$partcontent) {
             		    if ($subtype =~ /digest/) {
             			$partcontent = 'message/rfc822';
            -		    }
            -		    else {
            +		    } else {
             			$partcontent = 'text/plain';
             		    }
             		}
            @@ -510,12 +539,14 @@ sub MAILread_body {
             		} else {
             		    if (!$array[0]) {
             			$array[0] = &$CantProcessPartFunc(
            -					$partfields{'content-type'});
            +					$entity->{'fields'}{'content-type'});
             		    }
             		    $ret .= shift @array;
             		}
             		push(@files, @array);
            +		$entity->{'filtered'} = 1;
             	    }
            +
             	    if (!$ret && ($subtype =~ /alternative/)) {
             		$ret = &$UnrecognizedAltPartFunc();
             	    }
            @@ -541,7 +572,7 @@ sub MAILread_body {
             
             	    push(@files, @array);
             
            -	## Else cannot do anything
            +	## Else cannot handle type
             	} else {
             	    $ret = '';
             	}
            @@ -693,32 +724,29 @@ sub cantProcessPart {
             
                 warn "Warning: Could not process part with given Content-Type: ",
             	 "$ctype\n";
            -    join('',"
            \n", - "Could not process part with Content-Type: $ctype.\n", - "
            \n"); + "
            <<< $ctype: Unrecognized >>>
            \n"; } ##---------------------------------------------------------------------------## ## Default function for unrecognizeable part in multipart/alternative. ## sub unrecognizedAltPart { warn "Warning: No recognizable part in multipart/alternative\n"; - join('',"
            \n", - "No recognizable part in multipart/alternative.\n", - "
            \n"); + "
            <<< multipart/alternative: ". + "No recognizable part >>>
            \n"; } ##---------------------------------------------------------------------------## ## Default function for beggining of embedded message ## (ie message/rfc822 or message/news). ## sub beginEmbeddedMesg { - "
            ---- Begin included message ----
            \n"; + qq|


            \n|; } ##---------------------------------------------------------------------------## ## Default function for end of embedded message ## (ie message/rfc822 or message/news). ## sub endEmbeddedMesg { - "
            ---- End included message ----
            \n"; + qq|

            \n|; } @@ -726,17 +754,21 @@ sub endEmbeddedMesg { sub load_charset { require $MIMECharSetConvertersSrc{$_[0]} - if $MIMECharSetConvertersSrc{$_[0]}; + if defined($MIMECharSetConvertersSrc{$_[0]}) && + $MIMECharSetConvertersSrc{$_[0]}; $MIMECharSetConverters{$_[0]}; } sub load_decoder { - require $MIMEDecodersSrc{$_[0]} - if $MIMEDecodersSrc{$_[0]}; - $MIMEDecoders{$_[0]}; + my $enc = lc shift; $enc =~ s/\s//; + require $MIMEDecodersSrc{$enc} + if defined($MIMEDecodersSrc{$enc}) && + $MIMEDecodersSrc{$enc}; + $MIMEDecoders{$enc}; } sub load_filter { require $MIMEFiltersSrc{$_[0]} - if $MIMEFiltersSrc{$_[0]}; + if defined($MIMEFiltersSrc{$_[0]}) && + $MIMEFiltersSrc{$_[0]}; $MIMEFilters{$_[0]}; } diff --git a/logo/mhaicon.bmp b/logo/mhaicon.bmp new file mode 100644 index 0000000..7de953b Binary files /dev/null and b/logo/mhaicon.bmp differ diff --git a/mha-dbedit b/mha-dbedit new file mode 100755 index 0000000..32982d5 --- /dev/null +++ b/mha-dbedit @@ -0,0 +1,55 @@ +#!/usr/local/bin/perl +##---------------------------------------------------------------------------## +## File: +## @(#) mha-dbedit 1.1 98/08/10 23:16:04 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## Program to modify database w/o editing archive files. +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +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; diff --git a/mha-dbrecover b/mha-dbrecover new file mode 100755 index 0000000..886c6ec --- /dev/null +++ b/mha-dbrecover @@ -0,0 +1,102 @@ +#!/usr/local/bin/perl +##---------------------------------------------------------------------------## +## File: +## @(#) mha-dbrecover 1.1 98/08/10 23:16:04 +## Author: +## Earl Hood earlhood@usa.net +## Description: +## Program to rebuild the MHonArc database file from message files. +##---------------------------------------------------------------------------## +## MHonArc -- Internet mail-to-HTML converter +## Copyright (C) 1998 Earl Hood, earlhood@usa.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 +##---------------------------------------------------------------------------## + +package mha_dbrecover; + +##---------------------------------------------------------------------------## +## 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(); + + ## Load library for reading message files + require 'mhmsgfile.pl' || + die qq/ERROR: Unable to require "mhmsgfile.pl"\n/; + + ## Open archive + unshift(@ARGV, '-noarg', '-lock'); + if (!mhonarc::open_archive()) { + die "ERROR: Unable to open archive\n"; } + + ## do it + eval { + local(*DIR); + if (!opendir(DIR, $mhonarc::OUTDIR)) { + 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 + my $msgrex = '^'. + "\Q$mhonarc::MsgPrefix". + '(\d+)\.'. + "\Q$mhonarc::HtmlExt". + '$'; + my @file = grep(/$msgrex/o, readdir(DIR)); + closedir(DIR); + + if (!@file) { + die qq/ERROR: No message files found\n/; } + + local($_); + my($file); + + ## Read files. Use function in mhmsgfile.pl to extract data + foreach (@file) { + print STDOUT "." unless $mhonarc::QUIET; + ($num) = $_ =~ /$msgrex/o; + $file = join($mhonarc::DIRSEP, $mhonarc::OUTDIR, $_); + mhonarc::load_data_from_msg_file($file, $num); + } + + ## Define other data structures + $mhonarc::NumOfMsgs = scalar(@file); + @mhonarc::MListOrder = mhonarc::sort_messages(); + mhonarc::compute_follow_ups(\@mhonarc::MListOrder); + mhonarc::compute_threads(); + + 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; diff --git a/mhonarc b/mhonarc index 1ce3b7d..b04f454 100755 --- a/mhonarc +++ b/mhonarc @@ -1,15 +1,15 @@ #!/usr/local/bin/perl ##---------------------------------------------------------------------------## ## File: -## @(#) mhonarc 2.1 98/03/02 20:17:49 +## @(#) mhonarc 2.3 98/10/31 14:00:55 ## Author: -## Earl Hood ehood@medusa.acs.uci.edu +## Earl Hood earlhood@usa.net ## 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-1998 Earl Hood, ehood@medusa.acs.uci.edu +## Copyright (C) 1995-1998 Earl Hood, earlhood@usa.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 @@ -35,8 +35,8 @@ 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(-1); + mhonarc::initialize(); + mhonarc::process_input() ? exit(0) : exit($mhonarc::CODE); } ##---------------------------------------------------------------------------##