ChangeLog, TinyMUSH 2.2

===========================================================================

Release:  6/4/95

- Officially released TinyMUSH 2.2.1

- not() now uses atoi() rather than xlate(), for behavior consistent with
  the other boolean functions. Note that this means it no longer regards
  dbrefs as "true". (functions.c)

- Fixed and updated the helptext for 'help me'.
- Updated the helptext on @aconnect/@adisconnect for global conns.

- Put in the mushhacks patch for fixing the site reg crash problem on the
  Alpha. This is an unverified patch. (conf.c, externs.h, mudconf.h)

===========================================================================

Snapshot:  5/1/95

- Updated the version number to 2.2.0 patchlevel 2. (patchlevel.h)

- shuffle() and squish() now properly return a null string when called
  with no args (rather than a number-of-args error). (functions.c)

- sortby()'s generic u_comp() function checks to make sure function
  limits have not been exceeded (preventing unnecessary extremely
  expensive calls to exec(), and long freezes). (functions.c)

- Fixed braino of && to || in dbnum(). From Talek. (functions.c)

- min() and max() no longer chop off fractional parts of numbers.
  Talek's patch for this modified to retain permissibility of passing
  the function only one arg. (functions.c)

- add(), mul(), and(), or(), xor(), min(), max() no longer keep the got_one
  temporary variable around. From Talek. (functions.c)

- Modified the Startmush script to give more information as the pre-game
  file-shuffling is done. Added Talek's patch to automatically start a
  new db with -s if there are no existing old db files, and to do a bit
  of magic to grab the PID and tail -f the log until startup processing
  is complete.

- Updated "help credits".

===========================================================================

Snapshot:  4/25/95

- Updated the version number to 2.2.0 patchlevel 1. (patchlevel.h)
- Noted public release date of TinyMUSH 2.2.0 in Copyright. (copyright.h)

- Implemented local master rooms, the ZONE flag, and the local_master_rooms
  config parameter. (command.c, conf.c, flags.c, flags.h, mudconf.h, mushdb.h)

- Implemented @dolist/notify. (command,c walkdb.c, externs.h)

- Implemented building_limit conf parameter, to limit total number of
  objects in the database. (object.c, conf.c, mudconf.h)

- @list options lists output_limit, local_master_rooms and building_limit
  status. (command.c)

- matchall() with no match returns the empty string, rather than a 0. 
  In general, list-based functions should return empty strings rather
  than garbage values, when errors are encountered. This was a programming
  oversight. (functions.c)

- Mortals can now @destroy exits they're carrying. (create.c)

- Wrote two utility functions, save_global_regs() and restore_global_regs(),
  whose purpose in life is to protect global registers from munging.
  (externs.h, eval.c)
- ulocal() now uses the utility functions. (functions.c)
- did_it() now restores the original value of the global registers after
  the @-attribute and @o-attribute have been evaluated (i.e., before 
  the action @a-attribute is done). (predicates.c)
- The state of the global registers is preserved for @filter, @prefix,
  and related attributes. (game.c)
- eval_boolexp()'s eval-lock evaluation preserves the state of the global
  registers. (boolexp.c)

- Verified various fixes that were made in 2.0.10p6:
    * get(), etc. can retrieve all public attributes except for @desc,
      regardless of the status of read_remote_desc.
    * home() returns origin of exits.
    * @list options correctly reports configuration of matching commands.
    * @trigger takes a /quiet switch.
    * Rejected 2.0.10p6 "fix" to lattr() which returns #-1 NO MATCH instead
      of an empty string.

===========================================================================

Release:  4/1/95

- Officially released TinyMUSH 2.2.0

===========================================================================

Snapshot:  3/31/95

- Equivalent to the official release of 4/1/95.
- Fixed prototype error in autoconf.h.in, for wait3(), which was causing
  wait3() on SunOS machines to return EINVAL (and thus creating zombie
  processes on forked dumps).
- @search counts the number of objects found.
- Default gamedir in Makefile.in is /tmp (was /usr/games/lib/mush).

===========================================================================

Snapshot:  3/30/95

- Fixed the off-by-one @doing error "for real", by fixing safe_copy_str
  and creating a DOING_LEN define. (config.h, interface.h, mudconf.h,
  netcommon.c, stringutil.c)
- HIGHLIGHTS has become HIGHLIGHTS-2.0

===========================================================================

Snapshot:  3/29/95

- Re-patched the "handle MYOPIC properly for wizards" fix, which was lost
  in the code integration. (flags.c)
- Fixed two problems with qsort():  First, don't bother with the sort if
  there are less than two elements. Second, plugged in Andrew Molitor's
  replacement function (which is _not_ just a drop-in for qsort(), though)
  which only compares a given two elements once, thus making transitivity
  of comparison irrelevant (and fixing the fatal error which occurred when
  sorting using non-transitive user-defined functions). (functions.c)

===========================================================================

Snapshot:  3/21/95

- Fixed @clone so that it correctly copies ABODE, KEY, LIGHT, FLOATING, etc.
- Removed extraneous error messages when @desting a non-existent dbref.
- Fixed conflict between _SC_PAGE_SIZE and _SC_PAGESIZE on HP/UX.

===========================================================================

Snapshot:  3/20/95

- More configure changes. Verified compiles.
- max() and min() without FLOATING_POINTS turned on are handled correctly.
- Fixed typo of 0 to o in See_attr() macro.
- The read and write-control attribute-check macros now correctly check
  "local" attribute permissions as well as global ones, where appropriate.

===========================================================================

Snapshot:  3/17/95

- Integration of Ambar's changes. Includes more XMALLOC stuff, header
  changes, and many fixes and updates to configure stuff.
- Removed identd support.
- Fixed off-by-one counting error in @doing and @doing/header.
- Added last() function for the last word in a string.
- Added logging of command count, bytes input, and bytes output, when
  player disconnects.

===========================================================================

Snapshot:  3/4/95

- Fixed lack of terminating null on make_ulist() (used by lwho()).
- Made wizard_obeys_linklock a config option.
- Idle/Reject/Away messages now take the paging player as the enactor,
  rather than the target player. This enables personalized messages for
  each player.
- Noted in help.txt that KEY affects all locks, not just the default one.

===========================================================================

Snapshot:  2/23/95

- setdtablesize() support for the Sequent.
- Fixed a @sweep bug which was causing Audible exits and parent objects
  not to show on the @sweep.
- Fixed declaration of atof() for linux (it was getting upset because 
  atof() is a macro, rather than a real function).
- Set action of SIGFPE to SIG_IGN for linux, which spuriously generates
  the signal without an option to turn it off.
- Fixed a security hole caused by mudstate.curr_cmd getting random bits
  and pieces of memory.
- Removed obsolete memory-statistics stuff.
- Fixed timer alarm()s to generate appropriate behavior on all operating
  systems (previous correct behavior was due to an ancient bug in the code 
  which caused things to always default to an error condition that 
  generated guaranteed-good behavior).

===========================================================================

Snapshots:  2/3/95 through 2/7/95

- Note is written to log after startup processing is completed (since there
  is often a substantial delay between the db load completing and the game
  actually being "up").
- Sequent @list process stuff really works now.
- '#' no longer matches '#0'.
- @destroy cannot blast #0; it is always treated as a special object.
- @shutdown/abort causes game to coredump via abort().
- Fixed single-byte buffer-overflow problem in parse_connect.
- Lack of Quota or RQuota attributes no longer messes up quota conversion.
- db.h is now mushdb.h, in order to appease FreeBSD. Some redundant
  includes removed.
- Default queue idle and queue active chunks changed to 10/10 (from 3/0).
- Two small syntax things corrected (=- to -=).

===========================================================================

Snapshot:  2/2/95

- Fixed a memory leak in mix().
- Fixed adjust_quota bug which was munging quotas (ugh).
- Fixed a bug in typed-quota conversion for robots.
- Filled in some gaps in the changelogs, and did a bit of documentation.
- Added "audible" notation to @sweep command.
- Fixed @list options to reorganize some of the parameters and remove
  redundant or obsolete stuff. Also added some previously unlisted stuff,
  like typed quotas and function limits.
- Reorganized @list process, and removed bits of obsolete code. Added defines
  to support HP-UX getrusage() hack, and also added support for the Sequent's
  get_process_stats().
- Changed the default object cache size to 85x15 (down from 129x10).

===========================================================================

Snapshot:  1/16/95

- Fixed memory leaks in hasattr() and udefault()
- @pemit/contents/list really works now.
- @dbck can fix damage of the 'Next(<obj>) == <obj>' type.
- Fixed the robots-cost-1-extra-quota bug.
- Fixed helptext error involving checkig of $commands on parent objects.

- Reduced typed quota storage to two attributes (instead of ten).
  Conversion from previous 2.2 quotas is explained in the README, and
  involves defining BETA_QUOTAS. This change in quota storage requires
  that all databases (including 2.0 dbs) be run through a db_unload and
  db_load before converting to "current" 2.2. The database format is
  now marked version 8, and the V_TQUOTAS db-version flag has been added.

- Added new config parameters, starting_room_quota, starting_exit_quota,
  starting_thing_quota, starting_player_quota, typed_quotas (this now
  makes the checking of typed quotas an option).

- Wizards now ignore linklocks.
- MYOPIC now works properly for wizards.

- iter() and parse() evaluate their delimiter args.
- locate() can now take an 'X' parameter.

- Tweaked the Makefile so the misc directory is included again.
- Added indent.pro to the misc directory.

- Confirmed bugfixes, including:
    * elock() requires nearby or control of just one object, not two.
    * @alias makes sure that player name is valid.
    * @clone names cannot be non-NULL and the name must be valid.
    * @destroy matching bug (cleaned up the original fix, as well).
    * cache_trim config parameter removed. 
    * insert() can append to a list.
    * @function does not crash game when attr is nonexistent.
    * A /switch on an @attr command (@fail, etc.) does not crash game.
    * STICKY droptos properly check connected players.
    * Cache is reset periodically, when loading player names.
    * Overflowing connect buffer does not cause game to crash.

===========================================================================

Snapshot:  1/9/95

- New functions squish(), ulocal(), visible().
- lnum() can now take a range argument, and a separator.
- Fixed a coredump bug in udefault().

- Added in Glenn's support for identd. Made it an #ifdef, and added the
  config parameter ident_timeout. Don't use it if you don't like it,
  but since this doesn't affect the structure of any other code, it
  doesn't hurt to have the few extra lines as an #ifdef.

- Wrote a new news.txt file, which says some general things about 2.2
  and MUSH, adds a user-visible changes section, and adds a long-needed
  "how to write a news file" entry.

===========================================================================

Snapshot:  1/4/95

- Hashtable sizes were upped to 512 for players, 256 for functions, and
  512 for commands.

- Global aconnects and disconnects function properly.

- @pemit to disconnected/pagelocked players now does not return an error
  message.
- @pemit/list works in conjunction with /contents.

- Floating-point arithmetic is now an #ifdef FLOATING_POINTS in config.h

- %c/v(c) substitution for 'last command'.

- New functions elements(), grab(), objeval(), shuffle(), scramble()
- New functions default(), edefault(), udefault()

- Bug in hasattr() fixed (was checking on 'ever existed', not 'exists now').

- and() and or() stop evaluating when a conclusion is reach (this isn't
  user-visible, and is done merely for internal speed).

===========================================================================

Snapshot:  12/6/94

- All known bugs in TinyMUSH 2.0.10p5 were fixed, including:
    * Memory leaks. Also, it is no longer assumed that malloc() never
      returns NULL.
    * @doing cannot contain tabs or CRs -- converted to spaces.
    * Matching is done consistently and intelligently.
    * @forwardlists are loaded at startup.
    * cache_reset() is called for every item, during startup.

- Features were added.
    * @decompile takes wildcards.
    * @pemit/list sends a message to a list.
    * 'examine' shows more attribute flags.
    * Quotas are done by object type, as well as total.
    * There is support for multiple guest characters.

- Functions were added and modified.
    * findable(), foreach(), hasattr(), isword(), matchall(), mix(), munge(),
      ports(), sortby()
    * hasflag() can now check attribute flags.
    * %q-substitution for r()

===========================================================================