IMSP c-client API 1.00 alpha release 4
--------------------------------------
This is an alpha release of this API.  Absolutely no warranties of any
kind apply.  Any of this code could completely change.  The
specifications could change.  This has only been tested on a
Sparcstation, so portability may be lacking.  Comments, bug reports
and suggestions are welcome -- send them to chrisn+@cmu.edu.

REQUIREMENTS
------------
You must have the "imap-3.3" distribution from ftp.cac.washington.edu, with
the "imap-3.3-krbauth.diff" authentication patches from ftp.andrew.cmu.edu

FILES OF INTEREST
-----------------
imsp-api.txt	Preliminary english description of these API routines
imsptest.c	Test program to link against c-client.

REQUIREMENTS
------------
This requires the 3.3 c-client API routines available from:
	ftp.cac.washington.edu:imap-3.3.tar.Z
You must also apply the AUTHENTICATE patches available from:
	ftp.andrew.cmu.edu:pub/cyrus-mail/imap-3.3-krbauth.diff
To test the IMSP drivers, you also need a sample IMSP server available
from:
	ftp.andrew.cmu.edu:pub/cyrus-mail/cyrus-imspd-v1.00a8.tar.gz
Alpha release 8 or greater of this server is needed.

SETTING UP
----------
You need to copy the files (imutil.[ch], support.[ch], imsp.[ch], glob.[ch],
unixfile.[ch]) into your c-client build directory and add them to the
makefile.  If you wish to test them, you may also wish to add a line
to build imsptest to the makefile.  All files should be ANSI-C.  Note
that you can exclude the "unixfile.[ch]" files.  They are only likely
to compile on Unix machines.

IMPLEMENTATION STATUS
---------------------
The abook_expand() function is not completed.  In particular, it will
be changed to support a "members" field and recursively query other
address book entries to resolve the correct address for an entry.

Otherwise the addressbook and options front ends and IMSP drivers are
basically tested and completed.  My intention is that this code will
not change in any externally visible ways (except as mentioned above),
unless needed to implement other (non-IMSP) drivers.

Some provisions have been put in place to support the mailbox_open and
mailbox_close functions, but they are not implemented and not
finalized in any way.  These will probably change.

The unixfile driver does not clean up the advisory locks unless the
client exits cleanly.  The unixfile searching does not support
international searches.  When the option/addressbook files are
changed, the driver will leave behind a ".lock" file -- I may try a
different locking method that doesn't do this at a future date.  The
unixfile address books don't support ACLs and only support one address
book per user.  This may change in a future version.

There has not been sufficient testing for the option/addressbook
routines to be considered "beta-level" yet.

OTHER FILES
-----------
support.[ch]	The generic support stream routines
imsp.[ch]	The IMSP open routine and addressbook/option drivers
imutil.[ch]	Utility functions used to send/receive to the IMSP server
glob.[ch]	Fast globbing routines (to deal with "*", "?" and "%").
unixfile.[ch]	Addressbook and option drivers for a unix filesystem.
		Includes multi-client locking support.

HISTORY
-------
Alpha release 1.
 Fixed support.c to add open address books to the SUPPORTSTREAM list.
 Fixed imutil.c to pass abook * to mm_address() rather than SUPPORTSTREAM *.
 Changed all calls to "bzero()" to "memset()"
 Changed int to long in all abook/option driver return values.
 Added prototypes for mm_* callback routines.
 Added "activeab" pointer to SUPPORTSTREAM.
 Added "generic" pointer to SUPPORTSTREAM and the
	support_generic()/support_set_generic() macros
 Added unixfile.[ch] file driver with the glob.[ch] globbing routines.
Alpha Release 2.
 rename abook_delete() to abook_deleteent()
 Added abook_delete()/abook_create()/abook_rename() for manipulating entire
  address books.
Alpha Release 3.
 Made abook_find() use the ADDRESSBOOK command
 Added AUTHENTICATE command support
 Added expansion of members field in IMSP addressbooks
 Moved to simplified globbing routines, thanks to deprication of "?"
 Changed encoding table to disallow "*" in atoms
Alpha Release 4.
