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