]> code.citadel.org Git - citadel.git/blob - citadel/ChangeLog
* Add vCards from incoming network messages in the GAB to the directory.
[citadel.git] / citadel / ChangeLog
1  $Log$
2  Revision 590.82  2002/01/23 05:04:05  ajc
3  * Add vCards from incoming network messages in the GAB to the directory.
4
5  Revision 590.81  2002/01/23 03:39:32  ajc
6  * Added a new hook type for handling incoming network messages
7  * Wrote a skeleton module for net filtering
8
9  Revision 590.80  2002/01/22 10:46:25  error
10  * read_message() and fmout() now accept a FILE to which to send their
11    output; this fixes quoting in the fullscreen client
12
13  Revision 590.79  2002/01/20 08:03:43  error
14  * curses client: use the status line as "input" line in chat mode
15
16  Revision 590.78  2002/01/20 07:43:07  error
17  * serv_chat.c: Server no longer crashes when CHATLOG can't be opened
18
19  Revision 590.77  2002/01/20 05:22:07  error
20  * curses client:  allow goodbye message to be seen on some terminals
21
22  Revision 590.76  2002/01/19 16:56:31  error
23  * Fixed color support, now works when rc_ansi_color is on or auto
24
25  Revision 590.75  2002/01/19 15:10:25  error
26  * Cosmetics for the client status line
27
28  Revision 590.74  2002/01/19 11:59:33  error
29  * A real status line for the text client
30
31  Revision 590.73  2002/01/19 10:08:43  error
32  * fix link for libcitserver.so to tools.o which I broke (oops!)
33
34  Revision 590.72  2002/01/19 09:59:08  error
35  * Full-screen curses support for Citadel text client
36
37  Revision 590.71  2002/01/17 20:11:05  nbryant
38  remove lock.c/lock.h; don't need them for what i was planning after all
39
40  Revision 590.70  2002/01/17 10:48:36  error
41  * cosmetic fixes in the new trace file functionality
42
43  Revision 590.69  2002/01/17 10:32:14  error
44  * lprintf() now logs the session ID for each log entry within a session.
45    Also SMTP, IMAP, POP3 and Citadel protocol commands are differentiated.
46
47  Revision 590.68  2002/01/17 10:16:09  error
48  * migratenet.c: cygwin fix: include limits.h
49
50  Revision 590.67  2002/01/17 10:13:31  error
51  * serv_ical.c: set expire policy for My Calendar> to manual
52
53  Revision 590.66  2002/01/17 07:18:11  ajc
54  * Changed all "free software" references to "open source" in order
55    to piss off Richard Stallman
56
57  Revision 590.65  2002/01/17 00:22:35  nbryant
58  added lock.[ch]: recursive read/write locking support. (not actually used yet)
59
60  Revision 590.64  2002/01/15 12:41:53  error
61  * Implement alternate_semantics (see comments in citadel.rc file)
62
63  Revision 590.63  2002/01/15 11:07:51  ajc
64  * vcard.c: updated vCard "object methods" to handle multiple instances of
65    the same key name when necessary.
66
67  Revision 590.62  2002/01/15 06:38:39  error
68  * Update citadelapi.txt with CtdlUnregister* calls, LogHook calls
69
70  Revision 590.61  2002/01/15 06:20:18  error
71  * Modules can now unregister any of their hooks (though none yet take
72    advantage of this).
73
74  Revision 590.60  2002/01/14 08:49:13  error
75  * Fixed bug in cmd_cre8() causing protocol to get out of sync when creating
76    a new room
77
78  Revision 590.59  2002/01/13 04:46:31  ajc
79  * Allow incoming SMTP to relay to other Citadel nodes for whom we are
80    providing directory service.
81
82  Revision 590.58  2002/01/13 04:06:33  ajc
83  * Repaired the problems I created when moving the_mime_parser()'s variables
84    from the stack to the heap.  (Hint: sizeof(char *) is 4, not 4096)
85
86  Revision 590.57  2002/01/11 15:46:57  error
87  * Allow users to move/copy messages between personal rooms
88
89  Revision 590.56  2002/01/11 04:59:00  ajc
90  * Finished most of the work for the Global Address Book.
91
92  Revision 590.55  2002/01/11 04:37:03  ajc
93  * More code for the Global Address Book
94
95  Revision 590.54  2002/01/11 02:57:35  error
96  * Don't print **** when sending a page or mail from an anonymous-only room
97
98  Revision 590.53  2002/01/10 21:22:37  ajc
99  * Minor changes for global directory service
100
101  Revision 590.52  2002/01/10 04:29:28  ajc
102  * Minor updates for directory service
103
104  Revision 590.51  2002/01/09 23:12:40  ajc
105  * Allow users to zap mailbox rooms
106
107  Revision 590.50  2002/01/09 04:37:32  ajc
108  * Finished the callback stuff for vCard address extraction
109
110  Revision 590.49  2002/01/09 04:05:53  ajc
111  * Began writing code to harvest Internet e-mail addresses from vCards, and
112    hacked together a temporary version (and writeup) of the IGAB command.
113
114  Revision 590.48  2002/01/08 16:34:22  ajc
115  * serv_vcard.c: cosmetic cleanup
116
117  Revision 590.47  2002/01/06 22:44:21  error
118  * Enable/disable encryption in client from command line and/or citadel.rc
119
120  Revision 590.46  2002/01/06 21:25:26  ajc
121  * sysdep.c: in client_write(), handle redirect_fp and redirect_sock *before*
122    handling redirect_ssl, because these need to be done the same way regardless
123    of client session crypto
124  * serv_crypto.c: pasted a bunch of Nathan's #ifdef blocks from sysdep.c in
125    order to gain greater portability (or even to get it to compile on splorph)
126
127  Revision 590.45  2002/01/06 11:13:33  error
128  * Enable SSL/TLS support in the client (again)
129
130  Revision 590.44  2002/01/06 11:11:31  error
131  * Enable SSL/TLS in the client
132
133  Revision 590.43  2002/01/06 10:49:55  error
134  * Add some #includes I apparently somehow missed
135
136  Revision 590.42  2002/01/06 10:33:10  error
137  * SSL/TLS support for the Citadel/UX wire protocol
138
139  Revision 590.41  2002/01/06 08:54:58  error
140  * user_ops.c: fixed become_session() when calling EVT_LOGOUT session hooks
141
142  Revision 590.40  2002/01/05 22:31:22  ajc
143  * Removed some protocol commands and writeups that are no longer necessary
144  * Began some of the framework for the Global Address Book
145
146  Revision 590.39  2002/01/05 12:44:43  error
147  * serv_chat.c: allow a session to be killed while in chat
148
149  Revision 590.38  2002/01/05 12:31:04  error
150  * user_ops.c: become_session() when calling EVT_LOGOUT session hooks
151
152  Revision 590.37  2002/01/05 04:51:36  error
153  * stats now sorts its top 20 lists properly
154
155  Revision 590.36  2002/01/04 20:57:36  nbryant
156  cygwin fix
157
158  Revision 590.35  2002/01/04 20:46:26  nbryant
159  Makefile fix for cygwin (fix migratenet linkage)
160
161  Revision 590.34  2002/01/04 20:43:26  nbryant
162  configure/genstamp: check for struct tm.tm_gmtoff
163
164  Revision 590.33  2002/01/03 22:01:17  ajc
165  * Fixed mail to "sysop"
166
167  Revision 590.32  2002/01/03 21:35:07  ajc
168  * I think this is the last of the fixes for the new submit queue.
169
170  Revision 590.31  2002/01/03 12:27:35  error
171  * Fixed my name in docs/copyright.txt, why didn't I notice that before?
172
173  Revision 590.30  2002/01/03 12:21:02  error
174  * Autoconf support for recognizing OpenSSL
175
176  Revision 590.29  2002/01/03 04:52:28  ajc
177  * serv_network.c: migrated deliveries and bounces to the new message
178    submission subsystem.  NOT TESTED.
179
180  Revision 590.28  2002/01/01 21:32:10  ajc
181  * Finished the updates to serv_smtp.c, although I think there may be a
182    problem with one-too-many reference counts when a message is submitted
183    via SMTP.
184
185  Revision 590.27  2001/12/31 20:15:13  ajc
186  * Almost finished converting serv_smtp.c to the new message submission
187    framework.  Still not done yet; don't use this.
188
189  Revision 590.26  2001/12/30 06:20:46  error
190  * More keys while reading messages:  Q or S same as Ctrl-C, N same as Ctrl-O.
191
192  Revision 590.25  2001/12/30 05:50:46  error
193  * Security:  Citadel now drops privileges when called from telnetd, also
194    checks to make sure you didn't set the setuid/setgid bits.  No more
195    loginwrapper.sh!
196
197  Revision 590.24  2001/12/29 05:19:32  ajc
198  * Minor cosmetic hack
199
200  Revision 590.23  2001/12/29 04:21:22  nixo
201  stupid me. I didn't realize that asking for the header did what I wanted
202  so I changed my little 'y' hack to not bother reading the text of the
203  message. a little saving on the bandwidth.
204
205  Revision 590.22  2001/12/28 22:32:38  nixo
206  Added a "read m<y> next" function in read mode. It will skip to the next
207  message by the user in the current message list (whatever mode you're in
208  be it read forward, last 50, whatever.)
209
210  Revision 590.21  2001/12/28 11:06:53  error
211  * More server support for hostnames up to 63 characters (oops I missed a spot)
212
213  Revision 590.20  2001/12/28 09:39:10  error
214  * Client support for hostnames up to 63 characters: truncated at 24 in
215    short who list, full display in long who list.
216
217  Revision 590.19  2001/12/28 09:28:04  error
218  * Server support for hostnames up to 63 characters
219
220  Revision 590.18  2001/12/26 05:01:30  ajc
221  * Added a new developer ID for Anticlimactic Teleservices
222
223  Revision 590.17  2001/12/23 10:00:43  error
224  * Pages are once again formatted to the caller's screen width.
225
226  Revision 590.16  2001/12/23 09:57:47  error
227  * tools.c: added parameter to fmt_date() to allow for printing the seconds
228    along with the time, e.g. 12:34 pm or 12:34:56 pm
229
230  Revision 590.15  2001/12/20 04:54:26  ajc
231  * If you paid for this software, someone is ripping you off.
232
233  Revision 590.14  2001/12/18 08:24:56  nbryant
234  more lovely configure tweaks (include paths for db)
235
236  Revision 590.13  2001/12/18 06:04:08  ajc
237  * Moved the buffers in the_mime_parser() from the stack to the heap, because
238    it was crashing boxen with small stack sizes.
239
240  Revision 590.12  2001/12/18 05:54:16  ajc
241  * Added more load_floorlist() commands to the beginning and end of functions
242    in the client that manipulate the floor list.  This fixes a bug in which
243    new floors don't show up right away after being created.
244
245  Revision 590.11  2001/12/17 08:14:26  nbryant
246  restored the checks for /usr/include/db3 and /usr/local/include/db3
247  in configure.  there are too many variations on db installation; this is
248  getting messy :-(
249
250  Revision 590.10  2001/12/17 08:00:45  nbryant
251  set the pthreads stack size to 128K because FreeBSD's default of 64K
252  seems too small. fixes crashes under FreeBSD.
253
254  Revision 590.9  2001/12/16 00:50:14  error
255  * Added usersupp.lastcall to the parameters returned from the PASS/PAS2
256    commands in logged_in_response().
257
258  Revision 590.8  2001/12/14 21:33:18  nbryant
259  finally changed configure to complain if there's no database driver ;)
260
261  Revision 590.7  2001/12/14 08:29:30  error
262  * Security: trace file is now only readable by owner, since it contains
263    plain text passwords.
264
265  Revision 590.6  2001/12/14 07:04:24  ajc
266  * Now you can send mail to yourself.  Hi from Stu.
267
268  Revision 590.5  2001/12/14 06:58:12  ajc
269  * Hi from Stu
270
271  Revision 590.4  2001/12/13 22:36:30  nbryant
272  make configure search for /usr/local/BerkeleyDB.4.0
273
274  Revision 590.3  2001/12/13 22:29:57  nbryant
275  make it compile with Berkeley DB 4.0.x
276
277  Revision 590.2  2001/12/11 21:31:07  nbryant
278   - test for -ldb3 before -ldb
279
280  Revision 590.1  2001/12/11 20:04:41  nbryant
281   - fix library flags, includes for portability
282   - malloc.h is deprecated
283   - fix genstamp, hopefully
284   - fix size_t *printf handling for portability
285
286  Revision 590.0  2001/12/08 03:31:41  ajc
287  * THIS IS 5.90
288
289  Revision 580.95  2001/12/08 03:30:37  ajc
290  * Final changes to networking docs for 5.90
291
292  Revision 580.94  2001/12/06 05:13:34  ajc
293  * Added the documentation for room sharing and listserv
294
295  Revision 580.93  2001/12/04 05:24:15  ajc
296  * Added two more bytes to the possible length of shared secrets in networking
297    due to some legacy support requirements.
298
299  Revision 580.92  2001/12/04 05:16:19  ajc
300  * mime_parser.c: change to memory allocation algorithm ... some badly done
301    messages were crashing the server
302
303  Revision 580.91  2001/12/03 22:48:16  ajc
304  * ooops.  Look for the QR2_SYSTEM flag in QRflags2, not QRflags.
305
306  Revision 580.90  2001/12/03 17:02:50  ajc
307  * dynloader.c: fixed improperly done declaration and mallok()
308
309  Revision 580.89  2001/12/03 04:28:02  ajc
310  * mime_parser.c: now uses built-in functions to decode base64 and
311    quoted-printable attachments, instead of piping data to outboard programs.
312
313  Revision 580.88  2001/12/03 02:45:46  ajc
314  * Began implementing some code to handle multiple recipients (but #define'd
315    it all out because we're approaching a release)
316
317  Revision 580.87  2001/12/03 01:50:17  ajc
318  * When sending mail, copy to the sender's "Sent Items>" room instead of to
319    the sender's "Mail>" room.
320
321  Revision 580.86  2001/12/02 23:36:24  ajc
322  * On a new system, set the default new user level to 4 instead of 1.
323
324  Revision 580.85  2001/12/02 23:27:01  ajc
325  * Removed references to the old networker from the documentation.  Did not
326    write any new documentation, so what's there now is kind of sparse.
327
328  Revision 580.84  2001/12/02 02:42:55  ajc
329  * Implemented new room flag QR2_SYSTEM which supresses the room from all
330    room listings, even for Aides (but it's still gotoable).  This will be used
331    for rooms which hold system configuration and message queues.
332
333  Revision 580.83  2001/12/01 19:23:26  ajc
334  * clientsocket.c: implement socket timeouts for read operations
335
336  Revision 580.82  2001/12/01 17:00:23  ajc
337  * serv_smtp.c: when multiple MX's are the same preference, randomize them
338
339  Revision 580.81  2001/12/01 07:18:28  ajc
340  * Fixed an SMTP delivery problem that was causing certain classes of
341    transient errors to cause a message to never be delivered.
342
343  Revision 580.80  2001/12/01 05:26:01  ajc
344  * Added a command "SMTP" to the Citadel protocol, to do some unimportant
345    utility/diagnostic functions.
346
347  Revision 580.79  2001/11/27 17:08:29  ajc
348  * When calling an external editor, set the environment variable
349    WINDOW_TITLE to an appropriate value.
350
351  Revision 580.78  2001/11/26 03:27:08  ajc
352  * new algorithm to load the use table
353
354  Revision 580.77  2001/11/17 19:55:08  ajc
355  * Updated some of the documentation
356
357  Revision 580.76  2001/11/16 04:43:12  ajc
358  * Eliminated the sock_puts_crlf() function and ensured that all SMTP client
359    commands are sent out using a single sock_write() call.  There are broken
360    SMTP server implementations that can't handle SMTP commands split across
361    multiple writes.  (Thanks to Andru Luvisi and Ben Mehlman for the idea.)
362
363  Revision 580.75  2001/11/15 04:11:30  ajc
364  * hack.doc: updated to reflect Cit86Net compatibility fields removed from the
365    file format (since we dumbed down the gateway software)
366  * ipc_c_tcp.c: removed SOCKS4 support.  Nobody uses it anymore.
367  * ipc_c_tcp.c: fixed a bug which caused the client to fall back to defaultPort
368    if a numeric port number was specified instead of a service name
369
370  Revision 580.74  2001/11/14 02:59:01  ajc
371  * Network run frequency is now a site-definable setting
372
373  Revision 580.73  2001/11/13 22:05:23  ajc
374  * Re-introduced the ability to enter IGnet mail into the system.
375
376  Revision 580.72  2001/10/29 22:59:22  ajc
377  * Renamed "SuppMsgInfo" to "MetaData" because that's what it is
378
379  Revision 580.71  2001/10/29 16:39:54  ajc
380  * Finished the migratenet utility (finally).
381
382  Revision 580.70  2001/10/28 05:18:51  ajc
383  * migratenet almost finished
384
385  Revision 580.69  2001/10/26 04:26:45  ajc
386  * more work on the net migrator
387
388  Revision 580.68  2001/10/23 03:37:33  ajc
389  * Threw a few more lines of code into migratenet.c
390
391  Revision 580.67  2001/10/20 18:10:50  ajc
392  * migratenet.c: added (not even close to being finished)
393
394  Revision 580.66  2001/10/17 21:07:20  nbryant
395  further format string cleanups (for i686-linux type sizes)
396
397  Revision 580.65  2001/10/17 20:41:07  nbryant
398   - declare *printf format specifiers if gcc detected
399   - format string fixes (compiles w/o warnings on alpha osf/1)
400
401  Revision 580.64  2001/10/17 19:40:38  nbryant
402  warning fixes and cleanups for 64-bit machines
403
404  Revision 580.63  2001/10/16 20:47:37  nbryant
405  - backed out -export-dynamic, it doesn't do anything and i've found the real
406  problem
407  - remove declaration for make_message
408
409  Revision 580.62  2001/10/16 19:18:49  nbryant
410  backed out that compiler detection change for Tru64. it's not incredibly
411  important and results in broken autoconf macro expansions.
412
413  Revision 580.61  2001/10/16 18:36:33  nbryant
414  reinstate -export-dynamic for citserver in case libtool decides to build
415  static libraries (why?)
416
417  Revision 580.60  2001/10/16 18:21:53  nbryant
418  add some explanatory text to bootstrap
419
420  Revision 580.59  2001/10/16 17:43:53  nbryant
421   - further configure tweaks for FreeBSD and Tru64 Unix
422   - updated to latest libtool configure fragment
423   - there are two functions named make_message. (?) so declare them both
424     static.
425
426  Revision 580.58  2001/10/16 01:48:55  nbryant
427  - configury tweaks for a /usr/include/db3 goof and Digital/Tru64 Unix
428  - #ifdef out inline on non-GCC compilers
429
430  Revision 580.57  2001/10/15 19:50:50  ajc
431  * Fixed a bug in the loopzapper that was corrupting the use table saved copy.
432  * Post notification in Aide> when the loopzapper catches a message.
433
434  Revision 580.56  2001/10/12 22:41:11  ajc
435  * Wrote the rest of the use table code.  Finished except for a bug.
436
437  Revision 580.55  2001/10/10 18:35:12  ajc
438  * Comments & cosmetics for previous update
439
440  Revision 580.54  2001/10/10 17:12:54  ajc
441  * Bugfix for MSG0 command to properly handle multipart/alternative
442
443  Revision 580.53  2001/10/06 21:32:29  ajc
444  * Finished the concurrency check for network polling.  (Now works both for
445    polling and being polled.  Severe UUCP deja vu.)
446
447  Revision 580.52  2001/10/06 20:28:06  ajc
448  * Began implementing some concurrency stuff for the networker
449
450  Revision 580.51  2001/10/06 19:51:47  ajc
451  * Stripped the build of obsolete parts of the old networker no longer in use.
452
453  Revision 580.50  2001/10/03 20:05:50  ajc
454  * serv_smtp.c: implement RFC2920 ESMTP "pipelining" extension on the server
455    side.  (No changes required other than advertising the extension.)
456
457  Revision 580.49  2001/10/03 03:15:16  ajc
458  * Implemented BOUNCE BOUNCE BOUNCE
459
460  Revision 580.48  2001/10/02 03:04:30  ajc
461  * Allow non-Aides to terminate sessions belonging to them
462
463  Revision 580.47  2001/09/24 18:55:13  ajc
464  * Completed migrating the "netpoll" utility into the serv_network module.
465    Removed this utility.
466
467  Revision 580.46  2001/09/21 20:58:25  nbryant
468  support different log_archive prototype in DB versions prior to 3.3
469
470  Revision 580.45  2001/09/20 04:17:10  ajc
471  * Inbound network authentication working.  Fixed a bug in the split-horizon
472    algorithm.  Still need to move the 'netpoll' command into the server.
473
474  Revision 580.44  2001/09/18 04:05:04  ajc
475  * Added host/IP and port to node config (client side only)
476
477  Revision 580.43  2001/09/17 23:55:45  ajc
478  * Support for IGnet routing (not tested)
479
480  Revision 580.42  2001/09/16 05:44:51  ajc
481  * serv_smtp.c: instead of doubling delivery retry times unbounded, set a
482    maximum retry time of SMTP_RETRY_MAX (currently set to 12 hours)
483
484  Revision 580.41  2001/09/09 16:19:29  error
485  * Updated PAM configuration file citadel.pam for Red Hat 7.x.
486
487  Revision 580.40  2001/09/09 03:19:38  ajc
488  * cdb_cull_logs() now removes log files as soon as the log_archive() function
489    says it's ok to do so.
490
491  Revision 580.39  2001/09/08 18:58:38  ajc
492  * More changes to the new networker.  Added client command for room sharing.
493
494  Revision 580.38  2001/09/07 04:05:27  ajc
495  * You guessed it: still more code for the new networker.
496
497  Revision 580.37  2001/09/06 05:47:29  nbryant
498  check for /usr/include/db3 (for RedHat 6.2; others?)
499
500  Revision 580.36  2001/09/06 05:23:14  nbryant
501  #include fix for glibc 2.1.3
502
503  Revision 580.35  2001/09/06 04:02:34  ajc
504  * A few more updates to the networker
505
506  Revision 580.34  2001/09/06 03:32:41  nbryant
507  build fix for sparc-sun-solaris2.8; i think the dependencies should be
508  set up properly for all platforms now.
509
510  Revision 580.33  2001/09/06 02:55:27  nbryant
511  build fix for Linux
512
513  Revision 580.32  2001/09/06 02:49:22  ajc
514  * Fixed paste-post mode (<.E>nter <A>scii) to append instead of replace when
515    the user hits <C>ontinue (bug reported by Stu Mark)
516
517  Revision 580.31  2001/09/06 01:26:39  nbryant
518   - port to Cygwin (DLL support, etc.)
519   - don't build SMTP module if there's no resolver library (eg on Windows)
520
521  Revision 580.30  2001/09/06 00:54:01  nbryant
522  updated to libtool 1.4.1 and automake 1.5
523
524  Revision 580.29  2001/08/29 02:51:25  ajc
525  * More work on the new networker.
526
527  Revision 580.28  2001/08/25 05:04:57  ajc
528  * Worked a little more on the in-server replacement for netproc
529
530  Revision 580.27  2001/08/22 04:18:17  ajc
531  * Realized that there was lots of similarly broken code in
532    process_rfc822_addr().  Wrote two new utility functions in tools.c
533    stripout() and stripallbut() and used them where appropriate.  This should
534    take care of all possible infinite loops.
535
536  Revision 580.26  2001/08/22 03:43:11  ajc
537  * internet_addressing.c: fixed a bug in process_rfc822_addr() that caused the
538    server to jump into an endless loop when an e-mail address contained
539    unbalanced angle brackets.
540
541  Revision 580.25  2001/08/15 04:26:02  ajc
542  * Added split horizon and delete-after-spool to the new networker
543
544  Revision 580.24  2001/08/14 02:41:57  ajc
545  * Began the migration of netproc into part of the serv_network.c module instead
546    of a standalone program.
547
548  Revision 580.23  2001/08/11 22:35:40  nbryant
549  updated citadel-with-berkeley-db.txt.
550   - updated build instructions
551   - improved backup procedures to be safer and more space-efficient.
552
553  Revision 580.22  2001/08/11 19:18:41  ajc
554  * Realized that I am stupid and started implementing server commands to load
555    and save network configurations, when I had already lovingly implemented the
556    CONF GETSYS and CONF PUTSYS commands to store arbitrary configuration sets
557    in the Local System Configuration> room.  Ripped the newer crap out.
558  * Implemented a skeleton of <.A>ide <S>ysconfig <N>etwork on the client side.
559
560  Revision 580.21  2001/08/11 03:51:56  ajc
561  * Removed the idle timer from the client.  Dialup is dead.
562
563  Revision 580.20  2001/08/06 21:33:29  nbryant
564  made the client fall back on port 504 if there's no /etc/services entry
565
566  Revision 580.19  2001/08/05 23:54:14  ajc
567  * prep for new network node infrastructure
568
569  Revision 580.18  2001/08/03 16:53:21  ajc
570  * Added some more "break" statements to the main switch..case loop in
571    citadel.c where they were needed.
572
573  Revision 580.17  2001/08/03 16:43:53  ajc
574  * database_sleepycat.c: when running txn_checkpoint(), handle DB_INCOMPLETE
575    return code as a warning instead of an error worthy of aborting the server.
576    See http://www.sleepycat.com/docs/api_c/txn_checkpoint.html for explanation.
577
578  Revision 580.16  2001/07/30 03:46:14  nbryant
579  made ForEachUser use a read-only cursor, too. there is now only one piece of
580  code in Citadel proper (not the database driver) that needs transactions.
581  that's check_ref_counts; in other words it's the only thing standing in the way
582  of a clean implementation of retryable transactions.
583
584  Revision 580.15  2001/07/29 22:24:04  nbryant
585   - added a new function to the database interface, cdb_close_cursor().  always
586  call this when you're finished with a traversal but didn't bother reading all
587  the way to the end.
588
589   - removed several cdb_begin_transaction()/cdb_end_transaction() calls that are
590  no longer needed because of the read-only cursor support.
591
592  Revision 580.14  2001/07/29 20:56:09  nbryant
593  change ForEachRoom to use read-only cursors by default. it can be overridden to
594  still use read/write cursors by doing:
595
596   cdb_begin_transaction();
597   ForEachRoom(...);
598   cdb_end_transaction();
599
600  the only place I found where it appears necessary to do so is check_ref_counts,
601  so this checkin affects that function too.
602
603  Revision 580.13  2001/07/29 20:06:33  nbryant
604  generate symlinks to .libs in modules directory
605
606  Revision 580.12  2001/07/28 00:02:50  nbryant
607  implemented read-only cursors. one of the advantages to these is that
608  transactions can be avoided; a cursor operation that occurs within a
609  transaction will often acquire a read lock on every single database page.  in
610  general, the Sleepycat documentation recommends avoiding transaction-protected
611  read-only operations where practical. read/modify/write operations can still
612  be transaction protected, of course.
613
614  to use a read-only cursor, call cdb_rewind without a previous call to
615  cdb_begin_transaction. the DB driver will notice this and prevent the current
616  thread from modifying data or starting a transaction until the cursor is
617  closed.
618
619  Revision 580.11  2001/07/27 20:45:44  nbryant
620  libtool has matured a lot since the last time i looked at it (years ago)
621  so we now use it to handle the details of building shared libraries and
622  the linker flags for the main executable.
623
624  in theory this should bring a lot more portability to the dynloader
625  subsystem and enable us to do things like transparently detect GNU vs Sun
626  linkers on solaris, for example
627
628  Revision 580.10  2001/07/27 03:29:04  nbryant
629  missed one thing in the autoconf move
630
631  Revision 580.9  2001/07/27 02:57:43  nbryant
632  support one cursor per database rather than one global cursor
633
634  Revision 580.8  2001/07/27 01:32:07  nbryant
635  remove the automatic transaction demarcation on singleton read operations
636
637  Revision 580.7  2001/07/26 21:43:46  nbryant
638   - move to autoconf 2.52
639   - random warning fix
640   - check for db 3.3
641
642  Revision 580.6  2001/07/24 13:17:54  ajc
643  * New UI for mailing list setup
644  * rooms.c: code cleanup
645  * docs update
646
647  Revision 580.5  2001/07/20 23:48:23  nbryant
648  fix build on solaris, check default install location for db 3.2, and silence
649  gcc 3.0
650
651  Revision 580.4  2001/07/16 14:24:30  ajc
652  * Silly cosmetic change to keep the wholist ordered by ascending session number
653
654  Revision 580.3  2001/07/13 00:01:36  ajc
655  * Shuffled around some of the housekeeping loop code
656
657  Revision 580.2  2001/07/11 17:01:10  ajc
658  * database_sleepycat.c: small changes to log messages
659
660  Revision 580.1  2001/07/11 04:35:40  nbryant
661  moved dret initialization in cdb_fetch, just in case
662
663  Revision 580.0  2001/07/03 03:07:06  ajc
664  * THIS IS 5.80
665
666  Revision 573.143  2001/07/03 03:06:50  ajc
667  * Last minute doco update for 5.80
668
669  Revision 573.142  2001/07/01 15:44:32  nbryant
670  configure.in: check for Berkeley DB first.
671
672  Revision 573.141  2001/06/27 23:34:30  ajc
673  * Added some verbage to messages/roomaccess to placate a user who keeps
674    bitching about privacy policy.
675
676  Revision 573.140  2001/06/19 03:41:04  ajc
677  * Ooops... last_cull needs to be declared static
678
679  Revision 573.139  2001/06/19 03:33:19  ajc
680  * imap_fetch.c: download MIME parts without decoding first.  We like that.
681  * database_sleepycat.c: added automatic culling of log files which have not
682    been written to in five days.
683
684  Revision 573.138  2001/06/17 19:42:23  nbryant
685  fix all the <time.h> vs. <sys/time.h> issues, hopefully
686
687  Revision 573.137  2001/06/07 03:28:37  ajc
688  * More tweaks to the MIME parser
689
690  Revision 573.136  2001/06/06 15:44:37  ajc
691  * msgbase.c: output extra newline at end of RFC822 message if necessary to
692    ensure that 000 termination string appears on a line by itself.
693
694  Revision 573.135  2001/06/06 04:22:25  ajc
695  * Moved memreadline() to tools.c
696  * internet_addressing.c: fixed conversion of fields to (hopefully) never get
697    into an active loop when encountering badly formed headers
698
699  Revision 573.134  2001/05/27 05:23:03  ajc
700  * Added a "no new messages" response in the client, displayed when a read
701    command turns up a zero message count.
702
703  Revision 573.133  2001/05/18 20:12:09  ajc
704  * Fixed bug in mime_parser.c that caused parts to be dropped when the last
705    boundary was the very last line of the message.
706  * serv_smtp.c: toned down some of the command response verbage.
707
708  Revision 573.132  2001/04/28 04:42:55  ajc
709  * Updated some of the docs.  Bumped version number to 5.80 in anticipation
710    of going into a release cycle soon.
711
712  Revision 573.130  2001/04/26 03:31:00  ajc
713  * Finished the implementation of per-message seen/unseen logic, both in the
714    server proper and in IMAP.  Citadel protocol uses new "seen" command.
715
716  Revision 573.129  2001/04/21 04:55:51  ajc
717  * Began implementation of per-message seen/unseen attribute
718
719  Revision 573.128  2001/04/20 03:39:54  ajc
720  * IMAP LIST/LSUB: made it case insensitive.  Also minor IMAP code cleanup.
721
722  Revision 573.127  2001/04/17 00:35:19  cough
723  * Modified rooms.c in the client so that it would allow inviting into
724    public rooms.  This is important since there is now a V_LOCKOUT
725    flag which prevents users who have been kicked from rejoining
726    a room unless/until you invite them back in.
727
728  Revision 573.126  2001/04/16 19:21:14  cough
729  * Fixed bug in room_ops.c that wasn't allowing aides to goto passworded
730    rooms without knowing the password.
731
732  Revision 573.125  2001/04/14 04:26:44  ajc
733  * Fixed an unterminated string bug in IMAP APPEND.  Storing messages should
734    work now.
735
736  Revision 573.124  2001/04/10 01:04:10  ajc
737  * Finished coding IMAP APPEND.  It works, but there's a bug in it somewhere
738    that is corrupting the memory.
739
740  Revision 573.123  2001/04/03 00:47:23  ajc
741  * Began implementing IMAP APPEND
742
743  Revision 573.122  2001/04/01 22:05:44  cough
744  * *Actually* fixed a botched ChangeLog entry.
745
746  Revision 573.121  2001/04/01 22:04:28  cough
747  * Fixed a botched ChangeLog entry.
748
749  Revision 573.120  2001/04/01 22:03:10  cough
750  * Changed two fclose()s to pclose()s.
751
752  Revision 573.119  2001/03/25 11:52:36  error
753  * serv_pop3.c: Fixed APOP. Now logs in properly. Also cleaned up some non-
754    RFC-compliant error messages.
755
756  Revision 573.118  2001/03/21 05:47:49  ajc
757  * Added the new IMAP mailbox string compare submitted by Daniel Malament.
758
759  Revision 573.117  2001/03/20 01:33:55  ajc
760  * Added the (\NoInferiors) tag to all rooms listed in IMAP.  This made Mozilla
761    behave very nicely.
762
763  Revision 573.116  2001/03/13 17:19:33  ajc
764  * support (BODY[HEADER.FIELDS(BLAH BLAH BLAH)]) and HEADER.FIELDS.NOT
765
766  Revision 573.115  2001/03/12 01:27:42  ajc
767  * Implemented SUBSCRIBE and UNSUBSCRIBE commands
768
769  Revision 573.114  2001/03/11 23:00:29  ajc
770  * Mega sexy hack to deliver express messages THROUGH IMAP!  uber coolness!!
771
772  Revision 573.113  2001/03/11 22:09:20  ajc
773  * Replaced the "citlogin" binary wrapper with the "loginwrapper.sh" script.
774
775  Revision 573.112  2001/03/11 20:06:53  ajc
776  * Fixed bug that created incorrect roomnames when sending pages
777
778  Revision 573.111  2001/03/11 19:23:32  ajc
779  * IMAP DELETE command ... also split up access control for room delete cmds
780
781  Revision 573.110  2001/03/10 17:29:07  ajc
782  * Implement proper access control for deleting messages from IMAP
783
784  Revision 573.109  2001/03/07 04:02:27  ajc
785  * Fixed some small IMAP bugs
786
787  Revision 573.108  2001/03/06 04:44:00  ajc
788  * Probable completion of STATUS, COPY, STORE, and EXPUNGE commands in IMAP
789
790  Revision 573.107  2001/03/06 03:31:58  nbryant
791  database-related cleanups and paranoia tests;
792  fixed a transaction-leak/deadlock problem in cdb_delete;
793  solved the SIGPIPE mystery (GDB stops on SIGPIPE is all it was)
794
795  Revision 573.106  2001/03/05 04:59:31  ajc
796  * IMAP COPY
797
798  Revision 573.105  2001/03/04 23:49:41  ajc
799  * IMAP EXPUNGE responses -should- be correct now
800
801  Revision 573.94  2001/02/20 00:02:56  ajc
802  * IMAP: implemented the STATUS command (sort of).
803
804  Revision 573.93  2001/02/19 22:24:41  ajc
805  * IMAP server: added untagged, unsolicited server messages for newly arrived
806    messages, and messages expunged by another session.
807
808  Revision 573.92  2001/02/17 05:53:35  ajc
809  * Repaired the creation of page log rooms in the wrong namespace when the
810    recipient does not yet have his/her log room created.
811  * Rewrite "EXPI messages" to run in two passes: one to gather messages to
812    purge and the next to delete them.  Works better in transactionland.
813
814  Revision 573.91  2001/02/14 08:11:27  error
815  * citadel.rc: added $Id$ (it's about time!)
816
817  Revision 573.90  2001/02/14 04:23:54  ajc
818  * Fixed POP3 server responses ending in \n instead of \r\n as they should be.
819    This was causing some clients (such as Pine) to lock up.
820
821  Revision 573.89  2001/02/13 04:06:14  ajc
822  * Worked out the remaining bugs in IMAP FETCH for the BODYSTRUCTURE and
823    BODY[n] data items.  I think.  So much protocol crud, so little time...
824
825  Revision 573.88  2001/02/13 01:18:44  ajc
826  * imap fetch
827
828  Revision 573.87  2001/02/12 04:31:34  ajc
829  * sysdep.c ig_tcp_server() - use IPPROTO_TCP instead of getprotobyname()
830
831  Revision 573.86  2001/02/08 04:45:58  ajc
832  * Fixed namespace problems resulting from the automatic namespece prefixing
833    added to create_room().  Also added the ability to specify "create a mailbox
834    but I've already supplied the namespace prefix" for situations where the
835    namespace isn't that of the logged in user.
836  * Made the POP3 server response messages slightly less humorous
837
838  Revision 573.85  2001/02/06 04:44:12  ajc
839  * Added a floor listing (complete with \NoSelect flag) to LIST and LSUB
840
841  Revision 573.84  2001/02/06 02:09:38  ajc
842  * citadel.rc: changed the default for local_screen_dimensions to 1, since
843    Internet users now outnumber dialup users 100 to 0.
844  * room_ops.c: added a really_create option to create_room().  Also moved the
845    generation of personal namespace into that function.  MODULE OWNERS PLEASE
846    CHECK YOUR CALLS TO AVOID MULTIPLE NAMESPACING!!
847  * room_ops.c: fixed a bug in cgetfloor() that left bad pointers around
848  * serv_imap.c: finished the CREATE command (finally)
849
850  Revision 573.83  2001/02/05 05:20:22  ajc
851  * Made some changes to functions which translate between Citadel room names
852    and IMAP folder names.  They're still buggy.
853
854  Revision 573.82  2001/02/04 23:17:28  ajc
855  * Implemented the IMAP CREATE command
856
857  Revision 573.81  2001/02/04 02:40:07  ajc
858  * more imap.  imap sucks.  die crispin die.
859
860  Revision 573.80  2001/02/03 10:02:12  error
861  * serv_ical.c: Verify that objects posted to My Calendar> are of type
862    text/x-calendar or text/calendar; abort saving if not
863
864  Revision 573.79  2001/02/03 09:30:46  error
865  * serv_ical.c: now creates a My Calendar> personal room, sets attributes
866
867  Revision 573.78  2001/02/03 08:21:00  error
868  * serv_ical.c and serv_ical.h added; skeleton code for now
869
870  Revision 573.77  2001/02/02 20:18:18  ajc
871  * Changed the error message in cdb_delete() to actually *say* cdb_delete
872    instead of cdb_store.  Useful to know which function failed...
873
874  Revision 573.76  2001/02/01 04:08:03  ajc
875  * IMAP minor change to mailbox name output
876  * Increased size of buffer in lprintf()
877
878  Revision 573.75  2001/01/28 09:50:02  error
879  * sysdep.c: lprintf() now generates timestamps
880
881  Revision 573.74  2001/01/28 07:35:04  error
882   * serv_bio.c: RBIO now also returns stats about a user, see session.txt
883
884  Revision 573.73  2001/01/16 04:03:13  ajc
885  * yeesh ... more on the IMAP BODYSTRUCTURE
886
887  Revision 573.72  2001/01/16 01:51:12  ajc
888  * imap bodystructure
889
890  Revision 573.71  2001/01/16 00:46:40  ajc
891  * Changed the MIME parser API *again* because we now need the ability to
892    supply callback functions to be executed before and/or after parsing a
893    multipart.  (Need this for IMAP BODYSTRUCTURE output.  Crispin sucks.)
894
895  Revision 573.70  2001/01/15 23:59:26  ajc
896  * user_ops.c: reject NULL password in CtdlTryPassword() instead of crashing
897
898  Revision 573.68  2001/01/15 20:34:04  ajc
899  * "Path:" removed for now because it confuses brain-dead Microsoft shitware
900    into thinking that mail messages are newsgroup messages instead.  When we
901    add NNTP support back into Citadel we'll have to add code to only output
902    this field when appropriate.
903
904  Revision 573.67  2001/01/15 16:30:31  ajc
905  * temporary implementation of 901 asynchronous express messages
906
907  Revision 573.66  2001/01/14 14:55:39  ajc
908  * Changed the format of <.W>holist <L>ong
909
910  Revision 573.65  2001/01/13 06:40:26  nbryant
911  merged remaining changes from TRANSACTIONS (using cvs update -j TRANSACTIONS)
912  which should now be considered closed.
913
914  Revision 573.64  2001/01/13 06:12:15  ajc
915  * Added the ASYN command
916
917  Revision 573.63  2001/01/12 22:05:46  ajc
918  * Fixed a bug that caused bogus wholist lines to be displayed when a non-aide
919    reads a list containing stealth mode sessions.
920
921  Revision 573.62  2001/01/09 05:39:45  ajc
922  * Merged in code from the TRANSACTIONS branch for testing.
923
924  Revision 573.61  2000/12/30 06:17:17  ajc
925  * Still more work on IMAP.  Damn this is tedious.
926
927  Revision 573.60  2000/12/30 04:55:05  ajc
928  * more buffer size stuff
929
930  Revision 573.59  2000/12/27 20:19:51  ajc
931  * The size constant "256" which shows up everywhere as a buffer size has now
932    been changed to SIZ.  And, SIZ has been defined now as 1024, not 256, because
933    we need 1024 byte buffers for most Internet protocols.
934
935  Revision 573.58  2000/12/27 05:09:58  ajc
936  * Added a skeleton IMAP "SEARCH" command (based on the FETCH logic)
937
938  Revision 573.57  2000/12/26 03:46:50  ajc
939  * More IMAP tweaks
940
941  Revision 573.56  2000/12/25 22:50:43  ajc
942  * Added an API function to extract and unfold specific RFC822 fields.
943  * imap-->fetch-->envelope-->in-reply-to now works
944  * More robust checking and reporting of temp file errors in the client
945
946  Revision 573.55  2000/12/25 20:43:24  ajc
947  * imap_fetch.c: added support for fetch-->envelope-->from
948
949  Revision 573.54  2000/12/20 04:09:24  ajc
950  * A few memory handling fixes to netproc.
951
952  Revision 573.53  2000/12/20 01:57:37  ajc
953  * netproc.c: added bounds check to fpgetfield()
954
955  Revision 573.52  2000/12/19 20:41:55  ajc
956  * Fixed generation of unique file names for network uploads etc.
957
958  Revision 573.51.2.11  2000/12/26 05:30:55  nbryant
959  remove extraneous transaction around dynamic module initializations. this will
960  fix the crash on database creation.
961
962  Revision 573.51.2.10  2000/12/24 23:00:58  nbryant
963  clean: also remove parsedate.c
964
965  Revision 573.51.2.9  2000/12/20 01:38:42  nbryant
966  require transactional cursors
967
968  Revision 573.51.2.8  2000/12/20 00:30:01  nbryant
969  release any stale db handles at the end of a server command
970  (unfinished transactions will be aborted to annoy lazy programmers)
971
972  Revision 573.51.2.7  2000/12/19 06:18:27  nbryant
973  set sched_yield as sleepycat's yield function. this should improve locking
974  performance.
975
976  Revision 573.51.2.6  2000/12/19 02:22:29  nbryant
977  added automatic transaction start/end on cdb_fetch, cdb_delete, and cdb_store
978
979  Revision 573.51.2.5  2000/12/18 03:51:13  nbryant
980  ditto S_USER_TRANS, S_CALLLOG, and S_HOUSEKEEPING, which are no longer used at
981  all
982
983  Revision 573.51.2.4  2000/12/18 02:49:17  nbryant
984  removed all references to S_MSGMAIN critical section; it wasn't really needed.
985  this should make things significantly more scaleable.
986
987  Revision 573.51.2.3  2000/12/17 22:12:48  nbryant
988  reworked shutdown sequence to wait for worker threads to terminate before
989  checkpointing and closing databases. it is no longer safe to call
990  master_cleanup() directly to force a shutdown; instead, just set
991  time_to_die to a nonzero value
992
993  Revision 573.51.2.2  2000/12/17 05:06:09  nbryant
994  added deadlock detection and cleaned up messages
995
996  Revision 573.51.2.1  2000/12/16 21:06:59  nbryant
997  created TRANSACTIONS branch
998  track cursor and transaction id's in thread-specific data
999
1000  Revision 573.51  2000/12/14 18:36:34  ajc
1001  * Fixed the "users not in chat" wholist display
1002
1003  Revision 573.50  2000/12/12 18:06:46  ajc
1004  * Removed the transaction stuff (but left the log in).  It wasn't working.
1005
1006  Revision 573.49  2000/12/12 06:19:55  ajc
1007  * Stabilize, dammit!!
1008
1009  Revision 573.48  2000/12/12 04:20:03  ajc
1010  * Made the transaction open/close a global thing, in a frantic attempt to get
1011    Uncensored to stop crashing.  More fixes on the way...
1012
1013  Revision 573.47  2000/12/11 06:08:41  ajc
1014  * Removed the housekeeper thread, moved terminate_idle_sessions() out to a
1015    timer event, and check_sched_shutdown() to the end of the worker thread
1016    loop.  Seems to have improved reliability (but why?)
1017
1018  Revision 573.46  2000/12/11 03:22:11  ajc
1019  * Added server-side REQT command to issue client termination requests
1020
1021  Revision 573.45  2000/12/11 02:19:26  ajc
1022  * Client now honors EM_GO_AWAY flag, used by the server to request that a
1023    client log off.  (The server doesn't support sending that flag yet, though)
1024
1025  Revision 573.44  2000/12/09 06:20:06  ajc
1026  * A few final touches to the Sleepycat DB back-end
1027
1028  Revision 573.43  2000/12/08 17:06:33  ajc
1029  * Wrap txn_begin and txn_end in S_DATABASE mutex
1030
1031  Revision 573.42  2000/12/07 20:21:39  ajc
1032  * begin/end transaction in master_startup()
1033
1034  Revision 573.41  2000/12/07 16:59:02  nbryant
1035  added --with-db and --with-gdbm options to configure
1036
1037  Revision 573.40  2000/12/07 04:50:33  ajc
1038  * Wrap housekeeper and timer events in transaction open/close functions
1039  * Checkpoint the DB as an EVT_TIMER event instead of after each session
1040    (runs each minute, but actually limited by the parameters of the function)
1041
1042  Revision 573.39  2000/12/06 04:44:36  ajc
1043  * Changed netproc to keep the use table in a flat file instead of a database
1044
1045  Revision 573.38  2000/12/05 05:32:58  ajc
1046  * Added support for non-USA country identities in vCard and registration
1047  * User edit now asks whether it should prompt to change the password
1048
1049  Revision 573.37  2000/12/03 04:12:21  ajc
1050  * Finished (mostly) the Sleepycat DB backend ... added transaction logging
1051
1052  Revision 573.36  2000/11/30 03:23:17  ajc
1053  * Got the Sleepycat DB back end working, by opening the databases in a non
1054    shared, non threaded mode, and using Citadel's locking to serialize access.
1055
1056  Revision 573.35  2000/11/29 05:00:02  ajc
1057  * I think the db stuff is ok, but my db library is fux0red...
1058
1059  Revision 573.34  2000/11/27 14:12:09  error
1060  * commands.c: fixups to print_express() to make external command not print
1061    extraneous stuff to the terminal and make the displayed message consistent
1062
1063  Revision 573.33  2000/11/27 10:41:14  error
1064  * print_express(): now uses GEXP instead of old PEXP; displays timestamps
1065
1066  Revision 573.32  2000/11/27 10:29:59  error
1067  * serv_chat.c: fix send_express_message() to include timestamps
1068
1069  Revision 573.31  2000/11/27 03:44:27  ajc
1070  * Initial checkin of database_sleepycat.c (doesn't work yet)
1071
1072  Revision 573.30  2000/11/26 05:24:22  ajc
1073  * msgbase.c: Added new API function CtdlOutputPreLoadedMsg(), and
1074    re-implemented the existing CtdlOutputMsg() as a wrapper around it.
1075  * imap_fetch.c: used the above function to do all output pre-loaded
1076
1077  Revision 573.29  2000/11/25 09:36:18  error
1078  * Added a bit of detail to syslog entries; now shows session id attached to
1079    client, hostname, and username, and time the session ended.
1080
1081  Revision 573.28  2000/11/25 06:17:06  ajc
1082  * Minor IMAP tweaks.  It still doesn't work.  :(
1083
1084  Revision 573.27  2000/11/23 07:22:21  error
1085  * citadel.spec: update version number
1086
1087  Revision 573.26  2000/11/21 11:12:56  error
1088   * domain.h: changed the HP/UX compatibility code to use defines from
1089     typesize.h for integers of specific bit widths (needed for Solaris, etc)
1090
1091  Revision 573.25  2000/11/12 04:20:49  ajc
1092  * Optimized server side input of message text
1093
1094  Revision 573.24  2000/11/10 03:55:06  ajc
1095  * Ford's Fix for Faster Functionality (save position during reply)
1096
1097  Revision 573.23  2000/11/09 04:48:50  ajc
1098  * tools.c: striplt() strips all whitespace, not just spaces
1099
1100  Revision 573.22  2000/11/07 20:47:21  ajc
1101  * imap_fetch.c: added a skeleton "ENVELOPE" fetch.  Currently sends NIL's.
1102
1103  Revision 573.21  2000/11/07 15:54:53  ajc
1104  * xx FETCH n:n BODY[pn.MIME] now works
1105
1106  Revision 573.20  2000/11/06 05:10:01  ajc
1107  * Changed the mime_parser() API (again) to allow "don't decode" mode
1108
1109  Revision 573.19  2000/10/29 18:11:07  ajc
1110  * Start numbering top-level MIME parts as 1, 2... not 1.1, 1.2...
1111
1112  Revision 573.18  2000/10/28 14:14:19  error
1113  * msgbase.c: eliminated most gotos; a single goto in alias() remains because
1114    it actually makes sense to do it that way...
1115
1116  Revision 573.17  2000/10/25 21:37:09  ajc
1117  * Implemented the AUTHENTICATE LOGIN command in IMAP
1118
1119  Revision 573.16  2000/10/25 19:20:37  ajc
1120  * FETCH now works for ranges *and* sets, and with sequence numbers *and* UID's
1121
1122  Revision 573.15  2000/10/24 20:39:59  ajc
1123  * Added RFC822, RFC822.HEADER, RFC822.SIZE, RFC822.TEXT fetch keys to IMAP
1124
1125  Revision 573.14  2000/10/23 20:26:51  error
1126  * War on goto:  rewrote a few easy functions to eliminate unnecessary gotos
1127
1128  Revision 573.13  2000/10/11 23:03:44  error
1129  * utilsmenu: obey $PAGER environment var, if any.  Default to more if neither
1130    $PAGER nor less is available.
1131
1132  Revision 573.12  2000/10/11 22:55:25  error
1133  * citadel.c: when ansi_color=user, enable color at login, so Lobby> posts
1134    displayed at login are in color
1135
1136  Revision 573.11  2000/10/11 22:47:51  error
1137  * domain.c: getmx() returns hostname as MX if no MX records found a la RFC 974
1138
1139  Revision 573.10  2000/10/10 19:18:12  ajc
1140  * Added support of macros ALL, BODY, FAST, and FULL to the IMAP FETCH command
1141
1142  Revision 573.9  2000/10/06 03:31:55  ajc
1143  * Mark Crispin is a fscking idiot.  IMAP is a convoluted mess.
1144
1145  Revision 573.8  2000/10/05 22:23:16  ajc
1146  * Slowly and painfully writing IMAP support
1147
1148  Revision 573.7  2000/10/04 22:39:06  ajc
1149  * Added skeleton versions of the LIST and LSUB commands to the imap server
1150
1151  Revision 573.6  2000/10/04 17:48:21  ajc
1152  * Allow Aides to zap rooms (site configurable setting)
1153
1154  Revision 573.5  2000/10/03 01:45:00  ajc
1155  * Changed the <.A>ide <S>ysconfig <G>eneral command to explicitly allow the
1156    global page log room to be disabled (answer "no" to set the log room to a
1157    null string)
1158
1159  Revision 573.4  2000/09/28 10:27:38  error
1160  * commands.c: changed sttybbs() to support HP/UX termios VMIN and VTIME
1161
1162  Revision 573.3  2000/09/24 22:01:45  ajc
1163  * ipc_c_tcp.c: don't hardcode BBSDIR path for unix domain sockets
1164
1165  Revision 573.2  2000/09/21 04:16:44  ajc
1166  * Fixed logged_in_response() so it only displays responses during Citadel
1167    protocol sessions.  (This was affecting POP etc.)
1168
1169  Revision 573.1  2000/09/11 22:05:04  ajc
1170  * citadel.c: accept -h <host> and -p arguments, so citadel can be called
1171    directly by telnetd, bypassing /bin/login.  It works, but not recommended at
1172    this time because it has to run as root.
1173
1174  Revision 573.0  2000/09/05 18:35:22  ajc
1175  * Tagged everything for version 5.73 release
1176
1177  Revision 572.39  2000/09/04 03:59:15  ajc
1178  IO's changes:
1179  ----------------------------
1180  revision 572.4
1181  date: 2000/09/03 06:36:01;  author: error;  state: Exp;  lines: +5 -1
1182  Added HP/UX linker flag for dynamic modules to work
1183  ----------------------------
1184  revision 572.3
1185  date: 2000/09/01 06:50:00;  author: error;  state: Exp;  lines: +8 -1
1186  Changed to use integer macros from typesize.h for specific bit widths
1187  ----------------------------
1188
1189  Revision 572.38  2000/09/01 20:17:08  ajc
1190  * msgbase.c: cmd_opna() - increase desired_section buffer from 64 to 256 bytes
1191
1192  Revision 572.37  2000/09/01 17:31:47  ajc
1193  * Fixed oopseth in control.c that might call fileno(NULL)
1194
1195  Revision 572.36  2000/09/01 13:37:16  ajc
1196  * control.c: chown citadel.control to bbsuid when opening/creating as root
1197
1198  Revision 572.35  2000/09/01 03:55:44  ajc
1199  * Fixed a few more references to the deprecated uncnsrd.mt-kisco.ny.us name
1200
1201  Revision 572.34  2000/09/01 03:43:09  ajc
1202  * Added 'author' command-line arg to aidepost.  Closes enhancement request
1203    #71 on bugzilla.
1204  * Put the default SMTP and POP3 ports back to 25 and 110.  Now that the
1205    unix domain socket bug is fixed, it's ok if these binds fail.
1206
1207  Revision 572.33  2000/08/31 23:02:15  ajc
1208  * ig_tcp_server() and ig_uds_server()  -  check to make sure queue length is
1209    always at least 5.  Zero-length queues can cause connection lockups.
1210
1211  Revision 572.32  2000/08/31 21:32:44  ajc
1212  * Still trying to fix a socket connect bug
1213
1214  Revision 572.31  2000/08/31 16:37:08  ajc
1215  * docs/import-export.txt: added.
1216
1217  Revision 572.30  2000/08/28 19:51:51  ajc
1218  * messages.c: cosmetic cleanup (coding convention and comments)
1219
1220  Revision 572.29  2000/08/26 20:23:18  ajc
1221  * Finished up the back end code for mailing list sends.  Sends now work!
1222
1223  Revision 572.28  2000/08/24 02:48:18  ajc
1224  * Merged in IO ERROR's diffs to make Citadel work with HP/UX
1225
1226  Revision 572.27  2000/08/22 02:31:47  ajc
1227  * nonce (for APOP-style auth) is now generated when a context is created
1228    instead of during protocol greeting functions.
1229  * Moved Citadel protocol nonce output from greeting to INFO
1230
1231  Revision 572.26  2000/08/18 21:09:36  ajc
1232  * Added a little more mailing list code to serv_network.c
1233
1234  Revision 572.25  2000/08/10 04:36:25  ajc
1235  * Fixed a bug in keyboard polling (in commands.c) which was causing the
1236    client protocol to get out of sync in certain conditions.
1237
1238  Revision 572.24  2000/08/10 02:42:13  ajc
1239  * Changed all the "200 ok" responses to more descriptive strings
1240  * Added a *temporary* protocol sync check.  Remove this!
1241
1242  Revision 572.23  2000/08/09 17:14:34  ajc
1243  msgbase.c: fixed a bug in
1244             remove_any_whitespace_to_the_left_or_right_of_at_symbol() that was
1245             causing the <R>eply function to fail on names with whitespace in
1246             certain parts of the string.  This closes Bug #56.
1247
1248  Revision 572.22  2000/08/05 04:24:00  ajc
1249  * Added [idle] to client wholist display for sessions idle >15 minutes
1250  * Added a generic "void *userdata" field to CtdlForEachMessage()
1251  * More prep for mailing list handling in the server
1252
1253  Revision 572.21  2000/07/30 04:36:12  ajc
1254  * Set up the SNET (Send NETwork config) and GNET (Get NETwork config) commands
1255    for the network overhaul.
1256
1257  Revision 572.20  2000/07/29 05:29:19  ajc
1258  * Changed the format of RWHO output to provide non-masqueraded user/room/host
1259    names (to Aides only) as additional fields rather than an extra line of
1260    output.
1261  * Changed the client to display new RWHO fields, in the "long" wholist only.
1262  * Default SMTP and POP ports are now -1, not 25/110.  These services must now
1263    be activated manually.
1264
1265  Revision 572.19  2000/07/24 00:39:13  ajc
1266  * Fixed a path problem when calling netmailer from mailinglist.c
1267
1268  Revision 572.18  2000/07/22 03:44:17  ajc
1269  * Prepared infrastructure for the networker rewrite
1270
1271  Revision 572.17  2000/07/17 02:38:08  ajc
1272  * Completed serv_vandelay.c (importer/exporter module)
1273  * sendcommand.c: fix behavior of SEND_LISTING mode
1274  * sysdep.c: client_gets() fill buffer with "000" terminator when returning -1
1275
1276  Revision 572.16  2000/07/14 03:06:55  ajc
1277  * Added .ATN (DOWN) and .ATS (SCDN 1) commands to the client
1278
1279  Revision 572.15  2000/07/10 23:36:08  ajc
1280  * Another attempt to fix the crashy crashy bug in serv_vcard
1281  * Did more work on the Art Vandelay module
1282  * Replaced all instances of sprintf(tempfile, tmpnam(NULL)) with strcpy()
1283
1284  Revision 572.14  2000/07/10 04:01:12  ajc
1285  * added an unfinished serv_vandelay.c (Art Vandelay module - importer/exporter)
1286
1287  Revision 572.13  2000/07/09 02:47:40  ajc
1288  * Overhauled the keepalive logic in the chat client.  Closes bug #20.
1289
1290  Revision 572.12  2000/07/09 02:27:02  ajc
1291  * Eliminated the whole SIGINT/SIGQUIT based handling of Ctrl-O and Ctrl-C
1292    keyboard interrupts.  Replaced with a non-blocking check for keyboard input
1293    which sets the global variable 'sigcaught' if either key was pressed.
1294    fmout() and pprintf() switch to 'drain mode' if sigcaught is set.
1295    This closes Bug #18.
1296
1297  Revision 572.11  2000/07/06 20:26:36  ajc
1298  * updated .Help SUMMARY
1299
1300  Revision 572.10  2000/07/04 20:02:46  ajc
1301  * Fixed potential crashy crashy bug in serv_vcard.c
1302
1303  Revision 572.9  2000/06/28 03:42:56  ajc
1304  * Changed the comments at the beginning of each file to a consistent format
1305  * Improved the parameterization of commands in the IMAP module
1306
1307  Revision 572.8  2000/06/27 01:27:13  ajc
1308  * Coupla very small changes to get on the road to IMAP support
1309
1310  Revision 572.7  2000/06/22 21:41:48  ajc
1311  * Made the ICQ stuff far more reliable ... by removing it!
1312
1313  Revision 572.6  2000/06/21 03:46:20  ajc
1314  * IMAP is now legal but useless, supporting NOOP, LOGIN, and LOGOUT.
1315
1316  Revision 572.5  2000/06/15 20:15:52  ajc
1317  * Inserted a skeleton IMAP module into the build.  IT DOES NOT WORK AT ALL.
1318
1319  Revision 572.4  2000/06/04 02:30:56  ajc
1320  * CtdlForEachMessage() now returns the number of messages processed.  It also
1321    accepts the MSGS_EQ mode, for targeting a specific message number (useful
1322    for determining whether the specified message actually exists in a room).
1323  * Completed the server side of the moderation system (serv_moderate.c module
1324    which implements the MMOD command)
1325
1326  Revision 572.3  2000/06/03 05:47:57  ajc
1327  * Replaced most of the very repetitive and very redundant access level checks
1328    in most commands with a single API call:  CtdlAccessCheck()
1329  * serv_moderate.c: added (not finished)
1330
1331  Revision 572.2  2000/06/02 03:38:50  ajc
1332  * Bind unix socket prior to TCP socket for citadel protocol
1333  * Fixed bug in sendcommand.c which was causing it to crash on attach
1334
1335  Revision 572.1  2000/05/26 19:27:51  ajc
1336  * Changed some of the rev-level sensitive stuff to look at the actual version
1337    of Citadel running, not the last version with which we ran setup
1338  * Added a moderation system.  Default filter level for new users is in the
1339    config file.  Per-user setting is in usersupp.  Moderation level of each
1340    message is in SuppMsgInfo.  Tweaked CONF, GETU, and SETU.  Read filter is
1341    working.  Moderate message up/down commands are not here yet.  See
1342    techdoc/moderation.txt for more info.
1343
1344  Revision 572.0  2000/05/23 02:09:30  ajc
1345  * Updated docs and tagged everything for the 5.72 release
1346
1347  Revision 571.7  2000/05/20 23:28:20  ajc
1348  * Fixed bug in client API that was causing netproc to crash
1349
1350  Revision 571.6  2000/05/15 00:05:19  ajc
1351  * Double the retry interval for SMTP deliveries after each failed attempt.
1352
1353  Revision 571.5  2000/05/11 03:08:47  ajc
1354  * serv_smtp.c: clear the relevant state buffers after an SMTP DATA command
1355    completes, allowing multiple messages in one session.  Closes bug #58.
1356
1357  Revision 571.4  2000/04/24 03:36:43  ajc
1358  * Removed references to strucmp() and struncmp(), replaced them with
1359    strcasecmp() and strncasecmp() as we did in the server a while ago, and
1360    set up the config script to figure out whether they need to be compiled
1361    in.  Also moved them to tools.h
1362  * Wrote a password manager for the client
1363
1364  Revision 571.3  2000/04/19 03:17:10  ajc
1365  * Don't ever expire the Local System Configuration> room
1366
1367  Revision 571.2  2000/04/16 19:03:47  ajc
1368  * Minor changes to avoid host lookup for local clients
1369
1370  Revision 571.1  2000/04/15 19:55:52  ajc
1371  * Fixed "Unvalidated users appear even with registration disabled" bug #36
1372
1373  Revision 571.0  2000/04/13 02:43:24  ajc
1374  * Fixed a problem that crashed the client during <G>oto commands if a room
1375    existed with a name more than 32 characters (thanks to Magus for reporting
1376    this one).
1377  * Tagged everything and updated docs for the 5.71 release
1378
1379  Revision 570.18  2000/04/10 01:47:22  ajc
1380  * More paginator changes.  Shuffled code around, added pagination to a bunch
1381    of other functions, and replaced the old, cumbersome pagination with the
1382    new, easy, API-based one in everything except message output.
1383
1384  Revision 570.17  2000/04/09 17:51:18  ajc
1385  * Added pprintf() (paginated version of printf) to the client-side API.  Now
1386    any client side function can be paginated simply by changing all of the
1387    printf's to pprintf's.  I've already done this for the user list and wholist
1388    (removing the old style pagination) and for "read directory."
1389
1390  Revision 570.16  2000/04/08 04:52:48  ajc
1391  * Another minor stoopid little time display fix
1392
1393  Revision 570.15  2000/04/08 03:58:12  nbryant
1394   * backed out the previous changes since they didn't look good on some
1395     xterms with a blue bold mode. just set the background color to black
1396     instead. this makes black-on-white terminals actually readable, if not
1397     particularly good looking.
1398
1399  Revision 570.14  2000/04/08 01:36:30  nbryant
1400   * citadel.c, commands.c: comment out cls() as this wasn't called if
1401     ansi_color=user anyway, and we have no way of knowing whether the user's
1402     terminal does background color erase, which was the reason for adding this
1403     in the first place. with the recent changes to color(), the display will get
1404     screwed up if they *do* have background color erase. perhaps this is a job
1405     for terminfo.
1406
1407  Revision 570.13  2000/04/08 00:37:42  nbryant
1408   * commands.c: fix color support for black-on-white color terminals such as
1409     CDE's dtterm. this just avoids white-on-white text; some color combinations
1410     such as yellow-on-white still aren't very legible due to contrast. There's
1411     not much I can think to do about that without affecting the look on the
1412     white-on-black terminals which probably account for most users.
1413
1414  Revision 570.12  2000/04/07 20:22:34  ajc
1415  * Fixed am/pm bug in time display
1416
1417  Revision 570.11  2000/04/07 19:22:45  ajc
1418  * For services disabled by setting port number to -1, administratively skip
1419    the bind instead of just allowing it to fail.
1420
1421  Revision 570.10  2000/03/31 04:31:02  ajc
1422  * Quick fix to 'stats' utility to purge records with bogus timestamps
1423
1424  Revision 570.9  2000/03/31 02:10:52  ajc
1425  * Caved in to pressure and enabled <R>eply in public rooms.
1426
1427  Revision 570.8  2000/03/28 03:55:53  ajc
1428  * Modified <.RU> to allow search for partial match
1429
1430  Revision 570.7  2000/03/27 03:08:19  ajc
1431  * Third parameter of CtdlDeleteMessages() now takes "" instead of NULL to
1432    specify 'any MIME type'.
1433
1434  Revision 570.6  2000/03/27 01:14:08  nbryant
1435   * Makefile.in: generate parsedate.c automatically
1436   * configure.in: check for bison/byacc/yacc. bison seems to build cleaner
1437     code.
1438   * parsedate.c: removed from CVS
1439   * parsedate.y: added #include <stdlib.h> so it builds with bison
1440
1441  Revision 570.5  2000/03/27 00:46:10  nbryant
1442   * First cut at Solaris fixes. There may still be some *printf("%s", NULL)
1443     type of issues lurking in the shadows.
1444
1445  Revision 570.4  2000/03/25 18:29:58  nbryant
1446  changed my email address
1447
1448  Revision 570.3  2000/03/23 02:41:50  ajc
1449  *** empty log message ***
1450
1451  Revision 570.2  2000/03/21 03:23:24  ajc
1452  * Experimental new linebreak mode
1453
1454  Revision 570.1  2000/03/20 14:43:19  ajc
1455  * "Brown paper bag" fix for SMTP bug (incoming long fields crash logger)
1456
1457  Revision 570.0  2000/03/19 23:42:34  ajc
1458  * This is the official 5.70 release.
1459
1460  Revision 1.494  2000/03/19 23:04:08  ajc
1461  * Small cosmetic change to date/time output
1462
1463  Revision 1.493  2000/03/19 05:02:39  ajc
1464  * SMTP hacks to deal with AOL braindamage
1465
1466  Revision 1.492  2000/03/18 18:18:04  ajc
1467  * Support multiline responses from SMTP servers when sending mail
1468
1469  Revision 1.491  2000/03/17 16:26:57  ajc
1470  * Set up a private "Sent/Received Pages" room for each user
1471
1472  Revision 1.490  2000/03/17 04:11:24  ajc
1473  * Moved bio-related commands out to a loadable module
1474
1475  Revision 1.489  2000/03/16 17:58:54  smw
1476  Created a docs directory.
1477  Moved install.txt to docs.
1478  Added inetmailsetup.txt (BBS server side e-mail)
1479  Added inetmailsetupmx.txt (local mail AND bbs e-mail
1480  Added inetsiteconfig.txt (describes the .asi command)
1481  Added siteconfig.txt (describes .asg)
1482  Added chat.txt (describes changes and new chat functionality)
1483  Made a couple of changes to install.txt (references to new documentation)
1484  Added Steve Williams to copyright.txt as the document writer.
1485
1486 Revision 1.488  2000/03/15 03:04:51  ajc
1487 * Added DEXP server command to disable incoming express messages.
1488 * <Q>uiet mode client side command to set/clear DEXP mode.
1489 * <K>nown rooms list displays through the paginator.
1490
1491 Revision 1.487  2000/03/12 00:21:35  ajc
1492 * Removed the semi-broken "chat room" functionality in the chat system, and
1493   replaced it with direct mapping to the actual Citadel room the user is in.
1494 * Display masqueraded roomname in chat, if applicable.  Fixes bug #19.
1495
1496 Revision 1.486  2000/03/11 21:29:37  ajc
1497 * SM_ flags for CtdlSaveMsgPointerInRoom() need to be a bit bucket, not an
1498   enum, since more than one can be passed.  Changed SM_DONT_BUMP_REF_COUNT
1499   from 3 to 4.  This also fixes bug #33.
1500
1501 Revision 1.485  2000/03/11 20:26:03  ajc
1502 * Reworked the <R>eply logic in messages.c - fixes bug #34
1503
1504 Revision 1.484  2000/03/11 19:22:19  nbryant
1505  * commands.c: improved timing of background keepalives if connection is
1506                lagged
1507
1508 Revision 1.483  2000/03/11 05:08:48  nbryant
1509  * commands.c: oops, that mutex stuff wasn't necessary
1510
1511 Revision 1.482  2000/03/11 04:09:03  nbryant
1512  * new threaded client code for background keepalives
1513
1514 Revision 1.481  2000/03/10 21:40:04  ajc
1515 * Changes to message base and networker to support Internet-style message
1516   ID's instead of the conventional Citadel style.
1517
1518 Revision 1.480  2000/03/08 03:36:37  ajc
1519 * Shut off hostname resolution when dealing with Unix domain sockets
1520 * Cleaned up the 'citmail' MDA tool
1521 * Added POP3 and SMTP port numbers to global system configuration
1522
1523 Revision 1.479  2000/03/07 21:54:58  ajc
1524 * Fixed the naming conventions and permissions for unix domain sockets.
1525
1526 Revision 1.478  2000/03/05 07:33:23  ajc
1527 * Added support for protocols over Unix domain sockets.
1528
1529 Revision 1.477  2000/03/04 22:36:23  ajc
1530 * Remove nulls appended to editor files during replace, edit, and print
1531   operations.  Truncate temp files during same operations.
1532   Closes bugs #6 and #7.
1533
1534 Revision 1.476  2000/03/04 05:29:18  ajc
1535 * Relax restrictions on editing of base rooms.  Renaming is not allowed but
1536   all other attributes can be edited.  Closes feature request #21.
1537 * Sending pages from the client now uses the same message editing functions
1538   as entering messages, allowing edit/abort.  Closes feature request #25.
1539
1540 Revision 1.475  2000/03/03 04:50:14  ajc
1541 * Moved all of the wholist masquerading commands into the serv_rwho module
1542
1543 Revision 1.474  2000/03/03 04:12:37  ajc
1544 * Finished the inbound side of gateway domain service
1545
1546 Revision 1.473  2000/02/27 04:55:51  ajc
1547 * Added "keymenu()" generic menu-maker to commands.c
1548 * Blocked non-numeric input to intprompt()  (fixes bug #16)
1549
1550 Revision 1.472  2000/02/27 03:57:35  ajc
1551 * Completed 'fsck'-like reference count verifier (server and client)
1552
1553 Revision 1.471  2000/02/26 18:30:40  ajc
1554 * Properly handle all aliases specified in network/mail.aliases for incoming
1555   SMTP mail (uses the alias() function, so if we replace that function with
1556   something that uses the same calling convention, it'll still work)
1557
1558 Revision 1.470  2000/02/26 05:15:38  ajc
1559 * Fortified the message base and SMTP code so that misdirected bounce messages
1560   end up in the Aide> room instead of getting dereferenced
1561 * Started writing a message reference count verifier ('fsck' for message base)
1562
1563 Revision 1.469  2000/02/25 06:14:05  ajc
1564 * Modularized the RWHO (Read WHO is online) command, basically as a pilot
1565   for modularizing all "non-API" functionality.
1566
1567 Revision 1.468  2000/02/24 03:44:00  ajc
1568 * Implemented holdoff time (15 minutes) for SMTP send retry.
1569 * Implemented "try for 3 days and then give up" on SMTP send.
1570
1571 Revision 1.467  2000/02/24 00:51:48  ajc
1572 * Client protocol synchronization check during exit from chat.
1573   This closes Bug #15.
1574
1575 Revision 1.466  2000/02/22 16:37:28  ajc
1576 * Minor tweaks to RFC822 output to keep brain-damanged MS Outlook from dying
1577
1578 Revision 1.465  2000/02/22 04:17:56  ajc
1579 * Got bounce messages working (mostly ... testers, please beat this up!)
1580 * Changed 'FIX' comments to 'FIXME' (less conflict, plus vim highlights it!)
1581
1582 Revision 1.464  2000/02/18 22:29:18  ajc
1583 * Coded up the "bounce" functions.  Still a coupla bugs.
1584
1585 Revision 1.463  2000/02/18 05:10:50  ajc
1586 * Made the <.ASI> command a bit friendlier.
1587 * SMTP sender now pays attention to "smarthost" entries in the system's
1588   Internet configuration, using them if one or more is present.
1589
1590 Revision 1.462  2000/02/17 05:27:39  ajc
1591 * Got the "MAIL From:" command sending the correct data.  (unnnhhhhnnhhhh...)
1592
1593 Revision 1.461  2000/02/16 22:06:26  ajc
1594 * Altered the display and conversion of RFC822 messages
1595
1596 Revision 1.460  2000/02/16 03:43:28  ajc
1597 * Added the resolver library to the configure script
1598
1599 Revision 1.459  2000/02/16 01:19:39  ajc
1600 * Vanquished the evil dn_expand() beast.  getmx() now seems to be working.
1601
1602 Revision 1.458  2000/02/14 04:36:14  ajc
1603 * sysdep.c: added new event hook type EVT_TIMER.  Timer event hooks are called
1604   once per minute by any worker thread.
1605 * msgbase.c: removed dependence on nested functions in CtdlOutputMsg() by
1606   replacing them with an API call CtdlRedirectOutput() in sysdep.c, which
1607   can temporarily redirect a session's output to an arbitrary file or socket.
1608 * serv_smtp.c: implemented the purging of messages in the queue for which all
1609   deliveries have been completed.
1610 * serv_smtp.c: removed temporary 'QQQQ' server command and replaced it with
1611   a timer event hook that runs the queue once per minute (this needs to be
1612   made more robust)
1613
1614 Revision 1.457  2000/02/08 21:00:47  ajc
1615 * Implemented the deprecated "LAST" command in POP3.  Some clients need it.
1616 * POP3 sessions now set the last-read pointer in Mail>.
1617
1618 Revision 1.456  2000/02/07 05:15:00  ajc
1619 * Renamed CtdlLocalHost() to CtdlHostAlias() and worked it a little deeper into
1620   the message routing logic.  Still needs some work on the gateway-domain
1621   stuff.
1622 * Twiddled CtdlOutputMsg() a bit for 'all Internet' situations.  Still needs
1623   some work to avoid printing dual headers when both Cit and RFC822 exist.
1624
1625 Revision 1.455  2000/02/03 03:57:35  ajc
1626 * Formalized the 'Internet Configuration' logistics.  Added new API call
1627   CtdlLocalHost() to detect aliases for the local host.  Used in SMTP listener.
1628
1629 Revision 1.454  2000/01/31 02:13:05  ajc
1630 * <.A>ide <S>ystem configuration <I>nternet  in the client (unfinished)
1631
1632 Revision 1.453  2000/01/26 02:41:27  ajc
1633 * SMTP delivery is working but still *very* rough.
1634
1635 Revision 1.452  2000/01/25 04:45:50  ajc
1636 * Wrote enough of the SMTP sender to get Patriot drooling over it, but not
1637   enough to complete the transmission of mail.
1638
1639 Revision 1.451  2000/01/23 21:25:45  ajc
1640 * Temporary hack to ig_tcp_server() to listen on an arbitrary port if the
1641   one specified is not bindable (for development only)
1642 * Added SM_DONT_BUMP_REF flag to CtdlSaveMsgPointerInRoom() to be used only
1643   in very specific and special situations
1644 * Generate delivery instructions when outbound SMTP mail is created from
1645   within Citadel (as opposed to being from the SMTP module)
1646
1647 Revision 1.450  2000/01/23 05:22:41  ajc
1648 * Coded up some more of the SMTP-sender (still not done)
1649
1650 Revision 1.449  2000/01/22 05:13:56  ajc
1651 * Added some more functionality to the string tokenizer
1652
1653 Revision 1.448  2000/01/17 20:57:43  ajc
1654 * CR to CRLF hacks (lose, lose, lose)
1655
1656 Revision 1.447  2000/01/17 18:30:27  ajc
1657 * Completed POP3 server.  All RFC1939 commands except APOP are implemented.
1658
1659 Revision 1.446  2000/01/17 17:09:23  ajc
1660 * Implemented LIST and STAT commands in the pop3 server
1661
1662 Revision 1.445  2000/01/17 05:38:14  ajc
1663 * citserver.c: cleanup hook functions are now run under the proper context,
1664                even when initiated by the housekeeper thread
1665 * serv_pop3.c: establish a place to hold the message list
1666
1667 Revision 1.444  2000/01/17 04:26:39  ajc
1668 * Modified CtdlOutputMsg() to handle output to arbitrary sockets or files.
1669   This uses nested functions and may not be portable beyond GCC...
1670
1671 Revision 1.443  2000/01/15 18:29:15  ajc
1672 * Added a generic (void *) parameter to the ForEachUser() and ForEachRoom()
1673   callback mechanisms, to allow callers and callbacks to pass arbitrary data
1674   between each other without requiring TSD variables.
1675 * room_ops.c: eliminated the need for 'FloorBeingSearched' TSD variable
1676 * internet_addressing.c: eliminated 'buffer1' and 'buffer2' TSD variables
1677
1678 Revision 1.442  2000/01/15 04:31:44  ajc
1679 * Removed UI_DIALOG mode in setup.  Can't count on 'dialog' to be consistent.
1680
1681 Revision 1.441  2000/01/15 04:07:17  ajc
1682 * Fixed the access rights on auto-created rooms (the same changes that were
1683   made to version 5.62 in the stable tree)
1684
1685 Revision 1.440  2000/01/13 03:32:36  ajc
1686 * techdoc/delivery-list.txt: added (syntax for delivery lists)
1687 * domain.*: added (will contain MX lookup code)
1688 * internet_addressing.c, logging.c: fixed some buffer overflow bugs
1689
1690 Revision 1.439  2000/01/12 03:56:27  ajc
1691 * sysdep.c: start the housekeeping thread *after* dropping root perms.
1692
1693 Revision 1.438  2000/01/09 19:03:16  ajc
1694 * Removed the fifo-based protocol downloads and replaced it with a less
1695   elegant "download temporary file to client, then sx/sb/sz" because
1696   downloading through a fifo was confusing some software.
1697
1698 Revision 1.437  2000/01/08 22:19:44  ajc
1699 * Completed spool to outbound delivery queue (still no queue sender implemented)
1700
1701 Revision 1.436  2000/01/08 05:00:09  ajc
1702 * Reworked some of the data structures to handle multiple recipients
1703 * Began implementation of the delivery queue
1704 * Added CtdlReallocUserData()
1705 * CtdlSaveMsg() now returns the local message ID in the database
1706
1707 Revision 1.435  2000/01/06 03:50:34  ajc
1708 * Replaced citmail.c with a new one that simply SMTP-forwards to Citadel
1709 * Started outbound SMTP queue work
1710
1711 Revision 1.434  1999/12/30 04:56:29  ajc
1712 * Got initial SMTP delivery working in a very specific situation (delivery
1713   to a single, local user)
1714
1715 Revision 1.433  1999/12/29 04:44:00  ajc
1716 * client_chat.c: display "No message sent" if a send page is aborted.
1717   Closes bug #2 in bugzilla.
1718
1719 Revision 1.432  1999/12/26 21:50:07  ajc
1720 * serv_vcard: don't run hooks when not logged in (such as in SMTP sessions)
1721 * serv_pop3: added.  This is the skeleton for a module implementing POP3.
1722
1723 Revision 1.431  1999/12/23 04:46:23  ajc
1724 * "Finished" initial hack of RFC822 import
1725
1726 Revision 1.430  1999/12/22 04:46:34  ajc
1727 * Fixed up the "Date:" headers to be RFC822-compliant
1728
1729 Revision 1.429  1999/12/13 05:30:57  ajc
1730 * Removed our naive 'conv_date()' RFC822-to-unixtime conversion function
1731   and replaced it with the public domain 'parsedate()' function from UseNet
1732
1733 Revision 1.428  1999/12/10 23:58:25  ajc
1734 * internet_addressing.c: added.  (Internet address to Citadel mapping)
1735
1736 Revision 1.427  1999/12/10 21:34:19  ajc
1737 * serv_smtp: implemented RFC821 "VRFY" and "EXPN" commands
1738
1739 Revision 1.426  1999/12/09 05:01:14  ajc
1740 * Split cmd_user() and cmd_pass() into frontend/backend functions
1741 * serv_smtp: implemented AUTH LOGIN for client authentication
1742
1743 Revision 1.425  1999/12/09 00:22:58  ajc
1744 * Finished the "arbitrary service" registration.
1745 * Eliminated "special" master socket for Citadel protocol - just register it
1746   like any other protocol.
1747 * Began initial implementation of native SMTP service.
1748
1749 Revision 1.424  1999/12/08 18:09:10  ajc
1750 * Added CtdlRegisterServiceHook() and its data type, for implementing arbitrary
1751   TCP-based services directly in the Citadel server.  Not finished yet.
1752
1753 Revision 1.423  1999/11/29 17:39:07  nbryant
1754 * citserver.c: Solaris lacks inet_aton; use inet_addr instead
1755
1756 Revision 1.422  1999/11/29 17:26:15  nbryant
1757 * citserver.c: include <sys/types.h>; may help portability to Solaris
1758
1759 Revision 1.421  1999/11/22 00:27:42  ajc
1760 * Added some temporary variables to OpenCmdResult().  Hopefully fixes
1761   bug #14 when running on FreeBSD.
1762
1763 Revision 1.420  1999/11/21 18:30:16  ajc
1764 * Protected cmd_move() from buffer overrun (no longer crashes the server)
1765 * cmd_chat() -- truncate input at 100 characters to prevent buffer overruns.
1766   Also handle broken client sockets properly.  (Thanks to DME for bug report)
1767
1768 Revision 1.419  1999/11/19 01:57:40  ajc
1769 * Fixed a *serious* memory leak in the database function wrappers.
1770 * Updated version number to 5.60 -- run setup when installing this version.
1771
1772 Revision 1.418  1999/11/18 03:29:20  ajc
1773 * Changed the order of parameters in <.A>ide <S>ystem config into a more
1774   logical grouping.
1775
1776 Revision 1.417  1999/11/18 02:31:50  ajc
1777 * Updated some of the documentation
1778 * Brought the internal version number up to 5.60
1779
1780 Revision 1.416  1999/11/17 04:15:05  ajc
1781 * Removed the session_count() function.  Instead, keep a reference count
1782   updated when sessions begin and end.
1783 * Replaced fixed number of worker threads with lower and upper limits; current
1784   code now tries to make thread count == session count, within these limits
1785
1786 Revision 1.415  1999/11/15 03:17:39  ajc
1787 * Put lockfile in /tmp instead of in /var/lock.   The latter is not guaranteed
1788   to exist, nor is it guaranteed to be writable by BBSUID
1789   (Resolves bug #11 from the Bugzilla repository)
1790
1791 Revision 1.414  1999/11/15 03:07:24  ajc
1792 * Fixed the network-wide vCard purge logic so that it (1) actually works,
1793   and (2) forces a netproc run immediately when a purge is entered
1794
1795 Revision 1.413  1999/11/09 21:20:44  nbryant
1796 * configure.in: include <sys/types.h> when doing checks which require <utmp.h>
1797   (should fix Bug #10 on FreeBSD)
1798
1799 Revision 1.412  1999/11/05 03:53:47  ajc
1800 * Issue 'cancel' messages for vCard when a user is deleted.
1801 * Try to delete 'cancel' messages locally after they've been distributed.
1802
1803 Revision 1.411  1999/11/03 04:01:20  ajc
1804 * Fixed buffer overrun problems in cmd_rchg(), cmd_hchg(), and cmd_uchg()
1805 * Removed my email address as the feedback content from the docs; replaced
1806   it with a reference to the Citadel/UX web site.
1807
1808 Revision 1.410  1999/11/02 19:51:23  ajc
1809 * Fixed timeout problem for remote client sessions (all timeouts were set to
1810   1 second ... probably a temporary hack that was missed in the cleanup)
1811
1812 Revision 1.409  1999/11/02 03:03:27  ajc
1813 * Several fixes to msgbase.c and netproc.c to prevent corrupted incoming
1814   network traffic from crashing the server.  Reject bad messages.
1815
1816 Revision 1.408  1999/11/01 04:21:34  ajc
1817 * Fixed a concurrency bug which crashed the server when multiple sessions
1818   terminated simultaneously.
1819
1820 Revision 1.407  1999/11/01 00:54:02  ajc
1821 * CtdlFetchMessage() - generate a "<no text>" message body if there's none
1822   on disk.  Too much stuff goes haywire if there's no M field.
1823
1824 Revision 1.406  1999/10/31 18:17:17  ajc
1825 * Fixed buffer overrun in cmd_rchg()
1826 * Call master_cleanup() when time_to_die==1 for proper shutdown
1827
1828 Revision 1.405  1999/10/31 16:26:55  ajc
1829 * Fixed incorrect assignment of new session ID's
1830
1831 Revision 1.404  1999/10/31 04:17:17  ajc
1832 * Fixed a bug which was crashing the server during very long message entry.
1833
1834 Revision 1.403  1999/10/29 01:48:45  ajc
1835 * database.c: Removed arbitrary limit on maximum number of sessions
1836
1837 Revision 1.402  1999/10/29 01:03:03  ajc
1838 * Debugged all possible ways for a session to terminate; do them cleanly.
1839 * Assign session numbers in a more portable and less arbitrary way.
1840
1841 Revision 1.401  1999/10/28 19:50:55  ajc
1842 * Fixed a problem where the client protocol would spit out two responses
1843   and therefore get out of sync if ASUP command set the access level to
1844   0 and therefore deleted the user (thanks to Eric McDonald)
1845
1846 Revision 1.400  1999/10/28 05:08:49  ajc
1847 * Removed all of the thread cancellation cruft that is no longer necessary
1848 * Moved the now non-system-dependent RemoveContext() out of sysdep.c (now
1849   it's part of cleanup() in citserver.c)
1850 * Removed all references to pthread_* from all modules except sysdep.c
1851
1852 Revision 1.399  1999/10/28 03:20:17  ajc
1853 * Fixed the problem of worker threads waking up prematurely.
1854 * 'QUIT'-terminated sessions now exit properly.
1855
1856 Revision 1.398  1999/10/27 04:26:58  ajc
1857 * Initial hack of worker-thread rearchitecture.  Right now it is successfully
1858   dispatching worker threads to active client sockets (and to the master
1859   socket too, of course).  Removing sessions is currently broken.
1860
1861 Revision 1.397  1999/10/26 20:20:29  ajc
1862 * Removed the auto-reconnect stuff... it was locking the client in an active
1863   loop more often than it was reconnecting.
1864
1865 Revision 1.396  1999/10/26 13:59:11  ajc
1866 damn bugs
1867
1868 Revision 1.395  1999/10/26 03:48:39  ajc
1869 * Shuffled around the order of events when a thread is terminating.  All
1870   mutex operations now happen prior to the freeing of the CitContext structure,
1871   otherwise begin_critical_section() and end_critical_section() try to
1872   manipulate the context's mutex count when there isn't any context.
1873
1874 Revision 1.394  1999/10/26 03:21:16  ajc
1875 * Changed a lot of strncpy() calls to safestrncpy() and replaced most of their
1876   hardcoded size arguments with 'sizeof' based arguments.
1877
1878 Revision 1.393  1999/10/24 19:22:51  nbryant
1879         * Makefile.in, configure.in: added --enable-icq flag; made checks for
1880           authentication libraries more intelligent.
1881
1882 Revision 1.392  1999/10/23 03:39:12  ajc
1883 * Finished moving vCard functionality to the new message base functions.
1884
1885 Revision 1.391  1999/10/21 00:50:14  ajc
1886 * Finished up the flags and replication checks in CtdlSaveMsgPointerInRoom().
1887
1888 Revision 1.390  1999/10/20 16:46:27  ajc
1889 * More code shuffle.  Added some flags to CtdlSaveMessagePointerInRoom() and
1890   enabled the MOVE command to also do a "copy" operation (actually just
1891   creates a second link and bumps the ref count).  Implemented "<C>opy" in
1892   the client.
1893
1894 Revision 1.389  1999/10/20 16:07:48  ajc
1895 * Wholist fixes for users who are in chat mode
1896
1897 Revision 1.388  1999/10/20 03:42:29  ajc
1898 * In the wholist, only show <private room> if the user viewing the list
1899   doesn't know that room.  Otherwise show the name.
1900
1901 Revision 1.387  1999/10/20 02:59:22  ajc
1902 * Code reorganization.  Making it easier to move/copy messages without
1903   duplicating existing code.
1904
1905 Revision 1.386  1999/10/17 02:25:18  ajc
1906 * Discovered a huge design flaw in the replication algorithm.  Ripped it
1907   out and replaced it with something a bit more robust.
1908
1909 Revision 1.385  1999/10/16 05:30:17  ajc
1910 * Changes to message replication code.  Don't do server-side hooks during
1911   an ENT3 command.  Also fixed a bug in cmd_whok() that caused crashes
1912   after a file format change.
1913
1914 Revision 1.384  1999/10/14 03:04:16  ajc
1915 * Finished the netproc side of Z (zap/supersede) processing for replication
1916
1917 Revision 1.383  1999/10/13 04:24:18  ajc
1918 * Added search-by-header-fields to CtdlForEachMessage(), and then to the
1919   server MSGS command.  This will have lots of uses.
1920
1921 Revision 1.382  1999/10/13 01:36:39  ajc
1922 * Starting some work on network zap (supersede) mode for replication
1923
1924 Revision 1.381  1999/10/08 02:55:57  ajc
1925 * More vCard-related debugging
1926
1927 Revision 1.380  1999/10/07 02:58:46  ajc
1928 * Semi-broken vCard replacement implementation in place.
1929 * Added "Z" (Zap, supersede) field to message format
1930
1931 Revision 1.377  1999/10/04 03:19:52  ajc
1932 * We now have a housekeeping thread and a housekeeping queue.
1933
1934 Revision 1.376  1999/10/03 21:48:21  ajc
1935 * Added serv_upgrade.h to automagically convert pre-5.55 format user records
1936   to 5.55 format user records and generate vCards.
1937
1938 Revision 1.375  1999/09/29 21:13:17  ajc
1939 * CtdlWriteObject() can now store objects in personal rooms for any specified
1940   user -- rather than only the current user or non-personal rooms.
1941
1942 Revision 1.374  1999/09/29 17:26:56  ajc
1943 * serv_vcard.c: fixed crashola bug in cmd_greg()
1944 * tools.c: simplified and improved the string tokenizer.  Now it runs in a
1945            single pass with no intermediate buffer.
1946
1947 Revision 1.373  1999/09/28 03:27:37  ajc
1948 * Fully migrated cmd_greg() and cmd_regi() into serv_vcard (still has bugs)
1949
1950 Revision 1.372  1999/09/27 03:33:40  ajc
1951 * cmd_regi() is now in serv_vcard and writes to the vcard instead of to the
1952   usersupp file.  Still needs tweaking.
1953
1954 Revision 1.371  1999/09/24 03:32:19  ajc
1955 * "read my vCard" and "write my vCard" are written and tested.
1956
1957 Revision 1.370  1999/09/24 02:54:17  ajc
1958 * Worked a little more on the vCard stuff.  The serv_vcard module is now in
1959   place, and a "read my vcard" function is there; "write my" is next...
1960
1961 Revision 1.369  1999/09/23 03:07:56  ajc
1962 * The vCard 'class' is now linked into the server, though it's not really
1963   functional yet.  Its constructors/destructors are debugged, though.
1964
1965 Revision 1.368  1999/09/19 21:28:33  ajc
1966 * Finished off the message architecture stuff with a new class of hooks to
1967   enable future server-side handlers.
1968
1969 Revision 1.367  1999/09/19 15:57:06  ajc
1970 * migrated cmd_ent3() to CtdlSaveMessage()
1971
1972 Revision 1.366  1999/09/19 05:13:57  ajc
1973 * Debugged the new version of CtdlWriteObject()
1974
1975 Revision 1.365  1999/09/16 03:23:23  ajc
1976 * Did most of the migration from save_message() to CtdlSaveMsg().  The
1977   latter builds a "struct CtdlMessage" (so we can run server-side handlers
1978   against it later on), then serializes it and stores to disk.
1979 * BROKEN BUILD ALERT!!  cmd_ent3() and CtdlWriteObject() are still not
1980   migrated.  They are stubbed out and will MALFUNCTION if used right now!!
1981
1982 Revision 1.364  1999/09/07 01:42:42  ajc
1983 * cmd_msg3() now uses serialize_message() for its output.  All message
1984   commands will eventually exist as a "struct CtdlMessage" at some point
1985   so that we can install server-side handler hooks.
1986
1987 Revision 1.363  1999/09/07 00:04:13  ajc
1988 * netproc.c: put outgoing messages into the use table, too -- this prevents
1989   locally originated messages from showing up again if a remote system is
1990   misconfigured and spools them back to us.
1991
1992 Revision 1.362  1999/09/06 03:39:15  ajc
1993 * citadel.c: run strproc() on new passwords
1994
1995 Revision 1.361  1999/09/03 17:50:26  playcow
1996 For URL view, don't prompt user to select url if there is only one.  Display
1997 <U>RL View prompt if message contains url(s). -Ben
1998
1999 Revision 1.360  1999/09/02 02:09:59  ajc
2000 * msgbase.c: new function serialize_message() for future use
2001
2002 Revision 1.359  1999/09/01 21:09:25  ajc
2003 * database.c: display the GDBM version string on startup
2004
2005 Revision 1.358  1999/09/01 02:36:34  ajc
2006 * Actually _enforce_ the max msg len limit
2007
2008 Revision 1.357  1999/09/01 01:51:48  ajc
2009 * Added the ability to handle embedded URL's from the text client
2010
2011 Revision 1.356  1999/09/01 01:02:47  ajc
2012 * Implemented "maximum message length" in global system config
2013
2014 Revision 1.355  1999/08/31 00:57:17  ajc
2015 * Handle multipart/alternative properly during legacy message outputs.
2016   Basically it just prints the first alternative and skips the rest.
2017
2018 Revision 1.354  1999/08/29 21:12:24  ajc
2019 * Made some changes to the output of MIME (especially multipart) messages.
2020
2021 Revision 1.353  1999/08/29 19:56:43  ajc
2022 * HTML updates
2023
2024 Revision 1.352  1999/08/24 02:01:03  ajc
2025 * html.c: added.  This is an overly simplistic HTML-to-text converter.
2026
2027 Revision 1.351  1999/08/21 18:37:29  ajc
2028 * Minor cosmetic cleanup.  No code changes.
2029
2030 Revision 1.350  1999/08/21 05:15:34  ajc
2031 * mailinglist.c, netmailer.c: fixed to allow list submissions from all posters
2032   on a Citadel network rather than only on the local system.
2033
2034 Revision 1.349  1999/08/08 00:25:45  ajc
2035 * Made one more byte available in locate_host() and in all the structs which
2036   its output gets written to (client can display 24 positions but we were only
2037   saving 23).
2038
2039 Revision 1.348  1999/08/07 16:34:38  nbryant
2040 * serv_icq.c: warning fixes
2041
2042 Revision 1.347  1999/08/06 02:57:26  ajc
2043 * locate_host.c: use strdoop() and phree() instead of strdup() and free()
2044 * serv_icq.c: run learned IP's through Citadel's locate_host() & put in Wholist
2045
2046 Revision 1.346  1999/08/05 17:58:59  ajc
2047 * RWHO command now returns express message code in postion 3
2048
2049 Revision 1.345  1999/08/04 02:21:45  ajc
2050 * Fixed some bugs in the ICQ metaclient, and documented the new protocol cmds
2051
2052 Revision 1.344  1999/08/03 11:34:35  ajc
2053 * Added client_icq.c and client_icq.h
2054
2055 Revision 1.343  1999/08/03 03:14:51  ajc
2056 * Wrote the client side of the ICQ gateway.  Now on to other projects.  :)
2057
2058 Revision 1.342  1999/08/03 01:52:06  ajc
2059 * Redesigned the client protocol commands for dealing with ICQ
2060 * Implemented page function priority ordering to prevent pages from being
2061   simultaneously delivered over multiple IM systems
2062 * Migrated serv_icq.* into the Makefile
2063
2064 Revision 1.341  1999/08/01 21:36:30  ajc
2065 * EXTREME coolness.  The server side of the ICQ metaclient is now working.
2066   It is set up using ICQL and ICQA commands, it automatically logs the user
2067   onto ICQ along with Citadel, and displays all non-offline ICQ contacts
2068   in the Wholist.
2069
2070 Revision 1.340  1999/07/31 07:18:01  ajc
2071 * Restructured the express message infrastructure, adding a class of function
2072   hooks for the addition of multiple paging modules with message routing
2073
2074 Revision 1.339  1999/07/30 22:20:19  ajc
2075 * Applied bugfix patches contributed by Vaggelis Tsirkas:
2076   * rooms.c: buffer overrun fix
2077   * room_ops.c: cmd_rdir() now behaves better when directory doesn't exist
2078
2079 Revision 1.338  1999/07/30 03:32:24  ajc
2080 * Added strdoop(), a leak-checked version of strdup()
2081 * Small fixes to new API functions in msgbase.c
2082 * ICQ metaclient stores/reads config using the message base API functions
2083
2084 Revision 1.337  1999/07/29 03:36:37  ajc
2085 * msgbase.c: reorganized.  output_message() now uses CtdlFetchMessage(),
2086   cmd_msg3() now fetches directly from disk and spews to the client.
2087
2088 Revision 1.336  1999/07/28 04:02:37  ajc
2089 * Server modules are now labelled with their RCS ID instead of a complex and
2090   manually-updated data structure.
2091
2092 Revision 1.335  1999/07/28 03:50:24  ajc
2093 * serv_expire.c: expire-by-age now calls CtdlFetchMessage() instead of
2094   calling output_message() in MT_DATE mode.
2095 * msgbase.c: removed MT_DATE mode ('twas a sleazy hack)
2096
2097 Revision 1.334  1999/07/27 22:47:26  ajc
2098 * Implemented new data type "CtdlMessage" which will eventually be used as
2099   widely as possible to represent a message in memory.
2100 * Implemented CtdlFetchMessage() which is intended to become the back-end to
2101   output_message() as well as a bunch of other things.
2102
2103 Revision 1.333  1999/07/27 20:00:24  ajc
2104 Removed all references to CC->msglist and CC->num_msgs, and all utility
2105 functions which relied upon them.  Citadel Is Now Better.
2106
2107 Revision 1.332  1999/07/27 19:32:22  ajc
2108 Removed serv_upgrade.c and all references to it in Makefile.in
2109 Reworked new-mail-count to not use MessageFromList() etc.
2110
2111 Revision 1.331  1999/07/25 02:59:37  ajc
2112 Fixed reference count problem in cmd_move()
2113
2114 Revision 1.330  1999/07/24 22:50:38  ajc
2115 Continued replacing references to [get|put]_msglist() with better code.
2116 For some reason, cmd_msgs() still doesn't always work right.
2117
2118 Revision 1.329  1999/07/24 22:16:41  ajc
2119 Experimenting with automatic updating of ChangeLog by CVS.  Simply twiddle
2120 ChangeLog a bit (i.e. by adding or removing a newline from the end of the
2121 file) before issusing "cvs commit", and the comments recorded by CVS will
2122 automatically appear at the beginning of ChangeLog.
2123
2124 Revision 1.328  1999/07/24 22:14:21  ajc
2125 cmd_move() now uses CtdlDeleteMessages().
2126 WARNING: build is temporarily broken.  Currently removing all references
2127 to the "msglist" kept in CitContext.  It's ugly and must die.
2128
2129 Thu Jul 22 22:26:50 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2130         * Moved message deletion into new API function CtdlDeleteMessages()
2131         * Added CtdlWriteObject() to store generic data in the msgbase
2132         * Fixed really dumb error that prevented network msgs from posting
2133
2134 Tue Jul 20 22:14:54 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2135         * Moved the actual work done in cmd_msgs() into a new API function
2136           called CtdlForEachMessage() which is supplied a callback function.
2137
2138 Mon Jul 19 23:24:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2139         * Keep the (unqualified) content-type in the SuppMsgInfo record.  We'll
2140           be using this shortly to search rooms for specific object types.
2141
2142 Sun Jul 18 14:53:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org> 
2143         * Changes to dynloader et al to handle ICQ module being written
2144         * serv_icq.c, serv_icq.mk: added (separate makefile is temporary)
2145
2146 1999-07-17 Nathan Bryant <bryant@cs.usm.maine.edu>
2147         * chkpwd.c: DELETED CVS REVISION 1.3 (backed out Art's last change)
2148           use 'cvs update -r 1.2 chkpwd.c; cvs update -A chkpwd.c' NOW to
2149           avoid problems with working directories.
2150         * Makefile.in: don't install chkpwd setuid if make install isn't
2151           being run as root.
2152         * citadel.spec: chmod u+s chkpwd during %install stage
2153
2154 Fri Jul 16 18:39:04 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2155         * PEXP and GEXP no longer trip the idle time display
2156         * Fixed bug which duplicated incoming private mail to Trashcan
2157         * Improved auto-reconnect by NOT using SIGPIPE and longjmp(); also
2158           implemented a 15 second delay to wait for a crashed server to restart
2159         * Relaxed the security check in chkpwd.c a bit; it was just flat-out
2160           preventing logins on my system otherwise
2161
2162 Thu Jul 15 22:57:32 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2163         * eliminate redundant "name" parameter in [l]putuser(), now uses
2164           usbuf->fullname to guarantee the correct name for the index
2165
2166 1999-07-12 Nathan Bryant <bryant@cs.usm.maine.edu>
2167         * Makefile.in, configure.in: link netproc with gdbm
2168         * netproc.c: only include gdbm.h if HAVE_GDBM_H
2169         * user_ops.c: warning fix
2170
2171 Mon Jul 12 19:51:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2172         * Mail is now saved in both sender and recipient mailboxes.  This is
2173           structured in a way that will allow a separate "outbox" room and/or
2174           multiple recipients in the future.
2175
2176 Sun Jul 11 18:46:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2177         * netproc.c: msgfind() no longer uses the timestamp as a message-ID
2178           when no other message-ID is available (it screws up the loopzapper)
2179         * room_ops.c: eliminate room name parameter in putroom() and its ilk;
2180           get data from quickroom.QRname instead; prevents incorrect indexes
2181         * Tentative implementation of "personal rooms" (user-private namespace)
2182         * Added supplementary message info records for info that may change
2183           at some time later than when the message is saved (i.e. ref counts)
2184         * Implemented msg reference count increment/decrement; delete messages
2185           whose reference count reaches zero
2186
2187 Wed Jul  7 23:25:09 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2188         * control.c: create citadel.control if it doesn't exist (yikes!)
2189         * serv_expire.c: purge mailbox rooms belonging to non-existent users
2190         * user_ops.c: don't delete user's mailbox at user-delete time
2191
2192 Mon Jul  5 17:01:29 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2193         * utilsmenu: removed menu items for defunct utilities
2194
2195 Mon Jun 28 16:24:10 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2196         * Changed any remaining references to UUCP, to "Internet" instead.
2197
2198 Thu Jun 24 11:13:23 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2199         * added server command line option "-f" to defrag databases on startup
2200         * control.c: better performance and reliability in [get|put]_control()
2201         * netproc.c: Finished the loopzapper
2202
2203 Mon Jun 21 00:04:15 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2204         * netproc.c: started writing a vortex checker.  Not finished.
2205
2206 Wed Jun  9 23:34:25 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2207         * Replaced all code that generated temporary filenames with calls to
2208           tmpnam().  Rewrote using tmpfile() where possible.
2209
2210 Thu Jun  3 11:35:18 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2211         * base64.c: mapped fi and fo to stdin and stdout using
2212           actual code rather than assignment at declaration time
2213           (several users of Red Hat Linux 6.0 reported problems)
2214
2215 Fri May 21 20:05:00 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2216         * Added function CtdlGetDynamicSymbol() for dynamic symbol allocation
2217         * server.h: Changed discrete #define's to enum's where appropriate
2218         * sysdep.c: Changed the startup message to give credit to the whole
2219           development team :)  Also made the message more GNU-ish.
2220
2221 Thu May 20 20:01:30 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2222         * database.c: print log messages for file defragmentations
2223         * citserver.c: implemented CtdlAllocUserData() and CtdlGetUserData()
2224           for arbitrary per-session data storage (by modules etc.) without
2225           having to add fields to struct CitContext
2226         * msgbase.c: removed "desired_section" from struct CitContext and
2227           implemented it using CtdlGetUserData() as a test.
2228
2229 Wed May 19 19:30:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2230         * commands.c, commands.h, routines.c: began color scheme changes
2231
2232 1999-05-15 Nathan Bryant <bryant@cs.usm.maine.edu>
2233         * configure.in: Added untested support for BSDI 4.x.
2234
2235 1999-05-13 Nathan Bryant <bryant@cs.usm.maine.edu>
2236         * acconfig.h, configure.in, routines.c: fix for certain SYSV variants
2237           which lack utmp.ut_host
2238         * citadel.h, file_ops.c, msgbase.c, netproc.c, serv_chat.c: fix
2239           namespace collision with <sys/stream.h> on aforementioned SYSV
2240           variant
2241         * configure.in, getutline.c: check for paths.h
2242         * configure.in, Makefile.in: check for -lsocket and -lnsl
2243
2244 1999-05-11 Nathan Bryant <bryant@cs.usm.maine.edu>
2245         * chkpwd.c: fixed excessive paranoia; it used to refuse to run when
2246           invoked by root and BBSUID != 0
2247         * Makefile.in: ignore errors while installing /etc/pam.d/citadel
2248
2249 1999-04-27 Art Cancro <ajc@uncensored.citadel.org>
2250         * file_ops.c: fixed NDOP to not crash the server if it has trouble
2251           with a download file
2252         * netpoll.c: upped default packet size
2253
2254 Mon Apr 26 22:06:57 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2255         * Repaired IGnorant security hole blunder re. citmail
2256
2257 Sun Apr 25 12:44:08 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2258         * serv_chat.c: notify user of number of participants upon entering chat
2259         * Built the 5.53 distribution
2260
2261 Wed Apr 21 22:23:13 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2262         * aidepost.c: add -r flag to allow posting to rooms other than Aide>
2263         * serv_expire.c: now posts transcripts of all auto-purged rooms/users
2264
2265 Tue Apr 20 12:45:55 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2266         * messages.c: downloading more than MAX_MSGS messages now truncates
2267           (off the beginning of the list) rather than crashing.
2268
2269 Mon Apr 19 12:11:48 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2270         * whobbs.c: auto-detect when being called from a webserver, and act
2271           as a CGI (print HTTP headers and HTML output)
2272
2273 1999-04-18 Nathan Bryant <bryant@cs.usm.maine.edu>
2274         * serv_chat.c: fixed some potential buffer overruns (thanks dme)
2275
2276 Wed Apr 14 21:32:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2277         * Makefile.in: chmod 4755 citmail to prevent citmail from aborting
2278           when called from sendmail due to citadel.config security check
2279
2280 1999-04-13 Nathan Bryant <bryant@cs.usm.maine.edu>
2281         * dynloader.c: OpenBSD places underscores in front of symbol names
2282         * Makefile.in: fixed a few sillies
2283         * aidepost.c, citmail.c, file_ops.c, logging.c, msgbase.c, netmailer.c,
2284           netproc.c, rcit.c, routines.c, serv_upgrade.c: fixed time_t handling
2285           (have to cast it to long for printf/scanf)
2286
2287 Mon Apr 12 22:13:26 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2288         * aidepost.c: rewrote to unlink temp file before writing to it so that
2289           it will automatically go away if interrupted. Also ran indent -kr -i8
2290
2291 1999-04-12 Nathan Bryant <bryant@cs.usm.maine.edu>
2292         * configure.in, Makefile.in: taught it how to generate OpenBSD shared
2293           libraries
2294         * config.c, sysdep.c: fix -h option not setting proper modules dir
2295         * configure.in, citadel.spec: make --enable-chkpwd the default
2296         * setup.c: don't chown chkpwd
2297
2298 1999-04-11 Nathan Bryant <bryant@cs.usm.maine.edu>
2299         * configure.in: another OpenBSD fix, but we're still not quite there yet
2300         * serv_chat.c: warning fix
2301
2302 Thu Apr  8 22:51:28 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2303         * config.c: now requires a setup run for *any* rev level difference
2304         * Updated docs & confs for 5.53b1 release
2305         * setup.c: sets the 0600 permission bits on citadel.config that
2306           is checked for in config.c
2307
2308 1999-04-08 Nathan Bryant <bryant@cs.usm.maine.edu>
2309         * citserver.c: improved is_public_client(), also if a public_client
2310           only supplies a numeric address, attempt to resolve it
2311         * locate_host.c: verify that the forward DNS matches the reverse
2312         * locate_host.c, locate_host.h: more general interface
2313         * configure.in, acconfig.h: fixes for Digital UNIX
2314
2315 Wed Apr  7 21:36:16 EDT 1999 Art Cancro <ajc@uncensored.citadel.org>
2316         * Implemented "access level required to create rooms" (client & server)
2317
2318 1999-04-07 Nathan Bryant <bryant@cs.usm.maine.edu>
2319         * configure.in: updated help messages, OpenBSD support
2320         * setup.c: if /etc/inittab doesn't exist, don't ask to create an
2321           entry in it
2322         * server.h, sysdep.c: fix a potential deadlock/data corruption bug
2323         * room_ops.c: fixed the 'gdbm error: Illegal data' message when
2324           deleting a room which had never been posted to
2325         * user_ops.c: include errno.h
2326         * dynloader.c: fix for OpenBSD
2327
2328 1999-04-06 Nathan Bryant <bryant@cs.usm.maine.edu>
2329         * Makefile.in, configure.in, getutline.c, sysdep.c:
2330           fixes/bug workarounds for FreeBSD
2331
2332 1999-04-03 Nathan Bryant <bryant@cs.usm.maine.edu>
2333         * Makefile.in, configure.in, chkpwd.c, acconfig.h: support for
2334           `chkpwd', a setuid helper program for machines which use shadow
2335           passwords (configure --enable-chkpwd)
2336         * Makefile.in, configure.in, auth.c, citadel.pam, user_ops.c: support
2337           for PAM or shadow passwords (configure --with-pam)
2338         * Makefile.in: made some messages simpler
2339         * citadel.spec: updated for 5.53; correct name of tarball; build with
2340           --enable-chkpwd and --with-pam; add defattr tags so rpm's can be
2341           built by non-root user
2342         * commands.c: cosmetic cleanup
2343         * config.c: (security/paranoia) check permissions on citadel.config
2344         * configure.in: check for ncurses if we can't find curses
2345         * dynloader.c: warning fix
2346         * sysdep.c: don't complain if initgroups() fails
2347         * citadel.c: fix systems with SYSV-style signal handling (e.g. libc5)
2348         * Makefile.in: New! Improved! Cleaner! Shinier!
2349
2350 Sun Mar 21 14:21:47 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2351         * messages.c: cosmetic cleanups to message reading loop
2352
2353 Sat Mar 13 21:33:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2354         * commands.c: use bright colors by default in color mode
2355         * citserver.c: initialize wholist fields with (not logged in) etc.
2356
2357 1999-03-08 Nathan Bryant <bryant@cs.usm.maine.edu>
2358         * sysdep.c: call DLoader_Init() with an absolute path so that gdb can
2359           find module symbols
2360         * database.c: bail out if opening databases fails
2361
2362 Sat Mar  6 01:55:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2363         * serv_chat.c: use memfmout(), *not* cprintf() to transmit express
2364           messages.  Calling cprintf() on strings >256 bytes crashes the server
2365         * msgbase.c: minor logging fix in save_message()
2366
2367 1999-03-05 Nathan Bryant <bryant@cs.usm.maine.edu>
2368         * sysdep.c: add undocumented -r flag to citserver to prevent it from
2369           dropping root permissions.
2370         * sysdep.c: also drop supplementary groups
2371
2372 1999-03-04 Nathan Bryant <bryant@cs.usm.maine.edu>
2373         * config.c: error checking in put_config()
2374         * setup.c: chgrp files to the login group associated with BBSUID
2375         * sysdep.c: copyright 1987-1999; drop root perms; load modules and call
2376           master_startup() after dropping perms
2377
2378 Wed Mar  3 00:00:55 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2379         * Prevent buffer overruns in lowercase_name in [get|put]user()
2380         * client_chat.c: use citedit() for page composition
2381
2382 Sat Feb 27 07:47:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2383         * rooms.c: download_to_local_disk() prompts for a filename if a blank
2384           filename was supplied to it (for attachments without names)
2385         * mime_parser.c: strip leading whitespace in content_type & disposition
2386
2387 1999-02-24 Nathan Bryant <bryant@cs.usm.maine.edu>
2388         * configure.in: improved check for pthreads
2389         * configure.in, routines.c, acconfig.h: check for ut_type in struct utmp
2390         * configure.in, Makefile.in: support for building server modules as
2391           relocatable objects for BSDI (which still uses a.out *gag* *choke*)
2392         * configure.in: compiler choice & flags for BSDI; check for libtermcap
2393         * database.c: don't use a critical section in open_databases()
2394         * housekeeping.c: use getfloor()/putfloor() instead of
2395           lgetfloor()/lputfloor() in check_ref_counts()
2396         * mime_parser.c: include <errno.h>
2397         * msgbase.c: include <limits.h>
2398         * sysdep.c: hacks for BSDI. use signals to fake thread cancellation;
2399           don't call master_cleanup() directly from signal handler.
2400         * routines.c: prototype getutline() if necessary
2401         * getutline.c: stupid bugfix
2402         * acconfig.h, configure.in, locate_host.c, server.h: work around
2403           nonreentrant gethostbyaddr() on BSDI
2404
2405 Mon Feb 15 22:59:00 EST 1999 Vaggelis Tsirkas
2406         * citadel.c: increased hostname buffer size to handle very big names
2407
2408 1999-02-15 Nathan Bryant <bryant@cs.usm.maine.edu>
2409         * sysdep.c(main): initialize alen before call to accept()
2410
2411 1999-02-04 Nathan Bryant <bryant@cs.usm.maine.edu>
2412         * configure.in: improved check for cygwin
2413         * configure.in, routines.c: access utmp directly instead of calling
2414           `who' if getutline() is available.
2415         * configure.in, Makefile.in, getutline.c: replace getutline() on
2416           systems which don't have it
2417         * routines.c: now always access utmp directly unless we can't find
2418           utmp.h
2419
2420 1999-02-02 Nathan Bryant <bryant@cs.usm.maine.edu>
2421         * Fixes for Cygwin:
2422           - ifdef out file download methods that require named pipes (client)
2423           - include pthread.h and gdbm.h only if they are present (fixes
2424             auto dependency generation)
2425           - include snprintf.h where needed
2426           - handle .exe suffixes for "make install"
2427
2428 Tue Feb  2 22:15:08 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2429         * Overhauled the express messaging system (again)
2430
2431 Mon Feb  1 19:48:04 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2432         * messages.c: implemented client download of MIME attachments
2433
2434 Sun Jan 31 18:29:18 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2435         * Added qpdecode.c to the distribution (decodes quoted-printable)
2436         * Finished the MIME parser
2437         * Gave MSG0 a reasonable behaviour for MIME messages
2438         * Added the OPNA command for downloading attachments
2439
2440 Sat Jan 30 18:39:53 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2441         * Look for citadel.rc in current directory if not found elsewhere
2442         * More work on the MIME parser
2443         * Added base64.c to the distribution
2444
2445 1999-01-29 Nathan Bryant <bryant@cs.usm.maine.edu>
2446         * fixes for IRIX (thanks to wr and family for use of the Indy):
2447           - use memset()/memcpy() instead of bzero()/bcopy() in all cases
2448           - configure updates
2449           - handle `long' pid's
2450           - a few other little bits
2451
2452 Mon Jan 25 21:23:07 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2453         * Fixed bug in save_message() which crashed the server on mail to sysop
2454         * Rewrote pop_march() to be smarter about <G>oto heuristics
2455
2456 Sat Jan 23 14:32:19 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2457         * Changed internal storage of express messages from a linked list to
2458           a single, resizable buffer.
2459         * Added a "room order" key to the room record, to allow some control
2460           over room listing order.
2461         * Made the room list commands aware of the room order key.
2462         * Overhauled <G>oto heuristics to pay attention to floor & room order
2463
2464 Wed Jan 20 19:21:51 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2465         * Added some more code to the unfinished MIME parser
2466         * Changed module loading path to simply "modules" because after calling
2467           get_config(), the cwd is guaranteed to be the correct BBS directory.
2468
2469 Tue Jan 19 21:28:29 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2470         * Fixed a bug in the user editing command (client side)
2471         * Started a rewrite of the MIME parser
2472
2473 Thu Jan 14 21:21:15 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2474         * Brought over the mime_parser from WebCit and began preliminary work
2475           on supporting MIME format messages.
2476
2477 Tue Jan 12 22:30:00 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2478         * Various changes to begin work on support for MIME messages
2479                 - Defined format type 4 for MIME
2480                 - msgbase.c: *temporary* hacks in output_message() for Type 4
2481                 - citmail.c: added more robust header parsing, and support
2482                              for Type 4.  Also eliminated the crappy built-in
2483                              SMTP server.
2484                 - Updated some of the technical documentation
2485
2486 Sun Jan 10 13:34:36 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2487         * Fixed access to page log room
2488
2489 Fri Jan  8 12:35:09 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2490         * control.c: include <limits.h> to fix PATH_MAX undefined
2491         * serv_chat.c: made the following changes to cmd_sexp() --
2492                 * Send zero-length message to check only, don't send
2493                 * Send "-" message on the command line to invoke
2494                   the SEND_LISTING transfer mode for a multi-line message
2495         * Added facilities to log all pages to a room (site configurable)
2496
2497 Tue Jan  5 23:24:52 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2498         * Replaced all occurances of malloc(), realloc(), and free() in the
2499           server and server-modules with mallok(), reallok(), and phree().
2500           Wrote macros and a set of leak-tracking functions.
2501
2502 Sun Jan  3 20:38:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2503         * Documentation changes
2504
2505 Fri Jan  1 01:01:45 EST 1999 Art Cancro <ajc@uncensored.citadel.org>
2506         * Fixed security problem relating to private rooms
2507
2508 Wed Dec 30 20:10:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2509         * sysdep.c: put a bigger string buffer into lprintf() to avoid overruns
2510
2511 Sat Dec 26 16:56:46 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2512         * internetmail.config: commented this file more clearly
2513
2514 Wed Dec 23 20:42:49 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2515         * citadel.c: added some experimental code to automatically reconnect
2516           to the server if the connection is broken.  For some reason, it only
2517           works once.
2518
2519 Wed Dec 23 18:47:12 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2520         * sysdep.c: ignore SIGPIPE.  This keeps broken connections from
2521           crashing the whole server.
2522         * Tagged everything for the official 5.50 release.
2523
2524 Mon Dec 21 07:54:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2525         * housekeeping.c: call kill_session() with session_to_kill,
2526           not ccptr->cs_pid (was crashing the server)
2527
2528 Sat Dec 19 13:57:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2529         * Added "-i" flag to netproc to make it skip the export phase.
2530           Updated other programs to call netproc in this way when appropriate.
2531         * Updated network.txt to reflect the usage for netproc (which has
2532           been wrong for several releases)
2533
2534 Thu Dec 17 00:17:04 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2535         * Started removing the word "beta" from the docs and code.
2536           Preparing for an actual release.
2537         * msgbase.c: generate an 'I' field when requested (i.e. on locally
2538           originating messages.  this was breaking parts of the network)
2539
2540 1998-12-15 Art Cancro <ajc@uncensored.citadel.org>
2541         * msgbase.c: remove extra call to alias() which was causing
2542           Citadel-to-Citadel mail to fall into the bit bucket.
2543         * msgbase.c: fixed tempfile naming problem that could cause a new
2544           outgoing netmail message to overwrite another if netproc had not been
2545           run in between
2546
2547 1998-12-14 Art Cancro <ajc@uncensored.citadel.org>
2548         * More session table stability nonsense
2549
2550 Sun Dec 13 17:40:08 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2551         * sysdep.c, citserver.c: (hopefully) fixed a session table concurrency
2552           bug which was causing the server to occasionally crash.
2553         * removed serv_test.so from the default build
2554
2555 Fri Dec 11 18:50:00 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2556         * setup.c: default value for maxsessions is now 0 (no limit)
2557         * room_ops.c: don't allow users to create a room called "Mail"
2558         * serv_expire.c: fixed "number of messages purged" display
2559         * commands.c: when using color, default to low-intensity colors
2560
2561 Tue Dec  8 07:58:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2562         * Beta 2
2563
2564 Sat Dec  5 01:24:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2565         * Added a new type of module hook for adding logging functions
2566         * Removed whitespace to left and right of '@' in netmail recipients
2567         * sysdep.c: read citadel.config _before_ initializing loadable modules
2568         * stats.c: fixed segfault resulting from extracting log lines
2569         * Ripped most of the "attachments" stuff out of both the client and
2570           server.  (Thought of a better way to handle it ... LATER.)
2571
2572 1998-12-03 Nathan Bryant <bryant@cs.usm.maine.edu>
2573         * setup.c: create citadel.config with mode 0600
2574         * Makefile.in: don't chmod sendcommand
2575         * serv_upgrade.c: don't create citadel.config if it doesn't already
2576           exist (paranoia)
2577         * setup.c: saner defaults for nodename and fqdn
2578
2579 Wed Dec  2 20:37:05 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2580         * msgbase.c: modified AddMessageToRoom() and all functions that call it
2581           to use a more reliable/accurate method to set quickroom.QRhighest
2582         * weekly.in: don't sort/purge filedir where filedir doesn't exist
2583
2584 1998-12-02 Nathan Bryant <bryant@cs.usm.maine.edu>
2585         * weekly is now generated by configure
2586
2587 Mon Nov 30 19:48:52 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2588         * room_ops.c: added sort_msglist() to move and save operations
2589         * sendcommand.c: added (also updated utils.txt, weekly, Makefile.in)
2590         * BETA 1
2591
2592 Sun Nov 29 23:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2593         * Fixed cmd_regi() to not display a second result code after xfer
2594         * Makefile.in: Removed "chmod 4755 citmail netmailer"
2595
2596 1998-11-23 Nathan Bryant <bryant@cs.usm.maine.edu>
2597         * citadel.spec: added
2598
2599 1998-11-22 Nathan Bryant <bryant@cs.usm.maine.edu>
2600         * Makefile.in: split install target into install-exec, install-data,
2601           and install-doc subtargets
2602
2603 Sat Nov 21 16:53:30 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2604         * Added a fourth color mode in the client: "user" which turns color
2605           on or off according to a per-user flag stored on the server.  Added
2606           server-side support for this too, of course.
2607         * import.c: removed
2608         * serv_expire.c: finished the code to purge stale visits
2609         * sysdep.c: strip trailing nonprintables in client_gets()
2610         * routines2.c: fixed <.AS> command; all configs now work properly
2611         * Moved num_parms() and all the extract() type functions into tools.c
2612           and removed them from all other files.  Linked in tools.[o|ro] there.
2613         * netproc.c: handled incoming file transfers to correct room directory
2614         * room_ops.c: fixed incorrect naming of files in info and images dirs
2615
2616 Fri Nov 20 20:29:07 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2617         * setup.c: removed all prompts that can be configured from within the
2618           client in order to simplify the setup procedure
2619
2620 Thu Nov 19 23:28:33 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2621         * Fixed serv_upgrade.c and export5.c (found elsewhere) to use a new
2622           export format which treats visits as a separate section
2623         * serv_expire.c: began writing functions to purge rooms and visits
2624           (neither work yet), and added a way to call defrag_databases()
2625
2626 Wed Nov 18 23:51:17 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2627         * Reimplemented 'visit' structs stored globally instead of as
2628           lists-per-user
2629
2630 Tue Nov 17 22:37:48 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2631         * Started implementing global room numbers.
2632
2633 Sun Nov 15 20:32:34 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2634         * room_ops.c: mailbox rooms always appear on the main floor
2635         * made QR_MAILBOX rooms non-editable
2636         * cmd_setr() delete old room record when room name changes
2637           (This causes a big mess that exposes a flaw in the whole design.)
2638         * room_ops.c: users can delete messages from their mailboxes
2639
2640 Thu Nov 12 23:59:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2641         * Rewrote cmd_rchg() and also increased the size of the "fakename"
2642           buffer.  Overruns are probably what was causing the crashes.
2643         * Changed the way cmd_ent3() handles mail messages; the previous code
2644           rerouted all private mail to the trash.
2645
2646 Wed Nov 11 17:57:39 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2647         * citserver.c: slight changes to cmd_rchg() and cmd_hchg() [crashes]
2648         * citserver.c, msgbase.c, user_ops.c: hide the owner-prefix of mail
2649           rooms in a couple more places: set_wtmpsupp() and make_message()
2650         * sysdep.c: added an fflush() to lprintf() for "tail -f"-able logs
2651         * serv_expire.c: purge ops are now a command instead of a cleanup
2652           function.  This is probably temporary as well.
2653         * citadel.c: fixed the way <.WL> parses the returned data from a
2654           TIME command.
2655
2656 1998-11-11 Nathan Bryant <bryant@cs.usm.maine.edu>
2657         * serv_upgrade.c: fix uninitialized variable
2658
2659 Wed Nov 11 00:47:32 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2660         * msgbase.c: fixed a bug that was misrouting incoming network msgs
2661         * server.h, database.c: wrapped all GDBM calls in critical sections
2662           to avoid making those calls re-entrantly (gdbm fatal: lseek error)
2663
2664 1998-11-10 Nathan Bryant <bryant@cs.usm.maine.edu>
2665         * Makefile.in: link in snprintf.o where needed
2666
2667 1998-11-09 Nathan Bryant <bryant@cs.usm.maine.edu>
2668         * client_chat.c: eliminate calls to sprintf()
2669         * commands.h, routines.c, routines2.c: warning fix
2670         * commands.c, control.c, cux2ascii.c, file_ops.c, import.c,
2671           ipc_c_tcp.c: eliminate sprintf() calls
2672
2673 Mon Nov  9 19:15:31 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2674         * serv_upgrade.c: added all missing fields to export/import
2675         * serv_expire.c: support per-user purge time when purging users
2676         * user_ops.c: added per-user purge time to AGUP and ASUP commands
2677         * routines.c: added more stuff to <.A>ide <E>dit user
2678
2679 Sun Nov  8 22:56:53 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2680         * serv_expire.c: created; moved message expiry from serv_test.c,
2681           moved user purge from userpurge.c
2682         * userpurge.c: deleted
2683         * routines2.c: finished <.AS> command
2684         * room_ops.c: fixed Aide room access (for some reason, the Aide
2685           room had the QR_MAILBOX flag set)
2686
2687 1998-11-08 Nathan Bryant <bryant@cs.usm.maine.edu>
2688         * useradmin.c: really removed (cvs remove)
2689         * aidepost.c, citadel.c: convert all sprintf() calls to snprintf()
2690         * sysdep.c: fix overrun in lprintf() described by dme/Dead Monkey
2691         * citmail.c, citserver.c: convert all sprintf() call to snprintf()
2692
2693 Sun Nov  8 13:19:36 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2694         * useradmin.c: removed
2695         * utils.doc: removed references to useradmin and sysoputil
2696
2697 Fri Nov  6 20:22:20 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2698         * citadel.h (and related files): removed defunct parameters,
2699           c_defent and c_msgbase (erase your test bbs)
2700         * Implemented CONF server command for site-global configs
2701         * Shuffled yesno() and yesno_d() from routines.c to commands.c
2702         * commands.c: implemented boolprompt()
2703         * routines2.c: started adding CONF questions to <.AS> command
2704         * room_ops.c: began a fix for the mysterious disappearing Aide room
2705
2706 1998-11-05 Nathan Bryant <bryant@cs.usm.maine.edu>
2707         * snprintf.c: warning fix propagated over from gcit
2708
2709 1998-11-04 Nathan Bryant <bryant@cs.usm.maine.edu>
2710         * added RCS Id keyword strings to sources
2711         * citmail.c: reverted to version 1.10
2712
2713 Wed Nov  4 10:53:13 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2714         * messages.c: temporarily set screenwidth to a fixed value of 80
2715           during <P>rint operations.
2716
2717 Mon Nov  2 12:59:03 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2718         * setup.c: looks for 'citadel', 'bbs', or 'guest' in /etc/passwd to
2719           try to get a default for bbsuid if it's currently set to 0
2720         * citmail.c: changed usersupp.eternal to usersupp.usernum (why didn't
2721           it complain about this before?)
2722         * serv_upgrade.c: began writing an "export" command to do sidegrades
2723
2724 Sun Nov  1 18:47:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2725         * serv_upgrade.c: cosmetic changes
2726         * Implemented message expiry by date (this really needs to be moved
2727           out of serv_test.c, but where does it belong?)
2728
2729 1998-11-01 Nathan Bryant <bryant@cs.usm.maine.edu>
2730         * serv_upgrade.c: warning fixes
2731         * acconfig.h: remove ANSI_COLOR
2732         * Configure, Makefile.tmpl: removed
2733
2734 Sat Oct 31 20:48:44 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2735         * More stoopid ANSI colour additions here and there.
2736         * ANSI colour selection is now in citadel.rc instead of an option in
2737           the configure script.  "on" "off" and "auto" are available.
2738         * added "build.txt" to the techdoc directory, with LS's build notes
2739
2740 1998-10-31 Nathan Bryant <bryant@cs.usm.maine.edu>
2741         * citadel.c, commands.c, commands.h: set background color to black
2742           before clearing screen, so that we can actually see text on
2743           black-on-white xterms.
2744
2745 1998-10-29 Nathan Bryant <bryant@cs.usm.maine.edu>
2746         * rooms.c: fix color of Mail>
2747         * citadel.c: send ANSI detect sequence after attach_to_server() so the
2748           terminal doesn't send the answerback sequence to the shell if we
2749           can't connect.
2750
2751 Wed Oct 28 20:20:14 EST 1998 Art Cancro <ajc@uncensored.citadel.org
2752         * citadel.c: Added a splash of colour to the Wholist
2753
2754 1998-10-28 Nathan Bryant <bryant@cs.usm.maine.edu>
2755         * configure.in: added comments
2756         * mkinstalldirs: new file to be used for `make install'
2757         * aclocal.m4, missing: new files, also swiped from automake
2758         * citadel.c: don't mung the terminal if we can't find citadel.rc
2759         * Makefile.in: added `install' target, `clean' removes
2760           *.mo, rebuild configure when configure.in changes.
2761         * configure.in: check for install and autoconf
2762         * configure.in, Makefile.in: only pass -fPIC to gcc
2763         * policy.c: warning fix for OSF/1 (use memset() instead of bzero())
2764
2765 Tue Oct 27 22:25:42 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2766         * Unified the "unpacked database" format for both upgrades and
2767           sidegrades (also see export5.c elsewhere)
2768         * citserver.c: clear out cmdbuf before reading a command; some server
2769           commands were accidentally extracting parameters from previous cmds
2770         * rooms.c: removed the warning about the ineffectiveness of kicking
2771           users out of public rooms, because the new server can do lockouts
2772
2773 1998-10-27 Nathan Bryant <bryant@cs.usm.maine.edu>
2774         * sysdep.c (client_gets), ipc_c_tcp.c (serv_gets): improved handling
2775           of long lines. 
2776         * Makefile.in: partial support for VPATH builds, autodependency fix
2777
2778 Tue Oct 27 00:08:16 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2779         * minor documentation changes
2780
2781 Sun Oct 25 14:57:40 EST 1998 Art Cancro <ajc@uncensored.citadel.org>
2782         * messages.c: fixed an oversight that was allowing attachments even
2783           when disabled in citadel.rc
2784
2785 1998-10-25 Nathan Bryant <bryant@cs.usm.maine.edu>
2786         * routines2.c: warning fix
2787
2788 Sat Oct 24 22:07:56 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2789         * Client: added message expiration policy questions to room edit
2790         * Client: added <.A>ide <S>ystem configuration command
2791
2792 1998-10-24 Nathan Bryant <bryant@cs.usm.maine.edu>
2793         * Makefile.in: Auto dependency generation (may require GNU make, but
2794           does at least function without this feature on OSF/1 make);
2795           Makefile is regenerated when Makefile.in changes (ditto);
2796           `realclean' is now known as `distclean';
2797           portability fixes for older Unix make utilities
2798         * citadel.c, citadel.h, commands.c: make client suspendable
2799
2800 Fri Oct 23 19:34:38 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2801         * setup.c: default node name is now obtained from uname()
2802         * config.c: added put_config()
2803         * policy.c: added, moved GetExpirePolicy() from room_ops.c
2804         * policy.c: implemented cmd_gpex() and cmd_spex()
2805
2806 Wed Oct 21 22:24:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2807         * Mail rooms now hide their owner-prefix from the client.
2808         * proxy.c: added configurability and primitive message expiry
2809
2810 1998-10-20 Nathan Bryant <bryant@cs.usm.maine.edu>
2811         * Makefile.tmpl: fix to build client with old Configure script
2812         * configure.in: autologin defaults to enabled if crypt() is available
2813         * room_ops.c: fix improper null-termination bug I introduced
2814
2815 Mon Oct 19 20:52:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2816         * Client ability to force display of prompts in Mail rooms, even when
2817           the user has prompting turned off (citadel.rc option)
2818
2819 1998-10-16 Nathan Bryant <bryant@cs.usm.maine.edu>
2820         * sysdep.c (cprintf): generate a newline on truncated buffer
2821         * room_ops.c: exploitable overrun fixes
2822
2823 Thu Oct 15 19:27:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2824         * msgbase.c: reimplemented cmd_move()
2825           room_ops.c: wrote AddMessageToRoom() which is used for both entering
2826           and moving messages.
2827         * setup.c: system-default message expire policy of "number of
2828           messages, 150" is now a default configuration instead of a temp hack
2829         * proxy.c: cache dir create now dies on any error except EEXIST
2830
2831 Wed Oct 14 22:41:16 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2832         * Misc code cleanup
2833
2834 1998-10-13 Nathan Bryant <bryant@cs.usm.maine.edu>
2835         * configure.in: don't check for -lcrypt unless autologin is enabled
2836         * file_ops.c: fix another overrun
2837
2838 Mon Oct 12 15:27:21 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2839         * Killed the "rooms" subdirectory (it isn't used anymore)
2840         * dynloader.c: Made dynamically added server commands case-insensitive
2841         * import.c is now serv_upgrade.c, a module
2842         * Removed most of the "level 9" trace messages no longer needed
2843
2844 1998-10-12 Nathan Bryant <bryant@cs.usm.maine.edu>
2845         * Makefile.in: simplified to use pattern rules; files compiled with
2846           -D_REENTRANT go to *.ro to allow the same files to be used with both
2847           client and server
2848         * tools.c, tools.h: new files; misc routines used by both client and
2849           server go here. contains safestrncpy() at the moment.
2850         * rooms.c: fix several exploitable buffer overruns
2851         * sysdep.c: fix infinite loop when long lines are received from the
2852           client; fix exploitable buffer overrun in cprintf()
2853         * ipc_c_tcp.c: fix infinite loop on long line from server
2854         * serv_upgrade.sh: remove uncnsrd-dependent absolute path
2855         * .cvsignore: add *.ro
2856
2857 Sun Oct 11 23:17:48 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2858         * Built some more of the message expiry infrastructure
2859
2860 1998-10-11 Nathan Bryant <bryant@cs.usm.maine.edu>
2861         * citserver.c: fix two more overruns, one of which was preventing
2862           the "From Host" from showing up in the <W>ho listing.
2863
2864 Sun Oct 11 02:51:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2865         * Moved "struct visit" and its associated defs from citadel.h to
2866           server.h where they belong
2867         * Set up data structures for room policies (expiry, etc.)
2868
2869 1998-10-10 Nathan Bryant <bryant@cs.usm.maine.edu>
2870         * citserver.c: fix overrun which caused segv's on servers with long
2871           hostnames.
2872
2873 Fri Oct  9 18:34:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2874         * user_ops.c: added PurgeStaleRelationships() to do processing at
2875           session logout time to remove visits for rooms which no longer exist
2876         * user_ops.c: implemented NewMailCount()
2877
2878 1998-10-09 Nathan Bryant <bryant@cs.usm.maine.edu>
2879         * serv_chat.c: fix buffer overrun that was resulting in segv's
2880         * serv_chat.c: fix another overrun that could cause sessions to hang,
2881           and cleaned up some other strncpy()-related stuff. DON'T FORGET TO
2882           NULL-TERMINATE DESTINATION BUFFERS AFTER STRNCPY CALLS.
2883
2884 Fri Oct  9 13:22:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2885         * Implemented "lazy mode" traversal - pressing the space bar will do
2886           <N>ext messsage, <G>oto next room, or read <N>ew as appropriate.
2887         * room_ops.c: modify CtdlRoomAccess() to allow access to mailbox rooms
2888           only to their owners.
2889
2890 Thu Oct  8 17:13:27 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2891         * messages.c, citadel.rc: added the ability to display message numbers
2892           in the header when reading messages.  I think this is butt ugly, but
2893           some of the DaveCode afficionados seem to like it...
2894
2895 Thu Oct  8 15:34:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2896         * room_ops.c: Added is_noneditable() function to replace all of the
2897           duplicated code present in all functions which edit room parameters.
2898
2899 1998-10-08 Nathan Bryant <bryant@cs.usm.maine.edu>
2900         * lots of warning fixes; builds with -std1 on dec unix
2901         * aidepost.c, citadel.h, citmail.c, file_ops.c, msgbase.c, netmailer.c,
2902           netproc.c, rcit.c, server.h, stats.c, userlist.c: use time_t where
2903           needed
2904         * control.c, room_ops.c, serv_chat.c, sysdep.c: use memset() instead of
2905           bzero()
2906         * dynloader.c, dynloader.h, messages.c, server.h, sysdep.c,
2907           sysdep_decls.h: function pointer/prototyping fixes
2908         * rooms.c: use mkfifo(3) instead of system("mkfifo")
2909
2910 1998-10-07 Nathan Bryant <bryant@cs.usm.maine.edu>
2911         * snprintf.c, snprintf.h: new files
2912         * Makefile.in, configure.in, dynloader.c, sysdep.c: support for the
2913           above; citserver now builds and runs on Digital Unix 4.0d with the
2914           GNU-style configure script. there is a bug with the hostname display
2915           in the wholist.
2916         * netproc.c: sillyness fix
2917         * room_ops.h: prototype delete_room()
2918         * client_chat.c, commands.c, serv_chat.c, sysdep.c:
2919           use HAVE_SYS_SELECT_H macro
2920
2921 Mon Oct  5 17:01:32 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2922         * Began fixing the stuff I broke
2923
2924 Sun Oct  4 23:35:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2925         * Did the big migration to the new data structures.  Lots of stuff is
2926           now broken.  Basic moving from room to room works, but Mail is
2927           broken, and some of the administrative commands are unimplemented.
2928
2929 1998-10-02 Nathan Bryant <bryant@cs.usm.maine.edu>
2930         * configure.in: autologin now defaults to disabled
2931
2932 Fri Oct  2 00:04:31 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2933         * Finally removed all three usersupp.foo[MAXROOMS] elements, and
2934           migrated all the code that used them to use "struct visit" instead.
2935
2936 Thu Oct  1 23:02:20 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2937         * Rewrote [l][get|put]room() functions to use room names rather than
2938           room index numbers.  Temporarily prepended a "n" to these four
2939           function names until they are put to use.
2940
2941 Thu Oct  1 16:27:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2942         * Removed a few more references to usersupp.lastseen[]
2943
2944 1998-10-01 Nathan Bryant <bryant@cs.usm.maine.edu>
2945         * .cvsignore: add so_locations (generated by osf1 ld with shared libs)
2946         * Makefile.in: restructured variables for greater consistency, use
2947           @echo to print out notices during the make process, add so_locations
2948           to `cleaner'
2949         * configure.in, Makefile.in: configure checks for -rdynamic
2950         * ipc_c_tcp.c: fix DEC compiler warning wrt unsigned char
2951         * stats.c: add semicolon to placate DREC compiler
2952         * user_ops.c: define _POSIX_C_SOURCE, include <limits.h>
2953         * configure.in: pass -pthread to DEC compiler, don't check for
2954           libpthread[s] on DEC Unix
2955
2956 1998-09-30 Nathan Bryant <bryant@cs.usm.maine.edu>
2957         * Makefile.in: new variable PTHREAD_DEFS for portability
2958         * aidepost.c, citadel.c, citmail.c, mailinglist.c, msgform.c,
2959           netmailer.c, netpoll.c, netproc.c, rcit.c, readlog.c, setup.c,
2960           stats.c, userlist.c, whobbs.c: return type of main() is int
2961         * citadel.c, commands.c, messages.c: use time_t properly
2962         * citserver.c: include <limits.h>
2963         * config.guess, config.sub, install-sh: new files
2964         * configure.in: don't use gcc on Digital Unix
2965
2966 Tue Sep 29 23:17:34 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2967         * room_ops.c: modified usergoto() to look at the new data structures
2968           for counting new messages and such.
2969
2970 1998-09-29 Nathan Bryant <bryant@cs.usm.maine.edu>
2971         * user_ops.c: fix compiler warning and potential memory leak,
2972           include sysdep.h
2973         * configure.in, Makefile.in: only build the server if we find pthreads
2974         * Makefile.in: realclean removes config.{cache,log,status}
2975
2976 Tue Sep 29 13:20:14 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2977         * Removed code from some of the utilities which was still attempting
2978           to access the old non-gdbm data store.
2979         * housekeeping.c: rewrote check_ref_counts() to do a ForEachRoom()
2980           traversal instead of a MAXROOMS loop.
2981         * sysdep.c: set up a dummy CitContext record to be used during server
2982           startup, during which time there is no real context.
2983
2984 Mon Sep 28 23:51:51 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2985         * Implemented the function ForEachRoom() to handle all-rooms traversal
2986           (this will work with both the old and new paradigms, because both
2987           use a GDBM database with one room per record).  Migrated all room
2988           list commands to use it.
2989
2990 Mon Sep 28 22:05:35 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
2991         * Implemented the function CtdlRoomAccess() to handle *all* of the
2992           user-access-to-rooms functionality.  Migrated all room list commands
2993           to use it.  Still need to migrate gotos.
2994
2995 1998-09-28 Nathan Bryant <bryant@cs.usm.maine.edu>
2996         * configure.in, acconfig.h: new files; partially functional GNU
2997           autoconf configure script. Run autoheader; autoconf; ./configure
2998           --prefix=`pwd` to test.
2999         * Makefile.tmpl: new file; this is what Makefile.in used to be. Used by
3000           Configure.
3001         * Makefile.in: modified to work with autoconf-style configure script
3002         * Configure: modified to use Makefile.tmpl and generate autoconf-style
3003           macros. Removed procfs detection. Pass -O2 to gcc, -O to other
3004           compilers. Removed mknod/mkfifo detection; code should use mkfifo(3).
3005         * citmail.c, msgform.c, netproc.c, routines.c, support.c, userlist.c,
3006           whobbs.c: use HAVE_STRERROR macro rather than NO_STRERROR
3007         * commands.c: use HAVE_TERMIOS_H macro rather than POSIX_TERMIO
3008         * netproc.c: remove procfs stuff. simply attempt to kill the target
3009           process with signal zero instead; this checks whether the process
3010           exists.
3011         * setup.c, useradmin.c: use HAVE_CURSES_H macro
3012
3013 Sun Sep 27 23:41:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3014         * BOTH the old and new generation systems are being written to at
3015           this point.  Code that reads stuff is still using the old system.
3016
3017 Sun Sep 27 16:10:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3018         * Changed all "generation" variables from char to long, in preparation
3019           for removing MAXROOMS.  Generations for new rooms are now timestamps.
3020         * Defined "struct visit" to hold user/room relationships.
3021         * Removed some #define's from citadel.h that are no longer used.
3022
3023 Wed Sep 23 13:41:49 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3024         * More changes to support attachments.  They mostly work, but only
3025           in fixed-format messages.
3026
3027 Mon Sep 21 21:19:17 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3028         * msgbase.c: began laying the groundwork to support attachments.
3029           Purchased Rogaine(tm) in preparation for expected hair loss.
3030
3031 1998-09-21 Nathan Bryant <bryant@cs.usm.maine.edu>
3032         * msgbase.c: include dynloader.h
3033         * citadelapi.h: removed
3034         * dynloader.h: prototype CtdlRegisterUserHook()
3035
3036 Sun Sep 20 18:56:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3037         * Added a UserFunctionHook category to implement hooks which perform
3038           operations on various users or usernames
3039
3040 Fri Sep 18 21:14:41 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3041         * citserver.c: removed cmd_extn() and related code
3042
3043 1998-09-18 Nathan Bryant <bryant@cs.usm.maine.edu>
3044         * user_ops.c: include dynloader.h
3045         * roomstats.{c,mk}: removed
3046         * Configure, Makefile.in: autodependency-related fixes
3047
3048 Thu Sep 17 22:55:29 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3049         * Various changes to allow "new messages" to work correctly with Mail
3050
3051 Thu Sep 17 22:21:45 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3052         * server.h, dynloader.c, citserver.c, user_ops.c: reduced the number
3053           of hook types by inventing an EventType field to the Session hook.
3054         * proxy.c: added pre-fetching
3055
3056 1998-09-17 Nathan Bryant <bryant@cs.usm.maine.edu>
3057         * Makefile.in: add SERV_MODULES and PROXY_TARGETS to `cleaner'
3058         * dynloader.[ch], serv_{chat,test}.[ch], sysdep.c: cleaned
3059           up the dynamic loader interface as follows:
3060           - all the symbol table stuff is gone.
3061           - modules are loaded once at server startup and never unloaded.
3062           - Added a new function CtdlRegisterProtoHook() to handle the stuff
3063             that was being done with the symbol tables.
3064           - Dynamic_Module_Init() now returns a pointer to a static struct
3065             DLModule_Info; this structure itself has been modified to use char*
3066             fields instead of fixed char arrays.
3067         * roomstats.c: include <stdarg.h> not <stdargs.h> (is this file still
3068           in use?)
3069         * Configure, Makefile.in: added autodependency support
3070
3071 Wed Sep 16 22:25:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3072         * Implemented separate structs, lists, and functions for each type
3073           of server-side hook available.
3074
3075 1998-09-16 Nathan Bryant <bryant@cs.usm.maine.edu>
3076         * ipc_c_tcp.c: Fixed up some #include/prototyping stuff, call memcpy()
3077           instead of bcopy()
3078         * hooks.h: removed
3079         * sysdep.c, user_ops.c: removed reference to hooks.h
3080
3081 Wed Sep 16 11:42:42 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3082         * ipc_c_tcp.c: Reversed any changes that have been made to this file,
3083           because something was causing abominally slow response time.
3084         * proxy.c: added.  This will eventually become a caching, pre-fetching
3085           multiuser proxy server for the Citadel protocol.
3086
3087 1998-09-15 Nathan Bryant <bryant@cs.usm.maine.edu>
3088         * Makefile.in: remove support.o from serv_chat.so, add -fPIC to compile
3089           flags for serv_chat.o
3090         * dynloader.c: include "sysdep_decls.h", use RTLD_NOW not RTLD_LAZY
3091         * dynloader.h: prototype CtdlRegisterHook()
3092         * .cvsignore: added data
3093
3094 Mon Sep 14 20:49:08 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3095         * Tried my hand at adding the ability for server extensions to
3096           register various types of "hooks" in addition to just adding
3097           server commands.  This is probably not final.
3098
3099 Tue Sep  8 12:11:56 EDT 1998 Brian Costello <btx@calyx.net>
3100         * Added support for dynamic server modules.  Reworked serv_chat.c
3101           to be such a module.
3102
3103 Tue Sep  1 23:09:50 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3104         * userpurge.c: rewrote using functions from the server core, rather
3105           than the now-defunct external API.  This'll be ready once the module
3106           loading code is done.  (I just had to commit _something_ tonight.)
3107
3108 Mon Aug 31 22:47:58 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3109         * Yanked the citadelapi.c module.  This wasn't working out well.
3110         * techdocs/citadelapi.txt - began documenting the new API to be used
3111           by modules which will be dynamic linked into the server - most of
3112           this API is existing server functions.
3113         * Added a ForEachUser() function with callback mechanism, and reworked
3114           cmd_list() to use it.
3115
3116 Sun Aug 30 21:52:43 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3117         * Moved all of the gdbm databases to a separate "data" directory.
3118
3119 1998-08-26 Nathan Bryant <bryant@cs.usm.maine.edu>
3120         * Makefile.in: realclean removes Makefile, fixed `touch citadel.h'
3121           problem
3122
3123 1998-08-25 Nathan Bryant <bryant@cs.usm.maine.edu>
3124         * room_ops.c: include time.h
3125         * userlist.c, whobbs.c, serv_chat.c, user_ops.c, sysdep.c, stats.c,
3126           citadel_decls.h, commands.c, messages.h, routines.h, routines2.h:
3127           remove duplicated declarations
3128
3129 Mon Aug 24 23:45:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3130         * setup.c: Removed yesno_s()
3131         * citadel.h, room_ops.c: added QRmtime field to struct quickroom,
3132           modified whenever a room is modified or posted in.
3133         * citadelapi.c: Added CtdlForEachRoom() function
3134
3135 Mon Aug 24 20:04:04 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
3136         * Makefile.in: new target `cleaner' does the same as `realclean' 
3137           without removing sysdep.h
3138         * proto.h: is bad. eliminate. I've moved the prototypes into several
3139           header files, one per .c file
3140
3141 Mon Aug 24 00:45:55 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3142         * Added a CtdlGotoRoom() function to the CitadelAPI.
3143  
3144 Sun Aug 23 21:47:00 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3145         * sysoputil is finally dead!  Removed it from the build.
3146         * Added userpurge.c server extension (initial implementation)
3147
3148 Tue Aug 18 00:42:33 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
3149         * Makefile.in: `clean' target no longer rm's sysdep.h; new target
3150           `realclean' removes everything clean does, plus sysdep.h, plus
3151           target binaries.
3152         * Configure: add -Wstrict-prototypes to CFLAGS for gcc systems
3153         * *.[ch]: protoized. Added several new header files containing
3154           prototypes and other external declarations; many duplicated
3155           declarations still should be moved to header files. proto.h must die
3156           as well, IMHO.
3157
3158 Mon Aug 17 23:52:13 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3159         * Implemented a bunch of user account related functions in the
3160           CitadelAPI library.
3161
3162 Mon Aug 17 20:01:18 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3163         * Fixed the crash problem.  It wasn't AGUP/ASUP, but rather a buffer
3164           overrun in getuser() (thanks, Nathan).  Implemented overrun checks
3165           in getuser(), getroom(), and getfloor() to prevent future problems.
3166
3167 Mon Aug 17 00:06:52 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3168         * Updated citmail.c with the latest stuff from the production system.
3169         * Implemented AGUP and ASUP commands, but AGUP crashes the server
3170           after its first successful use (user-not-found's don't affect it).
3171
3172 Thu Aug  6 19:25:01 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3173         * Got the CitadelAPI library to the point where the server can start
3174           up an extension, and the extension will connect to the server, do
3175           some initialization, call a user-supplied CtdlMain(), and exit.  Also
3176           hacked together a _temporary_ form of the new EXTN server command.
3177  
3178 Wed Aug  5 23:02:22 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3179         * Second attempt at getting the server API started.  Now it runs
3180           outside of the server and builds a connection.
3181
3182 Tue Aug  4 18:33:06 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3183         * Modified the appearance of Internet addresses when they arrive on
3184           a Citadel system.
3185         * Removed the <E> field from the message format writeup in hack.txt.
3186         * Fixed-up citmail.c so that it doesn't try to do database lookups.
3187
3188 Mon Aug  3 23:01:37 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3189         * Started developing the server-side API.  This is in its very
3190           initial stages.  See serverapi.c and techdoc/api.txt
3191
3192 1998-08-02  Nathan Bryant  <bryant@cs.usm.maine.edu>
3193         * Makefile.in: added config_decls.h to dependencies
3194
3195 Sun Aug  2 21:09:09 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
3196         * config_defs.h: renamed to config_decls.h
3197         * config.c, sysoputil.c: updated to reflect the above
3198
3199 Sun Aug  2 18:52:05 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
3200         * config_defs.h: new file, contains external declarations from config.c
3201         * config.c: moved defs to config_defs.h, use PATH_MAX from <limits.h>
3202           for bbs_home_directory
3203         * mailinglist.c, support.c: include <string.h>
3204         * sysoputil.c: include <string.h>, <limits.h>, "config_defs.h", remove
3205           duplicated defs, replace gets() call with fgets()
3206         * user_ops.c: define _XOPEN_SOURCE_EXTENDED
3207
3208 Sat Aug  1 18:32:52 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
3209         * ipc_c_tcp.c: fixed order of memcpy parameters after gethostbyname
3210
3211 Sun Jul 19 17:26:12 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
3212         * ChangeLog: reordered; the GNU standard is to add new entries to the
3213           top.
3214         * .cvsignore: added userlist
3215
3216 Sun Jul 12 20:58:59 EDT 1998 Art Cancro <ajc@uncensored.citadel.org>
3217         * Finished migrating everything to the new data store.
3218         * Replaced the binary "calllog" with the ASCII "citadel.log"
3219         * Began converting broken utilities that depend on the old data store
3220
3221 Sat Jul 11 00:20:48 EDT 1998 Nathan Bryant <bryant@cs.usm.maine.edu>
3222         * Makefile.in: removed msgstats
3223
3224 Fri Jul 10 1998 Art Cancro <ajc@uncensored.citadel.org>
3225         * Initial CVS import 
3226