AFKMud Intermud-3 Driver Code 2.40a: Changelog ---------------------------------------------- This was probably a long time overdue, but hey. It's here now and should start getting updated regularly. It is based off of diff files made to prepare the non-AFKMud package for distribution. Changes in 2.40a: * Minor fixes to address switched characters. * Crash fix in free_i3chardata. * Crash fix in I3_adjust_perms. * Socket closing bug in i3_connection_close. Changes in 2.40: * Help information for commands has been internalized. * Command table is now editable online. - Internally replaced with a Smaug-style command lookup. - Commands can have multiple aliases if desired. * Color table is now a config file which can be edited independently of code. - i3ansi_conversion array has been removed. * Router list now loaded from separate file. * I3_DIR define added to make changing file locations easier. * All str_cmp calls replaced with strcasecmp. * All i3one_argument argument calls removed. Defers to codebase one_argument now. * Removed SO_KEEPALIVE from socket connection options. * Cleaned up waste loops in process_who_req. * Document files reorganized. * Color alignment functions removed. Centering now handled by i3centerline. * Condolidated permissions checking to reduce redundancy. * Local channel logging now strips colors for easier readability later. * i3fread_string removed. i3fread_line capable of handling tildes in strings now. * Adjusted buffers in the interfaces to mud-level output for users. * 1stMUD support removed. They have their own customized version installed now. * Channel flags value defined as long int now. * i3stats command now reports descriptor for router connection. * Added permission override to cancel automatic setting by level. * Removed the tabs from the I3KEY macro - caused problems on Debian machines. * Cleaned up organization of i3cfg.h file. * this_mud name changed to this_i3mud for compatibility purposes. * Adjustments made for better CirleMUD compatibility. * i3_strlen_color function removed. * i3_strnlen_color function removed. * Cleaned up several usage messages. * Oops: Missing i3afk command has been added. * BUG: Missing break in i3act_string caused fall-through in 'S' gender case. * BUG: Tell history was hooking str_dup instead of I3STRALLOC. Memory error. * BUG: Tell history was also being free'd with I3DISPOSE. Double error :P * BUG: Memory leak plugged with this_i3mud retaining data after shutdown. Changes in 2.33: * Addition of tell history for i3tell. * Reworked i3act_string using Xorith's improvements. Changes in 2.32: * Addition of support for filtered channels. Changes in 2.31a: * Adjustments for Circle 3.1 compatibility. ( 3.0x compatibility may be lost ) * Corrected some missed i3_to_char statements. * Corrected some missed i3str_prefix statements. * Added chanlist filtering. * Corrected 2 missed direct calls to victim. Changes in 2.31: * All sprintf, strcpy, and strcat replaced with protected versions. * Removed a number of unnecessary temp buffers. * Trimmed the sizes of most other temp buffers to more reasonable levels. * Added i3stats command. * Added variable to count bytes received/sent for i3stats command. * Added warning messages to i3strncpy and i3strncat to display strings which overflow them. * i3tell now specifies sending and receving them as i3tells. * i3who no longer sends black "x" for space filler. Just uses a blank space. * Removed routerIP field from i3_mud struct. No longer needed. * Removed routerport field from i3_mud struct. No longer needed. * Removed the escape_smaug_color function that never seemed to work. * Removed a debug log message accidentally left in. * BUG: I3_send_error was not properly escaping quotes in messages. * BUG: I3_send_locate_req was not properly escaping quotes in user requests. * BUG: Current router connection name was wrong after a hotboot. Changes in 2.3: * Muds can now specify multiple routers to choose from to connect to. - i3router command added for router configuration handling. * Channel subscriptions are no longer sent until starup-reply is confirmed. * Muds can now turn channels on or off at the mud level. * Adjusted lengths in i3mudlist command for better info fit. * Added ability to "i3listen all" and "i3listen none" for channels. * Newly created channel defaults to I3PERM_ADMIN now. * Support added for new chan-adminlist-reply and router-shutdown packets. * Support added for new chan-adminlist packet. * Initial connection to a router times out after 50 loops rather than wait for a socket error. * "Input received" message removed from packet debugging. * Connection shutdown no longer sends channel unsubscriptions. * Channels which have been purged from the router will no longer stay in the local chanlist. * Mudlist purging will not create entry for deleted mud first. * Support for 1stMUD 4.0c added. Changes in 2.25a: * Muds which have been purged from the router will no longer stay in the local mudlist. * i3mudlist command colorized. Changes in 2.25: * Global debugstring variable has been removed. * Output buffer using i3strncpy now to reduce overflow problems. * I3_write_packet using send() instead of write() so it can transmit NULLs. * I3_write_packet now sends NULL terminated packets to conform to router packets. * I3_read_packet now safeguards and places a NULL where any \r's are detected, and at the size boundary of a packet. Changes in 2.2: * I3_parse_packet disassembles the packet header before processing. * Processing functions now take the packet header as part of their arguments. * I3_BLOCKED renamed to I3_BAN. Call consolidated to I3_parse_packet. * Ucache related packets now only processed if the mud enables ucache. * String allocation now done with strdup and free instead of using hash tables. * All functions beginning with I3_process_ have been changed from int to void. * Created IPS and OPS definitions for inbound and outbound packet buffers. * ACKMUD! markfn stuff removed. * Defined LGST and SMST for string sizes to avoid conflict with codebase defines. * Added i3strncpy and i3strncat to handle strncpy/strncat calls. * Renamed FCLOSE as I3FCLOSE to avoid codebase conflicts. * Removed I3RECREATE macro. Never used. * Channel, ban, and ucache lists no longer externalized. Not used outside I3. * BUG: Incoming packet buffer raised to 128K. Boundary overflow. (!) * BUG: I3_send_locate was not properly terminating the packet it sent. * BUG: I3_process_locate_req was not properly terminating the packet it sent. * BUG: Memory leaks in destroy_I3_mud fixed. * BUG: Memory leak in process_chanlist_reply fixed. Version 2.1c and 2.1b skipped. Failed to operate successfully. Changes in 2.1a: * Shadowing warnings caused by gcc 3.3.1 fixed. * All macros now have I3 added to their names to avoid potential codebase conflicts. * Permission flags and player flags have I3 appended to their names to avoid conflicts. * Color display can now be turned on/off by users. * Security hole in i3permset fixed. * URL tags were being sent in the wrong part of the startup packet. Corrected. * Old URL tags sent in the wrong spot now stored in mud->web_wrong pointer. * Startup packet optimized to only send information it needs to send. * Several unnecessary fields removed from the Circlemud section. * i3mudinfo command will now display some of the optional keys found in packet sampling. * i3addchan menu options corrected. * i3block command can now be used offline just like i3ignore. * which_keyword function removed. No longer used. * Alterations to allow the code to compile using g++ * BUG: An IS_IMMORTAL check was missed in rankbuffer. Replaced with an I3PERM check. * BUG: #ifdefs for Circlemud in i3init_char were removed to fix a crash. * BUG: #ifdefs for Circlemud in free_i3chardata removed to fix memory leak. * BUG: i3tell and i3emoteto could not send messages with quotes in them. Malformed packets. * BUG: i3_command_hook was not checking for connection before trying to use channels. Changes prior to 2.1a were numerous, but for the most part involved switching to a more codebase independent permissions system that doesn't rely on game levels and reworking the command structure in the form of a Merc style table.