Annotation of hypermess/hypermail/Changelog, revision 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