The merged version of hypermail is now available.
This version is 2.0b1. This is a BETA version at present.
This version is an integration of patches Kevin received and new features added by the individual efforts of many people. This has been run through Purify and has been cleaned up accordingly. There are still some minor issues that will be cleaned up shortly. Even with those, this version is much better than the last version I made available and MUCH better than the original.
Availability:
The latest release is available via
FTP: ftp://ftp.landfield.com/hypermail/hypermail.tar.gz
This is a link to the actual hypermail-2.0b1.tar.gz tar file.
You can also get to the new version via the Hypermail Development Center located at
http://www.landfield.com/hypermail/
I am *very* interested in feedback on this version, positive or negative.
Systems Tested on:
This version has been tested on
...and is not guaranteed to compile under other environments.
If you are able to compile and test Hypermail on different systems, *please* let me know so I can list them. If you need to make portability changes for a certain platform, please send me just the patches you needed to get it to work so I can incorporate them into the baseline. There should not be toooo many changes that need to be made.
Changes in this release:
WARNING: There have been really too many changes to this version to
list them all here. What appears below are some of the highlights.
o Command line settings override what is in the config file. In the past the command line variables were read and set before the config file was read. (Needed to get the name of the config file from the command line.) This made it hard to have a default list configuration file and make single runs with only one variable changed. Now processing sets the hypermail internal options by:
Using Compiled in defaults specified in options.h, then reads Hypermail Environment variables if set, then looks for and reads any Configuration file specified and finally uses the Command line settings specified by the user.
NOTE: THIS IS DIFFERENT THAN PAST HYPERMAIL USAGE. o Configurable Setting (.hmrc file) or Compile Time Variable to Domain-ize Addresses -- addresses appearing in the RFC822 field which lack hostname can't be made into proper HREFs when Hypermail does it's thing. They are coded with: mailto:(no%20email)
Because the MTA resides on the same host as the list, it is often not require to domain-ize these addresses for delivery. In such cases, I think it would nice if Hypermail could be programmed to output: mailto:kent_at_landfield.com instead. This would probably work well as a *required* definition during compilation; however, it should not simply rely on the output from `hostname` in case you want to override with an MX entry or alternate domain (if you run virtual domains)
o Added capability to have customizable index html headers, message html headers and html footers. Able to use substitution cookies in the header and footer template files.
Substitution cookies supported:
%% - '%' character %~ - storage directory %e - email addr of message author - Not valid on index pages %h - HMURL %i - Message-id - Not valid on index pages %l - archive label %m - Mailto address %p - PROGNAME %s - Subject of message or Index Title %v - VERSION %u - Expanded version link (HMURL,PROGNAME,VERSION) \n - newline character \t - tab character Additional cookies generate the complete META lines: %A - Author META HTML - Not valid on index pages <META NAME="Author" CONTENT="name (email)"> %B - <BODY> html statement %S - Subject META TAG - Not valid on index pages <META NAME="Subject" CONTENT="subject">
o Generates META tags in articles Author and Subject.
o Now uses "configure" to generate the makefiles. This is rather weak at present and needs to be added to/tested on other systems but at least it's a start.
o The config.h was renamed to options.h to support configure usage.
o patchlevel.h added to facilitate better patches in the future. Still need to fully integrate it's useage in version displays.
o Added example .rc files to show how to customize list's and their looks.
o Removed the _print.c files that had existed in the 103b2 release and replaced them with template headers/footer files.
o Extended archive path creation to make missing directories.
o Added capabilities dir pathing to allow archive creation by date variables.
%d - two digit day of month (1-28/30/31) %D - three letter day of the week %m - two digit month of year (1-12) %M - three letter month of year (Jan, Feb, ..., Dec) %y - four digit year (1990,..2001) RC example: hm_dir = /some/archive/listname/%y/%M ENV example: HM_DIR=/some/archive/listname/%y/%MCommand line example: -d /some/archive/listname/%y/%M
Expands to: /some/archive/listname/1998/May
All files would be archived during that run in that directory. Subsequent executions will put the messages in the directories according to the date the messages were received on the archive site.
o All "mailto:" links can include the "subject" so that the Subject: line of netscape mailer is automatically filled in.
o Fixed "Re:" and redundant "Re:" variation && MS FW...
o Greatly enhanced getname() to correctly deal with most all email addresses. X.400 addresses are not well supported yet.
o Corrected getreply() to better support the In-Reply-To: formats. The routine needs to revisited when a readline routine is inserted to properly deal with continuation lines.
o Added additional documentation describing the Hypermail configuration file.
o Added additional documentation describing how to customize HTML generated pages.
o Corrected many petty problems such as:
o Change various storage length defines in hypermail.h
Patches Contributed From: "Roy T. Fielding" <fielding_at_kiwi.ics.uci.edu>
o Fixed the umask default,
o Fixed default directory and file creation modes,
o Fixed the many date problems,
o Corrected one of the Message-ID bugs,
o Removed annoying #start/#end fragments that mess up the browser history.
Patches Contributed By: Byron Darrah <bdarr_at_sed.hac.com>
o Added a menu bar for a header and footer on all pages and removed the bulleted list items that it replaces.
o Reworked the general appearance of header and footer parts of html pages.
o Added the "hm_hmail" configuration parameter and -n command line option for specifying an email address for input to a hypermail archive.
o Added "New Message" and "Reply" buttons to the menu bar for submitting messages to a hypermail based list.
Patches Contributed From: Jared Reisinger <feety_at_hhhh.org>
o Fixed configfile substring problem.
o SHOWBR, IQUOTES, SHOWHR, EURODATE, SHOWREPLIES, and MAILCOMMAND now run-time configurable.
o Fixed post leap-day error.
o More robust Message-ID parsing.
o Better SHOWHTML handling for indented lines.
o Allow IQUOTES when not using SHOWHTML.
Patches Contributed From: Daniel Stenberg <Daniel.Stenberg_at_sth.frontec.se>
o I had all calls to the decodeRFC2047() function moved to *after* the merging of long lines.
o decodeRFC2047() now correctly concatenates two succeeding "encoded words". I now call the function mdecodeRfc2047() since it now allocates the new string.
o Now informs if the attachment wasn't properly decoded when stored to disk. This happens if the Content-Transfer-Encoding specified isn't known to the parser. When this happens, the attachment is stored as 8bit octetstream.
o Now supports the encoding type 'x-uue' for uudecoding. I think there are mailers that use different names for the same encoding type so we better watch out for them in the future...
o Added the 'demimed' field to the body struct to keep track of header lines+ that have been RFC2047 converted already.
o Kent Landfield sent me an interesting mail that showed me several weird bugs in the MIME area.
o decodeRFC2047 replaces the former RFC1522 function. I made it support 'encoded-words' anywhere in the line and several different ones on the same line is now supported. The only flaw I'm still aware of now, is that if there are two encoded-words next to each other, the result should not show the spaces between them. My function unfortunately still does.
o renamed decodeRFC1522 to decodeRFC2045.
o decodeRFC1522 (quoted printable header decoding) didn't do well if the ending ?= sequence was in the middle of the line. I think this function will need more extensive testing.
o Attached mails' headers (To:, From:, Date: and Subject:) are now shown in the html.
o Attached mails that contains attachments did force me to add a stack system for the multipart boundary strings. Seems to work now. (Can't wait to see an attached mail that contains an attached mail that contains ... )
o strcpymax() introduced to prevent buffer overflows on extra-long headers
o Lines starting with 'from ' messed up the parser pretty badly. It now checks for 'From ' lines (case sensitive) with an empty preceding line to split mails.
o Now extracts attachments to separate binary files.
o Supports multiple lined headers.
o Supports quoted-printable and base64 encoded headers.
o Supports base64 encoded text/plain
o Rewrote the URL and email parsing to allow multiple URLs and email addresses on each line.
o Extended the original functionality to much better deal with MIMEd mails and the standards from RFC 1521 and 1522. There are still flaws in compliance with those but the majority of all mails using mimed texts will be presented in a fairly decent fashion.
Patches Contributed From: David D Kilzer <ddkilzer_at_ti.com>
o Fixed problem with 'From: ' header lines in messages with the following format: "From: <email_at_address.com>" wherein the "name" from the previous email message would be used instead of reverting to the address itself.
o URLs can now include ampersands (&) if they are preceded by question marks (?) in the URL string.
o Email messages with no Subject line no longer grab the previous email's subject.
o Reworked the order of output so that "message" links are always at the top of the page in article pages and date/thread/subject/author pages.
o Now escape '%' in mail URLs.
o Escape for '+' was wrong, changed to '%2B' (was '%22').
o Updated replace() function to recurse on 'afterstring' variable rather than the whole 'newstring'. More efficient and allows '%' escaping.
o config.h: Added configuration option for SHOW_MESSAGE_LINKS which turns all message headers and footers off (except for the links to the date, subject, thread and author pages). SHOW_MESSAGE_LINKS overrides the setting of SHOWREPLIES.
o print.c (writearticles): Removed use of currentemail, currentid, and currentsubject by forcing use of email2, msgid2, inreply2, subject2, and name2 when calling struct.c (hashreplylookup). This was needed after I rearranged the order in which articles were printed.
o string.c (convurls): Added code in two locations for the Message-Id code segment to recurse on the remaining portion of the line being processed. Each Message-Id found forces a return from convurls() after a recursive call. This prevents infinite recursion (a Bad Thing generally speaking). Note: we assume that Message-Ids and URLs/email addresses do NOT appear in the same line.
o string.c (convurls): Changed format string from "%.3d" to "%.4d". Fixed major bug in outputting links for Message-Ids.
o string.c (convurls): Fixed assumption in code for identifying Message-Ids that there was only one Message-Id per line. We now stop gobbling up text used for a link with a space (' ') or a tab ('\t').
o string.c (convurls): Added int got_question_mark in URL processing code to permit an ampersand ('&') in a URL provided it comes after a question mark in the same URL (a GET method with POST data). Added one line of code and changed another to accomplish this.
o string.c (convurls): Added code to check whether the next item to URL-ize is an email address (containing an at sign, '_at_'). If it is, we break out of the URL for loop and go process the email address.
o parse.c (loadoldheaders): Modified initial fgets() call to skip any non-comment lines (i.e. "<html>" and "<head>").
o string.c (makemailcommand): Added code to escape percent signs ('%') when escaping spaces (' ') and plus signs ('+'). Percent signs must be escaped first since other escape sequences use the percent sign followed by a two-digit hexadecimal number. We're now a little more MIME-compliant.
o string.c (replace): Changed the replace() function to recurse only on the 'afterstring' portion of the URL instead of the whole rebuilt URL. This is both more efficient and prevents infinite recursion problems when escaping percent signs ('%') with '%25'.
o string.c (makemailcommand): Fixed escape sequence for plus signs ('+') from '%22' to '%2B'.
LOTS of other small patches from lots of other helpful people. I hope to be able to more accurately list them in the final 2.0 version.
Suggestions:
If you have suggestions you would like to make please post them to the hypermail_at_landfield.com mailing list or use the Suggestion facility on the Development Center. (The inclusion of the patches contributed by Byron Darrah <bdarr_at_sed.hac.com> were a direct result of his using the Suggestion facility.)
Enjoy! And thanks to all who contributed.
-- Kent Landfield Phone: 1-817-545-2502 Email: kent_at_landfield.com http://www.landfield.com/ Email: kent_at_nfr.net http://www.nfr.net/ Please send comp.sources.misc related mail to kent_at_landfield.com Search the Usenet Hypertext FAQ Archive at http://www.faqs.org/faqs/Received on Fri 05 Jun 1998 09:21:12 PM GMT
This archive was generated by hypermail 2.2.0 : Thu 22 Feb 2007 07:33:49 PM GMT GMT