+2001-01-02 Perry Lorier <isomer@coders.net>
+ * ircd/s_err.c: Added third param to 004 - the channel modes that tage params. Used by hybrid/epic.
+ * ircd/s_channels.c: Added fix for msg'ing a -n+m channel - thanks
+ to guppy for noticing, and hektik for providing the fix.
+ * misc others: Minor cleanups, added more protocol_violations, ripped
+ out more P09 stuffs, bit more protocol neg stuff.
+
+2000-12-19 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_ison.c (m_ison): Dianora says that ISON has to end with a
+ space (*sigh* stupid clients...)
+
+ * ircd/s_user.c: make WALLOPS_OPER_ONLY a feature managed through
+ ircd_features.[ch]
+
+ * ircd/s_err.c: get rid of GODMODE conditionals
+
+ * ircd/s_debug.c (debug_serveropts): switch to using appropriate
+ calls into the features subsystem for various serveropts
+ characters
+
+ * ircd/s_conf.c (find_conf_entry): get rid of USEONE conditional
+
+ * ircd/s_bsd.c: remove GODMODE conditional; use features subsystem
+ to get value of VIRTUAL_HOST and CLIENT_FLOOD; remove
+ NOFLOWCONTROL conditional
+
+ * ircd/s_auth.c: use features subsystem to determine value of
+ KILL_IPMISMATCH
+
+ * ircd/parse.c: get rid of NOOPER and GODMODE conditionals; use
+ features subsystem to determine the setting of IDLE_FROM_MSG
+
+ * ircd/numnicks.c: get rid of EXTENDED_NUMERICS conditionals
+
+ * ircd/motd.c: get value of NODEFAULTMOTD from features subsystem;
+ use features subsystem to get motd file names
+
+ * ircd/m_settime.c: get value of RELIABLE_CLOCK from features
+ subsystem
+
+ * ircd/m_server.c: get rid of CRYPT_LINK_PASSWORD, since it does
+ us no good; use features subsystem to figure out if we need to do
+ HUB-type stuff; make TESTNET debugging sendto_opmask_butone's use
+ the Debug(()) macro instead; get value of RELIABLE_CLOCK from
+ features subsystem
+
+ * ircd/m_privmsg.c: get IDLE_FROM_MSG from the features subsystem
+
+ * ircd/m_oper.c: get CRYPT_OPER_PASSWORD from the features
+ subsystem
+
+ * ircd/m_connect.c: get SERVER_PORT from the features subsystem
+
+ * ircd/ircd_log.c (log_set_file): fix a bug that kept log files
+ from getting marked if they were already set to something...
+
+ * ircd/ircd_features.c: add a flag to indicates read-only access;
+ add several new features that used to be compile-time selected
+
+ * ircd/ircd.c: grab pidfile out of feature subsystem; don't check
+ access to motd files (what the heck?); make sure to initialize the
+ feature subsystem before trying to write the config file
+
+ * ircd/dbuf.c: use feature_int() to retrieve BUFFERPOOL settings;
+ use feature_bool() to figure out if we're using the FERGUSON
+ flusher
+
+ * ircd/Makefile.in: MPATH and RPATH are now done differently, so
+ remove the clause that creates empty files of that name; also ran
+ make depend
+
+ * include/sys.h: CLIENT_FLOOD is now a feature; unfortunately,
+ there is no easy way to bounds-check it at present
+
+ * include/querycmds.h: make sure ircd_features.h is included; use
+ feature_str(FEAT_DOMAINNAME) in calls to match()
+
+ * include/ircd_features.h: many new features that used to be
+ compile-time selected
+
+ * config/config-sh.in: add * to DOMAINNAME; try also using first
+ argument to search in /etc/resolv.conf; removed many compile-time
+ options that now can be configured through the features system
+
+2000-12-18 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * doc/api/log.txt: how to use the logging API
+
+ * doc/api/features.txt: how to use the features API
+
+ * doc/api/api.txt: how to write API documentation
+
+ * include/ircd_features.h: rearranged a couple of features for
+ neatness purposes
+
+ * ircd/ircd_features.c: cleaned up the macros some; rearranged
+ some code to all go into the switch; rearranged a couple of
+ features for neatness purposes
+
+2000-12-16 Greg Sikorski <gte@atomicrevs.demon.co.uk>
+ * ircd/os_bsd.c: Added os_set_tos for BSD users.
+
+2000-12-16 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_features.c: Isomer almost got it right; you need to
+ use F_I(), since it's an integer value, not a boolean value. The
+ asserts in feature_int would catch you out... Also made the F_*
+ macros take flags
+
+ * ircd/s_err.c: define RPL_PRIVS reply
+
+ * ircd/parse.c: put new PRIVS command into command table
+
+ * ircd/m_privs.c (mo_privs): message handler to report operator
+ privileges
+
+ * ircd/ircd_features.c: declare new features OPER_SET and
+ LOCOP_SET; redo boolean testing routine to accept TRUE, YES, and
+ ON for boolean TRUE, and FALSE, NO, and OFF for boolean FALSE
+
+ * ircd/client.c: simplify client_set_privs() with a table that
+ defines what features to test for; add new client_report_privs()
+
+ * ircd/Makefile.in: compile new m_privs.c; run make depend
+
+ * include/numeric.h (RPL_PRIVS): new reply numeric for displaying
+ an operator's privileges
+
+ * include/msg.h: define new command: PRIVS
+
+ * include/ircd_features.h: create new features OPER_SET and
+ LOCOP_SET for controlling access to /set
+
+ * include/handlers.h (mo_privs): declare message handler for
+ reporting oper privileges
+
+ * include/client.h (client_report_privs): declare function to
+ report what privileges an oper has
+
+ * ircd/m_whois.c (do_whois): fix a bug that caused /whois to
+ report that a user is an oper if the oper doing the /whois had
+ PRIV_SEE_OPERS
+
+2000-12-17 Isomer <Isomer@coders.net>
+ * ircd/listener.c: added support for TOS twiddling as a 'feature'.
+
+2000-12-17 Isomer <Isomer@coders.net>
+ * ircd/os_linux.c: add TOS stuffs
+
+ * ircd/listener.c: add TOS stuffs
+
+2000-12-16 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/whocmds.c (do_who): use HasPriv to determine whether or not
+ to indicate a user is an oper
+
+ * ircd/s_user.c: clear privileges setting when deopping; don't
+ propagate +o unless user has PRIV_PROPAGATE privilege
+
+ * ircd/s_debug.c (debug_serveropts): created debug_serveropts()
+ function and replaced how the server option string is generated
+
+ * ircd/parse.c: remove conditional on CONFIG_OPERCMDS
+
+ * ircd/m_whois.c (do_whois): use HasPriv to determine whether or
+ not to indicate the user is an operator
+
+ * ircd/m_who.c: use HasPriv to determine whether or not a user
+ should be displayed in the list of opers
+
+ * ircd/m_version.c: call debug_serveropts() to get server option
+ string
+
+ * ircd/m_userip.c (userip_formatter): use HasPriv to determine
+ whether or not to show oper status
+
+ * ircd/m_userhost.c (userhost_formatter): use HasPriv to determine
+ whether or not to show oper status
+
+ * ircd/m_restart.c (mo_restart): replace ugly #ifdef conditional
+ checks with HasPriv check; remove dead code
+
+ * ircd/m_rehash.c (mo_rehash): replace ugly #ifdef conditional
+ checks with HasPriv check
+
+ * ircd/m_opmode.c (mo_opmode): use HasPriv to check permissions;
+ use feature_bool to check if disabled
+
+ * ircd/m_oper.c (m_oper): set oper priviliges
+
+ * ircd/m_mode.c (m_mode): replace #ifdef conditional with HasPriv
+ check
+
+ * ircd/m_kill.c (mo_kill): use HasPriv checks to determine if we
+ can kill
+
+ * ircd/m_kick.c (m_kick): replace #ifdef conditional with HasPriv
+ check
+
+ * ircd/m_jupe.c (mo_jupe): rework permissions checking structure;
+ use feature_bool to check if disabled
+
+ * ircd/m_join.c (m_join): remove BADCHAN conditional; replace
+ #ifdef conditional with a HasPriv check
+
+ * ircd/m_gline.c (mo_gline): rework permissions checking
+ structure; use feature_bool to check if any part is disabled
+
+ * ircd/m_die.c: replace ugly #ifdef conditionals with HasPriv
+ check; remove dead code
+
+ * ircd/m_clearmode.c: use feature_bool() to detect if we're
+ disabled; use HasPriv to figure out what we're permitted to do;
+ only allow clearmode on moded channels
+
+ * ircd/ircd_features.c: define various features; use HasPriv to
+ verify permissions to set/reset
+
+ * ircd/gline.c (gline_add): use HasPriv instead of #ifdef
+ conditionals
+
+ * ircd/client.c (client_set_privs): function to set an oper's
+ privileges
+
+ * ircd/channel.c: use HasPriv calls instead of #ifdef conditionals
+
+ * include/whocmds.h: deconditionalize several macros and
+ substitute appropriate calls to HasPriv()
+
+ * include/s_debug.h: get rid of global serveropts[]; define new
+ function debug_serveropts() to build that string on the fly
+
+ * include/ircd_features.h: define some features
+
+ * include/client.h: add privs member to struct Connection; define
+ various priviledges
+
+ * include/channel.h: no longer using IsOperOnLocalChannel; remove
+ conditional of MAGIC_OPER_OVERRIDE on OPER_WALK_THROUGH_LMODES
+
+ * doc/Configure.help: remove help information for deprecated
+ options
+
+ * config/config-sh.in: remove certain deprecated options having to
+ do with what opers can and cannot do--first stage in moving
+ compile-time constants into the .conf
+
+2000-12-16 Isomer <Isomer@coders.net>
+ * ircd/parse.c: detect if the prefix is missing and try and recover
+ instead of coring.
+
+2000-12-15 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_log.c: found and fixed some bugs in the debug logging
+ code that would sometimes result in the log file not being
+ reopened--which meant that a user could connect and get the
+ logging output--oops
+
+ * ircd/Makefile.in: run make depend...
+
+ * ircd/s_stats.c: get rid of report_feature_list()
+
+ * ircd/s_err.c: add the 'bad value' error message, shift error
+ messages over somewhat
+
+ * ircd/s_debug.c (debug_init): call log_debug_init with the
+ use_tty flag
+
+ * ircd/s_conf.c (read_configuration_file): unmark features before
+ reading the config file, then reset unmarked features after
+ reading the config file
+
+ * ircd/m_stats.c: use feature_report() instead of
+ report_feature_list()
+
+ * ircd/ircd_log.c: fix log_debug_file (bogus assertion); add
+ special 'mark' flags and use them; add the stuff needed by the
+ features API
+
+ * ircd/ircd_features.c: rework the features API and add gobs of
+ comments to try to explain what some of these complex functions
+ are actually doing
+
+ * include/s_stats.h: get rid of report_feature_list(); use
+ feature_report() instead
+
+ * include/numeric.h: added a new error message and shifted old
+ values over some--this is, after all, an alpha
+
+ * include/ircd_log.h: log_debug_init now takes an integer to tell
+ it if it should be using the tty; added a couple of functions
+ required by the features API
+
+ * include/ircd_features.h: add an enum and some more functions to
+ flesh out the feature API--it should now be possible to put all
+ those compile-time constants in the config file!
+
+ * ircd/send.c: got the direction of the assert incorrect...
+
+ * ircd/send.c: implement the efficiency of flush_connections by
+ creating a linked list of struct Connection's with queued data;
+ also get rid of flush_sendq_except and make sure to yank
+ connections out of the list when their sendQs become empty (notice
+ the assertion in flush_connections!)
+
+ * ircd/s_bsd.c (close_connection): must yank the Connection out of
+ the sendq list
+
+ * ircd/list.c (dealloc_connection): must yank the Connection out
+ of the sendq list
+
+ * ircd/dbuf.c (dbuf_put): call flush_connections instead of the
+ deprecated flush_sendq_except
+
+ * ircd/client.c: define a couple new helper functions for sendq
+ threading--this will make the flush_connections function in send.c
+ considerably more efficient by creating a linked list of
+ Connections that have queued data to send
+
+ * include/send.h: remove flush_sendq_except, as it's not used
+ anymore
+
+ * include/client.h: declare a couple new helper functions for the
+ sendq threading system
+
+2000-12-14 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_ison.c (m_ison): Apply Diane Bruce's patch to make ISON
+ parse all arguments
+
+ * ircd/s_debug.c (count_memory): modify to report for clients and
+ connections, not local clients and remote clients
+
+ * ircd/list.c: fiddle with the client-fiddling functions to take
+ into account the divorce of struct Connection from struct Client
+
+ * ircd/ircd.c: define a struct Connection for me, initialize it,
+ and link it into the right place (ewww, globals!)
+
+ * include/client.h: remove CLIENT_{LOCAL,REMOTE}_SIZE; split
+ struct Client into struct Client and struct Connection; redefine
+ local-portion accessor macros to go through struct Client to the
+ struct Connection; define struct Connection accessor macros
+
+2000-12-13 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/whowas.c: missed a couple of accesses to a struct Client
+
+ * ircd/uping.c: missed a couple of accesses to a struct Client
+
+ * ircd/send.c: missed a couple of accesses to a struct Client
+
+ * ircd/s_user.c: missed a couple of accesses to a struct Client
+
+ * ircd/s_misc.c: missed a couple of accesses to a struct Client
+
+ * ircd/s_conf.c: missed a couple of accesses to a struct Client
+
+ * ircd/s_bsd.c: missed a couple of accesses to a struct Client
+
+ * ircd/s_auth.c: missed a couple of accesses to a struct Client
+
+ * ircd/res.c: missed a couple of accesses to a struct Client
+
+ * ircd/parse.c: missed a couple of accesses to a struct Client
+
+ * ircd/m_whois.c: use new accessor macros for struct Client
+
+ * ircd/m_who.c: use new accessor macros for struct Client
+
+ * ircd/m_wallchops.c: use new accessor macros for struct Client
+
+ * ircd/m_version.c: use new accessor macros for struct Client
+
+ * ircd/m_userip.c: use new accessor macros for struct Client
+
+ * ircd/m_userhost.c: use new accessor macros for struct Client
+
+ * ircd/m_user.c: use new accessor macros for struct Client
+
+ * ircd/m_uping.c: use new accessor macros for struct Client
+
+ * ircd/m_trace.c: use new accessor macros for struct Client
+
+ * ircd/m_topic.c: use new accessor macros for struct Client
+
+ * ircd/m_time.c: use new accessor macros for struct Client
+
+ * ircd/m_stats.c: use new accessor macros for struct Client
+
+ * ircd/m_squit.c: use new accessor macros for struct Client
+
+ * ircd/m_silence.c: use new accessor macros for struct Client
+
+ * ircd/m_server.c: use new accessor macros for struct Client;
+ remove dead code
+
+ * ircd/m_rpong.c: use new accessor macros for struct Client
+
+ * ircd/m_rping.c: use new accessor macros for struct Client
+
+ * ircd/m_quit.c: use new accessor macros for struct Client
+
+ * ircd/m_privmsg.c: use new accessor macros for struct Client
+
+ * ircd/m_pong.c: use new accessor macros for struct Client; remove
+ dead code
+
+ * ircd/m_ping.c: use new accessor macros for struct Client
+
+ * ircd/m_pass.c: use new accessor macros for struct Client
+
+ * ircd/m_part.c: use new accessor macros for struct Client
+
+ * ircd/m_oper.c: use new accessor macros for struct Client
+
+ * ircd/m_notice.c: use new accessor macros for struct Client
+
+ * ircd/m_nick.c: use new accessor macros for struct Client
+
+ * ircd/m_names.c: use new accessor macros for struct Client
+
+ * ircd/m_mode.c: use new accessor macros for struct Client
+
+ * ircd/m_map.c: use new accessor macros for struct Client
+
+ * ircd/m_list.c: use new accessor macros for struct Client
+
+ * ircd/m_links.c: use new accessor macros for struct Client;
+ remove some dead code
+
+ * ircd/m_kill.c: use new accessor macros for struct Client; remove
+ some dead code
+
+ * ircd/m_kick.c: use new accessor macros for struct Client
+
+ * ircd/m_join.c: use new accessor macros for struct Client; remove
+ some dead code
+
+ * ircd/m_ison.c: use new accessor macros for struct Client
+
+ * ircd/m_invite.c: use new accessor macros for struct Client
+
+ * ircd/m_info.c: use new accessor macros for struct Client
+
+ * ircd/m_gline.c: use new accessor macros for struct Client
+
+ * ircd/m_error.c: use new accessor macros for struct Client
+
+ * ircd/m_create.c: use new accessor macros for struct Client
+
+ * ircd/m_connect.c: use new accessor macros for struct Client;
+ removed some dead code
+
+ * ircd/m_burst.c: use new accessor macros for struct Client
+
+ * ircd/m_away.c: use new accessor macros for struct Client
+
+ * ircd/m_admin.c: use new accessor macros for struct Client
+
+ * ircd/hash.c: missed a couple of accesses to a struct Client
+
+ * ircd/gline.c: missed a couple of accesses to a struct Client
+
+ * ircd/crule.c: missed a couple of accesses to a struct Client
+
+ * ircd/class.c: missed an access to a struct Client
+
+ * ircd/channel.c: missed a couple of accesses to a struct Client
+
+ * ircd/IPcheck.c: missed an access to a struct Client
+
+ * include/querycmds.h: fix a couple of stats macros to use
+ structure accessor macros
+
+ * include/client.h: change structure member names to highlight any
+ places in the code I've missed
+
+2000-12-12 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/whowas.c: use new struct Client accessor macros
+
+ * ircd/whocmds.c: use new struct Client accessor macros
+
+ * ircd/send.c: use new struct Client accessor macros
+
+ * ircd/s_user.c: use new struct Client accessor macros; removed
+ some dead code
+
+ * ircd/s_serv.c: use new struct Client accessor macros; removed
+ some dead code
+
+ * ircd/s_numeric.c: use new struct Client accessor macros
+
+ * ircd/s_misc.c: use new struct Client accessor macros
+
+ * ircd/s_debug.c: use new struct Client accessor macros
+
+ * ircd/s_conf.c: use new struct Client accessor macros
+
+ * ircd/s_bsd.c: use new struct Client accessor macros
+
+ * ircd/s_auth.c: use new struct Client accessor macros
+
+ * ircd/parse.c: use new struct Client accessor macros
+
+ * ircd/packet.c: use new struct Client accessor macros
+
+ * ircd/numnicks.c: use new struct Client accessor macros
+
+ * ircd/motd.c: use new struct Client accessor macros
+
+ * ircd/listener.c: use new struct Client accessor macros
+
+ * ircd/list.c: use new struct Client accessor macros
+
+ * ircd/jupe.c: use new struct Client accessor macros
+
+ * ircd/ircd_snprintf.c: use new struct Client accessor macros
+
+ * ircd/ircd_reply.c: use new struct Client accessor macros
+
+ * ircd/ircd_relay.c: use new struct Client accessor macros
+
+ * ircd/ircd.c: use new struct Client accessor macros
+
+ * ircd/gline.c: catch some instances of me.<stuff> I missed
+ previously
+
+ * ircd/client.c: use cli_ instead of con_
+
+ * ircd/class.c: use cli_ instead of con_
+
+ * ircd/channel.c: use cli_ instead of con_
+
+ * ircd/IPcheck.c: use cli_ instead of con_; catch some instances
+ of me.<stuff> I missed previously
+
+ * include/client.h: use cli_ instead of con_...seemed like a good
+ idea at the time *shrug*
+
+2000-12-11 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/hash.c: use struct Client accessor macros
+
+ * ircd/gline.c: use struct Client accessor macros
+
+ * ircd/crule.c: use struct Client accessor macros
+
+ * ircd/client.c: use struct Client accessor macros; remove some
+ dead code
+
+ * ircd/class.c: use struct Client accessor macros
+
+ * ircd/channel.c: use struct Client accessor macros; remove some
+ dead code
+
+ * ircd/IPcheck.c: use struct Client accessor macros
+
+ * include/numnicks.h: use struct Client accessor macros
+
+ * include/client.h: first step to divorcing struct Client and
+ struct Connection--define accessor macros and use them
+
+ * ircd/gline.c: When Uworld removed Uworld-set G-lines, only the
+ uplink would remove them. This is because the removal protocol
+ message wasn't being sent to the uplinks. This is fixed by fixing
+ propagate_gline() to send the proper number of arguments depending
+ on whether or not we're adding or deleting the Uworld gline, and
+ by having gline_deactivate() make sure to turn off the active bit
+ and call propagate_gline() if it's a Uworld gline
+
+2000-12-10 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/os_generic.c: make sure IOV_MAX gets defined, just in case
+
+ * ircd/os_bsd.c: apparently BSD doesn't have IOV_MAX defined
+ anywhere intelligent...
+
+2000-12-09 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/send.c (send_queued): call deliver_it with appropriate
+ arguments
+
+ * ircd/s_serv.c: reorder a couple of headers--cosmetic
+
+ * ircd/s_bsd.c (deliver_it): make deliver_it work with a struct
+ MsgQ
+
+ * ircd/os_solaris.c (os_sendv_nonb): function for calling writev
+ with appropriate iovec
+
+ * ircd/os_linux.c (os_sendv_nonb): function for calling writev
+ with appropriate iovec
+
+ * ircd/os_generic.c (os_sendv_nonb): function for calling writev
+ with appropriate iovec
+
+ * ircd/os_bsd.c (os_sendv_nonb): function for calling writev with
+ appropriate iovec
+
+ * ircd/msgq.c (msgq_mapiov): add a len_p argument for totalling up
+ exactly how much we're trying to write out to the fd
+
+ * include/s_bsd.h: make deliver_it take a struct MsgQ
+
+ * include/msgq.h: add a len_p argument to msgq_mapiov to help
+ detect short writes that indicate possible socket blocking
+
+ * include/ircd_osdep.h: declare os_sendv_nonb()
+
+ * ircd/channel.c (modebuf_mode): don't add empty modes...
+
+2000-12-08 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * include/send.h: add prio argument to send_buffer to select
+ between normal and priority queues
+
+ * ircd/s_user.c (send_user_info): add prio argument to send_buffer
+ call
+
+ * ircd/m_ison.c (m_ison): add prio argument to send_buffer call
+
+ * ircd/ircd_reply.c (send_reply): add prio argument to send_buffer
+ call
+
+ * ircd/channel.c (send_channel_modes): add prio argument to
+ send_buffer call
+
+ * ircd/send.c (send_buffer): add a prio argument to select the
+ priority queue; update send.c functions to use it
+
+ * ircd/msgq.c (msgq_add): remove msgq_prio; fold msgq_link and
+ msgq_add; add a prio argument to msgq_add to select the priority
+ queue
+
+ * include/msgq.h: remove msgq_prio; add a prio argument to
+ msgq_add
+
+ * ircd/send.c: remove sendbuf; remove GODMODE code; switch to
+ using msgq functions instead of dbuf functions; remove old, dead
+ sendto_* functions; redo send_buffer to take a struct MsgBuf;
+ rework sendcmdto_* functions to make use of the new struct MsgBuf
+
+ * ircd/s_user.c: remove hunt_server; restructure send_user_info to
+ make appropriate use of struct MsgBuf
+
+ * ircd/s_debug.c (count_memory): count memory used by the MsgQ
+ system and report it
+
+ * ircd/s_conf.c (read_configuration_file): use
+ sendto_opmask_butone instead of the now dead sendto_op_mask
+
+ * ircd/s_bsd.c: switch to using appropriate MsgQLength and other
+ calls on sendQ
+
+ * ircd/parse.c (parse_server): get rid of a piece of GODMODE code
+
+ * ircd/msgq.c: add msgq_append and msgq_bufleft; fix a bug in
+ msgq_clean
+
+ * ircd/m_version.c: fix spelling in comments marking dead code
+
+ * ircd/m_userip.c (userip_formatter): restructure to make use of
+ struct MsgBuf
+
+ * ircd/m_userhost.c (userhost_formatter): restructure to make use
+ of struct MsgBuf
+
+ * ircd/m_stats.c: use MsgQLength on a sendQ
+
+ * ircd/m_settime.c: use MsgQLength instead of DBufLength on a
+ sendQ; mark a piece of dead code
+
+ * ircd/m_names.c: use send_reply instead of sendto_one
+
+ * ircd/m_mode.c: use new mode; remove old dead code
+
+ * ircd/m_ison.c (m_ison): restructure to make use of struct MsgBuf
+
+ * ircd/m_burst.c: use BUFSIZE instead of IRC_BUFSIZE; remove old
+ dead code
+
+ * ircd/listener.c (accept_connection): use sendto_opmask_butone
+ instead of sendto_op_mask
+
+ * ircd/list.c (free_client): use MsgQClear to clear sendQ
+
+ * ircd/ircd_reply.c: remove send_error_to_client; restructure
+ send_reply to make use of struct MsgBuf
+
+ * ircd/dbuf.c (dbuf_put): remove argument to flush_sendq_except,
+ since its no longer used (at least currently)
+
+ * ircd/channel.c: restructure send_channel_modes to make use of
+ struct MsgBuf; remove set_mode, add_token_to_sendbuf, cancel_mode,
+ and send_hack_notice; use BUFSIZE instead of IRC_BUFSIZE
+
+ * ircd/Makefile.in: add msgq.c to list of sources; run make depend
+
+ * ircd/IPcheck.c: use sendcmdto_one instead of sendto_one
+
+ * include/send.h: send_buffer now takes a struct MsgBuf * instead
+ of a char *; flush_sendq_except now takes no arguments, as sendq
+ flushing currently only happens in dbuf.h and sendQ is a struct
+ MsgQ; remove prototypes for a lot of old sendto_* functions that
+ aren't used anymore; remove sendbuf and IRC_BUFSIZE--the former is
+ no longer needed, and the latter is identical to BUFSIZE in
+ ircd_defs.h
+
+ * include/s_user.h: make InfoFormatter take a struct MsgBuf*
+ instead of a char *; also make it return void, instead of char *
+
+ * include/msgq.h: add msgq_append and msgq_bufleft functions
+
+ * include/client.h: use a struct MsgQ instead of a struct DBuf for
+ sendq
+
+ * doc/Configure.help: Remove help for compile-time options that
+ have gone away
+
+ * config/config-sh.in: remove CONFIG_NEWMODE
+
+ * ircd/m_server.c (mr_server): don't send server IPs in any server
+ notices
+
+ * ircd/msgq.c (msgq_vmake): add \r\n to messages
+
+2000-12-07 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * include/msgq.h: declare the MsgQ API
+
+ * ircd/msgq.c: implementation of new MsgQ system
+
+2000-12-06 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/ircd_features.c: #include was supposed to be for
+ ircd_features.h, not features.h--missed when I had to do a
+ rename because of namespace collision
+
+2000-12-05 Greg Sikorski <gte@atomicrevs.demon.co.uk>
+ * ircd/m_topic.c: Added missing braces that caused all remote
+ topics to be ignored.
+
+2000-12-04 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/m_create.c: I'm tired of the exit_client warning :)
+ (ms_create): discovered that exit_client() was being called with
+ too few arguments
+
+ * ircd/s_misc.c (exit_client): remove all dependance on
+ FNAME_USERLOG, since that's now gone; log only to LS_USER
+
+ * ircd/s_debug.c: USE_SYSLOG no longer means anything
+
+ * ircd/m_oper.c (m_oper): no longer log to LS_OPERLOG--we already
+ log to LS_OPER
+
+ * ircd/m_kill.c: no longer conditionalize on SYSLOG_KILL
+
+ * ircd/ircd_log.c: remove LS_OPERLOG, LS_USERLOG
+
+ * include/ircd_log.h: remove LS_OPERLOG, LS_USERLOG--they serve
+ the same purpose as LS_USER and LS_OPER
+
+ * config/config-sh.in: remove no longer relevant log config
+ variables
+
+ * ircd/uping.c (uping_init): use log_write instead of ircd_log
+
+ * ircd/s_misc.c (exit_client): use log_write instead of ircd_log
+
+ * ircd/s_conf.c: use log_write instead of ircd_log
+
+ * ircd/s_bsd.c (report_error): use log_write instead of ircd_log
+
+ * ircd/s_auth.c (timeout_auth_queries): use log_write instead of
+ ircd_log
+
+ * ircd/res.c (send_res_msg): use log_write instead of ircd_log
+
+ * ircd/m_who.c: use log_write instead of write_log; no longer
+ conditionalize on WPATH; mark dead ircd_log calls
+
+ * ircd/m_uping.c: mark dead ircd_log call
+
+ * ircd/m_server.c (mr_server): use log_write instead of ircd_log
+
+ * ircd/m_restart.c: use log_write instead of ircd_log; mark dead
+ ircd_log calls
+
+ * ircd/m_rehash.c (mo_rehash): use log_write instead of ircd_log
+
+ * ircd/m_oper.c: use log_write instead of ircd_log; no longer
+ conditionalize on FNAME_OPERLOG; mark dead ircd_log calls
+
+ * ircd/m_kill.c: mark dead ircd_log calls
+
+ * ircd/m_connect.c: use log_write instead of ircd_log; mark dead
+ ircd_log
+
+ * ircd/m_clearmode.c: use log_write instead of write_log; no
+ longer conditionalize on OPATH
+
+ * ircd/jupe.c: use log_write instead of write_log; no longer
+ conditionalize on JPATH
+
+ * ircd/ircd_log.c: add USER subsystem; remove ircd_log() compat
+ function; fix a couple of bugs
+
+ * ircd/ircd_alloc.c: fixed a comment
+
+ * ircd/ircd.c: use log_write instead of ircd_log; fold server
+ notice generation in a couple of cases
+
+ * ircd/gline.c: use log_write instead of write_log; no longer
+ conditionalize on GPATH
+
+ * ircd/channel.c (modebuf_flush_int): use log_write instead of
+ write_log; no longer conditionalize on OPATH
+
+ * ircd/Makefile.in: run make depend, since dependencies have
+ changed
+
+ * doc/example.conf: add system USER to documentation
+
+ * include/ircd_log.h: add system USER; remove old ircd_log()
+ declarations
+
+2000-12-04 Isomer <isomer@coders.net>
+ * ircd/m_names.c: Add NAMES_EON to do_names to say add a
+ 'end_of_names' reply when done.
+ * ircd/m_join.c: use NAMES_EON as mentioned above
+
+2000-12-01 net <simms@LUCIDA.QC.CA>
+
+ * ircd/motd.c: add a freelist for struct Motds
+
+2000-11-30 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_stats.c (report_feature_list): report features--only
+ local opers can see logging configuration, since it doesn't really
+ mean anything to users
+
+ * ircd/s_err.c: add reply messages for new feature subsystem
+
+ * ircd/s_conf.c: add F lines to .conf
+
+ * ircd/parse.c: add the message descriptions for /set, /reset, and
+ /get
+
+ * ircd/m_stats.c: add /stats f
+
+ * ircd/m_set.c (mo_set): implement /set
+
+ * ircd/m_reset.c (mo_reset): implement /reset
+
+ * ircd/m_rehash.c: /rehash m now flushes MOTD cache, and /rehash l
+ reopens log files (for log file rotation)
+
+ * ircd/m_get.c (mo_get): implement /get
+
+ * ircd/ircd_log.c: use int instead of void return value; add
+ log_report_features() and log_canon(); fix a function that
+ disappears if DEBUGMODE not #define'd
+
+ * ircd/ircd_features.c: functions to manipulate feature settings
+ either from the config file or with the new /set, /reset, and /get
+ commands
+
+ * ircd/Makefile.in: add new .c files, run make depend
+
+ * include/s_stats.h: declare report_feature_list() (/stats f
+ handler)
+
+ * include/numeric.h: add RPL_STATSFLINE, RPL_FEATURE,
+ ERR_NOFEATURE, ERR_BADLOGTYPE, ERR_BADLOGSYS, and ERR_BADLOGVALUE
+ reply numerics
+
+ * include/msg.h: add defines for SET, RESET, and GET
+
+ * include/ircd_log.h: add a function to canonicalize subsystem
+ names; change some void return values to int
+
+ * include/ircd_features.h: new features subsystem handles all the
+ manipulation of special features, like log files
+
+ * include/handlers.h: declare new mo_{s,res,g}et message handlers
+ for fiddling with features run-time
+
+ * include/client.h (SNO_DEFAULT): don't set SNO_DEBUG by default;
+ seemed like a good idea at the time...
+
+ * doc/example.conf: document new F lines
+
+2000-11-29 Kevin L. Mitchell <klmitch@mit.edu>
+
+ * ircd/s_debug.c: rewrite debug_init() and vdebug() in terms of
+ new logging functions, which have special support for the debug
+ log; added loop detection to vdebug(), so that I can
+ sendto_opmask_butone() from log_vwrite() without incurring another
+ call to vdebug()
+
+ * ircd/s_conf.c (rehash): call log_reopen() from rehash routine;
+ this allows log file rotations
+
+ * ircd/m_kill.c: call log_write_kill() instead of ircd_log_kill()
+
+ * ircd/ircd_log.c: much more work fleshing out the interface;
+ removed old interface; included backwards-compat ircd_log()
+ function that logs to subsystem LS_OLDLOG
+
+ * ircd/ircd.c: switch to new log_init()/log_close()/log_reopen()
+ functions
+
+ * include/ircd_log.h: include stdarg.h for va_list; move ordering
+ warning to top of file; fill out LogSys enum; declare new
+ log_debug_init(), log_vwrite(), log_write_kill(), and
+ log_[sg]et_*() functions; add flags argument to log_write();
+ defined flags to inhibit various logging actions
+
+ * include/client.h: added support for new SNO_DEBUG, enabled only
+ if DEBUGMODE is defined
+
2000-11-28 Kevin L. Mitchell <klmitch@mit.edu>
+ * ircd/ircd_log.c: make sure the various LOG_* constants are
+ defined (probably not needed, since #include <syslog.h> isn't
+ conditional); various static data needed for the new logging
+ functions; definitions of new logging functions
+
+ * include/ircd_log.h: new LogSys enum, declarations for part of
+ new logging API
+
* ircd/motd.c: we were setting type to MOTD_CLASS unconditionally,
which was of course stupid; switched to using switch/case in
initialization in motd_create(); zero the MotdList.other pointer