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