Annotation of hypermess/hypermail/Changelog, revision 1.5
1.1 kahan 1: Version Changes for Hypermail
2: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.5 ! kahan 3: Kent (September 20, 1999)
! 4: - Cleanup of prototypes.
1.3 kahan 5:
1.5 ! kahan 6: - Removed the generated getdate.c from the baseline. (Generated
! 7: from getdate.y.
! 8:
! 9: - Purified and removed array bounds read problems.
! 10:
! 11: Daniel (September 17, 1999)
! 12: - Applied language patches from Jyrki Kuoppala <jkp@kaapeli.fi>
! 13:
! 14: - Applied Kent Landfields lots of changes. getname() is reverted to an older
! 15: version since the newer did out-of-bounds reads.
! 16:
! 17: - Paul Haldane's fix is applied.
! 18:
! 19: - Peter C. McCluskey <pcm@rahul.net> suggested fixreplyheader() correction
! 20: has beed applied.
! 21:
! 22: Daniel (September 13, 1999)
! 23:
! 24: - Kent Landfield found a bunch of weirdnesses that were corrected, in:
! 25: * threadprint.c/print_all_threads()
! 26: * print.c, makemailcommand() usage
! 27:
! 28:
! 29: Jose (September 8, 1999)
! 30: - (This is a big commit as I'm merging my independent developments into
! 31: the public hypermail tree, which I'll use from now on)
! 32: If there's a Content-Description header, we now use it to describe
! 33: MIME attachments (unless they are inlined).
! 34: Two new options (see the hmrc.4 or hmrc.html file for more info):
! 35: + hm_uselock to turn off hypermail's internal locking mechanism
! 36: + hm_usemeta to store the content type of a MIME attachment in a
! 37: metadata file (also available thru commandline option -M)
! 38: If the usemeta option is turned on, the Content-Type header of an
! 39: attachment is stored in a .meta directory (see hmrc.4 or hmrc.html for
! 40: more info).
! 41: Files where MIME attachments are now prefixed with a two-digit counter,
! 42: a la dd-name. This is to avoid having having to create temporary files,
! 43: and to preserver links. The counter is incremented for each attachment,
! 44: regardless of it's being inline or not. I disabled the call to emptydir
! 45: as it's not useful (will add it as an option later on).
! 46: External MIME attachments that don't have a filename, are given the name
! 47: dd-part.
! 48: Improved handling of MIME rfc822 attachments.
! 49: Improved handling of Content-Disposition
! 50:
1.4 kahan 51: Ashley (September 7, 1999)
52: - Added configure options for --httpddir, --cgidir and --htmldir with
53: Apache's layout as the default (/usr/local/apache)
54:
55: Daniel (August 23, 1999)
56: - Removed the 40-letter limit for subjects in the thread-index when
57: the table option was enabled.
58:
59: jose.kahan@w3.org
60: - When the boundary is declared without quotes, parse.c failed to get it
61: properly.
62:
63: - print.c: There was a missing <PRE> and this resulted in a not-readable text
64:
1.3 kahan 65: Daniel (August 10, 1999)
66: - I hade a terrible bug that made the attachment directories to get created
1.4 kahan 67: relative the wrong directory! They were also not getting the proper
68: permissions set.
1.3 kahan 69:
70: Tim Witham <twitham@pcocd2.intel.com> (August 10, 1999)
71: - Had to fix a realloc() with NULL pointer which sunos doesn't handle.
72:
73: 2a24
74: ====
75: Daniel (August 9, 1999)
76: - I'm consider renaming the series of archives that I'm releasing, back to
77: the beta label. It would be more correct. Kent is with us again and I
78: don't think anyone is gonna continue on the now forever sleeping
79: beta-series. This seems to be the one and only hypermail development
80: branch and I believe we now have it stable enough.
81:
82: - 'attachmentlink' is a new config file item that controls how attachments'
83: links are made. By using this you can make a wrapper cgi script on your
84: server that issues a warning to the user that it may be dangerous to run
85: attachments or whatever you think is appropriate. Default it behavs as it
86: used to do before this feature was added.
87:
88: Daniel (August 8, 1999)
89: - Applied Jose Kahan <Jose.Kahan@inrialpes.fr>'s patches:
90:
91: The alternate content parsing was broken in that you couldn't give a list
92: of preferences. Also, if you first parse an alternate with a low priority,
93: then another one with a higher priority, the memory and, eventually, files
94: created to store the former alternate content weren't erased.
95:
96: I found a minor bug. When decoding messages with multiple MIME
97: attachments, the decode variable (where the content encoding format is
98: stored), isn't updated.
99:
100: Daniel (August 6, 1999)
101: - Fixed the subject overflow
102:
103: - Made attachments get saved in their own subdirectories.
104:
1.2 kahan 105: 2a23
106: ====
107: Daniel
108: - I'm making a release out of this now since I'm off for a longish
109: vacation next week...
110:
1.1 kahan 111: Paul
112:
113: - Applied Tom van Alten's patch to correct improper formatting
114: of messages when hm_showhtml = 0 and showheaders = 1.
115:
116: - New code to (optionally) accept messages wth no msgid. Default
117: is to require msgids in all messages - use hm_require_msgids = 0
118: to avoid this check.
119:
120: - Made handling of duplicate msgids optional. By default duplicates
121: are discarded. To accept them (replacing the msgid with a generated
122: msgid) use hm_discard_dup_msgids = 0.
123:
124: - Check return value from addhash when reading old messages. Messages
125: already archived should be valid but safer to check.
126:
127: 2a22
128: ====
129: Daniel
130: - Applied a boundary parsing bug correcting patch supplied by
131: Andreas Fuchs <asf@ycom.at>
132:
133: Paul Haldane
134: o (May 16th 1999)
135: 1) changes to the way we construct threadlist (so that all the messages
136: that should be in the thread are included even if they don't have valid
137: in-reply-to headers)
138:
139: 2) changes to threadprint.c - simplification of print_all_threads. Now
140: uses the information in threadlist to find the relationship between
141: messages. This speeds things up a bit when adding single messages to
142: large archives (I saw a reduction from 28s to 18s for adding a message to
143: a 1,100 message archive). Slight speed-up when converting large archives
144: - not as noticeable as a large part of time now seems to be in fopen().
145:
146: I've updated/added some comments.
147:
148: I've added msgnum to the reply struct - this is just a copy of msgnum in
149: ->data->msgnum - this was intended as an optimisation but I suspect it
150: doesn't make much difference.
151:
152: Threading is now much better (well, I would say that wouldn't I :->). it
153: still gets things wrong occasionally - often not really its fault. Known
154: problems include
155:
156: 1) duplicate message-ids - results in messages being attached to the wrong
157: thread - actually found an instance of this in my test mailbox. The
158: obvious heuristic to avoid this would be to compare the subject as well,
159: though this breaks threads where the sender has deliberately changed the
160: subject but intends to continue the thread.
161:
162: 2) occasionally gets messages in the wrong order because they get attached
163: to different sub-threads - wouldn't happen if MUAs used in-reply-to.
164:
165: I've done a quick tweak to duplicate msgid handling in addhash. Now
166: replaces duplicate msgids with a locally constructed one. This keeps
167: things happier.
168:
169:
170: 2a21
171: ====
172: Daniel
173: o (May 12th)
174: - Added the tests/stdintest.pl script. It is a small perl hack that passes
175: a series of generated mails into hypermail on stdin. One by one. I've
176: got reports about bugs in that area, but I can't seem to repeat any
177: with this tool. I thought I'd better include this here anyway to better
178: enable others to run more torture tests on hypermail.
179:
180: Paul Haldane
181:
182: o (May 6th)
183: - Here's a patch that allows the user to decide on the format used to
184: present dates on the generated pages. If dateformat is set then it uses
185: that (that's the new functionality) otherwise it uses the standard
186: format or euro format depending on the config file.
187:
188: I've not given the option to use the date string as originally given in
189: the mail message. This could be done without too much hassle.
190:
191: Daniel
192:
193: o (May 5th)
194: - Corrected a crash in parse.c
195:
196: - Added a missing "From:" in print.c
197:
198: - Made the bin-names get prefixed with "att-" too.
199:
200: - Adjusted getname() to skip all starting white spaces and quotes, and
201: to skip trailing quotes as well as white spaces.
202:
203: o (May 4th)
204: - Attachment names could miss the first letter.
205:
206: 2a20
207: ====
208: Daniel
209:
210: o (May 3 1999)
211: - Implementing my new From:-parser into the new source file: getname.c.
212: This should hopefully not only be much better at parsing from lines,
213: but also to it in a more stable manner.
214:
215: - Found some additional problems with From-lines I've tried to correct.
216: Like a single-mail archive or mails with no From:-lines at all.
217:
218: Ron Brogden <rb@islandnet.com>
219:
220: o A small correction to hypermail.c lets it compile properly on sunos 4.
221:
222: 2a19
223: ====
224:
225: Daniel
226:
227: o Now I prefix filenames with "att-" when I save attachments.
228:
229: o Several errors correct, most of them by Paul Haldane.
230:
231: 2a18
232: ====
233:
234: Daniel
235:
236: o (Apr 7 1999)
237: - Added 'locktime' as a configurable item. It defines the maximum number
238: of seconds to wait for an existing lock to dissapear before it is
239: overridden. If this is 0 or less, the lockfile will lose its power
240: completely. locktime is 3600 by default.
241:
242: - I made the 'indextable' option work as Glen Steward wanted it to (that
243: March 30 patch apply wasn't such a big hit). You can either set
244: "indextable = on" in the config file or use the -T command line option
245: to get the indexes in "table" version.
246:
247: Paul Haldane
248:
249: o (Apr 7 1999)
250: - Major date-parsing re-arrangement. getdate.c added, lots of functions
251: patched. Speed improvements.
252:
253: 2a17
254: ====
255:
256: Daniel
257:
258: o (Mar 30, 1999)
259: - First atttempt at applying Glen Steward's table patches. It wasn't
260: a complete success but it can be adjusted from here.
261:
262: o (Mar 29, 1999)
263: - Ashley M. Kirchner found a silly bug that occured if the last mail
264: in the box was a double message-id (or similar that makes that
265: particular function return NULL).
266:
267: o (Mar 25, 1999)
268: - Threaded index seems to work yet again!
269: - Paul Haldane <Paul.Haldane@newcastle.ac.uk> brought me lots of
270: various patches that made hypermail do better!
271:
272: o (Mar 25, 1999)
273: - Corrected the problem with "re: subject" and "subject" being sorted
274: differently. The explanation was that the "re:" subject had a space
275: left in the beginning of the string!
276:
277: o (Mar 25, 1999)
278: My giant work of redoing things now finally seems to work a little at
279: least. What's been done the last week:
280: - All emails now get only ONE single struct allocated for it.
281: - Remade the hash stuff. Hashed entries in the table only stores a struct,
282: links it in the list and POINTS to the email struct.
283: - Added a hash on the 'inreplyto' string to better enable finding mails
284: a mail replies to.
285: - Rewrote the whole darned threaded index functions. threadprint.c is a
286: new source file for threaded index functions.
287: - All indexes will now have full access to the complete email struct and
288: will thus enable dates all over etc. This will enable me to introduce
289: a template feature for how to write an entry in an index. I.e what to
290: include for each entry, subject, author, date, charset, bla bla bla...
291: - Changed the way single mail's "next in thread" links are found.
292: - As a "side-effect" I added a filter to prevent the same message ID
293: twice. The reason for this is that it is more likely for it to be able
294: to screw up the threading if I allow them to co-exist.
295:
296: o Ashley M. Kirchner <ashley@pcraft.com> works on the bug report web.
297:
298: o (Mar 15, 1999)
299: Roman Shterenzon <roman@xpert.com> pointed out a bug in the HTML-reader
300: that made hypermail crash if the variables were set to "". I mailed back
301: a patch to him I think will correct this problem.
302:
303: 2a16
304: ====
305: Daniel
306:
307: o (Mar 14, 1999)
308: "text_types" is now a recognized config file item, where you can specify
309: MIME types that should be treated by hypermail _exactly_ as if they were
310: text/plain.
311:
312: o Corrected the list-check routine, so that the items in the list are the
313: ones using wildcards. This means that suddenly, all those mime-list items
314: support wildcards!
315:
316: o (Mar 13, 1999)
317: Craig A Summerhill <craig@cni.org> found a bug. It turned out to be the
318: fact that parse.c wronly assumed content-type text/plain to use
319: ENCODE_NORMAL. It was really silly, since the Content-Transfer-Encoding
320: header could've already appeared and stated another encoding!
321:
322: o Adjusted configure.in to do a slightly better -libnsl check.
323:
324: o (Mar 11, 1999)
325: CVS server is up again. Added the UPGRADE file to the tree. Thanks to
326: Glen Stewart.
327:
328: o (Mar 10, 1999)
329: Pretty extensive re-write of parse.c to deal with the
330: "Content-Disposition" headers better. That line can give a hint whether
331: the file should be stored as a file or showed inlined. It can also
332: have the filename (RFC1806 for details).
333:
334: o (Mar 10, 1999)
335: The CVS server is down due to admin work there.
336:
337: o (Mar 10, 1999)
338: Fixed parseurl(). It now deals with <www.foobar.com> and similar
339: constructions better. Craig A Summerhill <craig@cni.org> reported.
340:
341: o (Mar 8, 1999)
342: Corrected src/Makefile.in to not use options.h anymore!
343: Roman Shterenzon <roman@xpert.com> made me aware of this.
344:
345: 2a15
346: ====
347: Daniel
348:
349: o (Mar 5, 1999) Made "text" equal text/plain in content-type: header
350: lines.
351:
352: o Removed options.h completely to reduce the number of mistakes from
353: people trying to edit it!
354:
355: o (Mar 4, 1999) Applied Glen Stewart's patch to remove a few <li> tags.
356:
357: o Bailey, Raymond <bailey9@MARSHALL.EDU> pointed out a problem in the
358: getname() function. When you got a mail with a From: line where there
359: is a name within quotes that were "attached" to the email part without
360: spaces in between as in "name"<email@email.com> the parser failed to
361: get a name part of this and caused hypermail to dump core.
362:
363: o Alisdair Davey <ard@mithra.physics.montana.edu> Helped me point out
364: a bug in mprintf.c. It made the *printf() routines fail on %.*s
365: constructions. I am considering an upgrade of the mprintf stuff to
366: my newer "trio" stuff...
367:
368: o Made %f insert the file name of the generated HTML file in headers
369: and footers.
370:
371: 2a14 Pl 2
372: =========
373: Daniel
374:
375: o Removed a bug that occured when converting a mail into html that had
376: a "in-relpy-to" header but the replied-to mail was not present in the
377: mailbox.
378:
379: 2a14 Pl 1
380: =========
381: Daniel (now CVS'ed at cvs.hypermail.yeehaw.net:/cvs/hypermail)
382:
383: o Made it de-mime headers even without the mime-version: header present
384:
385:
386: 2alpha14
387: ========
388: Daniel
389:
390: o It should now accept white space in the beginning of config file
391: lines.
392:
393: o SetupCleanup() bugs somehow, I'm no longer using it == dirty fix.
394:
395: o Updated the "name/email" scanner.
396:
397: o Total mail counter was wrong when updating.
398:
399: o Renamed to alpha to avoid confusion.
400:
401: 2b13
402: ====
403: Daniel
404:
405: o Two corrections in the mprintf.c. One of them being serious
406:
407: o (parse.c) now the QP decoder accepts question marks in the encoded-words
408:
409: o Corrected the mprintf() replacement define in mprintf.h
410:
411: o Added some more missing free()s in print.c
412:
413: 2b12
414: ====
415:
416: Daniel
417:
418: o Now strips trailing white spaces from values in the config file if
419: written without quotes. Paradise Cowgirl <minerva@phix.com> reported.
420:
421: o List types in the config were insanely written and caused memory
422: disaster at times. Byron C. Darrah <bdarr@sse.FU.HAC.COM> and
423: Jenni Baier <jenni@renewed.net> both probably experienced this.
424:
425: o Decreased the amount of memory allocations used when building hash
426: tables for index sorting. (see addhash() in struct.c)
427:
428: 2b11
429: ====
430:
431: Daniel
432:
433: o Tom von Alten <alien@hpdmlad.boi.hp.com> pointed out a really nasty bug
434: in fixreplyheader() I had introduced! :-(
435:
436: 2.0b10
437: ======
438:
439: Daniel
440:
441: o %c is recognized and replaced with a charset tag in mail headers. It
442: should be set as early as possible within the HEAD tag.
443:
444: o Saves <!-- charset=blablabla --> in articles.
445:
446: o dprintf() was not a successful name, Linux uses it for some odd purpose
447: even in stdio.h! :-/ Renamed my line of functions to m*.
448:
449: o Adjusted getname() to be slightly smarter.
450:
451: o Started working at adding charset to each single mail. It should be stored
452: per-mail basis now, even though it is never used anywhere... It should
453: now make a proper META HTTP-EQUIV tag!
454:
455: 2.0b9
456: =====
457:
458: Daniel
459:
460: o Added a new -o option that can set any config options on the command line.
461: E.g set label with -o "label=my new label".
462:
463: o Major rewrites of struct.c. There were just too many functions that
464: passed data between them by strcpy()ing them to char buffers. They now
465: pass char pointers in a lot higher degree. In fact, there aren't that
466: many strcpy()s left in the source now. Not that I notice any faster
467: operations, I just know it is neater code.
468:
469: o I really don't like the way proto.h has *ALL* prototypes and therefore
470: everything is dependent on that file. I've stared to slowly extract the
471: protos for each .c file into its own .h file. This will allow me to
472: change prototype for a single function without having to recompile the
473: whole lot.
474:
475: o Added general "Re:" - awareness functions. isre() returns TRUE if the
476: input string starts with a re-thing and findre() returns the position
477: of the first instance of re in the input string, or NULL if there is
478: none.
479:
480: It knows and recognizes "Re:", "Fw:" and "Re[<number>]:" strings. If we
481: ever intend to support local variations of this, I've now made that
482: easier...
483:
484: o The new getname() had problems with parens in the real name part when
485: quoted. As in
486: From: "Windle, Alan M. (PA62)" <test@site.com>
487: It shouldn't be a problem now. It should also work with from-lines like:
488: From: ("Windle, Alan M. (PA62)") test@site.com
489:
490: There might be an idea to simply ignore everything within that level of
491: parentheses. I mean, not add that text to the name.
492:
493: o The sorted datelist was broken because I must've destroyed unre() when I
494: turned it dynamic. I improved printsubjects() to deal with pointers and
495: it now strcpy()s a lot less data.
496:
497: Did the same change to the printauthors() too.
498:
499: o increment and readone are now separate options. Read stdin or use mailbox
500: are mutually exclusive but don't modify increment or readone. The
501: previous system was very confusing and didn't allow e.g updating an
502: archive with two mails passed on stdin!
503:
504: I've now tried to update an existing archive with 3 mails passed on stdin
505: and it seemed to work. Works if read from a mailbox too. Even works with
506: the new -1 flag (to indicate there's one mail only). It has an
507: accompanying config file keyword named 'readone'. I think the new -v flag
508: is really great for this, cause it shows all built-in variables and kind
509: of automatically documents them!
510:
511: o Ok, I wasn't aware the config file did assume quotes around the strings.
512: I've added support for that (too) now. Distributed this small change
513: to Kent, Tom and John as a patch for 2b8.
514:
515: 2.0b8
516: =====
517:
518: Daniel
519:
520: (Nov 24, 1998)
521: o So, just before I was gonna announce the b7 to the guys I got another
522: report from John Petrakis that pointed out two bugs. One bad free() which
523: he identified and one From:-line that b7 couldn't get name and email from
524: properly. I got really tired and rewrote the whole getname() function to
525: work with all the combinations mentioned in the source, and more. I think
526: this function also has another benefit: it is easier to read than the old
527: one.
528:
529: o I found some other bugs with my new setup system which caused the
530: hm_htmlbody = NONE to not work. I am actually against that a line that
531: says NONE sets it to the default. NONE should be NONE, if the keyword
532: isn't used at all it should use the default. Well well, one thing at a
533: time I guess.
534:
535:
536: 2.0b7
537: =====
538:
539: Daniel (getting deeper and deeper into this now ;-)
540:
541: o Entirely new config file parser. Does make adding new config items a
542: lot easier and smoother. Run hypermail -v to make it output a fully
543: working config file (after reading the given input parameters).
544:
545: There is no need for the "hm_" prefix on keywords in the config file. You
546: can still use it if you want, but you don't have to.
547:
548: Internally, all configurable variables are now named 'set_XXXXX' to better
549: make it visible in the code.
550:
551: o readoldheaders() is a lot more robust now. The order of the variables are
552: not set and empty files no longer cause it to dump core.
553:
554: o Hypermail from now on only stores the variables inside HTML files that
555: are actually set. name="" is not needed to store.
556:
557: 2.0b6
558: =====
559:
560: Daniel continues:
561:
562: o parseemail() and ConvURLs() needed to deal with NULLs better.
563:
564: o loadoldheaders() are no longer dependent on the order of the variables
565: in previously written HTML files.
566:
567: o Mails with no subject confused the parser.c
568:
569: o Tom von Alten <Tom_vonAlten@boi.hp.com> sent me two files he appearantly
570: got from Kent after the b4 he sent me. (date.c and msg2archive.c)
571:
572: o All kinds of lists like hm_show_headers, hm_inline_types and
573: hm_ignore_types now offer the below mentioned wildcards.
574:
575: o Added dmatch.c for dos-style * and ? wildcard matching.
576:
577: o Cleaning up more memory leaks.
578:
579: 2.0b5 as sent to John Petrakis 19 Nov 1998
580: ==========================================
581:
582: Daniel:
583:
584: o Added 'maketgz' to the archive. It is for creating release archives,
585: without having to remove a lot of files first.
586: * first asks for the version number of choice
587: * uses the file FILES to know what files to include.
588: * updates the patchlevel.h file to the entered version number
589: * creates the archive with a directory based on the entered version number
590: * names the archive based on the entered version number
591:
592: o Added a whole bunch of more free() calls.
593:
594: o Inlined HTML that was base64 or uuencoded were not previously dealt with
595: properly.
596:
597: o Mails with no Message-Id: caused a crash in the hash function.
598:
599: o HM_INLINEHTML can now be set to 0 to prevent hypermail from inlining
600: mail parts in HTML.
601:
602: 2.0b4 as sent to Tom von Alten Nov 19, 1998.
603: ============================================
604:
605: Daniel:
606:
607: o Dynamic strings all over. I added a generic dynamic-string system which
608: I think works pretty good. Using functions and macros it should also be
609: pretty easy to extend, modify and optimize without any other source
610: modifications.
611:
612: I had to modify stuff all over the place and pretty much too. I hope I've
613: removed at least the worst uses of static buffers and my initial tests
614: prove me right. No lenght limits of any fields of a mail is my goal, and
615: I think it is a fair goal.
616:
617: Beware of leaking memory now though. We need to setup some debug-system
618: to track them easily.
619:
620: The dynamic string routines could very well be optimized too.
621:
622: o My dsprintf system was added. This system offers snprintf() - sprintf with
623: a buffer length parameter and aprintf() - returns an allocated string with
624: the text. I did this to better deal with fully dynamic buffers.
625:
626: o Corrected the swedish texts. All 8bit letters were gone!
627:
628: o (Nov 16) I recevied the 981013-b4 version. Started work.
629:
630: 2.0b4
631: ====================
632:
633: Kent:
634:
635: o Date routine corrections.
636:
637: - Y2K capable. Hypermail used a two digit representation
638: for the year through out. It now uses a 4 digit representation.
639:
640: - In hypermail.h, October was listed in monthdays as only having
641: 30 days.
642:
643: - hypermail did not deal with all the major date string formats.
644: Date: formats starting with a digit (09 Sep 1998 01:27:30 +0300)
645: would cause parsing and threading problems. It now supports
646: that format.
647:
648: - Added code to deal correctly with two digit years.
649: The idea as to how to approach this and the basis for
650: the solution is thanks to Byron Darrah.
651:
652: - Corrected an off by one day error in getyearsecs(). It was
653: adding the current day && adding the hours, minutes, and seconds
654: for that day as well. It only needed to count all the days UP TO
655: the current day and then add the hours, minutes, and seconds for
656: the current day.
657:
658: - Incorrect data type passed to fprint_summary(), needed to be
659: long instead of int.
660:
661: - Corrected an off by one day in getdatestr(). Days in a month
662: start at 1, not 0.
663:
664:
665: o Add the ability to save hypermail generated html files with any
666: configurable html suffix such as ".htm", ".html" or ".shtml", etc.
667: This works for the index files as well as the message files. (New
668: .hmrc variable, hm_htmlsuffix, new environment variable HM_HTMLSUFFIX,
669: and HTMLSUFFIX define in options.h.)
670:
671: o Removed a conditional "if (use_mbox) increment = 0;" that was
672: preventing the ability to read one message from a file and update
673: an existing archive and its indexes.
674:
675: o Corrected parseurl to allow for a ',' (comma) character to be embedded
676: in the URL.
677:
678: o Corrected parseurl to allow for a '&' (ampersand) character to be embedded
679: in the URL.
680:
681: o Using -p with -iu on a new archive directory caused a core dump
682: begause 'bignum' was zero. Corrected to assure bignum > 0.
683:
684: o Added language abilities to hypermail.
685: English - en
686: Spanish - es
687: German - de
688: Swedish - se
689: initially supported. (lang.c and lang.h added.)
690:
691: Thanks to Francisco Iacobelli <fiacobelli@ibersis.cl> for the
692: "es" message table translation.
693:
694: Thanks to Martin Schulze <joey@kuolema.Infodrom.North.DE> for the
695: "de" message table translation.
696:
697: Thanks to Daniel Stenberg <Daniel.Stenberg@sth.frontec.se> for the
698: "se" message table translation.
699:
700: o Changed how error messages are displayed so options message
701: only displayed where appropriate instead of for every message.
702:
703: o Corrected getname() to parse yet another funky name format.
704:
705: o Corrected printing error when a invalid domain was encountered in
706: an email address.
707:
708: o Converted some static internal buffers to dynamically allocated ones
709: at startup saving 6+K. Also resulted in setstrval() not being needed
710: so it was removed.
711:
712: o Corrected MIME parsing problem with previously parsed headers.
713:
714: o Corrected default labeling problem with stdin generated archives
715: when no label is supplied.
716:
717: o Fixed hypermail so it would not crash if started with no arguments
718: and an article on stdin.
719:
720: o Added locking to the archive so that there is less chance of corruption
721: of the archive due to multiple copies of hypermail trying to update
722: the same archive at the same time with multiple messages. This could
723: be improved so as to check for pid of process that owns it...
724:
725: o Extended the configure support.
726:
727: o Extended the use of hm_progress so that more information about
728: attachment files can be displayed.
729:
730: o Updated documentation to reflect changes
731:
732: o Corrected getname to deal with names that are all spaces.
733:
734: o Corrected configuration variable setting. Moved checks to the
735: right place in the code.
736:
737: o Hypermail now supports listproc mailboxes as well as general Unix
738: formated mailboxes. It does not require that a blank line exists
739: between mail messsages in a mailbox. Thanks to Craig A Summerhill
740: <craig@cni.org> for the push and the test data.
741:
742: 2.0b3 - 8/15/98
743: =================
744:
745: o Added validation of domains so that the generation of mailto: is
746: much more accurate than the previous method.
747:
748: o Added support for Content-Disposition MIME Header so as to get the
749: filename from the header.
750:
751: o Added verification of filenames to assure they are safe to use and
752: will not cause filesystem problems
753:
754: o Fixed a problem with parsing the ending MIME boundary (it expended headers
755: following that)
756:
757: o Found and removed a one-byte buffer overflow in the line continuation code.
758:
759: o Corrected docs/hypermail.1 and TODO to reflect the proper RFC 822
760: parsing was actually included in version 2.0b1
761:
762: o Corrected a typo in string.c that prevented the proper generation
763: of mailto: links for email names with numbers [0-9] in them.
764:
765: o Corrected the base64 decoder error which caused files to get an
766: extra zero-byte appended at times. (When storing attachments to disk.)
767:
768: o Added additional ported systems to the README
769:
770: o Removed the "#ifndef" from the defines in options.h. We do not want to
771: inherit any define values from other places. If there are confilcts
772: then I need to correct them. Inheriting defines can lead to unforeseen
773: results.
774:
775: o attachments:
776: - comments are now generated in the output mail for each attachment
777: that is written in a separate file. The comment looks like:
778: '<!-- attachment="filename" -->' in the standard comment style.
779:
780: o buffers and overflows
781: - mdecodeRFC2047() now has an output buffer size argument
782: - had to remove the use of rmcr() at two places, since that function uses
783: a very strict static buffer limiting the maximum line length pretty bad.
784: - parseurl() now features an output buffer size argument
785: - parseemail() now features an output buffer size argument
786:
787: o multipart/alternative
788: - added awareness and parser "intelligence" to pick the last prefered
789: content-type within a series of alternatives (as MIME tells us to
790: do). This has not yet been very thoroughly tested.
791: - added the preferedcontent() function that returns wether a content-type
792: is prefered or not (as set with hm_prefered_types). Default prefered
793: type is 'text/plain' (if hm_prefered_types is unused).
794:
795: o output
796: - added the experiment function printhtml(). It strips off unwanted html
797: tags from the output, even if they are used in attached HTML files. I.e
798: <HTML> and </HTML>.
799: - made 'showheaders' not use <BR> or newlines since the BRs are ignored
800: anyway, and the newlines are already present in each header line.
801: - added 'hm_show_headers' which is a list of what headers to include when
802: the 'showheaders' option is used. For now, it also controls which
803: headers to show when attached mails are shown. Although I can imagine
804: that you'd like separate lists (since for attached mails, you'd like i.e
805: subject which you may not need for the main mail itself). If
806: 'hm_show_headers' isn't used, all headers will be shown.
807: - made the <PRE> system in the printbody() function a little smarter, and
808: now it prevents multiple </PRE> and <P> tags better. It did however
809: introduce another side effect (although a less serious one imho) and
810: that is an extra pair of <PRE></PRE> after the last attachment when
811: using 'showhtml'.
812:
813: o parsing
814: - made the multi-line merger function to make all lines get a regular
815: white space between them when they're put together. Previously, this
816: character was left as-is, which could be a space or a tab (or any other
817: isspace()) letter.
818: - check changed to check for "<!-- received" as the start of parsing
819: previous html files in the event that the archive maintainer whishes
820: to add comments in the header template HTML files.
821: - in_list() now checks for list items case insensitive
822: - corrected so Message-ID:, References and Supersedes: lines are not
823: converted into mailto: URLs.
824: - corrected off-by-one in isquote that was causing array boundary read
825: errors.
826: - corrected off-by-one in printbody line output that was causing array
827: boundary read errors.
828:
829: Real thanks are in order for Daniel Stenberg and David D. Kilzer. They helped
830: greatly with making this release possible by sending in enhancements, comments
831: and bug fixes. Thanks Guys!
832:
833: 2.0b2 - 6/07/98
834: =================
835:
836: o Corrected command line processing for individual messages received
837: on standard input.
838:
839: o Corrected formating of Next message links when incremental updating
840: is done.
841:
842: o Corrected the template filenames in docs/hmrc.html. Added "file"
843: to them.
844:
845: o Added additional systems to the list of ported systems.
846:
847: o Reset certain options back to the proper defaults.
848:
849: o Corrected problem in printbody in regards to printing HTML embedded
850: in a message. Still work to do here.
851:
852: o Changed address options to assure I didn't get landfield.com
853: information inadvertantly set in hundreds of archives because
854: the admins just took the defaults. ;)
855:
856: 2.0b1 6/05/98 - Kent Landfield
857: ===============================
858:
859: WARNING: There have been too many changes to this version to list them
860: all here. What appears below are some of the highlights.
861:
862: o Command line settings override what is in the config file. In the
863: past the command line variables were read and set before the config
864: file was read. (Needed to get the name of the config file from the
865: command line.) This made it hard to have a default list configuration
866: file and make single runs with only one variable changed. Now processing
867: sets the hypermail internal options by:
868:
869: Using Compiled in defaults specified in options.h,
870: then reads Hypermail Environment variables if set,
871: then looks for and reads any Configuration file specified
872: and finally uses the Command line settings specified by the user.
873:
874: NOTE: THIS IS DIFFERENT THAN PAST HYPERMAIL USAGE.
875:
876: o Configurable Setting (.hmrc file) or Compile Time Variable to
877: Domain-ize Addresses -- addresses appearing in the RFC822 field
878: which lack hostname can't be made into proper HREFs when Hypermail
879: does it's thing. They are coded with: mailto:(no%20email)
880:
881: Because the MTA resides on the same host as the list, it is
882: often not require to domain-ize these addresses for delivery.
883: In such cases, I think it would nice if Hypermail could be
884: programmed to output: mailto:kent@landfield.com instead.
885: This would probably work well as a *required* definition
886: during compilation; however, it should not simply rely on
887: the output from `hostname` in case you want to override with
888: an MX entry or alternate domain (if you run virtual domains)
889:
890: o Added capability to have customizable index html headers, message
891: html headers and html footers. Able to use substitution cookies in
892: the header and footer template files.
893:
894: Substitution cookies supported:
895:
896: %% - '%' character
897: %~ - storage directory
898: %e - email addr of message author - Not valid on index pages
899: %h - HMURL
900: %i - Message-id - Not valid on index pages
901: %l - archive label
902: %m - Mailto address
903: %p - PROGNAME
904: %s - Subject of message or Index Title
905: %v - VERSION
906: %u - Expanded version link (HMURL,PROGNAME,VERSION)
907: \n - newline character
908: \t - tab character
909:
910: Additional cookies generate the complete META lines:
911:
912: %A - Author META HTML - Not valid on index pages
913: <META NAME="Author" CONTENT="name (email)">
914: %B - <BODY> html statement
915: %S - Subject META TAG - Not valid on index pages
916: <META NAME="Subject" CONTENT="subject">
917:
918: o Generates META tags in articles Author and Subject.
919:
920: o Now uses "configure" to generate the makefiles. This is rather
921: weak at present and needs to be added to/tested on other systems
922: but at least it's a start.
923:
924: o The config.h was renamed to options.h to support configure usage.
925:
926: o patchlevel.h added to facilitate better patches in the future. Still
927: need to fully integrate it's useage in version displays.
928:
929: o Added example .rc files to show how to customize list's and their
930: looks.
931:
932: o Removed the _print.c files that had existed in the 103b2 release and
933: replaced them with template headers/footer files.
934:
935: o Extended archive path creation to make missing directories.
936:
937: o Added capabilities dir pathing to allow archive creation by date
938: variables.
939:
940: %d - two digit day of month (1-28/30/31)
941: %D - three letter day of the week
942: %m - two digit month of year (1-12)
943: %M - three letter month of year (Jan, Feb, ..., Dec)
944: %y - four digit year (1990,..2001)
945:
946: RC example: hm_dir = /some/archive/listname/%y/%M
947: ENV example: HM_DIR=/some/archive/listname/%y/%M
948: Command line example: -d /some/archive/listname/%y/%M
949:
950: Expands to: /some/archive/listname/1998/May
951:
952: All files would be archived during that run in that directory.
953: Subsequent executions will put the messages in the directories
954: according to the date the messages were received on the archive
955: site.
956:
957: o All "mailto:" links can include the "subject" so that the Subject:
958: line of netscape mailer is automatically filled in.
959:
960: o Fixed "Re:" and redundant "Re:" variation && MS FW...
961:
962: o Greatly enhanced getname() to correctly deal with most all email
963: addresses. X.400 addresses are not well supported yet.
964:
965: o Corrected getreply() to better support the In-Reply-To: formats. The
966: routine needs to revisited when a readline routine is inserted to
967: properly deal with continuation lines.
968:
969: o Added additional documentation describing the Hypermail configuration
970: file.
971:
972: o Added additional documentation describing how to customize HTML
973: generated pages.
974:
975: o Corrected many petty problems such as:
976: - recursive '%' substitution. A % in a subject line could cause
977: an ugly recursion problem in a mail command expansion.
978: - title length problem. Length of a title needs to be limited to
979: less than 64 characters as indicated by HTML specs.
980: - Weblinted the generated output and corrected various things.
981: - Removed unused and unneeded variables
982:
983: o Change various storage length defines in hypermail.h
984:
985: Patches Contributed From: "Roy T. Fielding" <fielding@kiwi.ics.uci.edu>
986: ------------------------------------------------------------------------
987:
988: o Fixed the umask default,
989:
990: o Fixed default directory and file creation modes,
991:
992: o Fixed the many date problems,
993:
994: o Corrected one of the Message-ID bugs,
995:
996: o Removed annoying #start/#end fragments that mess up the browser history.
997:
998: Patches Contributed By: Byron Darrah <bdarr@sed.hac.com>
999: ----------------------------------------------------------
1000:
1001: o Added a menu bar for a header and footer on all pages and removed
1002: the bulleted list items that it replaces.
1003:
1004: o Reworked the general appearance of header and footer parts of html pages.
1005:
1006: o Added the "hm_hmail" configuration parameter and -n command line
1007: option for specifying an email address for input to a hypermail
1008: archive.
1009:
1010: o Added "New Message" and "Reply" buttons to the menu bar for submitting
1011: messages to a hypermail based list.
1012:
1013: Patches Contributed From: Jared Reisinger <feety@hhhh.org>
1014: ---------------------------------------------------------
1015:
1016: o Fixed configfile substring problem.
1017:
1018: o SHOWBR, IQUOTES, SHOWHR, EURODATE, SHOWREPLIES, and MAILCOMMAND
1019: now run-time configurable.
1020:
1021: o Fixed post leap-day error.
1022:
1023: o More robust Message-ID parsing.
1024:
1025: o Better SHOWHTML handling for indented lines.
1026:
1027: o Allow IQUOTES when not using SHOWHTML.
1028:
1029: Patches Contributed From: Daniel Stenberg <Daniel.Stenberg@sth.frontec.se>
1030: --------------------------------------------------------------------------
1031:
1032: o I had all calls to the decodeRFC2047() function moved to *after* the
1033: merging of long lines.
1034:
1035: o decodeRFC2047() now correctly concatenates two succeeding "encoded words".
1036: I now call the function mdecodeRfc2047() since it now allocates the new
1037: string.
1038:
1039: o Now informs if the attachment wasn't properly decoded when stored to disk.
1040: This happens if the Content-Transfer-Encoding specified isn't known to
1041: the parser. When this happens, the attachment is stored as 8bit octet-
1042: stream.
1043:
1044: o Now supports the encoding type 'x-uue' for uudecoding. I think there are
1045: mailers that use different names for the same encoding type so we better
1046: watch out for them in the future...
1047:
1048: o Added the 'demimed' field to the body struct to keep track of
1049: header lines+ that have been RFC2047 converted already.
1050:
1051: o Kent Landfield sent me an interesting mail that showed me several weird
1052: bugs in the MIME area.
1053: A. The Quoted-Printable decoder bugged. A quick fix solved that.
1054: B. The quoted printable decoder didn't support unlimited size of the line
1055: the encoded text decodes into. I wrote a new function that seems to do
1056: it properly.
1057: C. Some important headers were not properly supported if they were split
1058: up on several lines. I had to rewrite the header parsing system to make
1059: this work. It now scans all headers and concatenate them into single
1060: lines before any function is trying to parse or decode them.
1061: D. It also showed a need for a uudecoder for the 'x-uue' encode type. This
1062: is only noted for the future as I haven't written any decoder for this
1063: format [yet].
1064:
1065: o decodeRFC2047 replaces the former RFC1522 function. I made it support
1066: 'encoded-words' anywhere in the line and several different ones on the
1067: same line is now supported. The only flaw I'm still aware of now, is that
1068: if there are two encoded-words next to each other, the result should not
1069: show the spaces between them. My function unfortunately still does.
1070:
1071: o renamed decodeRFC1522 to decodeRFC2045.
1072:
1073: o decodeRFC1522 (quoted printable header decoding) didn't do well if the
1074: ending ?= sequence was in the middle of the line. I think this function
1075: will need more extensive testing.
1076:
1077: o Attached mails' headers (To:, From:, Date: and Subject:) are now shown
1078: in the html.
1079:
1080: o Attached mails that contains attachments did force me to add a stack system
1081: for the multipart boundary strings. Seems to work now. (Can't wait to see
1082: an attached mail that contains an attached mail that contains ... )
1083:
1084: o strcpymax() introduced to prevent buffer overflows on extra-long headers
1085:
1086: o Lines starting with 'from ' messed up the parser pretty badly. It now
1087: checks for 'From ' lines (case sensitive) with an empty preceding line
1088: to split mails.
1089:
1090: o Now extracts attachments to separate binary files.
1091:
1092: o Supports multiple lined headers.
1093:
1094: o Supports quoted-printable and base64 encoded headers.
1095:
1096: o Supports base64 encoded text/plain
1097:
1098: o Rewrote the URL and email parsing to allow multiple URLs and email
1099: addresses on each line.
1100:
1101: o Extended the original functionality to much better deal with MIMEd
1102: mails and the standards from RFC 1521 and 1522. There are still flaws in
1103: compliance with those but the majority of all mails using mimed texts
1104: will be presented in a fairly decent fashion.
1105:
1106: Patches Contributed From: David D Kilzer <ddkilzer@ti.com>
1107: -----------------------------------------------------------
1108:
1109: o Fixed problem with 'From: ' header lines in messages with the
1110: following format: "From: <email@address.com>" wherein the "name"
1111: from the previous email message would be used instead of reverting
1112: to the address itself.
1113:
1114: o URLs can now include ampersands (&) if they are preceded by question
1115: marks (?) in the URL string.
1116:
1117: o Email messages with no Subject line no longer grab the previous
1118: email's subject.
1119:
1120: o Reworked the order of output so that "message" links are always at
1121: the top of the page in article pages and date/thread/subject/author
1122: pages.
1123:
1124: o Now escape '%' in mail URLs.
1125:
1126: o Escape for '+' was wrong, changed to '%2B' (was '%22').
1127:
1128: o Updated replace() function to recurse on 'afterstring' variable
1129: rather than the whole 'newstring'. More efficient and allows '%'
1130: escaping.
1131:
1132: o config.h: Added configuration option for SHOW_MESSAGE_LINKS which
1133: turns all message headers and footers off (except for the links to
1134: the date, subject, thread and author pages). SHOW_MESSAGE_LINKS
1135: overrides the setting of SHOWREPLIES.
1136:
1137: o print.c (writearticles): Removed use of currentemail, currentid,
1138: and currentsubject by forcing use of email2, msgid2, inreply2,
1139: subject2, and name2 when calling struct.c (hashreplylookup). This
1140: was needed after I rearranged the order in which articles were
1141: printed.
1142:
1143: o string.c (convurls): Added code in two locations for the
1144: Message-Id code segment to recurse on the remaining portion of the
1145: line being processed. Each Message-Id found forces a return from
1146: convurls() after a recursive call. This prevents infinite recursion
1147: (a Bad Thing generally speaking). Note: we assume that Message-Ids
1148: and URLs/email addresses do NOT appear in the same line.
1149:
1150: o string.c (convurls): Changed format string from "%.3d" to "%.4d".
1151: Fixed major bug in outputting links for Message-Ids.
1152:
1153: o string.c (convurls): Fixed assumption in code for identifying
1154: Message-Ids that there was only one Message-Id per line. We now
1155: stop gobbling up text used for a link with a space (' ') or a tab
1156: ('\t').
1157:
1158: o string.c (convurls): Added int got_question_mark in URL processing
1159: code to permit an ampersand ('&') in a URL provided it comes after a
1160: question mark in the same URL (a GET method with POST data). Added
1161: one line of code and changed another to accomplish this.
1162:
1163: o string.c (convurls): Added code to check whether the next item to
1164: URL-ize is an email address (containing an at sign, '@'). If it is,
1165: we break out of the URL for loop and go process the email address.
1166:
1167: o parse.c (loadoldheaders): Modified initial fgets() call to skip any
1168: non-comment lines (i.e. "<html>" and "<head>").
1169:
1170: o string.c (makemailcommand): Added code to escape percent signs
1171: ('%') when escaping spaces (' ') and plus signs ('+'). Percent
1172: signs must be escaped first since other escape sequences use the
1173: percent sign followed by a two-digit hexadecimal number. We're now
1174: a little more MIME-compliant.
1175:
1176: o string.c (replace): Changed the replace() function to recurse only
1177: on the 'afterstring' portion of the URL instead of the whole rebuilt
1178: URL. This is both more efficient and prevents infinite recursion
1179: problems when escaping percent signs ('%') with '%25'.
1180:
1181: o string.c (makemailcommand): Fixed escape sequence for plus signs
1182: ('+') from '%22' to '%2B'.
1183:
1184: LOTS of other small patches from lots of other helpful people. I hope to
1185: be able to more accurately list them in the final 2.0 version.
1186:
1187: 1.03b2 3/10/98 - Kent Landfield
1188: =================================
1189:
1190: o Header corrections made,
1191:
1192: o all current memory leaks plugged,
1193:
1194: o variable initialization corrected,
1195:
1196: o expanded response message recognition,
1197:
1198: o fixed many threading related bugs.
1199:
1200: o Restructuring directory layout for ease of support and to
1201: make adding utilities easier.
1202:
1203: o Added additional archive utilities.
1204:
1205: 1.03b1 4/6/97 - Kent Landfield
1206: ================================
1207:
1208: o Corrected memory leaks,
1209:
1210: o cleaned up HTML produced,
1211:
1212: o ran purify, lint and insight and cleaned up output.
1213:
1214: o Added the ability to customize header/footers via crude means
1215: but hey, it works.
1216:
1217: 1.02 8/1/94 - Kevin Hughes
1218: ============================
1219: Fixed configfile problem, different usage() output, days[] space
1220: fix, NODATE, stripzone() fix, insig fix, SHOWBR, SHOWHR, IQUOTES,
1221: THRDLEVELS.
1222:
1223: 1.01 7/29/94 - Kevin Hughes
1224: ============================
1225: Printfooter declaration, getdate() and timezone names changed
1226: to avoid library conflicts. Bad #define fixed (null) bug.
1227:
1228: 1.0 7/29/94 - Kevin Hughes
1229: ============================
1230: Configuration file, logic fixes, better "re:" stripping,
1231: name tags, default index.html (HM_DEFAULTINDEX), default
1232: directory name can be mailbox name, mailto: fix, better dates,
1233: better error messages, numbered files are padded to four digits,
1234: headers are always in <pre>, next in thread, maybe in reply and
1235: maybe reply, MAILCOMMAND, EURODATE, commented source, chmods only
1236: new files, <html>, custom mail command variables.
1237:
1238: 1.0b3 7/14/94 - Kevin Hughes
1239: ============================
1240: Environment variables added, ampersands are converted.
1241:
1242: 1.0b2 7/13/94 - Kevin Hughes
1243: ============================
1244: Incremental updating added and various parsing bugs fixed.
1245:
1246: 1.0b1 7/6/94 - Kevin Hughes
1247: ============================
1248: Hypermail rewritten in C. Because the source is so new and
1249: relatively untested, it's still considered to be in beta
1250: until feedback from users is received.
Webmaster