TinyMAZE/
TinyMAZE/config/
TinyMAZE/doc/
TinyMAZE/run/msgs/
TinyMAZE/src/
TinyMAZE/src/db/
TinyMAZE/src/ident/
TinyMAZE/src/io/
TinyMAZE/src/prog/
TinyMAZE/src/softcode/
TinyMAZE/src/util/
--- 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?