Revision History
================

0.25 - 1999/03/19:

New features:

- Support for Internet and Usenet messages in Blue Wave mode. (Note: AFAIK,
  this is only supported by the Blue Wave version 4 door for PCBoard.) Also,
  Internet addresses can now be taken into the address book.

- Character sets (either code page 437 or Latin-1) are now selected for each
  area or message. The default character set is CP437 (as before), except
  for Internet or Usenet areas (as marked by Blue Wave or QWKE flags), which
  are Latin-1. The character set in individual Fidonet messages can be
  overriden by the "CHRS:" or "CHARSET:" kludges. Replies are set according
  to the default for the destination area.

- The console character set and the default sort types for the packet and
  letter lists can now be set in the config file. The default packet sort is
  now by time (latest first) instead of by name.

- The "To" field is now omitted from the letter list in Usenet areas and the
  QWK Personal area. The "From" field is omitted in the REPLY area. This
  leaves more room for the "Subject" lines by eliminating redundant info.

- Direct support for RAR archives. Note: there's a problem with this if you
  read the same packets in, e.g., both Linux and DOS: RAR will save the last
  read marker file twice (once in upper case, once in lower).

- More ANSI navigation: The ENTER key now works the same in the ANSI viewer
  as in the letter window (advance to next message).

- The packet list can now be rescanned (to pick up new packets) by pressing
  'U'.

- The message count now appears in the title bar of the letter list (like
  the area count in the area list).

- New color scheme by Gary Gilmore.

Bug fixes and such:

- The alternate QWK private message flag, '+', was not being recognized.
  Reported by Tom Rutherford.

- Changed the message that prompts to save replies to something I hope is
  clearer. Suggested by Max Chamberlain.

- If the reply packet had a different archive type than the main packet,
  MultiMail would attempt to use *that* archiver (the reply packet's) to add
  the last-read markers to the main packet. The correct behavior is to use
  the main packet's archive type when remaking the reply packet!

- When quoted material was wrapped, the wrapped lines would have trailing
  spaces. These are now stripped.

- In the area and tagline lists, a completely blank line would sometimes
  appear at the top of the list. (A long-standing bug, finally fixed.)

- Strip blank lines after hidden lines. (Blue Wave puts blanks after the
  hidden headers in Usenet messages.)

- Fewer keys to hit in the header editor. :-) The cursor is now placed on
  either the Subject or To line, as appropriate (you can still arrow up to
  edit the other lines); and the "Make message private?" prompt is not
  presented when sending to areas that are either all-public or all-private
  (as indicated by Blue Wave or QWKE flags).

- Bizarre alignment bug in the EMX-based ports (OS/2 and Win32) caused
  crashes on some QWK packets. Reported by Jim Hanoian.

- Source code reorganized somewhat... no more .a files.

- Blue Wave packets could have identical areanums in multiple areas.
  Although this is an error, the Blue Wave reader handled it; now MultiMail
  does as well. This is also a little faster. However, it assumes that the
  mixRecords and INF area headers are sorted the same way, which I would've
  preferred not to assume. Problem reported by Scott Jones.

- In 0.24, the new packet kill routine failed to exit after killing the last
  packet, leaving garbage on screen. Reported by Gary Gilmore.

- A filename without an extension would mess up the display in the packet
  list. A long-standing bug that I never really cared about, but which J.H.
  mentioned.

- All directories are now omitted from the packet list.

- One more attempted cursor fix for the Win32 version.

- Minor display bug with messages 100,000 lines or longer. (Now OK up to
  1,000,000.)

- In the EMX ports, in the letter sort by subject, the secondary sort by
  message number was still broken. Reported by J.H.

0.24 - 1999/02/12:

New features:

- "Save" function in ANSI mode. This differs from the letter window save in
  that no wrapping is performed, and no header is prepended. This is also
  the only way to save bulletins and new file lists.

- New navigation in ANSI mode: the space bar and left and right arrow keys
  now work in the same way as in the letter window. This also means the
  interface for the bulletin viewer is slightly different: 'Q' exits from
  the entire list, instead of just the current bulletin, and you can move
  back and forth between bulletins as in the letter window.

- Multiple sort modes in the packet list: by date (latest first), and by
  name. By name is still the default. "$" toggles between them.

- Multiple sort modes in the letter list: by subject (still the default),
  message number (i.e., no sort), from, or to. "$" cycles through them.

- The help window at the bottom of the packet, area and letter lists can now
  show multiple pages of options (similar to Pine's "Other commands" menu
  function).

- When character set translation is on in the ANSI viewer, some IBM
  characters are now mapped to curses equivalents, giving a better result on
  non-PC terminals (e.g., xterm, vt100). This works best with the box-
  drawing characters. The letter window still uses a plain ASCII mapping for
  these characters.

- Pop-up help is now available in the ANSI viewer, as in the letter window.

- Messages can be forwarded from any area, with the original headers
  preserved in the text.

- Support for the Win32 console via RSX/NT. See README.rsx if you want to
  compile for this platform.

- Fidonet MSGID/REPLY kludge lines are now supported, in Blue Wave mode.

- Additional QWKE support -- in QWKE packets, the short list now shows
  "subscribed-to" conferences, as in Blue Wave mode, instead of just the
  non-empty ones; and alias areas are supported. The "QWKE" type appears in
  the Info window of the area list.

- When Replying to a message that's already marked "Replied", the previous
  reply (if available) will be re-edited instead of a new reply being
  created.

- Some new color schemes.

Bug fixes and such:

- The help window now survives a screen resize, instead of being closed.

- Killing a packet no longer forces a reread of the directory.

- The addressbook will no longer grab a new entry when no Fido address is
  available. Also, the addresses are now sorted alphabetically on startup.
  (Anything added during the session will not be alphabetized; however, the
  list will be sorted again on the next startup.)

- The full length of Blue Wave "To" and "From" fields is now available in
  the header editor. (Previously, they were restricted to 25 characters.)

- The subject sort in the letter list was not correctly performing the
  secondary sort, by message number, in runs of the same subject.

- Time/date printout code changed in packet list and in Blue Wave reply
  headers. I think this looks a bit better.

- The experimental Win32 console version had a problem with slow screen
  output. This seems to be a problem with the console API (?), but it's
  worked around in this version. (Normally, PDCurses checks for a keypress
  after printing each line. In Win32, this call takes a noticeable amount
  of time to return, even though it's supposed to be non-blocking. So, in
  MultiMail, the check is disabled for the Win32 version. This also disables
  typeahead, but I doubt anyone will even notice that.)

- A last attempt at fixing the remaining cursor problems in the PDCurses
  versions. (The cursor size is now checked at startup, and that value is
  explictly restored instead of using curs_set(1).) Scott Jones reported the
  persiting problem in the OS/2 version.

- The index of the Personal area is now updated just by entering the letter
  list, or anytime a message is read in that area. Better than previous
  versions, though still not ideal.

- Support for the keypad plus, minus, and slash keys under PDCurses. (This
  completes the keypad "Enter" fix in the previous version.)

- The experimental Win32 version supported only "\" in the pathnames
  specified in MMAIL.RC, where the DOS and OS/2 versions allowed either "\"
  or "/". Now both work in Win32, and both will be converted to "\" when
  MMAIL.RC is updated. Reported by Rafael Cresci.

- One more character allowed for unames in Blue Wave reply packets (six
  instead of five). Specifically, that means "MultiMail/MS-DOS" and
  "MultiMail/NetBSD" will now appear in Blue Wave tearlines, instead of the
  abbreviated form "MultiMail".

- Hidden lines at the end of a message would cause the line count to be over
  by one. Reported by Jim Hanoian.

- In the Save dialog, user-entered names were getting spaces converted to
  underscores, though only the second time through (when the name was pulled
  up as the default). Reported by J.H.

0.23 - 1999/01/22:

New features:

- QWKE and PCBoard-style "Subject:", "To:", and "From:" line kludges are now
  supported in QWK mode, along with "Title:", which is used on WWIV. The
  QWKE "Subject:" line is generated automatically for replies, if needed.
  Note that in regular messages (though not in replies), these lines aren't
  parsed until the message body is accessed by entering the letter window,
  so the fields as shown in the letter list will at first be the short
  forms.

- Reply forwarding -- press <CTRL>-'F' while in the reply area (either the
  letter list or letter window) to forward a reply. (Forwarding of regular
  messages is not available yet.)

- In the REPLY area, 'R' now works as an alias for 'E'. Added at the
  insistence of Jim Hanoian. :-)

- When (re-)editing or forwarding a reply, the area can now be changed.

- REPLY and PERSONAL areas now show the original area (as well as the
  collection area) in the letter window. Suggested by J.H.

Bug fixes and such:

- New behavior in the ANSI viewer: Instead of resetting everything when a
  screen-clearing code (<ESC>[2J) is encountered, it sets the last-drawn
  line as the new baseline, and continues from there. With the old system,
  information was sometimes lost (though it could still be viewed in the
  animation mode); now, screens are simply chained together, and everything
  is visible and scrollable.

- Characters 8 (backspace) and 12 (form feed) are now handled in the ANSI
  viewer, and skipped in the letter window. Ctrl-Z is stripped in the ANSI
  viewer.

- The BBS name and Sysop name fields in the info window of the area list
  were being unnecessarily truncated.

- In the PDCurses versions, the cursor remained disabled when shelling to an
  editor. Reported by Dane Beko. (Due to the way I implemented this fix,
  PDCurses 2.2 is no longer acceptable for MultiMail; you must use 2.3.)

- When creating a .REP, a zero-length message body would cause a segfault.

- Blank space at the end of the little area list is now omitted (as in the
  letter list).

- An attempt to send Netmail when no Netmail area is defined (as is always
  the case in QWK mode) now pops up a nonFatalError window.

- The "Save lastread pointers?" message now comes up less often; the "any
  read" flag is set less aggressively. (If you re-read a message that's
  already marked as read, the any-read flag will not be set, as it was in
  previous versions.)

- When entering areas which are fully read, the highlight bar is no longer
  moved to the last message. Similarly, if the entire packet is marked as
  read, the active area is not set to the last non-empty area, but the
  first. Suggested by J.H.

- Hopefully, a better subject-line sort in the letter list: If two subjects
  have the same content for the entire length of the shorter of the two, the
  shorter one is no longer automatically placed first; instead, they're put
  in message number order.

- The ENTER key on the numeric keypad did not work in the PDCurses versions.
  Reported by Russell Tiedt.

- Added "/m" to the parameters passed to LHA in the MSDOS version. Without
  this, it gave an "Extension is not .lha. Continue? [Y/N]" prompt when
  archiving replies.

0.22 - 1999/01/01:

New features:

- The long-awaited support for new file lists and bulletins! They're
  displayed automatically on opening the packet. Currently, this is a bit of
  a kludge -- although I'm starting to like it. Memory usage is excessive.
  (See the man page for more info.)

- Support for XCurses (the X port of PDCurses). See README.xc for details.

- Added a line counter to the ANSI window, as in the letter window.

Bug fixes and such:

- If a tagline was displayed on screen, it would replace the tagline
  selected for a reply via the tagline editor. This bug dates to 0.20.

- TAB characters that advanced past the end of a line were causing problems
  in the ANSI viewer.

- Aborting a netmail reply left the netmail address set when a regular reply
  was attempted afterwards.

- The translation toggle ('c') now works in all screens. (In particular, the
  ANSI viewer.)

- Proper printing of character 127 (DEL) under ncurses.

- The SIGWINCH (resize) handler now works acceptably even when a SIGWINCH
  occurs while in a WarningWindow() or getstring() call.

0.21 - 1998/12/15:

New features:

- Not new, but newly documented: When run under Windows 95, the MSDOS
  version supports long filenames! Apparently this is a feature of the DJGPP
  standard library, though I didn't realize it before. (I don't know about
  Win 98 or NT -- anybody else?)

Bug fixes and such:

- The code to generate the default tagline file was broken in 0.20, which
  meant that all first-time users got a segfault. Argh! Also, since I was
  messing with the taglines anyway, I changed the default list.

- In the PDCurses versions, the "Could not uncompress packet" and "Packet
  type not recognized" messages would pop up without first restoring the
  packet list screen. Also, some extra parentheses have been added around
  color names for the benefit of PDCurses/Win32 (still an incomplete port).

- Updated the README.{DOS,OS2} files to reflect the new style of default
  MMAIL.RC in use since 0.19.

- "/" and "." added to pop-up help window.

0.20 - 1998/12/06:

New features:

- Search function. Case-insensitve searching is available everywhere. It's
  still a bit limited, in that it only works within the current list (or
  letter); i.e., you can't yet search multiple letters at once. Hit '/' to
  bring up the text entry window and start the search, or '.' to repeat the
  last search. (Yeah, I know -- it needs better keys.) Searching is from the
  current line on down.

- Fido "hidden" message lines (marked with a ^A) can be displayed; 'X'
  toggles this function.

- New features in the tagline editor and address book: New entries in the
  address book are checked for dupes; also, tagline dupes, which were
  already checked, are now reported. The address book and the tagline editor
  allow you to Kill entries. And the tagline editor can be brought up
  directly, via ^T, in the same way as the address book. Old features: The
  reLoad function has been removed from the tagline editor.

- Rot13 function in letter window -- toggle with 'D'.

- If a new letter is not edited (as measured by the time stamp), you'll be
  asked if you want to cancel it on returning to MultiMail. Partly inspired
  by Gregory Paksi.

- Redundant colors can be omitted from the ColorFile. See colors/README.col
  for details. Also, there are some new colors, and some old ones are gone;
  be sure to check your ColorFile if you've customized it.

- Messages to or from you are highlighted in a different color in the letter
  list. After Ingo Brueckl (though this implementation is a little different
  from his).

- Read-only support for Blue Wave's .XTI files (last-read markers). This
  means that any old packets you read with Blue Wave will be marked in the
  same way when first opened in MultiMail; however, any changes made in
  MultiMail will not be seen by Blue Wave. Partly inspired by I.B., but this
  is a different (and more correct) implementation.

- "Home" and "End" keys are now available in text entry fields (i.e.,
  ShadowedWin::getstring()). After I.B.

Bug fixes and such:

- The FMPT kludge line is now supported, which means that in Blue Wave mode,
  the netmail addresses of points will be recognized.

- Aborting a header edit from the letter list could cause a segfault. (The
  fix in 0.19 was incomplete.)

- Some bogus ANSI codes (mainly, "ESC[?7h") are now semi-interpreted, so
  they no longer clutter the screen. Also, the ANSI background color is now
  hardwired to white on black, instead of being set by Main_Back.

- The highlight method for the active line was no good on a light background
  with ncurses 4.2 (was ok with 4.1). Some other changes for light
  backgrounds, too.

- High-bit, "low-bit" (below 32) and certain special characters are now
  handled better by MultiMail, being actually printed instead of interpreted
  as control codes. :-) Particularly useful for ANSI.

- TAB characters are now rendered as the appropriate number of spaces in the
  letter and ANSI windows.

- In text entry fields (getstring()), high-bit characters were showing up
  with weird attributes (due to a sign error). Reported (indirectly) by
  I.B., this bug has been present since about 0.10! I'm suprised no one from
  Fido zone 2 mentioned it to me before.

- Packets can now be renamed without MultiMail losing track of its last read
  markers. (This will, however, still result in a second .red file being
  created.)

- When entering a tagline manually via "E" in the tagline editor, the
  entry field is now placed correctly, instead of appearing to overwrite the
  last tagline. Also, bogus taglines are no longer generated from message
  lines which are just "...".

- In the Reply area, the help menu for the letter list was showing a 'K'
  where it should've been an 'S'. Also, capitalization in help menus has
  been standardized (only the keys that activate commands are in caps in the
  descriptive text), and the pop-up letter help window is now in two
  columns.

- Killing an item (in any menu) now moves down to the next entry, regardless
  of the position in the list (unless at the end).

- The 'L' command now remains available in the address book after a screen
  resize (SIGWINCH). Also, taking an address via 'L' automatically sets the
  active line to the last position (where the new entry is).

- Netmail addresses are now included in Saved letters.

- The resize (SIGWINCH) handler was causing a segfault in some
  circumstances. Although I just noticed it, this bug dates to 0.18.
  Curiously, it occurred for me only when running under "screen". The fix
  was to change Win::inkey() to remove the loop.

- Changed the .mmailrc separators from " = " back to ": ", which makes
  them compatible with 0.18 and earlier. I'll probably change them again. (I
  was trying to achieve a more "classic" style of .rc file, but in fact,
  it still wasn't quite right.)

- The cursor was not being disabled in PDCurses versions.

- "Read" indicator in the letter window was not updated after Saving.

- Changed interface/Makefile and mmail/Makefile to allow "make clean" to
  work in DOS. Suggested by I.B.

- And of course, various internal changes.

0.19 - 1998/10/25:

New features:

- The .mmailrc has been redesigned. New versions of MultiMail will update it
  automatically; comments will be lost, but old data will be preseved. Note:
  the new form is not readable by 0.18 or earlier, because of the use of '='
  as a separator. Partly inspired by Ingo Brueckl.

- Non-fatal errors. Currently, this is used only for the previously fatal
  "Could not uncompress packet" and "Packet type not recognized".

- You can change the colors MultiMail uses without recompiling. See the
  automatically generated "~/colors" for details; also, some sample color
  schemes are included in the 0.19 archive. This feature is due largely to
  Ingo Brueckl.

- "Marked" messages are kept in the active letter list, whether read or
  unread. In combination with the "Save" changes (see below), this means
  that marking is now actually useful. :-)

- Extensive changes to the "Save" dialog: When you Save from the letter
  list, you're given a choice of "All", "This one", or "Quit"; if any
  messages are marked, you also get the option "Marked". Saving "All"
  now saves all messages in the active list, rather than all in the area.
  (To get the old behavior, just toggle the full list on first.) Saving a
  message sets the "Read" flag, and turns off "Marked". The last-entered
  filename is retained (separately) for "All", "This One", and
  "Marked". If no name is entered manually, the automatic name is
  regenerated with each use; otherwise, the manual name is kept until you
  exit MultiMail.

Bug fixes and such:

- Segfaults in saving All, in some cases.

- Certain ANSI pics, with codes in the form "<ESC>[;27H" (i.e., with
  an empty parameter before a semicolon) were causing segfaults.

- After the cursor was turned on, e.g. by the Save window or an aborted
  message header edit, it was left in the middle of the screen on some
  terminals. It is now forced down to the corner.

- The header editor was being left on screen after exiting via ESC.

- Removed the text "Fatal Error" from fatal errors. :-) It was sometimes
  redundant, and other times wrong.

- When the last packet was deleted from the packet list, a segfault could
  occur. Reported by Alan Ianson.

- Functions which redrew the letter window (e.g., toggling character set
  translation) were setting the Read marker each time.

- The tagline window now looks better on screens other than 80 columns.

- Various internal changes, and added comments.

0.18 - 1998/08/14:

New features:

- MultiMail can now read QWK packets without .NDX files. Partly inspired by
  Simon Callan. Note: It's still preferable to include them, since it takes
  about three times longer to open the packet without them. (But that's not
  counting the unpacking time, which is much longer still.)

- The letter list now allows toggling between showing all messages, and
  showing only those which are unread; when entering an area, it defaults to
  unread (unless all the messages are marked read). I've found that this
  makes a BIG difference in the feel of the program -- it's more like a
  newsreader now. ;-) Use the 'L' key to toggle between the long and short
  lists (as in the area list).

Bug fixes and such:

- Removed a lot of redundant code from the interface section, and
  reorganized it... There are many new features that need implementing, but
  so far I've been concentrating on cleaning up and simplifying the existing
  code, so as to have a solid base to build on. I think I'm almost there.
  ;-)

- Found a couple small memory leaks, in AnsiWindow (the statbar was not
  being deleted) and main_read_class. Also, the tagline file was being left
  open after reading it.

- Now gives a fatal error (instead of segfaulting) if the screen is smaller
  than 60x20.

- The address book and tagline window now respond correctly to SIGWINCH.

- In the tagline window, the key for rereading the file has been changed
  from 'F' to 'L'. This allows 'F' to be used as an alias for PgDn, as on
  other screens. (The real purpose was to merge the code into the rest of
  the keyboard-handling code.)

- If there was only one area (i.e., REPLY), and the right arrow was pressed,
  an infinite loop would occur. Reported by Tamminen Eero.

- The 'N' key, for Netmail, is now disabled when no Netmail area is
  available. Partly inspired by Francois Thunus.

- Sample filenames in the default .mmailrc now conform to the OS (i.e., 8.3
  (FAT) format for DOS and OS/2), and the unused "ReadDir" line has been
  removed. Inspired by F.T.

- Stripping and adding of blank lines at the end of messages works a little
  better now, but still needs work.

- The addressbook was crashing, when empty (0 items). Reported by Marc D.
  Williams.

0.17 - 1998/07/06:

New features:

- Netmail addresses, when present in Blue Wave packets (or reply packets),
  are displayed in the From: or To: fields in the letter window, as
  appropriate; and when entering a netmail message, the address can now be
  edited. (Note: Netmail is largely untested yet.)

- In the header editor (From, To, etc.), you can now use the up and down
  arrows to move between fields, or press ESC in any field to abort the
  edit. Press ENTER on the last field to exit normally.

- Reading a message in the QWK Personal area marks it as read in its
  original area.

- A full area list is now available in both QWK and Blue Wave modes; it can
  be toggled by pressing 'L' in the area list. (The compile-time
  "shortlist" definition has been removed.) One benefit is that you can
  enter a message in any area, even when only the short list is being
  displayed.

- When re-editing a message, you can now edit the header as well as the
  text.

- ANSI animation. While in the ANSI viewer, press one of the ANSI activation
  keys again (or 'A') to see an animated view. Press any key to abort the
  animation.

- The ANSI viewer supports the screen-clearing code.

- The cursor is turned off, wherever possible. Less visual clutter. :-)

- True scrolling instead of redrawing; minimized the redrawing done for
  letter window, ANSI viewer, and all ListWindows. It's now MUCH faster on
  slow machines and slow terminals.

Bug fixes and such:

- MASSIVE rewrite... Almost everything that was crufty in previous versions
  is now done the right way. :-) General fixes include: plugging memory
  leaks (there were a lot of these, I'm sorry to say), elimination of
  one-based arrays, adding more limit checks, and removal of all kinds of
  kludges and redundant code. The interface is more fully separate from the
  specific drivers; adding new packet types now requires changing only
  mmail/driverl.cc.

- The netmail area is found by attribute rather than name, and (owing to the
  full area list now available in Blue Wave mode) can always be found,
  instead of only when you have received netmail. :-)

- Character set translation is applied to the area list, and to area
  descriptions in the letter list and letter window.

- The number of replies shown in the REPLY area is updated immediately when
  it changes.

- The method of adding blanks before taglines and tearlines is changed; it
  should no longer be necessary to type an extra CR at the end of replies.

- QWK replies are automatically word-wrapped at 80 columns, if they're not
  wrapped already. (In Blue Wave, this is not desirable. QWK doors seem to
  prefer individual lines; Blue Wave, paragraphs.)

- MultiMail now ensures that QWK replies end with a line-ending character,
  instead of letting the last line run off into the padding area. Without
  this, certain QWK doors would strip off the tearline.

- The path is no longer displayed in the Save window, and the suggested
  filename is conformed to FAT (8.3) standards. Note that you can still
  enter any pathname, and any filename that will be accepted by your system.

- Specifying pathnames that end in a slash or backslash (e.g., in .mmailrc)
  should now work correctly.

- The extraneous "bw" prefix found on many of the .mmailrc variable names
  is no longer needed, though it will still be recognized for backwards
  compatibility.

- Space bar now works in the little area list.

- The QWK "Personal" area no longer appears in the little area list, nor
  can messages be entered in it from the area list.

- Unrecognized packets no longer cause a segfault (just an exit).

- Added trivial SIGWINCH handlers for AddressBook and TaglineWindow (they
  just exit that menu).

- Fatal errors are now reported correctly in the OS/2 version, even when
  they occur before curses initialization.

- In the ANSI viewer, there are no more segfaults in OS/2, and no more stray
  characters on the status line in either PDCurses version.

- ANSI Reverse attribute now works with PDCurses.

- ANSI viewing works in reply area.

- A SIGWINCH can no longer result in the active (highlighted) line being
  displaced off the screen.

- New default LHA parameters for MSDOS version (the Unix ones didn't work
  for it).

- The currently selected address is preserved between calls to the
  AddressBook.

0.16 - 1998/05/28:

New features:

- This version compiles for OS/2, with EMX. This entailed substantial
  changes to the Makefile (q.v.), as well as some code.

- The environment variable MMAIL can now be used instead of HOME, to specify
  the directory of the .mmailrc (or mmail.rc) file. If neither variable is
  defined, MultiMail will use the current directory (this is also new).

- The DOS-to-Latin 1 character table has been improved, for translation of
  graphics characters, by stealing most of the table from DOSEmu.

- Truly automatic packet recognition, by packet contents instead of name.
  Patch by Robert Vukovic.

- Internal ANSI viewer. Works on all platforms (except that it sometimes
  segfaults when scrolling, under OS/2). Much better than the "less"
  viewer, and it will form the basis of new file list and bulletin
  viewers.

Bug fixes and such:

- Another big bug in the DOS version (argh!): Last read markers were not
  being saved. This bug was the result of an error in the bug fix in 0.15.
  :-/ I'm surprised no one has reported this.

- In the previous DOS versions, under some arrangements of directories, the
  temporary directories would not be removed.

- The man page has been renamed to "mm.1", and the title changed, so that
  "man" and "apropos" will work more appropriately. The install will
  make a link to the old name (mmail.1).

- The "Replied" flag is now set by O- and N-type replies, as well as R.

- Some code reorganization.

0.15 - 1998/05/12:

New feature:

- If you back out from a packet, to the packet list, you can now reselect
  the same packet without it being decompressed again. Thanks to Robert
  Vukovic for convincing me of the need for something like this.

Bug fix:

- In DOS, the default editor (edit.com) didn't actually work, because it
  didn't understand paths with slashes instead of backslashes. I missed this
  because it worked with Qedit. :-) The slashes are now flipped on the
  pathnames passed to external editors and archivers (in DOS only). Thanks
  to kifox@geocities.com for reporting the problem.

0.14 - 1998/04/25:

Bug fix:

- A more subtle line-ending bug... under MSDOS, extra characters were
  sometimes added to the end of a reply. (Unix versions were not
  affected.)

0.13 - 1998/04/24:

Bug fix:

- While making changes to accomodate MSDOS line endings, I made a small
  oversight that caused replies to be truncated at one character if they
  were re-edited.

0.12 - 1998/04/23:

New features:

- Compatible with MSDOS. All source code files have been changed to
  single-case, 8.3 form, and #ifdef's are used on filenames internally where
  necessary. (Most other issues are taken care of by DJGPP, though some
  Makefile changes were necessary, and the starting directory is now
  restored on termination -- needed in DOS, but not in Unix.)

- Compatible with PDCurses (as distributed with DJGPP), and SysV curses
  (specifically, Solaris). Note that the shadows on windows are opaque if
  you compile with SysV curses. (I also added "#define USE_SHADOWS", which
  you can comment out or remove to get rid of the shadows
  altogether.)

Bug fixes and such:

- After the reorganization of resource.C in version 0.11 (if not before),
  any change to the value of mmHomeDir in .mmailrc would leave the
  bwPacketDir, bwReplyDir, etc. variables unaffacted.

- memError() now works correctly, even before initialization of the
  interface. Fatal errors in general will be reported better in this
  version.

- Some additonal bounds checking on sprintf() calls.

- tmpnam() checked. In principle, as few as 26 temporary filenames might be
  available from it (which should still be enough, unless you write a whole
  lot of replies).

0.11 - 1998/03/21:

New features:

- Area and system descriptions added to saved messages.

- I removed the last remaining command-line option, "-m", on the grounds
  that it was useless. (This is a new UNfeature.) After testing it on my
  9600 bps terminal, it doesn't appear to improve the speed; and the
  alternate color scheme, which it was originally designed to select, was
  never implemented. (Instead, I've added inversing to the top and bottom
  bars in the letter window, and made a few other changes to make it more
  monochrome-friendly.)

Bug fixes and such:

- resource.C and resource.h rewritten and simplified to allow compilation
  with gcc 2.8.1. (It's not yet clear to me why the old version didn't work,
  but this is better anyway.) There are still a few warnings, but it works
  OK.

- When entering the From:, To:, and Subject: on replies, the full width of
  the fields had not been available. Under some circumstances, this could
  even cause a segfault. These lengths still need to be checked more
  stringently.

- Automatic "Re:" adding now takes place before subject-line editing,
  instead of after. This allows users to see that it will be added, and to
  override it if desired. (It also saves a few bytes of code!) I don't know
  why I did it the other way before.

- In the event of a "Fatal Error:" exit, MultiMail will now clean up after
  itself, as with normal exits. Also, failed memory allocation is now
  explicitly checked.

- Default paths for "zip" and "unzip" removed. (These would only show up
  if the paths were not defined in the .mmailrc -- as they are with the
  default .mmailrc.) Thanks to Carey Bloodworth for pointing this out.

- If the message numbers exceeded 5 digits (i.e., 100000+), they would mess
  up the display in the letter list. Now, it takes 6. :-)

- Much internal reorganization.

- Fixed a bug with my website -- the new-style URL (/~wmcbrine/) messed up
  some relative pathnames. :-)

0.10 - 1998/03/07:

New features:

- Shadowed windows! Tell me if you like them.

- SIGWINCH support. You can now resize the terminal (e.g., maximize the
  xterm) while MultiMail is running, and it will adapt to the new
  size.

Bug fixes and such:

- Under Solaris, the help menu area was not being cleared when changing from
  one menu to another.

- One more space available in letter list (now consistent with the other
  lists).

- On some systems (such as Linux w/ glibc, and NetBSD), if you attempted to
  read a packet that didn't already have a "bbsid.red" file (mm's read
  markers) in it, MultiMail v0.9 would segfault right after unzipping a
  packet, due to a very stupid attempt to call fclose() with a NULL pointer.
  Under Linux w/ libc.5, this actually worked OK; and I didn't notice it on
  my NetBSD test system because the packets there already had .red files in
  them. Thanks again to Cesar Cardoso for reporting the problem.

  Due to the seriousness of this bug, I'm releasing v0.10 early.

0.9 - 1998/02/26:

New features:

- Added alias, "!", for F2. Added Tab as an alias for right arrow (next
  unread) in letter list.

- Better handling of screen widths other than 80; better use of available
  screen space even in 80 columns. Still to do: handle SIGWINCH.

- QWK now has the option (on by default) to show only those areas which have
  messages in them, instead of the full area list. I set this on by default
  to match the behavior of the QWK side; you can change this in the
  top-level Makefile. Currently, it's only a compile-time option. (In the
  future, I'll add the ability to do a full list in Blue Wave mode, and to
  toggle the mode at runtime.)

- .REP and .NEW filenames are now forced to lowercase. Should be easier to
  type. :-) But if you have any uppercase-named reply packets from previous
  versions, you'll have to manually rename them before 0.9 will recognize
  them. Sorry.

- Blue Wave mode now works on big-endian systems! The full functionality of
  MultiMail is now available on all platforms where it compiles. And
  "-fpack-struct" is no longer needed in the Makefile -- which I hope may
  mean increased portability.

- system() calls to rm and sed have been eliminated.

Bug fixes and such:

- Strip spaces from Blue Wave subject lines; fixes sorting in some cases.

- In Blue Wave mode, MultiMail was using LF as a paragraph delimiter. The
  correct behavior is to use CR as the delimiter and ignore any LFs. Thanks
  to Marc D. Williams for submitting a packet that required this fix.

- Messages in Blue Wave packets are supposed to have a leading space, but
  packets produced by the ReneWave door lacked them. They also contained
  nulls in messages (a no-no). MultiMail now deals with these problems
  without flaking out. Thanks again to M.D.W.

- With Blue Wave packets, MultiMail now scans for "*.inf", instead of
  assuming that the packet name minus the extension is the basename.
  Normally, that is the case, but the "welcome!.000" packet that comes
  with the Blue Wave reader -- which uses "welcome" internally -- is a
  counterexample. MultiMail can now read this packet. :-)

- Startup for QWK packets is much faster, especially on slow systems.
  Previous versions would attempt to open the .ndx file for each area
  defined in the control.dat (and would do so several times for each area),
  whether it existed or not; 0.9 scans to see which .ndx files actually
  exist first.

- Changed ANSI viewer to work better with certain messages. Really, I should
  make it user-definable, instead of being hard-wired to "less"; but I'm
  probably going to make it into an internal function anyway.

- Added "#include <sys/types.h>" to mmail/mmail.h. Usually I wouldn't
  mention a change of this type, but in this case, it was done to get
  MultiMail to compile with glibc (libc 6). Thanks to Cesar Cardoso for
  reporting the problem and testing the solution.

- Saved messages are now wrapped at 80 columns, regardless of screen width
  at the time of saving; and the date is now added to the saved header.

- Replying to a message no longer messes up the right margin of the original
  when viewing it immediately after replying.

- Paths are no longer stored with the .red file when using LHA. In previous
  versions, this could cause the storing of multiple .red files into a
  packet.

- Next/previous unread in letter list now work correctly, even with messages
  that have manually been marked Unread.

- Miscellaneous minor internal fixes and optimizations.

0.8 - 1998/02/10:

New features:

- "Re: " is stripped from subject lines, for sorting and display purposes,
  and added automatically on replies (unless doing so would truncate the
  subject). Subject sorting is now case-insensitive.

- Letter window now displays "bbsnum (x of y)", for consistency with the
  letter list and to provide more information.

- Slightly expanded the area description length to make better use of the
  available space. Also, in the letter list, more of the subject is shown.

- Restored the "line/lines" counter found in early versions of MultiMail.
  This shows the length of the message in lines, and the number of the top
  line on screen.

- Temporary files are now cleared at the end of a session. Also, since
  MultiMail now generates a unique temporary directory for each session, a
  single user can run multiple concurrent sessions. (Just don't try to read
  the same packet in each one!)

- System uname added to Blue Wave tearline (if it will fit).

- Character set translation can now be toggled at runtime, by pressing 'c',
  instead of at compilation time.

- Packet type is now recognized automatically, based on the filename's
  extension. (You can still force the other type.) Consequently, the "-b"
  and "-q" options have been removed.

- The Blue Wave area list now uses the description instead of the echotag.
  This is much more useful, and conforms to the Blue Wave reader.

- The number of the original message is now passed to the door for reply
  linking.

- In the letter window, the top and bottom bars are now inversed when in
  monochrome. In the various lists, the highlight bar is now drawn with
  stdout(), for greater contrast.

- Many changes to the top-level Makefile; it's now more portable, and
  commented. You can now set the location of the ncurses header file here,
  instead of editing the source.

- The packet list is now sorted, and shows file sizes as well as dates.

- The backquote character (`) is converted to an ESC when using the ANSI
  viewer. (Some systems recode ESC characters this way.)

- You can now Kill packets from the packet list.

Bug fixes and such:

- If all preexisting replies were deleted, attempting to create a new reply
  during the same session could cause a segfault.

- Terminal newlines stripped from replies. Conforms to the Blue Wave reader;
  supresses gaps after the tagline with some doors.

- QWK subject fields had been truncated at 24 characters. (The field is 25
  chars.)

- The tagline file can now be hand-edited without introducing blank lines.

- In the letter window, PgDn, End, and the down arrow now stop at the actual
  end of the text.

- No more extra junk in Blue Wave reply packets.

- Blue Wave replies can now be safely reedited. (Previously, the line
  endings could be messed up -- left in Unix format.) Stray characters no
  longer appear at the end of Blue Wave replies while viewing them.

- Blue Wave mode, like QWK mode, now shows the BBS message numbers in the
  letter list, instead of the messages' position in the packet.

- Trailing ", Sysop" stripped from sysop name in QWK mode.

- Opening reply packets that were generated by the Blue Wave reader caused a
  segfault, due to case mismatch; it now works correctly.

- Version number "encryption" for Blue Wave replies fixed (so the number
  appears correctly in tearlines). (IMO, the Blue Wave specs are in error in
  describing this feature -- bluewave.h refers to addition when it should
  say subtraction.)

- Left and right arrow keys in the area list now work much faster when
  skipping empty areas, and can take you to the first and last areas,
  instead of second and next-to-last.

- Killed the stupid repeating-REPLY-area bug in Blue Wave mode.

- When creating Blue Wave replies, MultiMail now makes the proper choice
  between "real name" and "alias", depending on the area flags.

0.7 - 1997/12/07:

New features:

- Right and left arrow keys now select next/previous unread message in an
  area, similarly to the way they function in the area list (jumping to
  non-empty areas).

- ANSI viewer. Hit ^A while reading a message to view it in color, if it has
  ANSI codes embedded. This is still rudimentary; it uses "less" as the
  viewer, and it depends on the terminal to interpret the codes.

- Private flag support. Complete, except for Blue Wave area flag checks.

- Character set translation is essentially complete. The only further
  changes I envision are the ability to turn translation on or off at run
  time, instead of at compile time; some possible changes to the translation
  table; and maybe additional character sets.

- Stolen taglines are checked for dupes, included only once.

- With some minor changes, I got it to work under SunOS (Solaris). No longer
  just a Linux program! :-) So, the tearline is now derived from the uname.
  Blue Wave mode still requires a little-endian system.

- QWK "Personal" conference.

- Many key aliases added, mainly for use on terminals that don't support
  keys like PgDn and F1. Also, Space Bar now functions as a combination
  PgDn/Enter in the letter window, to allow paging through a conference.

- Marking and read/unread toggle now work from the letter list, simplifying
  bulk marking. In the REPLY area, Kill now works from the letter list.

- Automatic creation of .mmailrc and the mmail directories; no more "make
  install_dirs".

- Changed bluewave.h to version 3. (No related feature changes yet.) I now
  use it in unmodified form; "-fpack-struct" is sufficient.

Bug fixes and such:

- Suppression of "hidden" text lines added for Blue Wave (already present
  for QWK).

- Append saved files instead of overwrite.

- If saving without a path specified, save in the "save" directory.

- Better adaptation to nonstandard screen sizes.

- Really random taglines (previously, there was no call to srand).

- "Save lastread pointers?" and "Reply area has changed..." messages now
  come up only when appropriate.

- "Personal" column in area list removed in QWK mode. Maybe not a bug, but
  it was unused.

- Fall back to login name if no alias name defined. (It was using only the
  alias name, sometimes leading to blank From: lines in Blue Wave mode. This
  feature needs more work -- the alias should not always be the default.)

- Various date fixes (QWK and Blue Wave).

- Print the right area type for QWK Replies.

- Area names padded out with spaces when necessary to correct a cosmetic
  defect in the REPLIES/PERSONAL letter lists' "Area" fields.

- Version number references made consistent.

- Remove extra bytes from ends of messages (QWK and Blue Wave).

- A big one: Kill the *correct* reply messages with 'K'. (!)

- A BIG one: QWK reply area numbers fixed. It was using the internal area
  number, rather than the QWK number; so replies would go to the wrong
  areas! (Under specific conditions -- a packet with conferences that were
  numbered serially, starting from zero -- this would actually work right,
  which is doubtless how the bug snuck in to begin with.)

- Stop truncating replies. (This bug complimented the extra byte bug,
  preventing segfaults in the old version.)

- I changed the default directories from "bwdown", etc., to "down", etc.
  This wasn't a bug, but it was too Blue Wave-centric for a dual-function
  reader. (I believe the original intent of K.T. & T.I. was that the QWK
  implementation would have its own directories, e.g., "qwkdown";  but as
  implemented by J.Z., a common directory was used. I may revert to the
  putative original design at some point. Internally, the "bw"  prefix is
  still used on many shared structures.)

- Make .REP packets from the BBSID, not the base packetname.

- "Unread" now counts all messages marked unread, not just those which are
  also unmarked and unreplied.

- Letter sort fixed (now sorts by number within each subject), and faster.

- Eliminated the defaulting to "reply" when an otherwise undefined key was
  pressed.

- Calls to todos replaced with internal code.

- QWK .ndx parser replaced with faster, non-endian-dependent version.

- Many ncurses changes. Most importantly, shells and (normal) exits now
  restore the screen mode. (Error exits still need fixing.)

- Makefile changes (including centralizing options in top-level Makefile).
  Could do with a bit more changing, I think.

- A big one (since it prevented me from even using 0.6, as it was): Fixed
  segfaults on opening packets with uppercase names within (i.e., those from
  most or all DOS-based BBSes).

- Many minor changes to suppress warning messages during compilation.

- Many, many more. :-) These are just the user-visible ones.

Bugs unfixed:

- The lockup-on-exit bug, described below as having appeared in 0.3 and
  disappeared in 0.4, has resurfaced. I too am unable to trace it. It can
  come or go after almost any random change in the code.

-- William McBrine

0.6a - 1997/03/25:

- Oops! The signature was in the wrong place. Right order is: signature,
  tagline, tearline ;-)

- Tagline adoption is supported! (Doesn't check dupe tags yet.)

- QWK-reply packs contained '\n' as a line terminator. It's incorrect! We
  have to use softCR (char#227).

- Character conversion is somewhat in! For ISO 8859-1 <--> CP437 (DOS)
  translation, #define ISOCONVERT in /interface/interface.h

- ISO conversion doesn't do the from/to/subj yet

0.5a - 1997/03/22:

- Fixed another date bug (when reloading QWK replies, the date would be
  mangled).

- You can now use a signature file after each letter (specify its filename
  in .mmailrc)

- Says error, if ~/.mmailrc isn't found. (The program needs this file!)

- File open errors printed, inside a BW/QWK packet, it tries four variations
  of the filename (eg. mybbs.dat, MYBBS.dat, MYBBS.DAT, mybbs.DAT).

- The annoying bug, which occurred when quitting, has disappeared!
  ;-o

0.4a - 1997/03/12:

- Fixed the date handling with QWK packets. Should do it well. That part
  wasn't even implemented before.

- Colors should be fine now, everywhere.

- One small, but ANNOYING bug introduced: the program doesn't exit properly,
  sometimes you have to kill it! Sorry, couldn't trace this bug yet. Maybe
  you can help.

0.3alpha - 1997/02/16:

- Took out many more bugs. This version now is almost usable ;)

- You can now (re)Edit your reply!

- Major design and color changes... Still not done, but doing good!

- Added message Marking, Read/Unread toggle.

0.2alpha - 1997/02/12:

- Debugged the program, fixed lots'a bugs, added QWK support. Only a
  preview! Don't use it, that's my advice! ;)

-- John Zero

0.1c.staticbin - 1996/??/??:

- statically linked elf executable of 0.1c. Problems were reported with gcc
  2.7.2 and libc 5.2.?.

0.1c - 1996/03/19:

- bugfix, now uses "todos", instead of "/usr/bin/todos", only elf binary
  included

0.1b - 1996/02/05:

- Compiles on RedHat 2.1 + dynamic elf binary included

0.1a - 1996/02/03:

- INSTALL file created (cut from readme)

0.1 - 1996/01/27:

- initial release

-- Kolossvary Tamas and Toth Istvan
