Version Changes for Hypermail ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ============================ HYPERMAIL VERSION 2.3.0: ============================ Jose Kahan (Oct 27, 2009) - Added two new accesskeys in messages: 't' -> next message in thread, 'd' -> next message Jose Kahan (Oct 26, 2009) - Updated hmrc.4 and hmrc.html to descrbie the new features. Jose Kahan (Oct 26, 2009) Various fixes / enhancements developed at W3C by Fumihiro Kato, Daigo Matsubara and myself: - Markup changes for deleted messages that are kept. - New directive: htmlmessage_deleted for setting a custom HTML message for the body of deleted messages. - New directive: delete_incremental to disable deleting of existing messages in the archive when doing an incremental add of a new message. In some setups, if this feature is enabled, replies to deleted messages will cause uncontrolled markup escape and expansion. Feature is enabled by default. - Updated list of known protocol uris that hypermail will convert into links. - Bug fix: setup.c:MakeConfig() CFG_SWITCH was using long instead of int. - New directive: fragment_prefix for customizing the prefix that is put before each URI fragment in a message. Default value is "msg", the previous hard-coded value. - New directive: email_address_obfuscation foro enablingemail address obfuscation using numeric character reference. - New directive: inline_addlink to add in-line links to content that is stored in the attachments subdirectory. 'inline_types" must also be enabled. - New directive: inreplyto_command, gives a URI template to a script that hypermail will link to if it's unable to find a corresponding Message-Id in the archive's messages. Peter McCluskey (May 13, 2008) Change from Fumihiro Kato to fix bug that sometimes caused a charset problem when Content-Type is us-ascii but message headers include other encoded text like utf-8. Peter McCluskey (Nov 14, 2007) Applied xhtml patch from Zvi Har'El. Peter McCluskey (Oct 1, 2007) Changes from Fumihiro Kato to fix bugs on 64 bit systems and some possible buffer overflow problems. Change in rules about whether to escape urls; it now seems to escape them when found in the middle of the line the same way it has been doing when they are at the start of a line. Peter McCluskey (Feb 16, 2007) Changes from Rick van der Zwet: cosmetic = tweaking the interface a small bit (right align, the message numbers, years in the date listing spamify-domain = obfuscate the body of the message as well (will also obfuscate 'ssh rick@foo.bar' this of course), moved the domain obfuscate yes/no to the general to make the function more portable Changes from Mike Fabian changing int to size_t. Peter McCluskey (Mar 27, 2006) Add rel="nofollow" to text message URLs (option txtsuffix = 1). Peter McCluskey (Mar 14, 2006) Fixed a core dump with linkquotes = 1 caused by Daigo's changes. Peter McCluskey (Sep 30, 2005) Fixed missing links at top when show_index_links is 1 or 3. Peter McCluskey (Aug 4, 2005) Fixed double counting of messages deleted with the delete_msgnum option, which sometimes caused top level index page to show wrong number of messages and not link to a folder. Peter McCluskey (Jul 29, 2005) Changed to sort on sender date rather than from date when displaying sender date as a result of use_sender_date = 1. Peter McCluskey (Jun 23, 2005) Some small changes from Vincent McIntyre to make date-range in index of folders link to default index page, to use CSS instead of to distinguish that column, and some whitespace changes. Added explanation of how to handle strcasestr prototype error to INSTALL. Peter McCluskey (Mar 19, 2005) Fixes to files_by_thread option submitted by Oliver Meili. Peter McCluskey (Dec 2, 2004) Patch from Ulf Härnhammar to fix two format string bugs in Hypermail. They could have caused crashes if using incremental mode on edited pre-existing archives with data like "%n%n%n%n%n%n%n%n" in certain lines. Peter McCluskey (Nov 28, 2004) Add filename_base option. Peter McCluskey (Sep 29, 2004) Add support for JAVT timezone. Add mailbox_date_trimmer to contrib, faq. Peter McCluskey (Jun 2, 2004) Add language code substitution cookie patch from Shane Wegner. ============================ HYPERMAIL VERSION 2.2.0: ============================ Peter McCluskey (May 25, 2004) Changed some of the addresses to hypermail-project.org. Made the "We delete ... " message print only if progress != 0. Peter McCluskey (Mar 23, 2004) Changes to speed up incremental update when there are deleted files if using usegdbm (it's still slow if usegdbm = 0). ============================ HYPERMAIL VERSION 2.1.9: ============================ Peter McCluskey (Feb 23, 2004) Released version 2.1.9 tar file. Peter McCluskey (Feb 17, 2004) Add use_sender_date option. Fix instructions for doing "make install" so that the documentation will be installed. Peter McCluskey (Feb 5, 2004) Update much of the documentation. Peter McCluskey (Feb 4, 2004) Change default in setup.c for spamprotect and spamprotect_id to On. Peter McCluskey (Feb 2, 2004) Add set_report_new_file and set_report_new_folder options. Peter McCluskey (Jan 23, 2004) Add in missing for index files. Removed a misleading, nonportable timezone string from link titles in toplevel index pages. Peter McCluskey (Jan 9, 2004) Change to make mbox_shortened option work a little better with discard_dup_msgids = 0. Change folder_by_date option to use "From " date rather than "Date: " to decide which subdirectory to use. This makes it consistent with top level index page. Peter McCluskey (Dec 26, 2003) Add increment = -1 mode to enable automatic determination of whether to update or append in most cases. Peter McCluskey (Dec 3, 2003) Added a mbox_shortened option to handle mboxes that have had messages deleted from the start of the mbox. Peter McCluskey (Dec 1, 2003) Fix mismatch in in date.html with indextable = 0. Peter McCluskey (Nov 17, 2003) Add a check for the problem with the starting message number that was partly fixed on Oct 1. Now old archives with a startmsgnum = 0 .hmrc but a first message of 0001.html in this case will be treated as if startmsgnum was 0. Peter McCluskey (Nov 15, 2003) Add Portugese support from Hugo Cisneiros. Peter McCluskey (Oct 1, 2003) Fix some problems with starting message number that caused bugs when increment = 1, linkquotes = 1 and using folder_by_date. Peter McCluskey (Sep 11, 2003) Fixes to make pcre work. Peter McCluskey (Sep 3, 2003) Applied patches from Mike McDonald to use nowrap option in the author and date columns in the index tables and get rid of all of the 'width=100%' options to the tables. Peter McCluskey (Sep 3, 2003) French language improvements from Olivier Kaloudoff. Peter McCluskey (Sep 1, 2003) Applied patches from Mike McDonald to make spamify_replacedomain use set_antispam_at, change printdates to include the dates in the table version of the bydate index, and make the table use the whole screen width instead of 80%. Jose Kahan (Aug 18, 2003) - Changed to lowercase the suffixes added to the message indexes. That is, from "archive name By Date" to "archive name by date" because the upper case seemed out of style as we don't have any control on what is the string used for the archive's name. Did this change only for the English messages as I don't know if this convention works well for other languages. Jose Kahan (Aug 18, 2003) - Made the links to the different indexes show the index of the current entry. This change originated from the feedback we got on the WAI enhanced archievs. People find that this small changes increases the usability of the archive. Jose Kahan (Aug 18, 2003) - The links to the first message (aka #first) were not working in the by attachment, by author, and by subject indexes. Peter McCluskey (Aug 16, 2003) - applied fix from Jean-Charles Meyrignac to handle 0x1A in mbox. Jose Kahan (Aug 14, 2003) - After receiving more feedback, reverted the changes done for converting the displayed value of the Date: header. The reason is that users like to know when they send a message. This information was getting lost because we were converting the date to the local time. - Made the Received on date be shown in converted local time. - Added a new configuration option, indexdateformat, so that people can specify a different format for indexes than the one used elsewhere. If this variable is not defined., it'll use the dateformat by default. - Made the index by date compare dates independently of the value of dateformat. Jose Kahan (Aug 13, 2003) - Made the Received on footnote line use the same date format as that used for the Date: header on top of the messages. Jose Kahan (Aug 18, 2003) - Small WAI change to the list of indexes to show the entry corresponding to the current index, but outside of a link. This comes from feedback, where people said it was less distracting to see the same index to links all the time. Jose Kahan (Aug 18, 2003) - Add the WAI enhancement that I had forgotten to do for messages. The new format is: [subject] from [author] on [date] ([mailing list label]). I also removed the 64 characters maximum limit check we had on the title. The reason is that this is not part of the HTML specification, but rather a writing style. Dominique says we shouldn't be so strict in this case. In addition, just adding a \0 after 64 characters could break entity names and generate invalid HTML. Jose Kahan (Aug 13, 2003) - The mailcommand option didn't work when applied to a paragraph that had a previously converted href string that includes the '@' char. I added a quick hack to ConvURlsString to avoid doing the mailto: convertion if an href already exists in that line. The best solution would be to do something similar to ConvURLsWithHrefs. Also fixed a memory leak. Peter McCluskey (Aug 8, 2003) - Applied haof fixes from Bernhard Reiter. Jose Kahan (Aug 4, 2003) - As a side effect of PNK's use of an SGML entity for the @ char, the mailcommand option stopped working on all the headers except for the To: one. Jose Kahan (Aug 1, 2003) - In order to guarantee the validity of XHTML documents, changed the behavior of hypermail when including customized footers. Previously, when using this option, the custom markup had to include the </body> and </html> end tags. As we also need to include a </div> in some cases for XHTML and it's much harder to guess when to add it, I made hypermail always add those three end tags as needed, regardless of whether the custom footer option is being used. Jose Kahan (Jul 30, 2003) - After talking with Dom Hazel-Massieux, I added some extra WAI enhancements to the list of indexes generated by hypermai. Specifically, the date is shown in a verbose name in the title attribute of each entry and in an abbreviated version in the markup that's being displayed. Jose Kahan (Jul 30, 2003) - When rebuilding an archive, the attachment files were not being overwritten correctly. . Fixed this by adding an O_TRUNC flag. Jose Kahan (Jul 29, 2003) - Removed a memory leak in file.c as reported by insure. - The ietf-mbox option didn't work on "quoted printable" encoded attachments. Peter McCluskey (July 22, 2003) Fix show_msg_links = 3 option (Jose's changes assumed it didn't exist). Updates to German from Tobias Weber. Kent Landfield (Jul 14, 2003) - When show_headers was used in print.c, the newline was not recognized early enough in printheaders. A check was added to assure the newline was recognized properly. Kent Landfield (Jul 10, 2003) - Small typo in print.c corrected. fprintf(fp, "%s ^lt;<em>%s</em>>"... ======================== HYPERMAIL VERSION 2.1.8: ======================== Kent Landfield (Jun 28, 2003) - Updated pcre library with pcre-4.3 sources. We were distributing a much older version. We were distributing version was 3.3 from August 1, 2000. - Updated FILES with the lcc files and the pcre changes. - Removed the deprecated "show_hr" from the tests/test.rc file. Jose Kahan (Jul 2, 2003) - parseurl didn't work well when an URL was quoted and enclosed inside tags. Such as: <dd>some url</dd> </dd was put as part of the url. Jose Kahan (Jul 1, 2003) - Added WAI enhancements to the list of indexes generated by hypermail. To make things perfect, we would need a new configuration option to give the format of the date in the list of indexes format. I hard coded it for the moment as I ran out of time to do it right now. As it has to use an abbreviated date format to avoid having a too big list of indexes, we can' t reuse the standard set_dateformat value. - Removed warnings detected thru gcc Wall. Peter McCluskey (June 30, 2003) - Increased max_tokens used to allocate space for linkquotes data struct. Jose Kahan (Jun 28, 2003) - Code cleaning. Removed the deprecated code for set_showhr and set_usetable options. Kent Landfield (Jun 28, 2003) - Arkadiusz Miskiewicz <arekm@sse.pl> reported progerr() was being called with NULL instead of the previously constructed error message. His supplied patches were applied. Peter McCluskey (June 27, 2003) - Made dates in subdirectory index files reflect subdirectory date range, rather than the date range for the whole archive. Peter McCluskey (June 24, 2003) - Fix print_index_header_links to print MSG_ENDING date correctly (had been using 2 getdatestr() calls in one argument list). Peter McCluskey (June 20, 2003) - Fix a core dump with empty Date:. Jose Kahan (Jun 10, 2003) - Some extra WAI enhancements requested during the period of public comments: Order the date index by dates, like in subjects, add <dfn> to the start and end period in the indexes, change the title of "jump to first message" to "jump to list of messages". - The top respond link didn't take into account the msgid or subject. It was just a plain mailto. Made it work as the bottom one. Jose Kahan (Jun 10, 2003) - Adding new messages using the -u option to an existing file sometimes resulted in warnings saying "Message-ID is missing, ignoring message with subject..." Patch idea submitted by Peter. Jose Kahan (Jun 10, 2003) - The incremental option (-u) always started new archives with 0001, rather than 0000. It will now start with 0000 as before For those people who had this problem and don't want to break any links to their archives when rebuilding them, there's a new configuration option allowing you to tell from which number you want to start your archive: startmsgnum. You should only set it up once and not modify it for an existing archive or your links may break. A warning message appeared systematically because the showhr, which is now deprecated, was turned on by default. Peter McCluskey (May 22, 2003) - add Italian support from Gabriele Bartolini and Marco Nenciarini. Peter McCluskey (May 16, 2003) - Fixed initialization of prior_subdir when dirs created out of order. That fixes a case where a subdir wasn't in index files with reverse_folders = 1. Jose Kahan (May 13, 2003) - Add the WAI enhancements proposed in http://www.w3.org/2002/03/archives-improvements/. As a consequence of this change, the sethr and usetable configuration options are deprecated. The new markup takes into account the changes that those options proposed and offers them in a WAI friendly way. Some code cleaning needs yet to be done to remove all the cases where those rules were used. Previous code version is tagged as "before-wai". Fixed some invalid XHTML markup too. Peter McCluskey (May 12, 2003) - fix txtsuffix to not crash on null pointer. - fix discard_dup_msgids to work when showprogress = 0. Peter McCluskey (April 24, 2003) - spam encoding from Peter Karlsson. Currently enabled via the spamprotect option. Jose Kahan (Apr 23, 2003) - As a consequence of the XHTML convertion, unconvchars() wasn't storing information into the buffer when there were no entities. Jose Kahan (Apr 10, 2003) - Converted hypermail to XHTML. The only remaining issue concerns charsets. Some mail clients don't specify a correct charset or specify a charset and include characters belonging to other charset spaces. The solution to detect and convert the foreign charset into a Unicode entity or, for the adventurous hacker, convert hypermail's output to UTF-8. For the moment, only the former is implemented partially; there is only one a winlatin1 (Windows CP 1252) to Unicode convertion/detection being done. See string.c:convchars, unconvwinlatin1, and uconvert.h for more details. The best solution will be to move to UTF-8, but this has to be planned. If you have a charset issue, your XHTML document will be invalid. As XHTML is backwards compatible with HTML, you can avoid this problem by continuing to use the text/html MIME type. Peter McCluskey (April 3, 2003) - Fixed so attachment.html doesn't list .meta directory. Kent Landfield (Mar 20, 2003) - Added Splint (www.splint.org) support to src/Makefile.in - Corrected Initializer block for ltable[12]. Had 2 fields, but struct language_entry has 3 fields. - Removed unused gp variable in update_deletions(). - modified print_main_header() to assure title meets HTML recommendations of no longer than 64 characters. - Updated docs/hypermail.rc Peter McCluskey (Mar 18, 2003) - Fixed overwrite = 0 to avoid rewrite of many files involved in replies with folder_by_date option. Peter McCluskey (Mar 14, 2003) - Fixed two bugs with deleting messages with the incremental mode. One bug meant that the message body was only rewritten or removed with the delete_msgnum option, not delete_older / delete_newer. The other bug involved only updating the is_deleted flag in the gdbm file if the message body was redone to update a MSG_IN_REPLY_TO line. Kent Landfield (Mar 9, 2003) - updated domains.h to accurately reflect the current set of root domains. Peter McCluskey (Mar 7, 2003) - Fixed problem with reverse_folders option that caused the index file to leave out folders when there were some unusual mismatches between the 2 dates in one message. Kent Landfield (Feb 28, 2003) - changed wait.h sys/wait.h for portability in msg2archive - removed unused variable in finelink.c Kent Landfield (Feb 20, 2003) - corrected docs/Makefile.in to create the images dir if it does not exist. Kent Landfield (Feb 20, 2003) - added wait.h to msg2archive that was needed for s_popen() - removed unused variable in finelink.c ======================== HYPERMAIL VERSION 2.1.7: ======================== Peter McCluskey (Feb 20, 2003) - Made version 2.1.7 tar file. Jose Kahan (jose@w3.org) (Feb 20, 2003) - makemailcommand wasn't escaping non-ascii characters in the URLS that it generated. Peter McCluskey (Feb 19, 2003) - Fix to append option to handle some lines getting discarded in mdecodeQP. Kent Landfield (Feb 19, 2003) - Updated TODO with configure issues and other corrections we want to make to the code in the near future. Jose Kahan (jose@w3.org) (Feb 19, 2003) - Upgraded extract_rfc2047_content() as the previous extracting algorithm was broken. Kent Landfield (Feb 18, 2003) - Added missing contrib utilities, contrib/msg2hypermailarchive.py and contrib/runtest to FILES - Added checking in struct.c to limit the length of Subject: line to avoid theoretical Denial-of-Service - Removed code that was ifdef'ed NOTUSED Peter McCluskey (Feb 17, 2003) - Fix to attachment Content-Type parsing to strip all whitespace off end of type rather than just newline. Kent Landfield (Feb 17, 2003) - Added safe_tmpfile() usage instead of internal usage. Peter McCluskey (Feb 14, 2003) - Disabled conversion of file:// into href - it seemed to allow anyone who could access the web server via local host could read any file that the web server had permission to read rather than just files in the archive directory. Peter McCluskey (Feb 13, 2003) - Add -DTRIO_MINIMAL. Solves a trio compile problem in SunOS and makes binary a little smaller. - Strip mail.c down to minimal warning message so we don't have to worry about analyzing it's security problems. - Changes to get strerror, memmove from pcre when missing (e.g. on SunOS). How was this working on SunOS before? - Fix faulty sizeof in snprintf for MSG_ENCODING_IS_NOT_SUPPORTED. Kent Landfield (kent@hypermail.org) (February 12, 2003) - Converted msg2archive.c to use Thomas Biege's <thomas@suse.de> s_popen() instead of popen(). Kent Landfield (kent@hypermail.org) (February 11, 2003) - Modified configure.in to test for snprintf. This is needed since Solaris 2.5.1 does not have snprintf. This only affects the msg2archive and mbox2hypermail in the archive directory. Kent Landfield (kent@hypermail.org) (February 10, 2003) - Modified configure to assure on Solaris that the ctype functions were used instead of the macroes. New NO_MACRO define in config.h. - Added most of the patches submitted by Thomas Biege <thomas@suse.de> - Cleaned up compilation commenting out unused variables with NOT_USED. Need to remove them and other unnecessary code soon. - Various other minor compilation issues. - Corrected prototype issue in print.c - Added parameter checking to archive/*.c source Peter McCluskey (Feb 10, 2003) - Fixed the append option to handle lines between end of headers through mime boundary correctly. Jose Kahan (jose@w3.org) (February 06, 2003) - Added a protection against the use of the nonsequential messaging option when hypermail wasn't compiled with the libfnv. Kent Landfield (kent@hypermail.org) (February 06, 2003) - Hypermail 2.1.6 runs on a DEC Alpha running TRU64 when compiled with GCC 2.95. It does however require the -mieee flag be set for the trionan.c sources. - Modified configure.in script to support setting the the -mieee flag for an Alpha TRU64 build. - Modified various Makefile.in files to assure clean/clobber/distclean worked universally. Peter McCluskey (Feb 1, 2003) - Changes to make stack overflow less common. Peter McCluskey (January 29, 2003) - Fixed faulty freeing of memory that caused core dump with files_by_thread option. - Fixed missing function call argument with files_by_thread option. I suspect this was causing some random behavior, but I only found it due to valgrind. - Fix for placement of link to next msg with incremental update, usetable = 0. Peter McCluskey (January 28, 2003) - Fix from Zvi Har'El to leading zeroes in anchors in index pages with indextable=0. - Changes to Swedish from Peter Karlsson. Peter McCluskey (January 26, 2003) - Fix for placement of link to next msg with incremental update. ======================== HYPERMAIL VERSION 2.1.6: ======================== Peter McCluskey (January 24, 2003) - Released version 2.1.6 tar file. - Fix buffer overflow when progress = 2 (triggered by long attachment names). Was a security risk. - Fix buffer overflow in mail (cgi) program that probably created security risk if gethostbyaddr returned h_name of about 80 chars for an ip address. - Disabled the functionality of the mail program and replaced it by default with warning about abuse by spammers. Added warnings about use of program. - Change size of boundbuffer (in parse.c) to 256, limit sscanf that fills it to 255 bytes. This prevents a buffer overflow with long mime boundaries. The buffer overflow didn't seemed to produce only minor problems, but it's hard to rule out security risks. - Add check for inline attachment name overflowing attachname buffer (like the check that Jose added today for non-inlined attachments). - Add check for append_filename and alts_text exceeding buffer size. - Delete attachment directory of messages that are discarded due to a missing or duplicate message-id. Jose Kahan (jose@w3.org) (January 24, 2003) - Fixed a buffer overflow reported by Ulf Harnhammar from VSU security. Peter McCluskey (January 22, 2003) - If mime message has an end boundary but no start boundary (as a buggy version of Microsoft Outlook seems to create), the body is now treated as a plain text message rather than discarded. - Update trio code to trio version 1.9. Peter McCluskey (January 20, 2003) - Several fixes to avoid uninitialized memory reads reported by valgrind. Peter McCluskey (January 18, 2003) - Fix random behavior in parseurl which sometimes caused core dumps on lines ending in http://, ftp://, etc. Peter McCluskey (December 19, 2002) - Apply patch from Wolfgang Spraul fixing link from subdir attachment.html to index.html when defaultindex = date Peter McCluskey (November 26, 2002) - Changed attachment naming back to what it was before Jose added set_nonsequential. - Changed attachment naming so that files are stored using the names provided without any %d- prepended whenever that doesn't cause conflicts. Kent Landfield (kent@hypermail.org) (November 24, 2002) - Made some updates to the docs. Still need to update the docs to include writehaof, nonsequential, msgsperfolder and assure other config file directives are listed and current. Kent Landfield (kent@hypermail.org) (November 24, 2002) - Added Russian language support. Submitted by Igor Solovyoff" <siv@intear.com.ua> Kent Landfield (kent@hypermail.org) (November 24, 2002) - Made the "_at_" antispam bit configurable by config file, using antispam_at = __somestring__ (does not have to have __ in it) Anything hardcoded by default, can be figured out and used by spammers. Particularly something like "_at_". Submitted by Philip Brown <phil@bolthole.com> Jose Kahan (jose@w3.org) (October 17, 2002) - URL generation was broken when a URL had a '@' char and hypermail was using the mailcommand option. parseemail() didn't take this case into account yet (there's just an empty statement). I added a quick patch to convert the '@' into an HTML entity when doing the convertion inside a URL. The change is in translateurl(). Jose Kahan (jose@w3.org) (October 2, 2002) - In order to avoid hashed filename collisions, the filename is now built with a hash of the msgid concatenated to the Epoch seconds of the From date. This gives a total of 16 characters (all data is represented in hex). Only messages that have the same msgid and that arrive in the same second will have a collision. I also compiled with the Warning flags and removed some warnings. Jose Kahan (jose@w3.org) (October 2, 2002) - The access righs of the msgindex file (for the hashed filenames) were not being set at all. Jose Kahan (jose@w3.org) (October 1, 2002) - The non-sequential msgid mode didn't work when updating the archives by one message. Fixed a confusion in the generation of the msgindex file. Jose Kahan (jose@w3.org) (September 26, 2002) - Cleaned the autoconf files for passing the libnvf compile parameters (what a difference does reading the manual make). Peter McCluskey (September 25, 2002) - Fix threading bug with incremental update and spamprotect_id = 1, usegdbm = 0. Jose Kahan (jose@w3.org) (September 25, 2002) - Commited the ~/hypermail/ltmain.sh file and also put it in the FILES section. Somehow, without this file, it was impossible to compile the file generated thru a make tgz. The same kind of file already existed in the pcre and fnv directories. Added a rule to pass the FNV optional CFLAGS from the ~/hypermail/Makefile file, so that you can do a make from the top-level (previously, you had to do it in the src directory... oops!). Jose Kahan (jose@w3.org) (September 25, 2002) - Updated the FILES tgz file (added libfnv, removed two non-existent tests). - Fixed the make tgz rule (how long was it since it was last used?) Jose Kahan (jose@w3.org) (September 25, 2002) - Added a new option to compute the archived filenames using an fnv hash of the msgid + received From date. The resulting filename is 8 bytes long (a space of 2^32 bits) + the extension. You can eventually change it to 16 bytes if this is too short. Just look at the code. The advantage of this is that you can add and remove items from the archive and not worry anymore about broken links if the sequence changes (e.g., if you are rebuilding an archive). To activate this option, you need to do a ./ configure --enable-libfnv, then recompile hypermail. The name of the new option is nonsequential (lack of imagination!). Peter McCluskey (September 17, 2002) - Added reverse_folders option. Peter McCluskey (August 30, 2002) - Fix segfaults in mdecodeRFC2047 (with headers encoded as quoted printable), and in ConvURLsString. - Add files_by_thread option. Peter McCluskey (August 20, 2002) - Change preferedcontent to fall back on type "text/" or on encoding if it can't find any prefered types. - Fix mdecodeRFC2047 to decode headers of any length (removing 128 byte limit). - Add classes to default stylesheet to set colors of headers, standard links, and of quoted text according to quote nesting depth. Peter McCluskey (August 16, 2002) - Fix bug internal error in crossindexthread2 resulting from message with unterminated mime. Peter McCluskey (August 11, 2002) - Add Norwegian language support from Bosse Klykken. Peter McCluskey (August 7, 2002) - Add contrib/msg2hypermailarchive.py from Bernhard Reiter. - Add antispamdomain option from Vincent McIntyre. - Add delete_newer option. Peter McCluskey (August 3, 2002) - Fix expires option to work in incremental mode. - Add delete_older option. ======================== HYPERMAIL VERSION 2.1.5: ======================== Peter McCluskey (July 31, 2002) - Release version 2.1.5 tar file. Peter McCluskey (July 22, 2002) - Apply gdbm patch from Bernhard Reiter, mainly altering messages. - Apply German language patch from Bernhard Reiter. - Apply haof patch from Bernhard Reiter. Peter McCluskey (July 15, 2002) - Fix some missing links to multipart attachments with save_alts option. Peter McCluskey (July 11, 2002) - Add base_url option, and warning about it being needed when the latest_folder option is used and the folder_by_date option contains a '/'. Peter McCluskey (July 8, 2002) - Fix endless loop that save_alts option often produced. Peter McCluskey (June 18, 2002) - Applied changes from Carlos Martín Ugalde to Spanish text. Peter McCluskey (June 13, 2002) - Fix call to compute_quoted_percent so that it doesn't crash on deleted msg with incremental update. Peter McCluskey (May 14, 2002) - Add spamprotect_id option. Peter McCluskey (Apr 26, 2002) - Changed to convert ampersands in urls to &. Peter McCluskey (Apr 22, 2002) - Add Greek language support from Akis Karnouskos. - Surpress <p> within <pre>. Peter McCluskey (Mar 22, 2002) - Fixed to rewrite old messages that have new replies (some links to replies/next in thread had been missing for overwrite=0, increment=0, and also for linkquotes = 1). - Updated configure to reflect Daniel's changes to fix --without-gdbm in configure.in. Peter McCluskey (Mar 19, 2002) - Increase MAXSTACK from 20 to 200. Peter McCluskey (Feb 4, 2002) - Fix to avoid converting strings like ftp://user@host.com to mailto's. Peter McCluskey (Feb 4, 2002) - Patch from William R. Knox to add meta date tag. Jose Kahan (jose@w3.org) (Jan 25, 2002) - When a message had a charset of type US-ASCII or ISO-8959-1, it wasn't being stored in the HTML version of the message. This could result in a correct decoding of the message, as browsers assume a user-given default charset in those cases. Peter McCluskey (Jan 11 2002) - Patch from William R. Knox to fix possible race condition in creating dirs. Peter McCluskey (Jan 10 2002) - Add %t substitution cookies to provide path to top folder. Peter McCluskey (Jan 5 2002) - Fix segfault in incremental mode with linkquotes. ======================== HYPERMAIL VERSION 2.1.4: ======================== Peter McCluskey (Dec 19 2001) - Create version 2.1.4 tarball. Peter McCluskey (Dec 14 2001) - Applied patch from William King adding </li>'s. Peter McCluskey (Dec 10 2001) - Fix bug in chronological ordering of folders. Peter McCluskey (Dec 6 2001) - Applied patch from William King to fix footer links on attachment index. Peter McCluskey (Dec 4 2001) - Change to detect start of new message when mime boundary missing, treat unbounded text as plain text body. Peter McCluskey (Dec 2 2001) - Applied patches from William King: - DTD changed to strict. - </p> now emitted. - Some tags were not contained properly. Now wrapped in <p></p>. Peter McCluskey (Dec 1 2001) - Applied patches from William King to string function defines and gdbm configuration. Peter McCluskey (Nov 30 2001) - Add Polish language support from Piotr Waskiewicz. Change some hardcoded From's to new macro MSG_FROM, change a Date to MSG_CDATE. - update config.sub, config.guess from ftp.gnu.org/gnu/config/. Peter McCluskey (Nov 26 2001) - Applied patches from William King to update man pages for body, lang options changes, and add new domain codes. Peter McCluskey (Nov 24 2001) - Applied patch from William King to add lang= to <html> tag, get rid of duplicate <em>. Peter McCluskey (Nov 23 2001) - Added support for locales of form en_US. Changed language code "se" to "sv", provide warning for old code. Peter McCluskey (Nov 22 2001) - Applied patch from William King to create meta tag with hypermail version number. - better French support from Emmanuel Blot. Daniel Stenberg (Nov 21 2001) - Updates to congfiure and trio. Peter McCluskey (Nov 21 2001) - Applied patches from William King to conform better to HTML 4.01: * remove body option, replace default <body> bgcolor=, text= with inline style sheet (unless user-defined style sheet present). * change <div align=...> to <div class=...>, same for <h1 align=...> - add $BINARY, $NONPLAIN types to ignore_types option. - add warn_surpressions option - add unsafe_chars option - Remove tmpname from parse.c (to get rid of warning about mktemp). Peter McCluskey (Nov 19 2001) - Applied patches from William King to conform better to HTML 4.01: * remove noshade from <hr> * change the default DTD * escape &'s, add image/png in test.rc, hmrc.example - Changed the fix*header() routines so that they handle incremental updates sensibly when given a mailbox with multiple messages. In the process, I fixed 2 problems with single-message incremental updates, one which left out the "Next message" link, and one which created a "Reply" link that should have been a "Maybe reply". - Add warning for mbox that starts with different msg than gdbm file if not using -u (overwrite) option. - Change default for overwrite option to off. - Fixed segfault that happened when %m parsed in header but mailto was NULL. Peter McCluskey (Nov 18 2001) - Folder list now sorted chronologically. Peter McCluskey (Nov 16 2001) - Added save_alts and alts_text options. Peter McCluskey (Nov 15 2001) Updated some old documentation, added some security warnings. Peter McCluskey (Nov 14 2001) - Changes relevant to security: 1. attachment filenames ending in .shtml get changed to .html. 2. attachment descriptions are passed through convchars to prevent html tags from being used there. Peter McCluskey (Nov 13 2001) - Fixed malloc bug that caused segfault with linkquotes=1. Peter McCluskey (Nov 12 2001) - Update to trio-1.4 (from 1.2) to fix Alpha compile problem. Peter McCluskey (Nov 7 2001) - Changes to hypetombox.pl: 1. add some support for handling attachments. 2. fixed some problems arising from some tags being changed to lowercase. 3. add -S option to specify htmlsuffix. 4. changed to convert <p> to blank line (instead of to nothing). 5. additions to improve handling of archives produced linkquotes=1 option. Peter McCluskey (Nov 5 2001) - change parse.c to treat lines containing only a carriage return as blank lines for purpose of deciding whether they indicate the end of headers or a continued header line. ======================== HYPERMAIL VERSION 2.1.3: ======================== Peter McCluskey (Aug 22 2001) - fix Makefile to clean pcre directory. Peter McCluskey (Aug 7 2001) - removed In-Reply-To from mailcommand default. Peter McCluskey (Jul 25 2001) - fix to abort before unlinking gdbm file if need it and cannot open it. - fix latest_folder option (didn't work in incremental mode). Peter McCluskey (Jul 17 2001) - patch from Brian Kirkby to fix links between folders with usetable. Peter McCluskey (Jun 26 2001) - fixed parsing of integer/octal/switch environment variable values. - fixed bugs in latest_folder option (includes fix from David Bau <davidbau@hotmail.com>). Peter McCluskey (Jun 23 2001) - fixed FILES so that hypermail.html gets into tarballs. Peter McCluskey (May 31 2001) - patches from Moritz Willers to surpress empty "messages sorted by:" line, add | after "Previous Folder, Thread view", etc. Peter McCluskey (May 30 2001) - changes to Swedish from peter karlsson. ======================== HYPERMAIL VERSION 2.1.2: ======================== Peter McCluskey (May 22 2001) - change default value for avoid_top_indices to none. - fixed make to handle pcre properly. Peter McCluskey (May 16 2001) - fix pathnames in inline attachments with msgsperfolder/folder_by_date Peter McCluskey (May 11 2001) - add filter options (using pcre regular expressions): filter_out filter_require filter_out_full_body filter_require_full_body Peter McCluskey (May 9 2001) - fix links to attachments in subdir index files. Peter McCluskey (May 8 2001) - fixed bug with incremental update that caused the index files to ignore messages beyond set_searchbackmsgnum. Daniel Stenberg (May 8 2001) - Removed the last traces of mprintf.[ch] and made the trio stuff work completely as a replacement. Peter McCluskey (May 7 2001) - fixes to trio configuration. Peter McCluskey (May 4 2001) - another fix to avoid_top_indices = folders. - enhance show_msg_links to support links only at top or only at bottom. - add show_index_links option to control links from message page to indices. - add txtsuffix option - On/Yes now converted to 1 for CFG_INTEGER options (for compatibility with options that used to be CFG_SWITCH's) - fix append option so that it handles uuencoded attachments and mdecodeQP() calls correctly. Kent Landfield (May 4 2001) - corrected compilation issue for Sun CC in string.c - corrected check for set_custom_archives in hypermail.c Peter McCluskey (May 1 2001) - convert mprintf calls to trio calls Peter McCluskey (Apr 27 2001) - allow incremental update with folder_by_date on empty archive, improve error messages for missing gdbm file with folder_by_date, incremental update. Peter McCluskey (Apr 26 2001) - fixed so that avoid_top_indices = folders works. Peter McCluskey (Apr 24 2001) - fix urls at end of index page with folder_by_date. Peter McCluskey (Apr 20 2001) - patch from Hisashi Gotoh <gotoh@horae.dti.ne.jp> to fix message/rfc822 handling with showhtml = 0. ======================== HYPERMAIL VERSION 2.1.1: ======================== Peter McCluskey (Apr 18 2001) - changed configure script to check several directories for gdbm.h, provide --with-gdbm=DIR option. Peter McCluskey (Apr 16 2001) - added patch from David Eisner <cradle@glue.umd.edu> to prevent subject matching on subject lines which have no Re:. - made hashreplylookup use the same code as hashreplynumlookup (fixes missing "Maybe in reply to" links in some messages. - made find_quote_prefix more cautious about recognizing nonstandard prefixes as quote prefixes (affects linkquotes and showhtml=2 options). Peter McCluskey (Apr 14 2001) - add missing <ul> when set_show_msg_links == 0, pointed out by Emre Bastuz <info@emre.de> Peter McCluskey (Apr 13 2001) - fixed portability problem in strcasestr. - fixed custom_archives to handle NONE properly. - removed a poorly thought out maybereply check in crossindexthread2 that was apparently dropping some messages from the thread list. Peter McCluskey (Apr 12 2001) - convert html tags for monthly_index, yearly_index to lowercase. - fixed indexing error in getname reported by David Eisner <cradle@glue.umd.edu> - fixed set_usegdbm compile error reported by Daniel. - fixed parentheses in printattachments Peter McCluskey (Apr 10 2001) - Add check for *html deleted, gdbm index still present. - fix count of messages. - sped up linkquotes 2.5x by better mallocs - replaced strcasestr with faster one from glibc via Scott Rose - PushNString, PushString speedups - fixed bug in parseemail (faulty sscanf return value check) that added bogus strings in odd mailto's. Peter McCluskey (Apr 9 2001) - add new options: deleted, expires, delete_msgnum, delete_level - togdbm args: fix misuse of secs_to_iso which made email->date == email->fromdate - fix subdir bug with thread_file_depth - fix threading bugs with linkquotes - fixreplyheader with linkquotes bugs fixed Peter McCluskey (Apr 6 2001) - patch from Hisashi Gotoh <gotoh@horae.dti.ne.jp> adding iso2022jp option and fixing bug when config file not found. Peter McCluskey (Apr 5 2001) - fixed faulty urls in thread index files in subdirs with folder_by_date, msgsperfolder Peter McCluskey (Apr 3 2001) - changed htmlfilename, articlehtmlfilename to allocate mem dynamically. - redid config section of hypermail.html to describe some of the most important options and refer to hmrc.html for a full description. Changed style of hmrc.html, added folder_by_date mention to hypermail-faq.html. - fixed typo in FILES. ======================== HYPERMAIL VERSION 2.1.0: ======================== Peter McCluskey (Mar 31 2001) - fixed core dump with showhtml=2 created by yesterday's checkin. - added isodate, gmtime options. - bug fixes to mime decoding and to libcgi/form_ent.c from Greg Shenaut <greg@bogslab.ucdavis.edu> - add fixhtime.pl (changes timestamps to match From:) Peter McCluskey (Mar 30 2001) - Reorganized hmrc.html. - Add options to split archive into subdirectories: folder_by_date msgsperfolder latest_folder describe_folder avoid_top_indices Peter McCluskey (Mar 22 2001) - Enabled attachments index file, added sublists of attachment names and file sizes. Peter McCluskey (Mar 22 2001) - Fixed problem with GDBM defines. - Improved speed by replacing O(N^2) code in these functions with code that is at least typically close to O(N): addreply, crossindexthread1, crossindexthread2, nextinthread, writearticles (if set_showreplies) Accidentally improved threading under linkquotes option in the process. Overall performance probably scales up linearly with the number of messages under normal conditions (but not with linkquotes, which has other performance problems as well). Code is ifdef'd under FASTREPLYCODE for now. Peter McCluskey (Mar 19 2001) - Added new usegdbm and append options from Scott Rose. Peter McCluskey (Mar 14 2001) - Added avoid_indices option. Peter McCluskey (Mar 13 2001) - Sped up by balancing the datelist tree a bit (it had been virtually a linked list) and by removing redundant call to nextinthread. Peter McCluskey (Mar 12 2001) - Added contrib/cron_hypermail - Added some files in contrib and tests/mboxes to FILES. Peter McCluskey (Mar 2 2001) Added features originally implemented in critmail. New source files: finelink.c finelink.h quotes.c search.c search.h txt2html.c txt2html.h New options: - showhtml: new option value 2 gives richer conversion to html borrowed from txt2html.pl. - monthly_index: create additional index files broken up by month. - yearly_index: create additional index files broken up by year. - thread_file_depth: break the threads index file into multiple files, roughly one per thread. - linkquotes: creates fine-grained links from quoted text to the text where the quote originated. It also improves the threads index file by more accurately matching messages with replies. - searchbackmsgnum: with linkquotes and -u, speeds up processing, with some risk that linkquotes won't find all links it should. - link_to_replies: generate links from original quoted text to the location(s) in replies which quote them. - quote_hide_threshold: If the linkquotes option is on, replaces quoted text with links in messages which quote too much. - quote_link_string: with quote_hide_threshold, use this text in place of first line of quoted text. Peter McCluskey (Feb 20 2001) - replaced the bodymailcommand with the following, to be more compatible: * mailcommand - works as before unless replymsg_command specified * replymsg_command - used for sending a reply to the list; if not specified, is set to the value in mailcommand for compatibility with old .hmrc's * newmsg_command - used for sending a new message to the list ======================== HYPERMAIL VERSION 2.0.0: ======================== Peter McCluskey (Feb 19 2001) applied patches from "W. Tasin" <tasin@fhm.edu> - some changes in the german translation - if a Content-Base is found set content=CONTENT_IGNORE because it is on another server and it would never be parsed well inside the mail... (this is more a workaround than a good patch... a better way would be to include this to every link inside the content... to show up also this external site... but I think it is an easy way to handle this problem) - add NONE as value for set_mailcommand, so "New Message" will not be shown - improve handling of inline attachments after signature. - prevent "(no email)" in emailaddr from becoming mailto. - add option set_bodymailcommand to configure mailto's other than one used in MSG_NEW_MESSAGE or MSG_REPLY. - changes to makemailcommand to prevent (nil) from showing when no Subject:. Daniel Stenberg (Jan 3, 2001) - Added checks for more functions in the configure script Ashley M. Kirchner (May 31, 2000) - I converted all uppercase HTML tags to lowercase in the main hypermail base source. Stuff that got contributed (under the contrib directory) were not touched. I'm going to leave those for their respective contributors to change. Daniel Stenberg (daniel@haxx.nu) (May 25, 2000) - Added 'spamprotect' as a new flag. It replaces @-letters with "_at_" to confuse spam-email-robots a bit. - Found a terrible bug when an URL contains a @-letter, since it'll first become <href>-tagged and then <mailto>-converted... :-/ - Added https:// as a recognized URL type (deja-vu, didn't I do this before?) - Corrected the alternative parser not being reset at the end of all mails Daniel Stenberg (daniel@haxx.nu) (May 23, 2000) - Corrected the output on %> appearences in the template files - Applied the beauty fix supplied by Darryl Lee <lee@darryl.com> Daniel Stenberg (Apr 10, 2000) - I made %<unknown letter> in printfile display exactly as used the other day. Today I changed my email address all over! - Added https:// to the recognized URL types to <a>-ify Jose Kahan (jose@w3.org) (Jan 17, 2000) - The quoted printable decoding didn't take into account the ietf-mbox option. Jose Kahan (jose@w3.org) (Dec 24, 1999) - Removed an invalid </A> tag when using tables. - When using the showhtml option, invalid HTML was generated in the headers: <P><P> before the </PRE>. - Stopped the generation of a Mailto on msgid's. - Rearranged the format of the index and messages when not using tables. My aim was to make the format more symetrical. - Added a new item, "Mail actions", in the control menu. This item is only active when using the mailcommand and hmail options, and when the tables are turned off. This option duplicates the one found in the table. - Added two new options for linking external stylesheets to the index and the messages, respectively: icss_url, mcss_url. The link is added as a META element in the header. - The default value of the mailcommand mailto: had some typos: non escaped chars, use of reply-to instead of in-reply-to. - Two protections were missing to avoid having empty HREFs when the about and archives options were defined in the .hmrc file, but wihout any given value. Jose Kahan (jose@w3.org) (Dec 15, 1999) - The inline changes from 29/Nov had the side effect that other inline attachments, like text/html were being linked like inline images. Kent Landfield <kent@landfield.com> (Dec 8, 1999) - Bjarni R. Einarsson <bre@netverjar.is> pointed out that the "Reply:" and "Maybe Reply:" output was not correct. pcm@rahul.net (Peter C. McCluskey) submitted a patch that fixes them as well as the current threading allows. Kent Landfield <kent@landfield.com> (Dec 7, 1999) - Added hoaf-28 python index generator written and contributed by Bernhard Reiter <bernhard@climate2.geog.uwm.edu> to the basline. - Added ls2mail script written by David Kilzer <ddkilzer@ti.com> to the basline. - Converted libcgi.doc to libcgi.html. Kent Landfield <kent@landfield.com> (Dec 1, 1999) - hypermail-2b28 rolled. Kent Landfield <kent@landfield.com> (Nov 29, 1999) - Corrected a parsing error in parsemail when dealing with attachments. If the filename was "quoted" things worked properly. If the filename was not quoted then the name of the attachment was dropping the first letter of the filename and adding '_' to the end. - Corrected a conditional statement that was limiting storage of 'inline' types to only recording inline types that were of type image/. - Changed strstr usage when searching MIME headers to use strcasestr instead as the case sensitivity was getting in the way. Kent Landfield <kent@landfield.com> (Nov 28, 1999) - Inconsistencies in write* routines called in hypermail.c pointed out by Bernhard Reiter <bernhard@uwm.edu>. set_* variables were used but still passing values in with the function call. Removed unneeded parameters. Kent Landfield <kent@landfield.com> (Nov 22, 1999) - The .hmrc resources didn't seem to override the default values, but rather got added to them. This was corrected for list usage. If a list value is set in the .hmrc file, it should completely replace the default values. This need only occur on the first occurance after the builtin initialization. - Jeff Katcher pointed out 'At the bottom of index.html and date.html, "Last message date:" is output twice. It's only present once on the author and subject pages.' This has been corrected so it is only printed once. Jose Kahan <jose@w3.org> (Nov 23, 1999) - A typo in setup.c:PreConfig gave problems (memory overwrite) when dealing with CFG_LIST configuration options. - uudecode wasn't working with the ietf-mbox option. Kent Landfield <kent@landfield.com> (Nov 22, 1999) - Error in setting of defaultindex in configure.in caused no index.html file to be created. configure.in was corrected to set the default index to "thread" instead of thread.html. - Added .indent.pro files to FILES file. - Added "-p" option to mkdir so all parent directories will be made if needed. - Added requests to TODO file. Kent Landfield <kent@landfield.com> (Nov 17, 1999) - hypermail-2b27 rolled. Kent Landfield <kent@landfield.com> (Nov 17, 1999) - Changed the install dependencies for the Makefile.in files so that install-sh is used through out. - Assured all includes are checked for in configure. - Updated FILES - Corrected dependencies on defaults.h Kent Landfield <kent@landfield.com> (Nov 14, 1999) - Corrected CFG_LIST storage of defaults other than NULL in the function ConfigAddItem(). - Assured struct hmlist variables set_text_types, set_inline_types, set_prefered_types, set_ignore_types, and set_show_headers set to NULL initially. Othewise add_list was checking garbage when called from ConfigAddItem(). - Reworked some of the defaults in setup.c - Added a dump_configI() routine to print out all internal variables for debugging. Use #ifdef DEBUG to get it included. - Removed unused defines in setup.h - Added defaults.h.in so sites could setup reasonable global defaults. - Added additional configure support for setting defaults for language, htmlsuffix, defaultindex and domainaddr in defaults.h. - Added cleanup of defaults.h and mail-archive test directory to Makefile - Removed old method from Makefile.in and lists.h in the archive directory. - Regenerated configure from configure.in. - Regenerated the dependencies in src/Makefile.in - Removed some #if 0 code in date.c - Changed strdup calls to strsav calls in getname.c and mail.c - Cleaned up html page output if usetable was selected. - Removed unnecessary variable passing into the writedates(), writethreads(), writesubjects(), writeauthors() routines. - Freed up memory alocated for configfile variable. - Removed unneeded variables in hypermail.h (previously #if 0'ed) - Updated README a bit. - Updated Changelog Kent Landfield <kent@landfield.com> (Nov 11, 1999) - Removed strdup declarations that were causing gcc to fail on certain systems. - Added French language support contributed by Nicolas NOBLE <pixels@chez.com> - Updated documents about "is" and "fr" language support. Kent Landfield <kent@landfield.com> (Nov 9, 1999) - Added checking the return value of getpwuid() in readconfigs. If the value is NULL then see if the $HOME is set in the environment. This avoids a crash for Win32 users who don't bother to set up /etc/passwd in cygwin environment. - Added support for proper naming of executables (hypermail on Unix hypemail.exe on Dos/Windows/NT). - Corrected getlocaltime so it would not print the timezone twice if the timezone was also specified in the dateformat directive. - Corrected print.c so From: is printed when the email address is the same as email name. - Removed tests/testhm from the baseline. Replaced it with testhm.in so configure can generate the proper path to the test hypermail executable. - Modified configure.in so that it can determine if it is running in cygwin environment. Added tests/testhm.in support. - Removed acconfig.h from the baseline as it is no longer needed with the current configure changes. - Assured destination directories exist for all installed files. - Added uninstall option in makefiles. - Cleaned up the docs/Install-win32.txt to reflect the changes made. Bjarni R. Einarsson <bre@netverjar.is> (Nov 5, 1999) - "is" message table translation. - Added a stripsubject feature to hypermail, which makes it remove all occurances of a given word from the subject line, which is really useful for un-cluttering the subjects of some mailing lists (my lists all have their subjects prefixed with [listname]: - which is quite redundant in an archive). Jose Kahan <jose@w3.org> (Nov 4, 1999) - Cleaned a bit the HTML format as well as the arranging of the indexes, to make them look a bit more coherent. - Commented the code that assumed we have an HTML text when finding a line with <HTML>. The best way is to send HTML text using a correct content type. - New configuration option, custom_archives, that allows to define a proprietary HTML text to be shown in the Other mailing archives item. - New configuration option, ietf_mbox, for parsing IETF-formatted mboxes (see the doc). Jose Kahan <jose@w3.org> (Nov 2, 1999) - When using the showhtml option, </PRE> tags were being added to each line of the signatures. Martin Schulze <joey@infodrom.north.de> (October 27, 1999) - Some where the showheaders functionality was lost. It has been partially added in. The 'hm_show_headers = list_of_RFC_Headers_to_display' functionality did not work and has been corrected. - If the show_headers directive contains the special character ``*'', hypermail will display all header lines. - Hypermail 2.x can now read hypermail 1.02 config files. Needed to assure minimal impact of existing sites that use the older version of hypermail. - hmrc.4 and hypermail.1 have been updated. Kent Landfield <kent@landfield.com> (October 27, 1999) - Edited documentation to the text more readable by using two spaces after a fullstop. - Cleaned up prototypes so they are consistent through out the include files. - Found many locations where a local variable was shadowing a global variable. Renamed certain variables to assure no compiler confusion. - Extended the warning switches in WARNINGS in the Makefile.in. Kent Landfield <kent@landfield.com> (October 23, 1999) - Added additional checks in configure for the operating system. Set -Ae for HP-UX and added checks for functions in libsocket and libnsl. Added sanity checks to assure you are on the same machine if you are using the existing config.cache and added acconfig.h config.guess config.sub support files. Additional cleanup to configure.in and a regenerated configure script. Scott Rose <srose@direct.ca> (October 20, 1999) - When a URL has trailing punctuation, it is almost certainly not part of the URL. This version of parseurl() therefore excludes trailing punctuation from URLs it finds. - If the content-description of a message was empty, and at the end of a line, the link to the associated attachment was anchored on null text. Fixed to assure the text is anchored on the filename in the generated HTML. Scott Rose <srose@direct.ca> (October 19, 1999) - Added contrib/canonicalize.pl Comparing two archives is complicated by the fact that each message is marked by the time at which it's archived. Attached is a script that standardizes that date, if weakly, useful for such comparisons. - Added contrib/hyperfeed.pl Feed messages from an mbox into hypermail one at a time so as to test the incremental mode of hypermail. - The idea here is that we are zipping along through an mbox, gathering information about a message, when we encounter a "From " line that signals the start of the next message. A side effect is populating dp with the date from that "From " line. In the existing code, that value is copied into fromdate[] just before the old message is hashed, which causes it to be associated with the previous message. This caused different output depending on incremental or mbox updating. This patch corrects that by moving the date copy until after the addhash function is called. Kent (October 18, 1999) - Updated parseurl fuction as done by Scott Rose <srose@direct.ca> provided 25% faster processing than the existing version while maintaining the same functionality. Kent (October 8, 1999) - Changed msg2archive.c to be able to use the command line - Made changes to runtest to assure msg2archive could be tested. - Added the indent file .indent.pro in archive, src and lib. - Ran indent on all sources in archive, src, and lib. - Made changes to configure.in to better support libsocket.a - Corrected configure.in check from gethostbyname to gethostbyaddr. - Added configure check for inet_addr - Added addition header checks and function checks in configure.in - Regenerated config.h.in with autoheader - Regenerated configure with autoconf - Updated the source files to use the HAVE_* definitions in config.h - Minor editing on the README - Minor updates to the TODO file and Changelog file. - Updated KNOWN_BUGS with the content of tests/Problems - Removed tests/Problems from the baseline as it was duplicating KNOWN_BUGS - Removed src/Formatting from the baselien as it was a junk working file of mine that should never have been baselined originally. - Added tests/mboxes/embedded.msg as a test file and updated tests/testhm to exersize it. - Removed the listing for tests/Problems and src/Formatting, while adding tests/mboxes/embedded.msg to the FILES file. - Added the corrected version of hypetombox.pl done by Peter McCluskey (pcm@rahul.net) to the baseline. Jose (October 7, 1999) - Changed the HTML DTD string of the generated strings to HTML 4.0 Transitional. - Updated the doc to correspond to the suppression of the options's hm_ prefix. Made the doc's HTML documents valid HTML 4.0 docs. Kent (September 20, 1999) - Cleanup of prototypes. - Removed the generated getdate.c from the baseline. (Generated from getdate.y. - Purified and removed array bounds read problems. Daniel (September 17, 1999) - Applied language patches from Jyrki Kuoppala <jkp@kaapeli.fi> - Applied Kent Landfields lots of changes. getname() is reverted to an older version since the newer did out-of-bounds reads. - Paul Haldane's fix is applied. - Peter C. McCluskey <pcm@rahul.net> suggested fixreplyheader() correction has beed applied. Daniel (September 13, 1999) - Kent Landfield found a bunch of weirdnesses that were corrected, in: * threadprint.c/print_all_threads() * print.c, makemailcommand() usage Jose (September 8, 1999) - (This is a big commit as I'm merging my independent developments into the public hypermail tree, which I'll use from now on) If there's a Content-Description header, we now use it to describe MIME attachments (unless they are inlined). Two new options (see the hmrc.4 or hmrc.html file for more info): + hm_uselock to turn off hypermail's internal locking mechanism + hm_usemeta to store the content type of a MIME attachment in a metadata file (also available thru commandline option -M) If the usemeta option is turned on, the Content-Type header of an attachment is stored in a .meta directory (see hmrc.4 or hmrc.html for more info). Files where MIME attachments are now prefixed with a two-digit counter, a la dd-name. This is to avoid having having to create temporary files, and to preserver links. The counter is incremented for each attachment, regardless of it's being inline or not. I disabled the call to emptydir as it's not useful (will add it as an option later on). External MIME attachments that don't have a filename, are given the name dd-part. Improved handling of MIME rfc822 attachments. Improved handling of Content-Disposition Ashley (September 7, 1999) - Added configure options for --httpddir, --cgidir and --htmldir with Apache's layout as the default (/usr/local/apache) Daniel (August 23, 1999) - Removed the 40-letter limit for subjects in the thread-index when the table option was enabled. jose.kahan@w3.org - When the boundary is declared without quotes, parse.c failed to get it properly. - print.c: There was a missing <PRE> and this resulted in a not-readable text Daniel (August 10, 1999) - I hade a terrible bug that made the attachment directories to get created relative the wrong directory! They were also not getting the proper permissions set. Tim Witham <twitham@pcocd2.intel.com> (August 10, 1999) - Had to fix a realloc() with NULL pointer which sunos doesn't handle. 2a24 ==== Daniel (August 9, 1999) - I'm consider renaming the series of archives that I'm releasing, back to the beta label. It would be more correct. Kent is with us again and I don't think anyone is gonna continue on the now forever sleeping beta-series. This seems to be the one and only hypermail development branch and I believe we now have it stable enough. - 'attachmentlink' is a new config file item that controls how attachments' links are made. By using this you can make a wrapper cgi script on your server that issues a warning to the user that it may be dangerous to run attachments or whatever you think is appropriate. Default it behavs as it used to do before this feature was added. Daniel (August 8, 1999) - Applied Jose Kahan <Jose.Kahan@inrialpes.fr>'s patches: The alternate content parsing was broken in that you couldn't give a list of preferences. Also, if you first parse an alternate with a low priority, then another one with a higher priority, the memory and, eventually, files created to store the former alternate content weren't erased. I found a minor bug. When decoding messages with multiple MIME attachments, the decode variable (where the content encoding format is stored), isn't updated. Daniel (August 6, 1999) - Fixed the subject overflow - Made attachments get saved in their own subdirectories. 2a23 ==== Daniel - I'm making a release out of this now since I'm off for a longish vacation next week... Paul - Applied Tom van Alten's patch to correct improper formatting of messages when hm_showhtml = 0 and showheaders = 1. - New code to (optionally) accept messages wth no msgid. Default is to require msgids in all messages - use hm_require_msgids = 0 to avoid this check. - Made handling of duplicate msgids optional. By default duplicates are discarded. To accept them (replacing the msgid with a generated msgid) use hm_discard_dup_msgids = 0. - Check return value from addhash when reading old messages. Messages already archived should be valid but safer to check. 2a22 ==== Daniel - Applied a boundary parsing bug correcting patch supplied by Andreas Fuchs <asf@ycom.at> Paul Haldane o (May 16th 1999) 1) changes to the way we construct threadlist (so that all the messages that should be in the thread are included even if they don't have valid in-reply-to headers) 2) changes to threadprint.c - simplification of print_all_threads. Now uses the information in threadlist to find the relationship between messages. This speeds things up a bit when adding single messages to large archives (I saw a reduction from 28s to 18s for adding a message to a 1,100 message archive). Slight speed-up when converting large archives - not as noticeable as a large part of time now seems to be in fopen(). I've updated/added some comments. I've added msgnum to the reply struct - this is just a copy of msgnum in ->data->msgnum - this was intended as an optimisation but I suspect it doesn't make much difference. Threading is now much better (well, I would say that wouldn't I :->). it still gets things wrong occasionally - often not really its fault. Known problems include 1) duplicate message-ids - results in messages being attached to the wrong thread - actually found an instance of this in my test mailbox. The obvious heuristic to avoid this would be to compare the subject as well, though this breaks threads where the sender has deliberately changed the subject but intends to continue the thread. 2) occasionally gets messages in the wrong order because they get attached to different sub-threads - wouldn't happen if MUAs used in-reply-to. I've done a quick tweak to duplicate msgid handling in addhash. Now replaces duplicate msgids with a locally constructed one. This keeps things happier. 2a21 ==== Daniel o (May 12th) - Added the tests/stdintest.pl script. It is a small perl hack that passes a series of generated mails into hypermail on stdin. One by one. I've got reports about bugs in that area, but I can't seem to repeat any with this tool. I thought I'd better include this here anyway to better enable others to run more torture tests on hypermail. Paul Haldane o (May 6th) - Here's a patch that allows the user to decide on the format used to present dates on the generated pages. If dateformat is set then it uses that (that's the new functionality) otherwise it uses the standard format or euro format depending on the config file. I've not given the option to use the date string as originally given in the mail message. This could be done without too much hassle. Daniel o (May 5th) - Corrected a crash in parse.c - Added a missing "From:" in print.c - Made the bin-names get prefixed with "att-" too. - Adjusted getname() to skip all starting white spaces and quotes, and to skip trailing quotes as well as white spaces. o (May 4th) - Attachment names could miss the first letter. 2a20 ==== Daniel o (May 3 1999) - Implementing my new From:-parser into the new source file: getname.c. This should hopefully not only be much better at parsing from lines, but also to it in a more stable manner. - Found some additional problems with From-lines I've tried to correct. Like a single-mail archive or mails with no From:-lines at all. Ron Brogden <rb@islandnet.com> o A small correction to hypermail.c lets it compile properly on sunos 4. 2a19 ==== Daniel o Now I prefix filenames with "att-" when I save attachments. o Several errors correct, most of them by Paul Haldane. 2a18 ==== Daniel o (Apr 7 1999) - Added 'locktime' as a configurable item. It defines the maximum number of seconds to wait for an existing lock to dissapear before it is overridden. If this is 0 or less, the lockfile will lose its power completely. locktime is 3600 by default. - I made the 'indextable' option work as Glen Steward wanted it to (that March 30 patch apply wasn't such a big hit). You can either set "indextable = on" in the config file or use the -T command line option to get the indexes in "table" version. Paul Haldane o (Apr 7 1999) - Major date-parsing re-arrangement. getdate.c added, lots of functions patched. Speed improvements. 2a17 ==== Daniel o (Mar 30, 1999) - First atttempt at applying Glen Steward's table patches. It wasn't a complete success but it can be adjusted from here. o (Mar 29, 1999) - Ashley M. Kirchner found a silly bug that occured if the last mail in the box was a double message-id (or similar that makes that particular function return NULL). o (Mar 25, 1999) - Threaded index seems to work yet again! - Paul Haldane <Paul.Haldane@newcastle.ac.uk> brought me lots of various patches that made hypermail do better! o (Mar 25, 1999) - Corrected the problem with "re: subject" and "subject" being sorted differently. The explanation was that the "re:" subject had a space left in the beginning of the string! o (Mar 25, 1999) My giant work of redoing things now finally seems to work a little at least. What's been done the last week: - All emails now get only ONE single struct allocated for it. - Remade the hash stuff. Hashed entries in the table only stores a struct, links it in the list and POINTS to the email struct. - Added a hash on the 'inreplyto' string to better enable finding mails a mail replies to. - Rewrote the whole darned threaded index functions. threadprint.c is a new source file for threaded index functions. - All indexes will now have full access to the complete email struct and will thus enable dates all over etc. This will enable me to introduce a template feature for how to write an entry in an index. I.e what to include for each entry, subject, author, date, charset, bla bla bla... - Changed the way single mail's "next in thread" links are found. - As a "side-effect" I added a filter to prevent the same message ID twice. The reason for this is that it is more likely for it to be able to screw up the threading if I allow them to co-exist. o Ashley M. Kirchner <ashley@pcraft.com> works on the bug report web. o (Mar 15, 1999) Roman Shterenzon <roman@xpert.com> pointed out a bug in the HTML-reader that made hypermail crash if the variables were set to "". I mailed back a patch to him I think will correct this problem. 2a16 ==== Daniel o (Mar 14, 1999) "text_types" is now a recognized config file item, where you can specify MIME types that should be treated by hypermail _exactly_ as if they were text/plain. o Corrected the list-check routine, so that the items in the list are the ones using wildcards. This means that suddenly, all those mime-list items support wildcards! o (Mar 13, 1999) Craig A Summerhill <craig@cni.org> found a bug. It turned out to be the fact that parse.c wronly assumed content-type text/plain to use ENCODE_NORMAL. It was really silly, since the Content-Transfer-Encoding header could've already appeared and stated another encoding! o Adjusted configure.in to do a slightly better -libnsl check. o (Mar 11, 1999) CVS server is up again. Added the UPGRADE file to the tree. Thanks to Glen Stewart. o (Mar 10, 1999) Pretty extensive re-write of parse.c to deal with the "Content-Disposition" headers better. That line can give a hint whether the file should be stored as a file or showed inlined. It can also have the filename (RFC1806 for details). o (Mar 10, 1999) The CVS server is down due to admin work there. o (Mar 10, 1999) Fixed parseurl(). It now deals with <www.foobar.com> and similar constructions better. Craig A Summerhill <craig@cni.org> reported. o (Mar 8, 1999) Corrected src/Makefile.in to not use options.h anymore! Roman Shterenzon <roman@xpert.com> made me aware of this. 2a15 ==== Daniel o (Mar 5, 1999) Made "text" equal text/plain in content-type: header lines. o Removed options.h completely to reduce the number of mistakes from people trying to edit it! o (Mar 4, 1999) Applied Glen Stewart's patch to remove a few <li> tags. o Bailey, Raymond <bailey9@MARSHALL.EDU> pointed out a problem in the getname() function. When you got a mail with a From: line where there is a name within quotes that were "attached" to the email part without spaces in between as in "name"<email@email.com> the parser failed to get a name part of this and caused hypermail to dump core. o Alisdair Davey <ard@mithra.physics.montana.edu> Helped me point out a bug in mprintf.c. It made the *printf() routines fail on %.*s constructions. I am considering an upgrade of the mprintf stuff to my newer "trio" stuff... o Made %f insert the file name of the generated HTML file in headers and footers. 2a14 Pl 2 ========= Daniel o Removed a bug that occured when converting a mail into html that had a "in-relpy-to" header but the replied-to mail was not present in the mailbox. 2a14 Pl 1 ========= Daniel (now CVS'ed at cvs.hypermail.yeehaw.net:/cvs/hypermail) o Made it de-mime headers even without the mime-version: header present 2alpha14 ======== Daniel o It should now accept white space in the beginning of config file lines. o SetupCleanup() bugs somehow, I'm no longer using it == dirty fix. o Updated the "name/email" scanner. o Total mail counter was wrong when updating. o Renamed to alpha to avoid confusion. 2b13 ==== Daniel o Two corrections in the mprintf.c. One of them being serious o (parse.c) now the QP decoder accepts question marks in the encoded-words o Corrected the mprintf() replacement define in mprintf.h o Added some more missing free()s in print.c 2b12 ==== Daniel o Now strips trailing white spaces from values in the config file if written without quotes. Paradise Cowgirl <minerva@phix.com> reported. o List types in the config were insanely written and caused memory disaster at times. Byron C. Darrah <bdarr@sse.FU.HAC.COM> and Jenni Baier <jenni@renewed.net> both probably experienced this. o Decreased the amount of memory allocations used when building hash tables for index sorting. (see addhash() in struct.c) 2b11 ==== Daniel o Tom von Alten <alien@hpdmlad.boi.hp.com> pointed out a really nasty bug in fixreplyheader() I had introduced! :-( 2.0b10 ====== Daniel o %c is recognized and replaced with a charset tag in mail headers. It should be set as early as possible within the HEAD tag. o Saves <!-- charset=blablabla --> in articles. o dprintf() was not a successful name, Linux uses it for some odd purpose even in stdio.h! :-/ Renamed my line of functions to m*. o Adjusted getname() to be slightly smarter. o Started working at adding charset to each single mail. It should be stored per-mail basis now, even though it is never used anywhere... It should now make a proper META HTTP-EQUIV tag! 2.0b9 ===== Daniel o Added a new -o option that can set any config options on the command line. E.g set label with -o "label=my new label". o Major rewrites of struct.c. There were just too many functions that passed data between them by strcpy()ing them to char buffers. They now pass char pointers in a lot higher degree. In fact, there aren't that many strcpy()s left in the source now. Not that I notice any faster operations, I just know it is neater code. o I really don't like the way proto.h has *ALL* prototypes and therefore everything is dependent on that file. I've stared to slowly extract the protos for each .c file into its own .h file. This will allow me to change prototype for a single function without having to recompile the whole lot. o Added general "Re:" - awareness functions. isre() returns TRUE if the input string starts with a re-thing and findre() returns the position of the first instance of re in the input string, or NULL if there is none. It knows and recognizes "Re:", "Fw:" and "Re[<number>]:" strings. If we ever intend to support local variations of this, I've now made that easier... o The new getname() had problems with parens in the real name part when quoted. As in From: "Windle, Alan M. (PA62)" <test@site.com> It shouldn't be a problem now. It should also work with from-lines like: From: ("Windle, Alan M. (PA62)") test@site.com There might be an idea to simply ignore everything within that level of parentheses. I mean, not add that text to the name. o The sorted datelist was broken because I must've destroyed unre() when I turned it dynamic. I improved printsubjects() to deal with pointers and it now strcpy()s a lot less data. Did the same change to the printauthors() too. o increment and readone are now separate options. Read stdin or use mailbox are mutually exclusive but don't modify increment or readone. The previous system was very confusing and didn't allow e.g updating an archive with two mails passed on stdin! I've now tried to update an existing archive with 3 mails passed on stdin and it seemed to work. Works if read from a mailbox too. Even works with the new -1 flag (to indicate there's one mail only). It has an accompanying config file keyword named 'readone'. I think the new -v flag is really great for this, cause it shows all built-in variables and kind of automatically documents them! o Ok, I wasn't aware the config file did assume quotes around the strings. I've added support for that (too) now. Distributed this small change to Kent, Tom and John as a patch for 2b8. 2.0b8 ===== Daniel (Nov 24, 1998) o So, just before I was gonna announce the b7 to the guys I got another report from John Petrakis that pointed out two bugs. One bad free() which he identified and one From:-line that b7 couldn't get name and email from properly. I got really tired and rewrote the whole getname() function to work with all the combinations mentioned in the source, and more. I think this function also has another benefit: it is easier to read than the old one. o I found some other bugs with my new setup system which caused the hm_htmlbody = NONE to not work. I am actually against that a line that says NONE sets it to the default. NONE should be NONE, if the keyword isn't used at all it should use the default. Well well, one thing at a time I guess. 2.0b7 ===== Daniel (getting deeper and deeper into this now ;-) o Entirely new config file parser. Does make adding new config items a lot easier and smoother. Run hypermail -v to make it output a fully working config file (after reading the given input parameters). There is no need for the "hm_" prefix on keywords in the config file. You can still use it if you want, but you don't have to. Internally, all configurable variables are now named 'set_XXXXX' to better make it visible in the code. o readoldheaders() is a lot more robust now. The order of the variables are not set and empty files no longer cause it to dump core. o Hypermail from now on only stores the variables inside HTML files that are actually set. name="" is not needed to store. 2.0b6 ===== Daniel continues: o parseemail() and ConvURLs() needed to deal with NULLs better. o loadoldheaders() are no longer dependent on the order of the variables in previously written HTML files. o Mails with no subject confused the parser.c o Tom von Alten <Tom_vonAlten@boi.hp.com> sent me two files he appearantly got from Kent after the b4 he sent me. (date.c and msg2archive.c) o All kinds of lists like hm_show_headers, hm_inline_types and hm_ignore_types now offer the below mentioned wildcards. o Added dmatch.c for dos-style * and ? wildcard matching. o Cleaning up more memory leaks. 2.0b5 as sent to John Petrakis 19 Nov 1998 ========================================== Daniel: o Added 'maketgz' to the archive. It is for creating release archives, without having to remove a lot of files first. * first asks for the version number of choice * uses the file FILES to know what files to include. * updates the patchlevel.h file to the entered version number * creates the archive with a directory based on the entered version number * names the archive based on the entered version number o Added a whole bunch of more free() calls. o Inlined HTML that was base64 or uuencoded were not previously dealt with properly. o Mails with no Message-Id: caused a crash in the hash function. o HM_INLINEHTML can now be set to 0 to prevent hypermail from inlining mail parts in HTML. 2.0b4 as sent to Tom von Alten Nov 19, 1998. ============================================ Daniel: o Dynamic strings all over. I added a generic dynamic-string system which I think works pretty good. Using functions and macros it should also be pretty easy to extend, modify and optimize without any other source modifications. I had to modify stuff all over the place and pretty much too. I hope I've removed at least the worst uses of static buffers and my initial tests prove me right. No lenght limits of any fields of a mail is my goal, and I think it is a fair goal. Beware of leaking memory now though. We need to setup some debug-system to track them easily. The dynamic string routines could very well be optimized too. o My dsprintf system was added. This system offers snprintf() - sprintf with a buffer length parameter and aprintf() - returns an allocated string with the text. I did this to better deal with fully dynamic buffers. o Corrected the swedish texts. All 8bit letters were gone! o (Nov 16) I recevied the 981013-b4 version. Started work. 2.0b4 ==================== Kent: o Date routine corrections. - Y2K capable. Hypermail used a two digit representation for the year through out. It now uses a 4 digit representation. - In hypermail.h, October was listed in monthdays as only having 30 days. - hypermail did not deal with all the major date string formats. Date: formats starting with a digit (09 Sep 1998 01:27:30 +0300) would cause parsing and threading problems. It now supports that format. - Added code to deal correctly with two digit years. The idea as to how to approach this and the basis for the solution is thanks to Byron Darrah. - Corrected an off by one day error in getyearsecs(). It was adding the current day && adding the hours, minutes, and seconds for that day as well. It only needed to count all the days UP TO the current day and then add the hours, minutes, and seconds for the current day. - Incorrect data type passed to fprint_summary(), needed to be long instead of int. - Corrected an off by one day in getdatestr(). Days in a month start at 1, not 0. o Add the ability to save hypermail generated html files with any configurable html suffix such as ".htm", ".html" or ".shtml", etc. This works for the index files as well as the message files. (New .hmrc variable, hm_htmlsuffix, new environment variable HM_HTMLSUFFIX, and HTMLSUFFIX define in options.h.) o Removed a conditional "if (use_mbox) increment = 0;" that was preventing the ability to read one message from a file and update an existing archive and its indexes. o Corrected parseurl to allow for a ',' (comma) character to be embedded in the URL. o Corrected parseurl to allow for a '&' (ampersand) character to be embedded in the URL. o Using -p with -iu on a new archive directory caused a core dump begause 'bignum' was zero. Corrected to assure bignum > 0. o Added language abilities to hypermail. English - en Spanish - es German - de Swedish - se initially supported. (lang.c and lang.h added.) Thanks to Francisco Iacobelli <fiacobelli@ibersis.cl> for the "es" message table translation. Thanks to Martin Schulze <joey@kuolema.Infodrom.North.DE> for the "de" message table translation. Thanks to Daniel Stenberg <Daniel.Stenberg@sth.frontec.se> for the "se" message table translation. o Changed how error messages are displayed so options message only displayed where appropriate instead of for every message. o Corrected getname() to parse yet another funky name format. o Corrected printing error when a invalid domain was encountered in an email address. o Converted some static internal buffers to dynamically allocated ones at startup saving 6+K. Also resulted in setstrval() not being needed so it was removed. o Corrected MIME parsing problem with previously parsed headers. o Corrected default labeling problem with stdin generated archives when no label is supplied. o Fixed hypermail so it would not crash if started with no arguments and an article on stdin. o Added locking to the archive so that there is less chance of corruption of the archive due to multiple copies of hypermail trying to update the same archive at the same time with multiple messages. This could be improved so as to check for pid of process that owns it... o Extended the configure support. o Extended the use of hm_progress so that more information about attachment files can be displayed. o Updated documentation to reflect changes o Corrected getname to deal with names that are all spaces. o Corrected configuration variable setting. Moved checks to the right place in the code. o Hypermail now supports listproc mailboxes as well as general Unix formated mailboxes. It does not require that a blank line exists between mail messsages in a mailbox. Thanks to Craig A Summerhill <craig@cni.org> for the push and the test data. 2.0b3 - 8/15/98 ================= o Added validation of domains so that the generation of mailto: is much more accurate than the previous method. o Added support for Content-Disposition MIME Header so as to get the filename from the header. o Added verification of filenames to assure they are safe to use and will not cause filesystem problems o Fixed a problem with parsing the ending MIME boundary (it expended headers following that) o Found and removed a one-byte buffer overflow in the line continuation code. o Corrected docs/hypermail.1 and TODO to reflect the proper RFC 822 parsing was actually included in version 2.0b1 o Corrected a typo in string.c that prevented the proper generation of mailto: links for email names with numbers [0-9] in them. o Corrected the base64 decoder error which caused files to get an extra zero-byte appended at times. (When storing attachments to disk.) o Added additional ported systems to the README o Removed the "#ifndef" from the defines in options.h. We do not want to inherit any define values from other places. If there are confilcts then I need to correct them. Inheriting defines can lead to unforeseen results. o attachments: - comments are now generated in the output mail for each attachment that is written in a separate file. The comment looks like: '<!-- attachment="filename" -->' in the standard comment style. o buffers and overflows - mdecodeRFC2047() now has an output buffer size argument - had to remove the use of rmcr() at two places, since that function uses a very strict static buffer limiting the maximum line length pretty bad. - parseurl() now features an output buffer size argument - parseemail() now features an output buffer size argument o multipart/alternative - added awareness and parser "intelligence" to pick the last prefered content-type within a series of alternatives (as MIME tells us to do). This has not yet been very thoroughly tested. - added the preferedcontent() function that returns wether a content-type is prefered or not (as set with hm_prefered_types). Default prefered type is 'text/plain' (if hm_prefered_types is unused). o output - added the experiment function printhtml(). It strips off unwanted html tags from the output, even if they are used in attached HTML files. I.e <HTML> and </HTML>. - made 'showheaders' not use <BR> or newlines since the BRs are ignored anyway, and the newlines are already present in each header line. - added 'hm_show_headers' which is a list of what headers to include when the 'showheaders' option is used. For now, it also controls which headers to show when attached mails are shown. Although I can imagine that you'd like separate lists (since for attached mails, you'd like i.e subject which you may not need for the main mail itself). If 'hm_show_headers' isn't used, all headers will be shown. - made the <PRE> system in the printbody() function a little smarter, and now it prevents multiple </PRE> and <P> tags better. It did however introduce another side effect (although a less serious one imho) and that is an extra pair of <PRE></PRE> after the last attachment when using 'showhtml'. o parsing - made the multi-line merger function to make all lines get a regular white space between them when they're put together. Previously, this character was left as-is, which could be a space or a tab (or any other isspace()) letter. - check changed to check for "<!-- received" as the start of parsing previous html files in the event that the archive maintainer whishes to add comments in the header template HTML files. - in_list() now checks for list items case insensitive - corrected so Message-ID:, References and Supersedes: lines are not converted into mailto: URLs. - corrected off-by-one in isquote that was causing array boundary read errors. - corrected off-by-one in printbody line output that was causing array boundary read errors. Real thanks are in order for Daniel Stenberg and David D. Kilzer. They helped greatly with making this release possible by sending in enhancements, comments and bug fixes. Thanks Guys! 2.0b2 - 6/07/98 ================= o Corrected command line processing for individual messages received on standard input. o Corrected formating of Next message links when incremental updating is done. o Corrected the template filenames in docs/hmrc.html. Added "file" to them. o Added additional systems to the list of ported systems. o Reset certain options back to the proper defaults. o Corrected problem in printbody in regards to printing HTML embedded in a message. Still work to do here. o Changed address options to assure I didn't get landfield.com information inadvertantly set in hundreds of archives because the admins just took the defaults. ;) 2.0b1 6/05/98 - Kent Landfield =============================== WARNING: There have been 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@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/%M Command 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: - recursive '%' substitution. A % in a subject line could cause an ugly recursion problem in a mail command expansion. - title length problem. Length of a title needs to be limited to less than 64 characters as indicated by HTML specs. - Weblinted the generated output and corrected various things. - Removed unused and unneeded variables o Change various storage length defines in hypermail.h Patches Contributed From: "Roy T. Fielding" <fielding@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@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@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@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 octet- stream. 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. A. The Quoted-Printable decoder bugged. A quick fix solved that. B. The quoted printable decoder didn't support unlimited size of the line the encoded text decodes into. I wrote a new function that seems to do it properly. C. Some important headers were not properly supported if they were split up on several lines. I had to rewrite the header parsing system to make this work. It now scans all headers and concatenate them into single lines before any function is trying to parse or decode them. D. It also showed a need for a uudecoder for the 'x-uue' encode type. This is only noted for the future as I haven't written any decoder for this format [yet]. 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@ti.com> ----------------------------------------------------------- o Fixed problem with 'From: ' header lines in messages with the following format: "From: <email@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, '@'). 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. 1.03b2 3/10/98 - Kent Landfield ================================= o Header corrections made, o all current memory leaks plugged, o variable initialization corrected, o expanded response message recognition, o fixed many threading related bugs. o Restructuring directory layout for ease of support and to make adding utilities easier. o Added additional archive utilities. 1.03b1 4/6/97 - Kent Landfield ================================ o Corrected memory leaks, o cleaned up HTML produced, o ran purify, lint and insight and cleaned up output. o Added the ability to customize header/footers via crude means but hey, it works. 1.02 8/1/94 - Kevin Hughes ============================ Fixed configfile problem, different usage() output, days[] space fix, NODATE, stripzone() fix, insig fix, SHOWBR, SHOWHR, IQUOTES, THRDLEVELS. 1.01 7/29/94 - Kevin Hughes ============================ Printfooter declaration, getdate() and timezone names changed to avoid library conflicts. Bad #define fixed (null) bug. 1.0 7/29/94 - Kevin Hughes ============================ Configuration file, logic fixes, better "re:" stripping, name tags, default index.html (HM_DEFAULTINDEX), default directory name can be mailbox name, mailto: fix, better dates, better error messages, numbered files are padded to four digits, headers are always in <pre>, next in thread, maybe in reply and maybe reply, MAILCOMMAND, EURODATE, commented source, chmods only new files, <html>, custom mail command variables. 1.0b3 7/14/94 - Kevin Hughes ============================ Environment variables added, ampersands are converted. 1.0b2 7/13/94 - Kevin Hughes ============================ Incremental updating added and various parsing bugs fixed. 1.0b1 7/6/94 - Kevin Hughes ============================ Hypermail rewritten in C. Because the source is so new and relatively untested, it's still considered to be in beta until feedback from users is received.