+$Log$
+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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * utilsmenu: removed menu items for defunct utilities
+
+Mon Jun 28 16:24:10 EDT 1999 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
+ * Changed any remaining references to UUCP, to "Internet" instead.
+
+Thu Jun 24 11:13:23 EDT 1999 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * netproc.c: started writing a vortex checker. Not finished.
+
+Wed Jun 9 23:34:25 EDT 1999 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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@uncnsrd.mt-kisco.ny.us>
+ * 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
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
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
+ * 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
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
+ * 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
* Makefile.in: removed msgstats
Fri Jul 10 1998 Art Cancro <ajc@uncnsrd.mt-kisco.ny.us>
- * Initial CVS import
+ * Initial CVS import