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