[TODO]

* fix msh/mmdf problems.
* Add IPv6 support.
* Write different function to read configuration files, instead
  of using m_getfld.c
* convert calls from sprintf/vsprintf to snprintf/vsnprintf
* convert calls from getcpy to strdup
* modularize access to context/profile list.
* add command printm to print messages
* finish changing to macros for msgstats and msgflags
* Add support for Mail-Followup-To and Mail-Reply-To
* Add support for profile entry "Mailing-Lists"
* let mhn and mhl accept files on standard in, and output to
  standard out, when filtering files.
* Add switch -more to `show' to call moreproc.
* Add new command "show" at WhatNow? prompt.
* Add command to reverse the action of rmm [-nounlink] -- "urmm"?  "umm"?  "um"?
* Allow user customization of which kinds of text parts in multipart/alternative
  messages are preferred.  It would be nice if one selectable behavior would be
  to be prompted at runtime for which version to show.
* Add a new %-escape that makes temp files more permanent than %f, so that you
  can use gnuclient -q or netscape -remote on message parts.  Put netscape
  -remote in mhn.defaults for text/html once this is done.
* Change all man pages to group all the commandline options together in one
  section with each as a separate mini-heading.  Having to dig through prose to
  find what a particular option does is a pain in the nads.
* Add some way to configure whether you prefer to see text/plain or text/html
  parts of multipart/alternative messages.
* Allow multiple simultaneous differing contexts, probably each tied to a parent
  (terminal) process.

[POSSIBILITIES]

MAN PAGES
---------
* Update mh-tailor man page.
* update default mode in man pages with sed

SEQUENCES
---------
* Maybe add option gracefully handle empty sequences (-force).

ENVIRONMENT/PROFILE
-------------------
* Should nmh check for EDITOR environment variable?

OPTIONS
-------
* change switches to accept two dashes (--help)
* can we move option checking to its own function?  Currently each
  command is doing that itself.
* make the option parsing code dynamic, so that there is no limit
  to the number of command line arguments (this has been done for
  most all the commands).
* Add switch descriptions to -help output.

COMP
----
* add option so that prompter can be used to input addresses,
  before the real editor is called to edit message.
* fix -nowhatnowproc switch. Right now whatnowproc starts the edit
  session instead of comp, so -nowhatnowproc does nothing.

FLIST
-----
* add -format option so you can specify the look of the output
  of flist.
* add Flist-Exclude profile component

FOLDER
------
* add Folder-Order profile component (same as flist)
* add Folder-Exclude profile component

FORMATS
-------
* add escape %(sequence{foobar}) to detect arbitrary sequences.

FORW
----
* Decode RFC-2047 headers in messages included when replying
  or forwarding.
* Merge code for forw and repl.

INC
---
* Add ability to do filtering (call filterproc) when incorporating mail
* Change inc to use libary function folder_addmsg().

MHBUILD
-------
* add ability to specify Content-Transfer-Encoding in composition
  drafts.
* remove the code for caching from mhbuild.

MHL
---
* remove naming hack in mhlsbr.c for adios and done.
* add ability to filter parts of the message by calling
  an external filtering program.
* fix internal pager for mhl?

MHN/MHSHOW/MHLIST/MHSTORE
-------------------------
* add way so user can tell mhn to use internal method for
  handling type, such as multipart/mixed.
* add way so user can tell mhn to use a certain `proc' such
  as moreproc, for certain content types.
* merge the two places in which mhshowsbr.c reads display
  strings.
* when storing to a folder, should we save the folder context
  first, so that storage string of "+" stores to the new
  folder?

MSH
---
* Add -version to mshcmd.c for each command.
* Change msh to use mbox style files, instead of mmdf.  Add options -mbox,
  -mmdf to choose.
*) There are couple calls to copyip() which should be changed to
   getarguments().  One problem is freeing the string getcopy'ed by
   getarguments().

PICK
----
* split regex code out into library.
* replace regex code with Henry Spencer's regex library.

POST
----
* make -msgid the default
* factor msgid code into own function

PROMPTER
--------
* maybe add ability to use prompter just for headers, and
  then use primary editor for editing message.

RCVSTORE
--------
* Change rcvstore so that it can store into multiple folders.
* Add folder locking.

REPL
----
* Decode RFC-2047 headers in messages included when replying
  or forwarding.
* Merge code for forw and repl.

SEND/SENDSBR
------------
* Add ability for returned messages from "send -push" to be
  in MIME format (this is actually a change in mhmail).
* make -msgid the default.
* Add RFC-2047 encoding support for out-going messages.  This
  will probably require hooking mhparse into sendsbr.c, and doing
  a complete MIME parsing.  Then all handling of Content encoding
  can be on the backend.

SLOCAL
-----
* Change slocal to use .slocalrc file, instead of .maildelivery?
* Add ability to use regular expressions in header matching.
* Add support for Berkeley db.
* Clean up output from -debug option.
* Add -debuglevel to control the amount of debug info that is output.
* Add -debuglog to specify file to save debugging output.
* Add -logfile (or -audit) to specify where to record info about successful
  deliveries.

MTA INTERFACE
-------------
* Fix locking code.  Add lockfile command.
* Think about support for DSN (Delivery Status Notification)
* Test nmh with qmail.  Add qmail's maildir format.
* Relax restrictions on what can be done with headers in send/post.
* figure out why smail.c and client.c need their own copies of
  getcpy, copyip, etc... (funny linking problem)

GENERAL
-------
* see if the various versions of copyfile and copyf can be
  merged.
* Add MH-6.8.4 features into nmh (mostly done).
* Maybe should move etcpath to sbr and add to libmh.
* collect winsize, struct termio, etc... together into a ttyinfo
  structure.
* change adios to take exit code argument.
* use wait3 if not waitpid (maybe)
* some of the calls to setjmp/longjmp should be replaced with
  sigsetjmp/siglongjmp.
* replace use of ftell with fgetpos.
