Revision History:
=================

0.17 - 98/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 intialization.

- 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 AddressBook.

0.16 - 98/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 - 98/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 - 98/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 - 98/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 - 98/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 - 98/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 - 98/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 - 98/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 - 98/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 - 97/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 - 97/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 - 97/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 - 97/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 - 97/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 - 97/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 - 96/??/??:

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

0.1c - 96/03/19:

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

0.1b - 96/02/05:

  Compiles on RedHat 2.1 + dynamic elf binary included

0.1a - 96/02/03:

  INSTALL file created (cut from readme)

0.1 - 96/01/27:

  initial release

-- Kolossvary Tamas & Toth Istvan
