]> code.citadel.org Git - citadel.git/blob - citadel/ChangeLog
* database_sleepycat.c: emit a panic message when Berkeley DB wants us to
[citadel.git] / citadel / ChangeLog
1  $Log$
2  Revision 614.91  2004/03/21 22:34:41  error
3  * database_sleepycat.c: emit a panic message when Berkeley DB wants us to
4    run recovery; should provide a little more detail on the actual error
5
6  Revision 614.90  2004/03/21 22:32:24  ajc
7  * room_ops.c: increased the thread safety of cgetfloor()
8  * housekeeping.c: check floor reference counts in two passes instead of
9    trying to manipulate multiple tables in O^2
10
11  Revision 614.89  2004/03/21 17:14:46  error
12  * stress.c: Fixed.  Now properly spawns threads and stresses out your
13    favorite Citadel server by simulating large numbers of really active
14    users.  (It's configurable on the command line, too, to vary the stress
15    level.)  Don't use it against a production system!  You've been warned!
16
17  Revision 614.88  2004/03/21 17:13:15  error
18  * configure.ac: Fix for defines for pthreads not being included properly
19
20  Revision 614.87  2004/03/21 06:15:06  ajc
21  * docs/citadel.html: documented TLS support and administration procedures
22
23  Revision 614.86  2004/03/20 22:32:06  ajc
24  * citadel.rc: changed the comments around local_screen_dimensions= to
25    reflect its legacy type of situation
26
27  Revision 614.85  2004/03/16 22:44:15  ajc
28  * Better conversion of friendly name to fully qualified vcard name
29
30  Revision 614.84  2004/03/16 21:09:37  ajc
31  * Eliminate EVT_OUTPUTMSG server extensions (don't need them anymore)
32  * Add EVT_NEWUSER server extensions
33  * EVT_NEWUSER and EVT_PURGEUSER server extensions now specify a
34    struct ctdluser * instead of a username and usernum
35  * serv_vcard.c: automatically create and submit a skeleton vCard when
36    a new user is created.
37
38  Revision 614.83  2004/03/16 19:05:50  error
39  * Further changes to stress.c, Makefile.in to build it, .cvsignore
40    (but it's still broken)
41
42  Revision 614.82  2004/03/15 18:11:34  error
43  * stress.c: various fixed/improvements (but it still isn't working)
44
45  Revision 614.81  2004/03/15 17:22:14  error
46  * First draft of the stress tester.  Isn't quite ready (it needs to be
47    tested itself!).
48
49  Revision 614.80  2004/03/15 16:48:22  error
50  * Documentation update: update citadel.html for new syslog logging
51
52  Revision 614.79  2004/03/15 16:47:04  error
53  * msgbase.c: cmd_move(): Fix the security logic for non-aides trying to
54    move or copy messages.  The logic should do the following:
55    * Allow move/copy for Aides
56    * Allow regular users to:
57      * Move a message between two personal rooms
58      * Copy a message from a Personal room to a room the user is subscribed to
59      * Copy a message from a room the user is subscribed to, to a personal room
60    * Prohibit other moves/copies
61
62  Revision 614.78  2004/03/15 16:39:27  error
63  * Multiple files: Set permissions on existing Citadel directories to prevent
64    access to the database by local unix users to prevent direct database reads.
65
66  Revision 614.77  2004/03/15 16:36:50  error
67  * Multiple files:  Convert most remaining client code to use new Citadel IPC
68    functions.  A few bits remain and will be converted when the chat system
69    is rewritten.
70
71  Revision 614.76  2004/03/14 06:35:46  ajc
72  * Cache IMAP "BODY" fetches in an already-converted format.  This speeds
73    up clients like Mozilla and Thunderbird that request big messages in
74    chunks -- we don't have to load and convert the message every time
75    another chunk is requested.
76  * Fixed a potential memory leak in fetch
77
78  Revision 614.75  2004/03/13 23:26:10  ajc
79  * imap_fetch.c: don't fetch the message from disk at all for UID and FLAGS
80    fetch items.  (It's rare, but sometimes IMAP optimizations are actually
81    possible, despite Mark DIE DIE DIE Crispin's brain-dead design!)
82
83  Revision 614.74  2004/03/13 22:52:05  ajc
84  * Documented the GNET and SNET commands  :)
85
86  Revision 614.73  2004/03/12 19:35:13  error
87  * routines2.c: Fix two typos
88
89  Revision 614.72  2004/03/12 19:32:09  error
90  * routines2.c: Convert multiple functions to use new IPC code (almost done!)
91
92  Revision 614.71  2004/03/12 19:30:06  error
93  * citadel.c: main(): Fix error response for RCHG, HCHG and UCHG commands.
94
95  Revision 614.70  2004/03/12 19:28:04  error
96  * Implement GNET/SNET commands in IPC code; provide a CtdlIPC_delete();
97    emit warnings when client code uses CtdlIPC_getline() or CtdlIPC_putline()
98    (These are reserved and should not be used by client code.)
99
100  Revision 614.69  2004/03/10 04:50:04  ajc
101  * serv_expire.c: auto-purge any Citadel account that is associated with
102    a Unix account that no longer exists.
103
104  Revision 614.68  2004/03/09 20:46:33  error
105  * Add a Linux Software Map file
106
107  Revision 614.67  2004/03/08 05:26:49  ajc
108  * When the last argument of an IMAP APPEND command is a binary literal
109    (i.e. all the time), the client will still be sending a CRLF after the
110    literal.  Added an extra client_read() after the message input to absorb
111    that extra CRLF, to keep client and server from getting out of sync.
112
113  Revision 614.66  2004/03/06 05:09:04  ajc
114  * serv_smtp.c: don't offer the STARTTLS extension if TLS is already
115    active.  Done for to-the-letter compliance with RFC2487.
116
117  Revision 614.65  2004/03/06 02:03:39  ajc
118  * serv_smtp.c: do not offer the PIPELINING extension when TLS is
119    running.  Doing so causes sessions to hang unexpectedly.
120
121  Revision 614.64  2004/03/05 23:21:25  ajc
122  * Added some more debugging to serv_smtp.c to try to figure out the
123    problem with Postfix TLS hanging during send
124
125  Revision 614.63  2004/03/05 03:36:03  ajc
126  * Remove the automatic population of A and N fields we recently added
127    when found to be NULL.  It was confusing the output functions into
128    thinking that Internet messages were local.
129
130  Revision 614.62  2004/03/03 05:43:29  ajc
131  * Generate better output when a user is kicked out of chat
132
133  Revision 614.61  2004/03/01 22:36:14  ajc
134  * Implement the NAMESPACE extension of IMAP (RFC 2342)
135
136  Revision 614.60  2004/03/01 17:47:28  error
137  * Fix missing arg in m<Y> next rewrite.
138
139  Revision 614.59  2004/03/01 17:33:30  error
140  * Rewrite m<Y> next function; now uses CtdlIPC code.
141
142  Revision 614.58  2004/03/01 04:08:34  ajc
143  * Revoke access to room when /kicked
144
145  Revision 614.57  2004/02/29 23:26:48  ajc
146  * Added /kick command to chat.  /ban coming soon.
147
148  Revision 614.56  2004/02/28 16:37:41  ajc
149  * setup.c: removed an unused temp file name variable
150
151  Revision 614.55  2004/02/27 17:23:21  error
152  * Use syslog-compatible logging levels in lprintf(); the loglevel chosen
153    is passed directly to syslog().  The available levels are docuemnted in
154    sysdep_decls.h.
155
156  Revision 614.54  2004/02/27 04:29:00  ajc
157  * Fixed a bug in PLAIN authentication
158
159  Revision 614.53  2004/02/26 22:03:24  error
160  * ;Goto floor now goes to first KNOWN room, or first room only if no known
161    rooms on the floor
162
163  Revision 614.52  2004/02/26 20:30:36  error
164  * Populate IPC into a few more places to avoid a nasty crash at MORE prompt
165
166  Revision 614.51  2004/02/26 20:17:29  error
167  * Client stability and enhancements:
168    * CtdlServInfo structure moved inside CtdlIPC; eliminates unnecessary
169      global and makes IPC more self-contained
170    * Removed redundant serv_ from variable names in CtdlServInfo struct
171    * Send SIGHUP to process group when connection_died().  Kills self and
172      children (e.g. external editor).
173
174  Revision 614.50  2004/02/25 01:35:34  error
175  Missing parameter to a printf() function.  No idea where it went, but I
176  put it back.
177
178  Revision 614.49  2004/02/24 05:09:06  ajc
179  * Better validation of incoming network messages.
180
181  Revision 614.48  2004/02/23 16:10:47  nbryant
182  --disable-pie by default.
183
184  Revision 614.47  2004/02/22 04:55:15  ajc
185  * CSR code more or less in its final form for now.
186
187  Revision 614.46  2004/02/22 04:42:05  ajc
188  * Initial version of function to automatically generate a Certificate
189    Signing Request if one is not present
190
191  Revision 614.45  2004/02/20 19:29:05  error
192  * Fix bug 112: .Goto allowed partial room match on forgotten rooms
193
194  Revision 614.44  2004/02/20 02:55:18  ajc
195  * Fixed one of the prompts (bugzilla #118)
196
197  Revision 614.43  2004/02/19 04:12:56  ajc
198  * Instead of doing the silly "Kolab reserved folder names" thing, instead
199    implemented the Cyrus-compatible style of forcing all personal mailbox
200    folders to be subfolders of INBOX.  But only for IMAP.
201
202  Revision 614.42  2004/02/18 14:46:05  ajc
203  * smtp: EHLO response now includes both "AUTH " and "AUTH=" output, due to
204    the requirement to interoperate with brain-dead Microsoft shitware that
205    doesn't follow the RFC.
206
207  Revision 614.41  2004/02/17 16:56:51  ajc
208  * During SSL initialization, create the "keys" directory if it does not
209    exist ... generate a private key if that does not exist ... more code
210    coming soon to generate CSR and self-signed cert.  Hard-coded pathnames
211    have been moved to sysconfig.h.
212
213  Revision 614.40  2004/02/17 04:47:22  ajc
214  * Support PLAIN auth method in SMTP
215
216  Revision 614.39  2004/02/17 03:53:11  ajc
217  * New ICAL subcommand "sgi" to enable or disable automatic server
218    generated invitations.  (WebCit wants sgi's but Kontaqt doesn't.)
219
220  Revision 614.38  2004/02/16 21:54:22  ajc
221  * Support POP3 over TLS
222
223  Revision 614.37  2004/02/16 21:45:43  ajc
224  * Implement RFC 2487 - SMTP Service Extension for Secure SMTP over TLS
225
226  Revision 614.36  2004/02/16 21:02:28  ajc
227  * IMAP and Citadel protocols now use the same code path for TLS negotiation
228
229  Revision 614.35  2004/02/16 20:55:47  ajc
230  * Genericized the Citadel API for TLS-enabling protocols
231
232  Revision 614.34  2004/02/16 18:16:39  error
233  * Remove some unnecessary and possibly hazardous debugging code leftover
234    from debugging IMAP STARTTLS
235
236  Revision 614.33  2004/02/16 18:14:00  error
237  * Fixed IMAP STARTTLS; trouble was in client_read_ssl the whole time.
238    It should now be possible to implement SSL/TLS for any protocol.
239
240  Revision 614.32  2004/02/16 18:13:10  error
241  * Log session IDs in syslog as well as stderr
242
243  Revision 614.31  2004/02/16 15:06:44  error
244  * Add specific error codes for every command on the wire protocol, so that
245    clients can more easily determine what went wrong.  Partially updated
246    session.txt (will finish it later).  This lets clients more easily
247    determine what, if anything, went wrong with a particular command.
248
249  Revision 614.30  2004/02/15 06:06:49  ajc
250  * More work on IMAP TLS.  Still not working correctly.  :(  Added in
251    support for server-side certificates.  Now instead of failing it hangs.
252
253  Revision 614.29  2004/02/14 04:41:55  ajc
254  * STARTTLS attempt #2.  Still disabled because it's broken.
255
256  Revision 614.28  2004/02/13 20:51:13  error
257  * Reset screen attributes before fork() so that external programs do the
258    right thing
259
260  Revision 614.27  2004/02/12 04:16:38  ajc
261  * Support for PLAIN logins in IMAP (need to test!)
262
263  Revision 614.26  2004/02/11 03:50:49  ajc
264  * The groupware folders "Calendar", "Contacts", "Notes", and "Tasks" are
265    now presented as subfolders of INBOX when using IMAP.  This is for the
266    purpose of Kolab compatibility.
267
268  Revision 614.25  2004/02/09 22:40:57  error
269  * oops...also close the client on EOF/error on tty OUTPUT
270
271  Revision 614.24  2004/02/09 22:26:17  error
272  * Exit the citadel client when EOF reached on input - should prevent
273    a process from hanging around when a telnet connection dies unexpectedly
274
275  Revision 614.23  2004/02/08 05:29:34  ajc
276  * Corrected various small syntax conversion problems that were keeping
277    some vCards out of the LDAP directory.
278
279  Revision 614.22  2004/02/07 05:28:10  ajc
280  * Automatically purge files from ./network/spoolout which were intended
281    for nodes which no longer exist
282
283  Revision 614.21  2004/02/07 04:59:21  ajc
284  * Cache the IGnet config in memory, avoiding a db fetch for every single
285    operation which references it.  Invalidate the cache when a new config
286    is uploaded.
287  * When doing network spool for a room, automatically remove shares for
288    Citadel nodes which no longer exist.
289
290  Revision 614.20  2004/02/07 04:22:12  ajc
291  * serv_network.c: fixed a problem with an uninitialized data structure
292
293  Revision 614.19  2004/02/06 04:40:50  ajc
294  * Suppress posting of messages to Aide> when the loopzapper catches dupes.
295  * New command NSYN to sync the entire contents of a room to a specified
296    network node.  This will be used to bring new nodes in sync with existing
297    nodes.
298
299  Revision 614.18  2004/02/06 03:58:10  ajc
300  * Added some comments to the sample citadel-slapd.conf
301
302  Revision 614.17  2004/02/06 03:52:46  ajc
303  * Changed the domain name and password in the sample slapd.conf
304
305  Revision 614.16  2004/02/05 05:20:20  ajc
306  * Delete a user's LDAP entry when deleting the vCard.  NOT TESTED.
307
308  Revision 614.15  2004/02/05 03:54:14  ajc
309  * Completed the per-user initialization of LDAP entries.
310
311  Revision 614.14  2004/02/04 18:27:25  error
312  * Don't delete temp file when composing message until after server writes
313    it successfully (or an error occurs in the client itself).
314
315  Revision 614.13  2004/02/04 04:07:56  ajc
316  * More work on LDAP connector
317
318  Revision 614.12  2004/02/01 06:19:22  ajc
319  * policy.c: fix bug in GetExpirePolicy() that was causing the default
320    mailbox purge policy to be misinterpreted if it was set to "use
321    system default"
322  * serv_vcard.c: always set the Global Address Book room's expire policy
323    to "never expire" and its default view to "address book"
324
325  Revision 614.11  2004/01/31 05:44:29  ajc
326  *** empty log message ***
327
328  Revision 614.10  2004/01/27 19:56:29  ajc
329  * serv_smtp.c: HELO and EHLO responses now reply with the detected
330    IP address and reverse DNS lookup of the connecting host
331
332  Revision 614.9  2004/01/24 05:47:50  ajc
333  * Got Citadel talking to LDAP.  Still requires manual creation of schema
334    and container entries, which I don't like; we'll have to fix that.  It
335    also does not yet populate all fields.
336
337  Revision 614.8  2004/01/19 21:01:15  error
338  * Clear out the autom4te.cache when bootstrapping to avoid autoheader problems
339
340  Revision 614.7  2004/01/19 04:44:11  ajc
341  * Further work on creating LDAP entries.
342
343  Revision 614.6  2004/01/18 21:04:40  ajc
344  * Reworked vCard etc. functions for addition of new vCard data to LDAP
345
346  Revision 614.5  2004/01/17 22:57:54  ajc
347  * Added "Base DN" "Bind DN" and "Bind DN password" config options
348  * serv_ldap.c: added.  (New module implementing the LDAP Connector)
349  * Upon startup, connect to LDAP directory and bind to it.  Unbind at exit.
350
351  Revision 614.4  2004/01/17 04:23:28  ajc
352  * Sysconfig commands for specifying where the LDAP server lives
353
354  Revision 614.3  2004/01/17 03:26:17  ajc
355  * Changed a diagnostic in msgbase.c to a higher logging level so it doesn't
356    make as much noise.
357  * Setup now adds "-x3 -llocal4" to the default inittab line.
358
359  Revision 614.2  2004/01/17 03:17:34  ajc
360  * New server command-line option "-l" to send log output to the host
361    computer's syslog facility instead of to a trace file.
362
363  Revision 614.1  2004/01/02 22:13:59  ajc
364  * Link to OpenLDAP client library (-lldap) and set HAVE_LDAP if present.
365
366  Revision 614.0  2003/12/30 04:13:40  ajc
367  * THIS IS 6.14
368
369  Revision 613.12  2003/12/30 04:13:31  ajc
370  * Commented out one of the supplied .RU commands in citadel.rc
371
372  Revision 613.11  2003/12/24 05:02:49  ajc
373  * Allow a separate default message expire policy for mailbox rooms.  The
374    floor default setting is now ignored for mailboxes.  Updated client and
375    documentation to match.
376
377  Revision 613.10  2003/12/23 03:53:49  ajc
378  * Expanded the size of all string fields in "struct CtdlIPCMessage" to
379    the standard SIZ length, in order to accomodate "weird" messages
380    without crashing.  Also converted many strcpy()'s to safestrncpy()'s
381    while populating this data structure, to avoid overruns.
382
383  Revision 613.9  2003/12/22 16:49:36  error
384  * Add Preview for Mac OS X as an image viewer option in citadel.rc
385
386  Revision 613.8  2003/12/22 15:30:53  error
387  * Fork image viewer process in background (works now); suppress
388    stdout/stderr from the image viewer
389
390  Revision 613.7  2003/12/21 20:02:28  error
391  * When viewing images, append the image filename to the temp filename so
392    that less-intelligent viewers can deal with the images
393
394  Revision 613.6  2003/12/21 19:07:28  error
395  * Start a new thread and fork() for image viewer (broken/disabled; for
396    refernce only)
397
398  Revision 613.5  2003/12/21 01:23:12  nbryant
399  added some additional comments to citadel.rc concerning possible image viewers
400
401  Revision 613.4  2003/12/21 00:44:19  error
402  * Fix for idle_threshold being ignored when reading citadel.rc
403
404  Revision 613.3  2003/12/21 00:37:54  error
405  * Fix for crash when downloading multiple attachments
406
407  Revision 613.2  2003/12/21 00:19:41  error
408  * Image viewer code for the text client.  Hit 'I' to view an image
409    attached to a file.  Hey aahz, this code actually works!
410
411  Revision 613.1  2003/12/19 04:33:52  ajc
412  * Changes to auto-expunge algorithm to support correct behavior in
413    some IMAP clients while moving messages.
414
415  Revision 613.0  2003/12/15 16:37:01  ajc
416  * THIS IS 6.13
417
418  Revision 612.14  2003/12/15 16:33:47  ajc
419  * Added support for "Cc" and "Bcc" IMAP SEARCHes
420  * Bumped the version number to 6.13
421
422  Revision 612.13  2003/12/11 04:21:23  ajc
423  * Removed a "FIXME this needs blah blah" comment because blah blah has
424    since been completed
425
426  Revision 612.12  2003/12/11 04:06:55  nbryant
427  configure.ac: add support for position-independent executables. can be disabled
428  with --disable-pie
429
430  Revision 612.11  2003/12/11 03:44:18  nbryant
431  domain.c: include <arpa/nameser_compat.h> if present
432  configure.ac: check for <arpa/nameser_compat.h>
433
434  Revision 612.10  2003/12/10 03:58:26  ajc
435  * Completed a more accurate implementation of the ENVELOPE fetch in IMAP.
436
437  Revision 612.9  2003/12/09 06:39:19  nbryant
438  did a minimal amount of ANSIfication without changing anything that would
439  affect the compiler output in any way. I was just trying to get enough warnings
440  enabled to be able to tell if there are any nested functions lurking about...
441
442  If we get rid of nested functions we can get some big security gains under
443  Fedora.
444
445  Revision 612.8  2003/12/09 05:12:49  ajc
446  * Don't give away anonymous poster information in IMAP or RFC822
447
448  Revision 612.7  2003/12/09 04:50:16  ajc
449  * Painstakingly combed through IMAP headers and responses for two hours in
450    an attempt to figure out why the horrendous pile of crap called Microsoft
451    Outlook counts the correct number of messages but wasn't displaying any
452    of them.  Eventually determined that it was ONE EXTRA SPACE after the
453    closing paren of the ENVELOPE output that caused Outlook to totally ignore
454    all the messages.  This only reinforces my belief that anything designed
455    in the state of Washington is utter and complete CRAP.
456  * Corrected the above glitch.  Outbreak works properly now.
457
458  Revision 612.6  2003/12/09 03:56:29  ajc
459  * user_ops.c: missing string declaration or something?
460
461  Revision 612.5  2003/12/08 17:41:01  ajc
462  * serv_smtp.c: validated and documented compliance with a big pile of RFC's
463    which are in one way or another related to SMTP.
464
465  Revision 612.4  2003/12/07 19:59:13  error
466  * Minor enhancements to a few of the trace file entries
467
468  Revision 612.3  2003/12/07 19:57:48  error
469  * Added some useless comments to some of the techdocs/ files
470
471  Revision 612.2  2003/12/07 19:56:24  error
472  * CREU command now allows specification of an initial password
473
474  Revision 612.1  2003/12/04 04:20:08  ajc
475  * Incoming RFC822 messages get the To: field translated directly to
476    a Citadel <R> field.
477
478  Revision 612.0  2003/12/01 04:11:48  ajc
479  * THIS IS 6.12
480
481  Revision 611.10  2003/11/30 03:43:34  ajc
482  * Support IMAP \Answered flag
483
484  Revision 611.9  2003/11/22 03:30:14  ajc
485  * Commented out the call to the 'high speed download' function and
486    uncommented the call to the original 'chatty' download function.  Some
487    users were reporting lockups.
488
489  Revision 611.8  2003/11/14 20:15:44  ajc
490  * Reversed the previous change because it made things b0rken
491
492  Revision 611.7  2003/11/14 20:04:28  ajc
493  * IMAP FETCH ENVELOPE now outputs more fields correctly.
494
495  Revision 611.6  2003/11/14 03:49:54  ajc
496  * MUCH faster implementation of rfc822_fetch_field()
497
498  Revision 611.5  2003/11/13 04:25:38  ajc
499  * mime_parser.c: handle multipart *much* more efficiently now.  Instead
500    of scanning line by line, we snag the boundaries using the Boyer-Moore
501    algorithm.
502
503  Revision 611.4  2003/11/12 04:28:22  ajc
504  * Replaced bmstrcasestr() with a more generic function, bmstrstr(), which
505    can be supplied with *any* strncmp()-compatible compare function.
506
507  Revision 611.3  2003/11/08 06:46:08  ajc
508  * IMAP FETCH BODY<xxx.yyy> was outputting the offset and length in the
509    wrong order.  Fixed.
510
511  Revision 611.2  2003/11/08 06:29:47  ajc
512  * IMAP FETCH FLAGS ... removed extra trailing space after last flag
513
514  Revision 611.1  2003/11/06 04:25:30  ajc
515  * For certain IMAP outputs (such as BODYSTRUCTURE), buffer all output until
516    we've got the whole thing, then spew it all at once to avoid lots of
517    tiny TCP packets.
518  * New API calls buffer_output() (to start buffering) and unbuffer_output()
519    (to dump the buffer and stop buffering) are available to do this.
520
521  Revision 611.0  2003/10/21 04:20:41  ajc
522  * THIS IS 6.11
523
524  Revision 610.22  2003/10/17 02:18:40  ajc
525  * Replaced the DEFAULT_ENTRY definition in sysconfig.h with a new option
526    "reply_with_external_editor" in citadel.rc.
527
528  Revision 610.21  2003/10/14 03:09:47  ajc
529  * routines2.c: fixed an off-by-one error in filename sanitization for
530    client file uploads
531
532  Revision 610.20  2003/10/10 05:43:57  ajc
533  * citadel.c:  Reworded one of the prompts
534
535  Revision 610.19  2003/10/07 15:56:17  ajc
536  * Better handling of incoming Internet addresses consisting of an address
537    in angle brackets with no name outside the brackets.
538
539  Revision 610.18  2003/09/21 04:10:56  ajc
540  * messages.c: don't crash when a message contains more than MAXURLS of
541    embedded URL's.  Omit them instead.
542  * citadel.rc: updated the sample browser remoting command for Macintosh
543    based on a Mr.T suggestion
544  * techdoc/session.txt: redid the writeup for the MOVE command (fixed a
545    mistake and made the writeup clearer)
546
547  Revision 610.17  2003/09/17 21:40:13  ajc
548  * html.c: don't truncate messages when wacky characters are
549    encountered.  Substitute '?' characters instead.  Now the Citadel
550    community can complain about b0rken MS ASCII.
551
552  Revision 610.16  2003/09/13 02:53:04  ajc
553  * More intelligent selection of directory to save attachments
554
555  Revision 610.15  2003/09/12 15:48:55  ajc
556  * serv_smtp.c: remember whether we're SMTP or LMTP across a RSET command.
557
558  Revision 610.14  2003/09/09 02:42:28  ajc
559  * Documentation update for LMTP
560
561  Revision 610.13  2003/09/09 01:47:02  ajc
562  * Suppress domain forgery check when using LMTP
563
564  Revision 610.12  2003/09/08 18:48:14  ajc
565  * The unix domain socket used for citmail to talk to citserver now
566    implements LMTP (RFC2033).  Other LMTP client implementations (such as
567    Postfix) can also use the socket, eliminating the need for citmail.
568
569  Revision 610.11  2003/09/07 03:29:25  ajc
570  * serv_network.c: aggressively poll any node for which we have data
571
572  Revision 610.10  2003/09/06 02:04:54  ajc
573  * Don't reset "last poll" time when not doing the "full" net processing
574
575  Revision 610.9  2003/09/03 03:29:01  ajc
576  * syslog messages now say session started/ended instead of ended/ended
577
578  Revision 610.8  2003/09/03 03:24:40  ajc
579  * client: remove rooms from the march list when zapping them (or the floors
580    they're on)
581
582  Revision 610.7  2003/09/02 15:05:34  ajc
583  * Repaired an incorrect adjustment of floor reference counts when a room was
584    moved to a different floor.  (Thanks to Winzlo for reporting this.)
585
586  Revision 610.6  2003/09/02 14:49:05  ajc
587  * Improve client chat mode reliability and performance by assuming that all
588    server output will be in complete lines.  (This is a safe assumption.)
589
590  Revision 610.5  2003/09/02 04:04:39  ajc
591  * Don't try to directly spool to non-neighbor nodes
592
593  Revision 610.4  2003/08/29 08:21:57  ajc
594  * Do network runs more proactively.  The inbound queue is now scanned
595    every minute instead of every poll frequency.
596
597  Revision 610.3  2003/08/21 23:26:06  ajc
598  * setup.c: offer to disable "exim" if found
599
600  Revision 610.2  2003/08/20 03:51:08  ajc
601  * Bumped the internal version number to 6.11
602
603  Revision 610.1  2003/08/20 03:36:13  ajc
604  * Create a "Contacts" room for personal address book use
605
606  Revision 610.0  2003/08/17 03:00:37  ajc
607  * THIS IS 6.10
608
609  Revision 609.2  2003/08/17 02:58:46  ajc
610  * Changed internal version number to 6.10
611
612  Revision 609.1  2003/08/17 02:46:37  ajc
613  * Don't fail on "data files too old to be upgraded" for NEW installations
614
615  Revision 609.0  2003/08/14 03:40:55  ajc
616  * THIS IS 6.09
617
618  Revision 608.21  2003/08/13 18:08:24  ajc
619  * Removed the last vestiges of the now-obsolete global networking password
620
621  Revision 608.20  2003/08/13 14:36:04  ajc
622  * "make install" now installs the contents of docs/ as well as README.txt
623
624  Revision 608.19  2003/08/13 14:30:47  ajc
625  * Temporarily disabled IMAP TLS support due to the discovery of some
626    compatibility problems.  It will be re-enabled when they are fixed.
627
628  Revision 608.18  2003/08/12 00:39:35  ajc
629  * setup now knows about lots of other mail programs it can disable (various
630    flavors of Cyrus and Courier, for example)
631  * setup now ensures that it really did startup/shutdown the Citadel service,
632    and displays an error message when that fails.
633  * "make install" now instructs the user run "setup"
634  * Removed an old GDBM reference from the documentation
635
636  Revision 608.17  2003/08/05 03:06:58  ajc
637  * Added a README.txt file because some Joker kept bugging me about it
638  * Reloaded the code that extracts embedded URL's to a place where it'll
639    get picked up on *every* message, not just the old variformat stuff
640
641  Revision 608.16  2003/08/03 17:51:52  ajc
642  * Clear out all masqueraded wholist fields when logging out, in case another
643    user logs in without reconnecting.
644
645  Revision 608.15  2003/07/30 20:36:18  ajc
646  * Allow users to authenticate with either their display name or any valid
647    e-mail address which belongs to them.  Applies to all protocols.
648
649  Revision 608.14  2003/07/30 03:54:34  ajc
650  * Fixed a small client bug in the purge hour setting
651
652  Revision 608.13  2003/07/30 03:47:53  ajc
653  * Eliminated the EXPI command
654  * Completed the configuration item of "purge hour"
655  * Auto-purger now runs as a scheduled job
656
657  Revision 608.12  2003/07/30 00:26:50  ajc
658  * Removed the "weekly" script and began installing a facility to allow
659    database maintenance to happen automatically.  (One Step Install can't
660    require the sysadmin to know cron)
661
662  Revision 608.11  2003/07/28 04:17:24  ajc
663  * migratenet.c: removed.  Adjusted Makefile.in accordingly.
664
665  Revision 608.10  2003/07/27 21:15:23  ajc
666  * Implemented all IMAP date-based search criteria.  Note that Citadel does
667    not record an "internal date" of a message, so the "sent date" and "internal
668    date" searches perform identically.
669  * Date search comparisons available: "before," "on," or "on or after."  Yet
670    another example of why Mark Crispin needs to be taken outside and shot.
671
672  Revision 608.9  2003/07/26 04:49:40  ajc
673  * Implemented a bunch of the IMAP SEARCH keywords
674
675  Revision 608.8  2003/07/26 04:28:44  ajc
676  * tools.c: added bmstrcasestr(), a Boyer-Moore, case-insensitive string search
677  * imap_search.c: implement BODY criterion in search command
678
679  Revision 608.7  2003/07/24 04:57:53  ajc
680  * Began implementation of the IMAP SEARCH command.  Basically just got the
681    parser working and stubbed all the search criteria.  Next step is to
682    implement the functionality of each criterion keyword.
683  * Implemented the functionality for the ALL (wow!) and UID criteria.
684  * Mark Crispin is an idiot.
685
686  Revision 608.6  2003/07/23 03:57:05  ajc
687  * Optimized the updating of visit records in several places by checking to
688    see if they've changed and aborting the db update if they haven't.
689  * Functions which read/write user records are now slightly faster due to
690    an improvement of the algorithm used to generate the database keys.
691
692  Revision 608.5  2003/07/22 03:07:50  nbryant
693  fix build for Solaris
694
695  Revision 608.4  2003/07/20 20:46:06  ajc
696  * build system: link Berkeley DB only to the server, not to the client & utils
697
698  Revision 608.3  2003/07/20 03:51:46  ajc
699  * setup.c: offer to disable sendmail, postfix, and qmail if found (only if
700    using the /etc/init.d type of startup scripts)
701
702  Revision 608.2  2003/07/20 03:08:22  ajc
703  * setup.c: offer to hack /etc/xinetd.d/telnet
704
705  Revision 608.1  2003/07/15 14:54:09  ajc
706  * Killed off CtdlGetDynamicSymbol() and just put all the symbols in server.h
707
708  Revision 608.0  2003/07/15 04:12:52  ajc
709  * THIS IS 6.08
710
711  Revision 607.23  2003/07/14 17:26:42  ajc
712  * strcpy() --> safestrncpy() in a few other random places
713
714  Revision 607.22  2003/07/14 17:12:28  ajc
715  * Replaced strcpy() with safestrcpy() in cmd_setp()
716
717  Revision 607.21  2003/07/14 03:07:05  ajc
718  * ipgm_secret is no longer set during setup.  Now it is set at server startup
719    and automatically changes whenever an IPGM command is executed.
720  * Upon an IPGM authentication failure, wait 5 seconds before displaying an
721    error, then disconnect the session.
722
723  Revision 607.20  2003/07/13 04:58:35  ajc
724  * Allow connect on unix domain sockets to Citadels in other directories
725  * sendcommand now uses unix domain sockets instead of the network
726  * Do not allow IPGM command to run on the network -- unix domain sockets only
727
728  Revision 607.19  2003/07/11 22:33:02  ajc
729  * Ignore comments in public_clients file
730
731  Revision 607.18  2003/07/11 22:30:19  ajc
732  * Automatically add 127.0.0.1 and config.c_fqdn to public_clients
733
734  Revision 607.17  2003/07/11 22:19:49  ajc
735  * is_public_client() now caches the IP addresses of all hosts in
736    the public_clients file, at server startup and whenever the file is
737    modified.  This eliminates the need to make lots of calls to the
738    resolver library every time.
739
740  Revision 607.16  2003/07/10 05:51:46  ajc
741  * Added cs_addr field to struct CitContext -- holds a dotted quad string
742    of the user's source IP (if applicable).  It's big enough to hold other
743    types of address strings in the future (such as IPv6).
744  * locate_host() populates cs_addr when on a network connection.
745  * serv_smtp.c now saves the IP address in the proper place in
746    the Received: header.
747  * is_public_client() no longer accepts a hostname.  It just looks at
748    CC->cs_host instead.
749
750  Revision 607.15  2003/06/29 19:54:39  ajc
751  * Renamed "struct user" to "struct ctdluser"
752  * Renamed "struct room" to "struct ctdlroom"
753
754  Revision 607.14  2003/06/29 04:13:32  ajc
755  * Renamed:
756    S_QUICKROOM to S_ROOMS
757    S_USERSUPP to S_USERS
758    CDB_QUICKROOM to CDB_ROOMS
759    CDB_USERSUPP to CDB_USERS
760
761  Revision 607.13  2003/06/29 04:07:11  ajc
762  * Globally renamed "struct quickroom" and "struct usersupp" to
763    "struct room" and "struct user".
764
765  Revision 607.12  2003/06/29 04:06:41  ajc
766  *** empty log message ***
767
768  Revision 607.11  2003/06/29 03:58:41  ajc
769  * Renamed fields in 'struct config' which are no longer relevant (but kept
770    them in place to avoid corrupting everyone's data files).  Removed them
771    entirely from serv_vandelay.c.
772
773  Revision 607.10  2003/06/28 05:12:56  ajc
774  * Bump internal version number to 6.08
775  * Use (-1) instead of BBSUID as the uid of user records which exist only
776    in Citadel and not in the system password database.  serv_upgrade also
777    changes this setting for ALL such users, the first time the server is run
778    after upgrading to 6.08
779
780  Revision 607.9  2003/06/27 22:19:31  error
781  * routines2.c: Quick and dirty fix for Mail> becoming new after entering a
782    mail message
783
784  Revision 607.8  2003/06/26 01:50:14  ajc
785  * Compiler warning fix for building setup without newt
786
787  Revision 607.7  2003/06/25 15:40:57  ajc
788  * setup now uses "newt" instead of "curses" to draw its pretty screens.
789    Changes were made to setup.c as well as all the autoconf stuff.
790
791  Revision 607.6  2003/06/25 02:40:05  ajc
792  * Per-user and global flags calling for validation need to be set in the
793    vCard upload thingie, not in the wrapper function that emulates the
794    deprecated REGI server command.  Moved it to the correct place.
795
796  Revision 607.5  2003/06/22 20:49:31  error
797  * citadel.c: display idle times in wholist up to 999 days
798
799  Revision 607.4  2003/06/19 04:12:30  ajc
800  * domain.c: use qsort() to sort MX records by preference.  Why have a
801    custom function when the operating system provides one for free?
802  * serv_smtp.c: accept mail from "<>" (empty sender).  RFC1123 5.2.9 demands it.
803
804  Revision 607.3  2003/06/19 03:55:22  ajc
805  * Fixed a subtle but ugly bug in the SMTP sender that was causing it to
806    ignore all successful connections except the last one.  Now when it gets
807    a connection it uses it.
808
809  Revision 607.2  2003/06/17 22:05:11  ajc
810  * New format for wholist.
811
812  Revision 607.1  2003/06/16 04:39:45  ajc
813  * support.c: removed an unused variable
814  * citadel.c: sort wholist by idle time (most recently active users first)
815
816  Revision 607.0  2003/06/10 04:15:39  ajc
817  * THIS IS 6.07
818
819  Revision 606.10  2003/06/04 21:46:13  error
820  * citadel.c: Added a missing #ifdef __CYGWIN__
821
822  Revision 606.9  2003/06/04 21:39:27  error
823  * Numerous fixups needed for Windows port:
824    * cmd_mesg() rewritten to use the stat() syscall to find files
825    * really_do_keepalive() does not try to send if we are not connected
826    * Misc. fixups; added Windows readme file
827
828  Revision 606.8  2003/06/04 21:30:39  error
829  * messages.c: When file attachment has no name, use message subject as name
830
831  Revision 606.7  2003/06/02 23:11:00  error
832  * Checkin installer script citadel.nsi for NSIS Windows installer
833
834  Revision 606.6  2003/06/02 03:01:22  ajc
835  * citserver.c: added another trace message to is_public_client().  Uncensored
836    has crashed twice in this function, for no apparent reason.
837  * internet_addressing.c: don't attempt to look up the specified Internet
838    address in a Citadel directory, if the supplied address has no hostname
839    portion.  (Fixes a crash in the calendar service when alias() attempts to
840    look up potentially nonexistent attendees during event validation)
841
842  Revision 606.5  2003/05/28 03:08:38  ajc
843  * msgbase.c: validate_recipients() now rejects Internet addresses in
844    domains belonging to the local system or an attached Citadel network,
845    when it fails to translate to a Citadel address.
846
847  Revision 606.4  2003/05/26 05:36:25  ajc
848  * citadel.h: changed internal version number to 6.07
849  * file_ops.c: #include <ctype.h>
850  * migratenet.c: #include <ctype.h>
851
852  Revision 606.3  2003/05/26 05:30:18  ajc
853  * serv_calendar.c: fixed a bug in the "ICAL freebusy" subcommand which
854    caused it to always fetch the logged in user's freebusy times instead
855    of the user specified.
856
857  Revision 606.2  2003/05/22 13:34:30  ajc
858  * database_sleepycat.c: added a couple of diagnostic messages to help
859    troubleshoot problems with db-4.1.25 on Red Hat Linux 9
860  * room_ops.c: call mkdir() instead of system() to create a directory
861
862  Revision 606.1  2003/05/20 01:28:50  error
863  * citadel.c: don't truncate roomname when user is idle, in long who list;
864    display idle time in short who list
865
866  Revision 606.0  2003/05/16 15:17:11  ajc
867  * THIS IS 6.06
868
869  Revision 605.50  2003/05/16 14:59:08  ajc
870  * Removed the old rec_log() facility because the utilities which read its
871    data are crufty, disused, and produce incorrect output.
872  * Updated the documentation for the forthcoming 6.06 release.
873  * public_clients: removed hostnames which crept in from development servers
874
875  Revision 605.49  2003/05/16 04:07:37  nbryant
876  make configure.ac automagically do the right thing on redhat 9
877  remove crappy tolower() hack that was breaking the build on redhat 9
878  (because the kerberized openssl includes ctype.h)
879
880  before anyone yells at me, i did a little cvs archaeology on the tolower
881  thing, and it appears to have been in the Citadel source base since,
882  roughly, the Epoch. I doubt that the hack is needed any longer, and using
883  the OS's tolower() will handle extended charsets.
884
885  Anyone who is stupid enough to be using an OS with such a horribly broken
886  tolower() can just scratch their head and figure things out for
887  themselves. Citadel needs higher barriers to entry, there are too many
888  weirdos on the IGnet lately. :-)
889
890  Revision 605.48  2003/05/13 03:22:04  ajc
891  * Implemented the IMAP STARTTLS command as specified in RFC 2595.
892
893  Revision 605.47  2003/05/06 03:38:59  ajc
894  * IMAP folder create and rename commands -- don't allow backslashes in
895    folder names.
896
897  Revision 605.46  2003/05/03 16:50:52  ajc
898  * Change folder delimiter in room names from / to \
899
900  Revision 605.45  2003/05/02 04:02:47  ajc
901  * setup.c: allow specification of the Citadel system account by either
902             username or uid
903  * setup.c: tell init to re-read /etc/inittab by sending a SIGHUP to pid 1
904             instead of hunting around for the correct init or telinit command
905  * docs/citadel.html: documented the above change, and also rewrote some
906                       other stuff to be less BBS-specific
907
908  Revision 605.44  2003/04/30 16:16:13  ajc
909  * Minor fix to ESMTP greeting (missing '-' screwed up pipelining)
910
911  Revision 605.43  2003/04/30 15:46:27  ajc
912  * Added the ENHANCEDSTATUSCODES extention to ESMTP.
913
914  Revision 605.42  2003/04/29 04:41:22  ajc
915  * Fix an off-by-one error in the mime parser
916
917  Revision 605.41  2003/04/29 04:13:58  ajc
918  * mime parser: look for the "name=" subfield tacked onto either
919    Content-type or Content-disposition, wherever it finds it.
920
921  Revision 605.40  2003/04/28 16:56:51  ajc
922  * Added a site-configurable setting to suppress the automatic correction of
923    forged From: lines from authenticated SMTP users, for those who prefer
924    strict RFC compliance instead of common sense.
925
926  Revision 605.39  2003/04/26 21:55:15  ajc
927  * Anytime a socket connect() fails, CLOSE THE SOCKET before erroring out.
928    Not doing so causes a file descriptor leak.
929
930  Revision 605.38  2003/04/26 04:22:51  ajc
931  * Removal of individual "remote" lines from message delivery instruction sets
932    was corrupting the end of the set, rendering the "bounceto" line unusable
933    and preventing bounces from being delivered.  Fixed this by explicitly
934    adding a trailing newline when remove_token() strips it.
935
936  Revision 605.37  2003/04/25 18:28:47  ajc
937  * When rejecting spam, use SMTP error code 550, not 552
938
939  Revision 605.36  2003/04/23 03:18:44  ajc
940  * Allow IMAP STORE of more than one flag at a time (Mail.app from MacOS
941    does this).
942
943  Revision 605.35  2003/04/15 02:44:02  ajc
944  * Do not allow incoming network polls while an outbound network processing
945    session is in progress.
946  * tools.c: removed collapsed_strcmp() as it is no longer used anywhere
947
948  Revision 605.34  2003/04/08 04:03:37  ajc
949  * Implemented the ".SILENT" protocol option in IMAP STORE.  Certain apps seem
950    to want to use it.
951  * Optimized the IMAP operations which scan for expunged and added messages.
952    These loops no longer make multiple traversals through the message list.
953
954  Revision 605.33  2003/04/07 05:02:23  ajc
955  * Reworked all the "list rooms" operations so that they only require one
956    pass through the database.
957  * Repaired the "create floor" operation which was broken by the switch
958    to the new IPC libray
959
960  Revision 605.32  2003/04/02 13:33:28  ajc
961  * Fixed output of "-0500" vs. "+0500" type of timezone stamps in RFC822.
962    (I think they were reversed.)
963
964  Revision 605.31  2003/04/01 05:01:08  ajc
965  * sysdep.c: optimized MyContext() a bit, and inlined it.  A little profiling
966    revealed that this function was getting used super heavily.
967  * tools.c: removed the older, slower string tokenizer functions that
968    weren't getting used anymore.
969
970  Revision 605.30  2003/03/31 04:55:58  ajc
971  * Repaired the formatting of text/plain messages with blank lines.
972
973  Revision 605.29  2003/03/30 06:16:52  ajc
974  * Optimized CtdlReadMessageBody() and also gave it an option to store
975    messages with CRLF newlines instead of LF.  This option is used when
976    reading SMTP in order to keep Pine from barfing on LF-terminated newlines
977    while decoding quoted-printable.  Once again, Mark Crispin is an idiot.
978
979  Revision 605.28  2003/03/26 05:17:12  ajc
980  * Downloading of attachments was completely broken by the change to the new
981    protocol library.  Located and fixed bugs.
982  * html.c: increased the conversion buffer size
983
984  Revision 605.27  2003/03/24 03:42:14  ajc
985  * Add the ability to quit out while validating users.  Also added a help
986    option listing available access levels.  This closes Bugzilla #37.
987
988  Revision 605.26  2003/03/22 05:38:23  ajc
989  * During startup, display the version string from the Berkeley DB library.
990  * When deleting a mailbox, don't reveal the namespace prefix to the user.
991
992  Revision 605.25  2003/03/20 08:37:04  error
993  * connection_died(): Don't crash before printing message, crash afterward.
994    (Bugzilla id 111)
995
996  Revision 605.24  2003/03/19 11:48:06  error
997  * entmsg(): Don't corrupt the msg_arr[] when replying to a message in a room
998
999  Revision 605.23  2003/03/19 04:04:56  ajc
1000  * Dropped support for GDBM and for versions of Berkeley DB prior to 4.1
1001
1002  Revision 605.22  2003/03/18 05:15:05  ajc
1003  * Applied a patch sent in by Clint Adams <schizo@debian.org> to handle
1004    building on Debian's unstable with Berkeley DB 4.1, compiled with
1005    the --with-db-uniquename when errno is a macro (as in glibc 2.3.1).
1006
1007  Revision 605.21  2003/03/17 11:56:35  error
1008  * Fix <G>oto in alternate_semantics - it actually marks messages read now.
1009
1010  Revision 605.20  2003/03/17 04:03:14  ajc
1011  * Supply a NULL argument as the second argument to accept() instead of an
1012    empty buffer whose contents we never even look at.
1013
1014  Revision 605.19  2003/03/16 05:07:12  ajc
1015  * Fixed the bug that caused freebusy publishes to crash.
1016
1017  Revision 605.18  2003/03/15 23:05:08  ajc
1018  * Rewrite of calendar-to-freebusy conversion functions.  This one creates
1019    freebusy in the correct format, instead of what I mistakenly assumed it
1020    was supposed to look like.  :(
1021
1022  Revision 605.17  2003/03/15 22:31:06  ajc
1023  * When scanning a user's Calendar> room for calendar events, search for
1024    MIME parts of type text/calendar instead of assuming that the event will
1025    always appear as part "1"
1026
1027  Revision 605.16  2003/03/14 05:08:25  ajc
1028  * Clone calendar subcomponents before encapsulating in case they already
1029    happen to have a parent.
1030
1031  Revision 605.15  2003/03/13 05:48:33  ajc
1032  * Move towards storing calendar objects as fully encapsulated VCALENDAR
1033    components instead of just VEVENT subcomponents.
1034
1035  Revision 605.14  2003/03/12 03:33:54  ajc
1036  * More changes to the handling of RFC822 headers with regard to
1037    splitting up the headers and body.  (Blank lines and such.)
1038
1039  Revision 605.13  2003/03/11 06:23:50  ajc
1040  * More accurate handling of IMAP FETCH xx BODYSTRUCTURE command.  This should
1041    make Pine happier with multipart messages.
1042
1043  Revision 605.12  2003/03/10 05:38:21  ajc
1044  * Tweaks to msgbase.c and imap_fetch.c to fix slightly incorrect byte counts
1045    reported in the numerous variations of IMAP FETCH.  This silences a number of
1046    error messages reported by Pine.
1047
1048  Revision 605.11  2003/03/10 03:40:08  ajc
1049  * Fixed bug that caused segv when <R>eplying to certain messages
1050
1051  Revision 605.10  2003/03/07 17:39:45  ajc
1052  * Remove the "modules" directory
1053
1054  Revision 605.9  2003/03/06 04:58:11  ajc
1055  * When entering a message into Citadel with authenticated SMTP, stamp the
1056    room name as MAILROOM (Mail>) so it doesn't end up with an ugly moniker
1057    like "0000058008.Sent Items"
1058
1059  Revision 605.8  2003/03/05 04:55:32  ajc
1060  * serv_smtp.c: when authenticated, do not log out when a RSET command is
1061    issued.  This breaks clients which carelessly issue RSET before each
1062    message, such as Pine.
1063  * serv_smtp.c: when authenticated, ignore envelope FROM:<xxx> sender name
1064    and replace with address of user who authenticated.  Also fixes Pine.
1065  * serv_smtp.c: when authenticated, not only do we continue our glorious
1066    RFC-violating condition of replacing the From: header with the user who
1067    is logged in, but we also stamp it with their preferred Internet address
1068    for outbound mail (which is kept in CC->cs_inet_email).
1069
1070  Revision 605.7  2003/03/03 04:09:21  ajc
1071  * When creating a user, hide the "My Citadel Config>" room of the user being
1072    created, not the user currently logged in.
1073
1074  Revision 605.6  2003/03/01 18:18:03  ajc
1075  * commands.c: alternate_semantics might have been getting set where it
1076    should not.  Fixed.
1077
1078  Revision 605.5  2003/03/01 17:25:33  ajc
1079  * citadel.rc default for alternate_semantics = no
1080
1081  Revision 605.4  2003/02/23 05:34:45  ajc
1082  * When the <N>ew command is used to read new messages, the next "lazy"
1083    command (space bar) now always does <G>oto, regardless of the last one.
1084
1085  Revision 605.3  2003/02/21 04:24:51  ajc
1086  * Completed the "ICAL freebusy" subcommand, which fetches free/busy times
1087    for any requested user (output in stripped-down VCALENDAR format)
1088
1089  Revision 605.2  2003/02/20 04:51:17  ajc
1090  * Began framing up a command to view other users' free/busy times
1091
1092  Revision 605.1  2003/02/19 22:38:43  ajc
1093  * Changed socklen_t to int (to allow compile on Macintosh)
1094
1095  Revision 605.0  2003/02/19 03:46:01  ajc
1096  * THIS IS 6.05
1097
1098  Revision 601.134  2003/02/17 05:23:20  ajc
1099  * Fixed a small bug in the GDBM backend (deprecated, but the bug was very
1100    obvious and a kind user pointed it out)
1101  * Removed vestiges of setjmp/longjmp from the client
1102  * When doing .TS, don't get caught in a constant-logout loop
1103
1104  Revision 601.133  2003/02/14 16:12:04  ajc
1105  * Added support for any standard RBL
1106
1107  Revision 601.132  2003/02/13 22:33:41  ajc
1108  * Fixed algorithm for reporting "last login"
1109
1110  Revision 601.131  2003/02/13 21:52:13  ajc
1111  * IMAP service: fixed bug that was causing the wrong messages (usually *all*
1112    messages) to be flagged when a STORE or COPY operation was performed.
1113
1114  Revision 601.130  2003/02/13 20:13:51  ajc
1115  * Applied "multi editor" patch supplied by georbit
1116
1117  Revision 601.129  2003/02/12 04:51:44  ajc
1118  * More docs update
1119
1120  Revision 601.128  2003/02/10 04:50:33  ajc
1121  * More documentation updates
1122
1123  Revision 601.127  2003/02/09 03:38:28  ajc
1124  * Updated the documentation some more
1125
1126  Revision 601.126  2003/01/25 07:37:15  error
1127  * whobbs.c: Print error message if we can't connect to server
1128
1129  Revision 601.125  2003/01/23 05:50:59  ajc
1130  * citadel.c: hitting enter without entering a room name in the <.G>oto and
1131    <.S>kip commands now does nothing instead of exhibiting undefined behavior
1132
1133  Revision 601.124  2003/01/23 04:42:33  ajc
1134  * Began reviewing, updating, and HTML-izing the documentation
1135
1136  Revision 601.123  2003/01/22 03:53:24  ajc
1137  * More reliablility hacks for autologin mode, and better quarantine of
1138    autologin code when it's disabled.
1139
1140  Revision 601.122  2003/01/21 04:42:12  ajc
1141  * Moved login-to-screenname code ... no longer part of CtdlTryExistingUser(),
1142    it's now part of getuser() so it always gets called, even when looking up
1143    addresses for mail and stuff.
1144
1145  Revision 601.121  2003/01/19 08:59:02  error
1146  * Remove irrelevant file hpsux.h (was part of dynloader)
1147
1148  Revision 601.120  2003/01/19 05:55:59  ajc
1149  * serv_calendar.c: allocate dynamic symbol at module startup, not during
1150    each session startup.  This error was causing crashes (of course).
1151
1152  Revision 601.119  2003/01/18 06:18:20  ajc
1153  * whobbs.c: line up the columns better
1154  * routines2.c: when doing <.ASI> command, entering a blank hostname causes
1155    it to abort instead of adding a new host.  Also strip l/t whitespace.
1156
1157  Revision 601.118  2003/01/17 22:36:56  ajc
1158  * This commit is a figment of your imagination.
1159
1160  Revision 601.117  2003/01/17 21:50:27  ajc
1161  * Began making some build changes for Cygwin compatibility
1162
1163  Revision 601.116  2003/01/17 10:06:54  error
1164  * fmout():  Ignore \r (carriage return) characters in messages
1165
1166  Revision 601.115  2003/01/17 04:36:04  ajc
1167  * whobbs.c: fix bad call to CtdlGetServInfo() so we can get our session ID
1168    and the name of the BBS
1169
1170  Revision 601.114  2003/01/16 21:16:23  error
1171  * CtdlIPCGetMessages(): Fix message read failing on first attempt to read
1172    messages
1173
1174  Revision 601.113  2003/01/16 10:04:03  error
1175  * ENT0 command: changed post-as username from arg 4 to arg 5; 4 was already
1176    used as the message subject
1177  * Convert message entry and reading to new IPC code
1178  * Minor bugfixes throughout IPC code
1179
1180  Revision 601.112  2003/01/16 04:17:02  ajc
1181  * citadel_ipc.c: when issuing a SPEX command, send the string value for
1182    room/floor/site instead of the number.  citserver wants a string.
1183  * ipc_c_tcp.c: don't call SSL_shutdown() from connection_died().  This just
1184    causes it to segfault because there's no valid socket.
1185
1186  Revision 601.111  2003/01/16 03:41:45  ajc
1187  * Renamed "dynloader" to "serv_extensions" globally.  We don't want people
1188    to think we have a dynamic loader, do we?  :)
1189  * serv_*_init() is now declared in serv_extensions.h.  This is definitely the
1190    wrong place for it.  It's there temporarily until we decide on a new
1191    convention for server extensions.
1192  * bootstrap: more reliable detection of Red Hat Linux 7.3 -- more specifically,
1193    fewer fireworks when the host system is *not* Red Hat Linux.
1194
1195  Revision 601.110  2003/01/15 16:34:53  ajc
1196  * bootstrap: don't check /etc/redhat-release if it doesn't exist (which is
1197    the case on all non Red Hat Linux systems)
1198
1199  Revision 601.109  2003/01/15 05:57:09  ajc
1200  * First cut at static-linking the citserver.  Ripped out libtool and
1201    replaced the dynloader paradigm with "server extensions" paradigm (static
1202    linked, but still very loosely coupled by way of using the API's to
1203    register callbacks and commands etc.)   Needs more testing.
1204
1205  Revision 601.108  2003/01/14 04:12:26  ajc
1206  * Set default view for new user Calendar> rooms to 3 (calendar)
1207  * Set default view for new user Tasks> rooms to 4 (tasks)
1208
1209  Revision 601.107  2003/01/13 17:04:19  ajc
1210  * Add a sample URL view command for Macintosh in the included citadel.rc
1211
1212  Revision 601.106  2003/01/13 02:55:07  ajc
1213  * Do calendar support only if libical header *and* library are present
1214
1215  Revision 601.105  2003/01/12 23:07:40  ajc
1216  * configure.ac: Attempt to check for libical 0.24 or newer
1217
1218  Revision 601.104  2003/01/12 05:01:58  ajc
1219  * Start marking things for 6.05 release
1220
1221  Revision 601.103  2003/01/12 04:48:23  ajc
1222  * Display message subjects in magenta instead of white
1223
1224  Revision 601.102  2003/01/06 09:17:10  error
1225  * Remove non (yet) existent sstring.c dependency from Makefile.in
1226
1227  Revision 601.101  2003/01/05 07:35:03  error
1228  * Add an AllFloors parameter to the citadel IPC API
1229
1230  Revision 601.100  2003/01/01 08:07:46  error
1231  * commands.c: bugfix for reading from FILE pointers; affected quote, print
1232    and external editor.
1233
1234  Revision 601.99  2002/12/28 05:33:29  ajc
1235  * ical_dezonify: set is_utc=1 even if we didn't convert from some arbitrary
1236    timezone.  Presumably this means the time was already UTC, and we really
1237    need that "Z" to get slapped on it.
1238
1239  Revision 601.98  2002/12/28 05:12:06  ajc
1240  * Yet another attempt at making ical_dezonify() send outgoing calendar items
1241    in UTC format.  (This one will probably work -- the timestamps have the
1242    "Z" after them which signifies UTC instead of local time.)
1243
1244  Revision 601.97  2002/12/27 04:40:40  ajc
1245  * Another attempt at fixing timezones :(
1246
1247  Revision 601.96  2002/12/25 23:17:07  ajc
1248  * ical_dezonify.c: shuffle around #includes and #ifdef's
1249
1250  Revision 601.95  2002/12/25 21:46:19  ajc
1251  * Another shot at timezone handling (ugggghh)
1252
1253  Revision 601.94  2002/12/25 07:05:26  ajc
1254  * set up ical_dezonify() to be called at appropriate times
1255    (but it doesn't seem to work correctly yet)
1256
1257  Revision 601.93  2002/12/25 06:41:44  ajc
1258  * ical_dezonify.c: added (function to strip localized timestamps out of
1259    a component and replace them with UTC timestamps)
1260
1261  Revision 601.92  2002/12/19 04:51:49  ajc
1262  * database_cleanup.sh: added
1263
1264  Revision 601.91  2002/12/18 04:08:16  ajc
1265  * Don't attempt to send out invitations when there are no attendees.
1266
1267  Revision 601.90  2002/12/15 10:53:51  error
1268  * Final touches on the new message formatter.
1269
1270  Revision 601.89  2002/12/15 09:42:37  error
1271  * Converted more routines to new IPC code.
1272
1273  Revision 601.88  2002/12/14 23:21:29  ajc
1274  * When saving a calendar event, set the message Subject to the event
1275    summary string, and the message Date/time to the event start time.
1276
1277  Revision 601.87  2002/12/10 23:36:20  ajc
1278  * Fixed a bug in the allocation of per-session dynamic data for calendar module
1279
1280  Revision 601.86  2002/12/09 06:07:29  ajc
1281  * Finished the code to accept incoming calendar REPLY messages and
1282    merge/save the updated event in the user's calendar.
1283
1284  Revision 601.85  2002/12/08 06:01:48  ajc
1285  * More work on the reply handler.  Wrote functions to locate the message
1286    containing the invitation being replied to.  Just need to write the
1287    merge and resave functions now.
1288
1289  Revision 601.84  2002/12/08 00:23:08  ajc
1290  * Began adding a calendaring subcommand to accept a reply to a meeting
1291    invitation and update the event in the user's calendar.  (Not finished.)
1292
1293  Revision 601.83  2002/12/04 05:01:18  ajc
1294  * When sending out invitations, encapsulate the VEVENT component inside a
1295    VCALENDAR component, along with proper metadata such as product ID and
1296    vcalendar version.  Move the METHOD:REQUEST property to the encapsulating
1297    component rather than the event itself.  (Still need to add a VTIMEZONE).
1298
1299  Revision 601.82  2002/12/03 04:49:15  ajc
1300  * Send out meeting requests!  (Need to test with various clients.)
1301
1302  Revision 601.81  2002/12/02 08:09:00  error
1303  * Improvements to the new message formatter, including URL support and
1304    doing the Right Thing for text/plain messages.
1305
1306  Revision 601.80  2002/12/01 11:02:57  error
1307  * New experimental message formatter - try it, you'll like it!
1308
1309  Revision 601.79  2002/12/01 04:48:24  ajc
1310  * The code to check for sending invitations needs to happen *after* save
1311
1312  Revision 601.78  2002/12/01 00:59:54  ajc
1313  * Reliably detect when the user saving an event is listed as the meeting
1314    organizer.  (Currently calls a stub function.  Still need to write the
1315    function to generate and send invitations.)
1316
1317  Revision 601.77  2002/11/30 21:35:30  ajc
1318  * just some trace messages
1319
1320  Revision 601.76  2002/11/30 05:39:28  ajc
1321  * Started banging out some code to determine when a saved vEvent needs to
1322    send out meeting invites.
1323
1324  Revision 601.75  2002/11/29 16:24:59  ajc
1325  * When calling ical*_remove_*() routines, the caller then owns the object
1326    which is removed.  Added ical*_free() calls to free the memory.
1327
1328  Revision 601.74  2002/11/29 15:44:41  ajc
1329  * CC->cs_inet_email is now a string buffer, not a pointer
1330  * Initialize CC->cs_inet_email with a default address, so it always
1331    contains something even when the directory doesn't
1332  * Augment CHEK command to return the user's preferred Internet e-mail addr.
1333
1334  Revision 601.73  2002/11/27 21:05:31  nixo
1335  added dot ungoto functionality.
1336  It allows you to enter a room to ungoto, it will look
1337  through the ungoto list and goto there at the room position
1338  you last goto-ed it from.
1339  Don't blame me, this was Gary's idea.
1340
1341  Revision 601.72  2002/11/25 05:10:07  ajc
1342  * Post a notification to Aide> when a user is manually deleted
1343    (resolves Bugzilla enhancement request #73)
1344
1345  Revision 601.71  2002/11/25 04:57:43  ajc
1346  * Allow set/clear of per-user Internet mail privilege
1347  * Honor that flag
1348
1349  Revision 601.70  2002/11/23 13:35:47  error
1350  * Makefile.in: Alphabetized all the source files
1351
1352  Revision 601.69  2002/11/21 05:38:13  ajc
1353  * Added support for a "New User Greetings" room.  See docs/install.txt
1354
1355  Revision 601.68  2002/11/15 11:24:40  error
1356  * serv_rwho.c: cmd_rwho(): move logged_in from param 8 to param 11
1357    (see RWHO in techdoc/session.txt)
1358
1359  Revision 601.67  2002/11/13 17:20:57  ajc
1360  * When in curses mode, call beep() instead of putc(7, stdout) to make it beep.
1361
1362  Revision 601.66  2002/11/12 04:30:16  ajc
1363  * Completed the invitation accept/decline code.  It now sends back a
1364    correctly formated reply!  (Tested with Evolution)
1365
1366  Revision 601.65  2002/11/11 06:21:55  error
1367  * Fixed minor bugs with color handling; added explicit support for handling
1368    the background color e.g. for transparent terminals
1369
1370  Revision 601.64  2002/11/11 04:17:24  ajc
1371  * More work on reply to meeting invitation
1372
1373  Revision 601.63  2002/11/10 09:21:57  error
1374  * messages.c: fixed <H>eader command
1375
1376  Revision 601.62  2002/11/10 09:19:38  error
1377  * Convert some more routines to new IPC code
1378
1379  Revision 601.61  2002/11/10 09:14:16  error
1380  * citadel.spec: updated for post-6.01
1381
1382  Revision 601.60  2002/11/10 09:12:06  error
1383  * citadel.c: When terminating, don't mark messages new when using new
1384    message semantics
1385
1386  Revision 601.59  2002/11/08 05:28:54  ajc
1387  * Reply to VEVENT invitations: generate reply by cloning the request,
1388    stripping out non-me attendees, setting the partstat to accept/decline,
1389    and extracting the address of the organizer.   (Still not finished: right
1390    now it does everything except actually sending the reply.)
1391
1392  Revision 601.58  2002/11/07 04:40:07  ajc
1393  * Repaired the "remember username/password" functionality of the client
1394    (it was broken during the transition to the new client protocol library)
1395
1396  Revision 601.57  2002/11/06 05:03:01  ajc
1397  * No changes; just testing CVS permissions
1398
1399  Revision 601.56  2002/11/04 21:49:53  ajc
1400  * Don't run the wait indicator when in an external editor
1401
1402  Revision 601.55  2002/11/01 04:57:56  ajc
1403  * Fixed .AM and .AE commands
1404
1405  Revision 601.54  2002/10/29 20:14:56  error
1406  * rooms.c: don't allow a blank floor name when creating a floor (in client)
1407
1408  Revision 601.53  2002/10/26 06:15:09  ajc
1409  * cmd_cflr() - don't allow zero length floor names
1410
1411  Revision 601.52  2002/10/26 06:01:19  ajc
1412  * Increase size of temp file name buffer in struct CitContext
1413
1414  Revision 601.51  2002/10/25 09:38:38  error
1415  * Fixed broken .Goto by partial match
1416
1417  Revision 601.50  2002/10/25 09:26:26  error
1418  * Fix the status line not updating with the new wait indicator; rearrange
1419    the code so network_status_cb is a member function of ipc.
1420
1421  Revision 601.49  2002/10/25 04:39:38  ajc
1422  * When in fullscreen mode, display an "X" icon in the lower right corner of
1423    the screen while waiting for the server.
1424
1425  Revision 601.48  2002/10/24 09:04:53  error
1426  * acconfig.h: add DISABLE_CURSES template
1427
1428  Revision 601.47  2002/10/23 04:06:41  ajc
1429  * "conflicts" check now also tells the client whether a conflicting event
1430    is really just an older version of the same object.
1431
1432  Revision 601.46  2002/10/23 03:55:21  ajc
1433  * Finished: when saving an object of type text/calendar to the Calendar> room,
1434    set the Citadel "extended message ID" to the UID of the VEVENT object.  This
1435    causes the message base to automatically delete any existing instance(s) of
1436    that object: automatic replacement.
1437
1438  Revision 601.45  2002/10/23 03:07:43  ajc
1439  * First hack at UID-to-EMSGID mapping (for auto replacement)
1440
1441  Revision 601.44  2002/10/21 20:00:41  ajc
1442  * List UID and SUMMARY properties of conflicting events
1443
1444  Revision 601.43  2002/10/21 17:14:42  ajc
1445  * More work on conflict detects
1446
1447  Revision 601.42  2002/10/20 21:42:54  ajc
1448  * More conflict checking stuff
1449
1450  Revision 601.41  2002/10/20 20:21:27  ajc
1451  * Put in a skeleton "hunt for conflicts" code
1452
1453  Revision 601.40  2002/10/20 08:01:03  error
1454  * docs/install.txt: add Mac OS X build instructions
1455
1456  Revision 601.39  2002/10/19 21:35:34  ajc
1457  * Moved some of the calendar logic over from WebCit
1458
1459  Revision 601.38  2002/10/19 08:30:03  error
1460  * dynloader.c:  Darwin places underscores in front of symbol names, just
1461    like OpenBSD.
1462
1463  Revision 601.37  2002/10/19 08:18:06  error
1464  * Disable any use of curses on Darwin (this is temporary until I beat
1465    Apple's bizarre linker into submission)
1466
1467  Revision 601.36  2002/10/18 10:33:09  error
1468  * More signed/unsigned fixes (for the new progress gauge)
1469
1470  Revision 601.35  2002/10/18 07:56:30  error
1471  * fix self-service account creation at login prompt (accidentally called
1472    CREU instead of NEWU).
1473
1474  Revision 601.34  2002/10/18 03:44:13  ajc
1475  * Fixed a bug in CtdlRenameRoom() that caused the old room record not to be
1476    deleted when there was a mailbox namespace attached.
1477  * Reworked imap_rename() and imap_rename_backend() to not use nested functions
1478
1479  Revision 601.33  2002/10/17 12:56:44  error
1480  * Bug fixes:  Fix numerous char array size mismatches, signed/unsigned
1481    mismatches, and const correctness problems (though not nearly all)
1482
1483  Revision 601.32  2002/10/17 11:13:27  error
1484  * Convert room listings and some aide functions to new IPC code
1485
1486  Revision 601.31  2002/10/16 13:46:19  ajc
1487  * Remove some trace messages
1488
1489  Revision 601.30  2002/10/16 08:59:41  error
1490  * Don't assume pointer to time_t is compatible with pointer to
1491    struct timeval.tv_sec (it isn't on darwin)
1492
1493  Revision 601.29  2002/10/16 02:49:55  ajc
1494  * CtdlWriteObject() encode in memory instead of on disk (not tested)
1495
1496  Revision 601.28  2002/10/15 17:41:20  ajc
1497  * Numerous warning fixes and cleanups for compile on Linux for IBM S/390
1498  * Name temp files with source code location of who created them
1499
1500  Revision 601.27  2002/10/15 06:47:11  error
1501  * IPC support for resumable downloads
1502
1503  Revision 601.26  2002/10/15 06:44:55  error
1504  * configure.ac check for malloc.h header file (Mac OS X needs this)
1505
1506  Revision 601.25  2002/10/15 03:56:33  ajc
1507  * Run without crashing on Berkeley DB 4.1  :)
1508
1509  Revision 601.24  2002/10/15 03:30:52  ajc
1510  * Build ok on Berkeley DB 4.1
1511
1512  Revision 601.23  2002/10/14 08:27:40  error
1513  * Mac OS X build fixes (everything but serv_imap now builds)
1514
1515  Revision 601.22  2002/10/08 09:44:52  error
1516  * Build environment:  cvs ignore .diff/.patch files
1517
1518  Revision 601.21  2002/10/07 18:59:37  ajc
1519  * Build fixes for Solaris box without OpenSSL installed
1520
1521  Revision 601.20  2002/10/07 09:40:49  error
1522  * Don't try to compile non-existent client_crypto.c (oops!)
1523
1524  Revision 601.19  2002/10/06 18:46:30  error
1525  * Move (nearly) all IPC-related code to citadel_ipc.[ch].
1526
1527  Revision 601.18  2002/10/05 04:48:29  ajc
1528  * Change MAXSETUP from 4 to 3 (bug reported by mavherzog, fix suggested by IO)
1529
1530  Revision 601.17  2002/10/04 07:11:56  error
1531  * Fix bootstrap for Red Hat 7.3
1532
1533  Revision 601.16  2002/10/02 04:07:27  error
1534  * status_line() now shows "new mail" only when there is new mail
1535
1536  Revision 601.15  2002/10/01 04:00:13  ajc
1537  * html.c: speed improvement in html-to-ascii converter
1538  * messages.c: MASSIVE speed improvement in message output
1539
1540  Revision 601.14  2002/09/30 08:07:11  error
1541  * ipcdef.h: add extern "C" for linking to C++ programs
1542
1543  Revision 601.13  2002/09/30 07:32:09  error
1544  * ipcdef.h: remove prototype for connection_died(), it doesn't belong there
1545
1546  Revision 601.12  2002/09/30 07:20:35  error
1547  * Fix configure mis-detecting libical and zlib and a missing semicolon in
1548    tools.h
1549
1550  Revision 601.11  2002/09/29 04:55:13  error
1551  * File and attachment downloads now use the new IPC code.
1552  * Implemented high-speed pipelined file download in IPC code.
1553
1554  Revision 601.10  2002/09/29 04:41:43  error
1555  * file_ops.c: cmd_read() now returns a short read at end-of-file instead of
1556    4096, this prevents trailing garbage on the downloaded file; also it now
1557    succeeds if the requested number of bytes is > 4096; it simply returns
1558    only 4096 bytes.
1559
1560  Revision 601.9  2002/09/27 06:53:20  error
1561  * Allow multiple simultaneous IPC connections.  All changes necessary for
1562    the client to use the new code are necessarily included.
1563
1564  Revision 601.8  2002/09/22 02:48:04  ajc
1565  * axdefs.h: add "Notes" view
1566
1567  Revision 601.7  2002/09/17 03:18:15  ajc
1568  * Create the Calendar> and Tasks> rooms at login time, and set their default
1569    views to calendar and tasklist views.  Renamed "My Calendar>" to "Calendar>"
1570    to be in sync with the KDE groupware project.
1571
1572  Revision 601.6  2002/09/15 03:24:28  ajc
1573  * Renamed decode_base64() to CtdlDecodeBase64()
1574  * Renamed decode_quoted_printable() to CtdlDecodeQuotedPrintable()
1575  * These changes are to avoid namespace conflict with libical
1576
1577  Revision 601.5  2002/09/13 15:41:39  ajc
1578  * serv_calendar.c: #include "serv_calendar.h", not "serv_ical.h"
1579
1580  Revision 601.4  2002/09/11 03:17:18  ajc
1581  * [EXPERIMENTAL] Link in the "libical" calendar library if present
1582  * Rename serv_ical to serv_calendar (because the resulting module would be
1583    named "libical" which conflicts with the external library by that name)
1584
1585  Revision 601.3  2002/09/10 08:07:38  error
1586  * 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
1587
1588  Revision 601.2  2002/09/09 03:03:18  ajc
1589  * When a user logs in, create the Mail> room if it doesn't exist.  (Should
1590    never happen, but one site had a situation where this patch came in handy.)
1591
1592  Revision 601.1  2002/09/08 04:15:28  ajc
1593  * Also fixed a bug in <.T>erminate <S>tay which caused the terminal to
1594    become wacky on second and subsequent sessions.
1595
1596  Revision 601.0  2002/09/08 03:51:30  ajc
1597  * Let's call this 6.01, shall we?
1598
1599  Revision 600.2  2002/09/08 03:48:48  ajc
1600  * Fixed a crashy crashy bug in the AGUP protocol function in the client
1601
1602  Revision 600.1  2002/09/07 03:24:23  ajc
1603  * When displaying messages using MSG4, enumerate the attachments on the
1604    client side, because the server won't add their descriptions to the
1605    message text.
1606
1607  Revision 600.0  2002/09/04 03:06:58  ajc
1608  * Committing the current code base as version 6.00
1609
1610  Revision 591.109  2002/09/03 14:09:04  ajc
1611  * setup.c: automatically stop/start services
1612
1613  Revision 591.108  2002/09/03 04:42:15  ajc
1614  * Added MSG4 support to client-side IPC
1615  * Moved HTML-to-text conversion to the client side
1616
1617  Revision 591.107  2002/09/02 20:40:34  ajc
1618  * Automation work for setup
1619
1620  Revision 591.106  2002/08/31 04:36:26  ajc
1621  * IMAP APPEND no longer forces messages to appear as from the logged-in user
1622    when appending to a mailbox room.  (Allows migration to Citadel from some
1623    other type of server without losing all the sender names.)
1624
1625  Revision 591.105  2002/08/31 04:12:39  ajc
1626  * Set version number to 6.00 in documentation and header files.
1627  * Convert RFC822 newlines (CRLF) to Unix/Citadel newlines (LF) when
1628    performing an IMAP APPEND command.
1629
1630  Revision 591.104  2002/08/28 03:18:06  ajc
1631  * Make reply_to and reply_subject global (otherwise they don't work!)
1632
1633  Revision 591.103  2002/08/27 04:01:03  ajc
1634  * Added the ability to run an external command from the client when new mail
1635    arrives.  (Ok, I admit it: I just discovered http://www.dailywav.com and I
1636    just *had* to have Bear in the Big Blue House tell me I've got mail)
1637
1638  Revision 591.102  2002/08/26 02:55:09  ajc
1639  * Small bugfix for memory bounds checking in the MIME parser
1640
1641  Revision 591.101  2002/08/25 21:23:49  ajc
1642  * Hide the SMTP queue and the sysconfig rooms.
1643
1644  Revision 591.100  2002/08/24 05:58:53  ajc
1645  * Bugfixes and cosmetic changes to listsub system
1646
1647  Revision 591.99  2002/08/23 03:36:52  ajc
1648  * Finished all of the subscribe/unsubscribe/confirm stuff!
1649
1650  Revision 591.98  2002/08/23 02:30:02  ajc
1651  * Delete unconfirmed pending subscribe/unsubscribe requests after three days
1652  * Don't allow multiple subscriptions of the same address to a list
1653
1654  Revision 591.97  2002/08/22 03:55:11  ajc
1655  * Fixed bug in above
1656
1657  Revision 591.96  2002/08/22 03:40:00  ajc
1658  * Add "unsubscribe" command (but not yet "confirm unsubscribe")
1659
1660  Revision 591.95  2002/08/21 21:58:00  ajc
1661  * Completed self-service list subscription via web.
1662    (Still need to implement unsubscribe.)
1663
1664  Revision 591.94  2002/08/16 21:04:56  ajc
1665  * Add LPRM command
1666
1667  Revision 591.93  2002/08/14 20:21:52  ajc
1668  * Extend GETR/SETR to allow twiddling of bits in the QRflags2 bucket
1669  * New flag and config options to allow/disallow self-service list subscription
1670    and unsubscription to a room
1671
1672  Revision 591.92  2002/08/14 02:36:05  ajc
1673  * WebCit list subscription integration
1674
1675  Revision 591.91  2002/08/13 18:48:46  ajc
1676  * Generate and send subscription confirmation requests.
1677    (Still need to finalize the URL format)
1678
1679  Revision 591.90  2002/08/13 17:19:11  ajc
1680  * Added email capability to quickie_message()
1681
1682  Revision 591.89  2002/08/13 04:02:06  ajc
1683  * <R>eplace string is now case sensitive
1684
1685  Revision 591.88  2002/08/13 03:46:31  ajc
1686  * More work on the self-service subscribe/unsubscribe infrastructure
1687
1688  Revision 591.87  2002/08/12 03:00:20  ajc
1689  * Fixed bug in <R>eplacestring which caused it to lock up in certain conditions
1690
1691  Revision 591.86  2002/08/12 00:09:05  ajc
1692  * Compress VISIT records using zlib if available.  This reduces the object
1693    size from over 4k to about 70 bytes.  Experimental.
1694  * Automatically uncompress database records found to be compressed (duh)
1695
1696  Revision 591.85  2002/08/08 22:01:35  ajc
1697  * autoconf to look for zlib (for an upcoming experiment)
1698
1699  Revision 591.84  2002/08/08 03:25:56  ajc
1700  * Bugfix for above
1701  * Started writing some infrastructure for sub/unsub
1702
1703  Revision 591.83  2002/08/08 02:49:12  ajc
1704  * serv_network.c: retain unknown commands in netconfigs and write them back
1705  * techdoc/netconfigs.txt: specify commands for subscribe/unsubscribe pending
1706  * serv_listsub.c: added (currently a stub)
1707
1708  Revision 591.82  2002/08/06 03:12:14  ajc
1709  * Fixed and clarified "new mail has arrived" messages.
1710
1711  Revision 591.81  2002/08/06 03:02:29  ajc
1712  * ;AE command -- Make it clearer which floor the user is editing
1713
1714  Revision 591.80  2002/08/06 02:58:01  ajc
1715  * Cleaned up the output of digest mode.  It's usable now, but the self-service
1716    subscribe/unsubscribe functions are not there yet.
1717
1718  Revision 591.79  2002/08/05 14:38:11  ajc
1719  * rooms.c: corrected a typo reported by Campagnolo (Mike Poulin)
1720
1721  Revision 591.78  2002/08/03 19:48:40  ajc
1722  * NULLify 'roomrec' before attempting partial match in <G>oto
1723    (fixes heap corruption when this command is executed)
1724
1725  Revision 591.77  2002/08/03 04:13:46  ajc
1726  * citadel_ipc.c: Attempted to clean up memory allocation
1727
1728  Revision 591.76  2002/08/01 05:41:53  ajc
1729  * Completion of (most of) digest mode.  Still needs some polish.
1730
1731  Revision 591.75  2002/07/31 04:01:57  ajc
1732  * Began implementing "digest mode" for listserving.  (Not complete)
1733
1734  Revision 591.74  2002/07/28 20:33:13  ajc
1735  * Augmented the "headers only" functionality of the message reading API (as
1736    well as the options of the server commands which expose it) to allow
1737    headers+body, headers only, or body only.
1738  * Adjusted message output of IMAP command FETCH BODY[1] when message is in
1739    legacy Citadel format.  This fixes a bug exposed by SquirrelMail.
1740
1741  Revision 591.73  2002/07/23 04:00:06  ajc
1742  * Completed the MSGP and MSG4 commands to set the client's preferred MIME
1743    content types, and fetch messages with MIME content types.
1744
1745  Revision 591.72  2002/07/21 22:29:46  ajc
1746  * Added in some infrastructure to switch the client's message reading from
1747    conventional MSG0 to a MIME-download type thing, like WebCit does.
1748
1749  Revision 591.71  2002/07/21 15:45:07  error
1750  * Remove duplicate call for server time in who_is_online(); IPC does this now
1751
1752  Revision 591.70  2002/07/21 15:43:57  error
1753  * citadel_ipc.c: Fix for segfault on empty messages
1754
1755  Revision 591.69  2002/07/20 04:05:10  ajc
1756  * Updated hack.txt with some fresh new information
1757
1758  Revision 591.68  2002/07/19 02:28:11  ajc
1759  * citadel_ipc.c: changed various buffer lengths from 256 to SIZ in order to
1760    accomodate long lines which often spew out (usually from spam unfortunately)
1761
1762  Revision 591.67  2002/07/18 21:29:37  nbryant
1763  added a note about GNU make to the configure script output
1764
1765  Revision 591.66  2002/07/18 20:21:18  ajc
1766  * Eliminated the 512-message limit in the client for reading messages.
1767
1768  Revision 591.65  2002/07/13 04:12:40  ajc
1769  * Don't lie about format types in MSG0 anymore.  We no longer need to.
1770
1771  Revision 591.64  2002/07/13 03:24:32  ajc
1772  * CtdlOutputMsg() caches the most recently fetched message in memory.  This
1773    eliminates the need to do multiple database fetches when we go back for
1774    additional MIME parts, etc.
1775
1776  Revision 591.63  2002/07/11 03:40:51  ajc
1777  * When outputting a multipart MIME message, supply the client with "pref="
1778    and "suff=" lines in addition to the "part=" lines.
1779
1780  Revision 591.62  2002/07/02 16:27:06  error
1781  * prototypes in citadel_ipc.h updated
1782
1783  Revision 591.61  2002/06/29 23:26:55  error
1784  * fixed some memory leaks
1785
1786  Revision 591.60  2002/06/29 18:36:31  error
1787  * tools.c: Massively faster versions of extract_token() and remove_token().
1788    These functions can now handle multi-kilobyte sized strings with hundreds
1789    of tokens (or more?).
1790
1791  Revision 591.59  2002/06/29 15:55:07  error
1792  * Convert whobbs, serv_info, misc. functions to new IPC code
1793
1794  Revision 591.58  2002/06/27 03:10:04  error
1795  * rooms.c: converted most functions to new IPC code
1796
1797  Revision 591.57  2002/06/25 15:38:52  error
1798  * fixed bug in dotgoto() causing free() to segfault
1799
1800  Revision 591.56  2002/06/25 15:13:27  error
1801  * gotonext() now uses new IPC code to retrieve room listing
1802
1803  Revision 591.55  2002/06/25 14:21:35  error
1804  * remove a debugging trap I accidentally left in the code
1805
1806  Revision 591.54  2002/06/24 20:17:43  error
1807  * Fixed code for client segfault at login
1808
1809  Revision 591.53  2002/06/24 20:11:00  error
1810  * Buffer overflow fixes and minor cleanup in IPC code
1811
1812  Revision 591.52  2002/06/24 16:07:42  error
1813  * Message reading and other functions which use the fmout() screen
1814    formatter now use the new IPC code.
1815
1816  Revision 591.51  2002/06/22 20:09:16  error
1817  * Use a new IPC API (in citadel_ipc.c).  Partially converted citadel.c to
1818    use the new API.
1819
1820  Revision 591.50  2002/06/21 12:32:48  ajc
1821  * Minor documentation update
1822
1823  Revision 591.49  2002/06/19 21:52:13  ajc
1824  * Support a transient room create as well
1825
1826  Revision 591.48  2002/06/19 21:42:57  ajc
1827  * Added support for "transient goto" which allows entry into a private and/or
1828    zapped room without putting the room [back] on your known rooms list.  This
1829    is useful for the new administrative functions in WebCit (updating a user's
1830    vCard without the Aide suddenly having that user's config room on their
1831    list).
1832
1833  Revision 591.47  2002/06/18 16:34:06  error
1834  * room_ops.c: Fix for old room record not being deleted when renaming
1835    baseroom or aideroom
1836
1837  Revision 591.46  2002/06/16 21:01:11  ajc
1838  * Allow Aides to create rooms in other users' namespaces (if global access
1839    controls allow)
1840
1841  Revision 591.45  2002/06/15 20:48:50  ajc
1842  * Fixed small bug in the e<X>pert mode toggle
1843
1844  Revision 591.44  2002/06/15 20:14:55  ajc
1845  * Fixed a memory allocation bug in the vCard parser
1846
1847  Revision 591.43  2002/06/15 17:53:59  error
1848  * citserver.c: MESG command can now send a different system message based
1849    on the developer and client ID of the connected client
1850
1851  Revision 591.42  2002/06/15 04:52:26  ajc
1852  * SpamAssassin connector is now configurable in <.A>ide <S>ysconfig <I>nternet.
1853  * Allow more than one SA server (it'll try 'em all)
1854  * Don't run SA for logged in users
1855
1856  Revision 591.41  2002/06/14 20:42:56  ajc
1857  * Discovered that spamd works even without the Content-length: command, so I
1858    was able to redo the spam checker to work without a temp file.
1859
1860  Revision 591.40  2002/06/14 20:37:03  ajc
1861  * Disabled the spam strings checker I wrote a few days ago.
1862  * When receiving SMTP, check to see if spamd (the SpamAssassin daemon) is
1863    running on the local machine.  If yes, run the message through it and
1864    reject if spam.
1865
1866  Revision 591.39  2002/06/12 03:42:21  ajc
1867  * "Suppress message prompts" has been changed to "Prompt after each message"
1868    and of course the effect has been reversed.
1869  * "Be unlisted in userlog" has been moved to the end of the list of
1870    configuration prompts, so it doesn't interrupt the flow of thought regarding
1871    the prompting questions.
1872
1873  Revision 591.38  2002/06/10 22:25:25  ajc
1874  * Configuration for spam filter
1875
1876  Revision 591.37  2002/06/09 23:59:38  ajc
1877  * Started working on the spam filter
1878
1879  Revision 591.36  2002/06/07 22:10:51  ajc
1880  * Added a new message function hook type EVT_SMTPSCAN which permits modules to
1881    register hooks that can scan incoming SMTP messages and elect to reject them
1882    (due to virus or spam content, for example).
1883
1884  Revision 591.35  2002/06/07 03:22:13  ajc
1885  * Added a module "serv_mrtg" which allows activity reporting to MRTG
1886    (http://www.mrtg.org) -- this will replace our stats program.
1887
1888  Revision 591.34  2002/06/02 16:42:17  error
1889  * Support for Ctrl-W to erase a word when editing or at a prompt
1890
1891  Revision 591.33  2002/05/31 18:34:04  nbryant
1892  better curses compatibility, and a couple makefile/configure tweaks
1893
1894  Revision 591.32  2002/05/28 13:59:02  ajc
1895  * Removed the 'netsetup' and 'dnetsetup' utilities (obsolete)
1896
1897  Revision 591.31  2002/05/24 19:58:13  ajc
1898  * Fixed the "idle timeout during paginator prompt" bug by reintroducting the
1899    concept of a "half keepalive" and sending them during paginator prompts.
1900
1901  Revision 591.30  2002/05/23 03:33:21  ajc
1902  * Added a GTSN (GeT list of SeeN messages) command
1903
1904  Revision 591.29  2002/05/20 14:29:59  ajc
1905  * commands.c: fixed bug in the scan for idle_threshold= which didn't include
1906    the = sign and ended up always setting this value to 0
1907
1908  Revision 591.28  2002/05/17 03:57:30  ajc
1909  * When doing fixed_output() of converted HTML, output the whole block of
1910    data at once instead of one character at a time
1911
1912  Revision 591.27  2002/05/16 04:44:58  ajc
1913  * Reduce the number of socket writes when doing fixed_output() to avoid
1914    getting killed by overhead.  (Thanks to IO for the insight)
1915
1916  Revision 591.26  2002/05/14 15:25:34  error
1917  * room_ops.c: clarified aide message when room aide is removed
1918
1919  Revision 591.25  2002/05/14 15:18:43  error
1920  * rooms.c: Print name of room aide if any when doing <i>nfo
1921
1922  Revision 591.24  2002/05/14 01:33:18  error
1923  * Fixed some incredibly silly typos
1924
1925  Revision 591.23  2002/05/14 01:27:18  error
1926  * Minor cosmetic changes, extraneous double spaces etc.
1927
1928  Revision 591.22  2002/05/14 01:15:54  error
1929  * Idle threshold on the who list is now customizable in the citadel.rc
1930
1931  Revision 591.21  2002/05/14 01:09:57  error
1932  * citadel.c: spacebar won't read New if there are no new messages
1933
1934  Revision 591.20  2002/05/12 23:00:11  ajc
1935  * Removed an unused variable
1936
1937  Revision 591.19  2002/05/12 22:57:04  ajc
1938  * Removed the unfinished moderation system.
1939  * CtdlForEachMessage() - only fetch metadata when hunting for messages with
1940    a specified Content-type.  Serious performance boost.
1941
1942  Revision 591.18  2002/05/05 17:33:09  error
1943  * screen.c: fix lack of beeps in curses mode
1944
1945  Revision 591.17  2002/05/04 02:58:16  ajc
1946  * Documented a small protocol change for the STEL command
1947
1948  Revision 591.16  2002/04/30 03:13:59  ajc
1949  * When sending a page that results in the receiver's Sent/Received Pages>
1950    room to be created, don't automatically grant the sender access to that room.
1951  * Added a parameter to create_room() to implement the above
1952
1953  Revision 591.15  2002/04/23 13:38:08  ajc
1954  * Minor docs update
1955
1956  Revision 591.14  2002/04/21 21:28:06  ajc
1957  * Create the My Citadel Config> room along with the user account
1958
1959  Revision 591.13  2002/04/20 03:00:01  ajc
1960  * One more fix for the RENAME command wrt namespaces.
1961
1962  Revision 591.12  2002/04/18 18:44:36  nbryant
1963  don't use libtool -avoid-version for libcitserver - this might help for
1964  OpenBSD
1965
1966  Revision 591.11  2002/04/17 04:35:06  ajc
1967  * Finished the IMAP RENAME command.  (I ended up using nested functions
1968    because it made the task much, much easier.  We can fix it later or convert
1969    it to C++ if we find this becomes a problem.)
1970
1971  Revision 591.10  2002/04/15 13:25:47  ajc
1972  * Add error responses to imap_rename() and set up subfolder framework
1973
1974  Revision 591.9  2002/04/14 22:42:49  ajc
1975  * Began implementing RENAME command in IMAP.
1976
1977  Revision 591.8  2002/04/14 22:27:05  ajc
1978  * Added access control checking to CtdlRenameRoom()
1979
1980  Revision 591.7  2002/04/14 22:11:22  ajc
1981  * New back end function CtdlRenameRoom() which is used to rename a room and/or
1982    move it to a different floor.
1983  * cmd_setr() now uses CtdlRenameRoom() to do part of its work
1984
1985  Revision 591.6  2002/04/10 03:58:40  ajc
1986  * Began work on IMAP RENAME
1987
1988  Revision 591.5  2002/04/09 14:26:43  ajc
1989  * Allow INBOX to have subfolders.  There's no longer any reason not to.
1990
1991  Revision 591.4  2002/04/05 22:31:59  error
1992  * Send time-of-day with pages sent via IMAP
1993
1994  Revision 591.3  2002/04/05 14:34:02  ajc
1995  * Minor tweak to nested folder algorithm to handle nesting in mail root
1996
1997  Revision 591.2  2002/04/05 04:25:56  ajc
1998  * Support nested folders in IMAP.  We might want to change the delimiter.
1999
2000  Revision 591.1  2002/04/04 23:25:30  ajc
2001  * Experimental hacking to handle subfolderization in IMAP.  Seems to work ok
2002    but it makes Mozilla mail hang.  Will investigate more later...
2003
2004  Revision 591.0  2002/04/01 05:13:20  ajc
2005  * Tagged everything for 5.91 release
2006
2007  Revision 590.168  2002/04/01 05:12:57  ajc
2008  * Prep for 5.91 release
2009
2010  Revision 590.167  2002/03/29 04:43:15  ajc
2011  * Removed the BMBX command.  Mailbox security update now runs automatically when the
2012    server starts and it sees data files version <5.91.
2013
2014  Revision 590.166  2002/03/26 05:58:35  nbryant
2015  don't check for a database driver until after the openssl check is
2016  complete. if the ld paths aren't set up for the db installation this
2017  can interfere with the openssl check because it tries to run a program
2018  linked against the libraries we've been finding.
2019
2020  Revision 590.165  2002/03/26 05:20:46  nbryant
2021  removed last vestiges of "#ifdef CIT_CLIENT" conditional compilation,
2022  which has been rendered unusable by the build system simplifications
2023
2024  Revision 590.164  2002/03/26 05:13:32  nbryant
2025  fix monstrous shell script syntax in configure.ac
2026
2027  Revision 590.163  2002/03/26 04:38:31  nbryant
2028   * support autoconf 2.53
2029   * make a note that people should be using libtool 1.4d
2030   * cut some of the more pointless bells and whistles out of the configure
2031     script in an effort to make it more maintainable
2032   * modularized ipc_c_tcp.c and client_crypto.o so that they're not tied
2033     to the curses stuff.
2034   * timezone/daylight and other FreeBSD fixes
2035   * more effort in the configure script to detect the common
2036     bastardizations (ahem, ports) of Berkeley DB without falling down
2037
2038  Revision 590.162  2002/03/25 03:09:39  nbryant
2039  fix warning on platforms where pthread_t may be a pointer
2040
2041  Revision 590.161  2002/03/25 00:01:50  nbryant
2042   * compatibility with Berkeley DB < 3.3
2043   * squished symbol clashes with the OK symbol from curses in certain *n[iu]x
2044  distributions. this is kind of a pain in the ass, but I had to rename our
2045  OK to CIT_OK :-(
2046
2047  Revision 590.160  2002/03/22 04:35:38  ajc
2048  * Handle vCard registration updates for users other than the one currently
2049    logged in.  (Allows administrative editing of contact information.)
2050
2051  Revision 590.159  2002/03/20 19:03:27  ajc
2052  * Don't re-declare timezone variables ('cuz FreeBSD chokes on that)
2053
2054  Revision 590.158  2002/03/19 04:34:42  ajc
2055  * mime_parser.c: minor changes for easier porting between Citadel and WebCit
2056
2057  Revision 590.157  2002/03/19 04:19:33  ajc
2058  * Saw what IO did with strchr() and did the same in a few more places
2059
2060  Revision 590.156  2002/03/17 00:08:02  error
2061  * mime_parser.c: more robust parsing of Content-Type header
2062
2063  Revision 590.155  2002/03/16 05:22:59  ajc
2064  * Post an error message to Aide> when unlink() is unable to delete old
2065    database log files.
2066
2067  Revision 590.154  2002/03/14 04:35:26  nbryant
2068  avoid symbol clash with curses' "timeout" function (which may be a macro
2069  in some versions)
2070
2071  Revision 590.153  2002/03/14 04:24:20  nbryant
2072  support window resizing in curses mode
2073
2074  Revision 590.152  2002/03/13 04:11:11  nbryant
2075  fix up minor gotcha introduced by fgets change
2076
2077  Revision 590.151  2002/03/13 03:58:29  ajc
2078  * Site-configurable option "Allow system Aides to gain access to mailboxes"
2079
2080  Revision 590.150  2002/03/13 03:34:38  nbryant
2081  /* when running in curses mode, the scroll bar in most
2082     xterm-style programs becomes useless, so it makes sense to
2083     pause after a screenful of pages if the user has been idle
2084     for a while. However, this is annoying to some of the users
2085     who aren't in curses mode and tend to leave their clients
2086     idle. keepalives become disabled, resulting in getting booted
2087     when coming back to the idle session. but they probably have
2088     a working scrollback in their terminal, so disable it in this
2089     case:
2090   */
2091  if (!is_curses_enabled())
2092         lines_printed = 0;
2093
2094  Revision 590.149  2002/03/12 23:34:37  nbryant
2095  use ncurses in preference to curses if it's installed; it handles
2096  background colors properly on dtterm, has a larger color pair palette,
2097  and has a bigger terminal database than solaris curses
2098
2099  Revision 590.148  2002/03/12 22:47:17  nbryant
2100  curses fix: map our normal color pairs into the 0-7 range instead of 1-8,
2101  in order to make our pairs fit on terminals such as dtterm where COLOR_PAIRS=8.
2102  map the white/blue color pair onto 8 instead of 9, but only if that slot
2103  is available; fall back on white/black otherwise.
2104
2105  it seems there may be an off-by-one error in the color pair manpages for
2106  the various curses packages (?) if not, our 0 entry is unusable, but that's
2107  the DIM_BLACK color and we don't use it anyway.
2108
2109  Revision 590.147  2002/03/12 22:17:20  ajc
2110  * Give mailbox owners access to "who knows room" command
2111
2112  Revision 590.146  2002/03/12 21:08:03  nbryant
2113  support color under Solaris curses
2114
2115  Revision 590.145  2002/03/12 19:59:40  ajc
2116  * Access control change: do not treat mailboxes as guessname rooms for Aides.
2117    Open up INVT/KICK commands to non-Aides for their mailboxes.
2118
2119  Revision 590.144  2002/03/12 04:30:52  nbryant
2120  if a filesystem node exists at /var/run/egd-pool, try to connect to it as
2121  the EGD (Entropy Gathering Daemon) or PRNGD (pseudorandom number
2122  generator daemon) socket and seed OpenSSL's RNG.
2123
2124  this is necessary on solaris and other systems which lack /dev/urandom.
2125
2126  Revision 590.143  2002/03/12 03:43:26  nbryant
2127  squished the last remaining calls to sprintf
2128
2129  Revision 590.142  2002/03/12 03:36:55  nbryant
2130  replace calls to gets with fgets
2131
2132  Revision 590.141  2002/03/12 03:19:09  nbryant
2133  more sprintf bashing. now the only ones left are in mime_parser
2134
2135  Revision 590.140  2002/03/12 01:33:42  nbryant
2136   - pass -Wcast-qual to gcc
2137   - more sprintf bashing
2138
2139  Revision 590.139  2002/03/12 00:03:43  nbryant
2140  more sprintf removals
2141
2142  Revision 590.138  2002/03/11 06:00:21  nbryant
2143  use <db.h> before <db3/db.h> or <db4/db.h>
2144  this is the only way i can think of to make it work everywhere; people on
2145  systems like FreeBSD where the ports work the other way around will have to
2146  specify an extra -I flag in their CPPFLAGS variable.
2147
2148  Revision 590.137  2002/03/11 05:42:46  nbryant
2149  removed all references to sprintf from several files (not all files yet)
2150  and replace with snprintf
2151
2152  Revision 590.136  2002/03/11 04:16:20  nbryant
2153  warning fixes on sparc-sun-solaris2.8 with gcc 3.0.4, mostly for *printf
2154  format strings
2155
2156  Revision 590.135  2002/03/11 03:55:24  nbryant
2157   - fixes for building without OpenSSL
2158   - setenv doesn't exist on all systems, use putenv instead
2159   - support Solaris' curses implementation
2160
2161  Revision 590.134  2002/03/09 22:52:04  ajc
2162  * Applied a patch submitted by <xperc@hotmail.com> to fix a potential buffer
2163    overflow problem in lprintf().  I also did the same fix to cprintf().
2164
2165  Revision 590.133  2002/03/09 16:47:57  ajc
2166  * Added BMBX to fix a problem
2167
2168  Revision 590.132  2002/03/09 06:18:37  ajc
2169  * one more tweak
2170
2171  Revision 590.131  2002/03/09 05:22:29  ajc
2172  * this should do it.
2173
2174  Revision 590.130  2002/03/09 05:02:20  ajc
2175  * Attempts to fix the access control crap
2176
2177  Revision 590.129  2002/03/08 05:42:02  ajc
2178  * Patch to allow invitations and admin access to mailbox rooms.  NEEDS TESTING!
2179
2180  Revision 590.128  2002/03/07 04:30:37  ajc
2181  * Force recipient only in Mail>, not in all mailbox rooms
2182
2183  Revision 590.127  2002/03/05 22:45:40  error
2184  * Autoconf fixes for DB4 support
2185
2186  Revision 590.126  2002/03/05 04:47:49  ajc
2187  * vcard.c: another API update
2188
2189  Revision 590.125  2002/03/04 05:29:39  ajc
2190  * Made a small API change to vcard.c for WebCit, brought the change over here too
2191    in order to keep vcard.c identical everywhere.
2192
2193  Revision 590.124  2002/03/03 06:48:25  ajc
2194  * Client and server options to disable self-service user account creation
2195
2196  Revision 590.123  2002/03/03 06:31:58  ajc
2197  * Added password starred-out entry to newprompt() and strprompt()
2198  * Applied the above setting to password set/change in <.A>ide <U>seredit
2199
2200  Revision 590.122  2002/03/03 06:18:45  ajc
2201  * Implemented the CREU server command to administratively create user accounts
2202  * Added the ability to create new user accounts to <.A>ide <U>seredit
2203
2204  Revision 590.121  2002/03/03 06:05:16  ajc
2205  * Split up some of the code in order to prepare for user accounts to be
2206    administratively created without logging in to them.
2207
2208  Revision 590.120  2002/03/02 05:56:48  ajc
2209  * Properly implemented the network filter list.  Finished the server module and
2210    did a client-side <.A>ide <S>ysconfig <F>ilterlist command.
2211
2212  Revision 590.119  2002/03/01 04:24:20  ajc
2213  * Cosmetic change to Received: line
2214
2215  Revision 590.118  2002/03/01 04:16:22  ajc
2216  * CtdlReadMessageBody() -- fixed bug that caused the prepend buffer to be
2217    discarded instead of prepended.  "Received:" lines now work.
2218
2219  Revision 590.117  2002/02/23 19:20:51  ajc
2220  * Do the use table purge in two phases to avoid crashy crashy
2221
2222  Revision 590.116  2002/02/20 22:42:19  ajc
2223  * Started adding better management of source IP addressses in SMTP service
2224
2225  Revision 590.115  2002/02/15 04:28:57  ajc
2226  * Wrote the expire/purge routine for the new use table
2227
2228  Revision 590.114  2002/02/15 04:05:08  ajc
2229  * Began implementation of a networker use table that doesn't chew up oodles
2230    of CPU time.  (It uses a cdb instead.)
2231
2232  Revision 590.113  2002/02/15 03:40:06  ajc
2233  * Stu's changes (which he checked in without making any ChangeLog comments,
2234    bad Stu!) didn't build properly without curses.  Added #ifdef's.
2235
2236  Revision 590.112  2002/02/13 22:15:10  ajc
2237  * That was stupid.
2238
2239  Revision 590.111  2002/02/13 22:04:11  ajc
2240  * added vcard_to_html() function
2241
2242  Revision 590.110  2002/02/13 15:48:55  ajc
2243  * Allow the READ command to return packets bigger than 1 byte.  (ooops!)
2244
2245  Revision 590.109  2002/02/12 20:15:25  ajc
2246  * Threw in a few more #ifdef's so the client build doesn't barf on
2247    non-curses systems
2248  * Added rc_prompt_control (<N>ext/<S>top active at paginator: on/off/user)
2249
2250  Revision 590.108  2002/02/11 15:52:10  ajc
2251  * Don't crash when deleting "purge this vCard" messages
2252
2253  Revision 590.107  2002/02/10 22:36:41  nbryant
2254   - replace cdb_trunc with a complete version of the code i had been
2255     working on; fallback code for db < 3.3.x needed
2256   - change 'can't connect to host.port' to 'can't connect to host:port'
2257
2258  Revision 590.106  2002/02/08 22:39:08  ajc
2259  * If there's already a Subject line in memory, display it below the usual
2260    headers when the user hits <E>
2261
2262  Revision 590.105  2002/02/08 22:36:23  ajc
2263  * Changed the logic for printing RFC822 addresses (again)
2264  * Implemented cdb_trunc() in database_sleepycat.c, using db_truncate()
2265    (We need to either provide an alternative implementation or require DB >=3.3)
2266  * Automatically Re: subject line in the client where appropriate
2267
2268  Revision 590.104  2002/02/08 19:02:25  ajc
2269  * Added client and server side support for entering Subject lines in
2270    messages when not using RFC822.
2271
2272  Revision 590.103  2002/02/08 18:10:07  ajc
2273  * When outputting a message in non-RFC822 format, don't display an Internet
2274    address if the user is local.
2275
2276  Revision 590.102  2002/02/07 04:42:49  ajc
2277  * Silently refuse to add directory entries for Internet addresses already
2278    belonging to other users.
2279  * cdb_trunc() for CtdlDirectoryInit: implemented for GDBM, stubbed for DB
2280
2281  Revision 590.101  2002/02/05 05:05:53  ajc
2282  * Don't crash when posting if the user doesn't have an Internet directory address
2283
2284  Revision 590.100  2002/02/03 15:29:03  error
2285  * fixed a silly oversight in serv_crypto.c when removing the ETLS command
2286
2287  Revision 590.99  2002/02/03 15:21:48  error
2288  * Remove the ETLS command, it is no longer needed
2289
2290  Revision 590.98  2002/02/02 21:44:04  ajc
2291  * If a user has at least one valid Internet directory address, stamp it onto
2292    any outgoing messages.
2293
2294  Revision 590.97  2002/02/01 05:11:26  ajc
2295  * Added a QDIR protocol command to do quick-and-dirty queries of the directory
2296  * In the client, check the directory for conflicts when selecting email addr.
2297
2298  Revision 590.96  2002/01/31 05:13:44  ajc
2299  * When deleting a vCard from the Global Address Book room, remove the
2300    corresponding address in the directory.  (Not tested.)
2301
2302  Revision 590.95  2002/01/30 19:03:41  ajc
2303  * Added a new DeleteFunctionHook type of thing.  These get called when a
2304    message is being deleted from a room.
2305  * When deleting messages from a room, do the AdjRefCount() calls (and now,
2306    the PerformDeleteHooks() calls) in a second pass.  This keeps that stuff
2307    outside of the S_QUICKROOM critical section.
2308
2309  Revision 590.94  2002/01/27 06:39:45  error
2310  * file_ops.c: fixed bug in cmd_read() which could cause server to report
2311    the wrong number of bytes for the client to download
2312
2313  Revision 590.93  2002/01/26 21:33:38  ajc
2314  * More internet addressing and global directory stuff.  I think it's all working now
2315    except for the purging of old entries.
2316
2317  Revision 590.92  2002/01/26 11:02:37  error
2318  * citadel.spec cleaned up
2319
2320  Revision 590.91  2002/01/26 09:23:40  error
2321  * setup now has a silent running mode (-q option) where it silently sets
2322    defaults for everything.  This is intended for use in scripts such as
2323    the RPM packages, eliminating a step from the installation process.
2324
2325  Revision 590.90  2002/01/26 09:19:16  error
2326  * citadel.spec has been completely overhauled, we can make RPMs now!
2327
2328  Revision 590.89  2002/01/26 04:59:57  ajc
2329  * smtp FROM command now validates sender using the validate_recipients() loop
2330    (yeah, it's good for that too) making it directory-aware
2331
2332  Revision 590.88  2002/01/26 04:01:10  error
2333  * Formatter now uses more of the available screen width
2334
2335  Revision 590.87  2002/01/26 03:57:30  error
2336  * Revised status_line() display, it's much more compact now
2337
2338  Revision 590.86  2002/01/26 03:50:26  error
2339  * Better error reporting in connection_died(), kills curses before printing
2340    error message, prints last errno.
2341
2342  Revision 590.85  2002/01/25 05:19:03  ajc
2343  * Greatly simplified the logic for validating recipient addresses for incoming
2344    SMTP.  This logic destroys the whitespace mangling for local names; I will
2345    fix this tomorrow.
2346
2347  Revision 590.84  2002/01/25 04:36:35  ajc
2348  * fixz to allow incoming vCards in the address book to actually get processed
2349
2350  Revision 590.83  2002/01/24 06:52:54  error
2351  * citadel_decls.h: fix unresolved extern errors
2352
2353  Revision 590.82  2002/01/23 05:04:05  ajc
2354  * Add vCards from incoming network messages in the GAB to the directory.
2355
2356  Revision 590.81  2002/01/23 03:39:32  ajc
2357  * Added a new hook type for handling incoming network messages
2358  * Wrote a skeleton module for net filtering
2359
2360  Revision 590.80  2002/01/22 10:46:25  error
2361  * read_message() and fmout() now accept a FILE to which to send their
2362    output; this fixes quoting in the fullscreen client
2363
2364  Revision 590.79  2002/01/20 08:03:43  error
2365  * curses client: use the status line as "input" line in chat mode
2366
2367  Revision 590.78  2002/01/20 07:43:07  error
2368  * serv_chat.c: Server no longer crashes when CHATLOG can't be opened
2369
2370  Revision 590.77  2002/01/20 05:22:07  error
2371  * curses client:  allow goodbye message to be seen on some terminals
2372
2373  Revision 590.76  2002/01/19 16:56:31  error
2374  * Fixed color support, now works when rc_ansi_color is on or auto
2375
2376  Revision 590.75  2002/01/19 15:10:25  error
2377  * Cosmetics for the client status line
2378
2379  Revision 590.74  2002/01/19 11:59:33  error
2380  * A real status line for the text client
2381
2382  Revision 590.73  2002/01/19 10:08:43  error
2383  * fix link for libcitserver.so to tools.o which I broke (oops!)
2384
2385  Revision 590.72  2002/01/19 09:59:08  error
2386  * Full-screen curses support for Citadel text client
2387
2388  Revision 590.71  2002/01/17 20:11:05  nbryant
2389  remove lock.c/lock.h; don't need them for what i was planning after all
2390
2391  Revision 590.70  2002/01/17 10:48:36  error
2392  * cosmetic fixes in the new trace file functionality
2393
2394  Revision 590.69  2002/01/17 10:32:14  error
2395  * lprintf() now logs the session ID for each log entry within a session.
2396    Also SMTP, IMAP, POP3 and Citadel protocol commands are differentiated.
2397
2398  Revision 590.68  2002/01/17 10:16:09  error
2399  * migratenet.c: cygwin fix: include limits.h
2400
2401  Revision 590.67  2002/01/17 10:13:31  error
2402  * serv_ical.c: set expire policy for My Calendar> to manual
2403
2404  Revision 590.66  2002/01/17 07:18:11  ajc
2405  * Changed all "free software" references to "open source" in order
2406    to piss off Richard Stallman
2407
2408  Revision 590.65  2002/01/17 00:22:35  nbryant
2409  added lock.[ch]: recursive read/write locking support. (not actually used yet)
2410
2411  Revision 590.64  2002/01/15 12:41:53  error
2412  * Implement alternate_semantics (see comments in citadel.rc file)
2413
2414  Revision 590.63  2002/01/15 11:07:51  ajc
2415  * vcard.c: updated vCard "object methods" to handle multiple instances of
2416    the same key name when necessary.
2417
2418  Revision 590.62  2002/01/15 06:38:39  error
2419  * Update citadelapi.txt with CtdlUnregister* calls, LogHook calls
2420
2421  Revision 590.61  2002/01/15 06:20:18  error
2422  * Modules can now unregister any of their hooks (though none yet take
2423    advantage of this).
2424
2425  Revision 590.60  2002/01/14 08:49:13  error
2426  * Fixed bug in cmd_cre8() causing protocol to get out of sync when creating
2427    a new room
2428
2429  Revision 590.59  2002/01/13 04:46:31  ajc
2430  * Allow incoming SMTP to relay to other Citadel nodes for whom we are
2431    providing directory service.
2432
2433  Revision 590.58  2002/01/13 04:06:33  ajc
2434  * Repaired the problems I created when moving the_mime_parser()'s variables
2435    from the stack to the heap.  (Hint: sizeof(char *) is 4, not 4096)
2436
2437  Revision 590.57  2002/01/11 15:46:57  error
2438  * Allow users to move/copy messages between personal rooms
2439
2440  Revision 590.56  2002/01/11 04:59:00  ajc
2441  * Finished most of the work for the Global Address Book.
2442
2443  Revision 590.55  2002/01/11 04:37:03  ajc
2444  * More code for the Global Address Book
2445
2446  Revision 590.54  2002/01/11 02:57:35  error
2447  * Don't print **** when sending a page or mail from an anonymous-only room
2448
2449  Revision 590.53  2002/01/10 21:22:37  ajc
2450  * Minor changes for global directory service
2451
2452  Revision 590.52  2002/01/10 04:29:28  ajc
2453  * Minor updates for directory service
2454
2455  Revision 590.51  2002/01/09 23:12:40  ajc
2456  * Allow users to zap mailbox rooms
2457
2458  Revision 590.50  2002/01/09 04:37:32  ajc
2459  * Finished the callback stuff for vCard address extraction
2460
2461  Revision 590.49  2002/01/09 04:05:53  ajc
2462  * Began writing code to harvest Internet e-mail addresses from vCards, and
2463    hacked together a temporary version (and writeup) of the IGAB command.
2464
2465  Revision 590.48  2002/01/08 16:34:22  ajc
2466  * serv_vcard.c: cosmetic cleanup
2467
2468  Revision 590.47  2002/01/06 22:44:21  error
2469  * Enable/disable encryption in client from command line and/or citadel.rc
2470
2471  Revision 590.46  2002/01/06 21:25:26  ajc
2472  * sysdep.c: in client_write(), handle redirect_fp and redirect_sock *before*
2473    handling redirect_ssl, because these need to be done the same way regardless
2474    of client session crypto
2475  * serv_crypto.c: pasted a bunch of Nathan's #ifdef blocks from sysdep.c in
2476    order to gain greater portability (or even to get it to compile on splorph)
2477
2478  Revision 590.45  2002/01/06 11:13:33  error
2479  * Enable SSL/TLS support in the client (again)
2480
2481  Revision 590.44  2002/01/06 11:11:31  error
2482  * Enable SSL/TLS in the client
2483
2484  Revision 590.43  2002/01/06 10:49:55  error
2485  * Add some #includes I apparently somehow missed
2486
2487  Revision 590.42  2002/01/06 10:33:10  error
2488  * SSL/TLS support for the Citadel/UX wire protocol
2489
2490  Revision 590.41  2002/01/06 08:54:58  error
2491  * user_ops.c: fixed become_session() when calling EVT_LOGOUT session hooks
2492
2493  Revision 590.40  2002/01/05 22:31:22  ajc
2494  * Removed some protocol commands and writeups that are no longer necessary
2495  * Began some of the framework for the Global Address Book
2496
2497  Revision 590.39  2002/01/05 12:44:43  error
2498  * serv_chat.c: allow a session to be killed while in chat
2499
2500  Revision 590.38  2002/01/05 12:31:04  error
2501  * user_ops.c: become_session() when calling EVT_LOGOUT session hooks
2502
2503  Revision 590.37  2002/01/05 04:51:36  error
2504  * stats now sorts its top 20 lists properly
2505
2506  Revision 590.36  2002/01/04 20:57:36  nbryant
2507  cygwin fix
2508
2509  Revision 590.35  2002/01/04 20:46:26  nbryant
2510  Makefile fix for cygwin (fix migratenet linkage)
2511
2512  Revision 590.34  2002/01/04 20:43:26  nbryant
2513  configure/genstamp: check for struct tm.tm_gmtoff
2514
2515  Revision 590.33  2002/01/03 22:01:17  ajc
2516  * Fixed mail to "sysop"
2517
2518  Revision 590.32  2002/01/03 21:35:07  ajc
2519  * I think this is the last of the fixes for the new submit queue.
2520
2521  Revision 590.31  2002/01/03 12:27:35  error
2522  * Fixed my name in docs/copyright.txt, why didn't I notice that before?
2523
2524  Revision 590.30  2002/01/03 12:21:02  error
2525  * Autoconf support for recognizing OpenSSL
2526
2527  Revision 590.29  2002/01/03 04:52:28  ajc
2528  * serv_network.c: migrated deliveries and bounces to the new message
2529    submission subsystem.  NOT TESTED.
2530
2531  Revision 590.28  2002/01/01 21:32:10  ajc
2532  * Finished the updates to serv_smtp.c, although I think there may be a
2533    problem with one-too-many reference counts when a message is submitted
2534    via SMTP.
2535
2536  Revision 590.27  2001/12/31 20:15:13  ajc
2537  * Almost finished converting serv_smtp.c to the new message submission
2538    framework.  Still not done yet; don't use this.
2539
2540  Revision 590.26  2001/12/30 06:20:46  error
2541  * More keys while reading messages:  Q or S same as Ctrl-C, N same as Ctrl-O.
2542
2543  Revision 590.25  2001/12/30 05:50:46  error
2544  * Security:  Citadel now drops privileges when called from telnetd, also
2545    checks to make sure you didn't set the setuid/setgid bits.  No more
2546    loginwrapper.sh!
2547
2548  Revision 590.24  2001/12/29 05:19:32  ajc
2549  * Minor cosmetic hack
2550
2551  Revision 590.23  2001/12/29 04:21:22  nixo
2552  stupid me. I didn't realize that asking for the header did what I wanted
2553  so I changed my little 'y' hack to not bother reading the text of the
2554  message. a little saving on the bandwidth.
2555
2556  Revision 590.22  2001/12/28 22:32:38  nixo
2557  Added a "read m<y> next" function in read mode. It will skip to the next
2558  message by the user in the current message list (whatever mode you're in
2559  be it read forward, last 50, whatever.)
2560
2561  Revision 590.21  2001/12/28 11:06:53  error
2562  * More server support for hostnames up to 63 characters (oops I missed a spot)
2563
2564  Revision 590.20  2001/12/28 09:39:10  error
2565  * Client support for hostnames up to 63 characters: truncated at 24 in
2566    short who list, full display in long who list.
2567
2568  Revision 590.19  2001/12/28 09:28:04  error
2569  * Server support for hostnames up to 63 characters
2570
2571  Revision 590.18  2001/12/26 05:01:30  ajc
2572  * Added a new developer ID for Anticlimactic Teleservices
2573
2574  Revision 590.17  2001/12/23 10:00:43  error
2575  * Pages are once again formatted to the caller's screen width.
2576
2577  Revision 590.16  2001/12/23 09:57:47  error
2578  * tools.c: added parameter to fmt_date() to allow for printing the seconds
2579    along with the time, e.g. 12:34 pm or 12:34:56 pm
2580
2581  Revision 590.15  2001/12/20 04:54:26  ajc
2582  * If you paid for this software, someone is ripping you off.
2583
2584  Revision 590.14  2001/12/18 08:24:56  nbryant
2585  more lovely configure tweaks (include paths for db)
2586
2587  Revision 590.13  2001/12/18 06:04:08  ajc
2588  * Moved the buffers in the_mime_parser() from the stack to the heap, because
2589    it was crashing boxen with small stack sizes.
2590
2591  Revision 590.12  2001/12/18 05:54:16  ajc
2592  * Added more load_floorlist() commands to the beginning and end of functions
2593    in the client that manipulate the floor list.  This fixes a bug in which
2594    new floors don't show up right away after being created.
2595
2596  Revision 590.11  2001/12/17 08:14:26  nbryant
2597  restored the checks for /usr/include/db3 and /usr/local/include/db3
2598  in configure.  there are too many variations on db installation; this is
2599  getting messy :-(
2600
2601  Revision 590.10  2001/12/17 08:00:45  nbryant
2602  set the pthreads stack size to 128K because FreeBSD's default of 64K
2603  seems too small. fixes crashes under FreeBSD.
2604
2605  Revision 590.9  2001/12/16 00:50:14  error
2606  * Added usersupp.lastcall to the parameters returned from the PASS/PAS2
2607    commands in logged_in_response().
2608
2609  Revision 590.8  2001/12/14 21:33:18  nbryant
2610  finally changed configure to complain if there's no database driver ;)
2611
2612  Revision 590.7  2001/12/14 08:29:30  error
2613  * Security: trace file is now only readable by owner, since it contains
2614    plain text passwords.
2615
2616  Revision 590.6  2001/12/14 07:04:24  ajc
2617  * Now you can send mail to yourself.  Hi from Stu.
2618
2619  Revision 590.5  2001/12/14 06:58:12  ajc
2620  * Hi from Stu
2621
2622  Revision 590.4  2001/12/13 22:36:30  nbryant
2623  make configure search for /usr/local/BerkeleyDB.4.0
2624
2625  Revision 590.3  2001/12/13 22:29:57  nbryant
2626  make it compile with Berkeley DB 4.0.x
2627
2628  Revision 590.2  2001/12/11 21:31:07  nbryant
2629   - test for -ldb3 before -ldb
2630
2631  Revision 590.1  2001/12/11 20:04:41  nbryant
2632   - fix library flags, includes for portability
2633   - malloc.h is deprecated
2634   - fix genstamp, hopefully
2635   - fix size_t *printf handling for portability
2636
2637  Revision 590.0  2001/12/08 03:31:41  ajc
2638  * THIS IS 5.90
2639
2640  Revision 580.95  2001/12/08 03:30:37  ajc
2641  * Final changes to networking docs for 5.90
2642
2643  Revision 580.94  2001/12/06 05:13:34  ajc
2644  * Added the documentation for room sharing and listserv
2645
2646  Revision 580.93  2001/12/04 05:24:15  ajc
2647  * Added two more bytes to the possible length of shared secrets in networking
2648    due to some legacy support requirements.
2649
2650  Revision 580.92  2001/12/04 05:16:19  ajc
2651  * mime_parser.c: change to memory allocation algorithm ... some badly done
2652    messages were crashing the server
2653
2654  Revision 580.91  2001/12/03 22:48:16  ajc
2655  * ooops.  Look for the QR2_SYSTEM flag in QRflags2, not QRflags.
2656
2657  Revision 580.90  2001/12/03 17:02:50  ajc
2658  * dynloader.c: fixed improperly done declaration and mallok()
2659
2660  Revision 580.89  2001/12/03 04:28:02  ajc
2661  * mime_parser.c: now uses built-in functions to decode base64 and
2662    quoted-printable attachments, instead of piping data to outboard programs.
2663
2664  Revision 580.88  2001/12/03 02:45:46  ajc
2665  * Began implementing some code to handle multiple recipients (but #define'd
2666    it all out because we're approaching a release)
2667
2668  Revision 580.87  2001/12/03 01:50:17  ajc
2669  * When sending mail, copy to the sender's "Sent Items>" room instead of to
2670    the sender's "Mail>" room.
2671
2672  Revision 580.86  2001/12/02 23:36:24  ajc
2673  * On a new system, set the default new user level to 4 instead of 1.
2674
2675  Revision 580.85  2001/12/02 23:27:01  ajc
2676  * Removed references to the old networker from the documentation.  Did not
2677    write any new documentation, so what's there now is kind of sparse.
2678
2679  Revision 580.84  2001/12/02 02:42:55  ajc
2680  * Implemented new room flag QR2_SYSTEM which supresses the room from all
2681    room listings, even for Aides (but it's still gotoable).  This will be used
2682    for rooms which hold system configuration and message queues.
2683
2684  Revision 580.83  2001/12/01 19:23:26  ajc
2685  * clientsocket.c: implement socket timeouts for read operations
2686
2687  Revision 580.82  2001/12/01 17:00:23  ajc
2688  * serv_smtp.c: when multiple MX's are the same preference, randomize them
2689
2690  Revision 580.81  2001/12/01 07:18:28  ajc
2691  * Fixed an SMTP delivery problem that was causing certain classes of
2692    transient errors to cause a message to never be delivered.
2693
2694  Revision 580.80  2001/12/01 05:26:01  ajc
2695  * Added a command "SMTP" to the Citadel protocol, to do some unimportant
2696    utility/diagnostic functions.
2697
2698  Revision 580.79  2001/11/27 17:08:29  ajc
2699  * When calling an external editor, set the environment variable
2700    WINDOW_TITLE to an appropriate value.
2701
2702  Revision 580.78  2001/11/26 03:27:08  ajc
2703  * new algorithm to load the use table
2704
2705  Revision 580.77  2001/11/17 19:55:08  ajc
2706  * Updated some of the documentation
2707
2708  Revision 580.76  2001/11/16 04:43:12  ajc
2709  * Eliminated the sock_puts_crlf() function and ensured that all SMTP client
2710    commands are sent out using a single sock_write() call.  There are broken
2711    SMTP server implementations that can't handle SMTP commands split across
2712    multiple writes.  (Thanks to Andru Luvisi and Ben Mehlman for the idea.)
2713
2714  Revision 580.75  2001/11/15 04:11:30  ajc
2715  * hack.doc: updated to reflect Cit86Net compatibility fields removed from the
2716    file format (since we dumbed down the gateway software)
2717  * ipc_c_tcp.c: removed SOCKS4 support.  Nobody uses it anymore.
2718  * ipc_c_tcp.c: fixed a bug which caused the client to fall back to defaultPort
2719    if a numeric port number was specified instead of a service name
2720
2721  Revision 580.74  2001/11/14 02:59:01  ajc
2722  * Network run frequency is now a site-definable setting
2723
2724  Revision 580.73  2001/11/13 22:05:23  ajc
2725  * Re-introduced the ability to enter IGnet mail into the system.
2726
2727  Revision 580.72  2001/10/29 22:59:22  ajc
2728  * Renamed "SuppMsgInfo" to "MetaData" because that's what it is
2729
2730  Revision 580.71  2001/10/29 16:39:54  ajc
2731  * Finished the migratenet utility (finally).
2732
2733  Revision 580.70  2001/10/28 05:18:51  ajc
2734  * migratenet almost finished
2735
2736  Revision 580.69  2001/10/26 04:26:45  ajc
2737  * more work on the net migrator
2738
2739  Revision 580.68  2001/10/23 03:37:33  ajc
2740  * Threw a few more lines of code into migratenet.c
2741
2742  Revision 580.67  2001/10/20 18:10:50  ajc
2743  * migratenet.c: added (not even close to being finished)
2744
2745  Revision 580.66  2001/10/17 21:07:20  nbryant
2746  further format string cleanups (for i686-linux type sizes)
2747
2748  Revision 580.65  2001/10/17 20:41:07  nbryant
2749   - declare *printf format specifiers if gcc detected
2750   - format string fixes (compiles w/o warnings on alpha osf/1)
2751
2752  Revision 580.64  2001/10/17 19:40:38  nbryant
2753  warning fixes and cleanups for 64-bit machines
2754
2755  Revision 580.63  2001/10/16 20:47:37  nbryant
2756  - backed out -export-dynamic, it doesn't do anything and i've found the real
2757  problem
2758  - remove declaration for make_message
2759
2760  Revision 580.62  2001/10/16 19:18:49  nbryant
2761  backed out that compiler detection change for Tru64. it's not incredibly
2762  important and results in broken autoconf macro expansions.
2763
2764  Revision 580.61  2001/10/16 18:36:33  nbryant
2765  reinstate -export-dynamic for citserver in case libtool decides to build
2766  static libraries (why?)
2767
2768  Revision 580.60  2001/10/16 18:21:53  nbryant
2769  add some explanatory text to bootstrap
2770
2771  Revision 580.59  2001/10/16 17:43:53  nbryant
2772   - further configure tweaks for FreeBSD and Tru64 Unix
2773   - updated to latest libtool configure fragment
2774   - there are two functions named make_message. (?) so declare them both
2775     static.
2776
2777  Revision 580.58  2001/10/16 01:48:55  nbryant
2778  - configury tweaks for a /usr/include/db3 goof and Digital/Tru64 Unix
2779  - #ifdef out inline on non-GCC compilers
2780
2781  Revision 580.57  2001/10/15 19:50:50  ajc
2782  * Fixed a bug in the loopzapper that was corrupting the use table saved copy.
2783  * Post notification in Aide> when the loopzapper catches a message.
2784
2785  Revision 580.56  2001/10/12 22:41:11  ajc
2786  * Wrote the rest of the use table code.  Finished except for a bug.
2787
2788  Revision 580.55  2001/10/10 18:35:12  ajc
2789  * Comments & cosmetics for previous update
2790
2791  Revision 580.54  2001/10/10 17:12:54  ajc
2792  * Bugfix for MSG0 command to properly handle multipart/alternative
2793
2794  Revision 580.53  2001/10/06 21:32:29  ajc
2795  * Finished the concurrency check for network polling.  (Now works both for
2796    polling and being polled.  Severe UUCP deja vu.)
2797
2798  Revision 580.52  2001/10/06 20:28:06  ajc
2799  * Began implementing some concurrency stuff for the networker
2800
2801  Revision 580.51  2001/10/06 19:51:47  ajc
2802  * Stripped the build of obsolete parts of the old networker no longer in use.
2803
2804  Revision 580.50  2001/10/03 20:05:50  ajc
2805  * serv_smtp.c: implement RFC2920 ESMTP "pipelining" extension on the server
2806    side.  (No changes required other than advertising the extension.)
2807
2808  Revision 580.49  2001/10/03 03:15:16  ajc
2809  * Implemented BOUNCE BOUNCE BOUNCE
2810
2811  Revision 580.48  2001/10/02 03:04:30  ajc
2812  * Allow non-Aides to terminate sessions belonging to them
2813
2814  Revision 580.47  2001/09/24 18:55:13  ajc
2815  * Completed migrating the "netpoll" utility into the serv_network module.
2816    Removed this utility.
2817
2818  Revision 580.46  2001/09/21 20:58:25  nbryant
2819  support different log_archive prototype in DB versions prior to 3.3
2820
2821  Revision 580.45  2001/09/20 04:17:10  ajc
2822  * Inbound network authentication working.  Fixed a bug in the split-horizon
2823    algorithm.  Still need to move the 'netpoll' command into the server.
2824
2825  Revision 580.44  2001/09/18 04:05:04  ajc
2826  * Added host/IP and port to node config (client side only)
2827
2828  Revision 580.43  2001/09/17 23:55:45  ajc
2829  * Support for IGnet routing (not tested)
2830
2831  Revision 580.42  2001/09/16 05:44:51  ajc
2832  * serv_smtp.c: instead of doubling delivery retry times unbounded, set a
2833    maximum retry time of SMTP_RETRY_MAX (currently set to 12 hours)
2834
2835  Revision 580.41  2001/09/09 16:19:29  error
2836  * Updated PAM configuration file citadel.pam for Red Hat 7.x.
2837
2838  Revision 580.40  2001/09/09 03:19:38  ajc
2839  * cdb_cull_logs() now removes log files as soon as the log_archive() function
2840    says it's ok to do so.
2841
2842  Revision 580.39  2001/09/08 18:58:38  ajc
2843  * More changes to the new networker.  Added client command for room sharing.
2844
2845  Revision 580.38  2001/09/07 04:05:27  ajc
2846  * You guessed it: still more code for the new networker.
2847
2848  Revision 580.37  2001/09/06 05:47:29  nbryant
2849  check for /usr/include/db3 (for RedHat 6.2; others?)
2850
2851  Revision 580.36  2001/09/06 05:23:14  nbryant
2852  #include fix for glibc 2.1.3
2853
2854  Revision 580.35  2001/09/06 04:02:34  ajc
2855  * A few more updates to the networker
2856
2857  Revision 580.34  2001/09/06 03:32:41  nbryant
2858  build fix for sparc-sun-solaris2.8; i think the dependencies should be
2859  set up properly for all platforms now.
2860
2861  Revision 580.33  2001/09/06 02:55:27  nbryant
2862  build fix for Linux
2863
2864  Revision 580.32  2001/09/06 02:49:22  ajc
2865  * Fixed paste-post mode (<.E>nter <A>scii) to append instead of replace when
2866    the user hits <C>ontinue (bug reported by Stu Mark)
2867
2868  Revision 580.31  2001/09/06 01:26:39  nbryant
2869   - port to Cygwin (DLL support, etc.)
2870   - don't build SMTP module if there's no resolver library (eg on Windows)
2871
2872  Revision 580.30  2001/09/06 00:54:01  nbryant
2873  updated to libtool 1.4.1 and automake 1.5
2874
2875  Revision 580.29  2001/08/29 02:51:25  ajc
2876  * More work on the new networker.
2877
2878  Revision 580.28  2001/08/25 05:04:57  ajc
2879  * Worked a little more on the in-server replacement for netproc
2880
2881  Revision 580.27  2001/08/22 04:18:17  ajc
2882  * Realized that there was lots of similarly broken code in
2883    process_rfc822_addr().  Wrote two new utility functions in tools.c
2884    stripout() and stripallbut() and used them where appropriate.  This should
2885    take care of all possible infinite loops.
2886
2887  Revision 580.26  2001/08/22 03:43:11  ajc
2888  * internet_addressing.c: fixed a bug in process_rfc822_addr() that caused the
2889    server to jump into an endless loop when an e-mail address contained
2890    unbalanced angle brackets.
2891
2892  Revision 580.25  2001/08/15 04:26:02  ajc
2893  * Added split horizon and delete-after-spool to the new networker
2894
2895  Revision 580.24  2001/08/14 02:41:57  ajc
2896  * Began the migration of netproc into part of the serv_network.c module instead
2897    of a standalone program.
2898
2899  Revision 580.23  2001/08/11 22:35:40  nbryant
2900  updated citadel-with-berkeley-db.txt.
2901   - updated build instructions
2902   - improved backup procedures to be safer and more space-efficient.
2903
2904  Revision 580.22  2001/08/11 19:18:41  ajc
2905  * Realized that I am stupid and started implementing server commands to load
2906    and save network configurations, when I had already lovingly implemented the
2907    CONF GETSYS and CONF PUTSYS commands to store arbitrary configuration sets
2908    in the Local System Configuration> room.  Ripped the newer crap out.
2909  * Implemented a skeleton of <.A>ide <S>ysconfig <N>etwork on the client side.
2910
2911  Revision 580.21  2001/08/11 03:51:56  ajc
2912  * Removed the idle timer from the client.  Dialup is dead.
2913
2914  Revision 580.20  2001/08/06 21:33:29  nbryant
2915  made the client fall back on port 504 if there's no /etc/services entry
2916
2917  Revision 580.19  2001/08/05 23:54:14  ajc
2918  * prep for new network node infrastructure
2919
2920  Revision 580.18  2001/08/03 16:53:21  ajc
2921  * Added some more "break" statements to the main switch..case loop in
2922    citadel.c where they were needed.
2923
2924  Revision 580.17  2001/08/03 16:43:53  ajc
2925  * database_sleepycat.c: when running txn_checkpoint(), handle DB_INCOMPLETE
2926    return code as a warning instead of an error worthy of aborting the server.
2927    See http://www.sleepycat.com/docs/api_c/txn_checkpoint.html for explanation.
2928
2929  Revision 580.16  2001/07/30 03:46:14  nbryant
2930  made ForEachUser use a read-only cursor, too. there is now only one piece of
2931  code in Citadel proper (not the database driver) that needs transactions.
2932  that's check_ref_counts; in other words it's the only thing standing in the way
2933  of a clean implementation of retryable transactions.
2934
2935  Revision 580.15  2001/07/29 22:24:04  nbryant
2936   - added a new function to the database interface, cdb_close_cursor().  always
2937  call this when you're finished with a traversal but didn't bother reading all
2938  the way to the end.
2939
2940   - removed several cdb_begin_transaction()/cdb_end_transaction() calls that are
2941  no longer needed because of the read-only cursor support.
2942
2943  Revision 580.14  2001/07/29 20:56:09  nbryant
2944  change ForEachRoom to use read-only cursors by default. it can be overridden to
2945  still use read/write cursors by doing:
2946
2947   cdb_begin_transaction();
2948   ForEachRoom(...);
2949   cdb_end_transaction();
2950
2951  the only place I found where it appears necessary to do so is check_ref_counts,
2952  so this checkin affects that function too.
2953
2954  Revision 580.13  2001/07/29 20:06:33  nbryant
2955  generate symlinks to .libs in modules directory
2956
2957  Revision 580.12  2001/07/28 00:02:50  nbryant
2958  implemented read-only cursors. one of the advantages to these is that
2959  transactions can be avoided; a cursor operation that occurs within a
2960  transaction will often acquire a read lock on every single database page.  in
2961  general, the Sleepycat documentation recommends avoiding transaction-protected
2962  read-only operations where practical. read/modify/write operations can still
2963  be transaction protected, of course.
2964
2965  to use a read-only cursor, call cdb_rewind without a previous call to
2966  cdb_begin_transaction. the DB driver will notice this and prevent the current
2967  thread from modifying data or starting a transaction until the cursor is
2968  closed.
2969
2970  Revision 580.11  2001/07/27 20:45:44  nbryant
2971  libtool has matured a lot since the last time i looked at it (years ago)
2972  so we now use it to handle the details of building shared libraries and
2973  the linker flags for the main executable.
2974
2975  in theory this should bring a lot more portability to the dynloader
2976  subsystem and enable us to do things like transparently detect GNU vs Sun
2977  linkers on solaris, for example
2978
2979  Revision 580.10  2001/07/27 03:29:04  nbryant
2980  missed one thing in the autoconf move
2981
2982  Revision 580.9  2001/07/27 02:57:43  nbryant
2983  support one cursor per database rather than one global cursor
2984
2985  Revision 580.8  2001/07/27 01:32:07  nbryant
2986  remove the automatic transaction demarcation on singleton read operations
2987
2988  Revision 580.7  2001/07/26 21:43:46  nbryant
2989   - move to autoconf 2.52
2990   - random warning fix
2991   - check for db 3.3
2992
2993  Revision 580.6  2001/07/24 13:17:54  ajc
2994  * New UI for mailing list setup
2995  * rooms.c: code cleanup
2996  * docs update
2997
2998  Revision 580.5  2001/07/20 23:48:23  nbryant
2999  fix build on solaris, check default install location for db 3.2, and silence
3000  gcc 3.0
3001
3002  Revision 580.4  2001/07/16 14:24:30  ajc
3003  * Silly cosmetic change to keep the wholist ordered by ascending session number
3004
3005  Revision 580.3  2001/07/13 00:01:36  ajc
3006  * Shuffled around some of the housekeeping loop code
3007
3008  Revision 580.2  2001/07/11 17:01:10  ajc
3009  * database_sleepycat.c: small changes to log messages
3010
3011  Revision 580.1  2001/07/11 04:35:40  nbryant
3012  moved dret initialization in cdb_fetch, just in case
3013
3014  Revision 580.0  2001/07/03 03:07:06  ajc
3015  * THIS IS 5.80
3016
3017  Revision 573.143  2001/07/03 03:06:50  ajc
3018  * Last minute doco update for 5.80
3019
3020  Revision 573.142  2001/07/01 15:44:32  nbryant
3021  configure.in: check for Berkeley DB first.
3022
3023  Revision 573.141  2001/06/27 23:34:30  ajc
3024  * Added some verbage to messages/roomaccess to placate a user who keeps
3025    bitching about privacy policy.
3026
3027  Revision 573.140  2001/06/19 03:41:04  ajc
3028  * Ooops... last_cull needs to be declared static
3029
3030  Revision 573.139  2001/06/19 03:33:19  ajc
3031  * imap_fetch.c: download MIME parts without decoding first.  We like that.
3032  * database_sleepycat.c: added automatic culling of log files which have not
3033    been written to in five days.
3034
3035  Revision 573.138  2001/06/17 19:42:23  nbryant
3036  fix all the <time.h> vs. <sys/time.h> issues, hopefully
3037
3038  Revision 573.137  2001/06/07 03:28:37  ajc
3039  * More tweaks to the MIME parser
3040
3041  Revision 573.136  2001/06/06 15:44:37  ajc
3042  * msgbase.c: output extra newline at end of RFC822 message if necessary to
3043    ensure that 000 termination string appears on a line by itself.
3044
3045  Revision 573.135  2001/06/06 04:22:25  ajc
3046  * Moved memreadline() to tools.c
3047  * internet_addressing.c: fixed conversion of fields to (hopefully) never get
3048    into an active loop when encountering badly formed headers
3049
3050  Revision 573.134  2001/05/27 05:23:03  ajc
3051  * Added a "no new messages" response in the client, displayed when a read
3052    command turns up a zero message count.
3053
3054  Revision 573.133  2001/05/18 20:12:09  ajc
3055  * Fixed bug in mime_parser.c that caused parts to be dropped when the last
3056    boundary was the very last line of the message.
3057  * serv_smtp.c: toned down some of the command response verbage.
3058
3059  Revision 573.132  2001/04/28 04:42:55  ajc
3060  * Updated some of the docs.  Bumped version number to 5.80 in anticipation
3061    of going into a release cycle soon.
3062
3063  Revision 573.130  2001/04/26 03:31:00  ajc
3064  * Finished the implementation of per-message seen/unseen logic, both in the
3065    server proper and in IMAP.  Citadel protocol uses new "seen" command.
3066
3067  Revision 573.129  2001/04/21 04:55:51  ajc
3068  * Began implementation of per-message seen/unseen attribute
3069
3070  Revision 573.128  2001/04/20 03:39:54  ajc
3071  * IMAP LIST/LSUB: made it case insensitive.  Also minor IMAP code cleanup.
3072
3073  Revision 573.127  2001/04/17 00:35:19  cough
3074  * Modified rooms.c in the client so that it would allow inviting into
3075    public rooms.  This is important since there is now a V_LOCKOUT
3076    flag which prevents users who have been kicked from rejoining
3077    a room unless/until you invite them back in.
3078
3079  Revision 573.126  2001/04/16 19:21:14  cough
3080  * Fixed bug in room_ops.c that wasn't allowing aides to goto passworded
3081    rooms without knowing the password.
3082
3083  Revision 573.125  2001/04/14 04:26:44  ajc
3084  * Fixed an unterminated string bug in IMAP APPEND.  Storing messages should
3085    work now.
3086
3087  Revision 573.124  2001/04/10 01:04:10  ajc
3088  * Finished coding IMAP APPEND.  It works, but there's a bug in it somewhere
3089    that is corrupting the memory.
3090
3091  Revision 573.123  2001/04/03 00:47:23  ajc
3092  * Began implementing IMAP APPEND
3093
3094  Revision 573.122  2001/04/01 22:05:44  cough
3095  * *Actually* fixed a botched ChangeLog entry.
3096
3097  Revision 573.121  2001/04/01 22:04:28  cough
3098  * Fixed a botched ChangeLog entry.
3099
3100  Revision 573.120  2001/04/01 22:03:10  cough
3101  * Changed two fclose()s to pclose()s.
3102
3103  Revision 573.119  2001/03/25 11:52:36  error
3104  * serv_pop3.c: Fixed APOP. Now logs in properly. Also cleaned up some non-
3105    RFC-compliant error messages.
3106
3107  Revision 573.118  2001/03/21 05:47:49  ajc
3108  * Added the new IMAP mailbox string compare submitted by Daniel Malament.
3109
3110  Revision 573.117  2001/03/20 01:33:55  ajc
3111  * Added the (\NoInferiors) tag to all rooms listed in IMAP.  This made Mozilla
3112    behave very nicely.
3113
3114  Revision 573.116  2001/03/13 17:19:33  ajc
3115  * support (BODY[HEADER.FIELDS(BLAH BLAH BLAH)]) and HEADER.FIELDS.NOT
3116
3117  Revision 573.115  2001/03/12 01:27:42  ajc
3118  * Implemented SUBSCRIBE and UNSUBSCRIBE commands
3119
3120  Revision 573.114  2001/03/11 23:00:29  ajc
3121  * Mega sexy hack to deliver express messages THROUGH IMAP!  uber coolness!!
3122
3123  Revision 573.113  2001/03/11 22:09:20  ajc
3124  * Replaced the "citlogin" binary wrapper with the "loginwrapper.sh" script.
3125
3126  Revision 573.112  2001/03/11 20:06:53  ajc
3127  * Fixed bug that created incorrect roomnames when sending pages
3128
3129  Revision 573.111  2001/03/11 19:23:32  ajc
3130  * IMAP DELETE command ... also split up access control for room delete cmds
3131
3132  Revision 573.110  2001/03/10 17:29:07  ajc
3133  * Implement proper access control for deleting messages from IMAP
3134
3135  Revision 573.109  2001/03/07 04:02:27  ajc
3136  * Fixed some small IMAP bugs
3137
3138  Revision 573.108  2001/03/06 04:44:00  ajc
3139  * Probable completion of STATUS, COPY, STORE, and EXPUNGE commands in IMAP
3140
3141  Revision 573.107  2001/03/06 03:31:58  nbryant
3142  database-related cleanups and paranoia tests;
3143  fixed a transaction-leak/deadlock problem in cdb_delete;
3144  solved the SIGPIPE mystery (GDB stops on SIGPIPE is all it was)
3145
3146  Revision 573.106  2001/03/05 04:59:31  ajc
3147  * IMAP COPY
3148
3149  Revision 573.105  2001/03/04 23:49:41  ajc
3150  * IMAP EXPUNGE responses -should- be correct now
3151
3152  Revision 573.94  2001/02/20 00:02:56  ajc
3153  * IMAP: implemented the STATUS command (sort of).
3154
3155  Revision 573.93  2001/02/19 22:24:41  ajc
3156  * IMAP server: added untagged, unsolicited server messages for newly arrived
3157    messages, and messages expunged by another session.
3158
3159  Revision 573.92  2001/02/17 05:53:35  ajc
3160  * Repaired the creation of page log rooms in the wrong namespace when the
3161    recipient does not yet have his/her log room created.
3162  * Rewrite "EXPI messages" to run in two passes: one to gather messages to
3163    purge and the next to delete them.  Works better in transactionland.
3164
3165  Revision 573.91  2001/02/14 08:11:27  error
3166  * citadel.rc: added RCS ID (it's about time!)
3167
3168  Revision 573.90  2001/02/14 04:23:54  ajc
3169  * Fixed POP3 server responses ending in \n instead of \r\n as they should be.
3170    This was causing some clients (such as Pine) to lock up.
3171
3172  Revision 573.89  2001/02/13 04:06:14  ajc
3173  * Worked out the remaining bugs in IMAP FETCH for the BODYSTRUCTURE and
3174    BODY[n] data items.  I think.  So much protocol crud, so little time...
3175
3176  Revision 573.88  2001/02/13 01:18:44  ajc
3177  * imap fetch
3178
3179  Revision 573.87  2001/02/12 04:31:34  ajc
3180  * sysdep.c ig_tcp_server() - use IPPROTO_TCP instead of getprotobyname()
3181
3182  Revision 573.86  2001/02/08 04:45:58  ajc
3183  * Fixed namespace problems resulting from the automatic namespece prefixing
3184    added to create_room().  Also added the ability to specify "create a mailbox
3185    but I've already supplied the namespace prefix" for situations where the
3186    namespace isn't that of the logged in user.
3187  * Made the POP3 server response messages slightly less humorous
3188
3189  Revision 573.85  2001/02/06 04:44:12  ajc
3190  * Added a floor listing (complete with \NoSelect flag) to LIST and LSUB
3191
3192  Revision 573.84  2001/02/06 02:09:38  ajc
3193  * citadel.rc: changed the default for local_screen_dimensions to 1, since
3194    Internet users now outnumber dialup users 100 to 0.
3195  * room_ops.c: added a really_create option to create_room().  Also moved the
3196    generation of personal namespace into that function.  MODULE OWNERS PLEASE
3197    CHECK YOUR CALLS TO AVOID MULTIPLE NAMESPACING!!
3198  * room_ops.c: fixed a bug in cgetfloor() that left bad pointers around
3199  * serv_imap.c: finished the CREATE command (finally)
3200
3201  Revision 573.83  2001/02/05 05:20:22  ajc
3202  * Made some changes to functions which translate between Citadel room names
3203    and IMAP folder names.  They're still buggy.
3204
3205  Revision 573.82  2001/02/04 23:17:28  ajc
3206  * Implemented the IMAP CREATE command
3207
3208  Revision 573.81  2001/02/04 02:40:07  ajc
3209  * more imap.  imap sucks.  die crispin die.
3210
3211  Revision 573.80  2001/02/03 10:02:12  error
3212  * serv_ical.c: Verify that objects posted to My Calendar> are of type
3213    text/x-calendar or text/calendar; abort saving if not
3214
3215  Revision 573.79  2001/02/03 09:30:46  error
3216  * serv_ical.c: now creates a My Calendar> personal room, sets attributes
3217
3218  Revision 573.78  2001/02/03 08:21:00  error
3219  * serv_ical.c and serv_ical.h added; skeleton code for now
3220
3221  Revision 573.77  2001/02/02 20:18:18  ajc
3222  * Changed the error message in cdb_delete() to actually *say* cdb_delete
3223    instead of cdb_store.  Useful to know which function failed...
3224
3225  Revision 573.76  2001/02/01 04:08:03  ajc
3226  * IMAP minor change to mailbox name output
3227  * Increased size of buffer in lprintf()
3228
3229  Revision 573.75  2001/01/28 09:50:02  error
3230  * sysdep.c: lprintf() now generates timestamps
3231
3232  Revision 573.74  2001/01/28 07:35:04  error
3233   * serv_bio.c: RBIO now also returns stats about a user, see session.txt
3234
3235  Revision 573.73  2001/01/16 04:03:13  ajc
3236  * yeesh ... more on the IMAP BODYSTRUCTURE
3237
3238  Revision 573.72  2001/01/16 01:51:12  ajc
3239  * imap bodystructure
3240
3241  Revision 573.71  2001/01/16 00:46:40  ajc
3242  * Changed the MIME parser API *again* because we now need the ability to
3243    supply callback functions to be executed before and/or after parsing a
3244    multipart.  (Need this for IMAP BODYSTRUCTURE output.  Crispin sucks.)
3245
3246  Revision 573.70  2001/01/15 23:59:26  ajc
3247  * user_ops.c: reject NULL password in CtdlTryPassword() instead of crashing
3248
3249  Revision 573.68  2001/01/15 20:34:04  ajc
3250  * "Path:" removed for now because it confuses brain-dead Microsoft shitware
3251    into thinking that mail messages are newsgroup messages instead.  When we
3252    add NNTP support back into Citadel we'll have to add code to only output
3253    this field when appropriate.
3254
3255  Revision 573.67  2001/01/15 16:30:31  ajc
3256  * temporary implementation of 901 asynchronous express messages
3257
3258  Revision 573.66  2001/01/14 14:55:39  ajc
3259  * Changed the format of <.W>holist <L>ong
3260
3261  Revision 573.65  2001/01/13 06:40:26  nbryant
3262  merged remaining changes from TRANSACTIONS (using cvs update -j TRANSACTIONS)
3263  which should now be considered closed.
3264
3265  Revision 573.64  2001/01/13 06:12:15  ajc
3266  * Added the ASYN command
3267
3268  Revision 573.63  2001/01/12 22:05:46  ajc
3269  * Fixed a bug that caused bogus wholist lines to be displayed when a non-aide
3270    reads a list containing stealth mode sessions.
3271
3272  Revision 573.62  2001/01/09 05:39:45  ajc
3273  * Merged in code from the TRANSACTIONS branch for testing.
3274
3275  Revision 573.61  2000/12/30 06:17:17  ajc
3276  * Still more work on IMAP.  Damn this is tedious.
3277
3278  Revision 573.60  2000/12/30 04:55:05  ajc
3279  * more buffer size stuff
3280
3281  Revision 573.59  2000/12/27 20:19:51  ajc
3282  * The size constant "256" which shows up everywhere as a buffer size has now
3283    been changed to SIZ.  And, SIZ has been defined now as 1024, not 256, because
3284    we need 1024 byte buffers for most Internet protocols.
3285
3286  Revision 573.58  2000/12/27 05:09:58  ajc
3287  * Added a skeleton IMAP "SEARCH" command (based on the FETCH logic)
3288
3289  Revision 573.57  2000/12/26 03:46:50  ajc
3290  * More IMAP tweaks
3291
3292  Revision 573.56  2000/12/25 22:50:43  ajc
3293  * Added an API function to extract and unfold specific RFC822 fields.
3294  * imap-->fetch-->envelope-->in-reply-to now works
3295  * More robust checking and reporting of temp file errors in the client
3296
3297  Revision 573.55  2000/12/25 20:43:24  ajc
3298  * imap_fetch.c: added support for fetch-->envelope-->from
3299
3300  Revision 573.54  2000/12/20 04:09:24  ajc
3301  * A few memory handling fixes to netproc.
3302
3303  Revision 573.53  2000/12/20 01:57:37  ajc
3304  * netproc.c: added bounds check to fpgetfield()
3305
3306  Revision 573.52  2000/12/19 20:41:55  ajc
3307  * Fixed generation of unique file names for network uploads etc.
3308
3309  Revision 573.51.2.11  2000/12/26 05:30:55  nbryant
3310  remove extraneous transaction around dynamic module initializations. this will
3311  fix the crash on database creation.
3312
3313  Revision 573.51.2.10  2000/12/24 23:00:58  nbryant
3314  clean: also remove parsedate.c
3315
3316  Revision 573.51.2.9  2000/12/20 01:38:42  nbryant
3317  require transactional cursors
3318
3319  Revision 573.51.2.8  2000/12/20 00:30:01  nbryant
3320  release any stale db handles at the end of a server command
3321  (unfinished transactions will be aborted to annoy lazy programmers)
3322
3323  Revision 573.51.2.7  2000/12/19 06:18:27  nbryant
3324  set sched_yield as sleepycat's yield function. this should improve locking
3325  performance.
3326
3327  Revision 573.51.2.6  2000/12/19 02:22:29  nbryant
3328  added automatic transaction start/end on cdb_fetch, cdb_delete, and cdb_store
3329
3330  Revision 573.51.2.5  2000/12/18 03:51:13  nbryant
3331  ditto S_USER_TRANS, S_CALLLOG, and S_HOUSEKEEPING, which are no longer used at
3332  all
3333
3334  Revision 573.51.2.4  2000/12/18 02:49:17  nbryant
3335  removed all references to S_MSGMAIN critical section; it wasn't really needed.
3336  this should make things significantly more scaleable.
3337
3338  Revision 573.51.2.3  2000/12/17 22:12:48  nbryant
3339  reworked shutdown sequence to wait for worker threads to terminate before
3340  checkpointing and closing databases. it is no longer safe to call
3341  master_cleanup() directly to force a shutdown; instead, just set
3342  time_to_die to a nonzero value
3343
3344  Revision 573.51.2.2  2000/12/17 05:06:09  nbryant
3345  added deadlock detection and cleaned up messages
3346
3347  Revision 573.51.2.1  2000/12/16 21:06:59  nbryant
3348  created TRANSACTIONS branch
3349  track cursor and transaction id's in thread-specific data
3350
3351  Revision 573.51  2000/12/14 18:36:34  ajc
3352  * Fixed the "users not in chat" wholist display
3353
3354  Revision 573.50  2000/12/12 18:06:46  ajc
3355  * Removed the transaction stuff (but left the log in).  It wasn't working.
3356
3357  Revision 573.49  2000/12/12 06:19:55  ajc
3358  * Stabilize, dammit!!
3359
3360  Revision 573.48  2000/12/12 04:20:03  ajc
3361  * Made the transaction open/close a global thing, in a frantic attempt to get
3362    Uncensored to stop crashing.  More fixes on the way...
3363
3364  Revision 573.47  2000/12/11 06:08:41  ajc
3365  * Removed the housekeeper thread, moved terminate_idle_sessions() out to a
3366    timer event, and check_sched_shutdown() to the end of the worker thread
3367    loop.  Seems to have improved reliability (but why?)
3368
3369  Revision 573.46  2000/12/11 03:22:11  ajc
3370  * Added server-side REQT command to issue client termination requests
3371
3372  Revision 573.45  2000/12/11 02:19:26  ajc
3373  * Client now honors EM_GO_AWAY flag, used by the server to request that a
3374    client log off.  (The server doesn't support sending that flag yet, though)
3375
3376  Revision 573.44  2000/12/09 06:20:06  ajc
3377  * A few final touches to the Sleepycat DB back-end
3378
3379  Revision 573.43  2000/12/08 17:06:33  ajc
3380  * Wrap txn_begin and txn_end in S_DATABASE mutex
3381
3382  Revision 573.42  2000/12/07 20:21:39  ajc
3383  * begin/end transaction in master_startup()
3384
3385  Revision 573.41  2000/12/07 16:59:02  nbryant
3386  added --with-db and --with-gdbm options to configure
3387
3388  Revision 573.40  2000/12/07 04:50:33  ajc
3389  * Wrap housekeeper and timer events in transaction open/close functions
3390  * Checkpoint the DB as an EVT_TIMER event instead of after each session
3391    (runs each minute, but actually limited by the parameters of the function)
3392
3393  Revision 573.39  2000/12/06 04:44:36  ajc
3394  * Changed netproc to keep the use table in a flat file instead of a database
3395
3396  Revision 573.38  2000/12/05 05:32:58  ajc
3397  * Added support for non-USA country identities in vCard and registration
3398  * User edit now asks whether it should prompt to change the password
3399
3400  Revision 573.37  2000/12/03 04:12:21  ajc
3401  * Finished (mostly) the Sleepycat DB backend ... added transaction logging
3402
3403  Revision 573.36  2000/11/30 03:23:17  ajc
3404  * Got the Sleepycat DB back end working, by opening the databases in a non
3405    shared, non threaded mode, and using Citadel's locking to serialize access.
3406
3407  Revision 573.35  2000/11/29 05:00:02  ajc
3408  * I think the db stuff is ok, but my db library is fux0red...
3409
3410  Revision 573.34  2000/11/27 14:12:09  error
3411  * commands.c: fixups to print_express() to make external command not print
3412    extraneous stuff to the terminal and make the displayed message consistent
3413
3414  Revision 573.33  2000/11/27 10:41:14  error
3415  * print_express(): now uses GEXP instead of old PEXP; displays timestamps
3416
3417  Revision 573.32  2000/11/27 10:29:59  error
3418  * serv_chat.c: fix send_express_message() to include timestamps
3419
3420  Revision 573.31  2000/11/27 03:44:27  ajc
3421  * Initial checkin of database_sleepycat.c (doesn't work yet)
3422
3423  Revision 573.30  2000/11/26 05:24:22  ajc
3424  * msgbase.c: Added new API function CtdlOutputPreLoadedMsg(), and
3425    re-implemented the existing CtdlOutputMsg() as a wrapper around it.
3426  * imap_fetch.c: used the above function to do all output pre-loaded
3427
3428  Revision 573.29  2000/11/25 09:36:18  error
3429  * Added a bit of detail to syslog entries; now shows session id attached to
3430    client, hostname, and username, and time the session ended.
3431
3432  Revision 573.28  2000/11/25 06:17:06  ajc
3433  * Minor IMAP tweaks.  It still doesn't work.  :(
3434
3435  Revision 573.27  2000/11/23 07:22:21  error
3436  * citadel.spec: update version number
3437
3438  Revision 573.26  2000/11/21 11:12:56  error
3439   * domain.h: changed the HP/UX compatibility code to use defines from
3440     typesize.h for integers of specific bit widths (needed for Solaris, etc)
3441
3442  Revision 573.25  2000/11/12 04:20:49  ajc
3443  * Optimized server side input of message text
3444
3445  Revision 573.24  2000/11/10 03:55:06  ajc
3446  * Ford's Fix for Faster Functionality (save position during reply)
3447
3448  Revision 573.23  2000/11/09 04:48:50  ajc
3449  * tools.c: striplt() strips all whitespace, not just spaces
3450
3451  Revision 573.22  2000/11/07 20:47:21  ajc
3452  * imap_fetch.c: added a skeleton "ENVELOPE" fetch.  Currently sends NIL's.
3453
3454  Revision 573.21  2000/11/07 15:54:53  ajc
3455  * xx FETCH n:n BODY[pn.MIME] now works
3456
3457  Revision 573.20  2000/11/06 05:10:01  ajc
3458  * Changed the mime_parser() API (again) to allow "don't decode" mode
3459
3460  Revision 573.19  2000/10/29 18:11:07  ajc
3461  * Start numbering top-level MIME parts as 1, 2... not 1.1, 1.2...
3462
3463  Revision 573.18  2000/10/28 14:14:19  error
3464  * msgbase.c: eliminated most gotos; a single goto in alias() remains because
3465    it actually makes sense to do it that way...
3466
3467  Revision 573.17  2000/10/25 21:37:09  ajc
3468  * Implemented the AUTHENTICATE LOGIN command in IMAP
3469
3470  Revision 573.16  2000/10/25 19:20:37  ajc
3471  * FETCH now works for ranges *and* sets, and with sequence numbers *and* UID's
3472
3473  Revision 573.15  2000/10/24 20:39:59  ajc
3474  * Added RFC822, RFC822.HEADER, RFC822.SIZE, RFC822.TEXT fetch keys to IMAP
3475
3476  Revision 573.14  2000/10/23 20:26:51  error
3477  * War on goto:  rewrote a few easy functions to eliminate unnecessary gotos
3478
3479  Revision 573.13  2000/10/11 23:03:44  error
3480  * utilsmenu: obey $PAGER environment var, if any.  Default to more if neither
3481    $PAGER nor less is available.
3482
3483  Revision 573.12  2000/10/11 22:55:25  error
3484  * citadel.c: when ansi_color=user, enable color at login, so Lobby> posts
3485    displayed at login are in color
3486
3487  Revision 573.11  2000/10/11 22:47:51  error
3488  * domain.c: getmx() returns hostname as MX if no MX records found a la RFC 974
3489
3490  Revision 573.10  2000/10/10 19:18:12  ajc
3491  * Added support of macros ALL, BODY, FAST, and FULL to the IMAP FETCH command
3492
3493  Revision 573.9  2000/10/06 03:31:55  ajc
3494  * Mark Crispin is a fscking idiot.  IMAP is a convoluted mess.
3495
3496  Revision 573.8  2000/10/05 22:23:16  ajc
3497  * Slowly and painfully writing IMAP support
3498
3499  Revision 573.7  2000/10/04 22:39:06  ajc
3500  * Added skeleton versions of the LIST and LSUB commands to the imap server
3501
3502  Revision 573.6  2000/10/04 17:48:21  ajc
3503  * Allow Aides to zap rooms (site configurable setting)
3504
3505  Revision 573.5  2000/10/03 01:45:00  ajc
3506  * Changed the <.A>ide <S>ysconfig <G>eneral command to explicitly allow the
3507    global page log room to be disabled (answer "no" to set the log room to a
3508    null string)
3509
3510  Revision 573.4  2000/09/28 10:27:38  error
3511  * commands.c: changed sttybbs() to support HP/UX termios VMIN and VTIME
3512
3513  Revision 573.3  2000/09/24 22:01:45  ajc
3514  * ipc_c_tcp.c: don't hardcode BBSDIR path for unix domain sockets
3515
3516  Revision 573.2  2000/09/21 04:16:44  ajc
3517  * Fixed logged_in_response() so it only displays responses during Citadel
3518    protocol sessions.  (This was affecting POP etc.)
3519
3520  Revision 573.1  2000/09/11 22:05:04  ajc
3521  * citadel.c: accept -h <host> and -p arguments, so citadel can be called
3522    directly by telnetd, bypassing /bin/login.  It works, but not recommended at
3523    this time because it has to run as root.
3524
3525  Revision 573.0  2000/09/05 18:35:22  ajc
3526  * Tagged everything for version 5.73 release
3527
3528  Revision 572.39  2000/09/04 03:59:15  ajc
3529  IO's changes:
3530  ----------------------------
3531  revision 572.4
3532  date: 2000/09/03 06:36:01;  author: error;  state: Exp;  lines: +5 -1
3533  Added HP/UX linker flag for dynamic modules to work
3534  ----------------------------
3535  revision 572.3
3536  date: 2000/09/01 06:50:00;  author: error;  state: Exp;  lines: +8 -1
3537  Changed to use integer macros from typesize.h for specific bit widths
3538  ----------------------------
3539
3540  Revision 572.38  2000/09/01 20:17:08  ajc
3541  * msgbase.c: cmd_opna() - increase desired_section buffer from 64 to 256 bytes
3542
3543  Revision 572.37  2000/09/01 17:31:47  ajc
3544  * Fixed oopseth in control.c that might call fileno(NULL)
3545
3546  Revision 572.36  2000/09/01 13:37:16  ajc
3547  * control.c: chown citadel.control to bbsuid when opening/creating as root
3548
3549  Revision 572.35  2000/09/01 03:55:44  ajc
3550  * Fixed a few more references to the deprecated uncnsrd.mt-kisco.ny.us name
3551
3552  Revision 572.34  2000/09/01 03:43:09  ajc
3553  * Added 'author' command-line arg to aidepost.  Closes enhancement request
3554    #71 on bugzilla.
3555  * Put the default SMTP and POP3 ports back to 25 and 110.  Now that the
3556    unix domain socket bug is fixed, it's ok if these binds fail.
3557
3558  Revision 572.33  2000/08/31 23:02:15  ajc
3559  * ig_tcp_server() and ig_uds_server()  -  check to make sure queue length is
3560    always at least 5.  Zero-length queues can cause connection lockups.
3561
3562  Revision 572.32  2000/08/31 21:32:44  ajc
3563  * Still trying to fix a socket connect bug
3564
3565  Revision 572.31  2000/08/31 16:37:08  ajc
3566  * docs/import-export.txt: added.
3567
3568  Revision 572.30  2000/08/28 19:51:51  ajc
3569  * messages.c: cosmetic cleanup (coding convention and comments)
3570
3571  Revision 572.29  2000/08/26 20:23:18  ajc
3572  * Finished up the back end code for mailing list sends.  Sends now work!
3573
3574  Revision 572.28  2000/08/24 02:48:18  ajc
3575  * Merged in IO ERROR's diffs to make Citadel work with HP/UX
3576
3577  Revision 572.27  2000/08/22 02:31:47  ajc
3578  * nonce (for APOP-style auth) is now generated when a context is created
3579    instead of during protocol greeting functions.
3580  * Moved Citadel protocol nonce output from greeting to INFO
3581
3582  Revision 572.26  2000/08/18 21:09:36  ajc
3583  * Added a little more mailing list code to serv_network.c
3584
3585  Revision 572.25  2000/08/10 04:36:25  ajc
3586  * Fixed a bug in keyboard polling (in commands.c) which was causing the
3587    client protocol to get out of sync in certain conditions.
3588
3589  Revision 572.24  2000/08/10 02:42:13  ajc
3590  * Changed all the "200 ok" responses to more descriptive strings
3591  * Added a *temporary* protocol sync check.  Remove this!
3592
3593  Revision 572.23  2000/08/09 17:14:34  ajc
3594  msgbase.c: fixed a bug in
3595             remove_any_whitespace_to_the_left_or_right_of_at_symbol() that was
3596             causing the <R>eply function to fail on names with whitespace in
3597             certain parts of the string.  This closes Bug #56.
3598
3599  Revision 572.22  2000/08/05 04:24:00  ajc
3600  * Added [idle] to client wholist display for sessions idle >15 minutes
3601  * Added a generic "void *userdata" field to CtdlForEachMessage()
3602  * More prep for mailing list handling in the server
3603
3604  Revision 572.21  2000/07/30 04:36:12  ajc
3605  * Set up the SNET (Send NETwork config) and GNET (Get NETwork config) commands
3606    for the network overhaul.
3607
3608  Revision 572.20  2000/07/29 05:29:19  ajc
3609  * Changed the format of RWHO output to provide non-masqueraded user/room/host
3610    names (to Aides only) as additional fields rather than an extra line of
3611    output.
3612  * Changed the client to display new RWHO fields, in the "long" wholist only.
3613  * Default SMTP and POP ports are now -1, not 25/110.  These services must now
3614    be activated manually.
3615
3616  Revision 572.19  2000/07/24 00:39:13  ajc
3617  * Fixed a path problem when calling netmailer from mailinglist.c
3618
3619  Revision 572.18  2000/07/22 03:44:17  ajc
3620  * Prepared infrastructure for the networker rewrite
3621
3622  Revision 572.17  2000/07/17 02:38:08  ajc
3623  * Completed serv_vandelay.c (importer/exporter module)
3624  * sendcommand.c: fix behavior of SEND_LISTING mode
3625  * sysdep.c: client_gets() fill buffer with "000" terminator when returning -1
3626
3627  Revision 572.16  2000/07/14 03:06:55  ajc
3628  * Added .ATN (DOWN) and .ATS (SCDN 1) commands to the client
3629
3630  Revision 572.15  2000/07/10 23:36:08  ajc
3631  * Another attempt to fix the crashy crashy bug in serv_vcard
3632  * Did more work on the Art Vandelay module
3633  * Replaced all instances of sprintf(tempfile, tmpnam(NULL)) with strcpy()
3634
3635  Revision 572.14  2000/07/10 04:01:12  ajc
3636  * added an unfinished serv_vandelay.c (Art Vandelay module - importer/exporter)
3637
3638  Revision 572.13  2000/07/09 02:47:40  ajc
3639  * Overhauled the keepalive logic in the chat client.  Closes bug #20.
3640
3641  Revision 572.12  2000/07/09 02:27:02  ajc
3642  * Eliminated the whole SIGINT/SIGQUIT based handling of Ctrl-O and Ctrl-C
3643    keyboard interrupts.  Replaced with a non-blocking check for keyboard input
3644    which sets the global variable 'sigcaught' if either key was pressed.
3645    fmout() and pprintf() switch to 'drain mode' if sigcaught is set.
3646    This closes Bug #18.
3647
3648  Revision 572.11  2000/07/06 20:26:36  ajc
3649  * updated .Help SUMMARY
3650
3651  Revision 572.10  2000/07/04 20:02:46  ajc
3652  * Fixed potential crashy crashy bug in serv_vcard.c
3653
3654  Revision 572.9  2000/06/28 03:42:56  ajc
3655  * Changed the comments at the beginning of each file to a consistent format
3656  * Improved the parameterization of commands in the IMAP module
3657
3658  Revision 572.8  2000/06/27 01:27:13  ajc
3659  * Coupla very small changes to get on the road to IMAP support
3660
3661  Revision 572.7  2000/06/22 21:41:48  ajc
3662  * Made the ICQ stuff far more reliable ... by removing it!
3663
3664  Revision 572.6  2000/06/21 03:46:20  ajc
3665  * IMAP is now legal but useless, supporting NOOP, LOGIN, and LOGOUT.
3666
3667  Revision 572.5  2000/06/15 20:15:52  ajc
3668  * Inserted a skeleton IMAP module into the build.  IT DOES NOT WORK AT ALL.
3669
3670  Revision 572.4  2000/06/04 02:30:56  ajc
3671  * CtdlForEachMessage() now returns the number of messages processed.  It also
3672    accepts the MSGS_EQ mode, for targeting a specific message number (useful
3673    for determining whether the specified message actually exists in a room).
3674  * Completed the server side of the moderation system (serv_moderate.c module
3675    which implements the MMOD command)
3676
3677  Revision 572.3  2000/06/03 05:47:57  ajc
3678  * Replaced most of the very repetitive and very redundant access level checks
3679    in most commands with a single API call:  CtdlAccessCheck()
3680  * serv_moderate.c: added (not finished)
3681
3682  Revision 572.2  2000/06/02 03:38:50  ajc
3683  * Bind unix socket prior to TCP socket for citadel protocol
3684  * Fixed bug in sendcommand.c which was causing it to crash on attach
3685
3686  Revision 572.1  2000/05/26 19:27:51  ajc
3687  * Changed some of the rev-level sensitive stuff to look at the actual version
3688    of Citadel running, not the last version with which we ran setup
3689  * Added a moderation system.  Default filter level for new users is in the
3690    config file.  Per-user setting is in usersupp.  Moderation level of each
3691    message is in SuppMsgInfo.  Tweaked CONF, GETU, and SETU.  Read filter is
3692    working.  Moderate message up/down commands are not here yet.  See
3693    techdoc/moderation.txt for more info.
3694
3695  Revision 572.0  2000/05/23 02:09:30  ajc
3696  * Updated docs and tagged everything for the 5.72 release
3697
3698  Revision 571.7  2000/05/20 23:28:20  ajc
3699  * Fixed bug in client API that was causing netproc to crash
3700
3701  Revision 571.6  2000/05/15 00:05:19  ajc
3702  * Double the retry interval for SMTP deliveries after each failed attempt.
3703
3704  Revision 571.5  2000/05/11 03:08:47  ajc
3705  * serv_smtp.c: clear the relevant state buffers after an SMTP DATA command
3706    completes, allowing multiple messages in one session.  Closes bug #58.
3707
3708  Revision 571.4  2000/04/24 03:36:43  ajc
3709  * Removed references to strucmp() and struncmp(), replaced them with
3710    strcasecmp() and strncasecmp() as we did in the server a while ago, and
3711    set up the config script to figure out whether they need to be compiled
3712    in.  Also moved them to tools.h
3713  * Wrote a password manager for the client
3714
3715  Revision 571.3  2000/04/19 03:17:10  ajc
3716  * Don't ever expire the Local System Configuration> room
3717
3718  Revision 571.2  2000/04/16 19:03:47  ajc
3719  * Minor changes to avoid host lookup for local clients
3720
3721  Revision 571.1  2000/04/15 19:55:52  ajc
3722  * Fixed "Unvalidated users appear even with registration disabled" bug #36
3723
3724  Revision 571.0  2000/04/13 02:43:24  ajc
3725  * Fixed a problem that crashed the client during <G>oto commands if a room
3726    existed with a name more than 32 characters (thanks to Magus for reporting
3727    this one).
3728  * Tagged everything and updated docs for the 5.71 release
3729
3730  Revision 570.18  2000/04/10 01:47:22  ajc
3731  * More paginator changes.  Shuffled code around, added pagination to a bunch
3732    of other functions, and replaced the old, cumbersome pagination with the
3733    new, easy, API-based one in everything except message output.
3734
3735  Revision 570.17  2000/04/09 17:51:18  ajc
3736  * Added pprintf() (paginated version of printf) to the client-side API.  Now
3737    any client side function can be paginated simply by changing all of the
3738    printf's to pprintf's.  I've already done this for the user list and wholist
3739    (removing the old style pagination) and for "read directory."
3740
3741  Revision 570.16  2000/04/08 04:52:48  ajc
3742  * Another minor stoopid little time display fix
3743
3744  Revision 570.15  2000/04/08 03:58:12  nbryant
3745   * backed out the previous changes since they didn't look good on some
3746     xterms with a blue bold mode. just set the background color to black
3747     instead. this makes black-on-white terminals actually readable, if not
3748     particularly good looking.
3749
3750  Revision 570.14  2000/04/08 01:36:30  nbryant
3751   * citadel.c, commands.c: comment out cls() as this wasn't called if
3752     ansi_color=user anyway, and we have no way of knowing whether the user's
3753     terminal does background color erase, which was the reason for adding this
3754     in the first place. with the recent changes to color(), the display will get
3755     screwed up if they *do* have background color erase. perhaps this is a job
3756     for terminfo.
3757
3758  Revision 570.13  2000/04/08 00:37:42  nbryant
3759   * commands.c: fix color support for black-on-white color terminals such as
3760     CDE's dtterm. this just avoids white-on-white text; some color combinations
3761     such as yellow-on-white still aren't very legible due to contrast. There's
3762     not much I can think to do about that without affecting the look on the
3763     white-on-black terminals which probably account for most users.
3764
3765  Revision 570.12  2000/04/07 20:22:34  ajc
3766  * Fixed am/pm bug in time display
3767
3768  Revision 570.11  2000/04/07 19:22:45  ajc
3769  * For services disabled by setting port number to -1, administratively skip
3770    the bind instead of just allowing it to fail.
3771
3772  Revision 570.10  2000/03/31 04:31:02  ajc
3773  * Quick fix to 'stats' utility to purge records with bogus timestamps
3774
3775  Revision 570.9  2000/03/31 02:10:52  ajc
3776  * Caved in to pressure and enabled <R>eply in public rooms.
3777
3778  Revision 570.8  2000/03/28 03:55:53  ajc
3779  * Modified <.RU> to allow search for partial match
3780
3781  Revision 570.7  2000/03/27 03:08:19  ajc
3782  * Third parameter of CtdlDeleteMessages() now takes "" instead of NULL to
3783    specify 'any MIME type'.
3784
3785  Revision 570.6  2000/03/27 01:14:08  nbryant
3786   * Makefile.in: generate parsedate.c automatically
3787   * configure.in: check for bison/byacc/yacc. bison seems to build cleaner
3788     code.
3789   * parsedate.c: removed from CVS
3790   * parsedate.y: added #include <stdlib.h> so it builds with bison
3791
3792  Revision 570.5  2000/03/27 00:46:10  nbryant
3793   * First cut at Solaris fixes. There may still be some *printf("%s", NULL)
3794     type of issues lurking in the shadows.
3795
3796  Revision 570.4  2000/03/25 18:29:58  nbryant
3797  changed my email address
3798
3799  Revision 570.3  2000/03/23 02:41:50  ajc
3800  *** empty log message ***
3801
3802  Revision 570.2  2000/03/21 03:23:24  ajc
3803  * Experimental new linebreak mode
3804
3805  Revision 570.1  2000/03/20 14:43:19  ajc
3806  * "Brown paper bag" fix for SMTP bug (incoming long fields crash logger)
3807
3808  Revision 570.0  2000/03/19 23:42:34  ajc
3809  * This is the official 5.70 release.
3810
3811  Revision 1.494  2000/03/19 23:04:08  ajc
3812  * Small cosmetic change to date/time output
3813
3814  Revision 1.493  2000/03/19 05:02:39  ajc
3815  * SMTP hacks to deal with AOL braindamage
3816
3817  Revision 1.492  2000/03/18 18:18:04  ajc
3818  * Support multiline responses from SMTP servers when sending mail
3819
3820  Revision 1.491  2000/03/17 16:26:57  ajc
3821  * Set up a private "Sent/Received Pages" room for each user
3822
3823  Revision 1.490  2000/03/17 04:11:24  ajc
3824  * Moved bio-related commands out to a loadable module
3825
3826  Revision 1.489  2000/03/16 17:58:54  smw
3827  Created a docs directory.
3828  Moved install.txt to docs.
3829  Added inetmailsetup.txt (BBS server side e-mail)
3830  Added inetmailsetupmx.txt (local mail AND bbs e-mail
3831  Added inetsiteconfig.txt (describes the .asi command)
3832  Added siteconfig.txt (describes .asg)
3833  Added chat.txt (describes changes and new chat functionality)
3834  Made a couple of changes to install.txt (references to new documentation)
3835  Added Steve Williams to copyright.txt as the document writer.
3836
3837 Revision 1.488  2000/03/15 03:04:51  ajc
3838 * Added DEXP server command to disable incoming express messages.
3839 * <Q>uiet mode client side command to set/clear DEXP mode.
3840 * <K>nown rooms list displays through the paginator.
3841
3842 Revision 1.487  2000/03/12 00:21:35  ajc
3843 * Removed the semi-broken "chat room" functionality in the chat system, and
3844   replaced it with direct mapping to the actual Citadel room the user is in.
3845 * Display masqueraded roomname in chat, if applicable.  Fixes bug #19.
3846
3847 Revision 1.486  2000/03/11 21:29:37  ajc
3848 * SM_ flags for CtdlSaveMsgPointerInRoom() need to be a bit bucket, not an
3849   enum, since more than one can be passed.  Changed SM_DONT_BUMP_REF_COUNT
3850   from 3 to 4.  This also fixes bug #33.
3851
3852 Revision 1.485  2000/03/11 20:26:03  ajc
3853 * Reworked the <R>eply logic in messages.c - fixes bug #34
3854
3855 Revision 1.484  2000/03/11 19:22:19  nbryant
3856  * commands.c: improved timing of background keepalives if connection is
3857                lagged
3858
3859 Revision 1.483  2000/03/11 05:08:48  nbryant
3860  * commands.c: oops, that mutex stuff wasn't necessary
3861
3862 Revision 1.482  2000/03/11 04:09:03  nbryant
3863  * new threaded client code for background keepalives
3864
3865 Revision 1.481  2000/03/10 21:40:04  ajc
3866 * Changes to message base and networker to support Internet-style message
3867   ID's instead of the conventional Citadel style.
3868
3869 Revision 1.480  2000/03/08 03:36:37  ajc
3870 * Shut off hostname resolution when dealing with Unix domain sockets
3871 * Cleaned up the 'citmail' MDA tool
3872 * Added POP3 and SMTP port numbers to global system configuration
3873
3874 Revision 1.479  2000/03/07 21:54:58  ajc
3875 * Fixed the naming conventions and permissions for unix domain sockets.
3876
3877 Revision 1.478  2000/03/05 07:33:23  ajc
3878 * Added support for protocols over Unix domain sockets.
3879
3880 Revision 1.477  2000/03/04 22:36:23  ajc
3881 * Remove nulls appended to editor files during replace, edit, and print
3882   operations.  Truncate temp files during same operations.
3883   Closes bugs #6 and #7.
3884
3885 Revision 1.476  2000/03/04 05:29:18  ajc
3886 * Relax restrictions on editing of base rooms.  Renaming is not allowed but
3887   all other attributes can be edited.  Closes feature request #21.
3888 * Sending pages from the client now uses the same message editing functions
3889   as entering messages, allowing edit/abort.  Closes feature request #25.
3890
3891 Revision 1.475  2000/03/03 04:50:14  ajc
3892 * Moved all of the wholist masquerading commands into the serv_rwho module
3893
3894 Revision 1.474  2000/03/03 04:12:37  ajc
3895 * Finished the inbound side of gateway domain service
3896
3897 Revision 1.473  2000/02/27 04:55:51  ajc
3898 * Added "keymenu()" generic menu-maker to commands.c
3899 * Blocked non-numeric input to intprompt()  (fixes bug #16)
3900
3901 Revision 1.472  2000/02/27 03:57:35  ajc
3902 * Completed 'fsck'-like reference count verifier (server and client)
3903
3904 Revision 1.471  2000/02/26 18:30:40  ajc
3905 * Properly handle all aliases specified in network/mail.aliases for incoming
3906   SMTP mail (uses the alias() function, so if we replace that function with
3907   something that uses the same calling convention, it'll still work)
3908
3909 Revision 1.470  2000/02/26 05:15:38  ajc
3910 * Fortified the message base and SMTP code so that misdirected bounce messages
3911   end up in the Aide> room instead of getting dereferenced
3912 * Started writing a message reference count verifier ('fsck' for message base)
3913
3914 Revision 1.469  2000/02/25 06:14:05  ajc
3915 * Modularized the RWHO (Read WHO is online) command, basically as a pilot
3916   for modularizing all "non-API" functionality.
3917
3918 Revision 1.468  2000/02/24 03:44:00  ajc
3919 * Implemented holdoff time (15 minutes) for SMTP send retry.
3920 * Implemented "try for 3 days and then give up" on SMTP send.
3921
3922 Revision 1.467  2000/02/24 00:51:48  ajc
3923 * Client protocol synchronization check during exit from chat.
3924   This closes Bug #15.
3925
3926 Revision 1.466  2000/02/22 16:37:28  ajc
3927 * Minor tweaks to RFC822 output to keep brain-damanged MS Outlook from dying
3928
3929 Revision 1.465  2000/02/22 04:17:56  ajc
3930 * Got bounce messages working (mostly ... testers, please beat this up!)
3931 * Changed 'FIX' comments to 'FIXME' (less conflict, plus vim highlights it!)
3932
3933 Revision 1.464  2000/02/18 22:29:18  ajc
3934 * Coded up the "bounce" functions.  Still a coupla bugs.
3935
3936 Revision 1.463  2000/02/18 05:10:50  ajc
3937 * Made the <.ASI> command a bit friendlier.
3938 * SMTP sender now pays attention to "smarthost" entries in the system's
3939   Internet configuration, using them if one or more is present.
3940
3941 Revision 1.462  2000/02/17 05:27:39  ajc
3942 * Got the "MAIL From:" command sending the correct data.  (unnnhhhhnnhhhh...)
3943
3944 Revision 1.461  2000/02/16 22:06:26  ajc
3945 * Altered the display and conversion of RFC822 messages
3946
3947 Revision 1.460  2000/02/16 03:43:28  ajc
3948 * Added the resolver library to the configure script
3949
3950 Revision 1.459  2000/02/16 01:19:39  ajc
3951 * Vanquished the evil dn_expand() beast.  getmx() now seems to be working.
3952
3953 Revision 1.458  2000/02/14 04:36:14  ajc
3954 * sysdep.c: added new event hook type EVT_TIMER.  Timer event hooks are called
3955   once per minute by any worker thread.
3956 * msgbase.c: removed dependence on nested functions in CtdlOutputMsg() by
3957   replacing them with an API call CtdlRedirectOutput() in sysdep.c, which
3958   can temporarily redirect a session's output to an arbitrary file or socket.
3959 * serv_smtp.c: implemented the purging of messages in the queue for which all
3960   deliveries have been completed.
3961 * serv_smtp.c: removed temporary 'QQQQ' server command and replaced it with
3962   a timer event hook that runs the queue once per minute (this needs to be
3963   made more robust)
3964
3965 Revision 1.457  2000/02/08 21:00:47  ajc
3966 * Implemented the deprecated "LAST" command in POP3.  Some clients need it.
3967 * POP3 sessions now set the last-read pointer in Mail>.
3968
3969 Revision 1.456  2000/02/07 05:15:00  ajc
3970 * Renamed CtdlLocalHost() to CtdlHostAlias() and worked it a little deeper into
3971   the message routing logic.  Still needs some work on the gateway-domain
3972   stuff.
3973 * Twiddled CtdlOutputMsg() a bit for 'all Internet' situations.  Still needs
3974   some work to avoid printing dual headers when both Cit and RFC822 exist.
3975
3976 Revision 1.455  2000/02/03 03:57:35  ajc
3977 * Formalized the 'Internet Configuration' logistics.  Added new API call
3978   CtdlLocalHost() to detect aliases for the local host.  Used in SMTP listener.
3979
3980 Revision 1.454  2000/01/31 02:13:05  ajc
3981 * <.A>ide <S>ystem configuration <I>nternet  in the client (unfinished)
3982
3983 Revision 1.453  2000/01/26 02:41:27  ajc
3984 * SMTP delivery is working but still *very* rough.
3985
3986 Revision 1.452  2000/01/25 04:45:50  ajc
3987 * Wrote enough of the SMTP sender to get Patriot drooling over it, but not
3988   enough to complete the transmission of mail.
3989
3990 Revision 1.451  2000/01/23 21:25:45  ajc
3991 * Temporary hack to ig_tcp_server() to listen on an arbitrary port if the
3992   one specified is not bindable (for development only)
3993 * Added SM_DONT_BUMP_REF flag to CtdlSaveMsgPointerInRoom() to be used only
3994   in very specific and special situations
3995 * Generate delivery instructions when outbound SMTP mail is created from
3996   within Citadel (as opposed to being from the SMTP module)
3997
3998 Revision 1.450  2000/01/23 05:22:41  ajc
3999 * Coded up some more of the SMTP-sender (still not done)
4000
4001 Revision 1.449  2000/01/22 05:13:56  ajc
4002 * Added some more functionality to the string tokenizer
4003
4004 Revision 1.448  2000/01/17 20:57:43  ajc
4005 * CR to CRLF hacks (lose, lose, lose)
4006
4007 Revision 1.447  2000/01/17 18:30:27  ajc
4008 * Completed POP3 server.  All RFC1939 commands except APOP are implemented.
4009
4010 Revision 1.446  2000/01/17 17:09:23  ajc
4011 * Implemented LIST and STAT commands in the pop3 server
4012
4013 Revision 1.445  2000/01/17 05:38:14  ajc
4014 * citserver.c: cleanup hook functions are now run under the proper context,
4015                even when initiated by the housekeeper thread
4016 * serv_pop3.c: establish a place to hold the message list
4017
4018 Revision 1.444  2000/01/17 04:26:39  ajc
4019 * Modified CtdlOutputMsg() to handle output to arbitrary sockets or files.
4020   This uses nested functions and may not be portable beyond GCC...
4021
4022 Revision 1.443  2000/01/15 18:29:15  ajc
4023 * Added a generic (void *) parameter to the ForEachUser() and ForEachRoom()
4024   callback mechanisms, to allow callers and callbacks to pass arbitrary data
4025   between each other without requiring TSD variables.
4026 * room_ops.c: eliminated the need for 'FloorBeingSearched' TSD variable
4027 * internet_addressing.c: eliminated 'buffer1' and 'buffer2' TSD variables
4028
4029 Revision 1.442  2000/01/15 04:31:44  ajc
4030 * Removed UI_DIALOG mode in setup.  Can't count on 'dialog' to be consistent.
4031
4032 Revision 1.441  2000/01/15 04:07:17  ajc
4033 * Fixed the access rights on auto-created rooms (the same changes that were
4034   made to version 5.62 in the stable tree)
4035
4036 Revision 1.440  2000/01/13 03:32:36  ajc
4037 * techdoc/delivery-list.txt: added (syntax for delivery lists)
4038 * domain.*: added (will contain MX lookup code)
4039 * internet_addressing.c, logging.c: fixed some buffer overflow bugs
4040
4041 Revision 1.439  2000/01/12 03:56:27  ajc
4042 * sysdep.c: start the housekeeping thread *after* dropping root perms.
4043
4044 Revision 1.438  2000/01/09 19:03:16  ajc
4045 * Removed the fifo-based protocol downloads and replaced it with a less
4046   elegant "download temporary file to client, then sx/sb/sz" because
4047   downloading through a fifo was confusing some software.
4048
4049 Revision 1.437  2000/01/08 22:19:44  ajc
4050 * Completed spool to outbound delivery queue (still no queue sender implemented)
4051
4052 Revision 1.436  2000/01/08 05:00:09  ajc
4053 * Reworked some of the data structures to handle multiple recipients
4054 * Began implementation of the delivery queue
4055 * Added CtdlReallocUserData()
4056 * CtdlSaveMsg() now returns the local message ID in the database
4057
4058 Revision 1.435  2000/01/06 03:50:34  ajc
4059 * Replaced citmail.c with a new one that simply SMTP-forwards to Citadel
4060 * Started outbound SMTP queue work
4061
4062 Revision 1.434  1999/12/30 04:56:29  ajc
4063 * Got initial SMTP delivery working in a very specific situation (delivery
4064   to a single, local user)
4065
4066 Revision 1.433  1999/12/29 04:44:00  ajc
4067 * client_chat.c: display "No message sent" if a send page is aborted.
4068   Closes bug #2 in bugzilla.
4069
4070 Revision 1.432  1999/12/26 21:50:07  ajc
4071 * serv_vcard: don't run hooks when not logged in (such as in SMTP sessions)
4072 * serv_pop3: added.  This is the skeleton for a module implementing POP3.
4073
4074 Revision 1.431  1999/12/23 04:46:23  ajc
4075 * "Finished" initial hack of RFC822 import
4076
4077 Revision 1.430  1999/12/22 04:46:34  ajc
4078 * Fixed up the "Date:" headers to be RFC822-compliant
4079
4080 Revision 1.429  1999/12/13 05:30:57  ajc
4081 * Removed our naive 'conv_date()' RFC822-to-unixtime conversion function
4082   and replaced it with the public domain 'parsedate()' function from UseNet
4083
4084 Revision 1.428  1999/12/10 23:58:25  ajc
4085 * internet_addressing.c: added.  (Internet address to Citadel mapping)
4086
4087 Revision 1.427  1999/12/10 21:34:19  ajc
4088 * serv_smtp: implemented RFC821 "VRFY" and "EXPN" commands
4089
4090 Revision 1.426  1999/12/09 05:01:14  ajc
4091 * Split cmd_user() and cmd_pass() into frontend/backend functions
4092 * serv_smtp: implemented AUTH LOGIN for client authentication
4093
4094 Revision 1.425  1999/12/09 00:22:58  ajc
4095 * Finished the "arbitrary service" registration.
4096 * Eliminated "special" master socket for Citadel protocol - just register it
4097   like any other protocol.
4098 * Began initial implementation of native SMTP service.
4099
4100 Revision 1.424  1999/12/08 18:09:10  ajc
4101 * Added CtdlRegisterServiceHook() and its data type, for implementing arbitrary
4102   TCP-based services directly in the Citadel server.  Not finished yet.
4103
4104 Revision 1.423  1999/11/29 17:39:07  nbryant
4105 * citserver.c: Solaris lacks inet_aton; use inet_addr instead
4106
4107 Revision 1.422  1999/11/29 17:26:15  nbryant
4108 * citserver.c: include <sys/types.h>; may help portability to Solaris
4109
4110 Revision 1.421  1999/11/22 00:27:42  ajc
4111 * Added some temporary variables to OpenCmdResult().  Hopefully fixes
4112   bug #14 when running on FreeBSD.
4113
4114 Revision 1.420  1999/11/21 18:30:16  ajc
4115 * Protected cmd_move() from buffer overrun (no longer crashes the server)
4116 * cmd_chat() -- truncate input at 100 characters to prevent buffer overruns.
4117   Also handle broken client sockets properly.  (Thanks to DME for bug report)
4118
4119 Revision 1.419  1999/11/19 01:57:40  ajc
4120 * Fixed a *serious* memory leak in the database function wrappers.
4121 * Updated version number to 5.60 -- run setup when installing this version.
4122
4123 Revision 1.418  1999/11/18 03:29:20  ajc
4124 * Changed the order of parameters in <.A>ide <S>ystem config into a more
4125   logical grouping.
4126
4127 Revision 1.417  1999/11/18 02:31:50  ajc
4128 * Updated some of the documentation
4129 * Brought the internal version number up to 5.60
4130
4131 Revision 1.416  1999/11/17 04:15:05  ajc
4132 * Removed the session_count() function.  Instead, keep a reference count
4133   updated when sessions begin and end.
4134 * Replaced fixed number of worker threads with lower and upper limits; current
4135   code now tries to make thread count == session count, within these limits
4136
4137 Revision 1.415  1999/11/15 03:17:39  ajc
4138 * Put lockfile in /tmp instead of in /var/lock.   The latter is not guaranteed
4139   to exist, nor is it guaranteed to be writable by BBSUID
4140   (Resolves bug #11 from the Bugzilla repository)
4141
4142 Revision 1.414  1999/11/15 03:07:24  ajc
4143 * Fixed the network-wide vCard purge logic so that it (1) actually works,
4144   and (2) forces a netproc run immediately when a purge is entered
4145
4146 Revision 1.413  1999/11/09 21:20:44  nbryant
4147 * configure.in: include <sys/types.h> when doing checks which require <utmp.h>
4148   (should fix Bug #10 on FreeBSD)
4149
4150 Revision 1.412  1999/11/05 03:53:47  ajc
4151 * Issue 'cancel' messages for vCard when a user is deleted.
4152 * Try to delete 'cancel' messages locally after they've been distributed.
4153
4154 Revision 1.411  1999/11/03 04:01:20  ajc
4155 * Fixed buffer overrun problems in cmd_rchg(), cmd_hchg(), and cmd_uchg()
4156 * Removed my email address as the feedback content from the docs; replaced
4157   it with a reference to the Citadel/UX web site.
4158
4159 Revision 1.410  1999/11/02 19:51:23  ajc
4160 * Fixed timeout problem for remote client sessions (all timeouts were set to
4161   1 second ... probably a temporary hack that was missed in the cleanup)
4162
4163 Revision 1.409  1999/11/02 03:03:27  ajc
4164 * Several fixes to msgbase.c and netproc.c to prevent corrupted incoming
4165   network traffic from crashing the server.  Reject bad messages.
4166
4167 Revision 1.408  1999/11/01 04:21:34  ajc
4168 * Fixed a concurrency bug which crashed the server when multiple sessions
4169   terminated simultaneously.
4170
4171 Revision 1.407  1999/11/01 00:54:02  ajc
4172 * CtdlFetchMessage() - generate a "<no text>" message body if there's none
4173   on disk.  Too much stuff goes haywire if there's no M field.
4174
4175 Revision 1.406  1999/10/31 18:17:17  ajc
4176 * Fixed buffer overrun in cmd_rchg()
4177 * Call master_cleanup() when time_to_die==1 for proper shutdown
4178
4179 Revision 1.405  1999/10/31 16:26:55  ajc
4180 * Fixed incorrect assignment of new session ID's
4181
4182 Revision 1.404  1999/10/31 04:17:17  ajc
4183 * Fixed a bug which was crashing the server during very long message entry.
4184
4185 Revision 1.403  1999/10/29 01:48:45  ajc
4186 * database.c: Removed arbitrary limit on maximum number of sessions
4187
4188 Revision 1.402  1999/10/29 01:03:03  ajc
4189 * Debugged all possible ways for a session to terminate; do them cleanly.
4190 * Assign session numbers in a more portable and less arbitrary way.
4191
4192 Revision 1.401  1999/10/28 19:50:55  ajc
4193 * Fixed a problem where the client protocol would spit out two responses
4194   and therefore get out of sync if ASUP command set the access level to
4195   0 and therefore deleted the user (thanks to Eric McDonald)
4196
4197 Revision 1.400  1999/10/28 05:08:49  ajc
4198 * Removed all of the thread cancellation cruft that is no longer necessary
4199 * Moved the now non-system-dependent RemoveContext() out of sysdep.c (now
4200   it's part of cleanup() in citserver.c)
4201 * Removed all references to pthread_* from all modules except sysdep.c
4202
4203 Revision 1.399  1999/10/28 03:20:17  ajc
4204 * Fixed the problem of worker threads waking up prematurely.
4205 * 'QUIT'-terminated sessions now exit properly.
4206
4207 Revision 1.398  1999/10/27 04:26:58  ajc
4208 * Initial hack of worker-thread rearchitecture.  Right now it is successfully
4209   dispatching worker threads to active client sockets (and to the master
4210   socket too, of course).  Removing sessions is currently broken.
4211
4212 Revision 1.397  1999/10/26 20:20:29  ajc
4213 * Removed the auto-reconnect stuff... it was locking the client in an active
4214   loop more often than it was reconnecting.
4215
4216 Revision 1.396  1999/10/26 13:59:11  ajc
4217 damn bugs
4218
4219 Revision 1.395  1999/10/26 03:48:39  ajc
4220 * Shuffled around the order of events when a thread is terminating.  All
4221   mutex operations now happen prior to the freeing of the CitContext structure,
4222   otherwise begin_critical_section() and end_critical_section() try to
4223   manipulate the context's mutex count when there isn't any context.
4224
4225 Revision 1.394  1999/10/26 03:21:16  ajc
4226 * Changed a lot of strncpy() calls to safestrncpy() and replaced most of their
4227   hardcoded size arguments with 'sizeof' based arguments.
4228
4229 Revision 1.393  1999/10/24 19:22:51  nbryant
4230         * Makefile.in, configure.in: added --enable-icq flag; made checks for
4231           authentication libraries more intelligent.
4232
4233 Revision 1.392  1999/10/23 03:39:12  ajc
4234 * Finished moving vCard functionality to the new message base functions.
4235
4236 Revision 1.391  1999/10/21 00:50:14  ajc
4237 * Finished up the flags and replication checks in CtdlSaveMsgPointerInRoom().
4238
4239 Revision 1.390  1999/10/20 16:46:27  ajc
4240 * More code shuffle.  Added some flags to CtdlSaveMessagePointerInRoom() and
4241   enabled the MOVE command to also do a "copy" operation (actually just
4242   creates a second link and bumps the ref count).  Implemented "<C>opy" in
4243   the client.
4244
4245 Revision 1.389  1999/10/20 16:07:48  ajc
4246 * Wholist fixes for users who are in chat mode
4247
4248 Revision 1.388  1999/10/20 03:42:29  ajc
4249 * In the wholist, only show <private room> if the user viewing the list
4250   doesn't know that room.  Otherwise show the name.
4251
4252 Revision 1.387  1999/10/20 02:59:22  ajc
4253 * Code reorganization.  Making it easier to move/copy messages without
4254   duplicating existing code.
4255
4256 Revision 1.386  1999/10/17 02:25:18  ajc
4257 * Discovered a huge design flaw in the replication algorithm.  Ripped it
4258   out and replaced it with something a bit more robust.
4259
4260 Revision 1.385  1999/10/16 05:30:17  ajc
4261 * Changes to message replication code.  Don't do server-side hooks during
4262   an ENT3 command.  Also fixed a bug in cmd_whok() that caused crashes
4263   after a file format change.
4264
4265 Revision 1.384  1999/10/14 03:04:16  ajc
4266 * Finished the netproc side of Z (zap/supersede) processing for replication
4267
4268 Revision 1.383  1999/10/13 04:24:18  ajc
4269 * Added search-by-header-fields to CtdlForEachMessage(), and then to the
4270   server MSGS command.  This will have lots of uses.
4271
4272 Revision 1.382  1999/10/13 01:36:39  ajc
4273 * Starting some work on network zap (supersede) mode for replication
4274
4275 Revision 1.381  1999/10/08 02:55:57  ajc
4276 * More vCard-related debugging
4277
4278 Revision 1.380  1999/10/07 02:58:46  ajc
4279 * Semi-broken vCard replacement implementation in place.
4280 * Added "Z" (Zap, supersede) field to message format
4281
4282 Revision 1.377  1999/10/04 03:19:52  ajc
4283 * We now have a housekeeping thread and a housekeeping queue.
4284
4285 Revision 1.376  1999/10/03 21:48:21  ajc
4286 * Added serv_upgrade.h to automagically convert pre-5.55 format user records
4287   to 5.55 format user records and generate vCards.
4288
4289 Revision 1.375  1999/09/29 21:13:17  ajc
4290 * CtdlWriteObject() can now store objects in personal rooms for any specified
4291   user -- rather than only the current user or non-personal rooms.
4292
4293 Revision 1.374  1999/09/29 17:26:56  ajc
4294 * serv_vcard.c: fixed crashola bug in cmd_greg()
4295 * tools.c: simplified and improved the string tokenizer.  Now it runs in a
4296            single pass with no intermediate buffer.
4297
4298 Revision 1.373  1999/09/28 03:27:37  ajc
4299 * Fully migrated cmd_greg() and cmd_regi() into serv_vcard (still has bugs)
4300
4301 Revision 1.372  1999/09/27 03:33:40  ajc
4302 * cmd_regi() is now in serv_vcard and writes to the vcard instead of to the
4303   usersupp file.  Still needs tweaking.
4304
4305 Revision 1.371  1999/09/24 03:32:19  ajc
4306 * "read my vCard" and "write my vCard" are written and tested.
4307
4308 Revision 1.370  1999/09/24 02:54:17  ajc
4309 * Worked a little more on the vCard stuff.  The serv_vcard module is now in
4310   place, and a "read my vcard" function is there; "write my" is next...
4311
4312 Revision 1.369  1999/09/23 03:07:56  ajc
4313 * The vCard 'class' is now linked into the server, though it's not really
4314   functional yet.  Its constructors/destructors are debugged, though.
4315
4316 Revision 1.368  1999/09/19 21:28:33  ajc
4317 * Finished off the message architecture stuff with a new class of hooks to
4318   enable future server-side handlers.
4319
4320 Revision 1.367  1999/09/19 15:57:06  ajc
4321 * migrated cmd_ent3() to CtdlSaveMessage()
4322
4323 Revision 1.366  1999/09/19 05:13:57  ajc
4324 * Debugged the new version of CtdlWriteObject()
4325
4326 Revision 1.365  1999/09/16 03:23:23  ajc
4327 * Did most of the migration from save_message() to CtdlSaveMsg().  The
4328   latter builds a "struct CtdlMessage" (so we can run server-side handlers
4329   against it later on), then serializes it and stores to disk.
4330 * BROKEN BUILD ALERT!!  cmd_ent3() and CtdlWriteObject() are still not
4331   migrated.  They are stubbed out and will MALFUNCTION if used right now!!
4332
4333 Revision 1.364  1999/09/07 01:42:42  ajc
4334 * cmd_msg3() now uses serialize_message() for its output.  All message
4335   commands will eventually exist as a "struct CtdlMessage" at some point
4336   so that we can install server-side handler hooks.
4337
4338 Revision 1.363  1999/09/07 00:04:13  ajc
4339 * netproc.c: put outgoing messages into the use table, too -- this prevents
4340   locally originated messages from showing up again if a remote system is
4341   misconfigured and spools them back to us.
4342
4343 Revision 1.362  1999/09/06 03:39:15  ajc
4344 * citadel.c: run strproc() on new passwords
4345
4346 Revision 1.361  1999/09/03 17:50:26  playcow
4347 For URL view, don't prompt user to select url if there is only one.  Display
4348 <U>RL View prompt if message contains url(s). -Ben
4349
4350 Revision 1.360  1999/09/02 02:09:59  ajc
4351 * msgbase.c: new function serialize_message() for future use
4352
4353 Revision 1.359  1999/09/01 21:09:25  ajc
4354 * database.c: display the GDBM version string on startup
4355
4356 Revision 1.358  1999/09/01 02:36:34  ajc
4357 * Actually _enforce_ the max msg len limit
4358
4359 Revision 1.357  1999/09/01 01:51:48  ajc
4360 * Added the ability to handle embedded URL's from the text client
4361
4362 Revision 1.356  1999/09/01 01:02:47  ajc
4363 * Implemented "maximum message length" in global system config
4364
4365 Revision 1.355  1999/08/31 00:57:17  ajc
4366 * Handle multipart/alternative properly during legacy message outputs.
4367   Basically it just prints the first alternative and skips the rest.
4368
4369 Revision 1.354  1999/08/29 21:12:24  ajc
4370 * Made some changes to the output of MIME (especially multipart) messages.
4371
4372 Revision 1.353  1999/08/29 19:56:43  ajc
4373 * HTML updates
4374
4375 Revision 1.352  1999/08/24 02:01:03  ajc
4376 * html.c: added.  This is an overly simplistic HTML-to-text converter.
4377
4378 Revision 1.351  1999/08/21 18:37:29  ajc
4379 * Minor cosmetic cleanup.  No code changes.
4380
4381 Revision 1.350  1999/08/21 05:15:34  ajc
4382 * mailinglist.c, netmailer.c: fixed to allow list submissions from all posters
4383   on a Citadel network rather than only on the local system.
4384
4385 Revision 1.349  1999/08/08 00:25:45  ajc
4386 * Made one more byte available in locate_host() and in all the structs which
4387   its output gets written to (client can display 24 positions but we were only
4388   saving 23).
4389
4390 Revision 1.348  1999/08/07 16:34:38  nbryant
4391 * serv_icq.c: warning fixes
4392
4393 Revision 1.347  1999/08/06 02:57:26  ajc
4394 * locate_host.c: use strdoop() and phree() instead of strdup() and free()
4395 * serv_icq.c: run learned IP's through Citadel's locate_host() & put in Wholist
4396
4397 Revision 1.346  1999/08/05 17:58:59  ajc
4398 * RWHO command now returns express message code in postion 3
4399
4400 Revision 1.345  1999/08/04 02:21:45  ajc
4401 * Fixed some bugs in the ICQ metaclient, and documented the new protocol cmds
4402
4403 Revision 1.344  1999/08/03 11:34:35  ajc
4404 * Added client_icq.c and client_icq.h
4405
4406 Revision 1.343  1999/08/03 03:14:51  ajc
4407 * Wrote the client side of the ICQ gateway.  Now on to other projects.  :)
4408
4409 Revision 1.342  1999/08/03 01:52:06  ajc
4410 * Redesigned the client protocol commands for dealing with ICQ
4411 * Implemented page function priority ordering to prevent pages from being
4412   simultaneously delivered over multiple IM systems
4413 * Migrated serv_icq.* into the Makefile
4414
4415 Revision 1.341  1999/08/01 21:36:30  ajc
4416 * EXTREME coolness.  The server side of the ICQ metaclient is now working.
4417   It is set up using ICQL and ICQA commands, it automatically logs the user
4418   onto ICQ along with Citadel, and displays all non-offline ICQ contacts
4419   in the Wholist.
4420
4421 Revision 1.340  1999/07/31 07:18:01  ajc
4422 * Restructured the express message infrastructure, adding a class of function
4423   hooks for the addition of multiple paging modules with message routing
4424
4425 Revision 1.339  1999/07/30 22:20:19  ajc
4426 * Applied bugfix patches contributed by Vaggelis Tsirkas:
4427   * rooms.c: buffer overrun fix
4428   * room_ops.c: cmd_rdir() now behaves better when directory doesn't exist
4429
4430 Revision 1.338  1999/07/30 03:32:24  ajc
4431 * Added strdoop(), a leak-checked version of strdup()
4432 * Small fixes to new API functions in msgbase.c
4433 * ICQ metaclient stores/reads config using the message base API functions
4434
4435 Revision 1.337  1999/07/29 03:36:37  ajc
4436 * msgbase.c: reorganized.  output_message() now uses CtdlFetchMessage(),
4437   cmd_msg3() now fetches directly from disk and spews to the client.
4438
4439 Revision 1.336  1999/07/28 04:02:37  ajc
4440 * Server modules are now labelled with their RCS ID instead of a complex and
4441   manually-updated data structure.
4442
4443 Revision 1.335  1999/07/28 03:50:24  ajc
4444 * serv_expire.c: expire-by-age now calls CtdlFetchMessage() instead of
4445   calling output_message() in MT_DATE mode.
4446 * msgbase.c: removed MT_DATE mode ('twas a sleazy hack)
4447
4448 Revision 1.334  1999/07/27 22:47:26  ajc
4449 * Implemented new data type "CtdlMessage" which will eventually be used as
4450   widely as possible to represent a message in memory.
4451 * Implemented CtdlFetchMessage() which is intended to become the back-end to
4452   output_message() as well as a bunch of other things.
4453
4454 Revision 1.333  1999/07/27 20:00:24  ajc
4455 Removed all references to CC->msglist and CC->num_msgs, and all utility
4456 functions which relied upon them.  Citadel Is Now Better.
4457
4458 Revision 1.332  1999/07/27 19:32:22  ajc
4459 Removed serv_upgrade.c and all references to it in Makefile.in
4460 Reworked new-mail-count to not use MessageFromList() etc.
4461
4462 Revision 1.331  1999/07/25 02:59:37  ajc
4463 Fixed reference count problem in cmd_move()
4464
4465 Revision 1.330  1999/07/24 22:50:38  ajc
4466 Continued replacing references to [get|put]_msglist() with better code.
4467 For some reason, cmd_msgs() still doesn't always work right.
4468
4469 Revision 1.329  1999/07/24 22:16:41  ajc
4470 Experimenting with automatic updating of ChangeLog by CVS.  Simply twiddle
4471 ChangeLog a bit (i.e. by adding or removing a newline from the end of the
4472 file) before issusing "cvs commit", and the comments recorded by CVS will
4473 automatically appear at the beginning of ChangeLog.
4474
4475 Revision 1.328  1999/07/24 22:14:21  ajc
4476 cmd_move() now uses CtdlDeleteMessages().
4477 WARNING: build is temporarily broken.  Currently removing all references
4478 to the "msglist" kept in CitContext.  It's ugly and must die.
4479
4480 Thu Jul 22 22:26:50 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4481         * Moved message deletion into new API function CtdlDeleteMessages()
4482         * Added CtdlWriteObject() to store generic data in the msgbase
4483         * Fixed really dumb error that prevented network msgs from posting
4484
4485 Tue Jul 20 22:14:54 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4486         * Moved the actual work done in cmd_msgs() into a new API function
4487           called CtdlForEachMessage() which is supplied a callback function.
4488
4489 Mon Jul 19 23:24:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4490         * Keep the (unqualified) content-type in the SuppMsgInfo record.  We'll
4491           be using this shortly to search rooms for specific object types.
4492
4493 Sun Jul 18 14:53:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org> 
4494         * Changes to dynloader et al to handle ICQ module being written
4495         * serv_icq.c, serv_icq.mk: added (separate makefile is temporary)
4496
4497 1999-07-17 Nathan Bryant <bryant@cs.usm.maine.edu>
4498         * chkpwd.c: DELETED CVS REVISION 1.3 (backed out Art's last change)
4499           use 'cvs update -r 1.2 chkpwd.c; cvs update -A chkpwd.c' NOW to
4500           avoid problems with working directories.
4501         * Makefile.in: don't install chkpwd setuid if make install isn't
4502           being run as root.
4503         * citadel.spec: chmod u+s chkpwd during %install stage
4504
4505 Fri Jul 16 18:39:04 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4506         * PEXP and GEXP no longer trip the idle time display
4507         * Fixed bug which duplicated incoming private mail to Trashcan
4508         * Improved auto-reconnect by NOT using SIGPIPE and longjmp(); also
4509           implemented a 15 second delay to wait for a crashed server to restart
4510         * Relaxed the security check in chkpwd.c a bit; it was just flat-out
4511           preventing logins on my system otherwise
4512
4513 Thu Jul 15 22:57:32 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4514         * eliminate redundant "name" parameter in [l]putuser(), now uses
4515           usbuf->fullname to guarantee the correct name for the index
4516
4517 1999-07-12 Nathan Bryant <bryant@cs.usm.maine.edu>
4518         * Makefile.in, configure.in: link netproc with gdbm
4519         * netproc.c: only include gdbm.h if HAVE_GDBM_H
4520         * user_ops.c: warning fix
4521
4522 Mon Jul 12 19:51:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4523         * Mail is now saved in both sender and recipient mailboxes.  This is
4524           structured in a way that will allow a separate "outbox" room and/or
4525           multiple recipients in the future.
4526
4527 Sun Jul 11 18:46:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4528         * netproc.c: msgfind() no longer uses the timestamp as a message-ID
4529           when no other message-ID is available (it screws up the loopzapper)
4530         * room_ops.c: eliminate room name parameter in putroom() and its ilk;
4531           get data from quickroom.QRname instead; prevents incorrect indexes
4532         * Tentative implementation of "personal rooms" (user-private namespace)
4533         * Added supplementary message info records for info that may change
4534           at some time later than when the message is saved (i.e. ref counts)
4535         * Implemented msg reference count increment/decrement; delete messages
4536           whose reference count reaches zero
4537
4538 Wed Jul  7 23:25:09 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4539         * control.c: create citadel.control if it doesn't exist (yikes!)
4540         * serv_expire.c: purge mailbox rooms belonging to non-existent users
4541         * user_ops.c: don't delete user's mailbox at user-delete time
4542
4543 Mon Jul  5 17:01:29 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4544         * utilsmenu: removed menu items for defunct utilities
4545
4546 Mon Jun 28 16:24:10 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4547         * Changed any remaining references to UUCP, to "Internet" instead.
4548
4549 Thu Jun 24 11:13:23 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4550         * added server command line option "-f" to defrag databases on startup
4551         * control.c: better performance and reliability in [get|put]_control()
4552         * netproc.c: Finished the loopzapper
4553
4554 Mon Jun 21 00:04:15 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4555         * netproc.c: started writing a vortex checker.  Not finished.
4556
4557 Wed Jun  9 23:34:25 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4558         * Replaced all code that generated temporary filenames with calls to
4559           tmpnam().  Rewrote using tmpfile() where possible.
4560
4561 Thu Jun  3 11:35:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4562         * base64.c: mapped fi and fo to stdin and stdout using
4563           actual code rather than assignment at declaration time
4564           (several users of Red Hat Linux 6.0 reported problems)
4565
4566 Fri May 21 20:05:00 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4567         * Added function CtdlGetDynamicSymbol() for dynamic symbol allocation
4568         * server.h: Changed discrete #define's to enum's where appropriate
4569         * sysdep.c: Changed the startup message to give credit to the whole
4570           development team :)  Also made the message more GNU-ish.
4571
4572 Thu May 20 20:01:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4573         * database.c: print log messages for file defragmentations
4574         * citserver.c: implemented CtdlAllocUserData() and CtdlGetUserData()
4575           for arbitrary per-session data storage (by modules etc.) without
4576           having to add fields to struct CitContext
4577         * msgbase.c: removed "desired_section" from struct CitContext and
4578           implemented it using CtdlGetUserData() as a test.
4579
4580 Wed May 19 19:30:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4581         * commands.c, commands.h, routines.c: began color scheme changes
4582
4583 1999-05-15 Nathan Bryant <bryant@cs.usm.maine.edu>
4584         * configure.in: Added untested support for BSDI 4.x.
4585
4586 1999-05-13 Nathan Bryant <bryant@cs.usm.maine.edu>
4587         * acconfig.h, configure.in, routines.c: fix for certain SYSV variants
4588           which lack utmp.ut_host
4589         * citadel.h, file_ops.c, msgbase.c, netproc.c, serv_chat.c: fix
4590           namespace collision with <sys/stream.h> on aforementioned SYSV
4591           variant
4592         * configure.in, getutline.c: check for paths.h
4593         * configure.in, Makefile.in: check for -lsocket and -lnsl
4594
4595 1999-05-11 Nathan Bryant <bryant@cs.usm.maine.edu>
4596         * chkpwd.c: fixed excessive paranoia; it used to refuse to run when
4597           invoked by root and BBSUID != 0
4598         * Makefile.in: ignore errors while installing /etc/pam.d/citadel
4599
4600 1999-04-27 Art Cancro <ajc@uncensored.citadel.org>
4601         * file_ops.c: fixed NDOP to not crash the server if it has trouble
4602           with a download file
4603         * netpoll.c: upped default packet size
4604
4605 Mon Apr 26 22:06:57 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4606         * Repaired IGnorant security hole blunder re. citmail
4607
4608 Sun Apr 25 12:44:08 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4609         * serv_chat.c: notify user of number of participants upon entering chat
4610         * Built the 5.53 distribution
4611
4612 Wed Apr 21 22:23:13 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4613         * aidepost.c: add -r flag to allow posting to rooms other than Aide>
4614         * serv_expire.c: now posts transcripts of all auto-purged rooms/users
4615
4616 Tue Apr 20 12:45:55 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4617         * messages.c: downloading more than MAX_MSGS messages now truncates
4618           (off the beginning of the list) rather than crashing.
4619
4620 Mon Apr 19 12:11:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4621         * whobbs.c: auto-detect when being called from a webserver, and act
4622           as a CGI (print HTTP headers and HTML output)
4623
4624 1999-04-18 Nathan Bryant <bryant@cs.usm.maine.edu>
4625         * serv_chat.c: fixed some potential buffer overruns (thanks dme)
4626
4627 Wed Apr 14 21:32:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4628         * Makefile.in: chmod 4755 citmail to prevent citmail from aborting
4629           when called from sendmail due to citadel.config security check
4630
4631 1999-04-13 Nathan Bryant <bryant@cs.usm.maine.edu>
4632         * dynloader.c: OpenBSD places underscores in front of symbol names
4633         * Makefile.in: fixed a few sillies
4634         * aidepost.c, citmail.c, file_ops.c, logging.c, msgbase.c, netmailer.c,
4635           netproc.c, rcit.c, routines.c, serv_upgrade.c: fixed time_t handling
4636           (have to cast it to long for printf/scanf)
4637
4638 Mon Apr 12 22:13:26 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4639         * aidepost.c: rewrote to unlink temp file before writing to it so that
4640           it will automatically go away if interrupted. Also ran indent -kr -i8
4641
4642 1999-04-12 Nathan Bryant <bryant@cs.usm.maine.edu>
4643         * configure.in, Makefile.in: taught it how to generate OpenBSD shared
4644           libraries
4645         * config.c, sysdep.c: fix -h option not setting proper modules dir
4646         * configure.in, citadel.spec: make --enable-chkpwd the default
4647         * setup.c: don't chown chkpwd
4648
4649 1999-04-11 Nathan Bryant <bryant@cs.usm.maine.edu>
4650         * configure.in: another OpenBSD fix, but we're still not quite there yet
4651         * serv_chat.c: warning fix
4652
4653 Thu Apr  8 22:51:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4654         * config.c: now requires a setup run for *any* rev level difference
4655         * Updated docs & confs for 5.53b1 release
4656         * setup.c: sets the 0600 permission bits on citadel.config that
4657           is checked for in config.c
4658
4659 1999-04-08 Nathan Bryant <bryant@cs.usm.maine.edu>
4660         * citserver.c: improved is_public_client(), also if a public_client
4661           only supplies a numeric address, attempt to resolve it
4662         * locate_host.c: verify that the forward DNS matches the reverse
4663         * locate_host.c, locate_host.h: more general interface
4664         * configure.in, acconfig.h: fixes for Digital UNIX
4665
4666 Wed Apr  7 21:36:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
4667         * Implemented "access level required to create rooms" (client & server)
4668
4669 1999-04-07 Nathan Bryant <bryant@cs.usm.maine.edu>
4670         * configure.in: updated help messages, OpenBSD support
4671         * setup.c: if /etc/inittab doesn't exist, don't ask to create an
4672           entry in it
4673         * server.h, sysdep.c: fix a potential deadlock/data corruption bug
4674         * room_ops.c: fixed the 'gdbm error: Illegal data' message when
4675           deleting a room which had never been posted to
4676         * user_ops.c: include errno.h
4677         * dynloader.c: fix for OpenBSD
4678
4679 1999-04-06 Nathan Bryant <bryant@cs.usm.maine.edu>
4680         * Makefile.in, configure.in, getutline.c, sysdep.c:
4681           fixes/bug workarounds for FreeBSD
4682
4683 1999-04-03 Nathan Bryant <bryant@cs.usm.maine.edu>
4684         * Makefile.in, configure.in, chkpwd.c, acconfig.h: support for
4685           `chkpwd', a setuid helper program for machines which use shadow
4686           passwords (configure --enable-chkpwd)
4687         * Makefile.in, configure.in, auth.c, citadel.pam, user_ops.c: support
4688           for PAM or shadow passwords (configure --with-pam)
4689         * Makefile.in: made some messages simpler
4690         * citadel.spec: updated for 5.53; correct name of tarball; build with
4691           --enable-chkpwd and --with-pam; add defattr tags so rpm's can be
4692           built by non-root user
4693         * commands.c: cosmetic cleanup
4694         * config.c: (security/paranoia) check permissions on citadel.config
4695         * configure.in: check for ncurses if we can't find curses
4696         * dynloader.c: warning fix
4697         * sysdep.c: don't complain if initgroups() fails
4698         * citadel.c: fix systems with SYSV-style signal handling (e.g. libc5)
4699         * Makefile.in: New! Improved! Cleaner! Shinier!
4700
4701 Sun Mar 21 14:21:47 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4702         * messages.c: cosmetic cleanups to message reading loop
4703
4704 Sat Mar 13 21:33:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4705         * commands.c: use bright colors by default in color mode
4706         * citserver.c: initialize wholist fields with (not logged in) etc.
4707
4708 1999-03-08 Nathan Bryant <bryant@cs.usm.maine.edu>
4709         * sysdep.c: call DLoader_Init() with an absolute path so that gdb can
4710           find module symbols
4711         * database.c: bail out if opening databases fails
4712
4713 Sat Mar  6 01:55:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4714         * serv_chat.c: use memfmout(), *not* cprintf() to transmit express
4715           messages.  Calling cprintf() on strings >256 bytes crashes the server
4716         * msgbase.c: minor logging fix in save_message()
4717
4718 1999-03-05 Nathan Bryant <bryant@cs.usm.maine.edu>
4719         * sysdep.c: add undocumented -r flag to citserver to prevent it from
4720           dropping root permissions.
4721         * sysdep.c: also drop supplementary groups
4722
4723 1999-03-04 Nathan Bryant <bryant@cs.usm.maine.edu>
4724         * config.c: error checking in put_config()
4725         * setup.c: chgrp files to the login group associated with BBSUID
4726         * sysdep.c: copyright 1987-1999; drop root perms; load modules and call
4727           master_startup() after dropping perms
4728
4729 Wed Mar  3 00:00:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4730         * Prevent buffer overruns in lowercase_name in [get|put]user()
4731         * client_chat.c: use citedit() for page composition
4732
4733 Sat Feb 27 07:47:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4734         * rooms.c: download_to_local_disk() prompts for a filename if a blank
4735           filename was supplied to it (for attachments without names)
4736         * mime_parser.c: strip leading whitespace in content_type & disposition
4737
4738 1999-02-24 Nathan Bryant <bryant@cs.usm.maine.edu>
4739         * configure.in: improved check for pthreads
4740         * configure.in, routines.c, acconfig.h: check for ut_type in struct utmp
4741         * configure.in, Makefile.in: support for building server modules as
4742           relocatable objects for BSDI (which still uses a.out *gag* *choke*)
4743         * configure.in: compiler choice & flags for BSDI; check for libtermcap
4744         * database.c: don't use a critical section in open_databases()
4745         * housekeeping.c: use getfloor()/putfloor() instead of
4746           lgetfloor()/lputfloor() in check_ref_counts()
4747         * mime_parser.c: include <errno.h>
4748         * msgbase.c: include <limits.h>
4749         * sysdep.c: hacks for BSDI. use signals to fake thread cancellation;
4750           don't call master_cleanup() directly from signal handler.
4751         * routines.c: prototype getutline() if necessary
4752         * getutline.c: stupid bugfix
4753         * acconfig.h, configure.in, locate_host.c, server.h: work around
4754           nonreentrant gethostbyaddr() on BSDI
4755
4756 Mon Feb 15 22:59:00 EST 1999 Vaggelis Tsirkas
4757         * citadel.c: increased hostname buffer size to handle very big names
4758
4759 1999-02-15 Nathan Bryant <bryant@cs.usm.maine.edu>
4760         * sysdep.c(main): initialize alen before call to accept()
4761
4762 1999-02-04 Nathan Bryant <bryant@cs.usm.maine.edu>
4763         * configure.in: improved check for cygwin
4764         * configure.in, routines.c: access utmp directly instead of calling
4765           `who' if getutline() is available.
4766         * configure.in, Makefile.in, getutline.c: replace getutline() on
4767           systems which don't have it
4768         * routines.c: now always access utmp directly unless we can't find
4769           utmp.h
4770
4771 1999-02-02 Nathan Bryant <bryant@cs.usm.maine.edu>
4772         * Fixes for Cygwin:
4773           - ifdef out file download methods that require named pipes (client)
4774           - include pthread.h and gdbm.h only if they are present (fixes
4775             auto dependency generation)
4776           - include snprintf.h where needed
4777           - handle .exe suffixes for "make install"
4778
4779 Tue Feb  2 22:15:08 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4780         * Overhauled the express messaging system (again)
4781
4782 Mon Feb  1 19:48:04 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4783         * messages.c: implemented client download of MIME attachments
4784
4785 Sun Jan 31 18:29:18 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4786         * Added qpdecode.c to the distribution (decodes quoted-printable)
4787         * Finished the MIME parser
4788         * Gave MSG0 a reasonable behaviour for MIME messages
4789         * Added the OPNA command for downloading attachments
4790
4791 Sat Jan 30 18:39:53 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4792         * Look for citadel.rc in current directory if not found elsewhere
4793         * More work on the MIME parser
4794         * Added base64.c to the distribution
4795
4796 1999-01-29 Nathan Bryant <bryant@cs.usm.maine.edu>
4797         * fixes for IRIX (thanks to wr and family for use of the Indy):
4798           - use memset()/memcpy() instead of bzero()/bcopy() in all cases
4799           - configure updates
4800           - handle `long' pid's
4801           - a few other little bits
4802
4803 Mon Jan 25 21:23:07 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4804         * Fixed bug in save_message() which crashed the server on mail to sysop
4805         * Rewrote pop_march() to be smarter about <G>oto heuristics
4806
4807 Sat Jan 23 14:32:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4808         * Changed internal storage of express messages from a linked list to
4809           a single, resizable buffer.
4810         * Added a "room order" key to the room record, to allow some control
4811           over room listing order.
4812         * Made the room list commands aware of the room order key.
4813         * Overhauled <G>oto heuristics to pay attention to floor & room order
4814
4815 Wed Jan 20 19:21:51 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4816         * Added some more code to the unfinished MIME parser
4817         * Changed module loading path to simply "modules" because after calling
4818           get_config(), the cwd is guaranteed to be the correct BBS directory.
4819
4820 Tue Jan 19 21:28:29 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4821         * Fixed a bug in the user editing command (client side)
4822         * Started a rewrite of the MIME parser
4823
4824 Thu Jan 14 21:21:15 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4825         * Brought over the mime_parser from WebCit and began preliminary work
4826           on supporting MIME format messages.
4827
4828 Tue Jan 12 22:30:00 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4829         * Various changes to begin work on support for MIME messages
4830                 - Defined format type 4 for MIME
4831                 - msgbase.c: *temporary* hacks in output_message() for Type 4
4832                 - citmail.c: added more robust header parsing, and support
4833                              for Type 4.  Also eliminated the crappy built-in
4834                              SMTP server.
4835                 - Updated some of the technical documentation
4836
4837 Sun Jan 10 13:34:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4838         * Fixed access to page log room
4839
4840 Fri Jan  8 12:35:09 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4841         * control.c: include <limits.h> to fix PATH_MAX undefined
4842         * serv_chat.c: made the following changes to cmd_sexp() --
4843                 * Send zero-length message to check only, don't send
4844                 * Send "-" message on the command line to invoke
4845                   the SEND_LISTING transfer mode for a multi-line message
4846         * Added facilities to log all pages to a room (site configurable)
4847
4848 Tue Jan  5 23:24:52 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4849         * Replaced all occurances of malloc(), realloc(), and free() in the
4850           server and server-modules with mallok(), reallok(), and phree().
4851           Wrote macros and a set of leak-tracking functions.
4852
4853 Sun Jan  3 20:38:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4854         * Documentation changes
4855
4856 Fri Jan  1 01:01:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
4857         * Fixed security problem relating to private rooms
4858
4859 Wed Dec 30 20:10:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4860         * sysdep.c: put a bigger string buffer into lprintf() to avoid overruns
4861
4862 Sat Dec 26 16:56:46 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4863         * internetmail.config: commented this file more clearly
4864
4865 Wed Dec 23 20:42:49 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4866         * citadel.c: added some experimental code to automatically reconnect
4867           to the server if the connection is broken.  For some reason, it only
4868           works once.
4869
4870 Wed Dec 23 18:47:12 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4871         * sysdep.c: ignore SIGPIPE.  This keeps broken connections from
4872           crashing the whole server.
4873         * Tagged everything for the official 5.50 release.
4874
4875 Mon Dec 21 07:54:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4876         * housekeeping.c: call kill_session() with session_to_kill,
4877           not ccptr->cs_pid (was crashing the server)
4878
4879 Sat Dec 19 13:57:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4880         * Added "-i" flag to netproc to make it skip the export phase.
4881           Updated other programs to call netproc in this way when appropriate.
4882         * Updated network.txt to reflect the usage for netproc (which has
4883           been wrong for several releases)
4884
4885 Thu Dec 17 00:17:04 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4886         * Started removing the word "beta" from the docs and code.
4887           Preparing for an actual release.
4888         * msgbase.c: generate an 'I' field when requested (i.e. on locally
4889           originating messages.  this was breaking parts of the network)
4890
4891 1998-12-15 Art Cancro <ajc@uncensored.citadel.org>
4892         * msgbase.c: remove extra call to alias() which was causing
4893           Citadel-to-Citadel mail to fall into the bit bucket.
4894         * msgbase.c: fixed tempfile naming problem that could cause a new
4895           outgoing netmail message to overwrite another if netproc had not been
4896           run in between
4897
4898 1998-12-14 Art Cancro <ajc@uncensored.citadel.org>
4899         * More session table stability nonsense
4900
4901 Sun Dec 13 17:40:08 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4902         * sysdep.c, citserver.c: (hopefully) fixed a session table concurrency
4903           bug which was causing the server to occasionally crash.
4904         * removed serv_test.so from the default build
4905
4906 Fri Dec 11 18:50:00 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4907         * setup.c: default value for maxsessions is now 0 (no limit)
4908         * room_ops.c: don't allow users to create a room called "Mail"
4909         * serv_expire.c: fixed "number of messages purged" display
4910         * commands.c: when using color, default to low-intensity colors
4911
4912 Tue Dec  8 07:58:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4913         * Beta 2
4914
4915 Sat Dec  5 01:24:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4916         * Added a new type of module hook for adding logging functions
4917         * Removed whitespace to left and right of '@' in netmail recipients
4918         * sysdep.c: read citadel.config _before_ initializing loadable modules
4919         * stats.c: fixed segfault resulting from extracting log lines
4920         * Ripped most of the "attachments" stuff out of both the client and
4921           server.  (Thought of a better way to handle it ... LATER.)
4922
4923 1998-12-03 Nathan Bryant <bryant@cs.usm.maine.edu>
4924         * setup.c: create citadel.config with mode 0600
4925         * Makefile.in: don't chmod sendcommand
4926         * serv_upgrade.c: don't create citadel.config if it doesn't already
4927           exist (paranoia)
4928         * setup.c: saner defaults for nodename and fqdn
4929
4930 Wed Dec  2 20:37:05 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4931         * msgbase.c: modified AddMessageToRoom() and all functions that call it
4932           to use a more reliable/accurate method to set quickroom.QRhighest
4933         * weekly.in: don't sort/purge filedir where filedir doesn't exist
4934
4935 1998-12-02 Nathan Bryant <bryant@cs.usm.maine.edu>
4936         * weekly is now generated by configure
4937
4938 Mon Nov 30 19:48:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4939         * room_ops.c: added sort_msglist() to move and save operations
4940         * sendcommand.c: added (also updated utils.txt, weekly, Makefile.in)
4941         * BETA 1
4942
4943 Sun Nov 29 23:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4944         * Fixed cmd_regi() to not display a second result code after xfer
4945         * Makefile.in: Removed "chmod 4755 citmail netmailer"
4946
4947 1998-11-23 Nathan Bryant <bryant@cs.usm.maine.edu>
4948         * citadel.spec: added
4949
4950 1998-11-22 Nathan Bryant <bryant@cs.usm.maine.edu>
4951         * Makefile.in: split install target into install-exec, install-data,
4952           and install-doc subtargets
4953
4954 Sat Nov 21 16:53:30 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4955         * Added a fourth color mode in the client: "user" which turns color
4956           on or off according to a per-user flag stored on the server.  Added
4957           server-side support for this too, of course.
4958         * import.c: removed
4959         * serv_expire.c: finished the code to purge stale visits
4960         * sysdep.c: strip trailing nonprintables in client_gets()
4961         * routines2.c: fixed <.AS> command; all configs now work properly
4962         * Moved num_parms() and all the extract() type functions into tools.c
4963           and removed them from all other files.  Linked in tools.[o|ro] there.
4964         * netproc.c: handled incoming file transfers to correct room directory
4965         * room_ops.c: fixed incorrect naming of files in info and images dirs
4966
4967 Fri Nov 20 20:29:07 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4968         * setup.c: removed all prompts that can be configured from within the
4969           client in order to simplify the setup procedure
4970
4971 Thu Nov 19 23:28:33 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4972         * Fixed serv_upgrade.c and export5.c (found elsewhere) to use a new
4973           export format which treats visits as a separate section
4974         * serv_expire.c: began writing functions to purge rooms and visits
4975           (neither work yet), and added a way to call defrag_databases()
4976
4977 Wed Nov 18 23:51:17 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4978         * Reimplemented 'visit' structs stored globally instead of as
4979           lists-per-user
4980
4981 Tue Nov 17 22:37:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4982         * Started implementing global room numbers.
4983
4984 Sun Nov 15 20:32:34 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4985         * room_ops.c: mailbox rooms always appear on the main floor
4986         * made QR_MAILBOX rooms non-editable
4987         * cmd_setr() delete old room record when room name changes
4988           (This causes a big mess that exposes a flaw in the whole design.)
4989         * room_ops.c: users can delete messages from their mailboxes
4990
4991 Thu Nov 12 23:59:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4992         * Rewrote cmd_rchg() and also increased the size of the "fakename"
4993           buffer.  Overruns are probably what was causing the crashes.
4994         * Changed the way cmd_ent3() handles mail messages; the previous code
4995           rerouted all private mail to the trash.
4996
4997 Wed Nov 11 17:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
4998         * citserver.c: slight changes to cmd_rchg() and cmd_hchg() [crashes]
4999         * citserver.c, msgbase.c, user_ops.c: hide the owner-prefix of mail
5000           rooms in a couple more places: set_wtmpsupp() and make_message()
5001         * sysdep.c: added an fflush() to lprintf() for "tail -f"-able logs
5002         * serv_expire.c: purge ops are now a command instead of a cleanup
5003           function.  This is probably temporary as well.
5004         * citadel.c: fixed the way <.WL> parses the returned data from a
5005           TIME command.
5006
5007 1998-11-11 Nathan Bryant <bryant@cs.usm.maine.edu>
5008         * serv_upgrade.c: fix uninitialized variable
5009
5010 Wed Nov 11 00:47:32 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5011         * msgbase.c: fixed a bug that was misrouting incoming network msgs
5012         * server.h, database.c: wrapped all GDBM calls in critical sections
5013           to avoid making those calls re-entrantly (gdbm fatal: lseek error)
5014
5015 1998-11-10 Nathan Bryant <bryant@cs.usm.maine.edu>
5016         * Makefile.in: link in snprintf.o where needed
5017
5018 1998-11-09 Nathan Bryant <bryant@cs.usm.maine.edu>
5019         * client_chat.c: eliminate calls to sprintf()
5020         * commands.h, routines.c, routines2.c: warning fix
5021         * commands.c, control.c, cux2ascii.c, file_ops.c, import.c,
5022           ipc_c_tcp.c: eliminate sprintf() calls
5023
5024 Mon Nov  9 19:15:31 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5025         * serv_upgrade.c: added all missing fields to export/import
5026         * serv_expire.c: support per-user purge time when purging users
5027         * user_ops.c: added per-user purge time to AGUP and ASUP commands
5028         * routines.c: added more stuff to <.A>ide <E>dit user
5029
5030 Sun Nov  8 22:56:53 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5031         * serv_expire.c: created; moved message expiry from serv_test.c,
5032           moved user purge from userpurge.c
5033         * userpurge.c: deleted
5034         * routines2.c: finished <.AS> command
5035         * room_ops.c: fixed Aide room access (for some reason, the Aide
5036           room had the QR_MAILBOX flag set)
5037
5038 1998-11-08 Nathan Bryant <bryant@cs.usm.maine.edu>
5039         * useradmin.c: really removed (cvs remove)
5040         * aidepost.c, citadel.c: convert all sprintf() calls to snprintf()
5041         * sysdep.c: fix overrun in lprintf() described by dme/Dead Monkey
5042         * citmail.c, citserver.c: convert all sprintf() call to snprintf()
5043
5044 Sun Nov  8 13:19:36 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5045         * useradmin.c: removed
5046         * utils.doc: removed references to useradmin and sysoputil
5047
5048 Fri Nov  6 20:22:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5049         * citadel.h (and related files): removed defunct parameters,
5050           c_defent and c_msgbase (erase your test bbs)
5051         * Implemented CONF server command for site-global configs
5052         * Shuffled yesno() and yesno_d() from routines.c to commands.c
5053         * commands.c: implemented boolprompt()
5054         * routines2.c: started adding CONF questions to <.AS> command
5055         * room_ops.c: began a fix for the mysterious disappearing Aide room
5056
5057 1998-11-05 Nathan Bryant <bryant@cs.usm.maine.edu>
5058         * snprintf.c: warning fix propagated over from gcit
5059
5060 1998-11-04 Nathan Bryant <bryant@cs.usm.maine.edu>
5061         * added RCS Id keyword strings to sources
5062         * citmail.c: reverted to version 1.10
5063
5064 Wed Nov  4 10:53:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5065         * messages.c: temporarily set screenwidth to a fixed value of 80
5066           during <P>rint operations.
5067
5068 Mon Nov  2 12:59:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5069         * setup.c: looks for 'citadel', 'bbs', or 'guest' in /etc/passwd to
5070           try to get a default for bbsuid if it's currently set to 0
5071         * citmail.c: changed usersupp.eternal to usersupp.usernum (why didn't
5072           it complain about this before?)
5073         * serv_upgrade.c: began writing an "export" command to do sidegrades
5074
5075 Sun Nov  1 18:47:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5076         * serv_upgrade.c: cosmetic changes
5077         * Implemented message expiry by date (this really needs to be moved
5078           out of serv_test.c, but where does it belong?)
5079
5080 1998-11-01 Nathan Bryant <bryant@cs.usm.maine.edu>
5081         * serv_upgrade.c: warning fixes
5082         * acconfig.h: remove ANSI_COLOR
5083         * Configure, Makefile.tmpl: removed
5084
5085 Sat Oct 31 20:48:44 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5086         * More stoopid ANSI colour additions here and there.
5087         * ANSI colour selection is now in citadel.rc instead of an option in
5088           the configure script.  "on" "off" and "auto" are available.
5089         * added "build.txt" to the techdoc directory, with LS's build notes
5090
5091 1998-10-31 Nathan Bryant <bryant@cs.usm.maine.edu>
5092         * citadel.c, commands.c, commands.h: set background color to black
5093           before clearing screen, so that we can actually see text on
5094           black-on-white xterms.
5095
5096 1998-10-29 Nathan Bryant <bryant@cs.usm.maine.edu>
5097         * rooms.c: fix color of Mail>
5098         * citadel.c: send ANSI detect sequence after attach_to_server() so the
5099           terminal doesn't send the answerback sequence to the shell if we
5100           can't connect.
5101
5102 Wed Oct 28 20:20:14 EST 1998 Art Cancro <ajc@uncensored.citadel.org
5103         * citadel.c: Added a splash of colour to the Wholist
5104
5105 1998-10-28 Nathan Bryant <bryant@cs.usm.maine.edu>
5106         * configure.in: added comments
5107         * mkinstalldirs: new file to be used for `make install'
5108         * aclocal.m4, missing: new files, also swiped from automake
5109         * citadel.c: don't mung the terminal if we can't find citadel.rc
5110         * Makefile.in: added `install' target, `clean' removes
5111           *.mo, rebuild configure when configure.in changes.
5112         * configure.in: check for install and autoconf
5113         * configure.in, Makefile.in: only pass -fPIC to gcc
5114         * policy.c: warning fix for OSF/1 (use memset() instead of bzero())
5115
5116 Tue Oct 27 22:25:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5117         * Unified the "unpacked database" format for both upgrades and
5118           sidegrades (also see export5.c elsewhere)
5119         * citserver.c: clear out cmdbuf before reading a command; some server
5120           commands were accidentally extracting parameters from previous cmds
5121         * rooms.c: removed the warning about the ineffectiveness of kicking
5122           users out of public rooms, because the new server can do lockouts
5123
5124 1998-10-27 Nathan Bryant <bryant@cs.usm.maine.edu>
5125         * sysdep.c (client_gets), ipc_c_tcp.c (serv_gets): improved handling
5126           of long lines. 
5127         * Makefile.in: partial support for VPATH builds, autodependency fix
5128
5129 Tue Oct 27 00:08:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5130         * minor documentation changes
5131
5132 Sun Oct 25 14:57:40 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
5133         * messages.c: fixed an oversight that was allowing attachments even
5134           when disabled in citadel.rc
5135
5136 1998-10-25 Nathan Bryant <bryant@cs.usm.maine.edu>
5137         * routines2.c: warning fix
5138
5139 Sat Oct 24 22:07:56 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5140         * Client: added message expiration policy questions to room edit
5141         * Client: added <.A>ide <S>ystem configuration command
5142
5143 1998-10-24 Nathan Bryant <bryant@cs.usm.maine.edu>
5144         * Makefile.in: Auto dependency generation (may require GNU make, but
5145           does at least function without this feature on OSF/1 make);
5146           Makefile is regenerated when Makefile.in changes (ditto);
5147           `realclean' is now known as `distclean';
5148           portability fixes for older Unix make utilities
5149         * citadel.c, citadel.h, commands.c: make client suspendable
5150
5151 Fri Oct 23 19:34:38 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5152         * setup.c: default node name is now obtained from uname()
5153         * config.c: added put_config()
5154         * policy.c: added, moved GetExpirePolicy() from room_ops.c
5155         * policy.c: implemented cmd_gpex() and cmd_spex()
5156
5157 Wed Oct 21 22:24:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5158         * Mail rooms now hide their owner-prefix from the client.
5159         * proxy.c: added configurability and primitive message expiry
5160
5161 1998-10-20 Nathan Bryant <bryant@cs.usm.maine.edu>
5162         * Makefile.tmpl: fix to build client with old Configure script
5163         * configure.in: autologin defaults to enabled if crypt() is available
5164         * room_ops.c: fix improper null-termination bug I introduced
5165
5166 Mon Oct 19 20:52:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5167         * Client ability to force display of prompts in Mail rooms, even when
5168           the user has prompting turned off (citadel.rc option)
5169
5170 1998-10-16 Nathan Bryant <bryant@cs.usm.maine.edu>
5171         * sysdep.c (cprintf): generate a newline on truncated buffer
5172         * room_ops.c: exploitable overrun fixes
5173
5174 Thu Oct 15 19:27:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5175         * msgbase.c: reimplemented cmd_move()
5176           room_ops.c: wrote AddMessageToRoom() which is used for both entering
5177           and moving messages.
5178         * setup.c: system-default message expire policy of "number of
5179           messages, 150" is now a default configuration instead of a temp hack
5180         * proxy.c: cache dir create now dies on any error except EEXIST
5181
5182 Wed Oct 14 22:41:16 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5183         * Misc code cleanup
5184
5185 1998-10-13 Nathan Bryant <bryant@cs.usm.maine.edu>
5186         * configure.in: don't check for -lcrypt unless autologin is enabled
5187         * file_ops.c: fix another overrun
5188
5189 Mon Oct 12 15:27:21 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5190         * Killed the "rooms" subdirectory (it isn't used anymore)
5191         * dynloader.c: Made dynamically added server commands case-insensitive
5192         * import.c is now serv_upgrade.c, a module
5193         * Removed most of the "level 9" trace messages no longer needed
5194
5195 1998-10-12 Nathan Bryant <bryant@cs.usm.maine.edu>
5196         * Makefile.in: simplified to use pattern rules; files compiled with
5197           -D_REENTRANT go to *.ro to allow the same files to be used with both
5198           client and server
5199         * tools.c, tools.h: new files; misc routines used by both client and
5200           server go here. contains safestrncpy() at the moment.
5201         * rooms.c: fix several exploitable buffer overruns
5202         * sysdep.c: fix infinite loop when long lines are received from the
5203           client; fix exploitable buffer overrun in cprintf()
5204         * ipc_c_tcp.c: fix infinite loop on long line from server
5205         * serv_upgrade.sh: remove uncnsrd-dependent absolute path
5206         * .cvsignore: add *.ro
5207
5208 Sun Oct 11 23:17:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5209         * Built some more of the message expiry infrastructure
5210
5211 1998-10-11 Nathan Bryant <bryant@cs.usm.maine.edu>
5212         * citserver.c: fix two more overruns, one of which was preventing
5213           the "From Host" from showing up in the <W>ho listing.
5214
5215 Sun Oct 11 02:51:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5216         * Moved "struct visit" and its associated defs from citadel.h to
5217           server.h where they belong
5218         * Set up data structures for room policies (expiry, etc.)
5219
5220 1998-10-10 Nathan Bryant <bryant@cs.usm.maine.edu>
5221         * citserver.c: fix overrun which caused segv's on servers with long
5222           hostnames.
5223
5224 Fri Oct  9 18:34:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5225         * user_ops.c: added PurgeStaleRelationships() to do processing at
5226           session logout time to remove visits for rooms which no longer exist
5227         * user_ops.c: implemented NewMailCount()
5228
5229 1998-10-09 Nathan Bryant <bryant@cs.usm.maine.edu>
5230         * serv_chat.c: fix buffer overrun that was resulting in segv's
5231         * serv_chat.c: fix another overrun that could cause sessions to hang,
5232           and cleaned up some other strncpy()-related stuff. DON'T FORGET TO
5233           NULL-TERMINATE DESTINATION BUFFERS AFTER STRNCPY CALLS.
5234
5235 Fri Oct  9 13:22:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5236         * Implemented "lazy mode" traversal - pressing the space bar will do
5237           <N>ext messsage, <G>oto next room, or read <N>ew as appropriate.
5238         * room_ops.c: modify CtdlRoomAccess() to allow access to mailbox rooms
5239           only to their owners.
5240
5241 Thu Oct  8 17:13:27 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5242         * messages.c, citadel.rc: added the ability to display message numbers
5243           in the header when reading messages.  I think this is butt ugly, but
5244           some of the DaveCode afficionados seem to like it...
5245
5246 Thu Oct  8 15:34:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5247         * room_ops.c: Added is_noneditable() function to replace all of the
5248           duplicated code present in all functions which edit room parameters.
5249
5250 1998-10-08 Nathan Bryant <bryant@cs.usm.maine.edu>
5251         * lots of warning fixes; builds with -std1 on dec unix
5252         * aidepost.c, citadel.h, citmail.c, file_ops.c, msgbase.c, netmailer.c,
5253           netproc.c, rcit.c, server.h, stats.c, userlist.c: use time_t where
5254           needed
5255         * control.c, room_ops.c, serv_chat.c, sysdep.c: use memset() instead of
5256           bzero()
5257         * dynloader.c, dynloader.h, messages.c, server.h, sysdep.c,
5258           sysdep_decls.h: function pointer/prototyping fixes
5259         * rooms.c: use mkfifo(3) instead of system("mkfifo")
5260
5261 1998-10-07 Nathan Bryant <bryant@cs.usm.maine.edu>
5262         * snprintf.c, snprintf.h: new files
5263         * Makefile.in, configure.in, dynloader.c, sysdep.c: support for the
5264           above; citserver now builds and runs on Digital Unix 4.0d with the
5265           GNU-style configure script. there is a bug with the hostname display
5266           in the wholist.
5267         * netproc.c: sillyness fix
5268         * room_ops.h: prototype delete_room()
5269         * client_chat.c, commands.c, serv_chat.c, sysdep.c:
5270           use HAVE_SYS_SELECT_H macro
5271
5272 Mon Oct  5 17:01:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5273         * Began fixing the stuff I broke
5274
5275 Sun Oct  4 23:35:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5276         * Did the big migration to the new data structures.  Lots of stuff is
5277           now broken.  Basic moving from room to room works, but Mail is
5278           broken, and some of the administrative commands are unimplemented.
5279
5280 1998-10-02 Nathan Bryant <bryant@cs.usm.maine.edu>
5281         * configure.in: autologin now defaults to disabled
5282
5283 Fri Oct  2 00:04:31 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5284         * Finally removed all three usersupp.foo[MAXROOMS] elements, and
5285           migrated all the code that used them to use "struct visit" instead.
5286
5287 Thu Oct  1 23:02:20 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5288         * Rewrote [l][get|put]room() functions to use room names rather than
5289           room index numbers.  Temporarily prepended a "n" to these four
5290           function names until they are put to use.
5291
5292 Thu Oct  1 16:27:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5293         * Removed a few more references to usersupp.lastseen[]
5294
5295 1998-10-01 Nathan Bryant <bryant@cs.usm.maine.edu>
5296         * .cvsignore: add so_locations (generated by osf1 ld with shared libs)
5297         * Makefile.in: restructured variables for greater consistency, use
5298           @echo to print out notices during the make process, add so_locations
5299           to `cleaner'
5300         * configure.in, Makefile.in: configure checks for -rdynamic
5301         * ipc_c_tcp.c: fix DEC compiler warning wrt unsigned char
5302         * stats.c: add semicolon to placate DREC compiler
5303         * user_ops.c: define _POSIX_C_SOURCE, include <limits.h>
5304         * configure.in: pass -pthread to DEC compiler, don't check for
5305           libpthread[s] on DEC Unix
5306
5307 1998-09-30 Nathan Bryant <bryant@cs.usm.maine.edu>
5308         * Makefile.in: new variable PTHREAD_DEFS for portability
5309         * aidepost.c, citadel.c, citmail.c, mailinglist.c, msgform.c,
5310           netmailer.c, netpoll.c, netproc.c, rcit.c, readlog.c, setup.c,
5311           stats.c, userlist.c, whobbs.c: return type of main() is int
5312         * citadel.c, commands.c, messages.c: use time_t properly
5313         * citserver.c: include <limits.h>
5314         * config.guess, config.sub, install-sh: new files
5315         * configure.in: don't use gcc on Digital Unix
5316
5317 Tue Sep 29 23:17:34 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5318         * room_ops.c: modified usergoto() to look at the new data structures
5319           for counting new messages and such.
5320
5321 1998-09-29 Nathan Bryant <bryant@cs.usm.maine.edu>
5322         * user_ops.c: fix compiler warning and potential memory leak,
5323           include sysdep.h
5324         * configure.in, Makefile.in: only build the server if we find pthreads
5325         * Makefile.in: realclean removes config.{cache,log,status}
5326
5327 Tue Sep 29 13:20:14 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5328         * Removed code from some of the utilities which was still attempting
5329           to access the old non-gdbm data store.
5330         * housekeeping.c: rewrote check_ref_counts() to do a ForEachRoom()
5331           traversal instead of a MAXROOMS loop.
5332         * sysdep.c: set up a dummy CitContext record to be used during server
5333           startup, during which time there is no real context.
5334
5335 Mon Sep 28 23:51:51 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5336         * Implemented the function ForEachRoom() to handle all-rooms traversal
5337           (this will work with both the old and new paradigms, because both
5338           use a GDBM database with one room per record).  Migrated all room
5339           list commands to use it.
5340
5341 Mon Sep 28 22:05:35 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5342         * Implemented the function CtdlRoomAccess() to handle *all* of the
5343           user-access-to-rooms functionality.  Migrated all room list commands
5344           to use it.  Still need to migrate gotos.
5345
5346 1998-09-28 Nathan Bryant <bryant@cs.usm.maine.edu>
5347         * configure.in, acconfig.h: new files; partially functional GNU
5348           autoconf configure script. Run autoheader; autoconf; ./configure
5349           --prefix=`pwd` to test.
5350         * Makefile.tmpl: new file; this is what Makefile.in used to be. Used by
5351           Configure.
5352         * Makefile.in: modified to work with autoconf-style configure script
5353         * Configure: modified to use Makefile.tmpl and generate autoconf-style
5354           macros. Removed procfs detection. Pass -O2 to gcc, -O to other
5355           compilers. Removed mknod/mkfifo detection; code should use mkfifo(3).
5356         * citmail.c, msgform.c, netproc.c, routines.c, support.c, userlist.c,
5357           whobbs.c: use HAVE_STRERROR macro rather than NO_STRERROR
5358         * commands.c: use HAVE_TERMIOS_H macro rather than POSIX_TERMIO
5359         * netproc.c: remove procfs stuff. simply attempt to kill the target
5360           process with signal zero instead; this checks whether the process
5361           exists.
5362         * setup.c, useradmin.c: use HAVE_CURSES_H macro
5363
5364 Sun Sep 27 23:41:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5365         * BOTH the old and new generation systems are being written to at
5366           this point.  Code that reads stuff is still using the old system.
5367
5368 Sun Sep 27 16:10:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5369         * Changed all "generation" variables from char to long, in preparation
5370           for removing MAXROOMS.  Generations for new rooms are now timestamps.
5371         * Defined "struct visit" to hold user/room relationships.
5372         * Removed some #define's from citadel.h that are no longer used.
5373
5374 Wed Sep 23 13:41:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5375         * More changes to support attachments.  They mostly work, but only
5376           in fixed-format messages.
5377
5378 Mon Sep 21 21:19:17 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5379         * msgbase.c: began laying the groundwork to support attachments.
5380           Purchased Rogaine(tm) in preparation for expected hair loss.
5381
5382 1998-09-21 Nathan Bryant <bryant@cs.usm.maine.edu>
5383         * msgbase.c: include dynloader.h
5384         * citadelapi.h: removed
5385         * dynloader.h: prototype CtdlRegisterUserHook()
5386
5387 Sun Sep 20 18:56:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5388         * Added a UserFunctionHook category to implement hooks which perform
5389           operations on various users or usernames
5390
5391 Fri Sep 18 21:14:41 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5392         * citserver.c: removed cmd_extn() and related code
5393
5394 1998-09-18 Nathan Bryant <bryant@cs.usm.maine.edu>
5395         * user_ops.c: include dynloader.h
5396         * roomstats.{c,mk}: removed
5397         * Configure, Makefile.in: autodependency-related fixes
5398
5399 Thu Sep 17 22:55:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5400         * Various changes to allow "new messages" to work correctly with Mail
5401
5402 Thu Sep 17 22:21:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5403         * server.h, dynloader.c, citserver.c, user_ops.c: reduced the number
5404           of hook types by inventing an EventType field to the Session hook.
5405         * proxy.c: added pre-fetching
5406
5407 1998-09-17 Nathan Bryant <bryant@cs.usm.maine.edu>
5408         * Makefile.in: add SERV_MODULES and PROXY_TARGETS to `cleaner'
5409         * dynloader.[ch], serv_{chat,test}.[ch], sysdep.c: cleaned
5410           up the dynamic loader interface as follows:
5411           - all the symbol table stuff is gone.
5412           - modules are loaded once at server startup and never unloaded.
5413           - Added a new function CtdlRegisterProtoHook() to handle the stuff
5414             that was being done with the symbol tables.
5415           - Dynamic_Module_Init() now returns a pointer to a static struct
5416             DLModule_Info; this structure itself has been modified to use char*
5417             fields instead of fixed char arrays.
5418         * roomstats.c: include <stdarg.h> not <stdargs.h> (is this file still
5419           in use?)
5420         * Configure, Makefile.in: added autodependency support
5421
5422 Wed Sep 16 22:25:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5423         * Implemented separate structs, lists, and functions for each type
5424           of server-side hook available.
5425
5426 1998-09-16 Nathan Bryant <bryant@cs.usm.maine.edu>
5427         * ipc_c_tcp.c: Fixed up some #include/prototyping stuff, call memcpy()
5428           instead of bcopy()
5429         * hooks.h: removed
5430         * sysdep.c, user_ops.c: removed reference to hooks.h
5431
5432 Wed Sep 16 11:42:42 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5433         * ipc_c_tcp.c: Reversed any changes that have been made to this file,
5434           because something was causing abominally slow response time.
5435         * proxy.c: added.  This will eventually become a caching, pre-fetching
5436           multiuser proxy server for the Citadel protocol.
5437
5438 1998-09-15 Nathan Bryant <bryant@cs.usm.maine.edu>
5439         * Makefile.in: remove support.o from serv_chat.so, add -fPIC to compile
5440           flags for serv_chat.o
5441         * dynloader.c: include "sysdep_decls.h", use RTLD_NOW not RTLD_LAZY
5442         * dynloader.h: prototype CtdlRegisterHook()
5443         * .cvsignore: added data
5444
5445 Mon Sep 14 20:49:08 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5446         * Tried my hand at adding the ability for server extensions to
5447           register various types of "hooks" in addition to just adding
5448           server commands.  This is probably not final.
5449
5450 Tue Sep  8 12:11:56 EDT 1998 Brian Costello <btx@calyx.net>
5451         * Added support for dynamic server modules.  Reworked serv_chat.c
5452           to be such a module.
5453
5454 Tue Sep  1 23:09:50 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5455         * userpurge.c: rewrote using functions from the server core, rather
5456           than the now-defunct external API.  This'll be ready once the module
5457           loading code is done.  (I just had to commit _something_ tonight.)
5458
5459 Mon Aug 31 22:47:58 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5460         * Yanked the citadelapi.c module.  This wasn't working out well.
5461         * techdocs/citadelapi.txt - began documenting the new API to be used
5462           by modules which will be dynamic linked into the server - most of
5463           this API is existing server functions.
5464         * Added a ForEachUser() function with callback mechanism, and reworked
5465           cmd_list() to use it.
5466
5467 Sun Aug 30 21:52:43 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5468         * Moved all of the gdbm databases to a separate "data" directory.
5469
5470 1998-08-26 Nathan Bryant <bryant@cs.usm.maine.edu>
5471         * Makefile.in: realclean removes Makefile, fixed `touch citadel.h'
5472           problem
5473
5474 1998-08-25 Nathan Bryant <bryant@cs.usm.maine.edu>
5475         * room_ops.c: include time.h
5476         * userlist.c, whobbs.c, serv_chat.c, user_ops.c, sysdep.c, stats.c,
5477           citadel_decls.h, commands.c, messages.h, routines.h, routines2.h:
5478           remove duplicated declarations
5479
5480 Mon Aug 24 23:45:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5481         * setup.c: Removed yesno_s()
5482         * citadel.h, room_ops.c: added QRmtime field to struct quickroom,
5483           modified whenever a room is modified or posted in.
5484         * citadelapi.c: Added CtdlForEachRoom() function
5485
5486 Mon Aug 24 20:04:04 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
5487         * Makefile.in: new target `cleaner' does the same as `realclean' 
5488           without removing sysdep.h
5489         * proto.h: is bad. eliminate. I've moved the prototypes into several
5490           header files, one per .c file
5491
5492 Mon Aug 24 00:45:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5493         * Added a CtdlGotoRoom() function to the CitadelAPI.
5494  
5495 Sun Aug 23 21:47:00 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5496         * sysoputil is finally dead!  Removed it from the build.
5497         * Added userpurge.c server extension (initial implementation)
5498
5499 Tue Aug 18 00:42:33 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
5500         * Makefile.in: `clean' target no longer rm's sysdep.h; new target
5501           `realclean' removes everything clean does, plus sysdep.h, plus
5502           target binaries.
5503         * Configure: add -Wstrict-prototypes to CFLAGS for gcc systems
5504         * *.[ch]: protoized. Added several new header files containing
5505           prototypes and other external declarations; many duplicated
5506           declarations still should be moved to header files. proto.h must die
5507           as well, IMHO.
5508
5509 Mon Aug 17 23:52:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5510         * Implemented a bunch of user account related functions in the
5511           CitadelAPI library.
5512
5513 Mon Aug 17 20:01:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5514         * Fixed the crash problem.  It wasn't AGUP/ASUP, but rather a buffer
5515           overrun in getuser() (thanks, Nathan).  Implemented overrun checks
5516           in getuser(), getroom(), and getfloor() to prevent future problems.
5517
5518 Mon Aug 17 00:06:52 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5519         * Updated citmail.c with the latest stuff from the production system.
5520         * Implemented AGUP and ASUP commands, but AGUP crashes the server
5521           after its first successful use (user-not-found's don't affect it).
5522
5523 Thu Aug  6 19:25:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5524         * Got the CitadelAPI library to the point where the server can start
5525           up an extension, and the extension will connect to the server, do
5526           some initialization, call a user-supplied CtdlMain(), and exit.  Also
5527           hacked together a _temporary_ form of the new EXTN server command.
5528  
5529 Wed Aug  5 23:02:22 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5530         * Second attempt at getting the server API started.  Now it runs
5531           outside of the server and builds a connection.
5532
5533 Tue Aug  4 18:33:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5534         * Modified the appearance of Internet addresses when they arrive on
5535           a Citadel system.
5536         * Removed the <E> field from the message format writeup in hack.txt.
5537         * Fixed-up citmail.c so that it doesn't try to do database lookups.
5538
5539 Mon Aug  3 23:01:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5540         * Started developing the server-side API.  This is in its very
5541           initial stages.  See serverapi.c and techdoc/api.txt
5542
5543 1998-08-02  Nathan Bryant  <bryant@cs.usm.maine.edu>
5544         * Makefile.in: added config_decls.h to dependencies
5545
5546 Sun Aug  2 21:09:09 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
5547         * config_defs.h: renamed to config_decls.h
5548         * config.c, sysoputil.c: updated to reflect the above
5549
5550 Sun Aug  2 18:52:05 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
5551         * config_defs.h: new file, contains external declarations from config.c
5552         * config.c: moved defs to config_defs.h, use PATH_MAX from <limits.h>
5553           for bbs_home_directory
5554         * mailinglist.c, support.c: include <string.h>
5555         * sysoputil.c: include <string.h>, <limits.h>, "config_defs.h", remove
5556           duplicated defs, replace gets() call with fgets()
5557         * user_ops.c: define _XOPEN_SOURCE_EXTENDED
5558
5559 Sat Aug  1 18:32:52 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
5560         * ipc_c_tcp.c: fixed order of memcpy parameters after gethostbyname
5561
5562 Sun Jul 19 17:26:12 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
5563         * ChangeLog: reordered; the GNU standard is to add new entries to the
5564           top.
5565         * .cvsignore: added userlist
5566
5567 Sun Jul 12 20:58:59 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
5568         * Finished migrating everything to the new data store.
5569         * Replaced the binary "calllog" with the ASCII "citadel.log"
5570         * Began converting broken utilities that depend on the old data store
5571
5572 Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
5573         * Makefile.in: removed msgstats
5574
5575 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
5576         * Initial CVS import