--- Changes since v2.1a --- 01/02/00 - Fixed a serious bug with setting flags, not allowing wizards to set flags they should be able to (Oops). 01/02/00 - Added a 'public' channel to the default com database. 01/02/00 - Removed a stale '.PANIC' file from the run directory. --- Changes since v2.1b --- 01/03/00 - Fixed a bug in shutdownsock() that caused guests to be destroyed when the game is rebooted (and therefore booted). 01/03/00 - Major changes to the attribute system. There are no longer global pointers to each attribute (A_<attribute>). new functions atr_clr_a(), atr_add_a(), atr_get_a(). Old respective functions get passed a char * instead of ATTR *. New functions replace old functions usage-wise. Changes to some other functions' paramaters due to this change. 01/03/00 - Fixed semi-corrupt 'initial.mdb'. 01/03/00 - Slight version information changes. 'version' command now reports code release date. 01/03/00 - Fixed a bug that checked the wrong flag when printing the '*** Saving ***' message to players. Now the '@dump' command correctly checks against the QUIET flag. --- 01/05/00 - Added global variables 'db_list' and 'db_top'. 'db_list' is an array of type 'OBJ *' and makes matching an object by dbref much much faster. 01/05/00 - Modified 'destroy_obj()', and 'new_object()' to update 'db_list' and 'db_top'. 01/05/00 - Rewrote 'find_object()' to be as much as 'n' times faster where 'n' is the number of objects in the database. 01/05/00 - New function 'init_dblist()' and small modifications to 'db_read_object()' for 'db_list' and 'db_top'. --- 01/06/00 - Fixed a bug in 'find_object()' in which if passed a 'dbref' less than 0 or greater than or equal to 'db_top' it would crash. 01/06/00 - Rewrote 'match_dbref()' to be much more efficient. --- 01/07/00 - Changed the 'string_match()' call in 'match_contents()' to 'string_compare()' since sometimes you definitely want to match the exact string. 01/07/00 - Merged softcode variable types IVAR and CVAR into universal SCVAR for easier manipulation and code reduction. --- Chagnes since v2.2a --- 01/08/00 - Cleaned up some code and fixed a couple of connect, disconnect, reconnect messages in 'io/bsd.c'. 01/08/00 - Added the 'dbinfo' channel to the default com db. 01/08/00 - Made it so guest IDs start at 1 instead of 0. 01/08/00 - New command '+ansi' for turning ANSI color on/off. 01/08/00 - Added the ability to cancel timed shutdowns and reboots. --- 01/10/00 - Modified the stack code so there are 2 separate lists instead of 1. This increases server speed significantly when 'STACK_USAGE' is 1. 01/10/00 - Fixed a serious bug in 'stack_alloc()' that doesn't simulate calloc() correctly if 'STACK_USAGE' is 1. 01/10/00 - Added a 'stack_unalloc()' call to the top of 'reference_db()'. This makes an enormous speed increase during server bootup. 01/10/00 - Removed message about ANSI from guest login in bsd.c. 01/10/00 - Changed message in connect.txt to inform player of the '+ansi' command. --- Changes since v2.2b --- 01/11/00 - Fixed a fatal bug in guest characters. Guest player powers weren't being initialized correctly causing database saves to get caught in an infinite loop. 01/11/00 - Rewrote some of 'make_guest()' in bsd.c for efficiency. --- 01/12/00 - Added new source code file 'io/state.c'. 01/12/00 - Rewrote the way descriptor states are stored/handled to allow for easier addition and cleaner code. 01/12/00 - Added automatic player creation support. 01/12/00 - Added 'auto_create' global config setting to allow/disallow automatic player creation. --- Changes since v2.3a --- 01/13/00 - Removed the '+idle' and '+away' commands. 01/13/00 - Fixed a fatal bug in 'is_valid_email()' (Thanks for the bug report) --- 01/14/00 - Fixed problem with '@announce' command. Now announces the right thing. 01/14/00 - Eliminated the 'do_state_nothing()' function and made it so 'state->num == -1' marks the end of 'state_list' instead of 'state->func == NULL'. 01/14/00 - Fixed a fatal bug if there is a message in the maildb for a player that doesn't exist. 01/14/00 - Made it so 'db_list' is freed during shutdown. 01/14/00 - Turned echo off while entering desired password during automatic player creation. 01/14/00 - Added state for password verification during automatic player creation. --- 01/15/00 - Made it so '+motd', '+todo', and '+mlist' commands can match partial command parameters. 01/15/00 - Removed check for illegal player from '+mlist' command. 01/15/00 - Rewrote the 'do_chown()' function for efficiency. 01/15/00 - Fixed a bug that made the '@password' command not set the player's password correctly. --- 01/16/00 - Added documentation for the email system. 01/16/00 - Removed POW_COMBAT power. --- 01/17/00 - Added ambiguity checking to 'maze/match.c'. 01/17/00 - Modified 'match_contents()' to use 'string_match()' instead of 'string_compare()' allowing for partial name matches. --- 01/18/00 - Added support for '/dev/urandom'. 01/18/00 - Added #define 'USE_DEV_URANDOM' to 'hdrs/config.h'. --- 01/19/00 - Fixed fatal bug in 'free_progs()'. 01/19/00 - Added #define 'URANDOM_BURST'. --- Changes since v2.3b --- 01/19/00 - Made 'info stack' only report nondecomposing allocations if 'STACK_USAGE == 2'. 01/19/00 - Fixed a fatal bug in 'shutdownsock()' if a descriptor disconnects before the server finds their hostname. --- 01/20/00 - Made it so 'stale' guests are destroyed. 01/20/00 - Fixed a bug in the 'kill ALL' command that didn't list all the killed processes correctly. --- 01/21/00 - Fixed a bug in automatic player creation that let players create players with names matching 'config.guest_prefix'. 01/21/00 - Removed 'POW_BUILD'. 01/21/00 - Made 'shutdownsock()' call 'kill()' on the child process of a still-updating hostname lookup process instead of 'waitpid()'. 01/21/00 - Added 'PROGRAM' column to '@ps' output. 01/21/00 - Fixed bug with 'select()' timeout in 'io/bsd.c' that caused the game to use a lot of cpu cycles when a softcode program was running. Timeout with program running is now 1us. 01/21/00 - Added a 'stack_unalloc()' call to the end of 'run_softcode()'. 01/21/00 - Added 'subcommand' matching and modified rest of server to use it. 01/21/00 - Added data type 'bool'. Modifications to server for use of 'bool' data type will not be commented here. 01/21/00 - Removed 'todomotd_help()' function. 01/21/00 - Merged 'do_motd()' and 'do_todo()' into 1 function 'do_todomotd()'. 01/21/00 - Fixed '+todo/+motd add' so you can't add a blank message. 01/21/00 - Removed stray 'hdrs/chess.h', 'hdrs/fifo.h', 'hdrs/io.h', and 'hdrs/locks.h' files. 01/21/00 - Code cleanups in 'prog/ansi.c'. 01/21/00 - Removed 'lock_list' declaration from 'maze/locks.c'. 01/21/00 - Fixed a possible buffer overflow in 'ip_to_hostname()'. --- 01/22/00 - Fixed a memory leak in the 'do_name()' function. 01/22/00 - Turned the 'SET()' function into a macro. Now you pass 'char *' as arg1 instead of 'char **'. 01/22/00 - Rewrote the stack system to be a little more memory efficient. The new stack system code doesn't warrant a need for change to other code that uses it. 01/22/00 - Added function 'hostname_lookup_shutdown()'. 01/22/00 - Removed 'close_it' flag from 'shutdownsock()'. 01/22/00 - Code cleanups for 'shutdownsock()'. 01/22/00 - Changed 'LastSites' attribute to 'LastSite'. 01/22/00 - When a player connects, its host is recorded in their 'LastSite' attribute. 01/22/00 - A message is printed when a player connects, telling them the last host they connected from. 01/22/00 - Code cleanups for 'check_connect()'. 01/22/00 - Fixed potential bug in 'do_state_waitpass()' function. If password fails then 'd->player' is set to 'NULL'. 01/22/00 - New function 'add_bad_login()' for failed login attempts. 01/22/00 - When you login, the game will tell you if there were failed login attempts to your character. 01/22/00 - New format for saving powers in the db. Allows for removal/addition of game powers. 01/22/00 - Upgraded database format to 'MAZEv2-1'. 01/22/00 - Added support for loading previous database versions. 01/22/00 - Fixed bugs in 'do_class()' and 'fun_haspow()' that all used 'name_to_pow()' incorrectly. 01/22/00 - Fixed bug in 'do_class()' that used 'set_pow()' incorrectly. --- 01/23/00 - Added glob (wildcard matching) function 'wildcard_match()'. 01/23/00 - Game will now display the contents of the file 'msgs/welcome.txt' to a player when they connect. 01/23/00 - Made it so the 'show_file()' function parses color codes in the file it displays. 01/23/00 - Made it so 'chk_softcode_match()' uses 'wildcard_match()' instead of 'string_compare()' and passes its arguments to 'run_it()'. --- 01/24/00 - New function 'split_arg()' used for softcode purposes. 01/24/00 - Rewrote 'sc_do_print()' and 'sc_do_let()' to use new 'split_arg()' function. 01/24/00 - New function 'last_char()'. Returns a pointer to the last character in a string. 01/24/00 - Rewrote 'do_code()' function to use subcommand processing. 01/24/00 - Modified the 'run' command so you can specify arguments to pass to the program. New syntax: run <object>/<program>[=[<args,...>[:<starting line>]]] --- Changes since v2.4a --- 01/24/00 - Modified the 'queue_string()' function to accept a third 'newline' argument. If 'newline' is 1 then the string '\r\n' is appended to the message. '\r\n' might not be good. We'll see. 01/24/00 - Fixed bug that let you '@paste' to a channel you have turned off. --- 01/25/00 - Fixed gcc warning for 'do_sig_segv()'. 01/25/00 - Fixed fatal bug in 'update_powers()' which was calling 'get_class()' before 'db_list' was initialized (Thanks to vince for the help). 01/25/00 - Upgraded 'initial.mdb' to MAZEv2-1. 01/25/00 - Created 'initial.mdb.tutorial' database. 01/25/00 - Small cosmetic changes to 'info stack'. 01/25/00 - Fixed a memory leak in automatic player creation. --- Changes since v2.4b --- 01/25/00 - Added configuration 'max_users'. 01/25/00 - Added support for limiting the number of simultaneous connections. --- 01/26/00 - Modified the stack system to be more efficient. 'info stack' looks MUCH different now. 01/26/00 - Fixed a memory leak. When a player disconnects their output queue is now completely freed. 01/26/00 - Rewrote 'destroy_obj()' to be much cleaner and fixed a memory leak in it. 01/26/00 - Eliminated all gcc warnings. 01/26/00 - Removed the logging of 'It's midnight'. --- 01/27/00 - The 'queue_string()' function now handles flushing output. This should be a lot easier on memory. 01/27/00 - Some very serious memory speedups for large databases. Unfortunately, the stack interface had to change slightly to allow this. New macros 'stack_realloc_tmp()', 'stack_free_tmp()', and 'stack_string_realloc_tmp()'. These *MUST* be used if trying to realloc or free a temporary pointer. 01/27/00 - Updated 'doc/stack.txt'. 01/27/00 - 'info_db' no longer uses 'comma()' when showing the first free dbref number. 01/27/00 - Prepended a '#' to dbref in the 'Loading object ' message and to the 'First Free' message in 'info_db()'. 01/27/00 - Added global config 'currency_plural' and changed the code to use it (thanks to Andy for the suggestion). 01/27/00 - Removed the 'chk_mode' parameter from 'raw_notify()'. 01/27/00 - Added a check to 'process_output()'. If the descriptor is not in 'MODE_NORMAL' (i.e. in @paste mode), its output is not processed and remains in the queue. 01/27/00 - Rewrote the paste system to be descriptor-specific instead of player-specific. 01/27/00 - Added ability to paste blank lines. 01/27/00 - The 'examine' command now shows who created the object being examined. --- 01/28/00 - Added support for hostname lockout. 01/28/00 - Made it so 'subcommand_match()' accepts 'player' parameter and correctly checks the 'admin_only' command flag. 01/28/00 - Fixed a fatal bug in 'process_commands()' dealing with any 'descriptor_list' modifying commands (i.e. @boot) (Bug report by Jimmy and Quickfinger). 01/28/00 - Fixed bug in 'do_dboot()' that incorrectly checked the victim's state (Thanks again Jimmy). --- 01/29/00 - Fixed a bug in the '+mail' command that didn't do anything at all if you tried sending mail to a player that doesn't exist. 01/29/00 - Added 'plugin' support. Read 'doc/plugins.txt' for information on how to install them. 01/29/00 - Modified the 'getstring_noalloc()' function to remove the last character from the string. --- 01/31/00 - Fixed a bug in the 'initial.mdb.tutorial'. Root didn't start off in #0. --- 02/01/00 - Rewrote the 'match_exits()' function to handle more flexible matching on exit names. Now, if an exit name (including its alias) is 'Blah <B>;go' the game will consider it a match if the matching string is 'Blah', 'B', or 'go'. 02/01/00 - The '@inactive' command will only show players that are class CLASS_CITIZEN now. --- 02/02/00 - Fixed a bug in the subcommand system that showed non-wizards 'admin_only' commands. 02/02/00 - Fixed a bug in the subcommand system that matched 'admin_only' commands for non-wizards. --- 02/03/00 - Fixed a bug in the subcommand system that didn't match ambiguous commands correctly. If two of the commands were 'blah' and 'blahfoo' and you typed 'blah' it was being considered ambiguous. If that's ambiguous, how do you ever use the 'blah' command?