IMC2 AntiFreeze Client: Changes since 3.10

This is not necessarily a detailed list, just a general rundown based on a diff file
that was used to document the changes.

This code branch has been terminated as of CL-4a.

Changes in CL-4a:

* Added support for copyover to the code.
* Dependency on current_time removed. imc_now should have been used.

Changes in CL-4:

* imc_siteinfo struct has been merged with the ROUTERINFO struct and renamed SITEINFO.
* imcone_argument function added to prevent incompatibility with mud implementations of one_argument.
* URLs sent by other muds are now tracked in the remote info table for local use.
* Mud can now change all but critical configuration data while connected.
* Mud can refresh their imclist without reconnecting now.
* Now able to get information on when person@mud last used public channels.

Changes in CL-3a:

* MD5 encryption code fixed. Was having issues with ASCII chars 9-13.

Changes in CL-3:

* MD5 encryption code has been replaced with a more portable version.
* Channel who will now always respond to a targetted message.

Changes in CL-2a:

* Minor descritpor closing problem fixed.
* chanwho will not respond if nobody on the mud is tuned in to the channel.

Changes in CL-2:

* Command functions redefined for ease of compatibility adjustments.
* Added Dariens suggested expansions for imcfinger command.
* Enabled use of the IMC_PRIVACY flag.
* Added Locke's suggestion for channel notifications.
* Buffer adjustments in imcstats command to prevent overflow.
* Reworked imclist to prevent truncations.
* Command aliases free'd in game shutdown for Valgrind friendliness.
* Changed all references to "hub" to "router"
* Added Garil's plugin module support.
* MD5 support may now be turned completely of for muds who can't use it.

Changes in CL-1:

* Name change! WOOHOO! :)
* Code certified as LGPL licenseable. Yes, we are certain of this.
* Commands can now have multiple aliases if desired without cluttering the list.
* Command file loads prior to config file.
* imc_strip_colors will also strip mud tags now.
* String centering now handled in a much cleaner way thanks to Justice.
* Previously used color alignment functions removed.
* Mud wizinvis macro tie has been removed. Complications for Smaug compiles.
* BUG: Memory leak - dlname field not free'd in imc_freechan.

Changes in 4.40:

* MD5 Authentication has been added which works in tandem with the 3.31 Hubs.
  - Standard authentication will be used by default until MD5 is activated by a Hub.
  - Remote administration now uses MD5 when available.
* Help information for commands has been internalized.
* Command table is now editable online.
  - Internally replaced with a Smaug-style command lookup.
* Color table is now a config file which can be edited independently of code.
  - imcansi_conversion array has been removed.
* imctell can now parse socials. [Darien@Sandstorm]
* imc_send_social modified to support tell socials.
* free_imcdata takes a bool argument for muds with memory cleanup at shutdown.
* Document files reorganized.
* Moved imcminlevel, imcadminlevel, imcimmlevel, and imcimplevel to imc_siteinfo struct.
* Moved imc_name to imc_siteinfo struct.
* imc_strlen_color removed. Length checks now handled in setfill.
* imc_connect_to updated to use cleaner DNS resolution, as well as to provide MD5 support.
* imcchanwho had no usage message.
* Consolidated some of the connection routines to reduce redundancy.
* Condolidated permissions checking to reduce redundancy.
* IMC_DIR define added to make changing directory easier. [Remcon@Pabulum]
* Added the ability to log channels locally.
* Several more unneeded externs removed from imc.h

Changes in 4.30:

* IMC_IGN struct chnaged to IMC_BAN for clarity of purpose.
* Color translation system overhauled. Major cleanup.
* imclog, imcbug both append IMC to log messages for clarity.
* Trimmed excessive waste loops in process_rwho
* Added a minimal response for process_rfinger.
* imc_find_reminfo no longer requires second argument. Wasn't being used.
* ping, route, and type taken out of REMOEINFO struct.
* Time values no longer used in ping packets.
* close-notify no longer triggers return pings. Just marks as expired now.
* "reject" packet type no longer sent when unknown packet received.
* keepalive-request packet no longer sends version ID. No client or hub ever made use of it.
* Config file adjstments for Vulcan file compatibility.
* Added channel who support for seeing who is listening to a channel on another mud.
* Increased rejection of packets in ban situations.
* CHECKMUDOF and CHECKMUD macros replaced with regular boolean functions.
* imc_recv_chat and imc_recv_emote removed. do_imcchannel called directly now.
* imc_recv_chan eliminated. Function calls moved to imc_recv.
* imc_recv_hook and imc_recv_chain definitions removed. No longer necessary.
* imcfread_string removed. imcfread_line assumes its function. Allows tildes to be saved in strings.
* ice-update handler supports channel localname if sent from hub for channel.
* Error message in interpret2 made slightly more informative for debugging.
* Adjusted buffers in imc_to_char, imc_to_pager, imc_printf, and imcpager_printf.
* imcsockets command removed. No longer useful.
* Added a permission override to cancel automatic adjustments by level at login.
* Implemented the remote administration interface.
* Sealed several memory leaks.

Changes in 4.25b:

* Fixed a memory leak in the ucache list.

Changes in 4.25a:

* Memory leak in tell history addition plugged. Bleh.
* imc_showchannel checks CON_PLAYING now.

Changes in 4.25:

* Added tell history for imctell.
* Updated social processing. Uses I3 style ucache packets for gender targetting now.
* Added web URL for muds to is-alive data for webstats publication.
* ice-refresh now using multicast system to further reduce packet spam.
* Network name identified on imclist output.

Changes in 4.24b:

* Reduction in spam on is-alive responses.

Changes in 4.24a:

* Support for new "sender" tag to fix channel echo problems.

Changes in 4.24:

* Clients no longer able to remove own network info. Security risk.
* Netname retreival now handled during connection handshake.
* Bugfix in imc_act_string for him/her/its

Changes in 4.23c:

* Clients can now tell the hubs to remove their connection data via the network.

Changes in 4.23b:

* Crash bug fixed in imclisten.

Changes in 4.23a:

* Adjustments for Circle 3.1 compatibility. ( 3.0x compatibility may be lost )
* Corrected some missed imc_to_char statements.

Changes in 4.23:

* Added options for "imclisten all" and "imclisten none" for channels.
* Added Xorith's capitalization fix for socials. ( Replaces old imc_act_string )
* strlcpy and strlcat have returned, with renamed versions to avoid system dependence.
* imcto_buffer no longer requires the length argument.
* Fixed the imclist hub finder thing to avoid imcstrlcpy cutting off needed bytes.
* Some missed sprintf calls made to use snprintf.
* Some missed strcpy calls made to use imcstrlcpy.
* Non-Smaug socials were still accessing get_char_world. Changed to imc_find_user.
* BUG: Memory leaks in imc_delete_info fixed.

Changes in 4.22b:

* Arbitrary version number change. Reflects the true nature of the upgrades made since the Continuum
  developer won't correct his version number.
* imcchanlist will not show people channels they can't access.
* imcsetup 'setlocal' option now enforces the need for a local channel name.
* imclisten will report non-existant channel for PC's below the permission level.
* Support for background and blink colors added.
* Channel permission checks added in imcsetup command.
* Feedback message improved for renaming channels.
* Fixed the syntax messages for the 3 format types for channels.
* Channels not listened to by players will list in red now.
* Channel count displayed at the end of imcchanlist.
* imcquery command removed and replaced with imcinfo. Redundant code.
* imclist command with an argument will show the mud's information instead.
* Feedback messages from imcignore and imcban made more helpful.
* imcpermset command verifies channel permissions once new setting is made.
* A number of unfixed strcpy's and strcat's caught and corrected.

Changes in 3.22b:

* Autosetup reworked to avoid stepping on 2.x and 1.x client hub authentication.

Changes in 3.22a:

* Replaced strlcpy and strlcat with imcstrncpy and imcstrncat.
* Removed hubinpath function, rewrote imclist function.
* Logic error in imcreply fixed.
* Local echo packet key fix applied.
* Packet debug now logs sent packets as well.
* Helpfiles updated.

Changes in 3.22:

* Protocol version taken back to 2.
* Autoconn method reworked. Client will no longer be refused by older hubs.
* CHECKIMC macro and all calls to it removed. No longer necessary.
* Event system and all related variables/structs removed.
  - Initial keepalive and channel refresh sent upon completed handshake. Event calls removed.
  - Validator functions removed. They were the only things left calling events. Would have been wasteful.
* Network added to imc_hubinfo struct for support of netnames.
* Alive and Hide removed from imc_remoteinfo. No longer used.
* Network added to imc_remoteinfo struct for support of netnames.
* imclist output adjusted to display netnames and hubs.
* event_freecount variable removed. Was part of event system.
* Added strlcpy and strlcat for better buffer overflow handling.
* Changed all strncpy and strncat calls to strlcpy and strlcat.
* vinfo entry for version 3 packets removed.
* Channel policy enforcement at the client level has been removed. All enforcement has happened at the hub level anyway.
  - imc_audible function and all calls removed.
* Exception to tell invis/permission made for ICE username so that hub errors will be delivered properly.
* Several more descriptor loops replaced with imc_find_user calls.
* Memory leak: p->path was not being free'd by imc_delete_reminfo.
* Memory leak: this_imcmud->inbuf and this_imcmud->outbuf not being free'd by imc_delete_info.
* Packet debugging added, toggleable by user, defaults to Implementor permission.
* "add" argument put back in imcsetup to support old isetup command users.
* Typo in imcbeep command corrected.
* Local echo of messages to channels removed. Bug was fixed on the 3.22 hub code.

Changes in 3.21:

* Client code will compile cleanly using g++ for those muds that require it.
* Command names from 2.00g are now recognized by the new command table ( May not do what you expect though ).
* All sprintf calls changed to snprintf to prevent buffer overflows.
* All variable length strcpy calls changed to strncpy to prevent buffer overflows.
* All variable length strcat calls changed to strncat to peevent buffer overflows.
* str_cmp calls replaces with strcasecmp.
* More unused variables and struct fields removed.

Changes in 3.20:


* Client can now connect to a V3.20 hub without the need for an application to be filled out.
* Protocol version has been raised to 3 for support of unsupervised connections.
* Removed the FreeBSD file locking defines. No longer used.
* Removed the imc_log_on variable. No longer used.
* Incorporated the permissions and flag settings proposed by Rogel.
  - Independent implementation - No code was used from the 4.00 release.
  - imc_char_login added to support legacy conversion of players to the permission settings.
  - IMC_DEAF_FLAGS, IMC_ALLOW_FLAGS, and IMC_DENY_FLAGS removed. Replaced with IMCFLAG settings.
  - Legacy conversion of channels to the new system.
  - Added imc_immlevel and imc_implevel settings to imc.config file.
  - imcperms and imcpermset commands added to support editing permissions.
* Big ugly ifchecks in imc_command_hook streamlined into a Merc style command table.
* Several macros once defined in imccfg.h have been redone and moved to imc.h
* IMCMAX_LEVEL define removed.
* CH_IMCLEVEL macro only needed for legacy conversion. Has no other purpose now.
* Several macros in imccfg.h have been removed for compatibility reasons.
* Consolidated the color parser into one table and removed unnecessary defines.
* imc_color function removed. No longer needed.
* imccolor command now toggles the player's IMC_COLOR flag.
* Channel policies reduced to 'open' and 'private' only.
* Added imcconnect_attempts variable to count the number of reconnects.
* Mud will no longer endlessly attempt to reconnect. Now limited to 5-7 tries.
* flag_type, and imc_active_names removed. Not used.
* Added imc_find_user function to consolidate the number of descriptor loops.
* tagtoansi now accepts a CHAR_DATA for the IMC_COLOR flag.
* Wizinvis data has been removed from the imc_char_data struct.
* RTELL_FORMAT and RBEEP_FORMAT have been removed.
* imc_visible function has been removed. No longer needed.
* Fully enabled the use of the imcignore command. It will now check where appropriate.
* Defines for clans and various other things removed for greater compatibility.
* ev_spam1 and ev_spam2 removed. No longer used.
* imclist command only displays one type of listing now. Others were useless.
* imclist command only shows mud names and client versions now.
* Code hook in save.c changed to case 'I' section and modified. Compatible with updated I3 client.
* Players logging in will have undefined channels removed from their settings now.
* Configurable logging has been removed. This flag was not used.
* IMC_INVIS and IMC_HIDDEN defines removed.
* CAN() macro removed. No longer used.
* timer_duration, last_connected, and connect_attempts removed from imc_hubinfo struct.
* spamcounter1, spamcounter2, spamtime1, and spamtime2 removed from imc_hubinfo struct.
* active removed from imc_channel struct.
* stamp removed from imc_packet struct.
* maxguests removed from imc_siteinfo_struct.
* Memory allocation macros updated to most recent versions on Samson's site.
* Channel policy defines changed to enum list.
* get_char_world define removed from Circle section. Replaced by imc_find_user.
* Long standing bug in the markfn handlers for ACK fixed.