Removed ChangeLog, we'll go with the svn log from now on.
authorArt Cancro <ajc@citadel.org>
Fri, 3 Feb 2006 19:41:48 +0000 (19:41 +0000)
committerArt Cancro <ajc@citadel.org>
Fri, 3 Feb 2006 19:41:48 +0000 (19:41 +0000)
citadel/ChangeLog [deleted file]
citadel/citadel.h

diff --git a/citadel/ChangeLog b/citadel/ChangeLog
deleted file mode 100644 (file)
index add527f..0000000
+++ /dev/null
@@ -1,7525 +0,0 @@
-$Id$
-
-Di Jan 31 23:32:38 CET 2006 dothebart
-  we need to use citadel setup in prerm, it doesn't exist anymore on postrm
-       
-Di Jan 31 23:32:38 CET 2006 dothebart
-  chkpwd needs to be owned rooot:root, flags 04755
-
-Tue Jan 31 10:39:42 EST 2006 ajc
-* client_getln() now strips only the trailing CR/LF instead of "all trailing
-  nonprintables."  The old behavior was mangling international character sets.
-
-Thu Jan 26 21:31:22 EST 2006 ajc
-* Reject empty username for login attempts
-
-Thu Jan 26 15:38:20 EST 2006 ajc
-* Allow client to supply EID in "notes" rooms.
-
-Mon Jan 23 22:22:18 EST 2006 ajc
-* In WIKI rooms, clients can supply a message EUID
-
-Sat Jan 21 16:22:51 EST 2006 ajc
-* Patch to the "m<Y> next message" function, submitted by matt
-
-Thu Jan 19 21:30:20 EST 2006 ajc
-* Added VIEW_WIKI to the available view types.  EUID indexing is "on" for
-  this view.  Everything else will be done in WebCit.
-
-Thu Jan 19 17:49:29 EST 2006 ajc
-* support SMTP-AUTH for outbound connection to smart-host
-
-Thu Jan 19 16:40:57 EST 2006 ajc
-* Change to journaling code to include an Internet email address for local
-  recipients.
-
-Thu Jan 19 13:20:30 EST 2006 ajc
-* Refactored the code that populates the session's knowledge of the user's
-  primary internet email address.  We need it to be generic so that we can
-  do this for other users.
-
-Tue Jan 17 22:23:19 EST 2006 ajc
-* Misc small fixes to the new host auth mode.
-
-Tue Jan 17 17:07:02 EST 2006 ajc
-* REMOVED MIXED MODE AUTHENTICATION.
-  "autologin mode" is now system accounts ONLY.
-
-Sun Jan 15 22:29 MET 2006 dothebart
-* calculate the directories in a central manner.
-  LHFS'ified installations may use multi-homed installations now too.
-       
-Sun Jan 15 00:00:13 EST 2006 ajc
-* citserver.c: patch submitted by matt to keep the client protocol from
-  getting out of sync following a .h? command.
-
-Sat Jan 14 23:38:44 EST 2006 ajc
-* setup.c: remove "--backtitle" from calls to "dialog" because its
-  availability cannot be depended upon.
-
-Fri Jan 13 12:11:46 EST 2006 ajc
-* THIS IS 6.70
-
-Wed Jan 11 11:07:47 EST 2006 ajc
-* Moved the "Content-Identifer" (sic) header out of the envelope journal
-  subpart headers and into the top-level headers.
-
-Tue Jan 10 22:26:00 EST 2006 ajc
-* Added a per-user client option to always compose messages using the
-  external editor.
-* Removed the "always reply with external editor" option from citadel.rc
-  because the per-user editor choice makes it superfluous.
-
-Tue Jan 10 17:20:30 EST 2006 ajc
-* Added "Content-Identifer: ExJournalReport" to journal envelope headers
-  (Requested by SECCAS for compatibility with their archival service.)
-  (Yes, it is spelled incorrectly.  The headers generated by Exchange are
-  spelled incorrectly and SECCAS requested that our headers look identical.)
-
-Mon Jan  9 17:23:39 EST 2006 ajc
-* docs/journaling.html: added.
-
-Mon Jan  9 12:56:57 EST 2006 ajc
-* Bumped the version number to 6.70 in preparation for a new release
-
-Thu Jan  5 17:38:39 EST 2006 ajc
-* Adjustments to journal recipient list 
-
-Thu Jan  5 16:08:47 EST 2006 ajc
-* Implemented configuration settings for journaling.
-
-Wed Jan  4 22:05:49 EST 2006 ajc
-* Journaling code is finished.  Still needs configuration settings.
-
-Wed Jan  4 18:14:13 EST 2006 ajc
-* Began implementation of Journaling and Envelope Journaling.
-
-Thu Dec 15 23:12:05 EST 2005 ajc
-* Include a pre-fixed parsedate.c in the source tree in order to eliminate
-  the requirement for yacc or bison to build Citadel.  Also, 'make clean'
-  no longer deletes parsedate.c
-
-Thu Dec 15 10:51:45 EST 2005 ajc
-* newinstall.sh: be smarter about how wget and curl are used
-
-Thu Dec 15 00:03:53 EST 2005 ajc
-* room_ops.c: when granting a room creator access to a new room, omit the
-  lgetuser/lputuser calls because they are not needed.  Also, don't perform
-  access grant if no user is logged in.
-
-Sun Dec 11 23:04:31 EST 2005 ajc
-* THIS IS 6.63
-
-Fri Dec  9 14:14:37 EST 2005 ajc
-* Updated the output of server GOTO command; new parameter indicates whether
-  the user is in his Trash folder.
-* Updated internal version number to 6.63 so WebCit knows this is available.
-
-Mon Nov 28 10:45:21 EST 2005 ajc
-* control.c: fixed a potential concurrency/race condition in
-  the get_new_[message|room|user]_number() functions.
-
-Sun Nov 27 21:20:27 EST 2005 ajc
-* Eliminated the use of tmpnam() to shut up the compiler warnings.
-
-Mon Nov 21 16:59:43 CET 2005 dothebart
-* add some script to wrap the debian package build that does some magic about
-  the versioning in the package and the citadel system
-* Many fixups to the debian packages
-* added Unixlogin Package
-       
-Tue Nov 15 21:18:01 EST 2005 ajc
-* THIS IS 6.62
-
-Sun Nov 13 23:35:55 EST 2005 ajc
-* serv_extensions.c: serv_upgrade_init() must be called prior to
-  serv_inetcfg_init() in order to ensure that citadel.control is created
-  at the correct time.  (Patch sent in by Wilifried Goesgens.)
-
-Sat Nov  5 22:56:30 EST 2005 ajc
-* More changes to batch mode setup
-
-Thu Nov  3 23:02:01 EST 2005 ajc
-* Updated setup to allow more batch mode control of it;
-  see techdoc/package-setup.txt
-
-Sun Oct 30 23:03:49 EST 2005 ajc
-* When logging to syslog is enabled, SMTP transactions are now logged to
-  LOG_MAIL as well as whatever the normal facility is, in a format
-  similar to what conventional MTA's use.  Resolves bugzilla issue #153.
-
-Sun Oct 30 22:22:00 EST 2005 ajc
-* syslog messages are now sent to the desired facility rather than always
-  going to LOG_DAEMON.  There was a command line parsing bug.
-
-Sun Oct 30 21:17:57 EST 2005 ajc
-* Log messages posted to the Aide> room indicating activity such as room
-  create/delete/edit operations now use "Room Name" rather than Room Name>
-  because users unfamiliar with the text-mode Citadel tradition may think
-  that the latter syntax is an output error.  Resolves bugzilla issue #166.
-
-Thu Oct 27 16:56:09 EDT 2005 ajc
-* THIS IS 6.61
-
-Thu Oct 27 16:44:36 EDT 2005 ajc
-* Allow "host:port" syntax when specifying an outbound SMTP smart-host
-
-Wed Oct 26 13:22:02 EDT 2005 ajc
-* msgbase.c: Yet Another Fix to the handling of embedded message/rfc822
-
-Tue Oct 25 17:29:12 EDT 2005 ajc
-* msgbase.c: when a summary mode message list is requested, and the room
-  contains a pointer to a message which does not exist (this normally should
-  not happen), return an empty message summary line instead of crashing.
-* removed the remaining vestiges of the libtool stuff in .c and .y files
-
-Mon Oct 24 22:52:33 EDT 2005 ajc
-* Every user gets a Trash folder.  Clients can also use _TRASH_
-
-Mon Oct 24 11:19:47 EDT 2005 ajc
-* serv_listsub.c: web subscription/confirmation address no longer has http://
-  prepended to it.  This means that clients now must supply that.  This was
-  done because we can no longer assume http -- it was breaking on https.
-
-Sun Oct 23 23:28:23 EDT 2005 ajc
-* "day start" and "day end" preferences for calendar day view.
-
-Sun Oct 23 01:37:00 EDT 2005 ajc
-* ft_wordbreaker.c: don't clobber memory when reading in tokens bigger
-  than the token word buffer.
-
-Sat Oct 22 22:55:49 EDT 2005 ajc
-* Set a maximum number of messages which may be indexed before we force
-  a cache flush to disk.  Currently 2500.
-
-Sat Oct 22 00:48:47 EDT 2005 ajc
-* msgbase.c: allow multipart/alternative part-swapping only at the top
-  level, because if we recursed into another one then it's going to stomp
-  all over our preferred part.  (even more uuuuunnnhhhhh...)
-
-Sat Oct 22 00:46:52 EDT 2005 ajc
-* mime_parser.c: recurse into message/rfc822 parts as if they were
-  multipart, because we may need to extract attachments from the embedded
-  submessage, etc.  (uuuuunnnhhhh...)
-
-Fri Oct 21 15:12:45 EDT 2005 ajc
-* MSG4 (and CtdlOutputMsg() as well) now accepts an optional MIME part
-  specifier, allowing the client to fetch an encapsulated message
-  attached as message/rfc822 instead of the top-level message.
-
-Thu Oct 20 17:55:12 EDT 2005 ajc
-* ft_wordbreaker.c: added a list of "noise words" to ignore.  This is
-  admittedly EN/US specific, so if anyone wants to contribute noise words
-  for other languages...
-
-Wed Oct 19 22:55:19 EDT 2005 ajc
-* serv_calendar.c: registered a fixed output hook for text/calendar.
-
-Wed Oct 19 13:30:16 EDT 2005 ajc
-* New type of server hook: CtdlRegisterFixedOutputHook().  This is for
-  extending the fixed_output() function for arbitrary new MIME types.  The
-  usefulness of this for end users is limited, since no clients use MSG0
-  anymore.  The real purpose of converting various MIME types to text is to
-  make them visible to the full text indexer.
-* serv_vcard.c: registered a fixed output hook for text/x-vcard.
-
-Tue Oct 18 22:46:41 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* msgbase.c, messages.c, html.c: conversion of HTML to plain text now accepts
-  a maximum source length.  MSG0 output of multipart messages was running
-  right past the end of the HTML and into, for example, a subsequent base64
-  encoded attachment, which was then output -- or worse, indexed.
-* Since everyone's fulltext indices probably contain a lot of base64 junk, the
-  FT_WORDBREAKER_ID has been bumped.  This will force an index rebuild on any
-  sites that are upgraded.
-
-Tue Oct 18 13:11:38 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* serv_fulltext.c: index records are now cached in memory.  This
-  significantly speeds up indexing of an existing message base.  We
-  flush the cache to disk when finished.
-
-Mon Oct 17 22:10:57 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* Easy Install now uses db-4.3.29
-
-Mon Oct 17 10:59:55 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* THIS IS 6.60
-
-Sun Oct 16 00:23:19 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* msgbase.c: alias() now handles addresses such as 
-  Display Name <user@host.org>
-  ...when user@host.org resolves to a user on the local Citadel server
-  or network, without trying to loop out and back in again via SMTP.
-
-Sun Oct 16 00:11:16 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* Handle email addresses with commas inside quotes, such as
-  "Cancro, Art" <ajc@uncensored.citadel.org>
-  ...without thinking that the comma is a separator between addresses
-
-Thu Oct 13 00:02:23 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* citadel.c: don't crash when <.R>ead <U>serlist results in an empty
-  list.  The ClientIPC API returns NULL if the search returned no results,
-  which we have to handle.  This resolves Bugzilla issue #154.
-
-Wed Oct 12 23:30:18 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* newinstall.sh: once again, prefer wget over curl.  At least one user
-  reported a problem where the -O option to curl was not available.  Also
-  changed -O to --remote-name in the hope that this works better.
-
-Wed Oct 12 17:32:05 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* imap_search.c: when fulltext index is enabled, avoid doing a slow search
-  on each message when BODY is requested.  Messages are already qualified
-  by the indexer.
-
-Wed Oct 12 10:30:22 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* html.c: added support for some additional character entity references.
-
-Tue Oct 11 23:13:53 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* Default for autologin is now DISABLED!  If you are upgrading an existing
-  site and are using this function, you must --enable-autologin
-* newinstall.sh: --enable-autologin if upgrading an existing installation
-  that we think is set to autologin.  It checks for chkpwd to find out.
-
-Tue Oct 11 12:55:43 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* The "set the flags" portion of IMAP COPY now sets the flags of all messages
-  in bulk, instead of one message at a time.  Big performance boost.
-
-Tue Oct 11 01:09:59 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* Fixed a problem with replication.  I believe we've got it now but it needs
-  another round of testing.
-
-Tue Oct 11 00:45:02 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* Replication checks and EUID indexing are now only enabled for rooms whose
-  default view is set to a groupware type of room.  This speeds up the saving
-  and moving of messages for message and mail rooms.
-
-Mon Oct 10 00:22:49 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* IMAP STORE now calls CtdlSetSeen() with an entire list of message numbers.
-
-Sun Oct  9 22:37:44 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
- * CtdlSetSeen() now accepts a list of message numbers instead of just one.
-
-Sat Oct  8 18:40:50 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* Replaced the various "socket is broken" messages with the message
-  "Client disconnected: ending session."  The previous messages were concerning
-  some site operators that there might have been something wrong with
-  the system.  (Bugzilla #164)
-
-Fri Oct  7 23:07:38 EDT 2005 Art Cancro <ajc@uncensored.citadel.org>
-* Makefile.in: change "CVS" references to ".svn" to avoid errors
-  during install.
-
-Revision 655.25  2005/10/06 19:47:00  ajc
-* Change to EUID command syntax: returned msg num is now guaranteed to
-  exist.
-
-Revision 655.24  2005/10/06 19:16:31  ajc
-* Added the EUID command to search for a message by EUID
-
-Revision 655.23  2005/10/06 17:14:41  ajc
-* newinstall.sh: prefer curl over wget
-
-Revision 655.22  2005/10/06 04:09:19  ajc
-* THE DREADED AUTO-PURGER now purges euid index records which point to
-  messages that no longer exist.
-
-Revision 655.21  2005/10/06 03:36:05  ajc
-* Changed the format of the euidindex record to contain the record's key.
-  This will allow us to auto-purge stale records later.
-
-Revision 655.20  2005/10/04 16:38:17  ajc
-* CtdlOutputPreLoadedMsg() calling syntax has changed.  It no longer needs
-  the message number, because it is being supplied a preloaded message.
-* msgbase.c: fixed a problem where HEADERS_NONE mode was broken when
-  outputting a message in RFC822 format.  This was breaking IMAP commands
-  such as xx FETCH nn BODY[TEXT]
-
-Revision 655.19  2005/10/02 04:40:58  ajc
-* The EUID index is now built, and replication checks are being performed
-  using it.  It is much faster now because we don't have to scan the entire
-  room anymore.  We still need to do two things:
-  1. Write a server command to fetch messages by EUID instead of msgnum
-  2. Find a way to purge stale EUID index records.
-
-Revision 655.18  2005/10/01 05:18:57  ajc
-* Began writing code to index messages by euid per room
-
-Revision 655.17  2005/09/27 04:18:45  ajc
-* Auto-add *recipient* addresses to Contacts.  This is done asynchronously
-  because we do have to scan the address book to make sure we don't
-  already have the address recorded.
-
-Revision 655.16  2005/09/26 21:46:08  ajc
-* Attempt to save *outgoing* email addresses to the address book.
-
-Revision 655.15  2005/09/21 20:07:18  ajc
-* Set the To: field for digests as well
-
-Revision 655.14  2005/09/21 16:56:17  ajc
-* The "To: line of a mailing list message is now set to the address of the
-  list instead of the address of the recipient.
-
-Revision 655.13  2005/09/21 13:21:31  ajc
-* Don't harvest incoming addresses.  A few hours of operation of this in a
-  production environment proved that it's stupid.  This feature has been
-  disabled; we will harvest outgoing addresses instead.
-
-Revision 655.12  2005/09/21 04:27:34  ajc
-* When reading messages in MT_MIME mode from a Citadel client, don't
-  list MIME parts that are part of a multipart/alternative group.
-
-Revision 655.11  2005/09/18 21:51:44  ajc
-* File the auto-generated vCards into the users' address books.
-
-Revision 655.10  2005/09/18 20:33:13  ajc
-* Now harvesting addresses, converting them to vCards, and storing them in
-  the Aide> room.  All that's left to do now is file the messages in the
-  appropriate users' address books.
-
-Revision 655.9  2005/09/18 19:34:26  ajc
-* When submitting a message, harvest non-local addresses for potential
-  inclusion in a user's Collected Addresses book.  Note: we don't actually
-  do anything with these addresses yet.  That comes next.
-
-Revision 655.8  2005/09/18 17:50:05  ajc
-* serv_network.c: use a stat() call to determine the mtime of spoolin, and
-  skip the scan if it hasn't been touched since the last time we looked.
-* serv_network.c: don't create network/systems/ directory.  We haven't used
-  that in ages.
-* serv_network.c: only attempt to create directories at startup, not at
-  every queue run.  Also, chown() them to the citadel user.
-
-Revision 655.7  2005/09/16 20:40:44  ajc
-* CC: support for message creation, and IMAP.  Not tested.
-
-Revision 655.6  2005/09/16 20:21:38  ajc
-* CC: and BCC: delivery are working (tested using message submittal
-  from WebCit) -- still missing the insertion of Y (CC) header field, and
-  the handling of CC in IMAP.
-
-Revision 655.5  2005/09/16 04:23:21  ajc
-* Cc: and Bcc: support.  Not finished yet.
-
-Revision 655.4  2005/09/15 21:37:06  ajc
-* Restructured cmd_auto() to be able to search vCards in more than one room.
-  For now we are using the Global Address Book as the second room, but in
-  production that might be a bit too slow.
-
-Revision 655.3  2005/09/15 18:36:29  ajc
-* serv_smtp.c: Allow the use of *any* RFC822-compliant address format,
-  including Name <user@node>, or user@node (Name), by stripping down the
-  address before doing RCPT To: in the SMTP client.
-
-Revision 655.2  2005/09/15 03:31:09  ajc
-* cmd_auto() (used by WebCit address autocompletion) now queries the
-  fn, n, and all email fields in the vCards in user's Contacts room.
-
-Revision 655.1  2005/09/14 03:48:32  ajc
-* Bumped internal version number to 6.56
-* Checked in an initial but incomplete version of the AUTO command
-  (to be used for address autocompletion)
-
-Revision 655.0  2005/09/13 14:00:12  ajc
-* THIS IS 6.55
-
-Revision 654.27  2005/09/13 03:56:37  ajc
-* Don't crash when user hits <.A>ide <P>ost
-
-Revision 654.26  2005/09/10 18:46:48  ajc
-* Functions such as imap_fetch_internaldate() now return quietly with no
-  output, instead of crashing, if passed a NULL message pointer.
-
-Revision 654.25  2005/09/09 19:44:21  ajc
-* New bmstrcasestr() function to perform very fast case-insensitive
-  substring searches using the Boyer-Moore algorithm.  Like its predecessor,
-  it is based on the one written by Urs Jannsen; unlike its predecessor, it
-  actually works.
-
-Revision 654.24  2005/09/08 03:25:09  ajc
-* messages.c: break up long lines (preferably by substituting spaces with
-  newlines) to avoid sending messages to the server containing lines with
-  more than 1024 characters, to avoid having the server truncate those
-  lines.
-
-Revision 654.23  2005/09/07 03:08:06  ajc
-* When rejecting a message due to RBL, give the alleged spammers the
-  relevant TXT record if there is one.  Hopefully.  This needs testing.
-
-Revision 654.22  2005/09/02 03:50:42  ajc
-* serv_network.c: fixed a bug in digest generation that was causing the
-  tops of some messages to be cut off.
-
-Revision 654.21  2005/09/01 22:07:08  ajc
-* citserver.c: change to usage of strdup() to work on RH9 where it's
-  a macro
-
-Revision 654.20  2005/08/29 20:49:50  ajc
-* imap_fetch.c: fixed a bug in the IMAP FETCH BODY code that was causing the
-  "most recently fetched message" cache to be burned even when it shouldn't
-  have been.  This was causing abominally slow message load time when a message
-  contains attachments and the MUA is a client such as Thunderbird that does
-  partial fetches.
-
-Revision 654.19  2005/08/23 04:00:01  ajc
-* Mailing list messages are now customized with a To: header for each
-  recipient.  This uses more overhead but makes delivery more reliable.
-  We also prepend [List name] to the subject.
-* The undocumented client-side mailing list participation option received
-  a similar update.  We now set an explicit To: header in there as well,
-  because some lists demand it.
-
-Revision 654.18  2005/08/21 19:40:50  ajc
-* techdoc/protocol.txt: document that unless otherwise specified,
-  everything in the Citadel system is UTF-8.
-
-Revision 654.17  2005/08/21 06:16:37  ajc
-* html.c: don't transform <32 or >126 characters to question marks.  We
-  like foreign character sets now.
-
-Revision 654.16  2005/08/15 16:36:46  ajc
-* Added a "MIME-Version:" header in a couple of places
-
-Revision 654.15  2005/08/12 18:00:29  ajc
-* Bounds checking in CtdlDirectoryLookup()
-
-Revision 654.14  2005/08/12 15:18:27  ajc
-* updated the roadmap
-
-Revision 654.13  2005/08/12 02:12:31  ajc
-* Added more room name macros
-
-Revision 654.12  2005/08/11 23:12:26  ajc
-* debian/citadel-server.postinst: remove reference to '?' file
-  (patch sent in by W. Goesgens)
-
-Revision 654.11  2005/08/11 13:55:26  ajc
-* Attempt to fix broken build of our replacement strcpy() on gcc2.96 by
-  issuing an #undef strcpy (it's a macro in that environment)
-
-Revision 654.10  2005/08/10 21:47:41  ajc
-* Added "instant expunge" and "allow spoofing" site config options.
-
-Revision 654.9  2005/08/10 21:10:54  ajc
-* moved "instant expunge" to imap_do_store() so that it gets called from
-  both STORE and UID STORE commands.
-
-Revision 654.8  2005/08/10 15:39:35  ajc
-* Experimental "instant expunge" option.  For now, you have to put
-  -DINSTANT_EXPUNGE into the CFLAGS line of your Makefile.  If we decide to
-  keep this it will become a site config option.
-
-Revision 654.7  2005/08/10 02:44:56  ajc
-* Applied changes to debian files sent in by WG
-
-Revision 654.6  2005/08/09 21:58:57  ajc
-* Removed the ./help/? hack; replaced with actual "show directory" code
-  in the server.
-
-Revision 654.5  2005/08/09 16:28:32  ajc
-* setup.c: added "exim4" to the list of non-Citadel MTA's which can be
-  disabled during setup.
-
-Revision 654.4  2005/08/09 14:13:36  ajc
-* newinstall.sh: hunt for both 'make' and 'gmake', but this time make sure
-  that the make in question is actually GNU Make, regardless of its name
-
-Revision 654.3  2005/08/08 14:57:19  ajc
-* Added a new "with header summary" mode to the MSGS command.
-
-Revision 654.2  2005/08/08 14:28:41  ajc
-* CtdlForEachMessage() -- avoid scanning v_seen sequence set for each message
-  during a MSGS_ALL fetch, because the results don't matter.
-
-Revision 654.1  2005/08/05 21:31:01  ajc
-* Any "delete message" operation which is synchronous to a client is now
-  deferred.  This is accomplished by copying the message pointer to
-  the __CitadelDeletedMessages__ room, which keeps the reference count at
-  least 1.  THE DREADED AUTO-PURGER can sweep it up later.
-
-Revision 654.0  2005/08/05 16:22:38  ajc
-* THIS IS 6.54
-
-Revision 653.18  2005/08/04 04:46:42  ajc
-* Bumped internal version number to 6.54
-* removed some tracing messages
-
-Revision 653.17  2005/08/04 04:22:09  ajc
-* imap_fetch.c: removed a spurious ')' character from the output
-  of the 'charset' field.
-
-Revision 653.16  2005/08/02 03:40:15  ajc
-* Removed instances of hard-coded CTDLDIR; this breaks -h
-
-Revision 653.15  2005/08/02 03:05:31  ajc
-* Added in Wilfried Goesgens' debian/ build directory.
-
-Revision 653.14  2005/08/02 02:49:12  ajc
-* Applied Wilfried Goesgens' dirconfig patch for more install targets
-
-Revision 653.13  2005/08/01 20:45:26  ajc
-* citadel_ipc.c: RUN_DIR not RUNDIR in line 2944
-
-Revision 653.12  2005/07/29 03:50:52  ajc
-* Temporarily disabling network_purge_spoolout() because it may be
-  removing files it shouldn't.
-
-Revision 653.11  2005/07/29 01:50:58  ajc
-* Create network/ directory hierarchy if it doesn't exist
-
-Revision 653.10  2005/07/28 03:22:19  ajc
-* Added a "macintosh readme" written by Mathew McBride
-
-Revision 653.9  2005/07/26 02:49:25  ajc
-* Applied a patch sent in by Wilfried Goesgens which allows the various
-  program and data directories to be set to any location on the host
-  system.  This will allow packagers to do FSSTND-type configurations.
-
-Revision 653.8  2005/07/25 17:37:36  ajc
-* citadel_ipc.c: when performing a MSG4 command, don't return the
-  charset as part of the content-type string.
-
-Revision 653.7  2005/07/21 17:20:55  ajc
-* <.R>ead <U>ser-list now takes advantage of the server-side string match
-  if available.  It still filters on the client side as well, in case the
-  server is older and sent back the whole list.
-
-Revision 653.6  2005/07/21 15:02:27  ajc
-* Server-side LIST command now accepts a search string.
-
-Revision 653.5  2005/07/19 20:04:31  ajc
-* MSG4 command now outputs content type *and* charset
-
-Revision 653.4  2005/07/19 17:30:13  ajc
-* Fixed a bug in the MIME parser that was causing it to prematurely go
-  out of scope when binary parts are included.  (8-bit MIME is not yet
-  explicitly supported in the Citadel server, but WebCit uses this to
-  handle data coming in via the POST method.)
-
-Revision 653.3  2005/07/19 14:21:51  ajc
-* mime_parser.c: don't default to Content-type: text/plain; charset=us-ascii
-  because there are places where those fields actually need to be empty (in
-  WebCit, actually, but I don't want to fork the mime parser).
-
-Revision 653.2  2005/07/19 04:10:01  ajc
-* Updated the MIME parser API to include the "charset" portion of
-  the content type.
-
-Revision 653.1  2005/07/09 11:30:18  ajc
-* Removed trailing space at the end of the list of messages returned by
-  an IMAP SEARCH command.
-
-Revision 653.0  2005/07/06 21:41:52  ajc
-* THIS IS 6.53
-
-Revision 652.1  2005/07/06 21:41:17  ajc
-* Fixed bug #149 (incorrect sequence set optimization, resulting in
-  messages being marked as read/unread incorrectly during IMAP sessions)
-
-Revision 652.0  2005/07/06 02:28:38  ajc
-* THIS IS 6.52
-
-Revision 651.8  2005/07/06 02:28:20  ajc
-* citadel.lsm: removed.  Nobody uses the Linux Software Map anymore.
-* Updated internal version number to 6.52
-
-Revision 651.7  2005/07/06 01:53:34  ajc
-* imap_fetch.c: additional self-check to avoid attempting to fetch messages
-  with UID's lower than 1.  Hopefully this fixes bug #150.
-
-Revision 651.6  2005/07/01 22:07:27  ajc
-* CtdlSetSeen() -- when new vset overflows its size, trim it in such a way
-  so that it doesn't mark the oldest messages as new.
-
-Revision 651.5  2005/06/28 02:58:19  ajc
-* docs update
-
-Revision 651.4  2005/06/26 22:19:20  ajc
-* auth.c: applied fleeb's patch to validpw() to clean up FreeBSD compatibility
-
-Revision 651.3  2005/06/22 03:45:17  ajc
-* Documented the auto-log-cull as it relates to backup strategies
-
-Revision 651.2  2005/06/22 03:03:34  ajc
-* Automatic deletion of committed database logs is now a site-definable
-  setting.
-
-Revision 651.1  2005/06/16 02:42:58  ajc
-* There is now a dedicated thread for doing database checkpoints.
-
-Revision 651.0  2005/06/12 03:46:30  ajc
-* THIS IS 6.51
-
-Revision 647.42  2005/06/12 03:31:33  ajc
-* ChangeLog: restored automatic prepending of CVS commit log messages
-  to the top of this file.  Somehow it got lost somewhere around 647.20
-
-Revision 647.41  2005/06/12 03:30:20  ajc
-* Test
-
-revision 647.40
-date: 2005/06/12 03:24:15;  author: ajc;  state: Exp;  lines: +0 -1
-* When delivering list digests, put the name of the room in [brackets]
-  in the subject line.  This makes lots of other software happy.  (We
-  need to do this for non-digest list subscribers too.)
-
-revision 647.39
-date: 2005/06/12 01:15:33;  author: ajc;  state: Exp;  lines: +1 -0
-* Provide separate filtered and unfiltered LMTP sockets.
-
-revision 647.38
-date: 2005/06/09 20:10:02;  author: ajc;  state: Exp;  lines: +0 -1
-* Easy Install requires gmake
-
-revision 647.37
-date: 2005/06/09 03:35:58;  author: ajc;  state: Exp;  lines: +1 -0
-* Allow IMAP DELETE of a zapped/forgotten/unsubscribed room
-
-revision 647.36
-date: 2005/06/09 03:20:21;  author: ajc;  state: Exp;  lines: +0 -1
-* Do not log IMAP/POP/SMTP password commands
-
-revision 647.35
-date: 2005/06/07 21:45:14;  author: ajc;  state: Exp;  lines: +1 -0
-* bounce messages need subjects
-
-revision 647.34
-date: 2005/06/06 23:50:01;  author: ajc;  state: Exp;  lines: +0 -1
-* Made some changes to the calendar/uuid logic to fix a bug that caused
-  duplicate entries for an event to appear in some situations
-
-revision 647.33
-date: 2005/06/03 22:26:03;  author: ajc;  state: Exp;  lines: +1 -0
-* When saving a vCard to a dedicated contacts room, always set the subject
-  to the name in the vCard.
-
-revision 647.32
-date: 2005/06/03 22:22:36;  author: ajc;  state: Exp;  lines: +0 -1
-* Removed old Aethera hacks
-
-revision 647.31
-date: 2005/06/03 04:01:27;  author: ajc;  state: Exp;  lines: +1 -0
-* Documentation update
-
-revision 647.30
-date: 2005/06/02 19:32:30;  author: ajc;  state: Exp;  lines: +0 -1
-* Set the correct flags in the target room after an IMAP COPY command.
-
-revision 647.29
-date: 2005/06/02 16:09:32;  author: ajc;  state: Exp;  lines: +1 -0
-* tools.c: generated uuid's no longer contain "{" and "}" characters.
-
-revision 647.28
-date: 2005/06/02 03:39:44;  author: ajc;  state: Exp;  lines: +0 -1
-* Do not turn the initial thread into a worker thread after initialization.
-  Its stack size is too small, which could cause crashes.
-
-revision 647.27
-date: 2005/06/01 22:32:57;  author: ajc;  state: Exp;  lines: +1 -0
-* Implemented a workaround for the IMAP "expungebob bug."  Specifically, since
-  we don't store the \Deleted flag persistently (and instead auto-expunge
-  folders when they are de-selected) we were not advertising \Deleted as
-  a PERMANENTFLAGS flag.  This was causing some clients (particularly
-  Thunderbird) to misbehave -- they were simply electing not to transmit the
-  flag at all.  As a workaround, \Deleted is now advertised as a
-  PERMANENTFLAGS flag, even though it technically isn't.
-
-revision 647.26
-date: 2005/06/01 18:31:50;  author: ajc;  state: Exp;  lines: +0 -1
-* serv_vandelay.c: updated the export format to include some of the config
-  items we missed.
-
-revision 647.25
-date: 2005/06/01 05:23:26;  author: ajc;  state: Exp;  lines: +1 -0
-* The full text indexer now runs in its own dedicated thread instead of
-  in the housekeeping thread.  The main indexer loop now also has the ability
-  to save its place and bail out early when it discovers that the server is
-  trying to shut down.  The main server loop will pthread_join() the indexer
-  thread and patiently wait for it to complete before exiting.  These changes
-  all put together mean that citserver will not hang when it is terminated
-  during an indexing operation.
-
-revision 647.24
-date: 2005/05/27 23:46:57;  author: ajc;  state: Exp;  lines: +0 -1
-* Removed OpenLDAP from Easy Install, because it was just too problematic.
-
-revision 647.23
-date: 2005/05/26 04:25:29;  author: ajc;  state: Exp;  lines: +1 -0
-* Applied xmlns and etag patches sent in by Johannes Schneider that improve
-  GroupDAV support.
-* Located and fixed a MIME Content-type bug that I accidentally created
-  while removing a temporary hack that was in place during the last KDE beta.
-
-revision 647.22
-date: 2005/05/23 19:33:56;  author: ajc;  state: Exp;  lines: +0 -1
-* database_sleepycat.c: cdb_truncate() no longer encapsulated in a
-  transaction.  Truncating a database in Citadel is always synchronous,
-  and with big tables (such as when the full text indexer is switched off
-  or reinitialized) it was running out of memory.
-
-revision 647.21
-date: 2005/05/23 19:31:52;  author: ajc;  state: Exp;  lines: +5 -1
-* test
-
- Revision 647.20  2005/05/23 19:26:04  ajc
- * Move the location of the "enable full text index" configuration item to
-   a new location.  Reusing an old location was a stupid idea because old
-   clients can inadvertently switch it on.
-
- Revision 647.19  2005/05/23 14:07:39  ajc
- * serv_imap.c: improve SELECT time by fetching the msglist directly out of
-   the database instead of doing a CtdlForEachMessage() loop.
-
- Revision 647.18  2005/05/22 16:12:25  ajc
- * Full text indexer is now switchable on/off
-
- Revision 647.17  2005/05/20 20:02:50  ajc
- * The IGnet map is now rewritten to disk only when it changes.
- * When processing inbound network spool, ignore "." and ".." instead of
-   failing on them.
-
- Revision 647.16  2005/05/20 16:22:33  ajc
- Fixed some errors in the ChangeLog
-
- Revision 647.15  2005/05/20 16:14:43  ajc
- * Dramatically improved the time it takes to goto (or select) a room which
-   contains a very long and complex seen/unseen list.  Our test folder,
-   containing 359 new of 3162 messages, formerly took 22 seconds to select;
-   now it takes 1 to 2 seconds.
-
- Revision 647.14  2005/05/20 02:37:17  ajc
- * Performance-optimized the full text indexer.
-
- Revision 647.13  2005/05/20 01:20:24  ajc
- * Cull logs immediately after a successful db checkpoint instead of only
-   once every 24 hours.  During big db write operations (such as building
-   the full text index) they were just piling up too much.
-
- Revision 647.12  2005/05/19 21:10:03  ajc
- * Altered the full text indexer to output messages as text before running
-   through the wordbreaker.  This prevents the inclusion of encoded base64
-   strings in the index, and also allows legitimate text encoded inside
-   base64 to be decoded and then indexed.
-
- Revision 647.11  2005/05/19 03:42:29  ajc
- * Bound the full text index to IMAP search
-
- Revision 647.10  2005/05/18 22:09:01  ajc
- * Finished the indexer *and* deindexer!  The search API is now working
-   flawlessly too.  Now all we have to do is glue it to IMAP and other
-   user-facing functionality.  (The SRCH command is for testing only.)
-
- Revision 647.9  2005/05/18 04:02:54  ajc
- * Completed the "search for all of these words" functionality.  All we need
-   to do now is generalize its calling syntax so it can be called from the
-   IMAP service.
-
- Revision 647.8  2005/05/18 03:22:27  ajc
- * Finished the indexer and the first part of the search function...
-
- Revision 647.7  2005/05/17 20:36:48  ajc
- * Indexer is completed; also began work on the search function itself.
-   Still need to add de-indexing so deleted messages are removed from index.
-
- Revision 647.6  2005/05/17 16:25:23  ajc
- * Completed the wordbreaker for the full text indexer.
-
- Revision 647.5  2005/05/17 04:04:46  ajc
- * Began some glue code for the full text indexer.
-
- Revision 647.4  2005/05/16 20:03:33  ajc
- * definition of struct CitControl moved from citadel.h to server.h
-
- Revision 647.3  2005/05/16 18:48:45  ajc
- * Don't prompt the user for screen dimensions anymore.  Nobody is using
-   dialup terminals with arbitrary screen sizes anymore; nearly everyone (or
-   more likely, *absolutely* everyone) is now using networked displays which
-   can be automatically queried for their screen dimensions.  For now, we'll
-   keep the screen size properties in the database and in the protocol, but
-   the prompts have been commented out.
-
- Revision 647.2  2005/05/16 18:25:56  ajc
- * Avoid re-creating the default-named baseroom (Lobby) upon subsequent
-   startups after it's been renamed to something else.
-
- Revision 647.1  2005/05/16 16:59:39  ajc
- * Default expire policy is now 'manual' (no automatic expiry of messages
-   under any circumstances).  Implemented as per David Given's suggestion
-   that we should operate using the element of least surprise.
-
- Revision 647.0  2005/05/12 16:54:10  ajc
- * THIS IS 6.47
-
- Revision 646.1  2005/05/12 16:53:18  ajc
- * Fixed a minor bug discovered in SMTP at one site
-
- Revision 646.0  2005/05/11 17:06:04  ajc
- * THIS IS 6.46
-
- Revision 645.20  2005/05/09 22:17:30  ajc
- * Interactive room deletions are now deferred.  The server reconfigures the
-   room to be a mailbox owned by a nonexistent user and immediately returns
-   control back to the client.  Later, THE DREADED AUTO-PURGER will see the
-   dangling room and erase its contents.
-
- Revision 645.19  2005/05/08 03:43:22  ajc
- * Set the internal version number to 6.46 in preparation for a release
-
- Revision 645.18  2005/05/02 20:52:42  ajc
- * More IMAP optimizations, including the application of our latest "don't
-   fetch the message body" trick to ENVELOPE and INTERNALDATE fetches, to
-   make MS-Outbreak spread email viruses faster.
-
- Revision 645.17  2005/05/02 16:09:52  ajc
- * serv_imap.c: implemented the RFC 3501 suggestion that the initial
-   greeting, and the response to the LOGIN command, include an output
-   of the server's CAPABILITY string.  I find this to be gratuitous but
-   the UW IMAP server does it, so we are also doing it in order to better
-   interoperate with clients which make assumptions...
-
- Revision 645.16  2005/04/29 22:02:20  ajc
- * More IMAP tuning
-
- Revision 645.15  2005/04/29 20:47:45  ajc
- * More complex cache handling for IMAP fetch operations -- now we can
-   fetch/cache "just the headers" and remember whether we did so, so we can
-   burn the cache if the client then comes around and requests something
-   that requires the body.  Still needs some testing and tuning.
-
- Revision 645.14  2005/04/29 16:50:03  ajc
- * Significantly reduced the memory footprint of struct CitContext.
-
- Revision 645.13  2005/04/29 16:26:00  ajc
- * Removed the CtdlRedirectOutput() API, as we are no longer using it.
-   (Oh happy day; no more temp files!)
-
- Revision 645.12  2005/04/27 19:22:57  ajc
- * .ASG command: made better use of memory to avoid crashes
-
- Revision 645.11  2005/04/23 04:38:26  ajc
- * Substantially improved the appearance of mailing list digests.
-   Superfluous RFC822 headers no longer appear, and all messages are
-   converted to plain text using the preferred_formats framework.
- * CtdlOutputPreLoadedMsg() -- fixed bug that caused Citadel protocol
-   headers to appear for MIME prefix, suffix, etc. even when do_proto is 0.
-
- Revision 645.10  2005/04/23 02:04:11  ajc
- * serv_imap.c: don't respond "OK DELETE completed" until after the room
-   delete operation actually completes.
-
- Revision 645.9  2005/04/23 01:59:58  ajc
- * Big performance optimization on CtdlSetSeen()
-
- Revision 645.8  2005/04/22 04:26:34  ajc
- * is_msg_is_mset() has been renamed to is_msg_in_sequence_set() because
-   "sequence set" is now the official terminology as of RFC3501.
- * imap_set_seen_flags() no longer calls is_msg_in_sequence_set() for each
-   message and for each flag.  It's just too expensive.  We now parse each
-   flag's sequence set manually, marking the relevant messages as we go.
-
- Revision 645.7  2005/04/22 00:52:03  ajc
- * small fix to previous commit
-
- Revision 645.6  2005/04/21 17:28:51  ajc
- * msgbase.c: when committing a new message to the store, save its RFC822
-   length to the metadata record immediately.  This will eliminate the need
-   to calculate it later during a fetch operation.
-
- Revision 645.5  2005/04/14 15:53:55  ajc
- * Variable names, comments, documentation, etc...  removed the acronym 'BBS'
-   in places where functionality is not specific to the use of Citadel as
-   a BBS platform.
-
- Revision 645.4  2005/04/13 20:42:44  ajc
- * citmail.c: changes to citmail to make it usable as a /usr/sbin/sendmail
-   replacement; i.e. /bin/mail calls /usr/sbin/sendmail which sends mail
-   through Citadel.
-
- Revision 645.3  2005/04/13 17:03:07  ajc
- * Reverted database changes because the cull_logs function wasn't working
-   with the separate log directory.
- * citmail.c: started some fixes to make it able to work from
-
- Revision 645.2  2005/04/12 21:19:52  ajc
- * 'make install' now installs citadel-openldap.schema
-
- Revision 645.1  2005/04/11 16:31:57  ajc
- * Database logs are now kept in the "data_logs" directory instead of in
-   the "data" directory.  If no "data_logs" directory is found, a symlink
-   to "data" will be created, in order to preserve access to any existing
-   log files -- a savvy sysadmin (or a storage management wizard script)
-   will know what to do if a different location is desirable.
-
- Revision 645.0  2005/04/01 03:02:44  ajc
- * THIS IS 6.45
-
- Revision 641.34  2005/03/31 04:31:42  ajc
- * Bumped the internal version number to 6.45 in preparation for
-   an upcoming release.
-
- Revision 641.33  2005/03/24 22:52:40  ajc
- * More extermination of the dreaded SIZ moby-buffers.
-
- Revision 641.32  2005/03/24 22:13:56  ajc
- * extract_token() now expects to be supplied with the size of the
-   destination string buffer.  This, along with the elimination of other
-   unbounded functions like strcpy(), will allow the removal of the
-   "all string buffers are of size SIZ" assumption (a process which I have
-   already begun), which will hopefully reduce stack consumption.
-
- Revision 641.31  2005/03/22 21:53:48  ajc
- * Oops, forgot to initialize some data structures...
-
- Revision 641.30  2005/03/22 16:49:29  ajc
- * Fixed a couple of memory allocation bugs
-
- Revision 641.29  2005/03/20 22:55:58  ajc
- * Logging to stderr no longer uses syslog()
- * Reworked the way dead sessions are purged.  More efficient and more
-   reliable now.
-
- Revision 641.28  2005/03/18 21:40:36  ajc
- * Minor bugfix to previous checkin
-
- Revision 641.27  2005/03/18 21:25:06  ajc
- * Finished removing all the "dynamic session data" stuff in order to
-   boost reliability, improve performance, and reduce complexity.
-
- Revision 641.26  2005/03/12 05:42:35  ajc
- * Trying to fix a memory bug somewhere.
- * While working on the above, noticed that the way we did the per-session
-   dynamic symbols loses badly in terms of performance.  Began moving to
-   a less modular but better performing way of doing the same.
-
- Revision 641.25  2005/03/10 03:36:25  ajc
- * Silenced a compiler warning
- * Our graceful cleanup handler no longer gracefully cleans up after
-   receiving SIGSEGV or its friends.  Unfortunately we need the core dump.
-
- Revision 641.24  2005/03/10 03:11:07  ajc
- * Altered the algorithm by which the doubly-linked session list is
-   amended and culled.  Decided that performance is better than cute
-   session numbers (which we don't display to the users anymore anyway)
-   and we now assign a session number (CC->cs_pid) starting with 1 when the
-   server starts and incrementing indefinitely.  Need to test this more.
-
- Revision 641.23  2005/03/07 04:08:07  ajc
- * vcard.c: realloc fix
-
- Revision 641.22  2005/03/05 22:31:01  ajc
- * Allow the use of chained certificates for crypto
-
- Revision 641.21  2005/03/04 20:04:00  ajc
- * IMAP FETCH RFC822.SIZE now honors the cached rfc822 size in each
-   message's metadata, using it if present and storing it for next time
-   otherwise.
- * Fixed bug in POP3 server that was causing it to fail to store the
-   correct RFC822 size in metadata.  Fortunately it was failing in a way
-   that merely affected performance rather than corrupting the data on
-   existing installations.
-
- Revision 641.20  2005/03/04 02:24:31  ajc
- * SMTP: only offer TLS on the MSA port (587), not on the MTA port (25).
-   There seem to be some other MTA's out there that make things go haywire
-   when TLS is offered.
-
- Revision 641.19  2005/03/04 02:18:46  ajc
- * config.c: default setting for "maxmsglen" is now 10 megabytes, not INT_MAX
-
- Revision 641.18  2005/03/03 18:10:27  ajc
- * sysdep.c: change the algorithm for dynamically expanding the redirect
-   buffer's size.  Large writes were overflowing it.
-
- Revision 641.17  2005/03/03 17:56:53  ajc
- * Finished removing the use of temp files in IMAP.
-   WARNING: DON'T USE THIS ON A PRODUCTION SYSTEM, IT HAS NOT BEEN
-   FULLY TESTED WITH VARIOUS IMAP CLIENTS YET!
-
- Revision 641.16  2005/03/03 05:14:06  ajc
- * Realized that memreadline() does NOT return a NULL pointer when it hits
-   a null character, and adjusted all the code I wrote yesterday under that
-   assumption.
- * Removed the use of a temp file for IMAP FETCH BODYSTRUCTURE on a
-   non-RFC822 message.
-
- Revision 641.15  2005/03/02 17:33:03  ajc
- * msgbase.c: fixed a buffer overflow error
- * imap_fetch.c, serv_imap.c, serv_imap.h: migrated imap_fetch_rfc822() to
-   use the new in-memory message buffering.  BODY comes next...
-
- Revision 641.14  2005/03/02 03:35:18  ajc
- * serv_smtp.c: removed use of temporary file for SMTP transmission
-
- Revision 641.13  2005/03/02 03:01:18  ajc
- * serv_spam.c: use redirect_buffer instead of redirect_sock
- * Removed redirect_sock from the API.  redirect_fp is next!
-
- Revision 641.12  2005/03/02 02:42:06  ajc
- * Finished moving the POP3 server to the new redirect_buffer semantics
-
- Revision 641.11  2005/03/02 02:16:10  ajc
- * Toned down some of the hostility in the code's comments :)
-
- Revision 641.10  2005/03/01 22:03:35  ajc
- * Began implementation of a third RedirectOutput mode -- one which writes
-   to a memory buffer.  This will replace the other two.
- * serv_pop3.c: began migration to the new redirect mode.
-
- Revision 641.9  2005/03/01 04:24:52  ajc
- * When saving an RFC822 message, use a less expensive algorithm to
-   search for the Content Type
-
- Revision 641.8  2005/02/28 20:32:50  ajc
- * IMAP APPEND command now accepts the message text using one big
-   client_read() call instead of a bunch of smaller ones.
-
- Revision 641.7  2005/02/28 02:25:29  ajc
- * added pid file writing
-
- Revision 641.6  2005/02/27 15:36:28  ajc
- * database_cleanup.sh: look for /usr/local/ctdlsupport/bin/db_dump and
-   prepend that directory to the PATH if found.
- * database_cleanup.sh: add more warnings about how dangerous this tool is
-
- Revision 641.5  2005/02/26 16:27:54  ajc
- * setup.c: added more items to the list of non-Citadel MTA's which can be
-   disabled during setup.
-
- Revision 641.4  2005/02/25 17:59:12  ajc
- * Ok, now we accept *all* the flags transmitted during an IMAP APPEND, not
-   just the first one.
-
- Revision 641.3  2005/02/25 05:51:52  ajc
- * Started working on a fix for the IMAP APPEND "flags" thing.  It works
-   but only for the first flag sent.  Will finish tomorrow.
-
- Revision 641.2  2005/02/24 18:14:24  ajc
- * Removed excessive trace messages that were slowing the server down
- * Prepared for handling of setting flags in IMAP APPEND
-
- Revision 641.1  2005/02/23 04:24:57  ajc
- * When auto-creating Mail>, Sent Items>, etc... set view to VIEW_MAILBOX
-
- Revision 641.0  2005/02/21 21:59:33  ajc
- * THIS IS 6.41
-
- Revision 640.14  2005/02/21 21:40:28  ajc
- * Updated internal version number to 6.41
-
- Revision 640.13  2005/02/20 21:10:59  ajc
- * Repaired access control problem in IMAP SUBSCRIBE
-
- Revision 640.12  2005/02/17 16:13:59  ajc
- * Removed "Log Hooks."  This enabled the removal of a buf[SIZ] in lprintf,
-   where it can potentially blow lots of stacks.
-
- Revision 640.11  2005/02/17 03:52:16  ajc
- * setup.c: clarify some of the messages
-
- Revision 640.10  2005/02/16 19:03:38  ajc
- * master_cleanup() now passes along an exit code from its caller to the OS.
-
- Revision 640.9  2005/02/16 18:48:39  ajc
- * Try to reach our cleanup routine when SIGSEGV is caught.  Hopefully
-   we'll get there and we can close the databases cleanly.
-
- Revision 640.8  2005/02/16 17:37:16  ajc
- * Be more aggressive about shutting down when told to.  Getting the
-   databases closed is the highest priority.
-
- Revision 640.7  2005/02/16 04:08:42  ajc
- * newinstall.sh: put the checksum files server-side to avoid
-   unnecessary downloads
-
- Revision 640.6  2005/02/16 03:02:28  ajc
- * Applied patches submitted by Kevin Kilbride for TCP_CORK and for
-   turning CitContext into a doubly-linked list.
-
- Revision 640.5  2005/02/13 04:55:18  ajc
- * Did the server port hooks etc. for SSL listeners.  For some reason it
-   doesn't work.  :(
-
- Revision 640.4  2005/02/13 04:23:59  ajc
- * Added server and client configuration settings to specify port
-   numbers for IMAPS, POP3S, and SMTPS (SSL-encrypted services that start
-   SSL upon connect instead of using a STARTTLS command).  These services
-   are not yet implemented, only the port number settings are.
-
- Revision 640.3  2005/02/13 03:39:21  ajc
- * IMAP flag twiddling with STORE was broken because of the \Flag leading
-   backslash getting stripped out.  Located problem and worked around.  Said
-   many nasty things about IMAP's gratuitous complexity, particularly the
-   moronic idea to put backslashes in a place where they were completely
-   unnecessary.
-
- Revision 640.2  2005/02/12 16:58:36  ajc
- * Changes to lprintf() and start_daemon() submitted by Kevin Kilbride
-   for more "true unix" approaches to each.
-
- Revision 640.1  2005/02/11 03:51:51  ajc
- * <.A>ide <U>ser-edit is now <.A>ide <U>ser <E>dit
- * Added a new <.A>ide <U>ser <D>elete command, because it is unintuitive
-   to tell people "delete a user by setting their access level to 0"
-
- Revision 640.0  2005/02/10 16:52:18  ajc
- * THIS IS 6.40
-
- Revision 630.16  2005/02/10 16:52:03  ajc
- * Updated documentation etc. for 6.40 release (and for 2005 copyright)
-
- Revision 630.15  2005/02/08 03:33:49  ajc
- * client_gets(char *buf) has been replaced by
-   client_getln(char *buf, int maxbytes)
-
- Revision 630.14  2005/02/05 22:56:31  ajc
- * More reliable handling of conversion of vCard UID to Citadel Extended ID
-   (necessary for GroupDAV URL's to be generated properly in WebCit)
-
- Revision 630.13  2005/02/05 04:13:34  ajc
- * msgbase.c: replication checks for Exclusive-ID no longer cause a save
-   operation to fail when the existing message is newer.  This was causing
-   groupware clients to go haywire because of datestamps being set to
-   event start times, etc.
-
- Revision 630.12  2005/02/03 04:36:56  ajc
- * serv_calendar.c: beforesave hook now looks for the UID inside nested
-   VTODO components, in addition to VCALENDAR components.
-
- Revision 630.11  2005/02/01 23:11:46  ajc
- * new ENT0 syntax now also outputs EUID
-
- Revision 630.10  2005/02/01 19:46:12  ajc
- * Added an SMTP-like calling syntax to ENT0 to allow a confirmation message
-   to be sent back to the client after a message is transmitted.
-
- Revision 630.9  2005/02/01 03:33:22  ajc
- * Changed CtdlRoomAccess() calling syntax in order to return both
-   the access bits and the current view
- * All "list rooms" commands now return the view for each room.
-
- Revision 630.8  2005/01/27 22:05:21  ajc
- * Renamed the "Extended message ID" field to "Exclusive message ID"
-   (nothing changes except documentation and internal variable names)
-
- Revision 630.7  2005/01/27 21:59:22  ajc
- * serv_vcard.c: changed the logic a bit.  When saving a vCard to a user's
-   "My Citadel Config" room, force-feed the vCard a site-compliant UID and
-   FBURL.  When saving a vCard to *any* address book room, set the Citadel
-   EUID to the vCard UID.
-
- Revision 630.6  2005/01/27 17:33:52  ajc
- * The before-save hook in serv_calendar.c now runs for any room with a
-   view of VIEW_CALENDAR or VIEW_TASKS, not just Calendar> and Tasks>.
-
- Revision 630.5  2005/01/26 23:04:22  ajc
- * When saving calendar items, if the vCalendar object does not contain
-   a UUID, generate one on the fly.  In order to support GroupDAV we need
-   persistent URL's, and I plan to base those on the UUID.
-
- Revision 630.4  2005/01/25 20:58:07  ajc
- * serv_pop3.c: minor change to logging output
-
- Revision 630.3  2005/01/25 15:02:12  error
- * Updated SSL/TLS code to actually use the TLS cipher suites
-
- Revision 630.2  2005/01/22 04:15:32  ajc
- * Increased per-thread stack size again, this time to 1MB
-
- Revision 630.1  2005/01/22 03:14:20  ajc
- * Each message's metadata now has the ability to cache the length of
-   the message when output in RFC822 format.  The POP3 service populates
-   this field the first time it sees each message, and fetches the length
-   from cache on subsequent visits.
- * Because of this optimization, we no longer need to keep the entire POP3
-   mailbox stored in open temp files during a session.  Each message is
-   opened again when it is fetched.
-
- Revision 630.0  2005/01/21 20:25:08  ajc
- * THIS IS 6.30
-
- Revision 629.10  2005/01/21 20:24:34  ajc
- * Internal version number is now 6.30
-
- Revision 629.9  2005/01/21 20:20:06  ajc
- * Increase per-thread stack size from 128k to 256k.  This fixes the
-   crashing IMAP service on 64-bit Linux.
-
- Revision 629.8  2005/01/19 20:49:46  ajc
- * Minor fixenbugs after running with Valgrind
-
- Revision 629.7  2005/01/19 03:03:36  ajc
- * Minor and/or cosmetic changes made during x64 troubleshooting
-
- Revision 629.6  2005/01/18 17:58:38  ajc
- * Trying to fix IMAP brokenness on Linux-x64.  Committing changes even
-   though there are a lot of annoying trace messages in this tree, because
-   I did clean up a bunch of stuff here and there.
-
- Revision 629.5  2005/01/14 17:08:30  ajc
- * Applied a configure script fix sent in by David Given for more reliable
-   detection of the installed libical version.
-
- Revision 629.4  2005/01/13 05:43:16  ajc
- * Initial support for having a room participate in a remote mailing list
-
- Revision 629.3  2005/01/09 03:20:41  ajc
- * Applied a patch sent in by David Given for handling of the "&" character
-   plus Unicode characters in IMAP folder names.
-
- Revision 629.2  2005/01/07 15:56:14  ajc
- * msgbase.c: fixed an incorrect variable name in the bigmsg-handler
-
- Revision 629.1  2005/01/07 03:05:04  ajc
- * serv_imap.c: fail with a "BAD" error response if the LOGIN command is
-   called with the wrong number of parameters (otherwise it goes boom)
- * user_ops.c: CtdlLoginExistingUser() was calling strproc() on the supplied
-   name, which killed the ability to log in with your email address (because
-   it stripped the @ symbol).  Changed it to striplt() instead.
-
- Revision 629.0  2005/01/04 03:57:32  ajc
- * THIS IS 6.29
-
- Revision 628.2  2005/01/04 03:57:21  ajc
- * newinstall.sh: save tarball checksums after successful install of each
-   component; skip subsequent installs for components which have not changed
- * Bumped internal version number to 6.29
-
- Revision 628.1  2005/01/04 02:06:28  ajc
- * sysdep.c: if we have enough information to do so, adjust maximum file
-   descriptors to avoid exceeding FD_SETSIZE.  This is done to circumvent
-   a rare but specific vulnerability.
-
- Revision 628.0  2004/12/14 03:16:19  ajc
- * THIS IS 6.28
-
- Revision 627.12  2004/12/12 17:33:24  error
- * sysdep.c: lprintf(): Bug 124: Fix remote format string vulnerability
-   (thanks to coki@nosystem.com.ar)
-
- Revision 627.11  2004/12/01 16:28:58  ajc
- * tools.c: don't crash when striplt() is called with z zero length string
-
- Revision 627.10  2004/11/26 22:44:08  ajc
- * Added a sooper-seekrit way to spool network messages to a remote node
-   where the room has a different name
- * Internal version number is now 6.28, so that WebCit doesn't b0rk the
-   netconfigs of older Citadel servers
-
- Revision 627.9  2004/11/19 02:31:56  ajc
- * Added developer ID # 177
-
- Revision 627.8  2004/11/16 23:04:18  ajc
- * setup.c: added "dovecot" to the list of "other email services" which
-   the setup program can helpfully disable for you.  :)
-
- Revision 627.7  2004/11/12 03:51:42  ajc
- * serv_expire.c: auto-purge any user whose user number is less than 1.
-
- Revision 627.6  2004/11/11 16:21:12  nbryant
- * database_sleepycat.c: make cdb_rewind enforce that cursors must be
-   closed before they can be opened again. (prevents cursors being held
-   open for longer than they should be and holding database locks.)
-
- Revision 627.5  2004/11/11 14:56:16  ajc
- * Further adjustments to ldap setup
-
- Revision 627.4  2004/11/11 04:38:36  ajc
- * setup.c: fix bug that kept creating new inittab entries for slapd
-
- Revision 627.3  2004/11/10 21:33:47  ajc
- * Go to Berkeley DB 4.3.21 in Easy Install
-
- Revision 627.2  2004/11/10 19:59:23  nbryant
-  * configure.ac: detect /usr/local/BerkeleyDB.4.3
-
- Revision 627.1  2004/11/10 03:03:14  ajc
- * Added a few wonderful linebreaks to >80 column lines
-
- Revision 627.0  2004/11/03 20:18:58  ajc
- * THIS IS 6.27
-
- Revision 626.18  2004/11/03 20:18:46  ajc
- * Internal version number is now 6.27
-
- Revision 626.17  2004/11/02 22:59:20  ajc
- * setup.c: fixed an incorrect variable name that was causing inittab
-   twiddling to malfunction.
-
- Revision 626.16  2004/11/02 02:47:10  ajc
- * Easy Install: put the log directly in /tmp instead of in the build
-   directory so it doesn't get deleted on a failed install.
-
- Revision 626.15  2004/10/23 14:33:44  ajc
- * serv_notes.c: finished.  When saving a message in a room whose view
-   is set to "notes," look for an X-KOrg-Note-Id: header, and if one is
-   present, set both the Extended ID and the Subject to that.  This is for
-   Aethera compatibility.
-
- Revision 626.14  2004/10/22 14:49:25  ajc
- * newinstall.sh: Be more careful about locating make/gmake on the host
-   system.  Also now tries to use curl if wget is not available.
-
- Revision 626.13  2004/10/22 02:53:25  ajc
- * serv_notes.c: added skeleton module
- * serv_newuser.c: corrected internal comment
- * techdoc: renamed session.txt to protocol.txt because it really isn't
-   a session layer protocol, it's more of an application layer protocol.
-
- Revision 626.12  2004/10/13 02:11:00  ajc
- * Repaired a completely broken <;Z>ap floor command.
-
- Revision 626.11  2004/10/12 11:24:42  ajc
- * Tracing a problem with ;Z command
-
- Revision 626.10  2004/10/12 02:48:11  ajc
- * Reworked shutdown sequence to avoid thread deadlock
-
- Revision 626.9  2004/10/12 02:17:49  ajc
- * Cleaned up some things that generated compiler warnings
- * crypto keys directory is now relative to the server's working directory,
-   not to the compiled-in CTDLDIR
- * Re-ordered the security checks in CtdlAccessCheck()
-
- Revision 626.8  2004/10/06 21:23:21  error
- * Fixup a few more compiler warnings from icc
-
- Revision 626.7  2004/10/05 01:44:20  ajc
- * Changed a bunch of localtime() calls to localtime_r(), for great justice.
-
- Revision 626.6  2004/10/04 21:40:29  error
- * configure.ac: Add CFLAGS for icc Intel Compiler
-
- Revision 626.5  2004/10/04 21:39:35  error
- * Fix a couple of minor compiler warnings
-
- Revision 626.4  2004/10/03 04:25:23  ajc
- * Removed some vestiges
-
- Revision 626.3  2004/10/03 04:11:48  ajc
- * sysdep.c: in the main server loop, when time_to_die is detected, return
-   immediately instead of falling through to the end of the function.
-
- Revision 626.2  2004/10/03 03:57:32  ajc
- * Added pthread_attr_destroy() in the appropriate location (thanks fleeb!)
-
- Revision 626.1  2004/10/01 15:58:08  ajc
- * Configure "notes" view and auto-create Notes> room
-
- Revision 626.0  2004/09/28 16:11:16  ajc
- * THIS IS 6.26
-
- Revision 625.33  2004/09/28 16:09:58  ajc
- * Update documentation and config files for 6.26 release
-
- Revision 625.32  2004/09/28 02:18:12  ajc
- * Improve output of RECENT flag in IMAP
-
- Revision 625.31  2004/09/23 03:02:31  ajc
- * MyContext() no longer declared INLINE
-
- Revision 625.30  2004/09/23 02:54:46  ajc
- * in MyContext(), reduced the number of calls to pthread_getspecific()
-   from two to one
-
- Revision 625.29  2004/09/23 00:22:18  error
- * rooms.c: create_floor(): Fix the check for whether a floor name was given
-
- Revision 625.28  2004/09/21 02:09:30  ajc
- * Tweaks to above
-
- Revision 625.27  2004/09/21 01:43:23  ajc
- * imap_search.c: when search criteria permit, do not fetch messages.
-
- Revision 625.26  2004/09/17 16:54:13  ajc
- * Updated documentation to include information about setting up MSA 587 port.
-
- Revision 625.25  2004/09/17 04:14:18  ajc
- * serv_network.c: added a missing \n in log output
-
- Revision 625.24  2004/09/17 03:54:47  ajc
- * citadel-openldap.schema: replaced.  Dunno why it was missing.
- * serv_calendar.c: fixed a return with no value for a function returning
-   int; this was causing a before-save hook to abandon messages
-
- Revision 625.23  2004/09/16 01:46:40  ajc
- * CRE8 command: allow setting default view during room creation
-
- Revision 625.22  2004/09/15 03:02:47  ajc
- * Add an SMTP MSA listener (separate port, requires auth)
-
- Revision 625.21  2004/09/13 15:51:59  ajc
- * newinstall.sh: updated from the working version at easyinstall.citadel.org
-
- Revision 625.20  2004/09/11 03:13:04  error
- * Remove calls to the broken flush_output() while I try to figure out what's
-   wrong with it.  Replaced with unbuffer_output() which does work.
-
- Revision 625.19  2004/09/10 02:54:26  ajc
- * Added flush_output() calls to IMAP modules.  (Do we need them?  Are we
-   buffering IMAP output?  Should we?)
-
- Revision 625.18  2004/09/09 02:26:45  ajc
- * Completed (I think) the 'dialog' mode in setup
-
- Revision 625.17  2004/09/08 04:16:07  ajc
- * setup.c: initial changes to use a 'dialog' based setup (yes, it's back,
-   because the b0rken version is now long gone and it appears to be more
-   portable than newt)
-
- Revision 625.16  2004/09/07 04:15:35  error
- * msgbase.c: cmd_msgs(): Call unbuffer_output() when a message list is
-   requested using a search template.
-
- Revision 625.15  2004/09/06 01:11:35  error
- * msgbase.c: cmd_ent0(): Fix another unbuffer_output()
-
- Revision 625.14  2004/09/06 00:59:01  error
- * file_ops.c: cmd_writ(): Add an unbuffer_output() that I forgot.
-
- Revision 625.13  2004/09/05 17:39:09  error
- * Buffered output needs to be flushed in several places.  Added calls to
-   flush_output().  (basically anywhere where we send a response and then
-   wait for the client, except chat, where we turned it off entirely)
-
- Revision 625.12  2004/09/05 15:41:45  error
- * Network optimizations - buffer output server-side for better network
-   utilization; one client-side optimization
-
- Revision 625.11  2004/09/05 15:20:41  error
- * sysdep.c: unbuffer_output(): Split the writing part to a new function
-   flush_output() for more precise control
-
- Revision 625.10  2004/09/03 04:34:30  ajc
- * setup.c: when creating an inittab entry for slapd, use "-d 0" instead
-   of "-d 1" to avoid spewing messages to the console, while still remaining
-   in the foreground.
-
- Revision 625.9  2004/09/03 04:19:17  ajc
- * setup.c: Changes to inittab-twiddling to make it a bit more reliable
- * ipc_c_tcp.c: don't send SIGHUP to children; it makes them very angry
-
- Revision 625.8  2004/09/01 15:34:52  ajc
- * serv_smtp.c: fix build error on hosts with no SSL support
-
- Revision 625.7  2004/08/31 17:31:55  ajc
- * Calendar: store UUID+comment instead of comment as Subject (this was done
-   at the request of Eugen Constantinescu for Aethera optimizations)
-
- Revision 625.6  2004/08/30 02:45:33  ajc
- * setup.c: when running in Newt mode, make the size of the dialogs dynamic
-   to the size of the text in them.
-
- Revision 625.5  2004/08/29 15:18:41  error
- * newinstall.sh: fix detection of gmake/make
-
- Revision 625.4  2004/08/28 14:21:25  error
- * Change the logging level of some messages and add a couple of new ones to
-   show when a network node is connecting.
-
- Revision 625.3  2004/08/28 02:42:44  ajc
- * setup.c: when run from the Easy Install script, auto-configure slapd
-   and put it into /etc/inittab
-
- Revision 625.2  2004/08/28 01:56:38  ajc
- * Generalize some of the inittab-tweaking stuff so that we can use it
-   for slapd, too.
-
- Revision 625.1  2004/08/27 21:39:33  ajc
- * Fleshed out contemplate_ldap() a bit
-
- Revision 625.0  2004/08/27 21:06:30  ajc
- * THIS IS 6.25
-
- Revision 624.8  2004/08/27 20:16:51  ajc
- * Update internal version number to 6.25
-
- Revision 624.7  2004/08/26 04:13:55  ajc
- * newinstall.sh: updated with some new goodies
- * setup.c: when run from Easy Install, offer to set up LDAP.  (Not finished.)
-
- Revision 624.6  2004/08/23 21:41:26  error
- * html.c: Try to something sane with lists
-
- Revision 624.5  2004/08/23 21:40:04  error
- * No longer accept MD5 as a hash when encrypting
-
- Revision 624.4  2004/08/23 21:34:28  error
- * serv_network.c: Suppress Invalid node name for "." and ".."
-
- Revision 624.3  2004/08/16 04:19:14  ajc
- * newinstall.sh: more intelligent auto-run of setup programs
- * setup.c: change inittab question to be more newbie-friendly
-
- Revision 624.2  2004/08/15 05:04:36  ajc
- * newinstall.sh: various tweaks to make it more reliable
-
- Revision 624.1  2004/08/14 03:59:43  ajc
- * newinstall.sh: shuffled around the environment variables to prevent
-   "C compiler cannot generate executables" error.
-
- Revision 624.0  2004/08/12 13:47:47  ajc
- * THIS IS 6.24
-
- Revision 623.16  2004/08/11 04:09:14  ajc
- * Replaced all "Citadel/UX" references with "Citadel"
-
- Revision 623.15  2004/08/05 03:19:48  ajc
- * html.c: handle the <BLOCKQUOTE> tag properly
-
- Revision 623.14  2004/08/05 02:02:33  ajc
- * CtdlHostAlias() now accepts "localhost" as a localhost address.
- * working_ignetcfg is now loaded during incoming NETP commands, which
- should theoretically take care of the missing config problem.
-
- Revision 623.13  2004/08/02 02:51:03  ajc
- * utilsmenu: removed.  Because most of the admin functions have been moved
-   into Citadel proper, what's left of this menu is now pathetic.
- * techdoc/build.txt: removed verbage that referred to the old build system.
-
- Revision 623.12  2004/07/30 03:18:21  ajc
- * user_ops.c: limit the length of the name which can be supplied
-   to CtdlLoginExistingUser() to avoid crashing it.
-
- Revision 623.11  2004/07/28 04:09:58  ajc
- * serv_network.c: we had ignetcfg and working_ignetcfg, but it turns out we
-   no longer use the former anywhere, so it has been removed (along with the
-   aftersave hook that detected changes)
-
- Revision 623.10  2004/07/25 16:20:04  error
- * msgbase.c: CtdlCheckInternetMailPermission(): Do not allow twits to send
-   Internet mail (they shouldn't be sending ANYTHING at all)
-
- Revision 623.9  2004/07/25 16:18:43  error
- * citadel.spec: update version number
-
- Revision 623.8  2004/07/25 16:17:37  error
- * stress.c:  Slightly more verbose output
-
- Revision 623.7  2004/07/25 16:16:19  error
- * citadel_decls.h: fixed the new logoff() macro
-
- Revision 623.6  2004/07/24 05:11:52  ajc
- * citadel.c: temporarily commented out the signal() call for SIGHUP because
-   it is causing the client not to work at all on Linux 2.6 (or at least on
-   Fedora Core 2) when citadel is called as the login shell -- a SIGHUP is
-   mysteriously received at the username prompt and the program exits.
-
- Revision 623.5  2004/07/15 02:54:49  ajc
- * serv_network.c: grab and use a networker-local copy of the network
-   configuration, ensuring that it doesn't accidentally get clobbered while
-   the network is running.
-
- Revision 623.4  2004/07/11 18:41:39  ajc
- * Updated roadmap document slightly
-
- Revision 623.3  2004/07/11 03:59:02  ajc
- serv_network.c: small fix to above
-
- Revision 623.2  2004/07/11 03:50:31  ajc
- * serv_network.c: removed a stray end_critical_section()
- * serv_network.c: purge invalid ignet_push_share entries during
-   netconfig load instead of during rewrite
-
- Revision 623.1  2004/07/10 02:51:01  ajc
- * Changed "policy set" message to "policy has been updated" to make it
-   clearer.
-
- Revision 623.0  2004/07/06 18:15:04  ajc
- * THIS IS 6.23
-
- Revision 622.7  2004/07/06 18:09:13  ajc
- * When writing a message body to the CDB_BIGMSGS table instead of the main
-   message base, increase data length by one byte in order to include the
-   NULL terminator.  (Doh!)
-
- Revision 622.6  2004/07/03 04:09:37  ajc
- * Check the "Permission to send Internet mail" access controls when
-   messages are submitted via Authenticated SMTP.
-
- Revision 622.5  2004/06/28 17:09:20  ajc
- * Properly re-terminate messages posted via IMAP APPEND.  The newline
-   conversion process was shortening the text but not adjusting string
-   termination, causing extra message snippets to appear.
-
- Revision 622.4  2004/06/24 20:38:06  ajc
- * updated serv_vandelay.c to include new "c_ip_addr" config
-
- Revision 622.3  2004/06/24 20:33:37  ajc
- * Bumped internal version number to 6.23
- * Added "Server IP address" to config (server, client, docs)
-
- Revision 622.2  2004/06/24 15:26:33  ajc
- * Updated the ig_tcp_server() function to allow binding to a single IP
-   address.  This is not yet used by anything.
-
- Revision 622.1  2004/06/24 02:34:39  ajc
- * serv_imap.c: when an IMAP socket breaks while a folder is selected,
-   auto-expunge the folder before closing it.  Fixes the "mysteriously
-   reappearing deleted messages" for clients that just drop the session
-   without issuing a CLOSE when the user closes the window.
-
- Revision 622.0  2004/06/19 03:20:22  ajc
- * THIS IS 6.22
-
- Revision 621.19  2004/06/19 03:13:26  ajc
- * Updated internal version number to 6.22
-
- Revision 621.18  2004/06/19 02:35:16  ajc
- *** empty log message ***
-
- Revision 621.17  2004/06/19 02:33:54  ajc
- * Removed the configuration option "Allow Aides access to all mailboxes."
-   This functionality *must* always be enabled for administrative create/edit
-   of vCards, which live in the user's My Citadel Config> room.
-
- Revision 621.16  2004/06/16 04:17:43  ajc
- * More scheduler changes.  Removed the rescan pipe again, and also
-   removed the mutex wrapper around select().  In my initial testing I am
-   getting reliable, fast service, but further testing is needed.
-
- Revision 621.15  2004/06/16 03:13:02  ajc
- * Scheduler fix ... added the rescan pipe back in
-
- Revision 621.14  2004/06/15 20:42:42  ajc
- * Store the body of any large (>1K) message in a separate database.  This
-   will allow fast headers-only retrieval later.
-
- Revision 621.13  2004/06/15 03:05:01  ajc
- * Bumped internal version number to 6.22
- * Added a new faster headers-only mode that excludes enumeration of
-   MIME parts.
-
- Revision 621.12  2004/06/14 19:09:26  ajc
- * serv_vandelay.c: re-inserted a missing line of code for setting tempfile
-   names, which was causing exports to crash.
-
- Revision 621.11  2004/06/11 01:26:02  ajc
- * Optimized the scheduler some more.  The S_I_WANNA_SELECT mutex now
-   wraps only the select() call itself.
-
- Revision 621.10  2004/06/09 03:54:07  ajc
- * The scheduler can now "wake up" a session to deliver async messages.
- * Renumbered the "instant msgs waiting" message and changed its usage
-
- Revision 621.9  2004/06/07 22:12:19  ajc
- * Removed network/filterlist network/mailinglists network/rnews.xref
-   because none of these are used anymore.
-
- Revision 621.8  2004/06/07 16:41:28  ajc
- * Changed "express message" to "instant message" everywhere in the code
-   and documentation, to reflect the now industry-standard terminology for
-   this function.  (Obviously, the server command names have not changed,
-   because that would break everything.)
-
- Revision 621.7  2004/06/06 22:30:10  ajc
- * New session scheduler.  All sessions which select() marks for activity
-   are now handled before select() is called again.
-
- Revision 621.6  2004/06/03 02:49:14  ajc
- * html.c: allow parsing of tags even when they're qualified
-          (i.e. <TAG foo=bar> instead of just <TAG> )
- * html.c: handle escaped decimal characters (such as &#39; for an apostrophe)
-
- Revision 621.5  2004/06/03 02:28:16  ajc
- * citadel_ipc.c: SETR command was missing defaultview and flags2.  Added.
-
- Revision 621.4  2004/05/31 15:19:14  ajc
- * Reworked the security checks for move/copy commands.  Theoretically it's
-   performing all the same checks, but the code is far more readable.
-
- Revision 621.3  2004/05/26 18:13:15  nbryant
- * stress.c: silence warning
-
- Revision 621.2  2004/05/26 16:53:31  nbryant
- * configure.ac: check for /usr/local/BerkeleyDB.4.2
-
- Revision 621.1  2004/05/24 01:59:16  ajc
- * serv_network.c: when processing incoming IGnet spool, give the <C> field
-   priority over the <R> field.  This allows messages emailed to a network
-   room to be shared properly instead of attempting to deliver via email a
-   second time.
-
- Revision 621.0  2004/05/21 01:58:16  ajc
- * THIS IS 6.21
-
- Revision 620.35  2004/05/20 16:14:08  ajc
- * Changed internal version number to 6.21
- * Added missing VIEW_* defines in citadel.h (they're used only by WebCit
-   for now, which is why Citadel didn't need them, but they should be there
-   anyway for completeness)
- * Removed the last vestiges of the built-in spam filter.  It had been
-   commented out, but it's definitely never coming back now, so away it goes.
- * Updated some of the docs
-
- Revision 620.34  2004/05/15 14:19:52  error
- * Scheduler: when next_session is to be deleted, make it point to some
-   other session which isn't being deleted (or NULL if there aren't any).
-
- Revision 620.33  2004/05/14 03:09:54  ajc
- * When a session kills itself (for example, due to a broken socket),
-   force the dead_session_purge() to run immediately.  This avoids
-   thousands of error messages for up to the next five seconds while it
-   waits for the next purge.
- * For the main select() loop, we can now recover from EBADF by jumping
-   back to the code that scans for valid descriptors.  (Yeah, I used a
-   goto.  It's more readable that way, so STFU if you have a problem with
-   it.)
-
- Revision 620.32  2004/05/11 15:21:45  nbryant
- * configure.ac: check for <sys/prctl.h>
- * server_main.c: call prctl(PR_SET_DUMPABLE, 1) if we are dropping root
-   permissions.
- * sysdep.c: no longer call setrlimit(RLIMIT_CORE, ...); this can be handled
-   from a shell script.
-
- Revision 620.31  2004/05/10 01:47:11  error
- * messages.c: Fix crash when trying to use m<Y> next
-
- Revision 620.30  2004/05/07 20:27:46  ajc
- # citadel-openldap.schema: updated to include RFC2739 objects & attributes
-
- Revision 620.29  2004/05/07 19:31:40  ajc
- * More RFC2739 compliance: when converting vCard to LDAP, include
-   the calFBURL attribute.
-
- Revision 620.28  2004/05/07 19:09:07  ajc
- * Implemented partial RFC2739 compliance (calendar free/busy URL in vCard).
-   Still need to add it to LDAP.
-
- Revision 620.27  2004/05/07 18:17:26  ajc
- * Scrawled some notes in roadmap.txt
-
- Revision 620.26  2004/05/06 03:38:26  ajc
- * Never reduce the size of the thread pool, only increase it (still
-   observing the max ceiling, of course)
- * Don't explicitly call RemoveContext() when a session exits.  The
-   subsequent call to dead_session_purge() will handle it.
-
- Revision 620.25  2004/05/03 00:12:27  ajc
- * Found and removed a bug that caused network rooms to be un-shared with
-   all nodes instead of only with nodes that no longer exist.
- * New target "make upgrade" (to be consistent with other projects)
-
- Revision 620.24  2004/04/29 02:37:58  ajc
- * Updated the roadmap
-
- Revision 620.23  2004/04/26 15:11:17  ajc
- * Enable core dumps regardless of system ulimit setting
-   (maybe temporary until we fix BOOM)
-
- Revision 620.22  2004/04/23 17:27:50  ajc
- * user_ops.c: do not attempt to save the loaded user record into the
-   supplied buffer, when the supplied buffer is NULL.  (This calling
-   syntax is used to check for the existence of a user without storing it.)
-
- Revision 620.21  2004/04/21 03:44:50  ajc
- * serv_crypto.c: small fix to make self-signed certs no longer invalid
-
- Revision 620.20  2004/04/21 03:00:06  ajc
- * Replace ctdl_install_certificate() with convenience functions found
-   in the OpenSSL library.
-
- Revision 620.19  2004/04/20 02:42:54  ajc
- * techdoc/binaries.txt : updated, now includes WebCit instructions
- * setup.c: detect when setup is run from within the Citadel Ridiculously
-   Easy Installer and skip the directory prompt; the installer sets it.
-
- Revision 620.18  2004/04/14 18:43:51  nbryant
- * citadel.spec: BuildRequire redhat-rpm-config
-
- Revision 620.17  2004/04/14 16:16:47  nbryant
- * citadel.spec: don't BuildRequire newt-devel
-
- Revision 620.16  2004/04/14 03:42:01  ajc
- * ICAL FREEBUSY output now includes ORGANIZER, DTSTART, and DTEND fields.
-   (Required for Kolab compatibility.)
-
- Revision 620.15  2004/04/13 23:53:00  nbryant
- * citadel.spec: BuildRequire bison
-
- Revision 620.14  2004/04/13 22:44:35  nbryant
-  * citadel.spec: commented out Icon line and the openldap-servers dependency.
-  * citadel.spec: added several BuildRequires. Some of these are, strictly
-    speaking, compile time options, but the goal is to document the runtime
-    dependencies and make sure our RPM's are always built consistently.
-
- Revision 620.13  2004/04/13 21:09:20  error
- * citadel.spec: Updated for 6.20p1
-
- Revision 620.12  2004/04/13 18:31:40  ajc
- * serv_calendar.c: ICAL FREEBUSY command now tries the supplied name not
-   only as a screen name, but as an email address, and then as an
-   unqualified email address in every hosted domain.  (For Kolab compat)
-
- Revision 620.11  2004/04/13 02:45:07  ajc
- * Don't display the "Ending SSL/TLS" log message unless TLS is actually present
-
- Revision 620.10  2004/04/12 20:51:40  error
- * citadel.lsm: Update LSM for 6.20p1; uploaded to ibiblio.org
-
- Revision 620.9  2004/04/09 23:11:01  error
- * serv_chat.c: Differentiate when a user does not exist when paging users.
-
- Revision 620.8  2004/04/09 23:05:52  error
- * user_ops.c: fix unused variable compiler warnings
-
- Revision 620.7  2004/04/03 15:42:35  ajc
- * stress.c: include <stdlib.h> in order to get RAND_MAX
-   (Submitted by Thomas.Lotterer@cw.com, Cable & Wireless / OpenPKG)
-
- Revision 620.6  2004/04/01 04:41:55  ajc
- * Put some blankety-blank values in the default generated vCard so it's
-   more acceptable to LDAP conversion
-
- Revision 620.5  2004/03/31 02:19:09  ajc
- * Change the IMAP folder delimiter from "|" to "/" because more than a few
-   client programs don't follow RFC2060 strictly enough to work with
-   non-"/" delimiters.  Actual slashes in room names appear as "|" in IMAP.
-
- Revision 620.4  2004/03/30 03:11:07  ajc
- * control.c: when config.c_maxsessions is unset or negative, set it to 0
-   instead of setting it to 1 when it is 0 or negative.  The default should
-   be unlimited sessions.
-
- Revision 620.3  2004/03/29 16:05:02  ajc
- * begin_critical_section() -- bypass transaction checking for S_FLOORCACHE
-   sections, to avoid crashing the db layer
-
- Revision 620.2  2004/03/29 02:33:19  error
- * citadel.spec: major modifications for 6.xx (hasn't been updated since 5.xx)
-
- Revision 620.1  2004/03/27 23:04:59  error
- * citadel.lsm: update version number, sending to ibiblio
-
- Revision 620.0  2004/03/27 02:33:26  ajc
- * THIS IS 6.20
-
- Revision 614.105  2004/03/27 02:33:10  ajc
- * Bumped the version number to 6.20
- * Corrected session.txt writeup for CONF command (three of the five LDAP
-   related fields were missing)
- * Updated the roadmap documentation slightly
-
- Revision 614.104  2004/03/27 02:21:30  ajc
- * Completed documenting the LDAP Connector
-
- Revision 614.103  2004/03/26 05:41:25  ajc
- * Began writing up the LDAP Connector for Citadel in the documentation
-
- Revision 614.102  2004/03/26 05:40:47  ajc
- *** empty log message ***
-
- Revision 614.101  2004/03/26 05:13:15  ajc
- * citadel-slapd.conf: comment out the reference to the Citadel schema
-   and add "schemacheck off" to make it easier to get started with the
-   Citadel LDAP connector.  Also made the backend in the sample conf
-   ldbm instead of bdb, because that's what RH9 ships with.
-
- Revision 614.100  2004/03/24 21:23:50  ajc
- * msgbase.c: repaired a memory leak
-
- Revision 614.99  2004/03/24 17:07:11  ajc
- * Put a new memory leak checker into the server because it turns out that
-   the third-party ones all suck.  :)  This one doesn't involve renaming
-   all of the malloc() related functions, though.
-
- Revision 614.98  2004/03/24 15:04:06  ajc
- * stress.c: fix "wrong password" race condition by giving the very
-   first worker thread time to finish creating the user account before the
-   other threads start using it.  (Ok, I fixed it by creating a different
-   race condition, but if your Citadel takes more than three seconds to
-   create an account, your problems can't be fixed with the stress tester.)
-
- Revision 614.97  2004/03/24 03:46:40  ajc
- * Reorg header stuff to make it more compatible with leak checkers
-
- Revision 614.96  2004/03/24 03:25:19  ajc
- * Removed the built-in memory leak checker.  It wasn't threadsafe and
-   there now exist third-party utilities that do this job better.
-
- Revision 614.95  2004/03/24 02:59:19  ajc
- * After initializing the database, chown and chmod all files in the data/
-   directory correctly to avoid EPERM errors later on when we drop root privs
-
- Revision 614.94  2004/03/22 19:37:28  error
- * sysdep.c: worker_thread(): Make scheduling a little more fair to higher
-   sessions
- * sysdep.c: lprintf(): Enable microsecond display in trace file
- * stress.c: worker(): Sleep for random amount of time as per specification
-
- Revision 614.93  2004/03/21 22:51:54  error
- * Fix a few remaining lprintf(9, ...) to lprintf(CTDL_DEBUG, ...)
-
- Revision 614.92  2004/03/21 22:35:20  error
- * stress.c: Wait before posting instead of after posting.
-
- Revision 614.91  2004/03/21 22:34:41  error
- * database_sleepycat.c: emit a panic message when Berkeley DB wants us to
-   run recovery; should provide a little more detail on the actual error
-
- Revision 614.90  2004/03/21 22:32:24  ajc
- * room_ops.c: increased the thread safety of cgetfloor()
- * housekeeping.c: check floor reference counts in two passes instead of
-   trying to manipulate multiple tables in O^2
-
- Revision 614.89  2004/03/21 17:14:46  error
- * stress.c: Fixed.  Now properly spawns threads and stresses out your
-   favorite Citadel server by simulating large numbers of really active
-   users.  (It's configurable on the command line, too, to vary the stress
-   level.)  Don't use it against a production system!  You've been warned!
-
- Revision 614.88  2004/03/21 17:13:15  error
- * configure.ac: Fix for defines for pthreads not being included properly
-
- Revision 614.87  2004/03/21 06:15:06  ajc
- * docs/citadel.html: documented TLS support and administration procedures
-
- Revision 614.86  2004/03/20 22:32:06  ajc
- * citadel.rc: changed the comments around local_screen_dimensions= to
-   reflect its legacy type of situation
-
- Revision 614.85  2004/03/16 22:44:15  ajc
- * Better conversion of friendly name to fully qualified vcard name
-
- Revision 614.84  2004/03/16 21:09:37  ajc
- * Eliminate EVT_OUTPUTMSG server extensions (don't need them anymore)
- * Add EVT_NEWUSER server extensions
- * EVT_NEWUSER and EVT_PURGEUSER server extensions now specify a
-   struct ctdluser * instead of a username and usernum
- * serv_vcard.c: automatically create and submit a skeleton vCard when
-   a new user is created.
-
- Revision 614.83  2004/03/16 19:05:50  error
- * Further changes to stress.c, Makefile.in to build it, .cvsignore
-   (but it's still broken)
-
- Revision 614.82  2004/03/15 18:11:34  error
- * stress.c: various fixed/improvements (but it still isn't working)
-
- Revision 614.81  2004/03/15 17:22:14  error
- * First draft of the stress tester.  Isn't quite ready (it needs to be
-   tested itself!).
-
- Revision 614.80  2004/03/15 16:48:22  error
- * Documentation update: update citadel.html for new syslog logging
-
- Revision 614.79  2004/03/15 16:47:04  error
- * msgbase.c: cmd_move(): Fix the security logic for non-aides trying to
-   move or copy messages.  The logic should do the following:
-   * Allow move/copy for Aides
-   * Allow regular users to:
-     * Move a message between two personal rooms
-     * Copy a message from a Personal room to a room the user is subscribed to
-     * Copy a message from a room the user is subscribed to, to a personal room
-   * Prohibit other moves/copies
-
- Revision 614.78  2004/03/15 16:39:27  error
- * Multiple files: Set permissions on existing Citadel directories to prevent
-   access to the database by local unix users to prevent direct database reads.
-
- Revision 614.77  2004/03/15 16:36:50  error
- * Multiple files:  Convert most remaining client code to use new Citadel IPC
-   functions.  A few bits remain and will be converted when the chat system
-   is rewritten.
-
- Revision 614.76  2004/03/14 06:35:46  ajc
- * Cache IMAP "BODY" fetches in an already-converted format.  This speeds
-   up clients like Mozilla and Thunderbird that request big messages in
-   chunks -- we don't have to load and convert the message every time
-   another chunk is requested.
- * Fixed a potential memory leak in fetch
-
- Revision 614.75  2004/03/13 23:26:10  ajc
- * imap_fetch.c: don't fetch the message from disk at all for UID and FLAGS
-   fetch items.  (It's rare, but sometimes IMAP optimizations are actually
-   possible, despite IMAP's brain-dead design!)
-
- Revision 614.74  2004/03/13 22:52:05  ajc
- * Documented the GNET and SNET commands  :)
-
- Revision 614.73  2004/03/12 19:35:13  error
- * routines2.c: Fix two typos
-
- Revision 614.72  2004/03/12 19:32:09  error
- * routines2.c: Convert multiple functions to use new IPC code (almost done!)
-
- Revision 614.71  2004/03/12 19:30:06  error
- * citadel.c: main(): Fix error response for RCHG, HCHG and UCHG commands.
-
- Revision 614.70  2004/03/12 19:28:04  error
- * Implement GNET/SNET commands in IPC code; provide a CtdlIPC_delete();
-   emit warnings when client code uses CtdlIPC_getline() or CtdlIPC_putline()
-   (These are reserved and should not be used by client code.)
-
- Revision 614.69  2004/03/10 04:50:04  ajc
- * serv_expire.c: auto-purge any Citadel account that is associated with
-   a Unix account that no longer exists.
-
- Revision 614.68  2004/03/09 20:46:33  error
- * Add a Linux Software Map file
-
- Revision 614.67  2004/03/08 05:26:49  ajc
- * When the last argument of an IMAP APPEND command is a binary literal
-   (i.e. all the time), the client will still be sending a CRLF after the
-   literal.  Added an extra client_read() after the message input to absorb
-   that extra CRLF, to keep client and server from getting out of sync.
-
- Revision 614.66  2004/03/06 05:09:04  ajc
- * serv_smtp.c: don't offer the STARTTLS extension if TLS is already
-   active.  Done for to-the-letter compliance with RFC2487.
-
- Revision 614.65  2004/03/06 02:03:39  ajc
- * serv_smtp.c: do not offer the PIPELINING extension when TLS is
-   running.  Doing so causes sessions to hang unexpectedly.
-
- Revision 614.64  2004/03/05 23:21:25  ajc
- * Added some more debugging to serv_smtp.c to try to figure out the
-   problem with Postfix TLS hanging during send
-
- Revision 614.63  2004/03/05 03:36:03  ajc
- * Remove the automatic population of A and N fields we recently added
-   when found to be NULL.  It was confusing the output functions into
-   thinking that Internet messages were local.
-
- Revision 614.62  2004/03/03 05:43:29  ajc
- * Generate better output when a user is kicked out of chat
-
- Revision 614.61  2004/03/01 22:36:14  ajc
- * Implement the NAMESPACE extension of IMAP (RFC 2342)
-
- Revision 614.60  2004/03/01 17:47:28  error
- * Fix missing arg in m<Y> next rewrite.
-
- Revision 614.59  2004/03/01 17:33:30  error
- * Rewrite m<Y> next function; now uses CtdlIPC code.
-
- Revision 614.58  2004/03/01 04:08:34  ajc
- * Revoke access to room when /kicked
-
- Revision 614.57  2004/02/29 23:26:48  ajc
- * Added /kick command to chat.  /ban coming soon.
-
- Revision 614.56  2004/02/28 16:37:41  ajc
- * setup.c: removed an unused temp file name variable
-
- Revision 614.55  2004/02/27 17:23:21  error
- * Use syslog-compatible logging levels in lprintf(); the loglevel chosen
-   is passed directly to syslog().  The available levels are docuemnted in
-   sysdep_decls.h.
-
- Revision 614.54  2004/02/27 04:29:00  ajc
- * Fixed a bug in PLAIN authentication
-
- Revision 614.53  2004/02/26 22:03:24  error
- * ;Goto floor now goes to first KNOWN room, or first room only if no known
-   rooms on the floor
-
- Revision 614.52  2004/02/26 20:30:36  error
- * Populate IPC into a few more places to avoid a nasty crash at MORE prompt
-
- Revision 614.51  2004/02/26 20:17:29  error
- * Client stability and enhancements:
-   * CtdlServInfo structure moved inside CtdlIPC; eliminates unnecessary
-     global and makes IPC more self-contained
-   * Removed redundant serv_ from variable names in CtdlServInfo struct
-   * Send SIGHUP to process group when connection_died().  Kills self and
-     children (e.g. external editor).
-
- Revision 614.50  2004/02/25 01:35:34  error
- Missing parameter to a printf() function.  No idea where it went, but I
- put it back.
-
- Revision 614.49  2004/02/24 05:09:06  ajc
- * Better validation of incoming network messages.
-
- Revision 614.48  2004/02/23 16:10:47  nbryant
- --disable-pie by default.
-
- Revision 614.47  2004/02/22 04:55:15  ajc
- * CSR code more or less in its final form for now.
-
- Revision 614.46  2004/02/22 04:42:05  ajc
- * Initial version of function to automatically generate a Certificate
-   Signing Request if one is not present
-
- Revision 614.45  2004/02/20 19:29:05  error
- * Fix bug 112: .Goto allowed partial room match on forgotten rooms
-
- Revision 614.44  2004/02/20 02:55:18  ajc
- * Fixed one of the prompts (bugzilla #118)
-
- Revision 614.43  2004/02/19 04:12:56  ajc
- * Instead of doing the silly "Kolab reserved folder names" thing, instead
-   implemented the Cyrus-compatible style of forcing all personal mailbox
-   folders to be subfolders of INBOX.  But only for IMAP.
-
- Revision 614.42  2004/02/18 14:46:05  ajc
- * smtp: EHLO response now includes both "AUTH " and "AUTH=" output, due to
-   the requirement to interoperate with brain-dead Microsoft shitware that
-   doesn't follow the RFC.
-
- Revision 614.41  2004/02/17 16:56:51  ajc
- * During SSL initialization, create the "keys" directory if it does not
-   exist ... generate a private key if that does not exist ... more code
-   coming soon to generate CSR and self-signed cert.  Hard-coded pathnames
-   have been moved to sysconfig.h.
-
- Revision 614.40  2004/02/17 04:47:22  ajc
- * Support PLAIN auth method in SMTP
-
- Revision 614.39  2004/02/17 03:53:11  ajc
- * New ICAL subcommand "sgi" to enable or disable automatic server
-   generated invitations.  (WebCit wants sgi's but Kontaqt doesn't.)
-
- Revision 614.38  2004/02/16 21:54:22  ajc
- * Support POP3 over TLS
-
- Revision 614.37  2004/02/16 21:45:43  ajc
- * Implement RFC 2487 - SMTP Service Extension for Secure SMTP over TLS
-
- Revision 614.36  2004/02/16 21:02:28  ajc
- * IMAP and Citadel protocols now use the same code path for TLS negotiation
-
- Revision 614.35  2004/02/16 20:55:47  ajc
- * Genericized the Citadel API for TLS-enabling protocols
-
- Revision 614.34  2004/02/16 18:16:39  error
- * Remove some unnecessary and possibly hazardous debugging code leftover
-   from debugging IMAP STARTTLS
-
- Revision 614.33  2004/02/16 18:14:00  error
- * Fixed IMAP STARTTLS; trouble was in client_read_ssl the whole time.
-   It should now be possible to implement SSL/TLS for any protocol.
-
- Revision 614.32  2004/02/16 18:13:10  error
- * Log session IDs in syslog as well as stderr
-
- Revision 614.31  2004/02/16 15:06:44  error
- * Add specific error codes for every command on the wire protocol, so that
-   clients can more easily determine what went wrong.  Partially updated
-   session.txt (will finish it later).  This lets clients more easily
-   determine what, if anything, went wrong with a particular command.
-
- Revision 614.30  2004/02/15 06:06:49  ajc
- * More work on IMAP TLS.  Still not working correctly.  :(  Added in
-   support for server-side certificates.  Now instead of failing it hangs.
-
- Revision 614.29  2004/02/14 04:41:55  ajc
- * STARTTLS attempt #2.  Still disabled because it's broken.
-
- Revision 614.28  2004/02/13 20:51:13  error
- * Reset screen attributes before fork() so that external programs do the
-   right thing
-
- Revision 614.27  2004/02/12 04:16:38  ajc
- * Support for PLAIN logins in IMAP (need to test!)
-
- Revision 614.26  2004/02/11 03:50:49  ajc
- * The groupware folders "Calendar", "Contacts", "Notes", and "Tasks" are
-   now presented as subfolders of INBOX when using IMAP.  This is for the
-   purpose of Kolab compatibility.
-
- Revision 614.25  2004/02/09 22:40:57  error
- * oops...also close the client on EOF/error on tty OUTPUT
-
- Revision 614.24  2004/02/09 22:26:17  error
- * Exit the citadel client when EOF reached on input - should prevent
-   a process from hanging around when a telnet connection dies unexpectedly
-
- Revision 614.23  2004/02/08 05:29:34  ajc
- * Corrected various small syntax conversion problems that were keeping
-   some vCards out of the LDAP directory.
-
- Revision 614.22  2004/02/07 05:28:10  ajc
- * Automatically purge files from ./network/spoolout which were intended
-   for nodes which no longer exist
-
- Revision 614.21  2004/02/07 04:59:21  ajc
- * Cache the IGnet config in memory, avoiding a db fetch for every single
-   operation which references it.  Invalidate the cache when a new config
-   is uploaded.
- * When doing network spool for a room, automatically remove shares for
-   Citadel nodes which no longer exist.
-
- Revision 614.20  2004/02/07 04:22:12  ajc
- * serv_network.c: fixed a problem with an uninitialized data structure
-
- Revision 614.19  2004/02/06 04:40:50  ajc
- * Suppress posting of messages to Aide> when the loopzapper catches dupes.
- * New command NSYN to sync the entire contents of a room to a specified
-   network node.  This will be used to bring new nodes in sync with existing
-   nodes.
-
- Revision 614.18  2004/02/06 03:58:10  ajc
- * Added some comments to the sample citadel-slapd.conf
-
- Revision 614.17  2004/02/06 03:52:46  ajc
- * Changed the domain name and password in the sample slapd.conf
-
- Revision 614.16  2004/02/05 05:20:20  ajc
- * Delete a user's LDAP entry when deleting the vCard.  NOT TESTED.
-
- Revision 614.15  2004/02/05 03:54:14  ajc
- * Completed the per-user initialization of LDAP entries.
-
- Revision 614.14  2004/02/04 18:27:25  error
- * Don't delete temp file when composing message until after server writes
-   it successfully (or an error occurs in the client itself).
-
- Revision 614.13  2004/02/04 04:07:56  ajc
- * More work on LDAP connector
-
- Revision 614.12  2004/02/01 06:19:22  ajc
- * policy.c: fix bug in GetExpirePolicy() that was causing the default
-   mailbox purge policy to be misinterpreted if it was set to "use
-   system default"
- * serv_vcard.c: always set the Global Address Book room's expire policy
-   to "never expire" and its default view to "address book"
-
- Revision 614.11  2004/01/31 05:44:29  ajc
- *** empty log message ***
-
- Revision 614.10  2004/01/27 19:56:29  ajc
- * serv_smtp.c: HELO and EHLO responses now reply with the detected
-   IP address and reverse DNS lookup of the connecting host
-
- Revision 614.9  2004/01/24 05:47:50  ajc
- * Got Citadel talking to LDAP.  Still requires manual creation of schema
-   and container entries, which I don't like; we'll have to fix that.  It
-   also does not yet populate all fields.
-
- Revision 614.8  2004/01/19 21:01:15  error
- * Clear out the autom4te.cache when bootstrapping to avoid autoheader problems
-
- Revision 614.7  2004/01/19 04:44:11  ajc
- * Further work on creating LDAP entries.
-
- Revision 614.6  2004/01/18 21:04:40  ajc
- * Reworked vCard etc. functions for addition of new vCard data to LDAP
-
- Revision 614.5  2004/01/17 22:57:54  ajc
- * Added "Base DN" "Bind DN" and "Bind DN password" config options
- * serv_ldap.c: added.  (New module implementing the LDAP Connector)
- * Upon startup, connect to LDAP directory and bind to it.  Unbind at exit.
-
- Revision 614.4  2004/01/17 04:23:28  ajc
- * Sysconfig commands for specifying where the LDAP server lives
-
- Revision 614.3  2004/01/17 03:26:17  ajc
- * Changed a diagnostic in msgbase.c to a higher logging level so it doesn't
-   make as much noise.
- * Setup now adds "-x3 -llocal4" to the default inittab line.
-
- Revision 614.2  2004/01/17 03:17:34  ajc
- * New server command-line option "-l" to send log output to the host
-   computer's syslog facility instead of to a trace file.
-
- Revision 614.1  2004/01/02 22:13:59  ajc
- * Link to OpenLDAP client library (-lldap) and set HAVE_LDAP if present.
-
- Revision 614.0  2003/12/30 04:13:40  ajc
- * THIS IS 6.14
-
- Revision 613.12  2003/12/30 04:13:31  ajc
- * Commented out one of the supplied .RU commands in citadel.rc
-
- Revision 613.11  2003/12/24 05:02:49  ajc
- * Allow a separate default message expire policy for mailbox rooms.  The
-   floor default setting is now ignored for mailboxes.  Updated client and
-   documentation to match.
-
- Revision 613.10  2003/12/23 03:53:49  ajc
- * Expanded the size of all string fields in "struct CtdlIPCMessage" to
-   the standard SIZ length, in order to accomodate "weird" messages
-   without crashing.  Also converted many strcpy()'s to safestrncpy()'s
-   while populating this data structure, to avoid overruns.
-
- Revision 613.9  2003/12/22 16:49:36  error
- * Add Preview for Mac OS X as an image viewer option in citadel.rc
-
- Revision 613.8  2003/12/22 15:30:53  error
- * Fork image viewer process in background (works now); suppress
-   stdout/stderr from the image viewer
-
- Revision 613.7  2003/12/21 20:02:28  error
- * When viewing images, append the image filename to the temp filename so
-   that less-intelligent viewers can deal with the images
-
- Revision 613.6  2003/12/21 19:07:28  error
- * Start a new thread and fork() for image viewer (broken/disabled; for
-   refernce only)
-
- Revision 613.5  2003/12/21 01:23:12  nbryant
- added some additional comments to citadel.rc concerning possible image viewers
-
- Revision 613.4  2003/12/21 00:44:19  error
- * Fix for idle_threshold being ignored when reading citadel.rc
-
- Revision 613.3  2003/12/21 00:37:54  error
- * Fix for crash when downloading multiple attachments
-
- Revision 613.2  2003/12/21 00:19:41  error
- * Image viewer code for the text client.  Hit 'I' to view an image
-   attached to a file.  Hey aahz, this code actually works!
-
- Revision 613.1  2003/12/19 04:33:52  ajc
- * Changes to auto-expunge algorithm to support correct behavior in
-   some IMAP clients while moving messages.
-
- Revision 613.0  2003/12/15 16:37:01  ajc
- * THIS IS 6.13
-
- Revision 612.14  2003/12/15 16:33:47  ajc
- * Added support for "Cc" and "Bcc" IMAP SEARCHes
- * Bumped the version number to 6.13
-
- Revision 612.13  2003/12/11 04:21:23  ajc
- * Removed a "FIXME this needs blah blah" comment because blah blah has
-   since been completed
-
- Revision 612.12  2003/12/11 04:06:55  nbryant
- configure.ac: add support for position-independent executables. can be disabled
- with --disable-pie
-
- Revision 612.11  2003/12/11 03:44:18  nbryant
- domain.c: include <arpa/nameser_compat.h> if present
- configure.ac: check for <arpa/nameser_compat.h>
-
- Revision 612.10  2003/12/10 03:58:26  ajc
- * Completed a more accurate implementation of the ENVELOPE fetch in IMAP.
-
- Revision 612.9  2003/12/09 06:39:19  nbryant
- did a minimal amount of ANSIfication without changing anything that would
- affect the compiler output in any way. I was just trying to get enough warnings
- enabled to be able to tell if there are any nested functions lurking about...
-
- If we get rid of nested functions we can get some big security gains under
- Fedora.
-
- Revision 612.8  2003/12/09 05:12:49  ajc
- * Don't give away anonymous poster information in IMAP or RFC822
-
- Revision 612.7  2003/12/09 04:50:16  ajc
- * Painstakingly combed through IMAP headers and responses for two hours in
-   an attempt to figure out why the horrendous pile of crap called Microsoft
-   Outlook counts the correct number of messages but wasn't displaying any
-   of them.  Eventually determined that it was ONE EXTRA SPACE after the
-   closing paren of the ENVELOPE output that caused Outlook to totally ignore
-   all the messages.  This only reinforces my belief that anything designed
-   in the state of Washington is utter and complete CRAP.
- * Corrected the above glitch.  Outbreak works properly now.
-
- Revision 612.6  2003/12/09 03:56:29  ajc
- * user_ops.c: missing string declaration or something?
-
- Revision 612.5  2003/12/08 17:41:01  ajc
- * serv_smtp.c: validated and documented compliance with a big pile of RFC's
-   which are in one way or another related to SMTP.
-
- Revision 612.4  2003/12/07 19:59:13  error
- * Minor enhancements to a few of the trace file entries
-
- Revision 612.3  2003/12/07 19:57:48  error
- * Added some useless comments to some of the techdocs/ files
-
- Revision 612.2  2003/12/07 19:56:24  error
- * CREU command now allows specification of an initial password
-
- Revision 612.1  2003/12/04 04:20:08  ajc
- * Incoming RFC822 messages get the To: field translated directly to
-   a Citadel <R> field.
-
- Revision 612.0  2003/12/01 04:11:48  ajc
- * THIS IS 6.12
-
- Revision 611.10  2003/11/30 03:43:34  ajc
- * Support IMAP \Answered flag
-
- Revision 611.9  2003/11/22 03:30:14  ajc
- * Commented out the call to the 'high speed download' function and
-   uncommented the call to the original 'chatty' download function.  Some
-   users were reporting lockups.
-
- Revision 611.8  2003/11/14 20:15:44  ajc
- * Reversed the previous change because it made things b0rken
-
- Revision 611.7  2003/11/14 20:04:28  ajc
- * IMAP FETCH ENVELOPE now outputs more fields correctly.
-
- Revision 611.6  2003/11/14 03:49:54  ajc
- * MUCH faster implementation of rfc822_fetch_field()
-
- Revision 611.5  2003/11/13 04:25:38  ajc
- * mime_parser.c: handle multipart *much* more efficiently now.  Instead
-   of scanning line by line, we snag the boundaries using the Boyer-Moore
-   algorithm.
-
- Revision 611.4  2003/11/12 04:28:22  ajc
- * Replaced bmstrcasestr() with a more generic function, bmstrstr(), which
-   can be supplied with *any* strncmp()-compatible compare function.
-
- Revision 611.3  2003/11/08 06:46:08  ajc
- * IMAP FETCH BODY<xxx.yyy> was outputting the offset and length in the
-   wrong order.  Fixed.
-
- Revision 611.2  2003/11/08 06:29:47  ajc
- * IMAP FETCH FLAGS ... removed extra trailing space after last flag
-
- Revision 611.1  2003/11/06 04:25:30  ajc
- * For certain IMAP outputs (such as BODYSTRUCTURE), buffer all output until
-   we've got the whole thing, then spew it all at once to avoid lots of
-   tiny TCP packets.
- * New API calls buffer_output() (to start buffering) and unbuffer_output()
-   (to dump the buffer and stop buffering) are available to do this.
-
- Revision 611.0  2003/10/21 04:20:41  ajc
- * THIS IS 6.11
-
- Revision 610.22  2003/10/17 02:18:40  ajc
- * Replaced the DEFAULT_ENTRY definition in sysconfig.h with a new option
-   "reply_with_external_editor" in citadel.rc.
-
- Revision 610.21  2003/10/14 03:09:47  ajc
- * routines2.c: fixed an off-by-one error in filename sanitization for
-   client file uploads
-
- Revision 610.20  2003/10/10 05:43:57  ajc
- * citadel.c:  Reworded one of the prompts
-
- Revision 610.19  2003/10/07 15:56:17  ajc
- * Better handling of incoming Internet addresses consisting of an address
-   in angle brackets with no name outside the brackets.
-
- Revision 610.18  2003/09/21 04:10:56  ajc
- * messages.c: don't crash when a message contains more than MAXURLS of
-   embedded URL's.  Omit them instead.
- * citadel.rc: updated the sample browser remoting command for Macintosh
-   based on a Mr.T suggestion
- * techdoc/session.txt: redid the writeup for the MOVE command (fixed a
-   mistake and made the writeup clearer)
-
- Revision 610.17  2003/09/17 21:40:13  ajc
- * html.c: don't truncate messages when wacky characters are
-   encountered.  Substitute '?' characters instead.  Now the Citadel
-   community can complain about b0rken MS ASCII.
-
- Revision 610.16  2003/09/13 02:53:04  ajc
- * More intelligent selection of directory to save attachments
-
- Revision 610.15  2003/09/12 15:48:55  ajc
- * serv_smtp.c: remember whether we're SMTP or LMTP across a RSET command.
-
- Revision 610.14  2003/09/09 02:42:28  ajc
- * Documentation update for LMTP
-
- Revision 610.13  2003/09/09 01:47:02  ajc
- * Suppress domain forgery check when using LMTP
-
- Revision 610.12  2003/09/08 18:48:14  ajc
- * The unix domain socket used for citmail to talk to citserver now
-   implements LMTP (RFC2033).  Other LMTP client implementations (such as
-   Postfix) can also use the socket, eliminating the need for citmail.
-
- Revision 610.11  2003/09/07 03:29:25  ajc
- * serv_network.c: aggressively poll any node for which we have data
-
- Revision 610.10  2003/09/06 02:04:54  ajc
- * Don't reset "last poll" time when not doing the "full" net processing
-
- Revision 610.9  2003/09/03 03:29:01  ajc
- * syslog messages now say session started/ended instead of ended/ended
-
- Revision 610.8  2003/09/03 03:24:40  ajc
- * client: remove rooms from the march list when zapping them (or the floors
-   they're on)
-
- Revision 610.7  2003/09/02 15:05:34  ajc
- * Repaired an incorrect adjustment of floor reference counts when a room was
-   moved to a different floor.  (Thanks to Winzlo for reporting this.)
-
- Revision 610.6  2003/09/02 14:49:05  ajc
- * Improve client chat mode reliability and performance by assuming that all
-   server output will be in complete lines.  (This is a safe assumption.)
-
- Revision 610.5  2003/09/02 04:04:39  ajc
- * Don't try to directly spool to non-neighbor nodes
-
- Revision 610.4  2003/08/29 08:21:57  ajc
- * Do network runs more proactively.  The inbound queue is now scanned
-   every minute instead of every poll frequency.
-
- Revision 610.3  2003/08/21 23:26:06  ajc
- * setup.c: offer to disable "exim" if found
-
- Revision 610.2  2003/08/20 03:51:08  ajc
- * Bumped the internal version number to 6.11
-
- Revision 610.1  2003/08/20 03:36:13  ajc
- * Create a "Contacts" room for personal address book use
-
- Revision 610.0  2003/08/17 03:00:37  ajc
- * THIS IS 6.10
-
- Revision 609.2  2003/08/17 02:58:46  ajc
- * Changed internal version number to 6.10
-
- Revision 609.1  2003/08/17 02:46:37  ajc
- * Don't fail on "data files too old to be upgraded" for NEW installations
-
- Revision 609.0  2003/08/14 03:40:55  ajc
- * THIS IS 6.09
-
- Revision 608.21  2003/08/13 18:08:24  ajc
- * Removed the last vestiges of the now-obsolete global networking password
-
- Revision 608.20  2003/08/13 14:36:04  ajc
- * "make install" now installs the contents of docs/ as well as README.txt
-
- Revision 608.19  2003/08/13 14:30:47  ajc
- * Temporarily disabled IMAP TLS support due to the discovery of some
-   compatibility problems.  It will be re-enabled when they are fixed.
-
- Revision 608.18  2003/08/12 00:39:35  ajc
- * setup now knows about lots of other mail programs it can disable (various
-   flavors of Cyrus and Courier, for example)
- * setup now ensures that it really did startup/shutdown the Citadel service,
-   and displays an error message when that fails.
- * "make install" now instructs the user run "setup"
- * Removed an old GDBM reference from the documentation
-
- Revision 608.17  2003/08/05 03:06:58  ajc
- * Added a README.txt file because some Joker kept bugging me about it
- * Reloaded the code that extracts embedded URL's to a place where it'll
-   get picked up on *every* message, not just the old variformat stuff
-
- Revision 608.16  2003/08/03 17:51:52  ajc
- * Clear out all masqueraded wholist fields when logging out, in case another
-   user logs in without reconnecting.
-
- Revision 608.15  2003/07/30 20:36:18  ajc
- * Allow users to authenticate with either their display name or any valid
-   e-mail address which belongs to them.  Applies to all protocols.
-
- Revision 608.14  2003/07/30 03:54:34  ajc
- * Fixed a small client bug in the purge hour setting
-
- Revision 608.13  2003/07/30 03:47:53  ajc
- * Eliminated the EXPI command
- * Completed the configuration item of "purge hour"
- * Auto-purger now runs as a scheduled job
-
- Revision 608.12  2003/07/30 00:26:50  ajc
- * Removed the "weekly" script and began installing a facility to allow
-   database maintenance to happen automatically.  (One Step Install can't
-   require the sysadmin to know cron)
-
- Revision 608.11  2003/07/28 04:17:24  ajc
- * migratenet.c: removed.  Adjusted Makefile.in accordingly.
-
- Revision 608.10  2003/07/27 21:15:23  ajc
- * Implemented all IMAP date-based search criteria.  Note that Citadel does
-   not record an "internal date" of a message, so the "sent date" and "internal
-   date" searches perform identically.
- * Date search comparisons available: "before," "on," or "on or after."  Yet
-   another example of IMAP's gratuitous complexity.
-
- Revision 608.9  2003/07/26 04:49:40  ajc
- * Implemented a bunch of the IMAP SEARCH keywords
-
- Revision 608.8  2003/07/26 04:28:44  ajc
- * tools.c: added bmstrcasestr(), a Boyer-Moore, case-insensitive string search
- * imap_search.c: implement BODY criterion in search command
-
- Revision 608.7  2003/07/24 04:57:53  ajc
- * Began implementation of the IMAP SEARCH command.  Basically just got the
-   parser working and stubbed all the search criteria.  Next step is to
-   implement the functionality of each criterion keyword.
- * Implemented the functionality for the ALL (wow!) and UID criteria.
-
- Revision 608.6  2003/07/23 03:57:05  ajc
- * Optimized the updating of visit records in several places by checking to
-   see if they've changed and aborting the db update if they haven't.
- * Functions which read/write user records are now slightly faster due to
-   an improvement of the algorithm used to generate the database keys.
-
- Revision 608.5  2003/07/22 03:07:50  nbryant
- fix build for Solaris
-
- Revision 608.4  2003/07/20 20:46:06  ajc
- * build system: link Berkeley DB only to the server, not to the client & utils
-
- Revision 608.3  2003/07/20 03:51:46  ajc
- * setup.c: offer to disable sendmail, postfix, and qmail if found (only if
-   using the /etc/init.d type of startup scripts)
-
- Revision 608.2  2003/07/20 03:08:22  ajc
- * setup.c: offer to hack /etc/xinetd.d/telnet
-
- Revision 608.1  2003/07/15 14:54:09  ajc
- * Killed off CtdlGetDynamicSymbol() and just put all the symbols in server.h
-
- Revision 608.0  2003/07/15 04:12:52  ajc
- * THIS IS 6.08
-
- Revision 607.23  2003/07/14 17:26:42  ajc
- * strcpy() --> safestrncpy() in a few other random places
-
- Revision 607.22  2003/07/14 17:12:28  ajc
- * Replaced strcpy() with safestrcpy() in cmd_setp()
-
- Revision 607.21  2003/07/14 03:07:05  ajc
- * ipgm_secret is no longer set during setup.  Now it is set at server startup
-   and automatically changes whenever an IPGM command is executed.
- * Upon an IPGM authentication failure, wait 5 seconds before displaying an
-   error, then disconnect the session.
-
- Revision 607.20  2003/07/13 04:58:35  ajc
- * Allow connect on unix domain sockets to Citadels in other directories
- * sendcommand now uses unix domain sockets instead of the network
- * Do not allow IPGM command to run on the network -- unix domain sockets only
-
- Revision 607.19  2003/07/11 22:33:02  ajc
- * Ignore comments in public_clients file
-
- Revision 607.18  2003/07/11 22:30:19  ajc
- * Automatically add 127.0.0.1 and config.c_fqdn to public_clients
-
- Revision 607.17  2003/07/11 22:19:49  ajc
- * is_public_client() now caches the IP addresses of all hosts in
-   the public_clients file, at server startup and whenever the file is
-   modified.  This eliminates the need to make lots of calls to the
-   resolver library every time.
-
- Revision 607.16  2003/07/10 05:51:46  ajc
- * Added cs_addr field to struct CitContext -- holds a dotted quad string
-   of the user's source IP (if applicable).  It's big enough to hold other
-   types of address strings in the future (such as IPv6).
- * locate_host() populates cs_addr when on a network connection.
- * serv_smtp.c now saves the IP address in the proper place in
-   the Received: header.
- * is_public_client() no longer accepts a hostname.  It just looks at
-   CC->cs_host instead.
-
- Revision 607.15  2003/06/29 19:54:39  ajc
- * Renamed "struct user" to "struct ctdluser"
- * Renamed "struct room" to "struct ctdlroom"
-
- Revision 607.14  2003/06/29 04:13:32  ajc
- * Renamed:
-   S_QUICKROOM to S_ROOMS
-   S_USERSUPP to S_USERS
-   CDB_QUICKROOM to CDB_ROOMS
-   CDB_USERSUPP to CDB_USERS
-
- Revision 607.13  2003/06/29 04:07:11  ajc
- * Globally renamed "struct quickroom" and "struct usersupp" to
-   "struct room" and "struct user".
-
- Revision 607.12  2003/06/29 04:06:41  ajc
- *** empty log message ***
-
- Revision 607.11  2003/06/29 03:58:41  ajc
- * Renamed fields in 'struct config' which are no longer relevant (but kept
-   them in place to avoid corrupting everyone's data files).  Removed them
-   entirely from serv_vandelay.c.
-
- Revision 607.10  2003/06/28 05:12:56  ajc
- * Bump internal version number to 6.08
- * Use (-1) instead of CTDLUID as the uid of user records which exist only
-   in Citadel and not in the system password database.  serv_upgrade also
-   changes this setting for ALL such users, the first time the server is run
-   after upgrading to 6.08
-
- Revision 607.9  2003/06/27 22:19:31  error
- * routines2.c: Quick and dirty fix for Mail> becoming new after entering a
-   mail message
-
- Revision 607.8  2003/06/26 01:50:14  ajc
- * Compiler warning fix for building setup without newt
-
- Revision 607.7  2003/06/25 15:40:57  ajc
- * setup now uses "newt" instead of "curses" to draw its pretty screens.
-   Changes were made to setup.c as well as all the autoconf stuff.
-
- Revision 607.6  2003/06/25 02:40:05  ajc
- * Per-user and global flags calling for validation need to be set in the
-   vCard upload thingie, not in the wrapper function that emulates the
-   deprecated REGI server command.  Moved it to the correct place.
-
- Revision 607.5  2003/06/22 20:49:31  error
- * citadel.c: display idle times in wholist up to 999 days
-
- Revision 607.4  2003/06/19 04:12:30  ajc
- * domain.c: use qsort() to sort MX records by preference.  Why have a
-   custom function when the operating system provides one for free?
- * serv_smtp.c: accept mail from "<>" (empty sender).  RFC1123 5.2.9 demands it.
-
- Revision 607.3  2003/06/19 03:55:22  ajc
- * Fixed a subtle but ugly bug in the SMTP sender that was causing it to
-   ignore all successful connections except the last one.  Now when it gets
-   a connection it uses it.
-
- Revision 607.2  2003/06/17 22:05:11  ajc
- * New format for wholist.
-
- Revision 607.1  2003/06/16 04:39:45  ajc
- * support.c: removed an unused variable
- * citadel.c: sort wholist by idle time (most recently active users first)
-
- Revision 607.0  2003/06/10 04:15:39  ajc
- * THIS IS 6.07
-
- Revision 606.10  2003/06/04 21:46:13  error
- * citadel.c: Added a missing #ifdef __CYGWIN__
-
- Revision 606.9  2003/06/04 21:39:27  error
- * Numerous fixups needed for Windows port:
-   * cmd_mesg() rewritten to use the stat() syscall to find files
-   * really_do_keepalive() does not try to send if we are not connected
-   * Misc. fixups; added Windows readme file
-
- Revision 606.8  2003/06/04 21:30:39  error
- * messages.c: When file attachment has no name, use message subject as name
-
- Revision 606.7  2003/06/02 23:11:00  error
- * Checkin installer script citadel.nsi for NSIS Windows installer
-
- Revision 606.6  2003/06/02 03:01:22  ajc
- * citserver.c: added another trace message to is_public_client().  Uncensored
-   has crashed twice in this function, for no apparent reason.
- * internet_addressing.c: don't attempt to look up the specified Internet
-   address in a Citadel directory, if the supplied address has no hostname
-   portion.  (Fixes a crash in the calendar service when alias() attempts to
-   look up potentially nonexistent attendees during event validation)
-
- Revision 606.5  2003/05/28 03:08:38  ajc
- * msgbase.c: validate_recipients() now rejects Internet addresses in
-   domains belonging to the local system or an attached Citadel network,
-   when it fails to translate to a Citadel address.
-
- Revision 606.4  2003/05/26 05:36:25  ajc
- * citadel.h: changed internal version number to 6.07
- * file_ops.c: #include <ctype.h>
- * migratenet.c: #include <ctype.h>
-
- Revision 606.3  2003/05/26 05:30:18  ajc
- * serv_calendar.c: fixed a bug in the "ICAL freebusy" subcommand which
-   caused it to always fetch the logged in user's freebusy times instead
-   of the user specified.
-
- Revision 606.2  2003/05/22 13:34:30  ajc
- * database_sleepycat.c: added a couple of diagnostic messages to help
-   troubleshoot problems with db-4.1.25 on Red Hat Linux 9
- * room_ops.c: call mkdir() instead of system() to create a directory
-
- Revision 606.1  2003/05/20 01:28:50  error
- * citadel.c: don't truncate roomname when user is idle, in long who list;
-   display idle time in short who list
-
- Revision 606.0  2003/05/16 15:17:11  ajc
- * THIS IS 6.06
-
- Revision 605.50  2003/05/16 14:59:08  ajc
- * Removed the old rec_log() facility because the utilities which read its
-   data are crufty, disused, and produce incorrect output.
- * Updated the documentation for the forthcoming 6.06 release.
- * public_clients: removed hostnames which crept in from development servers
-
- Revision 605.49  2003/05/16 04:07:37  nbryant
- make configure.ac automagically do the right thing on redhat 9
- remove crappy tolower() hack that was breaking the build on redhat 9
- (because the kerberized openssl includes ctype.h)
-
- before anyone yells at me, i did a little cvs archaeology on the tolower
- thing, and it appears to have been in the Citadel source base since,
- roughly, the Epoch. I doubt that the hack is needed any longer, and using
- the OS's tolower() will handle extended charsets.
-
- Anyone who is stupid enough to be using an OS with such a horribly broken
- tolower() can just scratch their head and figure things out for
- themselves. Citadel needs higher barriers to entry, there are too many
- weirdos on the IGnet lately. :-)
-
- Revision 605.48  2003/05/13 03:22:04  ajc
- * Implemented the IMAP STARTTLS command as specified in RFC 2595.
-
- Revision 605.47  2003/05/06 03:38:59  ajc
- * IMAP folder create and rename commands -- don't allow backslashes in
-   folder names.
-
- Revision 605.46  2003/05/03 16:50:52  ajc
- * Change folder delimiter in room names from / to \
-
- Revision 605.45  2003/05/02 04:02:47  ajc
- * setup.c: allow specification of the Citadel system account by either
-           username or uid
- * setup.c: tell init to re-read /etc/inittab by sending a SIGHUP to pid 1
-           instead of hunting around for the correct init or telinit command
- * docs/citadel.html: documented the above change, and also rewrote some
-                     other stuff to be less BBS-specific
-
- Revision 605.44  2003/04/30 16:16:13  ajc
- * Minor fix to ESMTP greeting (missing '-' screwed up pipelining)
-
- Revision 605.43  2003/04/30 15:46:27  ajc
- * Added the ENHANCEDSTATUSCODES extention to ESMTP.
-
- Revision 605.42  2003/04/29 04:41:22  ajc
- * Fix an off-by-one error in the mime parser
-
- Revision 605.41  2003/04/29 04:13:58  ajc
- * mime parser: look for the "name=" subfield tacked onto either
-   Content-type or Content-disposition, wherever it finds it.
-
- Revision 605.40  2003/04/28 16:56:51  ajc
- * Added a site-configurable setting to suppress the automatic correction of
-   forged From: lines from authenticated SMTP users, for those who prefer
-   strict RFC compliance instead of common sense.
-
- Revision 605.39  2003/04/26 21:55:15  ajc
- * Anytime a socket connect() fails, CLOSE THE SOCKET before erroring out.
-   Not doing so causes a file descriptor leak.
-
- Revision 605.38  2003/04/26 04:22:51  ajc
- * Removal of individual "remote" lines from message delivery instruction sets
-   was corrupting the end of the set, rendering the "bounceto" line unusable
-   and preventing bounces from being delivered.  Fixed this by explicitly
-   adding a trailing newline when remove_token() strips it.
-
- Revision 605.37  2003/04/25 18:28:47  ajc
- * When rejecting spam, use SMTP error code 550, not 552
-
- Revision 605.36  2003/04/23 03:18:44  ajc
- * Allow IMAP STORE of more than one flag at a time (Mail.app from MacOS
-   does this).
-
- Revision 605.35  2003/04/15 02:44:02  ajc
- * Do not allow incoming network polls while an outbound network processing
-   session is in progress.
- * tools.c: removed collapsed_strcmp() as it is no longer used anywhere
-
- Revision 605.34  2003/04/08 04:03:37  ajc
- * Implemented the ".SILENT" protocol option in IMAP STORE.  Certain apps seem
-   to want to use it.
- * Optimized the IMAP operations which scan for expunged and added messages.
-   These loops no longer make multiple traversals through the message list.
-
- Revision 605.33  2003/04/07 05:02:23  ajc
- * Reworked all the "list rooms" operations so that they only require one
-   pass through the database.
- * Repaired the "create floor" operation which was broken by the switch
-   to the new IPC libray
-
- Revision 605.32  2003/04/02 13:33:28  ajc
- * Fixed output of "-0500" vs. "+0500" type of timezone stamps in RFC822.
-   (I think they were reversed.)
-
- Revision 605.31  2003/04/01 05:01:08  ajc
- * sysdep.c: optimized MyContext() a bit, and inlined it.  A little profiling
-   revealed that this function was getting used super heavily.
- * tools.c: removed the older, slower string tokenizer functions that
-   weren't getting used anymore.
-
- Revision 605.30  2003/03/31 04:55:58  ajc
- * Repaired the formatting of text/plain messages with blank lines.
-
- Revision 605.29  2003/03/30 06:16:52  ajc
- * Optimized CtdlReadMessageBody() and also gave it an option to store
-   messages with CRLF newlines instead of LF.  This option is used when
-   reading SMTP in order to keep Pine from barfing on LF-terminated newlines
-   while decoding quoted-printable.  *sigh*
-
- Revision 605.28  2003/03/26 05:17:12  ajc
- * Downloading of attachments was completely broken by the change to the new
-   protocol library.  Located and fixed bugs.
- * html.c: increased the conversion buffer size
-
- Revision 605.27  2003/03/24 03:42:14  ajc
- * Add the ability to quit out while validating users.  Also added a help
-   option listing available access levels.  This closes Bugzilla #37.
-
- Revision 605.26  2003/03/22 05:38:23  ajc
- * During startup, display the version string from the Berkeley DB library.
- * When deleting a mailbox, don't reveal the namespace prefix to the user.
-
- Revision 605.25  2003/03/20 08:37:04  error
- * connection_died(): Don't crash before printing message, crash afterward.
-   (Bugzilla id 111)
-
- Revision 605.24  2003/03/19 11:48:06  error
- * entmsg(): Don't corrupt the msg_arr[] when replying to a message in a room
-
- Revision 605.23  2003/03/19 04:04:56  ajc
- * Dropped support for GDBM and for versions of Berkeley DB prior to 4.1
-
- Revision 605.22  2003/03/18 05:15:05  ajc
- * Applied a patch sent in by Clint Adams <schizo@debian.org> to handle
-   building on Debian's unstable with Berkeley DB 4.1, compiled with
-   the --with-db-uniquename when errno is a macro (as in glibc 2.3.1).
-
- Revision 605.21  2003/03/17 11:56:35  error
- * Fix <G>oto in alternate_semantics - it actually marks messages read now.
-
- Revision 605.20  2003/03/17 04:03:14  ajc
- * Supply a NULL argument as the second argument to accept() instead of an
-   empty buffer whose contents we never even look at.
-
- Revision 605.19  2003/03/16 05:07:12  ajc
- * Fixed the bug that caused freebusy publishes to crash.
-
- Revision 605.18  2003/03/15 23:05:08  ajc
- * Rewrite of calendar-to-freebusy conversion functions.  This one creates
-   freebusy in the correct format, instead of what I mistakenly assumed it
-   was supposed to look like.  :(
-
- Revision 605.17  2003/03/15 22:31:06  ajc
- * When scanning a user's Calendar> room for calendar events, search for
-   MIME parts of type text/calendar instead of assuming that the event will
-   always appear as part "1"
-
- Revision 605.16  2003/03/14 05:08:25  ajc
- * Clone calendar subcomponents before encapsulating in case they already
-   happen to have a parent.
-
- Revision 605.15  2003/03/13 05:48:33  ajc
- * Move towards storing calendar objects as fully encapsulated VCALENDAR
-   components instead of just VEVENT subcomponents.
-
- Revision 605.14  2003/03/12 03:33:54  ajc
- * More changes to the handling of RFC822 headers with regard to
-   splitting up the headers and body.  (Blank lines and such.)
-
- Revision 605.13  2003/03/11 06:23:50  ajc
- * More accurate handling of IMAP FETCH xx BODYSTRUCTURE command.  This should
-   make Pine happier with multipart messages.
-
- Revision 605.12  2003/03/10 05:38:21  ajc
- * Tweaks to msgbase.c and imap_fetch.c to fix slightly incorrect byte counts
-   reported in the numerous variations of IMAP FETCH.  This silences a number of
-   error messages reported by Pine.
-
- Revision 605.11  2003/03/10 03:40:08  ajc
- * Fixed bug that caused segv when <R>eplying to certain messages
-
- Revision 605.10  2003/03/07 17:39:45  ajc
- * Remove the "modules" directory
-
- Revision 605.9  2003/03/06 04:58:11  ajc
- * When entering a message into Citadel with authenticated SMTP, stamp the
-   room name as MAILROOM (Mail>) so it doesn't end up with an ugly moniker
-   like "0000058008.Sent Items"
-
- Revision 605.8  2003/03/05 04:55:32  ajc
- * serv_smtp.c: when authenticated, do not log out when a RSET command is
-   issued.  This breaks clients which carelessly issue RSET before each
-   message, such as Pine.
- * serv_smtp.c: when authenticated, ignore envelope FROM:<xxx> sender name
-   and replace with address of user who authenticated.  Also fixes Pine.
- * serv_smtp.c: when authenticated, not only do we continue our glorious
-   RFC-violating condition of replacing the From: header with the user who
-   is logged in, but we also stamp it with their preferred Internet address
-   for outbound mail (which is kept in CC->cs_inet_email).
-
- Revision 605.7  2003/03/03 04:09:21  ajc
- * When creating a user, hide the "My Citadel Config>" room of the user being
-   created, not the user currently logged in.
-
- Revision 605.6  2003/03/01 18:18:03  ajc
- * commands.c: alternate_semantics might have been getting set where it
-   should not.  Fixed.
-
- Revision 605.5  2003/03/01 17:25:33  ajc
- * citadel.rc default for alternate_semantics = no
-
- Revision 605.4  2003/02/23 05:34:45  ajc
- * When the <N>ew command is used to read new messages, the next "lazy"
-   command (space bar) now always does <G>oto, regardless of the last one.
-
- Revision 605.3  2003/02/21 04:24:51  ajc
- * Completed the "ICAL freebusy" subcommand, which fetches free/busy times
-   for any requested user (output in stripped-down VCALENDAR format)
-
- Revision 605.2  2003/02/20 04:51:17  ajc
- * Began framing up a command to view other users' free/busy times
-
- Revision 605.1  2003/02/19 22:38:43  ajc
- * Changed socklen_t to int (to allow compile on Macintosh)
-
- Revision 605.0  2003/02/19 03:46:01  ajc
- * THIS IS 6.05
-
- Revision 601.134  2003/02/17 05:23:20  ajc
- * Fixed a small bug in the GDBM backend (deprecated, but the bug was very
-   obvious and a kind user pointed it out)
- * Removed vestiges of setjmp/longjmp from the client
- * When doing .TS, don't get caught in a constant-logout loop
-
- Revision 601.133  2003/02/14 16:12:04  ajc
- * Added support for any standard RBL
-
- Revision 601.132  2003/02/13 22:33:41  ajc
- * Fixed algorithm for reporting "last login"
-
- Revision 601.131  2003/02/13 21:52:13  ajc
- * IMAP service: fixed bug that was causing the wrong messages (usually *all*
-   messages) to be flagged when a STORE or COPY operation was performed.
-
- Revision 601.130  2003/02/13 20:13:51  ajc
- * Applied "multi editor" patch supplied by georbit
-
- Revision 601.129  2003/02/12 04:51:44  ajc
- * More docs update
-
- Revision 601.128  2003/02/10 04:50:33  ajc
- * More documentation updates
-
- Revision 601.127  2003/02/09 03:38:28  ajc
- * Updated the documentation some more
-
- Revision 601.126  2003/01/25 07:37:15  error
- * whobbs.c: Print error message if we can't connect to server
-
- Revision 601.125  2003/01/23 05:50:59  ajc
- * citadel.c: hitting enter without entering a room name in the <.G>oto and
-   <.S>kip commands now does nothing instead of exhibiting undefined behavior
-
- Revision 601.124  2003/01/23 04:42:33  ajc
- * Began reviewing, updating, and HTML-izing the documentation
-
- Revision 601.123  2003/01/22 03:53:24  ajc
- * More reliablility hacks for autologin mode, and better quarantine of
-   autologin code when it's disabled.
-
- Revision 601.122  2003/01/21 04:42:12  ajc
- * Moved login-to-screenname code ... no longer part of CtdlTryExistingUser(),
-   it's now part of getuser() so it always gets called, even when looking up
-   addresses for mail and stuff.
-
- Revision 601.121  2003/01/19 08:59:02  error
- * Remove irrelevant file hpsux.h (was part of dynloader)
-
- Revision 601.120  2003/01/19 05:55:59  ajc
- * serv_calendar.c: allocate dynamic symbol at module startup, not during
-   each session startup.  This error was causing crashes (of course).
-
- Revision 601.119  2003/01/18 06:18:20  ajc
- * whobbs.c: line up the columns better
- * routines2.c: when doing <.ASI> command, entering a blank hostname causes
-   it to abort instead of adding a new host.  Also strip l/t whitespace.
-
- Revision 601.118  2003/01/17 22:36:56  ajc
- * This commit is a figment of your imagination.
-
- Revision 601.117  2003/01/17 21:50:27  ajc
- * Began making some build changes for Cygwin compatibility
-
- Revision 601.116  2003/01/17 10:06:54  error
- * fmout():  Ignore \r (carriage return) characters in messages
-
- Revision 601.115  2003/01/17 04:36:04  ajc
- * whobbs.c: fix bad call to CtdlGetServInfo() so we can get our session ID
-   and the name of the Citadel site
-
- Revision 601.114  2003/01/16 21:16:23  error
- * CtdlIPCGetMessages(): Fix message read failing on first attempt to read
-   messages
-
- Revision 601.113  2003/01/16 10:04:03  error
- * ENT0 command: changed post-as username from arg 4 to arg 5; 4 was already
-   used as the message subject
- * Convert message entry and reading to new IPC code
- * Minor bugfixes throughout IPC code
-
- Revision 601.112  2003/01/16 04:17:02  ajc
- * citadel_ipc.c: when issuing a SPEX command, send the string value for
-   room/floor/site instead of the number.  citserver wants a string.
- * ipc_c_tcp.c: don't call SSL_shutdown() from connection_died().  This just
-   causes it to segfault because there's no valid socket.
-
- Revision 601.111  2003/01/16 03:41:45  ajc
- * Renamed "dynloader" to "serv_extensions" globally.  We don't want people
-   to think we have a dynamic loader, do we?  :)
- * serv_*_init() is now declared in serv_extensions.h.  This is definitely the
-   wrong place for it.  It's there temporarily until we decide on a new
-   convention for server extensions.
- * bootstrap: more reliable detection of Red Hat Linux 7.3 -- more specifically,
-   fewer fireworks when the host system is *not* Red Hat Linux.
-
- Revision 601.110  2003/01/15 16:34:53  ajc
- * bootstrap: don't check /etc/redhat-release if it doesn't exist (which is
-   the case on all non Red Hat Linux systems)
-
- Revision 601.109  2003/01/15 05:57:09  ajc
- * First cut at static-linking the citserver.  Ripped out libtool and
-   replaced the dynloader paradigm with "server extensions" paradigm (static
-   linked, but still very loosely coupled by way of using the API's to
-   register callbacks and commands etc.)   Needs more testing.
-
- Revision 601.108  2003/01/14 04:12:26  ajc
- * Set default view for new user Calendar> rooms to 3 (calendar)
- * Set default view for new user Tasks> rooms to 4 (tasks)
-
- Revision 601.107  2003/01/13 17:04:19  ajc
- * Add a sample URL view command for Macintosh in the included citadel.rc
-
- Revision 601.106  2003/01/13 02:55:07  ajc
- * Do calendar support only if libical header *and* library are present
-
- Revision 601.105  2003/01/12 23:07:40  ajc
- * configure.ac: Attempt to check for libical 0.24 or newer
-
- Revision 601.104  2003/01/12 05:01:58  ajc
- * Start marking things for 6.05 release
-
- Revision 601.103  2003/01/12 04:48:23  ajc
- * Display message subjects in magenta instead of white
-
- Revision 601.102  2003/01/06 09:17:10  error
- * Remove non (yet) existent sstring.c dependency from Makefile.in
-
- Revision 601.101  2003/01/05 07:35:03  error
- * Add an AllFloors parameter to the citadel IPC API
-
- Revision 601.100  2003/01/01 08:07:46  error
- * commands.c: bugfix for reading from FILE pointers; affected quote, print
-   and external editor.
-
- Revision 601.99  2002/12/28 05:33:29  ajc
- * ical_dezonify: set is_utc=1 even if we didn't convert from some arbitrary
-   timezone.  Presumably this means the time was already UTC, and we really
-   need that "Z" to get slapped on it.
-
- Revision 601.98  2002/12/28 05:12:06  ajc
- * Yet another attempt at making ical_dezonify() send outgoing calendar items
-   in UTC format.  (This one will probably work -- the timestamps have the
-   "Z" after them which signifies UTC instead of local time.)
-
- Revision 601.97  2002/12/27 04:40:40  ajc
- * Another attempt at fixing timezones :(
-
- Revision 601.96  2002/12/25 23:17:07  ajc
- * ical_dezonify.c: shuffle around #includes and #ifdef's
-
- Revision 601.95  2002/12/25 21:46:19  ajc
- * Another shot at timezone handling (ugggghh)
-
- Revision 601.94  2002/12/25 07:05:26  ajc
- * set up ical_dezonify() to be called at appropriate times
-   (but it doesn't seem to work correctly yet)
-
- Revision 601.93  2002/12/25 06:41:44  ajc
- * ical_dezonify.c: added (function to strip localized timestamps out of
-   a component and replace them with UTC timestamps)
-
- Revision 601.92  2002/12/19 04:51:49  ajc
- * database_cleanup.sh: added
-
- Revision 601.91  2002/12/18 04:08:16  ajc
- * Don't attempt to send out invitations when there are no attendees.
-
- Revision 601.90  2002/12/15 10:53:51  error
- * Final touches on the new message formatter.
-
- Revision 601.89  2002/12/15 09:42:37  error
- * Converted more routines to new IPC code.
-
- Revision 601.88  2002/12/14 23:21:29  ajc
- * When saving a calendar event, set the message Subject to the event
-   summary string, and the message Date/time to the event start time.
-
- Revision 601.87  2002/12/10 23:36:20  ajc
- * Fixed a bug in the allocation of per-session dynamic data for calendar module
-
- Revision 601.86  2002/12/09 06:07:29  ajc
- * Finished the code to accept incoming calendar REPLY messages and
-   merge/save the updated event in the user's calendar.
-
- Revision 601.85  2002/12/08 06:01:48  ajc
- * More work on the reply handler.  Wrote functions to locate the message
-   containing the invitation being replied to.  Just need to write the
-   merge and resave functions now.
-
- Revision 601.84  2002/12/08 00:23:08  ajc
- * Began adding a calendaring subcommand to accept a reply to a meeting
-   invitation and update the event in the user's calendar.  (Not finished.)
-
- Revision 601.83  2002/12/04 05:01:18  ajc
- * When sending out invitations, encapsulate the VEVENT component inside a
-   VCALENDAR component, along with proper metadata such as product ID and
-   vcalendar version.  Move the METHOD:REQUEST property to the encapsulating
-   component rather than the event itself.  (Still need to add a VTIMEZONE).
-
- Revision 601.82  2002/12/03 04:49:15  ajc
- * Send out meeting requests!  (Need to test with various clients.)
-
- Revision 601.81  2002/12/02 08:09:00  error
- * Improvements to the new message formatter, including URL support and
-   doing the Right Thing for text/plain messages.
-
- Revision 601.80  2002/12/01 11:02:57  error
- * New experimental message formatter - try it, you'll like it!
-
- Revision 601.79  2002/12/01 04:48:24  ajc
- * The code to check for sending invitations needs to happen *after* save
-
- Revision 601.78  2002/12/01 00:59:54  ajc
- * Reliably detect when the user saving an event is listed as the meeting
-   organizer.  (Currently calls a stub function.  Still need to write the
-   function to generate and send invitations.)
-
- Revision 601.77  2002/11/30 21:35:30  ajc
- * just some trace messages
-
- Revision 601.76  2002/11/30 05:39:28  ajc
- * Started banging out some code to determine when a saved vEvent needs to
-   send out meeting invites.
-
- Revision 601.75  2002/11/29 16:24:59  ajc
- * When calling ical*_remove_*() routines, the caller then owns the object
-   which is removed.  Added ical*_free() calls to free the memory.
-
- Revision 601.74  2002/11/29 15:44:41  ajc
- * CC->cs_inet_email is now a string buffer, not a pointer
- * Initialize CC->cs_inet_email with a default address, so it always
-   contains something even when the directory doesn't
- * Augment CHEK command to return the user's preferred Internet e-mail addr.
-
- Revision 601.73  2002/11/27 21:05:31  nixo
- added dot ungoto functionality.
- It allows you to enter a room to ungoto, it will look
- through the ungoto list and goto there at the room position
- you last goto-ed it from.
- Don't blame me, this was Gary's idea.
-
- Revision 601.72  2002/11/25 05:10:07  ajc
- * Post a notification to Aide> when a user is manually deleted
-   (resolves Bugzilla enhancement request #73)
-
- Revision 601.71  2002/11/25 04:57:43  ajc
- * Allow set/clear of per-user Internet mail privilege
- * Honor that flag
-
- Revision 601.70  2002/11/23 13:35:47  error
- * Makefile.in: Alphabetized all the source files
-
- Revision 601.69  2002/11/21 05:38:13  ajc
- * Added support for a "New User Greetings" room.  See docs/install.txt
-
- Revision 601.68  2002/11/15 11:24:40  error
- * serv_rwho.c: cmd_rwho(): move logged_in from param 8 to param 11
-   (see RWHO in techdoc/session.txt)
-
- Revision 601.67  2002/11/13 17:20:57  ajc
- * When in curses mode, call beep() instead of putc(7, stdout) to make it beep.
-
- Revision 601.66  2002/11/12 04:30:16  ajc
- * Completed the invitation accept/decline code.  It now sends back a
-   correctly formated reply!  (Tested with Evolution)
-
- Revision 601.65  2002/11/11 06:21:55  error
- * Fixed minor bugs with color handling; added explicit support for handling
-   the background color e.g. for transparent terminals
-
- Revision 601.64  2002/11/11 04:17:24  ajc
- * More work on reply to meeting invitation
-
- Revision 601.63  2002/11/10 09:21:57  error
- * messages.c: fixed <H>eader command
-
- Revision 601.62  2002/11/10 09:19:38  error
- * Convert some more routines to new IPC code
-
- Revision 601.61  2002/11/10 09:14:16  error
- * citadel.spec: updated for post-6.01
-
- Revision 601.60  2002/11/10 09:12:06  error
- * citadel.c: When terminating, don't mark messages new when using new
-   message semantics
-
- Revision 601.59  2002/11/08 05:28:54  ajc
- * Reply to VEVENT invitations: generate reply by cloning the request,
-   stripping out non-me attendees, setting the partstat to accept/decline,
-   and extracting the address of the organizer.   (Still not finished: right
-   now it does everything except actually sending the reply.)
-
- Revision 601.58  2002/11/07 04:40:07  ajc
- * Repaired the "remember username/password" functionality of the client
-   (it was broken during the transition to the new client protocol library)
-
- Revision 601.57  2002/11/06 05:03:01  ajc
- * No changes; just testing CVS permissions
-
- Revision 601.56  2002/11/04 21:49:53  ajc
- * Don't run the wait indicator when in an external editor
-
- Revision 601.55  2002/11/01 04:57:56  ajc
- * Fixed .AM and .AE commands
-
- Revision 601.54  2002/10/29 20:14:56  error
- * rooms.c: don't allow a blank floor name when creating a floor (in client)
-
- Revision 601.53  2002/10/26 06:15:09  ajc
- * cmd_cflr() - don't allow zero length floor names
-
- Revision 601.52  2002/10/26 06:01:19  ajc
- * Increase size of temp file name buffer in struct CitContext
-
- Revision 601.51  2002/10/25 09:38:38  error
- * Fixed broken .Goto by partial match
-
- Revision 601.50  2002/10/25 09:26:26  error
- * Fix the status line not updating with the new wait indicator; rearrange
-   the code so network_status_cb is a member function of ipc.
-
- Revision 601.49  2002/10/25 04:39:38  ajc
- * When in fullscreen mode, display an "X" icon in the lower right corner of
-   the screen while waiting for the server.
-
- Revision 601.48  2002/10/24 09:04:53  error
- * acconfig.h: add DISABLE_CURSES template
-
- Revision 601.47  2002/10/23 04:06:41  ajc
- * "conflicts" check now also tells the client whether a conflicting event
-   is really just an older version of the same object.
-
- Revision 601.46  2002/10/23 03:55:21  ajc
- * Finished: when saving an object of type text/calendar to the Calendar> room,
-   set the Citadel "extended message ID" to the UID of the VEVENT object.  This
-   causes the message base to automatically delete any existing instance(s) of
-   that object: automatic replacement.
-
- Revision 601.45  2002/10/23 03:07:43  ajc
- * First hack at UID-to-EMSGID mapping (for auto replacement)
-
- Revision 601.44  2002/10/21 20:00:41  ajc
- * List UID and SUMMARY properties of conflicting events
-
- Revision 601.43  2002/10/21 17:14:42  ajc
- * More work on conflict detects
-
- Revision 601.42  2002/10/20 21:42:54  ajc
- * More conflict checking stuff
-
- Revision 601.41  2002/10/20 20:21:27  ajc
- * Put in a skeleton "hunt for conflicts" code
-
- Revision 601.40  2002/10/20 08:01:03  error
- * docs/install.txt: add Mac OS X build instructions
-
- Revision 601.39  2002/10/19 21:35:34  ajc
- * Moved some of the calendar logic over from WebCit
-
- Revision 601.38  2002/10/19 08:30:03  error
- * dynloader.c:  Darwin places underscores in front of symbol names, just
-   like OpenBSD.
-
- Revision 601.37  2002/10/19 08:18:06  error
- * Disable any use of curses on Darwin (this is temporary until I beat
-   Apple's bizarre linker into submission)
-
- Revision 601.36  2002/10/18 10:33:09  error
- * More signed/unsigned fixes (for the new progress gauge)
-
- Revision 601.35  2002/10/18 07:56:30  error
- * fix self-service account creation at login prompt (accidentally called
-   CREU instead of NEWU).
-
- Revision 601.34  2002/10/18 03:44:13  ajc
- * Fixed a bug in CtdlRenameRoom() that caused the old room record not to be
-   deleted when there was a mailbox namespace attached.
- * Reworked imap_rename() and imap_rename_backend() to not use nested functions
-
- Revision 601.33  2002/10/17 12:56:44  error
- * Bug fixes:  Fix numerous char array size mismatches, signed/unsigned
-   mismatches, and const correctness problems (though not nearly all)
-
- Revision 601.32  2002/10/17 11:13:27  error
- * Convert room listings and some aide functions to new IPC code
-
- Revision 601.31  2002/10/16 13:46:19  ajc
- * Remove some trace messages
-
- Revision 601.30  2002/10/16 08:59:41  error
- * Don't assume pointer to time_t is compatible with pointer to
-   struct timeval.tv_sec (it isn't on darwin)
-
- Revision 601.29  2002/10/16 02:49:55  ajc
- * CtdlWriteObject() encode in memory instead of on disk (not tested)
-
- Revision 601.28  2002/10/15 17:41:20  ajc
- * Numerous warning fixes and cleanups for compile on Linux for IBM S/390
- * Name temp files with source code location of who created them
-
- Revision 601.27  2002/10/15 06:47:11  error
- * IPC support for resumable downloads
-
- Revision 601.26  2002/10/15 06:44:55  error
- * configure.ac check for malloc.h header file (Mac OS X needs this)
-
- Revision 601.25  2002/10/15 03:56:33  ajc
- * Run without crashing on Berkeley DB 4.1  :)
-
- Revision 601.24  2002/10/15 03:30:52  ajc
- * Build ok on Berkeley DB 4.1
-
- Revision 601.23  2002/10/14 08:27:40  error
- * Mac OS X build fixes (everything but serv_imap now builds)
-
- Revision 601.22  2002/10/08 09:44:52  error
- * Build environment:  cvs ignore .diff/.patch files
-
- Revision 601.21  2002/10/07 18:59:37  ajc
- * Build fixes for Solaris box without OpenSSL installed
-
- Revision 601.20  2002/10/07 09:40:49  error
- * Don't try to compile non-existent client_crypto.c (oops!)
-
- Revision 601.19  2002/10/06 18:46:30  error
- * Move (nearly) all IPC-related code to citadel_ipc.[ch].
-
- Revision 601.18  2002/10/05 04:48:29  ajc
- * Change MAXSETUP from 4 to 3 (bug reported by mavherzog, fix suggested by IO)
-
- Revision 601.17  2002/10/04 07:11:56  error
- * Fix bootstrap for Red Hat 7.3
-
- Revision 601.16  2002/10/02 04:07:27  error
- * status_line() now shows "new mail" only when there is new mail
-
- Revision 601.15  2002/10/01 04:00:13  ajc
- * html.c: speed improvement in html-to-ascii converter
- * messages.c: MASSIVE speed improvement in message output
-
- Revision 601.14  2002/09/30 08:07:11  error
- * ipcdef.h: add extern "C" for linking to C++ programs
-
- Revision 601.13  2002/09/30 07:32:09  error
- * ipcdef.h: remove prototype for connection_died(), it doesn't belong there
-
- Revision 601.12  2002/09/30 07:20:35  error
- * Fix configure mis-detecting libical and zlib and a missing semicolon in
-   tools.h
-
- Revision 601.11  2002/09/29 04:55:13  error
- * File and attachment downloads now use the new IPC code.
- * Implemented high-speed pipelined file download in IPC code.
-
- Revision 601.10  2002/09/29 04:41:43  error
- * file_ops.c: cmd_read() now returns a short read at end-of-file instead of
-   4096, this prevents trailing garbage on the downloaded file; also it now
-   succeeds if the requested number of bytes is > 4096; it simply returns
-   only 4096 bytes.
-
- Revision 601.9  2002/09/27 06:53:20  error
- * Allow multiple simultaneous IPC connections.  All changes necessary for
-   the client to use the new code are necessarily included.
-
- Revision 601.8  2002/09/22 02:48:04  ajc
- * axdefs.h: add "Notes" view
-
- Revision 601.7  2002/09/17 03:18:15  ajc
- * Create the Calendar> and Tasks> rooms at login time, and set their default
-   views to calendar and tasklist views.  Renamed "My Calendar>" to "Calendar>"
-   to be in sync with the KDE groupware project.
-
- Revision 601.6  2002/09/15 03:24:28  ajc
- * Renamed decode_base64() to CtdlDecodeBase64()
- * Renamed decode_quoted_printable() to CtdlDecodeQuotedPrintable()
- * These changes are to avoid namespace conflict with libical
-
- Revision 601.5  2002/09/13 15:41:39  ajc
- * serv_calendar.c: #include "serv_calendar.h", not "serv_ical.h"
-
- Revision 601.4  2002/09/11 03:17:18  ajc
- * [EXPERIMENTAL] Link in the "libical" calendar library if present
- * Rename serv_ical to serv_calendar (because the resulting module would be
-   named "libical" which conflicts with the external library by that name)
-
- Revision 601.3  2002/09/10 08:07:38  error
- * update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00* update citadel.spec for 6.00
-
- Revision 601.2  2002/09/09 03:03:18  ajc
- * When a user logs in, create the Mail> room if it doesn't exist.  (Should
-   never happen, but one site had a situation where this patch came in handy.)
-
- Revision 601.1  2002/09/08 04:15:28  ajc
- * Also fixed a bug in <.T>erminate <S>tay which caused the terminal to
-   become wacky on second and subsequent sessions.
-
- Revision 601.0  2002/09/08 03:51:30  ajc
- * Let's call this 6.01, shall we?
-
- Revision 600.2  2002/09/08 03:48:48  ajc
- * Fixed a crashy crashy bug in the AGUP protocol function in the client
-
- Revision 600.1  2002/09/07 03:24:23  ajc
- * When displaying messages using MSG4, enumerate the attachments on the
-   client side, because the server won't add their descriptions to the
-   message text.
-
- Revision 600.0  2002/09/04 03:06:58  ajc
- * Committing the current code base as version 6.00
-
- Revision 591.109  2002/09/03 14:09:04  ajc
- * setup.c: automatically stop/start services
-
- Revision 591.108  2002/09/03 04:42:15  ajc
- * Added MSG4 support to client-side IPC
- * Moved HTML-to-text conversion to the client side
-
- Revision 591.107  2002/09/02 20:40:34  ajc
- * Automation work for setup
-
- Revision 591.106  2002/08/31 04:36:26  ajc
- * IMAP APPEND no longer forces messages to appear as from the logged-in user
-   when appending to a mailbox room.  (Allows migration to Citadel from some
-   other type of server without losing all the sender names.)
-
- Revision 591.105  2002/08/31 04:12:39  ajc
- * Set version number to 6.00 in documentation and header files.
- * Convert RFC822 newlines (CRLF) to Unix/Citadel newlines (LF) when
-   performing an IMAP APPEND command.
-
- Revision 591.104  2002/08/28 03:18:06  ajc
- * Make reply_to and reply_subject global (otherwise they don't work!)
-
- Revision 591.103  2002/08/27 04:01:03  ajc
- * Added the ability to run an external command from the client when new mail
-   arrives.  (Ok, I admit it: I just discovered http://www.dailywav.com and I
-   just *had* to have Bear in the Big Blue House tell me I've got mail)
-
- Revision 591.102  2002/08/26 02:55:09  ajc
- * Small bugfix for memory bounds checking in the MIME parser
-
- Revision 591.101  2002/08/25 21:23:49  ajc
- * Hide the SMTP queue and the sysconfig rooms.
-
- Revision 591.100  2002/08/24 05:58:53  ajc
- * Bugfixes and cosmetic changes to listsub system
-
- Revision 591.99  2002/08/23 03:36:52  ajc
- * Finished all of the subscribe/unsubscribe/confirm stuff!
-
- Revision 591.98  2002/08/23 02:30:02  ajc
- * Delete unconfirmed pending subscribe/unsubscribe requests after three days
- * Don't allow multiple subscriptions of the same address to a list
-
- Revision 591.97  2002/08/22 03:55:11  ajc
- * Fixed bug in above
-
- Revision 591.96  2002/08/22 03:40:00  ajc
- * Add "unsubscribe" command (but not yet "confirm unsubscribe")
-
- Revision 591.95  2002/08/21 21:58:00  ajc
- * Completed self-service list subscription via web.
-   (Still need to implement unsubscribe.)
-
- Revision 591.94  2002/08/16 21:04:56  ajc
- * Add LPRM command
-
- Revision 591.93  2002/08/14 20:21:52  ajc
- * Extend GETR/SETR to allow twiddling of bits in the QRflags2 bucket
- * New flag and config options to allow/disallow self-service list subscription
-   and unsubscription to a room
-
- Revision 591.92  2002/08/14 02:36:05  ajc
- * WebCit list subscription integration
-
- Revision 591.91  2002/08/13 18:48:46  ajc
- * Generate and send subscription confirmation requests.
-   (Still need to finalize the URL format)
-
- Revision 591.90  2002/08/13 17:19:11  ajc
- * Added email capability to quickie_message()
-
- Revision 591.89  2002/08/13 04:02:06  ajc
- * <R>eplace string is now case sensitive
-
- Revision 591.88  2002/08/13 03:46:31  ajc
- * More work on the self-service subscribe/unsubscribe infrastructure
-
- Revision 591.87  2002/08/12 03:00:20  ajc
- * Fixed bug in <R>eplacestring which caused it to lock up in certain conditions
-
- Revision 591.86  2002/08/12 00:09:05  ajc
- * Compress VISIT records using zlib if available.  This reduces the object
-   size from over 4k to about 70 bytes.  Experimental.
- * Automatically uncompress database records found to be compressed (duh)
-
- Revision 591.85  2002/08/08 22:01:35  ajc
- * autoconf to look for zlib (for an upcoming experiment)
-
- Revision 591.84  2002/08/08 03:25:56  ajc
- * Bugfix for above
- * Started writing some infrastructure for sub/unsub
-
- Revision 591.83  2002/08/08 02:49:12  ajc
- * serv_network.c: retain unknown commands in netconfigs and write them back
- * techdoc/netconfigs.txt: specify commands for subscribe/unsubscribe pending
- * serv_listsub.c: added (currently a stub)
-
- Revision 591.82  2002/08/06 03:12:14  ajc
- * Fixed and clarified "new mail has arrived" messages.
-
- Revision 591.81  2002/08/06 03:02:29  ajc
- * ;AE command -- Make it clearer which floor the user is editing
-
- Revision 591.80  2002/08/06 02:58:01  ajc
- * Cleaned up the output of digest mode.  It's usable now, but the self-service
-   subscribe/unsubscribe functions are not there yet.
-
- Revision 591.79  2002/08/05 14:38:11  ajc
- * rooms.c: corrected a typo reported by Campagnolo (Mike Poulin)
-
- Revision 591.78  2002/08/03 19:48:40  ajc
- * NULLify 'roomrec' before attempting partial match in <G>oto
-   (fixes heap corruption when this command is executed)
-
- Revision 591.77  2002/08/03 04:13:46  ajc
- * citadel_ipc.c: Attempted to clean up memory allocation
-
- Revision 591.76  2002/08/01 05:41:53  ajc
- * Completion of (most of) digest mode.  Still needs some polish.
-
- Revision 591.75  2002/07/31 04:01:57  ajc
- * Began implementing "digest mode" for listserving.  (Not complete)
-
- Revision 591.74  2002/07/28 20:33:13  ajc
- * Augmented the "headers only" functionality of the message reading API (as
-   well as the options of the server commands which expose it) to allow
-   headers+body, headers only, or body only.
- * Adjusted message output of IMAP command FETCH BODY[1] when message is in
-   legacy Citadel format.  This fixes a bug exposed by SquirrelMail.
-
- Revision 591.73  2002/07/23 04:00:06  ajc
- * Completed the MSGP and MSG4 commands to set the client's preferred MIME
-   content types, and fetch messages with MIME content types.
-
- Revision 591.72  2002/07/21 22:29:46  ajc
- * Added in some infrastructure to switch the client's message reading from
-   conventional MSG0 to a MIME-download type thing, like WebCit does.
-
- Revision 591.71  2002/07/21 15:45:07  error
- * Remove duplicate call for server time in who_is_online(); IPC does this now
-
- Revision 591.70  2002/07/21 15:43:57  error
- * citadel_ipc.c: Fix for segfault on empty messages
-
- Revision 591.69  2002/07/20 04:05:10  ajc
- * Updated hack.txt with some fresh new information
-
- Revision 591.68  2002/07/19 02:28:11  ajc
- * citadel_ipc.c: changed various buffer lengths from 256 to SIZ in order to
-   accomodate long lines which often spew out (usually from spam unfortunately)
-
- Revision 591.67  2002/07/18 21:29:37  nbryant
- added a note about GNU make to the configure script output
-
- Revision 591.66  2002/07/18 20:21:18  ajc
- * Eliminated the 512-message limit in the client for reading messages.
-
- Revision 591.65  2002/07/13 04:12:40  ajc
- * Don't lie about format types in MSG0 anymore.  We no longer need to.
-
- Revision 591.64  2002/07/13 03:24:32  ajc
- * CtdlOutputMsg() caches the most recently fetched message in memory.  This
-   eliminates the need to do multiple database fetches when we go back for
-   additional MIME parts, etc.
-
- Revision 591.63  2002/07/11 03:40:51  ajc
- * When outputting a multipart MIME message, supply the client with "pref="
-   and "suff=" lines in addition to the "part=" lines.
-
- Revision 591.62  2002/07/02 16:27:06  error
- * prototypes in citadel_ipc.h updated
-
- Revision 591.61  2002/06/29 23:26:55  error
- * fixed some memory leaks
-
- Revision 591.60  2002/06/29 18:36:31  error
- * tools.c: Massively faster versions of extract_token() and remove_token().
-   These functions can now handle multi-kilobyte sized strings with hundreds
-   of tokens (or more?).
-
- Revision 591.59  2002/06/29 15:55:07  error
- * Convert whobbs, serv_info, misc. functions to new IPC code
-
- Revision 591.58  2002/06/27 03:10:04  error
- * rooms.c: converted most functions to new IPC code
-
- Revision 591.57  2002/06/25 15:38:52  error
- * fixed bug in dotgoto() causing free() to segfault
-
- Revision 591.56  2002/06/25 15:13:27  error
- * gotonext() now uses new IPC code to retrieve room listing
-
- Revision 591.55  2002/06/25 14:21:35  error
- * remove a debugging trap I accidentally left in the code
-
- Revision 591.54  2002/06/24 20:17:43  error
- * Fixed code for client segfault at login
-
- Revision 591.53  2002/06/24 20:11:00  error
- * Buffer overflow fixes and minor cleanup in IPC code
-
- Revision 591.52  2002/06/24 16:07:42  error
- * Message reading and other functions which use the fmout() screen
-   formatter now use the new IPC code.
-
- Revision 591.51  2002/06/22 20:09:16  error
- * Use a new IPC API (in citadel_ipc.c).  Partially converted citadel.c to
-   use the new API.
-
- Revision 591.50  2002/06/21 12:32:48  ajc
- * Minor documentation update
-
- Revision 591.49  2002/06/19 21:52:13  ajc
- * Support a transient room create as well
-
- Revision 591.48  2002/06/19 21:42:57  ajc
- * Added support for "transient goto" which allows entry into a private and/or
-   zapped room without putting the room [back] on your known rooms list.  This
-   is useful for the new administrative functions in WebCit (updating a user's
-   vCard without the Aide suddenly having that user's config room on their
-   list).
-
- Revision 591.47  2002/06/18 16:34:06  error
- * room_ops.c: Fix for old room record not being deleted when renaming
-   baseroom or aideroom
-
- Revision 591.46  2002/06/16 21:01:11  ajc
- * Allow Aides to create rooms in other users' namespaces (if global access
-   controls allow)
-
- Revision 591.45  2002/06/15 20:48:50  ajc
- * Fixed small bug in the e<X>pert mode toggle
-
- Revision 591.44  2002/06/15 20:14:55  ajc
- * Fixed a memory allocation bug in the vCard parser
-
- Revision 591.43  2002/06/15 17:53:59  error
- * citserver.c: MESG command can now send a different system message based
-   on the developer and client ID of the connected client
-
- Revision 591.42  2002/06/15 04:52:26  ajc
- * SpamAssassin connector is now configurable in <.A>ide <S>ysconfig <I>nternet.
- * Allow more than one SA server (it'll try 'em all)
- * Don't run SA for logged in users
-
- Revision 591.41  2002/06/14 20:42:56  ajc
- * Discovered that spamd works even without the Content-length: command, so I
-   was able to redo the spam checker to work without a temp file.
-
- Revision 591.40  2002/06/14 20:37:03  ajc
- * Disabled the spam strings checker I wrote a few days ago.
- * When receiving SMTP, check to see if spamd (the SpamAssassin daemon) is
-   running on the local machine.  If yes, run the message through it and
-   reject if spam.
-
- Revision 591.39  2002/06/12 03:42:21  ajc
- * "Suppress message prompts" has been changed to "Prompt after each message"
-   and of course the effect has been reversed.
- * "Be unlisted in userlog" has been moved to the end of the list of
-   configuration prompts, so it doesn't interrupt the flow of thought regarding
-   the prompting questions.
-
- Revision 591.38  2002/06/10 22:25:25  ajc
- * Configuration for spam filter
-
- Revision 591.37  2002/06/09 23:59:38  ajc
- * Started working on the spam filter
-
- Revision 591.36  2002/06/07 22:10:51  ajc
- * Added a new message function hook type EVT_SMTPSCAN which permits modules to
-   register hooks that can scan incoming SMTP messages and elect to reject them
-   (due to virus or spam content, for example).
-
- Revision 591.35  2002/06/07 03:22:13  ajc
- * Added a module "serv_mrtg" which allows activity reporting to MRTG
-   (http://www.mrtg.org) -- this will replace our stats program.
-
- Revision 591.34  2002/06/02 16:42:17  error
- * Support for Ctrl-W to erase a word when editing or at a prompt
-
- Revision 591.33  2002/05/31 18:34:04  nbryant
- better curses compatibility, and a couple makefile/configure tweaks
-
- Revision 591.32  2002/05/28 13:59:02  ajc
- * Removed the 'netsetup' and 'dnetsetup' utilities (obsolete)
-
- Revision 591.31  2002/05/24 19:58:13  ajc
- * Fixed the "idle timeout during paginator prompt" bug by reintroducting the
-   concept of a "half keepalive" and sending them during paginator prompts.
-
- Revision 591.30  2002/05/23 03:33:21  ajc
- * Added a GTSN (GeT list of SeeN messages) command
-
- Revision 591.29  2002/05/20 14:29:59  ajc
- * commands.c: fixed bug in the scan for idle_threshold= which didn't include
-   the = sign and ended up always setting this value to 0
-
- Revision 591.28  2002/05/17 03:57:30  ajc
- * When doing fixed_output() of converted HTML, output the whole block of
-   data at once instead of one character at a time
-
- Revision 591.27  2002/05/16 04:44:58  ajc
- * Reduce the number of socket writes when doing fixed_output() to avoid
-   getting killed by overhead.  (Thanks to IO for the insight)
-
- Revision 591.26  2002/05/14 15:25:34  error
- * room_ops.c: clarified aide message when room aide is removed
-
- Revision 591.25  2002/05/14 15:18:43  error
- * rooms.c: Print name of room aide if any when doing <i>nfo
-
- Revision 591.24  2002/05/14 01:33:18  error
- * Fixed some incredibly silly typos
-
- Revision 591.23  2002/05/14 01:27:18  error
- * Minor cosmetic changes, extraneous double spaces etc.
-
- Revision 591.22  2002/05/14 01:15:54  error
- * Idle threshold on the who list is now customizable in the citadel.rc
-
- Revision 591.21  2002/05/14 01:09:57  error
- * citadel.c: spacebar won't read New if there are no new messages
-
- Revision 591.20  2002/05/12 23:00:11  ajc
- * Removed an unused variable
-
- Revision 591.19  2002/05/12 22:57:04  ajc
- * Removed the unfinished moderation system.
- * CtdlForEachMessage() - only fetch metadata when hunting for messages with
-   a specified Content-type.  Serious performance boost.
-
- Revision 591.18  2002/05/05 17:33:09  error
- * screen.c: fix lack of beeps in curses mode
-
- Revision 591.17  2002/05/04 02:58:16  ajc
- * Documented a small protocol change for the STEL command
-
- Revision 591.16  2002/04/30 03:13:59  ajc
- * When sending a page that results in the receiver's Sent/Received Pages>
-   room to be created, don't automatically grant the sender access to that room.
- * Added a parameter to create_room() to implement the above
-
- Revision 591.15  2002/04/23 13:38:08  ajc
- * Minor docs update
-
- Revision 591.14  2002/04/21 21:28:06  ajc
- * Create the My Citadel Config> room along with the user account
-
- Revision 591.13  2002/04/20 03:00:01  ajc
- * One more fix for the RENAME command wrt namespaces.
-
- Revision 591.12  2002/04/18 18:44:36  nbryant
- don't use libtool -avoid-version for libcitserver - this might help for
- OpenBSD
-
- Revision 591.11  2002/04/17 04:35:06  ajc
- * Finished the IMAP RENAME command.  (I ended up using nested functions
-   because it made the task much, much easier.  We can fix it later or convert
-   it to C++ if we find this becomes a problem.)
-
- Revision 591.10  2002/04/15 13:25:47  ajc
- * Add error responses to imap_rename() and set up subfolder framework
-
- Revision 591.9  2002/04/14 22:42:49  ajc
- * Began implementing RENAME command in IMAP.
-
- Revision 591.8  2002/04/14 22:27:05  ajc
- * Added access control checking to CtdlRenameRoom()
-
- Revision 591.7  2002/04/14 22:11:22  ajc
- * New back end function CtdlRenameRoom() which is used to rename a room and/or
-   move it to a different floor.
- * cmd_setr() now uses CtdlRenameRoom() to do part of its work
-
- Revision 591.6  2002/04/10 03:58:40  ajc
- * Began work on IMAP RENAME
-
- Revision 591.5  2002/04/09 14:26:43  ajc
- * Allow INBOX to have subfolders.  There's no longer any reason not to.
-
- Revision 591.4  2002/04/05 22:31:59  error
- * Send time-of-day with pages sent via IMAP
-
- Revision 591.3  2002/04/05 14:34:02  ajc
- * Minor tweak to nested folder algorithm to handle nesting in mail root
-
- Revision 591.2  2002/04/05 04:25:56  ajc
- * Support nested folders in IMAP.  We might want to change the delimiter.
-
- Revision 591.1  2002/04/04 23:25:30  ajc
- * Experimental hacking to handle subfolderization in IMAP.  Seems to work ok
-   but it makes Mozilla mail hang.  Will investigate more later...
-
- Revision 591.0  2002/04/01 05:13:20  ajc
- * Tagged everything for 5.91 release
-
- Revision 590.168  2002/04/01 05:12:57  ajc
- * Prep for 5.91 release
-
- Revision 590.167  2002/03/29 04:43:15  ajc
- * Removed the BMBX command.  Mailbox security update now runs automatically when the
-   server starts and it sees data files version <5.91.
-
- Revision 590.166  2002/03/26 05:58:35  nbryant
- don't check for a database driver until after the openssl check is
- complete. if the ld paths aren't set up for the db installation this
- can interfere with the openssl check because it tries to run a program
- linked against the libraries we've been finding.
-
- Revision 590.165  2002/03/26 05:20:46  nbryant
- removed last vestiges of "#ifdef CIT_CLIENT" conditional compilation,
- which has been rendered unusable by the build system simplifications
-
- Revision 590.164  2002/03/26 05:13:32  nbryant
- fix monstrous shell script syntax in configure.ac
-
- Revision 590.163  2002/03/26 04:38:31  nbryant
-  * support autoconf 2.53
-  * make a note that people should be using libtool 1.4d
-  * cut some of the more pointless bells and whistles out of the configure
-    script in an effort to make it more maintainable
-  * modularized ipc_c_tcp.c and client_crypto.o so that they're not tied
-    to the curses stuff.
-  * timezone/daylight and other FreeBSD fixes
-  * more effort in the configure script to detect the common
-    bastardizations (ahem, ports) of Berkeley DB without falling down
-
- Revision 590.162  2002/03/25 03:09:39  nbryant
- fix warning on platforms where pthread_t may be a pointer
-
- Revision 590.161  2002/03/25 00:01:50  nbryant
-  * compatibility with Berkeley DB < 3.3
-  * squished symbol clashes with the OK symbol from curses in certain *n[iu]x
- distributions. this is kind of a pain in the ass, but I had to rename our
- OK to CIT_OK :-(
-
- Revision 590.160  2002/03/22 04:35:38  ajc
- * Handle vCard registration updates for users other than the one currently
-   logged in.  (Allows administrative editing of contact information.)
-
- Revision 590.159  2002/03/20 19:03:27  ajc
- * Don't re-declare timezone variables ('cuz FreeBSD chokes on that)
-
- Revision 590.158  2002/03/19 04:34:42  ajc
- * mime_parser.c: minor changes for easier porting between Citadel and WebCit
-
- Revision 590.157  2002/03/19 04:19:33  ajc
- * Saw what IO did with strchr() and did the same in a few more places
-
- Revision 590.156  2002/03/17 00:08:02  error
- * mime_parser.c: more robust parsing of Content-Type header
-
- Revision 590.155  2002/03/16 05:22:59  ajc
- * Post an error message to Aide> when unlink() is unable to delete old
-   database log files.
-
- Revision 590.154  2002/03/14 04:35:26  nbryant
- avoid symbol clash with curses' "timeout" function (which may be a macro
- in some versions)
-
- Revision 590.153  2002/03/14 04:24:20  nbryant
- support window resizing in curses mode
-
- Revision 590.152  2002/03/13 04:11:11  nbryant
- fix up minor gotcha introduced by fgets change
-
- Revision 590.151  2002/03/13 03:58:29  ajc
- * Site-configurable option "Allow system Aides to gain access to mailboxes"
-
- Revision 590.150  2002/03/13 03:34:38  nbryant
- /* when running in curses mode, the scroll bar in most
-    xterm-style programs becomes useless, so it makes sense to
-    pause after a screenful of pages if the user has been idle
-    for a while. However, this is annoying to some of the users
-    who aren't in curses mode and tend to leave their clients
-    idle. keepalives become disabled, resulting in getting booted
-    when coming back to the idle session. but they probably have
-    a working scrollback in their terminal, so disable it in this
-    case:
-  */
- if (!is_curses_enabled())
-       lines_printed = 0;
-
- Revision 590.149  2002/03/12 23:34:37  nbryant
- use ncurses in preference to curses if it's installed; it handles
- background colors properly on dtterm, has a larger color pair palette,
- and has a bigger terminal database than solaris curses
-
- Revision 590.148  2002/03/12 22:47:17  nbryant
- curses fix: map our normal color pairs into the 0-7 range instead of 1-8,
- in order to make our pairs fit on terminals such as dtterm where COLOR_PAIRS=8.
- map the white/blue color pair onto 8 instead of 9, but only if that slot
- is available; fall back on white/black otherwise.
-
- it seems there may be an off-by-one error in the color pair manpages for
- the various curses packages (?) if not, our 0 entry is unusable, but that's
- the DIM_BLACK color and we don't use it anyway.
-
- Revision 590.147  2002/03/12 22:17:20  ajc
- * Give mailbox owners access to "who knows room" command
-
- Revision 590.146  2002/03/12 21:08:03  nbryant
- support color under Solaris curses
-
- Revision 590.145  2002/03/12 19:59:40  ajc
- * Access control change: do not treat mailboxes as guessname rooms for Aides.
-   Open up INVT/KICK commands to non-Aides for their mailboxes.
-
- Revision 590.144  2002/03/12 04:30:52  nbryant
- if a filesystem node exists at /var/run/egd-pool, try to connect to it as
- the EGD (Entropy Gathering Daemon) or PRNGD (pseudorandom number
- generator daemon) socket and seed OpenSSL's RNG.
-
- this is necessary on solaris and other systems which lack /dev/urandom.
-
- Revision 590.143  2002/03/12 03:43:26  nbryant
- squished the last remaining calls to sprintf
-
- Revision 590.142  2002/03/12 03:36:55  nbryant
- replace calls to gets with fgets
-
- Revision 590.141  2002/03/12 03:19:09  nbryant
- more sprintf bashing. now the only ones left are in mime_parser
-
- Revision 590.140  2002/03/12 01:33:42  nbryant
-  - pass -Wcast-qual to gcc
-  - more sprintf bashing
-
- Revision 590.139  2002/03/12 00:03:43  nbryant
- more sprintf removals
-
- Revision 590.138  2002/03/11 06:00:21  nbryant
- use <db.h> before <db3/db.h> or <db4/db.h>
- this is the only way i can think of to make it work everywhere; people on
- systems like FreeBSD where the ports work the other way around will have to
- specify an extra -I flag in their CPPFLAGS variable.
-
- Revision 590.137  2002/03/11 05:42:46  nbryant
- removed all references to sprintf from several files (not all files yet)
- and replace with snprintf
-
- Revision 590.136  2002/03/11 04:16:20  nbryant
- warning fixes on sparc-sun-solaris2.8 with gcc 3.0.4, mostly for *printf
- format strings
-
- Revision 590.135  2002/03/11 03:55:24  nbryant
-  - fixes for building without OpenSSL
-  - setenv doesn't exist on all systems, use putenv instead
-  - support Solaris' curses implementation
-
- Revision 590.134  2002/03/09 22:52:04  ajc
- * Applied a patch submitted by <xperc@hotmail.com> to fix a potential buffer
-   overflow problem in lprintf().  I also did the same fix to cprintf().
-
- Revision 590.133  2002/03/09 16:47:57  ajc
- * Added BMBX to fix a problem
-
- Revision 590.132  2002/03/09 06:18:37  ajc
- * one more tweak
-
- Revision 590.131  2002/03/09 05:22:29  ajc
- * this should do it.
-
- Revision 590.130  2002/03/09 05:02:20  ajc
- * Attempts to fix the access control crap
-
- Revision 590.129  2002/03/08 05:42:02  ajc
- * Patch to allow invitations and admin access to mailbox rooms.  NEEDS TESTING!
-
- Revision 590.128  2002/03/07 04:30:37  ajc
- * Force recipient only in Mail>, not in all mailbox rooms
-
- Revision 590.127  2002/03/05 22:45:40  error
- * Autoconf fixes for DB4 support
-
- Revision 590.126  2002/03/05 04:47:49  ajc
- * vcard.c: another API update
-
- Revision 590.125  2002/03/04 05:29:39  ajc
- * Made a small API change to vcard.c for WebCit, brought the change over here too
-   in order to keep vcard.c identical everywhere.
-
- Revision 590.124  2002/03/03 06:48:25  ajc
- * Client and server options to disable self-service user account creation
-
- Revision 590.123  2002/03/03 06:31:58  ajc
- * Added password starred-out entry to newprompt() and strprompt()
- * Applied the above setting to password set/change in <.A>ide <U>seredit
-
- Revision 590.122  2002/03/03 06:18:45  ajc
- * Implemented the CREU server command to administratively create user accounts
- * Added the ability to create new user accounts to <.A>ide <U>seredit
-
- Revision 590.121  2002/03/03 06:05:16  ajc
- * Split up some of the code in order to prepare for user accounts to be
-   administratively created without logging in to them.
-
- Revision 590.120  2002/03/02 05:56:48  ajc
- * Properly implemented the network filter list.  Finished the server module and
-   did a client-side <.A>ide <S>ysconfig <F>ilterlist command.
-
- Revision 590.119  2002/03/01 04:24:20  ajc
- * Cosmetic change to Received: line
-
- Revision 590.118  2002/03/01 04:16:22  ajc
- * CtdlReadMessageBody() -- fixed bug that caused the prepend buffer to be
-   discarded instead of prepended.  "Received:" lines now work.
-
- Revision 590.117  2002/02/23 19:20:51  ajc
- * Do the use table purge in two phases to avoid crashy crashy
-
- Revision 590.116  2002/02/20 22:42:19  ajc
- * Started adding better management of source IP addressses in SMTP service
-
- Revision 590.115  2002/02/15 04:28:57  ajc
- * Wrote the expire/purge routine for the new use table
-
- Revision 590.114  2002/02/15 04:05:08  ajc
- * Began implementation of a networker use table that doesn't chew up oodles
-   of CPU time.  (It uses a cdb instead.)
-
- Revision 590.113  2002/02/15 03:40:06  ajc
- * Stu's changes (which he checked in without making any ChangeLog comments,
-   bad Stu!) didn't build properly without curses.  Added #ifdef's.
-
- Revision 590.112  2002/02/13 22:15:10  ajc
- * That was stupid.
-
- Revision 590.111  2002/02/13 22:04:11  ajc
- * added vcard_to_html() function
-
- Revision 590.110  2002/02/13 15:48:55  ajc
- * Allow the READ command to return packets bigger than 1 byte.  (ooops!)
-
- Revision 590.109  2002/02/12 20:15:25  ajc
- * Threw in a few more #ifdef's so the client build doesn't barf on
-   non-curses systems
- * Added rc_prompt_control (<N>ext/<S>top active at paginator: on/off/user)
-
- Revision 590.108  2002/02/11 15:52:10  ajc
- * Don't crash when deleting "purge this vCard" messages
-
- Revision 590.107  2002/02/10 22:36:41  nbryant
-  - replace cdb_trunc with a complete version of the code i had been
-    working on; fallback code for db < 3.3.x needed
-  - change 'can't connect to host.port' to 'can't connect to host:port'
-
- Revision 590.106  2002/02/08 22:39:08  ajc
- * If there's already a Subject line in memory, display it below the usual
-   headers when the user hits <E>
-
- Revision 590.105  2002/02/08 22:36:23  ajc
- * Changed the logic for printing RFC822 addresses (again)
- * Implemented cdb_trunc() in database_sleepycat.c, using db_truncate()
-   (We need to either provide an alternative implementation or require DB >=3.3)
- * Automatically Re: subject line in the client where appropriate
-
- Revision 590.104  2002/02/08 19:02:25  ajc
- * Added client and server side support for entering Subject lines in
-   messages when not using RFC822.
-
- Revision 590.103  2002/02/08 18:10:07  ajc
- * When outputting a message in non-RFC822 format, don't display an Internet
-   address if the user is local.
-
- Revision 590.102  2002/02/07 04:42:49  ajc
- * Silently refuse to add directory entries for Internet addresses already
-   belonging to other users.
- * cdb_trunc() for CtdlDirectoryInit: implemented for GDBM, stubbed for DB
-
- Revision 590.101  2002/02/05 05:05:53  ajc
- * Don't crash when posting if the user doesn't have an Internet directory address
-
- Revision 590.100  2002/02/03 15:29:03  error
- * fixed a silly oversight in serv_crypto.c when removing the ETLS command
-
- Revision 590.99  2002/02/03 15:21:48  error
- * Remove the ETLS command, it is no longer needed
-
- Revision 590.98  2002/02/02 21:44:04  ajc
- * If a user has at least one valid Internet directory address, stamp it onto
-   any outgoing messages.
-
- Revision 590.97  2002/02/01 05:11:26  ajc
- * Added a QDIR protocol command to do quick-and-dirty queries of the directory
- * In the client, check the directory for conflicts when selecting email addr.
-
- Revision 590.96  2002/01/31 05:13:44  ajc
- * When deleting a vCard from the Global Address Book room, remove the
-   corresponding address in the directory.  (Not tested.)
-
- Revision 590.95  2002/01/30 19:03:41  ajc
- * Added a new DeleteFunctionHook type of thing.  These get called when a
-   message is being deleted from a room.
- * When deleting messages from a room, do the AdjRefCount() calls (and now,
-   the PerformDeleteHooks() calls) in a second pass.  This keeps that stuff
-   outside of the S_QUICKROOM critical section.
-
- Revision 590.94  2002/01/27 06:39:45  error
- * file_ops.c: fixed bug in cmd_read() which could cause server to report
-   the wrong number of bytes for the client to download
-
- Revision 590.93  2002/01/26 21:33:38  ajc
- * More internet addressing and global directory stuff.  I think it's all working now
-   except for the purging of old entries.
-
- Revision 590.92  2002/01/26 11:02:37  error
- * citadel.spec cleaned up
-
- Revision 590.91  2002/01/26 09:23:40  error
- * setup now has a silent running mode (-q option) where it silently sets
-   defaults for everything.  This is intended for use in scripts such as
-   the RPM packages, eliminating a step from the installation process.
-
- Revision 590.90  2002/01/26 09:19:16  error
- * citadel.spec has been completely overhauled, we can make RPMs now!
-
- Revision 590.89  2002/01/26 04:59:57  ajc
- * smtp FROM command now validates sender using the validate_recipients() loop
-   (yeah, it's good for that too) making it directory-aware
-
- Revision 590.88  2002/01/26 04:01:10  error
- * Formatter now uses more of the available screen width
-
- Revision 590.87  2002/01/26 03:57:30  error
- * Revised status_line() display, it's much more compact now
-
- Revision 590.86  2002/01/26 03:50:26  error
- * Better error reporting in connection_died(), kills curses before printing
-   error message, prints last errno.
-
- Revision 590.85  2002/01/25 05:19:03  ajc
- * Greatly simplified the logic for validating recipient addresses for incoming
-   SMTP.  This logic destroys the whitespace mangling for local names; I will
-   fix this tomorrow.
-
- Revision 590.84  2002/01/25 04:36:35  ajc
- * fixz to allow incoming vCards in the address book to actually get processed
-
- Revision 590.83  2002/01/24 06:52:54  error
- * citadel_decls.h: fix unresolved extern errors
-
- Revision 590.82  2002/01/23 05:04:05  ajc
- * Add vCards from incoming network messages in the GAB to the directory.
-
- Revision 590.81  2002/01/23 03:39:32  ajc
- * Added a new hook type for handling incoming network messages
- * Wrote a skeleton module for net filtering
-
- Revision 590.80  2002/01/22 10:46:25  error
- * read_message() and fmout() now accept a FILE to which to send their
-   output; this fixes quoting in the fullscreen client
-
- Revision 590.79  2002/01/20 08:03:43  error
- * curses client: use the status line as "input" line in chat mode
-
- Revision 590.78  2002/01/20 07:43:07  error
- * serv_chat.c: Server no longer crashes when CHATLOG can't be opened
-
- Revision 590.77  2002/01/20 05:22:07  error
- * curses client:  allow goodbye message to be seen on some terminals
-
- Revision 590.76  2002/01/19 16:56:31  error
- * Fixed color support, now works when rc_ansi_color is on or auto
-
- Revision 590.75  2002/01/19 15:10:25  error
- * Cosmetics for the client status line
-
- Revision 590.74  2002/01/19 11:59:33  error
- * A real status line for the text client
-
- Revision 590.73  2002/01/19 10:08:43  error
- * fix link for libcitserver.so to tools.o which I broke (oops!)
-
- Revision 590.72  2002/01/19 09:59:08  error
- * Full-screen curses support for Citadel text client
-
- Revision 590.71  2002/01/17 20:11:05  nbryant
- remove lock.c/lock.h; don't need them for what i was planning after all
-
- Revision 590.70  2002/01/17 10:48:36  error
- * cosmetic fixes in the new trace file functionality
-
- Revision 590.69  2002/01/17 10:32:14  error
- * lprintf() now logs the session ID for each log entry within a session.
-   Also SMTP, IMAP, POP3 and Citadel protocol commands are differentiated.
-
- Revision 590.68  2002/01/17 10:16:09  error
- * migratenet.c: cygwin fix: include limits.h
-
- Revision 590.67  2002/01/17 10:13:31  error
- * serv_ical.c: set expire policy for My Calendar> to manual
-
- Revision 590.66  2002/01/17 07:18:11  ajc
- * Changed all "free software" references to "open source" in order
-   to piss off Richard Stallman
-
- Revision 590.65  2002/01/17 00:22:35  nbryant
- added lock.[ch]: recursive read/write locking support. (not actually used yet)
-
- Revision 590.64  2002/01/15 12:41:53  error
- * Implement alternate_semantics (see comments in citadel.rc file)
-
- Revision 590.63  2002/01/15 11:07:51  ajc
- * vcard.c: updated vCard "object methods" to handle multiple instances of
-   the same key name when necessary.
-
- Revision 590.62  2002/01/15 06:38:39  error
- * Update citadelapi.txt with CtdlUnregister* calls, LogHook calls
-
- Revision 590.61  2002/01/15 06:20:18  error
- * Modules can now unregister any of their hooks (though none yet take
-   advantage of this).
-
- Revision 590.60  2002/01/14 08:49:13  error
- * Fixed bug in cmd_cre8() causing protocol to get out of sync when creating
-   a new room
-
- Revision 590.59  2002/01/13 04:46:31  ajc
- * Allow incoming SMTP to relay to other Citadel nodes for whom we are
-   providing directory service.
-
- Revision 590.58  2002/01/13 04:06:33  ajc
- * Repaired the problems I created when moving the_mime_parser()'s variables
-   from the stack to the heap.  (Hint: sizeof(char *) is 4, not 4096)
-
- Revision 590.57  2002/01/11 15:46:57  error
- * Allow users to move/copy messages between personal rooms
-
- Revision 590.56  2002/01/11 04:59:00  ajc
- * Finished most of the work for the Global Address Book.
-
- Revision 590.55  2002/01/11 04:37:03  ajc
- * More code for the Global Address Book
-
- Revision 590.54  2002/01/11 02:57:35  error
- * Don't print **** when sending a page or mail from an anonymous-only room
-
- Revision 590.53  2002/01/10 21:22:37  ajc
- * Minor changes for global directory service
-
- Revision 590.52  2002/01/10 04:29:28  ajc
- * Minor updates for directory service
-
- Revision 590.51  2002/01/09 23:12:40  ajc
- * Allow users to zap mailbox rooms
-
- Revision 590.50  2002/01/09 04:37:32  ajc
- * Finished the callback stuff for vCard address extraction
-
- Revision 590.49  2002/01/09 04:05:53  ajc
- * Began writing code to harvest Internet e-mail addresses from vCards, and
-   hacked together a temporary version (and writeup) of the IGAB command.
-
- Revision 590.48  2002/01/08 16:34:22  ajc
- * serv_vcard.c: cosmetic cleanup
-
- Revision 590.47  2002/01/06 22:44:21  error
- * Enable/disable encryption in client from command line and/or citadel.rc
-
- Revision 590.46  2002/01/06 21:25:26  ajc
- * sysdep.c: in client_write(), handle redirect_fp and redirect_sock *before*
-   handling redirect_ssl, because these need to be done the same way regardless
-   of client session crypto
- * serv_crypto.c: pasted a bunch of Nathan's #ifdef blocks from sysdep.c in
-   order to gain greater portability (or even to get it to compile on splorph)
-
- Revision 590.45  2002/01/06 11:13:33  error
- * Enable SSL/TLS support in the client (again)
-
- Revision 590.44  2002/01/06 11:11:31  error
- * Enable SSL/TLS in the client
-
- Revision 590.43  2002/01/06 10:49:55  error
- * Add some #includes I apparently somehow missed
-
- Revision 590.42  2002/01/06 10:33:10  error
- * SSL/TLS support for the Citadel wire protocol
-
- Revision 590.41  2002/01/06 08:54:58  error
- * user_ops.c: fixed become_session() when calling EVT_LOGOUT session hooks
-
- Revision 590.40  2002/01/05 22:31:22  ajc
- * Removed some protocol commands and writeups that are no longer necessary
- * Began some of the framework for the Global Address Book
-
- Revision 590.39  2002/01/05 12:44:43  error
- * serv_chat.c: allow a session to be killed while in chat
-
- Revision 590.38  2002/01/05 12:31:04  error
- * user_ops.c: become_session() when calling EVT_LOGOUT session hooks
-
- Revision 590.37  2002/01/05 04:51:36  error
- * stats now sorts its top 20 lists properly
-
- Revision 590.36  2002/01/04 20:57:36  nbryant
- cygwin fix
-
- Revision 590.35  2002/01/04 20:46:26  nbryant
- Makefile fix for cygwin (fix migratenet linkage)
-
- Revision 590.34  2002/01/04 20:43:26  nbryant
- configure/genstamp: check for struct tm.tm_gmtoff
-
- Revision 590.33  2002/01/03 22:01:17  ajc
- * Fixed mail to "sysop"
-
- Revision 590.32  2002/01/03 21:35:07  ajc
- * I think this is the last of the fixes for the new submit queue.
-
- Revision 590.31  2002/01/03 12:27:35  error
- * Fixed my name in docs/copyright.txt, why didn't I notice that before?
-
- Revision 590.30  2002/01/03 12:21:02  error
- * Autoconf support for recognizing OpenSSL
-
- Revision 590.29  2002/01/03 04:52:28  ajc
- * serv_network.c: migrated deliveries and bounces to the new message
-   submission subsystem.  NOT TESTED.
-
- Revision 590.28  2002/01/01 21:32:10  ajc
- * Finished the updates to serv_smtp.c, although I think there may be a
-   problem with one-too-many reference counts when a message is submitted
-   via SMTP.
-
- Revision 590.27  2001/12/31 20:15:13  ajc
- * Almost finished converting serv_smtp.c to the new message submission
-   framework.  Still not done yet; don't use this.
-
- Revision 590.26  2001/12/30 06:20:46  error
- * More keys while reading messages:  Q or S same as Ctrl-C, N same as Ctrl-O.
-
- Revision 590.25  2001/12/30 05:50:46  error
- * Security:  Citadel now drops privileges when called from telnetd, also
-   checks to make sure you didn't set the setuid/setgid bits.  No more
-   loginwrapper.sh!
-
- Revision 590.24  2001/12/29 05:19:32  ajc
- * Minor cosmetic hack
-
- Revision 590.23  2001/12/29 04:21:22  nixo
- stupid me. I didn't realize that asking for the header did what I wanted
- so I changed my little 'y' hack to not bother reading the text of the
- message. a little saving on the bandwidth.
-
- Revision 590.22  2001/12/28 22:32:38  nixo
- Added a "read m<y> next" function in read mode. It will skip to the next
- message by the user in the current message list (whatever mode you're in
- be it read forward, last 50, whatever.)
-
- Revision 590.21  2001/12/28 11:06:53  error
- * More server support for hostnames up to 63 characters (oops I missed a spot)
-
- Revision 590.20  2001/12/28 09:39:10  error
- * Client support for hostnames up to 63 characters: truncated at 24 in
-   short who list, full display in long who list.
-
- Revision 590.19  2001/12/28 09:28:04  error
- * Server support for hostnames up to 63 characters
-
- Revision 590.18  2001/12/26 05:01:30  ajc
- * Added a new developer ID for Anticlimactic Teleservices
-
- Revision 590.17  2001/12/23 10:00:43  error
- * Pages are once again formatted to the caller's screen width.
-
- Revision 590.16  2001/12/23 09:57:47  error
- * tools.c: added parameter to fmt_date() to allow for printing the seconds
-   along with the time, e.g. 12:34 pm or 12:34:56 pm
-
- Revision 590.15  2001/12/20 04:54:26  ajc
- * If you paid for this software, someone is ripping you off.
-
- Revision 590.14  2001/12/18 08:24:56  nbryant
- more lovely configure tweaks (include paths for db)
-
- Revision 590.13  2001/12/18 06:04:08  ajc
- * Moved the buffers in the_mime_parser() from the stack to the heap, because
-   it was crashing boxen with small stack sizes.
-
- Revision 590.12  2001/12/18 05:54:16  ajc
- * Added more load_floorlist() commands to the beginning and end of functions
-   in the client that manipulate the floor list.  This fixes a bug in which
-   new floors don't show up right away after being created.
-
- Revision 590.11  2001/12/17 08:14:26  nbryant
- restored the checks for /usr/include/db3 and /usr/local/include/db3
- in configure.  there are too many variations on db installation; this is
- getting messy :-(
-
- Revision 590.10  2001/12/17 08:00:45  nbryant
- set the pthreads stack size to 128K because FreeBSD's default of 64K
- seems too small. fixes crashes under FreeBSD.
-
- Revision 590.9  2001/12/16 00:50:14  error
- * Added usersupp.lastcall to the parameters returned from the PASS/PAS2
-   commands in logged_in_response().
-
- Revision 590.8  2001/12/14 21:33:18  nbryant
- finally changed configure to complain if there's no database driver ;)
-
- Revision 590.7  2001/12/14 08:29:30  error
- * Security: trace file is now only readable by owner, since it contains
-   plain text passwords.
-
- Revision 590.6  2001/12/14 07:04:24  ajc
- * Now you can send mail to yourself.  Hi from Stu.
-
- Revision 590.5  2001/12/14 06:58:12  ajc
- * Hi from Stu
-
- Revision 590.4  2001/12/13 22:36:30  nbryant
- make configure search for /usr/local/BerkeleyDB.4.0
-
- Revision 590.3  2001/12/13 22:29:57  nbryant
- make it compile with Berkeley DB 4.0.x
-
- Revision 590.2  2001/12/11 21:31:07  nbryant
-  - test for -ldb3 before -ldb
-
- Revision 590.1  2001/12/11 20:04:41  nbryant
-  - fix library flags, includes for portability
-  - malloc.h is deprecated
-  - fix genstamp, hopefully
-  - fix size_t *printf handling for portability
-
- Revision 590.0  2001/12/08 03:31:41  ajc
- * THIS IS 5.90
-
- Revision 580.95  2001/12/08 03:30:37  ajc
- * Final changes to networking docs for 5.90
-
- Revision 580.94  2001/12/06 05:13:34  ajc
- * Added the documentation for room sharing and listserv
-
- Revision 580.93  2001/12/04 05:24:15  ajc
- * Added two more bytes to the possible length of shared secrets in networking
-   due to some legacy support requirements.
-
- Revision 580.92  2001/12/04 05:16:19  ajc
- * mime_parser.c: change to memory allocation algorithm ... some badly done
-   messages were crashing the server
-
- Revision 580.91  2001/12/03 22:48:16  ajc
- * ooops.  Look for the QR2_SYSTEM flag in QRflags2, not QRflags.
-
- Revision 580.90  2001/12/03 17:02:50  ajc
- * dynloader.c: fixed improperly done declaration and mallok()
-
- Revision 580.89  2001/12/03 04:28:02  ajc
- * mime_parser.c: now uses built-in functions to decode base64 and
-   quoted-printable attachments, instead of piping data to outboard programs.
-
- Revision 580.88  2001/12/03 02:45:46  ajc
- * Began implementing some code to handle multiple recipients (but #define'd
-   it all out because we're approaching a release)
-
- Revision 580.87  2001/12/03 01:50:17  ajc
- * When sending mail, copy to the sender's "Sent Items>" room instead of to
-   the sender's "Mail>" room.
-
- Revision 580.86  2001/12/02 23:36:24  ajc
- * On a new system, set the default new user level to 4 instead of 1.
-
- Revision 580.85  2001/12/02 23:27:01  ajc
- * Removed references to the old networker from the documentation.  Did not
-   write any new documentation, so what's there now is kind of sparse.
-
- Revision 580.84  2001/12/02 02:42:55  ajc
- * Implemented new room flag QR2_SYSTEM which supresses the room from all
-   room listings, even for Aides (but it's still gotoable).  This will be used
-   for rooms which hold system configuration and message queues.
-
- Revision 580.83  2001/12/01 19:23:26  ajc
- * clientsocket.c: implement socket timeouts for read operations
-
- Revision 580.82  2001/12/01 17:00:23  ajc
- * serv_smtp.c: when multiple MX's are the same preference, randomize them
-
- Revision 580.81  2001/12/01 07:18:28  ajc
- * Fixed an SMTP delivery problem that was causing certain classes of
-   transient errors to cause a message to never be delivered.
-
- Revision 580.80  2001/12/01 05:26:01  ajc
- * Added a command "SMTP" to the Citadel protocol, to do some unimportant
-   utility/diagnostic functions.
-
- Revision 580.79  2001/11/27 17:08:29  ajc
- * When calling an external editor, set the environment variable
-   WINDOW_TITLE to an appropriate value.
-
- Revision 580.78  2001/11/26 03:27:08  ajc
- * new algorithm to load the use table
-
- Revision 580.77  2001/11/17 19:55:08  ajc
- * Updated some of the documentation
-
- Revision 580.76  2001/11/16 04:43:12  ajc
- * Eliminated the sock_puts_crlf() function and ensured that all SMTP client
-   commands are sent out using a single sock_write() call.  There are broken
-   SMTP server implementations that can't handle SMTP commands split across
-   multiple writes.  (Thanks to Andru Luvisi and Ben Mehlman for the idea.)
-
- Revision 580.75  2001/11/15 04:11:30  ajc
- * hack.doc: updated to reflect Cit86Net compatibility fields removed from the
-   file format (since we dumbed down the gateway software)
- * ipc_c_tcp.c: removed SOCKS4 support.  Nobody uses it anymore.
- * ipc_c_tcp.c: fixed a bug which caused the client to fall back to defaultPort
-   if a numeric port number was specified instead of a service name
-
- Revision 580.74  2001/11/14 02:59:01  ajc
- * Network run frequency is now a site-definable setting
-
- Revision 580.73  2001/11/13 22:05:23  ajc
- * Re-introduced the ability to enter IGnet mail into the system.
-
- Revision 580.72  2001/10/29 22:59:22  ajc
- * Renamed "SuppMsgInfo" to "MetaData" because that's what it is
-
- Revision 580.71  2001/10/29 16:39:54  ajc
- * Finished the migratenet utility (finally).
-
- Revision 580.70  2001/10/28 05:18:51  ajc
- * migratenet almost finished
-
- Revision 580.69  2001/10/26 04:26:45  ajc
- * more work on the net migrator
-
- Revision 580.68  2001/10/23 03:37:33  ajc
- * Threw a few more lines of code into migratenet.c
-
- Revision 580.67  2001/10/20 18:10:50  ajc
- * migratenet.c: added (not even close to being finished)
-
- Revision 580.66  2001/10/17 21:07:20  nbryant
- further format string cleanups (for i686-linux type sizes)
-
- Revision 580.65  2001/10/17 20:41:07  nbryant
-  - declare *printf format specifiers if gcc detected
-  - format string fixes (compiles w/o warnings on alpha osf/1)
-
- Revision 580.64  2001/10/17 19:40:38  nbryant
- warning fixes and cleanups for 64-bit machines
-
- Revision 580.63  2001/10/16 20:47:37  nbryant
- - backed out -export-dynamic, it doesn't do anything and i've found the real
- problem
- - remove declaration for make_message
-
- Revision 580.62  2001/10/16 19:18:49  nbryant
- backed out that compiler detection change for Tru64. it's not incredibly
- important and results in broken autoconf macro expansions.
-
- Revision 580.61  2001/10/16 18:36:33  nbryant
- reinstate -export-dynamic for citserver in case libtool decides to build
- static libraries (why?)
-
- Revision 580.60  2001/10/16 18:21:53  nbryant
- add some explanatory text to bootstrap
-
- Revision 580.59  2001/10/16 17:43:53  nbryant
-  - further configure tweaks for FreeBSD and Tru64 Unix
-  - updated to latest libtool configure fragment
-  - there are two functions named make_message. (?) so declare them both
-    static.
-
- Revision 580.58  2001/10/16 01:48:55  nbryant
- - configury tweaks for a /usr/include/db3 goof and Digital/Tru64 Unix
- - #ifdef out inline on non-GCC compilers
-
- Revision 580.57  2001/10/15 19:50:50  ajc
- * Fixed a bug in the loopzapper that was corrupting the use table saved copy.
- * Post notification in Aide> when the loopzapper catches a message.
-
- Revision 580.56  2001/10/12 22:41:11  ajc
- * Wrote the rest of the use table code.  Finished except for a bug.
-
- Revision 580.55  2001/10/10 18:35:12  ajc
- * Comments & cosmetics for previous update
-
- Revision 580.54  2001/10/10 17:12:54  ajc
- * Bugfix for MSG0 command to properly handle multipart/alternative
-
- Revision 580.53  2001/10/06 21:32:29  ajc
- * Finished the concurrency check for network polling.  (Now works both for
-   polling and being polled.  Severe UUCP deja vu.)
-
- Revision 580.52  2001/10/06 20:28:06  ajc
- * Began implementing some concurrency stuff for the networker
-
- Revision 580.51  2001/10/06 19:51:47  ajc
- * Stripped the build of obsolete parts of the old networker no longer in use.
-
- Revision 580.50  2001/10/03 20:05:50  ajc
- * serv_smtp.c: implement RFC2920 ESMTP "pipelining" extension on the server
-   side.  (No changes required other than advertising the extension.)
-
- Revision 580.49  2001/10/03 03:15:16  ajc
- * Implemented BOUNCE BOUNCE BOUNCE
-
- Revision 580.48  2001/10/02 03:04:30  ajc
- * Allow non-Aides to terminate sessions belonging to them
-
- Revision 580.47  2001/09/24 18:55:13  ajc
- * Completed migrating the "netpoll" utility into the serv_network module.
-   Removed this utility.
-
- Revision 580.46  2001/09/21 20:58:25  nbryant
- support different log_archive prototype in DB versions prior to 3.3
-
- Revision 580.45  2001/09/20 04:17:10  ajc
- * Inbound network authentication working.  Fixed a bug in the split-horizon
-   algorithm.  Still need to move the 'netpoll' command into the server.
-
- Revision 580.44  2001/09/18 04:05:04  ajc
- * Added host/IP and port to node config (client side only)
-
- Revision 580.43  2001/09/17 23:55:45  ajc
- * Support for IGnet routing (not tested)
-
- Revision 580.42  2001/09/16 05:44:51  ajc
- * serv_smtp.c: instead of doubling delivery retry times unbounded, set a
-   maximum retry time of SMTP_RETRY_MAX (currently set to 12 hours)
-
- Revision 580.41  2001/09/09 16:19:29  error
- * Updated PAM configuration file citadel.pam for Red Hat 7.x.
-
- Revision 580.40  2001/09/09 03:19:38  ajc
- * cdb_cull_logs() now removes log files as soon as the log_archive() function
-   says it's ok to do so.
-
- Revision 580.39  2001/09/08 18:58:38  ajc
- * More changes to the new networker.  Added client command for room sharing.
-
- Revision 580.38  2001/09/07 04:05:27  ajc
- * You guessed it: still more code for the new networker.
-
- Revision 580.37  2001/09/06 05:47:29  nbryant
- check for /usr/include/db3 (for RedHat 6.2; others?)
-
- Revision 580.36  2001/09/06 05:23:14  nbryant
- #include fix for glibc 2.1.3
-
- Revision 580.35  2001/09/06 04:02:34  ajc
- * A few more updates to the networker
-
- Revision 580.34  2001/09/06 03:32:41  nbryant
- build fix for sparc-sun-solaris2.8; i think the dependencies should be
- set up properly for all platforms now.
-
- Revision 580.33  2001/09/06 02:55:27  nbryant
- build fix for Linux
-
- Revision 580.32  2001/09/06 02:49:22  ajc
- * Fixed paste-post mode (<.E>nter <A>scii) to append instead of replace when
-   the user hits <C>ontinue (bug reported by Stu Mark)
-
- Revision 580.31  2001/09/06 01:26:39  nbryant
-  - port to Cygwin (DLL support, etc.)
-  - don't build SMTP module if there's no resolver library (eg on Windows)
-
- Revision 580.30  2001/09/06 00:54:01  nbryant
- updated to libtool 1.4.1 and automake 1.5
-
- Revision 580.29  2001/08/29 02:51:25  ajc
- * More work on the new networker.
-
- Revision 580.28  2001/08/25 05:04:57  ajc
- * Worked a little more on the in-server replacement for netproc
-
- Revision 580.27  2001/08/22 04:18:17  ajc
- * Realized that there was lots of similarly broken code in
-   process_rfc822_addr().  Wrote two new utility functions in tools.c
-   stripout() and stripallbut() and used them where appropriate.  This should
-   take care of all possible infinite loops.
-
- Revision 580.26  2001/08/22 03:43:11  ajc
- * internet_addressing.c: fixed a bug in process_rfc822_addr() that caused the
-   server to jump into an endless loop when an e-mail address contained
-   unbalanced angle brackets.
-
- Revision 580.25  2001/08/15 04:26:02  ajc
- * Added split horizon and delete-after-spool to the new networker
-
- Revision 580.24  2001/08/14 02:41:57  ajc
- * Began the migration of netproc into part of the serv_network.c module instead
-   of a standalone program.
-
- Revision 580.23  2001/08/11 22:35:40  nbryant
- updated citadel-with-berkeley-db.txt.
-  - updated build instructions
-  - improved backup procedures to be safer and more space-efficient.
-
- Revision 580.22  2001/08/11 19:18:41  ajc
- * Realized that I am stupid and started implementing server commands to load
-   and save network configurations, when I had already lovingly implemented the
-   CONF GETSYS and CONF PUTSYS commands to store arbitrary configuration sets
-   in the Local System Configuration> room.  Ripped the newer crap out.
- * Implemented a skeleton of <.A>ide <S>ysconfig <N>etwork on the client side.
-
- Revision 580.21  2001/08/11 03:51:56  ajc
- * Removed the idle timer from the client.  Dialup is dead.
-
- Revision 580.20  2001/08/06 21:33:29  nbryant
- made the client fall back on port 504 if there's no /etc/services entry
-
- Revision 580.19  2001/08/05 23:54:14  ajc
- * prep for new network node infrastructure
-
- Revision 580.18  2001/08/03 16:53:21  ajc
- * Added some more "break" statements to the main switch..case loop in
-   citadel.c where they were needed.
-
- Revision 580.17  2001/08/03 16:43:53  ajc
- * database_sleepycat.c: when running txn_checkpoint(), handle DB_INCOMPLETE
-   return code as a warning instead of an error worthy of aborting the server.
-   See http://www.sleepycat.com/docs/api_c/txn_checkpoint.html for explanation.
-
- Revision 580.16  2001/07/30 03:46:14  nbryant
- made ForEachUser use a read-only cursor, too. there is now only one piece of
- code in Citadel proper (not the database driver) that needs transactions.
- that's check_ref_counts; in other words it's the only thing standing in the way
- of a clean implementation of retryable transactions.
-
- Revision 580.15  2001/07/29 22:24:04  nbryant
-  - added a new function to the database interface, cdb_close_cursor().  always
- call this when you're finished with a traversal but didn't bother reading all
- the way to the end.
-
-  - removed several cdb_begin_transaction()/cdb_end_transaction() calls that are
- no longer needed because of the read-only cursor support.
-
- Revision 580.14  2001/07/29 20:56:09  nbryant
- change ForEachRoom to use read-only cursors by default. it can be overridden to
- still use read/write cursors by doing:
-
-  cdb_begin_transaction();
-  ForEachRoom(...);
-  cdb_end_transaction();
-
- the only place I found where it appears necessary to do so is check_ref_counts,
- so this checkin affects that function too.
-
- Revision 580.13  2001/07/29 20:06:33  nbryant
- generate symlinks to .libs in modules directory
-
- Revision 580.12  2001/07/28 00:02:50  nbryant
- implemented read-only cursors. one of the advantages to these is that
- transactions can be avoided; a cursor operation that occurs within a
- transaction will often acquire a read lock on every single database page.  in
- general, the Sleepycat documentation recommends avoiding transaction-protected
- read-only operations where practical. read/modify/write operations can still
- be transaction protected, of course.
-
- to use a read-only cursor, call cdb_rewind without a previous call to
- cdb_begin_transaction. the DB driver will notice this and prevent the current
- thread from modifying data or starting a transaction until the cursor is
- closed.
-
- Revision 580.11  2001/07/27 20:45:44  nbryant
- libtool has matured a lot since the last time i looked at it (years ago)
- so we now use it to handle the details of building shared libraries and
- the linker flags for the main executable.
-
- in theory this should bring a lot more portability to the dynloader
- subsystem and enable us to do things like transparently detect GNU vs Sun
- linkers on solaris, for example
-
- Revision 580.10  2001/07/27 03:29:04  nbryant
- missed one thing in the autoconf move
-
- Revision 580.9  2001/07/27 02:57:43  nbryant
- support one cursor per database rather than one global cursor
-
- Revision 580.8  2001/07/27 01:32:07  nbryant
- remove the automatic transaction demarcation on singleton read operations
-
- Revision 580.7  2001/07/26 21:43:46  nbryant
-  - move to autoconf 2.52
-  - random warning fix
-  - check for db 3.3
-
- Revision 580.6  2001/07/24 13:17:54  ajc
- * New UI for mailing list setup
- * rooms.c: code cleanup
- * docs update
-
- Revision 580.5  2001/07/20 23:48:23  nbryant
- fix build on solaris, check default install location for db 3.2, and silence
- gcc 3.0
-
- Revision 580.4  2001/07/16 14:24:30  ajc
- * Silly cosmetic change to keep the wholist ordered by ascending session number
-
- Revision 580.3  2001/07/13 00:01:36  ajc
- * Shuffled around some of the housekeeping loop code
-
- Revision 580.2  2001/07/11 17:01:10  ajc
- * database_sleepycat.c: small changes to log messages
-
- Revision 580.1  2001/07/11 04:35:40  nbryant
- moved dret initialization in cdb_fetch, just in case
-
- Revision 580.0  2001/07/03 03:07:06  ajc
- * THIS IS 5.80
-
- Revision 573.143  2001/07/03 03:06:50  ajc
- * Last minute doco update for 5.80
-
- Revision 573.142  2001/07/01 15:44:32  nbryant
- configure.in: check for Berkeley DB first.
-
- Revision 573.141  2001/06/27 23:34:30  ajc
- * Added some verbage to messages/roomaccess to placate a user who keeps
-   bitching about privacy policy.
-
- Revision 573.140  2001/06/19 03:41:04  ajc
- * Ooops... last_cull needs to be declared static
-
- Revision 573.139  2001/06/19 03:33:19  ajc
- * imap_fetch.c: download MIME parts without decoding first.  We like that.
- * database_sleepycat.c: added automatic culling of log files which have not
-   been written to in five days.
-
- Revision 573.138  2001/06/17 19:42:23  nbryant
- fix all the <time.h> vs. <sys/time.h> issues, hopefully
-
- Revision 573.137  2001/06/07 03:28:37  ajc
- * More tweaks to the MIME parser
-
- Revision 573.136  2001/06/06 15:44:37  ajc
- * msgbase.c: output extra newline at end of RFC822 message if necessary to
-   ensure that 000 termination string appears on a line by itself.
-
- Revision 573.135  2001/06/06 04:22:25  ajc
- * Moved memreadline() to tools.c
- * internet_addressing.c: fixed conversion of fields to (hopefully) never get
-   into an active loop when encountering badly formed headers
-
- Revision 573.134  2001/05/27 05:23:03  ajc
- * Added a "no new messages" response in the client, displayed when a read
-   command turns up a zero message count.
-
- Revision 573.133  2001/05/18 20:12:09  ajc
- * Fixed bug in mime_parser.c that caused parts to be dropped when the last
-   boundary was the very last line of the message.
- * serv_smtp.c: toned down some of the command response verbage.
-
- Revision 573.132  2001/04/28 04:42:55  ajc
- * Updated some of the docs.  Bumped version number to 5.80 in anticipation
-   of going into a release cycle soon.
-
- Revision 573.130  2001/04/26 03:31:00  ajc
- * Finished the implementation of per-message seen/unseen logic, both in the
-   server proper and in IMAP.  Citadel protocol uses new "seen" command.
-
- Revision 573.129  2001/04/21 04:55:51  ajc
- * Began implementation of per-message seen/unseen attribute
-
- Revision 573.128  2001/04/20 03:39:54  ajc
- * IMAP LIST/LSUB: made it case insensitive.  Also minor IMAP code cleanup.
-
- Revision 573.127  2001/04/17 00:35:19  cough
- * Modified rooms.c in the client so that it would allow inviting into
-   public rooms.  This is important since there is now a V_LOCKOUT
-   flag which prevents users who have been kicked from rejoining
-   a room unless/until you invite them back in.
-
- Revision 573.126  2001/04/16 19:21:14  cough
- * Fixed bug in room_ops.c that wasn't allowing aides to goto passworded
-   rooms without knowing the password.
-
- Revision 573.125  2001/04/14 04:26:44  ajc
- * Fixed an unterminated string bug in IMAP APPEND.  Storing messages should
-   work now.
-
- Revision 573.124  2001/04/10 01:04:10  ajc
- * Finished coding IMAP APPEND.  It works, but there's a bug in it somewhere
-   that is corrupting the memory.
-
- Revision 573.123  2001/04/03 00:47:23  ajc
- * Began implementing IMAP APPEND
-
- Revision 573.122  2001/04/01 22:05:44  cough
- * *Actually* fixed a botched ChangeLog entry.
-
- Revision 573.121  2001/04/01 22:04:28  cough
- * Fixed a botched ChangeLog entry.
-
- Revision 573.120  2001/04/01 22:03:10  cough
- * Changed two fclose()s to pclose()s.
-
- Revision 573.119  2001/03/25 11:52:36  error
- * serv_pop3.c: Fixed APOP. Now logs in properly. Also cleaned up some non-
-   RFC-compliant error messages.
-
- Revision 573.118  2001/03/21 05:47:49  ajc
- * Added the new IMAP mailbox string compare submitted by Daniel Malament.
-
- Revision 573.117  2001/03/20 01:33:55  ajc
- * Added the (\NoInferiors) tag to all rooms listed in IMAP.  This made Mozilla
-   behave very nicely.
-
- Revision 573.116  2001/03/13 17:19:33  ajc
- * support (BODY[HEADER.FIELDS(BLAH BLAH BLAH)]) and HEADER.FIELDS.NOT
-
- Revision 573.115  2001/03/12 01:27:42  ajc
- * Implemented SUBSCRIBE and UNSUBSCRIBE commands
-
- Revision 573.114  2001/03/11 23:00:29  ajc
- * Mega sexy hack to deliver express messages THROUGH IMAP!  uber coolness!!
-
- Revision 573.113  2001/03/11 22:09:20  ajc
- * Replaced the "citlogin" binary wrapper with the "loginwrapper.sh" script.
-
- Revision 573.112  2001/03/11 20:06:53  ajc
- * Fixed bug that created incorrect roomnames when sending pages
-
- Revision 573.111  2001/03/11 19:23:32  ajc
- * IMAP DELETE command ... also split up access control for room delete cmds
-
- Revision 573.110  2001/03/10 17:29:07  ajc
- * Implement proper access control for deleting messages from IMAP
-
- Revision 573.109  2001/03/07 04:02:27  ajc
- * Fixed some small IMAP bugs
-
- Revision 573.108  2001/03/06 04:44:00  ajc
- * Probable completion of STATUS, COPY, STORE, and EXPUNGE commands in IMAP
-
- Revision 573.107  2001/03/06 03:31:58  nbryant
- database-related cleanups and paranoia tests;
- fixed a transaction-leak/deadlock problem in cdb_delete;
- solved the SIGPIPE mystery (GDB stops on SIGPIPE is all it was)
-
- Revision 573.106  2001/03/05 04:59:31  ajc
- * IMAP COPY
-
- Revision 573.105  2001/03/04 23:49:41  ajc
- * IMAP EXPUNGE responses -should- be correct now
-
- Revision 573.94  2001/02/20 00:02:56  ajc
- * IMAP: implemented the STATUS command (sort of).
-
- Revision 573.93  2001/02/19 22:24:41  ajc
- * IMAP server: added untagged, unsolicited server messages for newly arrived
-   messages, and messages expunged by another session.
-
- Revision 573.92  2001/02/17 05:53:35  ajc
- * Repaired the creation of page log rooms in the wrong namespace when the
-   recipient does not yet have his/her log room created.
- * Rewrite "EXPI messages" to run in two passes: one to gather messages to
-   purge and the next to delete them.  Works better in transactionland.
-
- Revision 573.91  2001/02/14 08:11:27  error
- * citadel.rc: added RCS ID (it's about time!)
-
- Revision 573.90  2001/02/14 04:23:54  ajc
- * Fixed POP3 server responses ending in \n instead of \r\n as they should be.
-   This was causing some clients (such as Pine) to lock up.
-
- Revision 573.89  2001/02/13 04:06:14  ajc
- * Worked out the remaining bugs in IMAP FETCH for the BODYSTRUCTURE and
-   BODY[n] data items.  I think.  So much protocol crud, so little time...
-
- Revision 573.88  2001/02/13 01:18:44  ajc
- * imap fetch
-
- Revision 573.87  2001/02/12 04:31:34  ajc
- * sysdep.c ig_tcp_server() - use IPPROTO_TCP instead of getprotobyname()
-
- Revision 573.86  2001/02/08 04:45:58  ajc
- * Fixed namespace problems resulting from the automatic namespece prefixing
-   added to create_room().  Also added the ability to specify "create a mailbox
-   but I've already supplied the namespace prefix" for situations where the
-   namespace isn't that of the logged in user.
- * Made the POP3 server response messages slightly less humorous
-
- Revision 573.85  2001/02/06 04:44:12  ajc
- * Added a floor listing (complete with \NoSelect flag) to LIST and LSUB
-
- Revision 573.84  2001/02/06 02:09:38  ajc
- * citadel.rc: changed the default for local_screen_dimensions to 1, since
-   Internet users now outnumber dialup users 100 to 0.
- * room_ops.c: added a really_create option to create_room().  Also moved the
-   generation of personal namespace into that function.  MODULE OWNERS PLEASE
-   CHECK YOUR CALLS TO AVOID MULTIPLE NAMESPACING!!
- * room_ops.c: fixed a bug in cgetfloor() that left bad pointers around
- * serv_imap.c: finished the CREATE command (finally)
-
- Revision 573.83  2001/02/05 05:20:22  ajc
- * Made some changes to functions which translate between Citadel room names
-   and IMAP folder names.  They're still buggy.
-
- Revision 573.82  2001/02/04 23:17:28  ajc
- * Implemented the IMAP CREATE command
-
- Revision 573.81  2001/02/04 02:40:07  ajc
- * more imap.  imap sucks.  die crispin die.
-
- Revision 573.80  2001/02/03 10:02:12  error
- * serv_ical.c: Verify that objects posted to My Calendar> are of type
-   text/x-calendar or text/calendar; abort saving if not
-
- Revision 573.79  2001/02/03 09:30:46  error
- * serv_ical.c: now creates a My Calendar> personal room, sets attributes
-
- Revision 573.78  2001/02/03 08:21:00  error
- * serv_ical.c and serv_ical.h added; skeleton code for now
-
- Revision 573.77  2001/02/02 20:18:18  ajc
- * Changed the error message in cdb_delete() to actually *say* cdb_delete
-   instead of cdb_store.  Useful to know which function failed...
-
- Revision 573.76  2001/02/01 04:08:03  ajc
- * IMAP minor change to mailbox name output
- * Increased size of buffer in lprintf()
-
- Revision 573.75  2001/01/28 09:50:02  error
- * sysdep.c: lprintf() now generates timestamps
-
- Revision 573.74  2001/01/28 07:35:04  error
-  * serv_bio.c: RBIO now also returns stats about a user, see session.txt
-
- Revision 573.73  2001/01/16 04:03:13  ajc
- * yeesh ... more on the IMAP BODYSTRUCTURE
-
- Revision 573.72  2001/01/16 01:51:12  ajc
- * imap bodystructure
-
- Revision 573.71  2001/01/16 00:46:40  ajc
- * Changed the MIME parser API *again* because we now need the ability to
-   supply callback functions to be executed before and/or after parsing a
-   multipart.  (Need this for IMAP BODYSTRUCTURE output.)
-
- Revision 573.70  2001/01/15 23:59:26  ajc
- * user_ops.c: reject NULL password in CtdlTryPassword() instead of crashing
-
- Revision 573.68  2001/01/15 20:34:04  ajc
- * "Path:" removed for now because it confuses brain-dead Microsoft shitware
-   into thinking that mail messages are newsgroup messages instead.  When we
-   add NNTP support back into Citadel we'll have to add code to only output
-   this field when appropriate.
-
- Revision 573.67  2001/01/15 16:30:31  ajc
- * temporary implementation of 901 asynchronous express messages
-
- Revision 573.66  2001/01/14 14:55:39  ajc
- * Changed the format of <.W>holist <L>ong
-
- Revision 573.65  2001/01/13 06:40:26  nbryant
- merged remaining changes from TRANSACTIONS (using cvs update -j TRANSACTIONS)
- which should now be considered closed.
-
- Revision 573.64  2001/01/13 06:12:15  ajc
- * Added the ASYN command
-
- Revision 573.63  2001/01/12 22:05:46  ajc
- * Fixed a bug that caused bogus wholist lines to be displayed when a non-aide
-   reads a list containing stealth mode sessions.
-
- Revision 573.62  2001/01/09 05:39:45  ajc
- * Merged in code from the TRANSACTIONS branch for testing.
-
- Revision 573.61  2000/12/30 06:17:17  ajc
- * Still more work on IMAP.  Damn this is tedious.
-
- Revision 573.60  2000/12/30 04:55:05  ajc
- * more buffer size stuff
-
- Revision 573.59  2000/12/27 20:19:51  ajc
- * The size constant "256" which shows up everywhere as a buffer size has now
-   been changed to SIZ.  And, SIZ has been defined now as 1024, not 256, because
-   we need 1024 byte buffers for most Internet protocols.
-
- Revision 573.58  2000/12/27 05:09:58  ajc
- * Added a skeleton IMAP "SEARCH" command (based on the FETCH logic)
-
- Revision 573.57  2000/12/26 03:46:50  ajc
- * More IMAP tweaks
-
- Revision 573.56  2000/12/25 22:50:43  ajc
- * Added an API function to extract and unfold specific RFC822 fields.
- * imap-->fetch-->envelope-->in-reply-to now works
- * More robust checking and reporting of temp file errors in the client
-
- Revision 573.55  2000/12/25 20:43:24  ajc
- * imap_fetch.c: added support for fetch-->envelope-->from
-
- Revision 573.54  2000/12/20 04:09:24  ajc
- * A few memory handling fixes to netproc.
-
- Revision 573.53  2000/12/20 01:57:37  ajc
- * netproc.c: added bounds check to fpgetfield()
-
- Revision 573.52  2000/12/19 20:41:55  ajc
- * Fixed generation of unique file names for network uploads etc.
-
- Revision 573.51.2.11  2000/12/26 05:30:55  nbryant
- remove extraneous transaction around dynamic module initializations. this will
- fix the crash on database creation.
-
- Revision 573.51.2.10  2000/12/24 23:00:58  nbryant
- clean: also remove parsedate.c
-
- Revision 573.51.2.9  2000/12/20 01:38:42  nbryant
- require transactional cursors
-
- Revision 573.51.2.8  2000/12/20 00:30:01  nbryant
- release any stale db handles at the end of a server command
- (unfinished transactions will be aborted to annoy lazy programmers)
-
- Revision 573.51.2.7  2000/12/19 06:18:27  nbryant
- set sched_yield as sleepycat's yield function. this should improve locking
- performance.
-
- Revision 573.51.2.6  2000/12/19 02:22:29  nbryant
- added automatic transaction start/end on cdb_fetch, cdb_delete, and cdb_store
-
- Revision 573.51.2.5  2000/12/18 03:51:13  nbryant
- ditto S_USER_TRANS, S_CALLLOG, and S_HOUSEKEEPING, which are no longer used at
- all
-
- Revision 573.51.2.4  2000/12/18 02:49:17  nbryant
- removed all references to S_MSGMAIN critical section; it wasn't really needed.
- this should make things significantly more scaleable.
-
- Revision 573.51.2.3  2000/12/17 22:12:48  nbryant
- reworked shutdown sequence to wait for worker threads to terminate before
- checkpointing and closing databases. it is no longer safe to call
- master_cleanup() directly to force a shutdown; instead, just set
- time_to_die to a nonzero value
-
- Revision 573.51.2.2  2000/12/17 05:06:09  nbryant
- added deadlock detection and cleaned up messages
-
- Revision 573.51.2.1  2000/12/16 21:06:59  nbryant
- created TRANSACTIONS branch
- track cursor and transaction id's in thread-specific data
-
- Revision 573.51  2000/12/14 18:36:34  ajc
- * Fixed the "users not in chat" wholist display
-
- Revision 573.50  2000/12/12 18:06:46  ajc
- * Removed the transaction stuff (but left the log in).  It wasn't working.
-
- Revision 573.49  2000/12/12 06:19:55  ajc
- * Stabilize, dammit!!
-
- Revision 573.48  2000/12/12 04:20:03  ajc
- * Made the transaction open/close a global thing, in a frantic attempt to get
-   Uncensored to stop crashing.  More fixes on the way...
-
- Revision 573.47  2000/12/11 06:08:41  ajc
- * Removed the housekeeper thread, moved terminate_idle_sessions() out to a
-   timer event, and check_sched_shutdown() to the end of the worker thread
-   loop.  Seems to have improved reliability (but why?)
-
- Revision 573.46  2000/12/11 03:22:11  ajc
- * Added server-side REQT command to issue client termination requests
-
- Revision 573.45  2000/12/11 02:19:26  ajc
- * Client now honors EM_GO_AWAY flag, used by the server to request that a
-   client log off.  (The server doesn't support sending that flag yet, though)
-
- Revision 573.44  2000/12/09 06:20:06  ajc
- * A few final touches to the Sleepycat DB back-end
-
- Revision 573.43  2000/12/08 17:06:33  ajc
- * Wrap txn_begin and txn_end in S_DATABASE mutex
-
- Revision 573.42  2000/12/07 20:21:39  ajc
- * begin/end transaction in master_startup()
-
- Revision 573.41  2000/12/07 16:59:02  nbryant
- added --with-db and --with-gdbm options to configure
-
- Revision 573.40  2000/12/07 04:50:33  ajc
- * Wrap housekeeper and timer events in transaction open/close functions
- * Checkpoint the DB as an EVT_TIMER event instead of after each session
-   (runs each minute, but actually limited by the parameters of the function)
-
- Revision 573.39  2000/12/06 04:44:36  ajc
- * Changed netproc to keep the use table in a flat file instead of a database
-
- Revision 573.38  2000/12/05 05:32:58  ajc
- * Added support for non-USA country identities in vCard and registration
- * User edit now asks whether it should prompt to change the password
-
- Revision 573.37  2000/12/03 04:12:21  ajc
- * Finished (mostly) the Sleepycat DB backend ... added transaction logging
-
- Revision 573.36  2000/11/30 03:23:17  ajc
- * Got the Sleepycat DB back end working, by opening the databases in a non
-   shared, non threaded mode, and using Citadel's locking to serialize access.
-
- Revision 573.35  2000/11/29 05:00:02  ajc
- * I think the db stuff is ok, but my db library is fux0red...
-
- Revision 573.34  2000/11/27 14:12:09  error
- * commands.c: fixups to print_express() to make external command not print
-   extraneous stuff to the terminal and make the displayed message consistent
-
- Revision 573.33  2000/11/27 10:41:14  error
- * print_express(): now uses GEXP instead of old PEXP; displays timestamps
-
- Revision 573.32  2000/11/27 10:29:59  error
- * serv_chat.c: fix send_express_message() to include timestamps
-
- Revision 573.31  2000/11/27 03:44:27  ajc
- * Initial checkin of database_sleepycat.c (doesn't work yet)
-
- Revision 573.30  2000/11/26 05:24:22  ajc
- * msgbase.c: Added new API function CtdlOutputPreLoadedMsg(), and
-   re-implemented the existing CtdlOutputMsg() as a wrapper around it.
- * imap_fetch.c: used the above function to do all output pre-loaded
-
- Revision 573.29  2000/11/25 09:36:18  error
- * Added a bit of detail to syslog entries; now shows session id attached to
-   client, hostname, and username, and time the session ended.
-
- Revision 573.28  2000/11/25 06:17:06  ajc
- * Minor IMAP tweaks.  It still doesn't work.  :(
-
- Revision 573.27  2000/11/23 07:22:21  error
- * citadel.spec: update version number
-
- Revision 573.26  2000/11/21 11:12:56  error
-  * domain.h: changed the HP/UX compatibility code to use defines from
-    typesize.h for integers of specific bit widths (needed for Solaris, etc)
-
- Revision 573.25  2000/11/12 04:20:49  ajc
- * Optimized server side input of message text
-
- Revision 573.24  2000/11/10 03:55:06  ajc
- * Ford's Fix for Faster Functionality (save position during reply)
-
- Revision 573.23  2000/11/09 04:48:50  ajc
- * tools.c: striplt() strips all whitespace, not just spaces
-
- Revision 573.22  2000/11/07 20:47:21  ajc
- * imap_fetch.c: added a skeleton "ENVELOPE" fetch.  Currently sends NIL's.
-
- Revision 573.21  2000/11/07 15:54:53  ajc
- * xx FETCH n:n BODY[pn.MIME] now works
-
- Revision 573.20  2000/11/06 05:10:01  ajc
- * Changed the mime_parser() API (again) to allow "don't decode" mode
-
- Revision 573.19  2000/10/29 18:11:07  ajc
- * Start numbering top-level MIME parts as 1, 2... not 1.1, 1.2...
-
- Revision 573.18  2000/10/28 14:14:19  error
- * msgbase.c: eliminated most gotos; a single goto in alias() remains because
-   it actually makes sense to do it that way...
-
- Revision 573.17  2000/10/25 21:37:09  ajc
- * Implemented the AUTHENTICATE LOGIN command in IMAP
-
- Revision 573.16  2000/10/25 19:20:37  ajc
- * FETCH now works for ranges *and* sets, and with sequence numbers *and* UID's
-
- Revision 573.15  2000/10/24 20:39:59  ajc
- * Added RFC822, RFC822.HEADER, RFC822.SIZE, RFC822.TEXT fetch keys to IMAP
-
- Revision 573.14  2000/10/23 20:26:51  error
- * War on goto:  rewrote a few easy functions to eliminate unnecessary gotos
-
- Revision 573.13  2000/10/11 23:03:44  error
- * utilsmenu: obey $PAGER environment var, if any.  Default to more if neither
-   $PAGER nor less is available.
-
- Revision 573.12  2000/10/11 22:55:25  error
- * citadel.c: when ansi_color=user, enable color at login, so Lobby> posts
-   displayed at login are in color
-
- Revision 573.11  2000/10/11 22:47:51  error
- * domain.c: getmx() returns hostname as MX if no MX records found a la RFC 974
-
- Revision 573.10  2000/10/10 19:18:12  ajc
- * Added support of macros ALL, BODY, FAST, and FULL to the IMAP FETCH command
-
- Revision 573.9  2000/10/06 03:31:55  ajc
- * IMAP is a convoluted mess.
-
- Revision 573.8  2000/10/05 22:23:16  ajc
- * Slowly and painfully writing IMAP support
-
- Revision 573.7  2000/10/04 22:39:06  ajc
- * Added skeleton versions of the LIST and LSUB commands to the imap server
-
- Revision 573.6  2000/10/04 17:48:21  ajc
- * Allow Aides to zap rooms (site configurable setting)
-
- Revision 573.5  2000/10/03 01:45:00  ajc
- * Changed the <.A>ide <S>ysconfig <G>eneral command to explicitly allow the
-   global page log room to be disabled (answer "no" to set the log room to a
-   null string)
-
- Revision 573.4  2000/09/28 10:27:38  error
- * commands.c: changed stty_ctdl() to support HP/UX termios VMIN and VTIME
-
- Revision 573.3  2000/09/24 22:01:45  ajc
- * ipc_c_tcp.c: don't hardcode CTDLDIR path for unix domain sockets
-
- Revision 573.2  2000/09/21 04:16:44  ajc
- * Fixed logged_in_response() so it only displays responses during Citadel
-   protocol sessions.  (This was affecting POP etc.)
-
- Revision 573.1  2000/09/11 22:05:04  ajc
- * citadel.c: accept -h <host> and -p arguments, so citadel can be called
-   directly by telnetd, bypassing /bin/login.  It works, but not recommended at
-   this time because it has to run as root.
-
- Revision 573.0  2000/09/05 18:35:22  ajc
- * Tagged everything for version 5.73 release
-
- Revision 572.39  2000/09/04 03:59:15  ajc
- IO's changes:
- revision 572.4
- date: 2000/09/03 06:36:01;  author: error;  state: Exp;  lines: +5 -1
- Added HP/UX linker flag for dynamic modules to work
- revision 572.3
- date: 2000/09/01 06:50:00;  author: error;  state: Exp;  lines: +8 -1
- Changed to use integer macros from typesize.h for specific bit widths
-
- Revision 572.38  2000/09/01 20:17:08  ajc
- * msgbase.c: cmd_opna() - increase desired_section buffer from 64 to 256 bytes
-
- Revision 572.37  2000/09/01 17:31:47  ajc
- * Fixed oopseth in control.c that might call fileno(NULL)
-
- Revision 572.36  2000/09/01 13:37:16  ajc
- * control.c: chown citadel.control to ctdluid when opening/creating as root
-
- Revision 572.35  2000/09/01 03:55:44  ajc
- * Fixed a few more references to the deprecated uncnsrd.mt-kisco.ny.us name
-
- Revision 572.34  2000/09/01 03:43:09  ajc
- * Added 'author' command-line arg to aidepost.  Closes enhancement request
-   #71 on bugzilla.
- * Put the default SMTP and POP3 ports back to 25 and 110.  Now that the
-   unix domain socket bug is fixed, it's ok if these binds fail.
-
- Revision 572.33  2000/08/31 23:02:15  ajc
- * ig_tcp_server() and ig_uds_server()  -  check to make sure queue length is
-   always at least 5.  Zero-length queues can cause connection lockups.
-
- Revision 572.32  2000/08/31 21:32:44  ajc
- * Still trying to fix a socket connect bug
-
- Revision 572.31  2000/08/31 16:37:08  ajc
- * docs/import-export.txt: added.
-
- Revision 572.30  2000/08/28 19:51:51  ajc
- * messages.c: cosmetic cleanup (coding convention and comments)
-
- Revision 572.29  2000/08/26 20:23:18  ajc
- * Finished up the back end code for mailing list sends.  Sends now work!
-
- Revision 572.28  2000/08/24 02:48:18  ajc
- * Merged in IO ERROR's diffs to make Citadel work with HP/UX
-
- Revision 572.27  2000/08/22 02:31:47  ajc
- * nonce (for APOP-style auth) is now generated when a context is created
-   instead of during protocol greeting functions.
- * Moved Citadel protocol nonce output from greeting to INFO
-
- Revision 572.26  2000/08/18 21:09:36  ajc
- * Added a little more mailing list code to serv_network.c
-
- Revision 572.25  2000/08/10 04:36:25  ajc
- * Fixed a bug in keyboard polling (in commands.c) which was causing the
-   client protocol to get out of sync in certain conditions.
-
- Revision 572.24  2000/08/10 02:42:13  ajc
- * Changed all the "200 ok" responses to more descriptive strings
- * Added a *temporary* protocol sync check.  Remove this!
-
- Revision 572.23  2000/08/09 17:14:34  ajc
- msgbase.c: fixed a bug in
-           remove_any_whitespace_to_the_left_or_right_of_at_symbol() that was
-           causing the <R>eply function to fail on names with whitespace in
-           certain parts of the string.  This closes Bug #56.
-
- Revision 572.22  2000/08/05 04:24:00  ajc
- * Added [idle] to client wholist display for sessions idle >15 minutes
- * Added a generic "void *userdata" field to CtdlForEachMessage()
- * More prep for mailing list handling in the server
-
- Revision 572.21  2000/07/30 04:36:12  ajc
- * Set up the SNET (Send NETwork config) and GNET (Get NETwork config) commands
-   for the network overhaul.
-
- Revision 572.20  2000/07/29 05:29:19  ajc
- * Changed the format of RWHO output to provide non-masqueraded user/room/host
-   names (to Aides only) as additional fields rather than an extra line of
-   output.
- * Changed the client to display new RWHO fields, in the "long" wholist only.
- * Default SMTP and POP ports are now -1, not 25/110.  These services must now
-   be activated manually.
-
- Revision 572.19  2000/07/24 00:39:13  ajc
- * Fixed a path problem when calling netmailer from mailinglist.c
-
- Revision 572.18  2000/07/22 03:44:17  ajc
- * Prepared infrastructure for the networker rewrite
-
- Revision 572.17  2000/07/17 02:38:08  ajc
- * Completed serv_vandelay.c (importer/exporter module)
- * sendcommand.c: fix behavior of SEND_LISTING mode
- * sysdep.c: client_gets() fill buffer with "000" terminator when returning -1
-
- Revision 572.16  2000/07/14 03:06:55  ajc
- * Added .ATN (DOWN) and .ATS (SCDN 1) commands to the client
-
- Revision 572.15  2000/07/10 23:36:08  ajc
- * Another attempt to fix the crashy crashy bug in serv_vcard
- * Did more work on the Art Vandelay module
- * Replaced all instances of sprintf(tempfile, tmpnam(NULL)) with strcpy()
-
- Revision 572.14  2000/07/10 04:01:12  ajc
- * added an unfinished serv_vandelay.c (Art Vandelay module - importer/exporter)
-
- Revision 572.13  2000/07/09 02:47:40  ajc
- * Overhauled the keepalive logic in the chat client.  Closes bug #20.
-
- Revision 572.12  2000/07/09 02:27:02  ajc
- * Eliminated the whole SIGINT/SIGQUIT based handling of Ctrl-O and Ctrl-C
-   keyboard interrupts.  Replaced with a non-blocking check for keyboard input
-   which sets the global variable 'sigcaught' if either key was pressed.
-   fmout() and pprintf() switch to 'drain mode' if sigcaught is set.
-   This closes Bug #18.
-
- Revision 572.11  2000/07/06 20:26:36  ajc
- * updated .Help SUMMARY
-
- Revision 572.10  2000/07/04 20:02:46  ajc
- * Fixed potential crashy crashy bug in serv_vcard.c
-
- Revision 572.9  2000/06/28 03:42:56  ajc
- * Changed the comments at the beginning of each file to a consistent format
- * Improved the parameterization of commands in the IMAP module
-
- Revision 572.8  2000/06/27 01:27:13  ajc
- * Coupla very small changes to get on the road to IMAP support
-
- Revision 572.7  2000/06/22 21:41:48  ajc
- * Made the ICQ stuff far more reliable ... by removing it!
-
- Revision 572.6  2000/06/21 03:46:20  ajc
- * IMAP is now legal but useless, supporting NOOP, LOGIN, and LOGOUT.
-
- Revision 572.5  2000/06/15 20:15:52  ajc
- * Inserted a skeleton IMAP module into the build.  IT DOES NOT WORK AT ALL.
-
- Revision 572.4  2000/06/04 02:30:56  ajc
- * CtdlForEachMessage() now returns the number of messages processed.  It also
-   accepts the MSGS_EQ mode, for targeting a specific message number (useful
-   for determining whether the specified message actually exists in a room).
- * Completed the server side of the moderation system (serv_moderate.c module
-   which implements the MMOD command)
-
- Revision 572.3  2000/06/03 05:47:57  ajc
- * Replaced most of the very repetitive and very redundant access level checks
-   in most commands with a single API call:  CtdlAccessCheck()
- * serv_moderate.c: added (not finished)
-
- Revision 572.2  2000/06/02 03:38:50  ajc
- * Bind unix socket prior to TCP socket for citadel protocol
- * Fixed bug in sendcommand.c which was causing it to crash on attach
-
- Revision 572.1  2000/05/26 19:27:51  ajc
- * Changed some of the rev-level sensitive stuff to look at the actual version
-   of Citadel running, not the last version with which we ran setup
- * Added a moderation system.  Default filter level for new users is in the
-   config file.  Per-user setting is in usersupp.  Moderation level of each
-   message is in SuppMsgInfo.  Tweaked CONF, GETU, and SETU.  Read filter is
-   working.  Moderate message up/down commands are not here yet.  See
-   techdoc/moderation.txt for more info.
-
- Revision 572.0  2000/05/23 02:09:30  ajc
- * Updated docs and tagged everything for the 5.72 release
-
- Revision 571.7  2000/05/20 23:28:20  ajc
- * Fixed bug in client API that was causing netproc to crash
-
- Revision 571.6  2000/05/15 00:05:19  ajc
- * Double the retry interval for SMTP deliveries after each failed attempt.
-
- Revision 571.5  2000/05/11 03:08:47  ajc
- * serv_smtp.c: clear the relevant state buffers after an SMTP DATA command
-   completes, allowing multiple messages in one session.  Closes bug #58.
-
- Revision 571.4  2000/04/24 03:36:43  ajc
- * Removed references to strucmp() and struncmp(), replaced them with
-   strcasecmp() and strncasecmp() as we did in the server a while ago, and
-   set up the config script to figure out whether they need to be compiled
-   in.  Also moved them to tools.h
- * Wrote a password manager for the client
-
- Revision 571.3  2000/04/19 03:17:10  ajc
- * Don't ever expire the Local System Configuration> room
-
- Revision 571.2  2000/04/16 19:03:47  ajc
- * Minor changes to avoid host lookup for local clients
-
- Revision 571.1  2000/04/15 19:55:52  ajc
- * Fixed "Unvalidated users appear even with registration disabled" bug #36
-
- Revision 571.0  2000/04/13 02:43:24  ajc
- * Fixed a problem that crashed the client during <G>oto commands if a room
-   existed with a name more than 32 characters (thanks to Magus for reporting
-   this one).
- * Tagged everything and updated docs for the 5.71 release
-
- Revision 570.18  2000/04/10 01:47:22  ajc
- * More paginator changes.  Shuffled code around, added pagination to a bunch
-   of other functions, and replaced the old, cumbersome pagination with the
-   new, easy, API-based one in everything except message output.
-
- Revision 570.17  2000/04/09 17:51:18  ajc
- * Added pprintf() (paginated version of printf) to the client-side API.  Now
-   any client side function can be paginated simply by changing all of the
-   printf's to pprintf's.  I've already done this for the user list and wholist
-   (removing the old style pagination) and for "read directory."
-
- Revision 570.16  2000/04/08 04:52:48  ajc
- * Another minor stoopid little time display fix
-
- Revision 570.15  2000/04/08 03:58:12  nbryant
-  * backed out the previous changes since they didn't look good on some
-    xterms with a blue bold mode. just set the background color to black
-    instead. this makes black-on-white terminals actually readable, if not
-    particularly good looking.
-
- Revision 570.14  2000/04/08 01:36:30  nbryant
-  * citadel.c, commands.c: comment out cls() as this wasn't called if
-    ansi_color=user anyway, and we have no way of knowing whether the user's
-    terminal does background color erase, which was the reason for adding this
-    in the first place. with the recent changes to color(), the display will get
-    screwed up if they *do* have background color erase. perhaps this is a job
-    for terminfo.
-
- Revision 570.13  2000/04/08 00:37:42  nbryant
-  * commands.c: fix color support for black-on-white color terminals such as
-    CDE's dtterm. this just avoids white-on-white text; some color combinations
-    such as yellow-on-white still aren't very legible due to contrast. There's
-    not much I can think to do about that without affecting the look on the
-    white-on-black terminals which probably account for most users.
-
- Revision 570.12  2000/04/07 20:22:34  ajc
- * Fixed am/pm bug in time display
-
- Revision 570.11  2000/04/07 19:22:45  ajc
- * For services disabled by setting port number to -1, administratively skip
-   the bind instead of just allowing it to fail.
-
- Revision 570.10  2000/03/31 04:31:02  ajc
- * Quick fix to 'stats' utility to purge records with bogus timestamps
-
- Revision 570.9  2000/03/31 02:10:52  ajc
- * Caved in to pressure and enabled <R>eply in public rooms.
-
- Revision 570.8  2000/03/28 03:55:53  ajc
- * Modified <.RU> to allow search for partial match
-
- Revision 570.7  2000/03/27 03:08:19  ajc
- * Third parameter of CtdlDeleteMessages() now takes "" instead of NULL to
-   specify 'any MIME type'.
-
- Revision 570.6  2000/03/27 01:14:08  nbryant
-  * Makefile.in: generate parsedate.c automatically
-  * configure.in: check for bison/byacc/yacc. bison seems to build cleaner
-    code.
-  * parsedate.c: removed from CVS
-  * parsedate.y: added #include <stdlib.h> so it builds with bison
-
- Revision 570.5  2000/03/27 00:46:10  nbryant
-  * First cut at Solaris fixes. There may still be some *printf("%s", NULL)
-    type of issues lurking in the shadows.
-
- Revision 570.4  2000/03/25 18:29:58  nbryant
- changed my email address
-
- Revision 570.3  2000/03/23 02:41:50  ajc
- *** empty log message ***
-
- Revision 570.2  2000/03/21 03:23:24  ajc
- * Experimental new linebreak mode
-
- Revision 570.1  2000/03/20 14:43:19  ajc
- * "Brown paper bag" fix for SMTP bug (incoming long fields crash logger)
-
- Revision 570.0  2000/03/19 23:42:34  ajc
- * This is the official 5.70 release.
-
- Revision 1.494  2000/03/19 23:04:08  ajc
- * Small cosmetic change to date/time output
-
- Revision 1.493  2000/03/19 05:02:39  ajc
- * SMTP hacks to deal with AOL braindamage
-
- Revision 1.492  2000/03/18 18:18:04  ajc
- * Support multiline responses from SMTP servers when sending mail
-
- Revision 1.491  2000/03/17 16:26:57  ajc
- * Set up a private "Sent/Received Pages" room for each user
-
- Revision 1.490  2000/03/17 04:11:24  ajc
- * Moved bio-related commands out to a loadable module
-
- Revision 1.489  2000/03/16 17:58:54  smw
- Created a docs directory.
- Moved install.txt to docs.
- Added inetmailsetup.txt (Citadel server side e-mail)
- Added inetmailsetupmx.txt (local mail AND Citadel e-mail
- Added inetsiteconfig.txt (describes the .asi command)
- Added siteconfig.txt (describes .asg)
- Added chat.txt (describes changes and new chat functionality)
- Made a couple of changes to install.txt (references to new documentation)
- Added Steve Williams to copyright.txt as the document writer.
-
-Revision 1.488  2000/03/15 03:04:51  ajc
-* Added DEXP server command to disable incoming express messages.
-* <Q>uiet mode client side command to set/clear DEXP mode.
-* <K>nown rooms list displays through the paginator.
-
-Revision 1.487  2000/03/12 00:21:35  ajc
-* Removed the semi-broken "chat room" functionality in the chat system, and
-  replaced it with direct mapping to the actual Citadel room the user is in.
-* Display masqueraded roomname in chat, if applicable.  Fixes bug #19.
-
-Revision 1.486  2000/03/11 21:29:37  ajc
-* SM_ flags for CtdlSaveMsgPointerInRoom() need to be a bit bucket, not an
-  enum, since more than one can be passed.  Changed SM_DONT_BUMP_REF_COUNT
-  from 3 to 4.  This also fixes bug #33.
-
-Revision 1.485  2000/03/11 20:26:03  ajc
-* Reworked the <R>eply logic in messages.c - fixes bug #34
-
-Revision 1.484  2000/03/11 19:22:19  nbryant
- * commands.c: improved timing of background keepalives if connection is
-              lagged
-
-Revision 1.483  2000/03/11 05:08:48  nbryant
- * commands.c: oops, that mutex stuff wasn't necessary
-
-Revision 1.482  2000/03/11 04:09:03  nbryant
- * new threaded client code for background keepalives
-
-Revision 1.481  2000/03/10 21:40:04  ajc
-* Changes to message base and networker to support Internet-style message
-  ID's instead of the conventional Citadel style.
-
-Revision 1.480  2000/03/08 03:36:37  ajc
-* Shut off hostname resolution when dealing with Unix domain sockets
-* Cleaned up the 'citmail' MDA tool
-* Added POP3 and SMTP port numbers to global system configuration
-
-Revision 1.479  2000/03/07 21:54:58  ajc
-* Fixed the naming conventions and permissions for unix domain sockets.
-
-Revision 1.478  2000/03/05 07:33:23  ajc
-* Added support for protocols over Unix domain sockets.
-
-Revision 1.477  2000/03/04 22:36:23  ajc
-* Remove nulls appended to editor files during replace, edit, and print
-  operations.  Truncate temp files during same operations.
-  Closes bugs #6 and #7.
-
-Revision 1.476  2000/03/04 05:29:18  ajc
-* Relax restrictions on editing of base rooms.  Renaming is not allowed but
-  all other attributes can be edited.  Closes feature request #21.
-* Sending pages from the client now uses the same message editing functions
-  as entering messages, allowing edit/abort.  Closes feature request #25.
-
-Revision 1.475  2000/03/03 04:50:14  ajc
-* Moved all of the wholist masquerading commands into the serv_rwho module
-
-Revision 1.474  2000/03/03 04:12:37  ajc
-* Finished the inbound side of gateway domain service
-
-Revision 1.473  2000/02/27 04:55:51  ajc
-* Added "keymenu()" generic menu-maker to commands.c
-* Blocked non-numeric input to intprompt()  (fixes bug #16)
-
-Revision 1.472  2000/02/27 03:57:35  ajc
-* Completed 'fsck'-like reference count verifier (server and client)
-
-Revision 1.471  2000/02/26 18:30:40  ajc
-* Properly handle all aliases specified in network/mail.aliases for incoming
-  SMTP mail (uses the alias() function, so if we replace that function with
-  something that uses the same calling convention, it'll still work)
-
-Revision 1.470  2000/02/26 05:15:38  ajc
-* Fortified the message base and SMTP code so that misdirected bounce messages
-  end up in the Aide> room instead of getting dereferenced
-* Started writing a message reference count verifier ('fsck' for message base)
-
-Revision 1.469  2000/02/25 06:14:05  ajc
-* Modularized the RWHO (Read WHO is online) command, basically as a pilot
-  for modularizing all "non-API" functionality.
-
-Revision 1.468  2000/02/24 03:44:00  ajc
-* Implemented holdoff time (15 minutes) for SMTP send retry.
-* Implemented "try for 3 days and then give up" on SMTP send.
-
-Revision 1.467  2000/02/24 00:51:48  ajc
-* Client protocol synchronization check during exit from chat.
-  This closes Bug #15.
-
-Revision 1.466  2000/02/22 16:37:28  ajc
-* Minor tweaks to RFC822 output to keep brain-damanged MS Outlook from dying
-
-Revision 1.465  2000/02/22 04:17:56  ajc
-* Got bounce messages working (mostly ... testers, please beat this up!)
-* Changed 'FIX' comments to 'FIXME' (less conflict, plus vim highlights it!)
-
-Revision 1.464  2000/02/18 22:29:18  ajc
-* Coded up the "bounce" functions.  Still a coupla bugs.
-
-Revision 1.463  2000/02/18 05:10:50  ajc
-* Made the <.ASI> command a bit friendlier.
-* SMTP sender now pays attention to "smarthost" entries in the system's
-  Internet configuration, using them if one or more is present.
-
-Revision 1.462  2000/02/17 05:27:39  ajc
-* Got the "MAIL From:" command sending the correct data.  (unnnhhhhnnhhhh...)
-
-Revision 1.461  2000/02/16 22:06:26  ajc
-* Altered the display and conversion of RFC822 messages
-
-Revision 1.460  2000/02/16 03:43:28  ajc
-* Added the resolver library to the configure script
-
-Revision 1.459  2000/02/16 01:19:39  ajc
-* Vanquished the evil dn_expand() beast.  getmx() now seems to be working.
-
-Revision 1.458  2000/02/14 04:36:14  ajc
-* sysdep.c: added new event hook type EVT_TIMER.  Timer event hooks are called
-  once per minute by any worker thread.
-* msgbase.c: removed dependence on nested functions in CtdlOutputMsg() by
-  replacing them with an API call CtdlRedirectOutput() in sysdep.c, which
-  can temporarily redirect a session's output to an arbitrary file or socket.
-* serv_smtp.c: implemented the purging of messages in the queue for which all
-  deliveries have been completed.
-* serv_smtp.c: removed temporary 'QQQQ' server command and replaced it with
-  a timer event hook that runs the queue once per minute (this needs to be
-  made more robust)
-
-Revision 1.457  2000/02/08 21:00:47  ajc
-* Implemented the deprecated "LAST" command in POP3.  Some clients need it.
-* POP3 sessions now set the last-read pointer in Mail>.
-
-Revision 1.456  2000/02/07 05:15:00  ajc
-* Renamed CtdlLocalHost() to CtdlHostAlias() and worked it a little deeper into
-  the message routing logic.  Still needs some work on the gateway-domain
-  stuff.
-* Twiddled CtdlOutputMsg() a bit for 'all Internet' situations.  Still needs
-  some work to avoid printing dual headers when both Cit and RFC822 exist.
-
-Revision 1.455  2000/02/03 03:57:35  ajc
-* Formalized the 'Internet Configuration' logistics.  Added new API call
-  CtdlLocalHost() to detect aliases for the local host.  Used in SMTP listener.
-
-Revision 1.454  2000/01/31 02:13:05  ajc
-* <.A>ide <S>ystem configuration <I>nternet  in the client (unfinished)
-
-Revision 1.453  2000/01/26 02:41:27  ajc
-* SMTP delivery is working but still *very* rough.
-
-Revision 1.452  2000/01/25 04:45:50  ajc
-* Wrote enough of the SMTP sender to get Patriot drooling over it, but not
-  enough to complete the transmission of mail.
-
-Revision 1.451  2000/01/23 21:25:45  ajc
-* Temporary hack to ig_tcp_server() to listen on an arbitrary port if the
-  one specified is not bindable (for development only)
-* Added SM_DONT_BUMP_REF flag to CtdlSaveMsgPointerInRoom() to be used only
-  in very specific and special situations
-* Generate delivery instructions when outbound SMTP mail is created from
-  within Citadel (as opposed to being from the SMTP module)
-
-Revision 1.450  2000/01/23 05:22:41  ajc
-* Coded up some more of the SMTP-sender (still not done)
-
-Revision 1.449  2000/01/22 05:13:56  ajc
-* Added some more functionality to the string tokenizer
-
-Revision 1.448  2000/01/17 20:57:43  ajc
-* CR to CRLF hacks (lose, lose, lose)
-
-Revision 1.447  2000/01/17 18:30:27  ajc
-* Completed POP3 server.  All RFC1939 commands except APOP are implemented.
-
-Revision 1.446  2000/01/17 17:09:23  ajc
-* Implemented LIST and STAT commands in the pop3 server
-
-Revision 1.445  2000/01/17 05:38:14  ajc
-* citserver.c: cleanup hook functions are now run under the proper context,
-              even when initiated by the housekeeper thread
-* serv_pop3.c: establish a place to hold the message list
-
-Revision 1.444  2000/01/17 04:26:39  ajc
-* Modified CtdlOutputMsg() to handle output to arbitrary sockets or files.
-  This uses nested functions and may not be portable beyond GCC...
-
-Revision 1.443  2000/01/15 18:29:15  ajc
-* Added a generic (void *) parameter to the ForEachUser() and ForEachRoom()
-  callback mechanisms, to allow callers and callbacks to pass arbitrary data
-  between each other without requiring TSD variables.
-* room_ops.c: eliminated the need for 'FloorBeingSearched' TSD variable
-* internet_addressing.c: eliminated 'buffer1' and 'buffer2' TSD variables
-
-Revision 1.442  2000/01/15 04:31:44  ajc
-* Removed UI_DIALOG mode in setup.  Can't count on 'dialog' to be consistent.
-
-Revision 1.441  2000/01/15 04:07:17  ajc
-* Fixed the access rights on auto-created rooms (the same changes that were
-  made to version 5.62 in the stable tree)
-
-Revision 1.440  2000/01/13 03:32:36  ajc
-* techdoc/delivery-list.txt: added (syntax for delivery lists)
-* domain.*: added (will contain MX lookup code)
-* internet_addressing.c, logging.c: fixed some buffer overflow bugs
-
-Revision 1.439  2000/01/12 03:56:27  ajc
-* sysdep.c: start the housekeeping thread *after* dropping root perms.
-
-Revision 1.438  2000/01/09 19:03:16  ajc
-* Removed the fifo-based protocol downloads and replaced it with a less
-  elegant "download temporary file to client, then sx/sb/sz" because
-  downloading through a fifo was confusing some software.
-
-Revision 1.437  2000/01/08 22:19:44  ajc
-* Completed spool to outbound delivery queue (still no queue sender implemented)
-
-Revision 1.436  2000/01/08 05:00:09  ajc
-* Reworked some of the data structures to handle multiple recipients
-* Began implementation of the delivery queue
-* Added CtdlReallocUserData()
-* CtdlSaveMsg() now returns the local message ID in the database
-
-Revision 1.435  2000/01/06 03:50:34  ajc
-* Replaced citmail.c with a new one that simply SMTP-forwards to Citadel
-* Started outbound SMTP queue work
-
-Revision 1.434  1999/12/30 04:56:29  ajc
-* Got initial SMTP delivery working in a very specific situation (delivery
-  to a single, local user)
-
-Revision 1.433  1999/12/29 04:44:00  ajc
-* client_chat.c: display "No message sent" if a send page is aborted.
-  Closes bug #2 in bugzilla.
-
-Revision 1.432  1999/12/26 21:50:07  ajc
-* serv_vcard: don't run hooks when not logged in (such as in SMTP sessions)
-* serv_pop3: added.  This is the skeleton for a module implementing POP3.
-
-Revision 1.431  1999/12/23 04:46:23  ajc
-* "Finished" initial hack of RFC822 import
-
-Revision 1.430  1999/12/22 04:46:34  ajc
-* Fixed up the "Date:" headers to be RFC822-compliant
-
-Revision 1.429  1999/12/13 05:30:57  ajc
-* Removed our naive 'conv_date()' RFC822-to-unixtime conversion function
-  and replaced it with the public domain 'parsedate()' function from UseNet
-
-Revision 1.428  1999/12/10 23:58:25  ajc
-* internet_addressing.c: added.  (Internet address to Citadel mapping)
-
-Revision 1.427  1999/12/10 21:34:19  ajc
-* serv_smtp: implemented RFC821 "VRFY" and "EXPN" commands
-
-Revision 1.426  1999/12/09 05:01:14  ajc
-* Split cmd_user() and cmd_pass() into frontend/backend functions
-* serv_smtp: implemented AUTH LOGIN for client authentication
-
-Revision 1.425  1999/12/09 00:22:58  ajc
-* Finished the "arbitrary service" registration.
-* Eliminated "special" master socket for Citadel protocol - just register it
-  like any other protocol.
-* Began initial implementation of native SMTP service.
-
-Revision 1.424  1999/12/08 18:09:10  ajc
-* Added CtdlRegisterServiceHook() and its data type, for implementing arbitrary
-  TCP-based services directly in the Citadel server.  Not finished yet.
-
-Revision 1.423  1999/11/29 17:39:07  nbryant
-* citserver.c: Solaris lacks inet_aton; use inet_addr instead
-
-Revision 1.422  1999/11/29 17:26:15  nbryant
-* citserver.c: include <sys/types.h>; may help portability to Solaris
-
-Revision 1.421  1999/11/22 00:27:42  ajc
-* Added some temporary variables to OpenCmdResult().  Hopefully fixes
-  bug #14 when running on FreeBSD.
-
-Revision 1.420  1999/11/21 18:30:16  ajc
-* Protected cmd_move() from buffer overrun (no longer crashes the server)
-* cmd_chat() -- truncate input at 100 characters to prevent buffer overruns.
-  Also handle broken client sockets properly.  (Thanks to DME for bug report)
-
-Revision 1.419  1999/11/19 01:57:40  ajc
-* Fixed a *serious* memory leak in the database function wrappers.
-* Updated version number to 5.60 -- run setup when installing this version.
-
-Revision 1.418  1999/11/18 03:29:20  ajc
-* Changed the order of parameters in <.A>ide <S>ystem config into a more
-  logical grouping.
-
-Revision 1.417  1999/11/18 02:31:50  ajc
-* Updated some of the documentation
-* Brought the internal version number up to 5.60
-
-Revision 1.416  1999/11/17 04:15:05  ajc
-* Removed the session_count() function.  Instead, keep a reference count
-  updated when sessions begin and end.
-* Replaced fixed number of worker threads with lower and upper limits; current
-  code now tries to make thread count == session count, within these limits
-
-Revision 1.415  1999/11/15 03:17:39  ajc
-* Put lockfile in /tmp instead of in /var/lock.   The latter is not guaranteed
-  to exist, nor is it guaranteed to be writable by CTDLUID
-  (Resolves bug #11 from the Bugzilla repository)
-
-Revision 1.414  1999/11/15 03:07:24  ajc
-* Fixed the network-wide vCard purge logic so that it (1) actually works,
-  and (2) forces a netproc run immediately when a purge is entered
-
-Revision 1.413  1999/11/09 21:20:44  nbryant
-* configure.in: include <sys/types.h> when doing checks which require <utmp.h>
-  (should fix Bug #10 on FreeBSD)
-
-Revision 1.412  1999/11/05 03:53:47  ajc
-* Issue 'cancel' messages for vCard when a user is deleted.
-* Try to delete 'cancel' messages locally after they've been distributed.
-
-Revision 1.411  1999/11/03 04:01:20  ajc
-* Fixed buffer overrun problems in cmd_rchg(), cmd_hchg(), and cmd_uchg()
-* Removed my email address as the feedback content from the docs; replaced
-  it with a reference to the Citadel web site.
-
-Revision 1.410  1999/11/02 19:51:23  ajc
-* Fixed timeout problem for remote client sessions (all timeouts were set to
-  1 second ... probably a temporary hack that was missed in the cleanup)
-
-Revision 1.409  1999/11/02 03:03:27  ajc
-* Several fixes to msgbase.c and netproc.c to prevent corrupted incoming
-  network traffic from crashing the server.  Reject bad messages.
-
-Revision 1.408  1999/11/01 04:21:34  ajc
-* Fixed a concurrency bug which crashed the server when multiple sessions
-  terminated simultaneously.
-
-Revision 1.407  1999/11/01 00:54:02  ajc
-* CtdlFetchMessage() - generate a "<no text>" message body if there's none
-  on disk.  Too much stuff goes haywire if there's no M field.
-
-Revision 1.406  1999/10/31 18:17:17  ajc
-* Fixed buffer overrun in cmd_rchg()
-* Call master_cleanup() when time_to_die==1 for proper shutdown
-
-Revision 1.405  1999/10/31 16:26:55  ajc
-* Fixed incorrect assignment of new session ID's
-
-Revision 1.404  1999/10/31 04:17:17  ajc
-* Fixed a bug which was crashing the server during very long message entry.
-
-Revision 1.403  1999/10/29 01:48:45  ajc
-* database.c: Removed arbitrary limit on maximum number of sessions
-
-Revision 1.402  1999/10/29 01:03:03  ajc
-* Debugged all possible ways for a session to terminate; do them cleanly.
-* Assign session numbers in a more portable and less arbitrary way.
-
-Revision 1.401  1999/10/28 19:50:55  ajc
-* Fixed a problem where the client protocol would spit out two responses
-  and therefore get out of sync if ASUP command set the access level to
-  0 and therefore deleted the user (thanks to Eric McDonald)
-
-Revision 1.400  1999/10/28 05:08:49  ajc
-* Removed all of the thread cancellation cruft that is no longer necessary
-* Moved the now non-system-dependent RemoveContext() out of sysdep.c (now
-  it's part of cleanup() in citserver.c)
-* Removed all references to pthread_* from all modules except sysdep.c
-
-Revision 1.399  1999/10/28 03:20:17  ajc
-* Fixed the problem of worker threads waking up prematurely.
-* 'QUIT'-terminated sessions now exit properly.
-
-Revision 1.398  1999/10/27 04:26:58  ajc
-* Initial hack of worker-thread rearchitecture.  Right now it is successfully
-  dispatching worker threads to active client sockets (and to the master
-  socket too, of course).  Removing sessions is currently broken.
-
-Revision 1.397  1999/10/26 20:20:29  ajc
-* Removed the auto-reconnect stuff... it was locking the client in an active
-  loop more often than it was reconnecting.
-
-Revision 1.396  1999/10/26 13:59:11  ajc
-damn bugs
-
-Revision 1.395  1999/10/26 03:48:39  ajc
-* Shuffled around the order of events when a thread is terminating.  All
-  mutex operations now happen prior to the freeing of the CitContext structure,
-  otherwise begin_critical_section() and end_critical_section() try to
-  manipulate the context's mutex count when there isn't any context.
-
-Revision 1.394  1999/10/26 03:21:16  ajc
-* Changed a lot of strncpy() calls to safestrncpy() and replaced most of their
-  hardcoded size arguments with 'sizeof' based arguments.
-
-Revision 1.393  1999/10/24 19:22:51  nbryant
-       * Makefile.in, configure.in: added --enable-icq flag; made checks for
-         authentication libraries more intelligent.
-
-Revision 1.392  1999/10/23 03:39:12  ajc
-* Finished moving vCard functionality to the new message base functions.
-
-Revision 1.391  1999/10/21 00:50:14  ajc
-* Finished up the flags and replication checks in CtdlSaveMsgPointerInRoom().
-
-Revision 1.390  1999/10/20 16:46:27  ajc
-* More code shuffle.  Added some flags to CtdlSaveMessagePointerInRoom() and
-  enabled the MOVE command to also do a "copy" operation (actually just
-  creates a second link and bumps the ref count).  Implemented "<C>opy" in
-  the client.
-
-Revision 1.389  1999/10/20 16:07:48  ajc
-* Wholist fixes for users who are in chat mode
-
-Revision 1.388  1999/10/20 03:42:29  ajc
-* In the wholist, only show <private room> if the user viewing the list
-  doesn't know that room.  Otherwise show the name.
-
-Revision 1.387  1999/10/20 02:59:22  ajc
-* Code reorganization.  Making it easier to move/copy messages without
-  duplicating existing code.
-
-Revision 1.386  1999/10/17 02:25:18  ajc
-* Discovered a huge design flaw in the replication algorithm.  Ripped it
-  out and replaced it with something a bit more robust.
-
-Revision 1.385  1999/10/16 05:30:17  ajc
-* Changes to message replication code.  Don't do server-side hooks during
-  an ENT3 command.  Also fixed a bug in cmd_whok() that caused crashes
-  after a file format change.
-
-Revision 1.384  1999/10/14 03:04:16  ajc
-* Finished the netproc side of Z (zap/supersede) processing for replication
-
-Revision 1.383  1999/10/13 04:24:18  ajc
-* Added search-by-header-fields to CtdlForEachMessage(), and then to the
-  server MSGS command.  This will have lots of uses.
-
-Revision 1.382  1999/10/13 01:36:39  ajc
-* Starting some work on network zap (supersede) mode for replication
-
-Revision 1.381  1999/10/08 02:55:57  ajc
-* More vCard-related debugging
-
-Revision 1.380  1999/10/07 02:58:46  ajc
-* Semi-broken vCard replacement implementation in place.
-* Added "Z" (Zap, supersede) field to message format
-
-Revision 1.377  1999/10/04 03:19:52  ajc
-* We now have a housekeeping thread and a housekeeping queue.
-
-Revision 1.376  1999/10/03 21:48:21  ajc
-* Added serv_upgrade.h to automagically convert pre-5.55 format user records
-  to 5.55 format user records and generate vCards.
-
-Revision 1.375  1999/09/29 21:13:17  ajc
-* CtdlWriteObject() can now store objects in personal rooms for any specified
-  user -- rather than only the current user or non-personal rooms.
-
-Revision 1.374  1999/09/29 17:26:56  ajc
-* serv_vcard.c: fixed crashola bug in cmd_greg()
-* tools.c: simplified and improved the string tokenizer.  Now it runs in a
-          single pass with no intermediate buffer.
-
-Revision 1.373  1999/09/28 03:27:37  ajc
-* Fully migrated cmd_greg() and cmd_regi() into serv_vcard (still has bugs)
-
-Revision 1.372  1999/09/27 03:33:40  ajc
-* cmd_regi() is now in serv_vcard and writes to the vcard instead of to the
-  usersupp file.  Still needs tweaking.
-
-Revision 1.371  1999/09/24 03:32:19  ajc
-* "read my vCard" and "write my vCard" are written and tested.
-
-Revision 1.370  1999/09/24 02:54:17  ajc
-* Worked a little more on the vCard stuff.  The serv_vcard module is now in
-  place, and a "read my vcard" function is there; "write my" is next...
-
-Revision 1.369  1999/09/23 03:07:56  ajc
-* The vCard 'class' is now linked into the server, though it's not really
-  functional yet.  Its constructors/destructors are debugged, though.
-
-Revision 1.368  1999/09/19 21:28:33  ajc
-* Finished off the message architecture stuff with a new class of hooks to
-  enable future server-side handlers.
-
-Revision 1.367  1999/09/19 15:57:06  ajc
-* migrated cmd_ent3() to CtdlSaveMessage()
-
-Revision 1.366  1999/09/19 05:13:57  ajc
-* Debugged the new version of CtdlWriteObject()
-
-Revision 1.365  1999/09/16 03:23:23  ajc
-* Did most of the migration from save_message() to CtdlSaveMsg().  The
-  latter builds a "struct CtdlMessage" (so we can run server-side handlers
-  against it later on), then serializes it and stores to disk.
-* BROKEN BUILD ALERT!!  cmd_ent3() and CtdlWriteObject() are still not
-  migrated.  They are stubbed out and will MALFUNCTION if used right now!!
-
-Revision 1.364  1999/09/07 01:42:42  ajc
-* cmd_msg3() now uses serialize_message() for its output.  All message
-  commands will eventually exist as a "struct CtdlMessage" at some point
-  so that we can install server-side handler hooks.
-
-Revision 1.363  1999/09/07 00:04:13  ajc
-* netproc.c: put outgoing messages into the use table, too -- this prevents
-  locally originated messages from showing up again if a remote system is
-  misconfigured and spools them back to us.
-
-Revision 1.362  1999/09/06 03:39:15  ajc
-* citadel.c: run strproc() on new passwords
-
-Revision 1.361  1999/09/03 17:50:26  playcow
-For URL view, don't prompt user to select url if there is only one.  Display
-<U>RL View prompt if message contains url(s). -Ben
-
-Revision 1.360  1999/09/02 02:09:59  ajc
-* msgbase.c: new function serialize_message() for future use
-
-Revision 1.359  1999/09/01 21:09:25  ajc
-* database.c: display the GDBM version string on startup
-
-Revision 1.358  1999/09/01 02:36:34  ajc
-* Actually _enforce_ the max msg len limit
-
-Revision 1.357  1999/09/01 01:51:48  ajc
-* Added the ability to handle embedded URL's from the text client
-
-Revision 1.356  1999/09/01 01:02:47  ajc
-* Implemented "maximum message length" in global system config
-
-Revision 1.355  1999/08/31 00:57:17  ajc
-* Handle multipart/alternative properly during legacy message outputs.
-  Basically it just prints the first alternative and skips the rest.
-
-Revision 1.354  1999/08/29 21:12:24  ajc
-* Made some changes to the output of MIME (especially multipart) messages.
-
-Revision 1.353  1999/08/29 19:56:43  ajc
-* HTML updates
-
-Revision 1.352  1999/08/24 02:01:03  ajc
-* html.c: added.  This is an overly simplistic HTML-to-text converter.
-
-Revision 1.351  1999/08/21 18:37:29  ajc
-* Minor cosmetic cleanup.  No code changes.
-
-Revision 1.350  1999/08/21 05:15:34  ajc
-* mailinglist.c, netmailer.c: fixed to allow list submissions from all posters
-  on a Citadel network rather than only on the local system.
-
-Revision 1.349  1999/08/08 00:25:45  ajc
-* Made one more byte available in locate_host() and in all the structs which
-  its output gets written to (client can display 24 positions but we were only
-  saving 23).
-
-Revision 1.348  1999/08/07 16:34:38  nbryant
-* serv_icq.c: warning fixes
-
-Revision 1.347  1999/08/06 02:57:26  ajc
-* locate_host.c: use strdoop() and phree() instead of strdup() and free()
-* serv_icq.c: run learned IP's through Citadel's locate_host() & put in Wholist
-
-Revision 1.346  1999/08/05 17:58:59  ajc
-* RWHO command now returns express message code in postion 3
-
-Revision 1.345  1999/08/04 02:21:45  ajc
-* Fixed some bugs in the ICQ metaclient, and documented the new protocol cmds
-
-Revision 1.344  1999/08/03 11:34:35  ajc
-* Added client_icq.c and client_icq.h
-
-Revision 1.343  1999/08/03 03:14:51  ajc
-* Wrote the client side of the ICQ gateway.  Now on to other projects.  :)
-
-Revision 1.342  1999/08/03 01:52:06  ajc
-* Redesigned the client protocol commands for dealing with ICQ
-* Implemented page function priority ordering to prevent pages from being
-  simultaneously delivered over multiple IM systems
-* Migrated serv_icq.* into the Makefile
-
-Revision 1.341  1999/08/01 21:36:30  ajc
-* EXTREME coolness.  The server side of the ICQ metaclient is now working.
-  It is set up using ICQL and ICQA commands, it automatically logs the user
-  onto ICQ along with Citadel, and displays all non-offline ICQ contacts
-  in the Wholist.
-
-Revision 1.340  1999/07/31 07:18:01  ajc
-* Restructured the express message infrastructure, adding a class of function
-  hooks for the addition of multiple paging modules with message routing
-
-Revision 1.339  1999/07/30 22:20:19  ajc
-* Applied bugfix patches contributed by Vaggelis Tsirkas:
-  * rooms.c: buffer overrun fix
-  * room_ops.c: cmd_rdir() now behaves better when directory doesn't exist
-
-Revision 1.338  1999/07/30 03:32:24  ajc
-* Added strdoop(), a leak-checked version of strdup()
-* Small fixes to new API functions in msgbase.c
-* ICQ metaclient stores/reads config using the message base API functions
-
-Revision 1.337  1999/07/29 03:36:37  ajc
-* msgbase.c: reorganized.  output_message() now uses CtdlFetchMessage(),
-  cmd_msg3() now fetches directly from disk and spews to the client.
-
-Revision 1.336  1999/07/28 04:02:37  ajc
-* Server modules are now labelled with their RCS ID instead of a complex and
-  manually-updated data structure.
-
-Revision 1.335  1999/07/28 03:50:24  ajc
-* serv_expire.c: expire-by-age now calls CtdlFetchMessage() instead of
-  calling output_message() in MT_DATE mode.
-* msgbase.c: removed MT_DATE mode ('twas a sleazy hack)
-
-Revision 1.334  1999/07/27 22:47:26  ajc
-* Implemented new data type "CtdlMessage" which will eventually be used as
-  widely as possible to represent a message in memory.
-* Implemented CtdlFetchMessage() which is intended to become the back-end to
-  output_message() as well as a bunch of other things.
-
-Revision 1.333  1999/07/27 20:00:24  ajc
-Removed all references to CC->msglist and CC->num_msgs, and all utility
-functions which relied upon them.  Citadel Is Now Better.
-
-Revision 1.332  1999/07/27 19:32:22  ajc
-Removed serv_upgrade.c and all references to it in Makefile.in
-Reworked new-mail-count to not use MessageFromList() etc.
-
-Revision 1.331  1999/07/25 02:59:37  ajc
-Fixed reference count problem in cmd_move()
-
-Revision 1.330  1999/07/24 22:50:38  ajc
-Continued replacing references to [get|put]_msglist() with better code.
-For some reason, cmd_msgs() still doesn't always work right.
-
-Revision 1.329  1999/07/24 22:16:41  ajc
-Experimenting with automatic updating of ChangeLog by CVS.  Simply twiddle
-ChangeLog a bit (i.e. by adding or removing a newline from the end of the
-file) before issusing "cvs commit", and the comments recorded by CVS will
-automatically appear at the beginning of ChangeLog.
-
-Revision 1.328  1999/07/24 22:14:21  ajc
-cmd_move() now uses CtdlDeleteMessages().
-WARNING: build is temporarily broken.  Currently removing all references
-to the "msglist" kept in CitContext.  It's ugly and must die.
-
-Thu Jul 22 22:26:50 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Moved message deletion into new API function CtdlDeleteMessages()
-       * Added CtdlWriteObject() to store generic data in the msgbase
-       * Fixed really dumb error that prevented network msgs from posting
-
-Tue Jul 20 22:14:54 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Moved the actual work done in cmd_msgs() into a new API function
-         called CtdlForEachMessage() which is supplied a callback function.
-
-Mon Jul 19 23:24:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Keep the (unqualified) content-type in the SuppMsgInfo record.  We'll
-         be using this shortly to search rooms for specific object types.
-
-Sun Jul 18 14:53:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org> 
-       * Changes to dynloader et al to handle ICQ module being written
-       * serv_icq.c, serv_icq.mk: added (separate makefile is temporary)
-
-1999-07-17 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * chkpwd.c: DELETED CVS REVISION 1.3 (backed out Art's last change)
-         use 'cvs update -r 1.2 chkpwd.c; cvs update -A chkpwd.c' NOW to
-         avoid problems with working directories.
-       * Makefile.in: don't install chkpwd setuid if make install isn't
-         being run as root.
-       * citadel.spec: chmod u+s chkpwd during %install stage
-
-Fri Jul 16 18:39:04 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * PEXP and GEXP no longer trip the idle time display
-       * Fixed bug which duplicated incoming private mail to Trashcan
-       * Improved auto-reconnect by NOT using SIGPIPE and longjmp(); also
-         implemented a 15 second delay to wait for a crashed server to restart
-       * Relaxed the security check in chkpwd.c a bit; it was just flat-out
-         preventing logins on my system otherwise
-
-Thu Jul 15 22:57:32 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * eliminate redundant "name" parameter in [l]putuser(), now uses
-         usbuf->fullname to guarantee the correct name for the index
-
-1999-07-12 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in, configure.in: link netproc with gdbm
-       * netproc.c: only include gdbm.h if HAVE_GDBM_H
-       * user_ops.c: warning fix
-
-Mon Jul 12 19:51:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Mail is now saved in both sender and recipient mailboxes.  This is
-         structured in a way that will allow a separate "outbox" room and/or
-         multiple recipients in the future.
-
-Sun Jul 11 18:46:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * netproc.c: msgfind() no longer uses the timestamp as a message-ID
-         when no other message-ID is available (it screws up the loopzapper)
-       * room_ops.c: eliminate room name parameter in putroom() and its ilk;
-         get data from quickroom.QRname instead; prevents incorrect indexes
-       * Tentative implementation of "personal rooms" (user-private namespace)
-       * Added supplementary message info records for info that may change
-         at some time later than when the message is saved (i.e. ref counts)
-       * Implemented msg reference count increment/decrement; delete messages
-         whose reference count reaches zero
-
-Wed Jul  7 23:25:09 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * control.c: create citadel.control if it doesn't exist (yikes!)
-       * serv_expire.c: purge mailbox rooms belonging to non-existent users
-       * user_ops.c: don't delete user's mailbox at user-delete time
-
-Mon Jul  5 17:01:29 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * utilsmenu: removed menu items for defunct utilities
-
-Mon Jun 28 16:24:10 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Changed any remaining references to UUCP, to "Internet" instead.
-
-Thu Jun 24 11:13:23 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * added server command line option "-f" to defrag databases on startup
-       * control.c: better performance and reliability in [get|put]_control()
-       * netproc.c: Finished the loopzapper
-
-Mon Jun 21 00:04:15 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * netproc.c: started writing a vortex checker.  Not finished.
-
-Wed Jun  9 23:34:25 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Replaced all code that generated temporary filenames with calls to
-         tmpnam().  Rewrote using tmpfile() where possible.
-
-Thu Jun  3 11:35:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * base64.c: mapped fi and fo to stdin and stdout using
-         actual code rather than assignment at declaration time
-         (several users of Red Hat Linux 6.0 reported problems)
-
-Fri May 21 20:05:00 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Added function CtdlGetDynamicSymbol() for dynamic symbol allocation
-       * server.h: Changed discrete #define's to enum's where appropriate
-       * sysdep.c: Changed the startup message to give credit to the whole
-         development team :)  Also made the message more GNU-ish.
-
-Thu May 20 20:01:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * database.c: print log messages for file defragmentations
-       * citserver.c: implemented CtdlAllocUserData() and CtdlGetUserData()
-         for arbitrary per-session data storage (by modules etc.) without
-         having to add fields to struct CitContext
-       * msgbase.c: removed "desired_section" from struct CitContext and
-         implemented it using CtdlGetUserData() as a test.
-
-Wed May 19 19:30:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * commands.c, commands.h, routines.c: began color scheme changes
-
-1999-05-15 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in: Added untested support for BSDI 4.x.
-
-1999-05-13 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * acconfig.h, configure.in, routines.c: fix for certain SYSV variants
-         which lack utmp.ut_host
-       * citadel.h, file_ops.c, msgbase.c, netproc.c, serv_chat.c: fix
-         namespace collision with <sys/stream.h> on aforementioned SYSV
-         variant
-       * configure.in, getutline.c: check for paths.h
-       * configure.in, Makefile.in: check for -lsocket and -lnsl
-
-1999-05-11 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * chkpwd.c: fixed excessive paranoia; it used to refuse to run when
-         invoked by root and CTDLUID != 0
-       * Makefile.in: ignore errors while installing /etc/pam.d/citadel
-
-1999-04-27 Art Cancro <ajc@uncensored.citadel.org>
-       * file_ops.c: fixed NDOP to not crash the server if it has trouble
-         with a download file
-       * netpoll.c: upped default packet size
-
-Mon Apr 26 22:06:57 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Repaired IGnorant security hole blunder re. citmail
-
-Sun Apr 25 12:44:08 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * serv_chat.c: notify user of number of participants upon entering chat
-       * Built the 5.53 distribution
-
-Wed Apr 21 22:23:13 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * aidepost.c: add -r flag to allow posting to rooms other than Aide>
-       * serv_expire.c: now posts transcripts of all auto-purged rooms/users
-
-Tue Apr 20 12:45:55 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * messages.c: downloading more than MAX_MSGS messages now truncates
-         (off the beginning of the list) rather than crashing.
-
-Mon Apr 19 12:11:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * whobbs.c: auto-detect when being called from a webserver, and act
-         as a CGI (print HTTP headers and HTML output)
-
-1999-04-18 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * serv_chat.c: fixed some potential buffer overruns (thanks dme)
-
-Wed Apr 14 21:32:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Makefile.in: chmod 4755 citmail to prevent citmail from aborting
-         when called from sendmail due to citadel.config security check
-
-1999-04-13 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * dynloader.c: OpenBSD places underscores in front of symbol names
-       * Makefile.in: fixed a few sillies
-       * aidepost.c, citmail.c, file_ops.c, logging.c, msgbase.c, netmailer.c,
-         netproc.c, rcit.c, routines.c, serv_upgrade.c: fixed time_t handling
-         (have to cast it to long for printf/scanf)
-
-Mon Apr 12 22:13:26 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * aidepost.c: rewrote to unlink temp file before writing to it so that
-         it will automatically go away if interrupted. Also ran indent -kr -i8
-
-1999-04-12 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in, Makefile.in: taught it how to generate OpenBSD shared
-         libraries
-       * config.c, sysdep.c: fix -h option not setting proper modules dir
-       * configure.in, citadel.spec: make --enable-chkpwd the default
-       * setup.c: don't chown chkpwd
-
-1999-04-11 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in: another OpenBSD fix, but we're still not quite there yet
-       * serv_chat.c: warning fix
-
-Thu Apr  8 22:51:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * config.c: now requires a setup run for *any* rev level difference
-       * Updated docs & confs for 5.53b1 release
-       * setup.c: sets the 0600 permission bits on citadel.config that
-         is checked for in config.c
-
-1999-04-08 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * citserver.c: improved is_public_client(), also if a public_client
-         only supplies a numeric address, attempt to resolve it
-       * locate_host.c: verify that the forward DNS matches the reverse
-       * locate_host.c, locate_host.h: more general interface
-       * configure.in, acconfig.h: fixes for Digital UNIX
-
-Wed Apr  7 21:36:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Implemented "access level required to create rooms" (client & server)
-
-1999-04-07 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in: updated help messages, OpenBSD support
-       * setup.c: if /etc/inittab doesn't exist, don't ask to create an
-         entry in it
-       * server.h, sysdep.c: fix a potential deadlock/data corruption bug
-       * room_ops.c: fixed the 'gdbm error: Illegal data' message when
-         deleting a room which had never been posted to
-       * user_ops.c: include errno.h
-       * dynloader.c: fix for OpenBSD
-
-1999-04-06 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in, configure.in, getutline.c, sysdep.c:
-         fixes/bug workarounds for FreeBSD
-
-1999-04-03 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in, configure.in, chkpwd.c, acconfig.h: support for
-         `chkpwd', a setuid helper program for machines which use shadow
-         passwords (configure --enable-chkpwd)
-       * Makefile.in, configure.in, auth.c, citadel.pam, user_ops.c: support
-         for PAM or shadow passwords (configure --with-pam)
-       * Makefile.in: made some messages simpler
-       * citadel.spec: updated for 5.53; correct name of tarball; build with
-         --enable-chkpwd and --with-pam; add defattr tags so rpm's can be
-         built by non-root user
-       * commands.c: cosmetic cleanup
-       * config.c: (security/paranoia) check permissions on citadel.config
-       * configure.in: check for ncurses if we can't find curses
-       * dynloader.c: warning fix
-       * sysdep.c: don't complain if initgroups() fails
-       * citadel.c: fix systems with SYSV-style signal handling (e.g. libc5)
-       * Makefile.in: New! Improved! Cleaner! Shinier!
-
-Sun Mar 21 14:21:47 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * messages.c: cosmetic cleanups to message reading loop
-
-Sat Mar 13 21:33:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * commands.c: use bright colors by default in color mode
-       * citserver.c: initialize wholist fields with (not logged in) etc.
-
-1999-03-08 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * sysdep.c: call DLoader_Init() with an absolute path so that gdb can
-         find module symbols
-       * database.c: bail out if opening databases fails
-
-Sat Mar  6 01:55:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * serv_chat.c: use memfmout(), *not* cprintf() to transmit express
-         messages.  Calling cprintf() on strings >256 bytes crashes the server
-       * msgbase.c: minor logging fix in save_message()
-
-1999-03-05 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * sysdep.c: add undocumented -r flag to citserver to prevent it from
-         dropping root permissions.
-       * sysdep.c: also drop supplementary groups
-
-1999-03-04 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * config.c: error checking in put_config()
-       * setup.c: chgrp files to the login group associated with CTDLUID
-       * sysdep.c: copyright 1987-1999; drop root perms; load modules and call
-         master_startup() after dropping perms
-
-Wed Mar  3 00:00:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Prevent buffer overruns in lowercase_name in [get|put]user()
-       * client_chat.c: use citedit() for page composition
-
-Sat Feb 27 07:47:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * rooms.c: download_to_local_disk() prompts for a filename if a blank
-         filename was supplied to it (for attachments without names)
-       * mime_parser.c: strip leading whitespace in content_type & disposition
-
-1999-02-24 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in: improved check for pthreads
-       * configure.in, routines.c, acconfig.h: check for ut_type in struct utmp
-       * configure.in, Makefile.in: support for building server modules as
-         relocatable objects for BSDI (which still uses a.out *gag* *choke*)
-       * configure.in: compiler choice & flags for BSDI; check for libtermcap
-       * database.c: don't use a critical section in open_databases()
-       * housekeeping.c: use getfloor()/putfloor() instead of
-         lgetfloor()/lputfloor() in check_ref_counts()
-       * mime_parser.c: include <errno.h>
-       * msgbase.c: include <limits.h>
-       * sysdep.c: hacks for BSDI. use signals to fake thread cancellation;
-         don't call master_cleanup() directly from signal handler.
-       * routines.c: prototype getutline() if necessary
-       * getutline.c: stupid bugfix
-       * acconfig.h, configure.in, locate_host.c, server.h: work around
-         nonreentrant gethostbyaddr() on BSDI
-
-Mon Feb 15 22:59:00 EST 1999 Vaggelis Tsirkas
-       * citadel.c: increased hostname buffer size to handle very big names
-
-1999-02-15 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * sysdep.c(main): initialize alen before call to accept()
-
-1999-02-04 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in: improved check for cygwin
-       * configure.in, routines.c: access utmp directly instead of calling
-         `who' if getutline() is available.
-       * configure.in, Makefile.in, getutline.c: replace getutline() on
-         systems which don't have it
-       * routines.c: now always access utmp directly unless we can't find
-         utmp.h
-
-1999-02-02 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Fixes for Cygwin:
-         - ifdef out file download methods that require named pipes (client)
-         - include pthread.h and gdbm.h only if they are present (fixes
-           auto dependency generation)
-         - include snprintf.h where needed
-         - handle .exe suffixes for "make install"
-
-Tue Feb  2 22:15:08 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Overhauled the express messaging system (again)
-
-Mon Feb  1 19:48:04 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * messages.c: implemented client download of MIME attachments
-
-Sun Jan 31 18:29:18 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Added qpdecode.c to the distribution (decodes quoted-printable)
-       * Finished the MIME parser
-       * Gave MSG0 a reasonable behaviour for MIME messages
-       * Added the OPNA command for downloading attachments
-
-Sat Jan 30 18:39:53 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Look for citadel.rc in current directory if not found elsewhere
-       * More work on the MIME parser
-       * Added base64.c to the distribution
-
-1999-01-29 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * fixes for IRIX (thanks to wr and family for use of the Indy):
-         - use memset()/memcpy() instead of bzero()/bcopy() in all cases
-         - configure updates
-         - handle `long' pid's
-         - a few other little bits
-
-Mon Jan 25 21:23:07 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Fixed bug in save_message() which crashed the server on mail to sysop
-       * Rewrote pop_march() to be smarter about <G>oto heuristics
-
-Sat Jan 23 14:32:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Changed internal storage of express messages from a linked list to
-         a single, resizable buffer.
-       * Added a "room order" key to the room record, to allow some control
-         over room listing order.
-       * Made the room list commands aware of the room order key.
-       * Overhauled <G>oto heuristics to pay attention to floor & room order
-
-Wed Jan 20 19:21:51 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Added some more code to the unfinished MIME parser
-       * Changed module loading path to simply "modules" because after calling
-         get_config(), the cwd is guaranteed to be the correct Citadel directory.
-
-Tue Jan 19 21:28:29 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Fixed a bug in the user editing command (client side)
-       * Started a rewrite of the MIME parser
-
-Thu Jan 14 21:21:15 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Brought over the mime_parser from WebCit and began preliminary work
-         on supporting MIME format messages.
-
-Tue Jan 12 22:30:00 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Various changes to begin work on support for MIME messages
-               - Defined format type 4 for MIME
-               - msgbase.c: *temporary* hacks in output_message() for Type 4
-               - citmail.c: added more robust header parsing, and support
-                            for Type 4.  Also eliminated the crappy built-in
-                            SMTP server.
-               - Updated some of the technical documentation
-
-Sun Jan 10 13:34:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Fixed access to page log room
-
-Fri Jan  8 12:35:09 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * control.c: include <limits.h> to fix PATH_MAX undefined
-       * serv_chat.c: made the following changes to cmd_sexp() --
-               * Send zero-length message to check only, don't send
-               * Send "-" message on the command line to invoke
-                 the SEND_LISTING transfer mode for a multi-line message
-       * Added facilities to log all pages to a room (site configurable)
-
-Tue Jan  5 23:24:52 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Replaced all occurances of malloc(), realloc(), and free() in the
-         server and server-modules with mallok(), reallok(), and phree().
-         Wrote macros and a set of leak-tracking functions.
-
-Sun Jan  3 20:38:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Documentation changes
-
-Fri Jan  1 01:01:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
-       * Fixed security problem relating to private rooms
-
-Wed Dec 30 20:10:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * sysdep.c: put a bigger string buffer into lprintf() to avoid overruns
-
-Sat Dec 26 16:56:46 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * internetmail.config: commented this file more clearly
-
-Wed Dec 23 20:42:49 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * citadel.c: added some experimental code to automatically reconnect
-         to the server if the connection is broken.  For some reason, it only
-         works once.
-
-Wed Dec 23 18:47:12 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * sysdep.c: ignore SIGPIPE.  This keeps broken connections from
-         crashing the whole server.
-       * Tagged everything for the official 5.50 release.
-
-Mon Dec 21 07:54:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * housekeeping.c: call kill_session() with session_to_kill,
-         not ccptr->cs_pid (was crashing the server)
-
-Sat Dec 19 13:57:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Added "-i" flag to netproc to make it skip the export phase.
-         Updated other programs to call netproc in this way when appropriate.
-       * Updated network.txt to reflect the usage for netproc (which has
-         been wrong for several releases)
-
-Thu Dec 17 00:17:04 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Started removing the word "beta" from the docs and code.
-         Preparing for an actual release.
-       * msgbase.c: generate an 'I' field when requested (i.e. on locally
-         originating messages.  this was breaking parts of the network)
-
-1998-12-15 Art Cancro <ajc@uncensored.citadel.org>
-       * msgbase.c: remove extra call to alias() which was causing
-         Citadel-to-Citadel mail to fall into the bit bucket.
-       * msgbase.c: fixed tempfile naming problem that could cause a new
-         outgoing netmail message to overwrite another if netproc had not been
-         run in between
-
-1998-12-14 Art Cancro <ajc@uncensored.citadel.org>
-       * More session table stability nonsense
-
-Sun Dec 13 17:40:08 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * sysdep.c, citserver.c: (hopefully) fixed a session table concurrency
-         bug which was causing the server to occasionally crash.
-       * removed serv_test.so from the default build
-
-Fri Dec 11 18:50:00 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * setup.c: default value for maxsessions is now 0 (no limit)
-       * room_ops.c: don't allow users to create a room called "Mail"
-       * serv_expire.c: fixed "number of messages purged" display
-       * commands.c: when using color, default to low-intensity colors
-
-Tue Dec  8 07:58:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Beta 2
-
-Sat Dec  5 01:24:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Added a new type of module hook for adding logging functions
-       * Removed whitespace to left and right of '@' in netmail recipients
-       * sysdep.c: read citadel.config _before_ initializing loadable modules
-       * stats.c: fixed segfault resulting from extracting log lines
-       * Ripped most of the "attachments" stuff out of both the client and
-         server.  (Thought of a better way to handle it ... LATER.)
-
-1998-12-03 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * setup.c: create citadel.config with mode 0600
-       * Makefile.in: don't chmod sendcommand
-       * serv_upgrade.c: don't create citadel.config if it doesn't already
-         exist (paranoia)
-       * setup.c: saner defaults for nodename and fqdn
-
-Wed Dec  2 20:37:05 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * msgbase.c: modified AddMessageToRoom() and all functions that call it
-         to use a more reliable/accurate method to set quickroom.QRhighest
-       * weekly.in: don't sort/purge filedir where filedir doesn't exist
-
-1998-12-02 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * weekly is now generated by configure
-
-Mon Nov 30 19:48:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * room_ops.c: added sort_msglist() to move and save operations
-       * sendcommand.c: added (also updated utils.txt, weekly, Makefile.in)
-       * BETA 1
-
-Sun Nov 29 23:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Fixed cmd_regi() to not display a second result code after xfer
-       * Makefile.in: Removed "chmod 4755 citmail netmailer"
-
-1998-11-23 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * citadel.spec: added
-
-1998-11-22 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: split install target into install-exec, install-data,
-         and install-doc subtargets
-
-Sat Nov 21 16:53:30 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Added a fourth color mode in the client: "user" which turns color
-         on or off according to a per-user flag stored on the server.  Added
-         server-side support for this too, of course.
-       * import.c: removed
-       * serv_expire.c: finished the code to purge stale visits
-       * sysdep.c: strip trailing nonprintables in client_gets()
-       * routines2.c: fixed <.AS> command; all configs now work properly
-       * Moved num_parms() and all the extract() type functions into tools.c
-         and removed them from all other files.  Linked in tools.[o|ro] there.
-       * netproc.c: handled incoming file transfers to correct room directory
-       * room_ops.c: fixed incorrect naming of files in info and images dirs
-
-Fri Nov 20 20:29:07 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * setup.c: removed all prompts that can be configured from within the
-         client in order to simplify the setup procedure
-
-Thu Nov 19 23:28:33 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Fixed serv_upgrade.c and export5.c (found elsewhere) to use a new
-         export format which treats visits as a separate section
-       * serv_expire.c: began writing functions to purge rooms and visits
-         (neither work yet), and added a way to call defrag_databases()
-
-Wed Nov 18 23:51:17 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Reimplemented 'visit' structs stored globally instead of as
-         lists-per-user
-
-Tue Nov 17 22:37:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Started implementing global room numbers.
-
-Sun Nov 15 20:32:34 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * room_ops.c: mailbox rooms always appear on the main floor
-       * made QR_MAILBOX rooms non-editable
-       * cmd_setr() delete old room record when room name changes
-         (This causes a big mess that exposes a flaw in the whole design.)
-       * room_ops.c: users can delete messages from their mailboxes
-
-Thu Nov 12 23:59:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Rewrote cmd_rchg() and also increased the size of the "fakename"
-         buffer.  Overruns are probably what was causing the crashes.
-       * Changed the way cmd_ent3() handles mail messages; the previous code
-         rerouted all private mail to the trash.
-
-Wed Nov 11 17:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * citserver.c: slight changes to cmd_rchg() and cmd_hchg() [crashes]
-       * citserver.c, msgbase.c, user_ops.c: hide the owner-prefix of mail
-         rooms in a couple more places: set_wtmpsupp() and make_message()
-       * sysdep.c: added an fflush() to lprintf() for "tail -f"-able logs
-       * serv_expire.c: purge ops are now a command instead of a cleanup
-         function.  This is probably temporary as well.
-       * citadel.c: fixed the way <.WL> parses the returned data from a
-         TIME command.
-
-1998-11-11 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * serv_upgrade.c: fix uninitialized variable
-
-Wed Nov 11 00:47:32 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * msgbase.c: fixed a bug that was misrouting incoming network msgs
-       * server.h, database.c: wrapped all GDBM calls in critical sections
-         to avoid making those calls re-entrantly (gdbm fatal: lseek error)
-
-1998-11-10 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: link in snprintf.o where needed
-
-1998-11-09 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * client_chat.c: eliminate calls to sprintf()
-       * commands.h, routines.c, routines2.c: warning fix
-       * commands.c, control.c, cux2ascii.c, file_ops.c, import.c,
-         ipc_c_tcp.c: eliminate sprintf() calls
-
-Mon Nov  9 19:15:31 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * serv_upgrade.c: added all missing fields to export/import
-       * serv_expire.c: support per-user purge time when purging users
-       * user_ops.c: added per-user purge time to AGUP and ASUP commands
-       * routines.c: added more stuff to <.A>ide <E>dit user
-
-Sun Nov  8 22:56:53 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * serv_expire.c: created; moved message expiry from serv_test.c,
-         moved user purge from userpurge.c
-       * userpurge.c: deleted
-       * routines2.c: finished <.AS> command
-       * room_ops.c: fixed Aide room access (for some reason, the Aide
-         room had the QR_MAILBOX flag set)
-
-1998-11-08 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * useradmin.c: really removed (cvs remove)
-       * aidepost.c, citadel.c: convert all sprintf() calls to snprintf()
-       * sysdep.c: fix overrun in lprintf() described by dme/Dead Monkey
-       * citmail.c, citserver.c: convert all sprintf() call to snprintf()
-
-Sun Nov  8 13:19:36 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * useradmin.c: removed
-       * utils.doc: removed references to useradmin and sysoputil
-
-Fri Nov  6 20:22:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * citadel.h (and related files): removed defunct parameters,
-         c_defent and c_msgbase (erase your test system)
-       * Implemented CONF server command for site-global configs
-       * Shuffled yesno() and yesno_d() from routines.c to commands.c
-       * commands.c: implemented boolprompt()
-       * routines2.c: started adding CONF questions to <.AS> command
-       * room_ops.c: began a fix for the mysterious disappearing Aide room
-
-1998-11-05 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * snprintf.c: warning fix propagated over from gcit
-
-1998-11-04 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * added RCS Id keyword strings to sources
-       * citmail.c: reverted to version 1.10
-
-Wed Nov  4 10:53:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * messages.c: temporarily set screenwidth to a fixed value of 80
-         during <P>rint operations.
-
-Mon Nov  2 12:59:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * setup.c: looks for 'citadel', 'bbs', or 'guest' in /etc/passwd to
-         try to get a default for ctdluid if it's currently set to 0
-       * citmail.c: changed usersupp.eternal to usersupp.usernum (why didn't
-         it complain about this before?)
-       * serv_upgrade.c: began writing an "export" command to do sidegrades
-
-Sun Nov  1 18:47:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * serv_upgrade.c: cosmetic changes
-       * Implemented message expiry by date (this really needs to be moved
-         out of serv_test.c, but where does it belong?)
-
-1998-11-01 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * serv_upgrade.c: warning fixes
-       * acconfig.h: remove ANSI_COLOR
-       * Configure, Makefile.tmpl: removed
-
-Sat Oct 31 20:48:44 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * More stoopid ANSI colour additions here and there.
-       * ANSI colour selection is now in citadel.rc instead of an option in
-         the configure script.  "on" "off" and "auto" are available.
-       * added "build.txt" to the techdoc directory, with LS's build notes
-
-1998-10-31 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * citadel.c, commands.c, commands.h: set background color to black
-         before clearing screen, so that we can actually see text on
-         black-on-white xterms.
-
-1998-10-29 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * rooms.c: fix color of Mail>
-       * citadel.c: send ANSI detect sequence after attach_to_server() so the
-         terminal doesn't send the answerback sequence to the shell if we
-         can't connect.
-
-Wed Oct 28 20:20:14 EST 1998 Art Cancro <ajc@uncensored.citadel.org
-       * citadel.c: Added a splash of colour to the Wholist
-
-1998-10-28 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in: added comments
-       * mkinstalldirs: new file to be used for `make install'
-       * aclocal.m4, missing: new files, also swiped from automake
-       * citadel.c: don't mung the terminal if we can't find citadel.rc
-       * Makefile.in: added `install' target, `clean' removes
-         *.mo, rebuild configure when configure.in changes.
-       * configure.in: check for install and autoconf
-       * configure.in, Makefile.in: only pass -fPIC to gcc
-       * policy.c: warning fix for OSF/1 (use memset() instead of bzero())
-
-Tue Oct 27 22:25:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Unified the "unpacked database" format for both upgrades and
-         sidegrades (also see export5.c elsewhere)
-       * citserver.c: clear out cmdbuf before reading a command; some server
-         commands were accidentally extracting parameters from previous cmds
-       * rooms.c: removed the warning about the ineffectiveness of kicking
-         users out of public rooms, because the new server can do lockouts
-
-1998-10-27 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * sysdep.c (client_gets), ipc_c_tcp.c (serv_gets): improved handling
-         of long lines. 
-       * Makefile.in: partial support for VPATH builds, autodependency fix
-
-Tue Oct 27 00:08:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * minor documentation changes
-
-Sun Oct 25 14:57:40 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * messages.c: fixed an oversight that was allowing attachments even
-         when disabled in citadel.rc
-
-1998-10-25 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * routines2.c: warning fix
-
-Sat Oct 24 22:07:56 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Client: added message expiration policy questions to room edit
-       * Client: added <.A>ide <S>ystem configuration command
-
-1998-10-24 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: Auto dependency generation (may require GNU make, but
-         does at least function without this feature on OSF/1 make);
-         Makefile is regenerated when Makefile.in changes (ditto);
-         `realclean' is now known as `distclean';
-         portability fixes for older Unix make utilities
-       * citadel.c, citadel.h, commands.c: make client suspendable
-
-Fri Oct 23 19:34:38 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * setup.c: default node name is now obtained from uname()
-       * config.c: added put_config()
-       * policy.c: added, moved GetExpirePolicy() from room_ops.c
-       * policy.c: implemented cmd_gpex() and cmd_spex()
-
-Wed Oct 21 22:24:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Mail rooms now hide their owner-prefix from the client.
-       * proxy.c: added configurability and primitive message expiry
-
-1998-10-20 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.tmpl: fix to build client with old Configure script
-       * configure.in: autologin defaults to enabled if crypt() is available
-       * room_ops.c: fix improper null-termination bug I introduced
-
-Mon Oct 19 20:52:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Client ability to force display of prompts in Mail rooms, even when
-         the user has prompting turned off (citadel.rc option)
-
-1998-10-16 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * sysdep.c (cprintf): generate a newline on truncated buffer
-       * room_ops.c: exploitable overrun fixes
-
-Thu Oct 15 19:27:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * msgbase.c: reimplemented cmd_move()
-         room_ops.c: wrote AddMessageToRoom() which is used for both entering
-         and moving messages.
-       * setup.c: system-default message expire policy of "number of
-         messages, 150" is now a default configuration instead of a temp hack
-       * proxy.c: cache dir create now dies on any error except EEXIST
-
-Wed Oct 14 22:41:16 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Misc code cleanup
-
-1998-10-13 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in: don't check for -lcrypt unless autologin is enabled
-       * file_ops.c: fix another overrun
-
-Mon Oct 12 15:27:21 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Killed the "rooms" subdirectory (it isn't used anymore)
-       * dynloader.c: Made dynamically added server commands case-insensitive
-       * import.c is now serv_upgrade.c, a module
-       * Removed most of the "level 9" trace messages no longer needed
-
-1998-10-12 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: simplified to use pattern rules; files compiled with
-         -D_REENTRANT go to *.ro to allow the same files to be used with both
-         client and server
-       * tools.c, tools.h: new files; misc routines used by both client and
-         server go here. contains safestrncpy() at the moment.
-       * rooms.c: fix several exploitable buffer overruns
-       * sysdep.c: fix infinite loop when long lines are received from the
-         client; fix exploitable buffer overrun in cprintf()
-       * ipc_c_tcp.c: fix infinite loop on long line from server
-       * serv_upgrade.sh: remove uncnsrd-dependent absolute path
-       * .cvsignore: add *.ro
-
-Sun Oct 11 23:17:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Built some more of the message expiry infrastructure
-
-1998-10-11 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * citserver.c: fix two more overruns, one of which was preventing
-         the "From Host" from showing up in the <W>ho listing.
-
-Sun Oct 11 02:51:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Moved "struct visit" and its associated defs from citadel.h to
-         server.h where they belong
-       * Set up data structures for room policies (expiry, etc.)
-
-1998-10-10 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * citserver.c: fix overrun which caused segv's on servers with long
-         hostnames.
-
-Fri Oct  9 18:34:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * user_ops.c: added PurgeStaleRelationships() to do processing at
-         session logout time to remove visits for rooms which no longer exist
-       * user_ops.c: implemented NewMailCount()
-
-1998-10-09 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * serv_chat.c: fix buffer overrun that was resulting in segv's
-       * serv_chat.c: fix another overrun that could cause sessions to hang,
-         and cleaned up some other strncpy()-related stuff. DON'T FORGET TO
-         NULL-TERMINATE DESTINATION BUFFERS AFTER STRNCPY CALLS.
-
-Fri Oct  9 13:22:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Implemented "lazy mode" traversal - pressing the space bar will do
-         <N>ext messsage, <G>oto next room, or read <N>ew as appropriate.
-       * room_ops.c: modify CtdlRoomAccess() to allow access to mailbox rooms
-         only to their owners.
-
-Thu Oct  8 17:13:27 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * messages.c, citadel.rc: added the ability to display message numbers
-         in the header when reading messages.  I think this is butt ugly, but
-         some of the DaveCode afficionados seem to like it...
-
-Thu Oct  8 15:34:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * room_ops.c: Added is_noneditable() function to replace all of the
-         duplicated code present in all functions which edit room parameters.
-
-1998-10-08 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * lots of warning fixes; builds with -std1 on dec unix
-       * aidepost.c, citadel.h, citmail.c, file_ops.c, msgbase.c, netmailer.c,
-         netproc.c, rcit.c, server.h, stats.c, userlist.c: use time_t where
-         needed
-       * control.c, room_ops.c, serv_chat.c, sysdep.c: use memset() instead of
-         bzero()
-       * dynloader.c, dynloader.h, messages.c, server.h, sysdep.c,
-         sysdep_decls.h: function pointer/prototyping fixes
-       * rooms.c: use mkfifo(3) instead of system("mkfifo")
-
-1998-10-07 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * snprintf.c, snprintf.h: new files
-       * Makefile.in, configure.in, dynloader.c, sysdep.c: support for the
-         above; citserver now builds and runs on Digital Unix 4.0d with the
-         GNU-style configure script. there is a bug with the hostname display
-         in the wholist.
-       * netproc.c: sillyness fix
-       * room_ops.h: prototype delete_room()
-       * client_chat.c, commands.c, serv_chat.c, sysdep.c:
-         use HAVE_SYS_SELECT_H macro
-
-Mon Oct  5 17:01:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Began fixing the stuff I broke
-
-Sun Oct  4 23:35:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Did the big migration to the new data structures.  Lots of stuff is
-         now broken.  Basic moving from room to room works, but Mail is
-         broken, and some of the administrative commands are unimplemented.
-
-1998-10-02 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in: autologin now defaults to disabled
-
-Fri Oct  2 00:04:31 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Finally removed all three usersupp.foo[MAXROOMS] elements, and
-         migrated all the code that used them to use "struct visit" instead.
-
-Thu Oct  1 23:02:20 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Rewrote [l][get|put]room() functions to use room names rather than
-         room index numbers.  Temporarily prepended a "n" to these four
-         function names until they are put to use.
-
-Thu Oct  1 16:27:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Removed a few more references to usersupp.lastseen[]
-
-1998-10-01 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * .cvsignore: add so_locations (generated by osf1 ld with shared libs)
-       * Makefile.in: restructured variables for greater consistency, use
-         @echo to print out notices during the make process, add so_locations
-         to `cleaner'
-       * configure.in, Makefile.in: configure checks for -rdynamic
-       * ipc_c_tcp.c: fix DEC compiler warning wrt unsigned char
-       * stats.c: add semicolon to placate DREC compiler
-       * user_ops.c: define _POSIX_C_SOURCE, include <limits.h>
-       * configure.in: pass -pthread to DEC compiler, don't check for
-         libpthread[s] on DEC Unix
-
-1998-09-30 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: new variable PTHREAD_DEFS for portability
-       * aidepost.c, citadel.c, citmail.c, mailinglist.c, msgform.c,
-         netmailer.c, netpoll.c, netproc.c, rcit.c, readlog.c, setup.c,
-         stats.c, userlist.c, whobbs.c: return type of main() is int
-       * citadel.c, commands.c, messages.c: use time_t properly
-       * citserver.c: include <limits.h>
-       * config.guess, config.sub, install-sh: new files
-       * configure.in: don't use gcc on Digital Unix
-
-Tue Sep 29 23:17:34 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * room_ops.c: modified usergoto() to look at the new data structures
-         for counting new messages and such.
-
-1998-09-29 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * user_ops.c: fix compiler warning and potential memory leak,
-         include sysdep.h
-       * configure.in, Makefile.in: only build the server if we find pthreads
-       * Makefile.in: realclean removes config.{cache,log,status}
-
-Tue Sep 29 13:20:14 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Removed code from some of the utilities which was still attempting
-         to access the old non-gdbm data store.
-       * housekeeping.c: rewrote check_ref_counts() to do a ForEachRoom()
-         traversal instead of a MAXROOMS loop.
-       * sysdep.c: set up a dummy CitContext record to be used during server
-         startup, during which time there is no real context.
-
-Mon Sep 28 23:51:51 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Implemented the function ForEachRoom() to handle all-rooms traversal
-         (this will work with both the old and new paradigms, because both
-         use a GDBM database with one room per record).  Migrated all room
-         list commands to use it.
-
-Mon Sep 28 22:05:35 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Implemented the function CtdlRoomAccess() to handle *all* of the
-         user-access-to-rooms functionality.  Migrated all room list commands
-         to use it.  Still need to migrate gotos.
-
-1998-09-28 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * configure.in, acconfig.h: new files; partially functional GNU
-         autoconf configure script. Run autoheader; autoconf; ./configure
-         --prefix=`pwd` to test.
-       * Makefile.tmpl: new file; this is what Makefile.in used to be. Used by
-         Configure.
-       * Makefile.in: modified to work with autoconf-style configure script
-       * Configure: modified to use Makefile.tmpl and generate autoconf-style
-         macros. Removed procfs detection. Pass -O2 to gcc, -O to other
-         compilers. Removed mknod/mkfifo detection; code should use mkfifo(3).
-       * citmail.c, msgform.c, netproc.c, routines.c, support.c, userlist.c,
-         whobbs.c: use HAVE_STRERROR macro rather than NO_STRERROR
-       * commands.c: use HAVE_TERMIOS_H macro rather than POSIX_TERMIO
-       * netproc.c: remove procfs stuff. simply attempt to kill the target
-         process with signal zero instead; this checks whether the process
-         exists.
-       * setup.c, useradmin.c: use HAVE_CURSES_H macro
-
-Sun Sep 27 23:41:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * BOTH the old and new generation systems are being written to at
-         this point.  Code that reads stuff is still using the old system.
-
-Sun Sep 27 16:10:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Changed all "generation" variables from char to long, in preparation
-         for removing MAXROOMS.  Generations for new rooms are now timestamps.
-       * Defined "struct visit" to hold user/room relationships.
-       * Removed some #define's from citadel.h that are no longer used.
-
-Wed Sep 23 13:41:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * More changes to support attachments.  They mostly work, but only
-         in fixed-format messages.
-
-Mon Sep 21 21:19:17 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * msgbase.c: began laying the groundwork to support attachments.
-         Purchased Rogaine(tm) in preparation for expected hair loss.
-
-1998-09-21 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * msgbase.c: include dynloader.h
-       * citadelapi.h: removed
-       * dynloader.h: prototype CtdlRegisterUserHook()
-
-Sun Sep 20 18:56:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Added a UserFunctionHook category to implement hooks which perform
-         operations on various users or usernames
-
-Fri Sep 18 21:14:41 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * citserver.c: removed cmd_extn() and related code
-
-1998-09-18 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * user_ops.c: include dynloader.h
-       * roomstats.{c,mk}: removed
-       * Configure, Makefile.in: autodependency-related fixes
-
-Thu Sep 17 22:55:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Various changes to allow "new messages" to work correctly with Mail
-
-Thu Sep 17 22:21:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * server.h, dynloader.c, citserver.c, user_ops.c: reduced the number
-         of hook types by inventing an EventType field to the Session hook.
-       * proxy.c: added pre-fetching
-
-1998-09-17 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: add SERV_MODULES and PROXY_TARGETS to `cleaner'
-       * dynloader.[ch], serv_{chat,test}.[ch], sysdep.c: cleaned
-         up the dynamic loader interface as follows:
-         - all the symbol table stuff is gone.
-         - modules are loaded once at server startup and never unloaded.
-         - Added a new function CtdlRegisterProtoHook() to handle the stuff
-           that was being done with the symbol tables.
-         - Dynamic_Module_Init() now returns a pointer to a static struct
-           DLModule_Info; this structure itself has been modified to use char*
-           fields instead of fixed char arrays.
-       * roomstats.c: include <stdarg.h> not <stdargs.h> (is this file still
-         in use?)
-       * Configure, Makefile.in: added autodependency support
-
-Wed Sep 16 22:25:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Implemented separate structs, lists, and functions for each type
-         of server-side hook available.
-
-1998-09-16 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * ipc_c_tcp.c: Fixed up some #include/prototyping stuff, call memcpy()
-         instead of bcopy()
-       * hooks.h: removed
-       * sysdep.c, user_ops.c: removed reference to hooks.h
-
-Wed Sep 16 11:42:42 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * ipc_c_tcp.c: Reversed any changes that have been made to this file,
-         because something was causing abominally slow response time.
-       * proxy.c: added.  This will eventually become a caching, pre-fetching
-         multiuser proxy server for the Citadel protocol.
-
-1998-09-15 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: remove support.o from serv_chat.so, add -fPIC to compile
-         flags for serv_chat.o
-       * dynloader.c: include "sysdep_decls.h", use RTLD_NOW not RTLD_LAZY
-       * dynloader.h: prototype CtdlRegisterHook()
-       * .cvsignore: added data
-
-Mon Sep 14 20:49:08 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Tried my hand at adding the ability for server extensions to
-         register various types of "hooks" in addition to just adding
-         server commands.  This is probably not final.
-
-Tue Sep  8 12:11:56 EDT 1998 Brian Costello <btx@calyx.net>
-       * Added support for dynamic server modules.  Reworked serv_chat.c
-         to be such a module.
-
-Tue Sep  1 23:09:50 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * userpurge.c: rewrote using functions from the server core, rather
-         than the now-defunct external API.  This'll be ready once the module
-         loading code is done.  (I just had to commit _something_ tonight.)
-
-Mon Aug 31 22:47:58 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Yanked the citadelapi.c module.  This wasn't working out well.
-       * techdocs/citadelapi.txt - began documenting the new API to be used
-         by modules which will be dynamic linked into the server - most of
-         this API is existing server functions.
-       * Added a ForEachUser() function with callback mechanism, and reworked
-         cmd_list() to use it.
-
-Sun Aug 30 21:52:43 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Moved all of the gdbm databases to a separate "data" directory.
-
-1998-08-26 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: realclean removes Makefile, fixed `touch citadel.h'
-         problem
-
-1998-08-25 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * room_ops.c: include time.h
-       * userlist.c, whobbs.c, serv_chat.c, user_ops.c, sysdep.c, stats.c,
-         citadel_decls.h, commands.c, messages.h, routines.h, routines2.h:
-         remove duplicated declarations
-
-Mon Aug 24 23:45:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * setup.c: Removed yesno_s()
-       * citadel.h, room_ops.c: added QRmtime field to struct quickroom,
-         modified whenever a room is modified or posted in.
-       * citadelapi.c: Added CtdlForEachRoom() function
-
-Mon Aug 24 20:04:04 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: new target `cleaner' does the same as `realclean' 
-         without removing sysdep.h
-       * proto.h: is bad. eliminate. I've moved the prototypes into several
-         header files, one per .c file
-
-Mon Aug 24 00:45:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Added a CtdlGotoRoom() function to the CitadelAPI.
-Sun Aug 23 21:47:00 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * sysoputil is finally dead!  Removed it from the build.
-       * Added userpurge.c server extension (initial implementation)
-
-Tue Aug 18 00:42:33 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: `clean' target no longer rm's sysdep.h; new target
-         `realclean' removes everything clean does, plus sysdep.h, plus
-         target binaries.
-       * Configure: add -Wstrict-prototypes to CFLAGS for gcc systems
-       * *.[ch]: protoized. Added several new header files containing
-         prototypes and other external declarations; many duplicated
-         declarations still should be moved to header files. proto.h must die
-         as well, IMHO.
-
-Mon Aug 17 23:52:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Implemented a bunch of user account related functions in the
-         CitadelAPI library.
-
-Mon Aug 17 20:01:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Fixed the crash problem.  It wasn't AGUP/ASUP, but rather a buffer
-         overrun in getuser() (thanks, Nathan).  Implemented overrun checks
-         in getuser(), getroom(), and getfloor() to prevent future problems.
-
-Mon Aug 17 00:06:52 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Updated citmail.c with the latest stuff from the production system.
-       * Implemented AGUP and ASUP commands, but AGUP crashes the server
-         after its first successful use (user-not-found's don't affect it).
-
-Thu Aug  6 19:25:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Got the CitadelAPI library to the point where the server can start
-         up an extension, and the extension will connect to the server, do
-         some initialization, call a user-supplied CtdlMain(), and exit.  Also
-         hacked together a _temporary_ form of the new EXTN server command.
-Wed Aug  5 23:02:22 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Second attempt at getting the server API started.  Now it runs
-         outside of the server and builds a connection.
-
-Tue Aug  4 18:33:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Modified the appearance of Internet addresses when they arrive on
-         a Citadel system.
-       * Removed the <E> field from the message format writeup in hack.txt.
-       * Fixed-up citmail.c so that it doesn't try to do database lookups.
-
-Mon Aug  3 23:01:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Started developing the server-side API.  This is in its very
-         initial stages.  See serverapi.c and techdoc/api.txt
-
-1998-08-02  Nathan Bryant  <bryant@cs.usm.maine.edu>
-       * Makefile.in: added config_decls.h to dependencies
-
-Sun Aug  2 21:09:09 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * config_defs.h: renamed to config_decls.h
-       * config.c, sysoputil.c: updated to reflect the above
-
-Sun Aug  2 18:52:05 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * config_defs.h: new file, contains external declarations from config.c
-       * config.c: moved defs to config_defs.h, use PATH_MAX from <limits.h>
-         for ctdl_home_directory
-       * mailinglist.c, support.c: include <string.h>
-       * sysoputil.c: include <string.h>, <limits.h>, "config_defs.h", remove
-         duplicated defs, replace gets() call with fgets()
-       * user_ops.c: define _XOPEN_SOURCE_EXTENDED
-
-Sat Aug  1 18:32:52 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * ipc_c_tcp.c: fixed order of memcpy parameters after gethostbyname
-
-Sun Jul 19 17:26:12 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * ChangeLog: reordered; the GNU standard is to add new entries to the
-         top.
-       * .cvsignore: added userlist
-
-Sun Jul 12 20:58:59 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Finished migrating everything to the new data store.
-       * Replaced the binary "calllog" with the ASCII "citadel.log"
-       * Began converting broken utilities that depend on the old data store
-
-Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
-       * Makefile.in: removed msgstats
-
-Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
-       * Initial CVS import
index 3d964a3f2c9ba610ee58c45429cbaf5465239cd4..db82b67ea19b88a1bf39f5940dbe3a7d351f6ccc 100644 (file)
@@ -33,7 +33,7 @@ extern "C" {
 /*
  * Text description of this software
  */
-#define CITADEL        "Citadel 6.71"
+#define CITADEL        "Citadel 6.72"
 
 /*
  * REV_LEVEL is the current version number (multiplied by 100 to avoid having
@@ -45,7 +45,7 @@ extern "C" {
  * usually more strict because you're not really supposed to dump/load and
  * upgrade at the same time.
  */
-#define REV_LEVEL      671             /* This version */
+#define REV_LEVEL      672             /* This version */
 #define REV_MIN                591             /* Oldest compatible database */
 #define EXPORT_REV_MIN 655             /* Oldest compatible export files */