
This is the most current changes file for PennMUSH. Please look it
over; each version contains new things which might significantly affect
the function of your server.  Changes are reported in reverse
chronological order (most recent first)

[TN] is Thorvald Natvig, a PennMUSH developer
[TAP] is T. Alexander Popiel, a PennMUSH developer
[RLM] is Ralph Melton, a former PennMUSH developer
[AKM] is Alan Kree McElrath, sourcehack for GohsMUSH.
[NJG] is Nick Gammon, the Win32 porter
[PeaK] is Pavel Kankovsky, another sourcehack.
[MPC] is Matt Chatterley, YAsourcehack
[2.2] refers to code which originated with the TinyMUSH 2.2 developers

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

Version 1.7.2 patchlevel 17                   November 11, 1998

Minor changes:
      * Newly created players now have a default uselock of =me.
      * Number of available file descriptors is printed in startup log.
        Suggested by Doogie@ATS Trekmush.
      * The @chat/@cemit commands can no longer be used by gagged players.

Fixes:
      * Adding functions in funlocal.c shouldn't produce compiler warnings.
        Patch by Halatir@M*U*S*H
      * log(0) or ln(0) could crash non-IEEE compliant math libraries.
        Reported by Drakwil and Talos at SNW.
      * csrimalloc wouldn't compile with glibc. Fix by Mike Selewski.
      * Order of checks for number of file descriptors changed to
        do better on POSIX and hybrid systems like FreeBSD. Suggested by
        Doogie@ATS Trekmush.


Version 1.7.2 patchlevel 16                   October 17, 1998

Fixes:
      * table() could be used to crash the MUSH. Report by Ashen-Shugar. [TAP]
      * whisper/list didn't work. Report by Kamala@ATS TrekMUSH, via
        Mikey@M*U*S*H 
      * andflags(player,C) checked for the (useless) CHOWN_OK flag
        rather than the COLOR flag. Its now been special-cased to
        check COLOR on players. This is a kludge, but probably worth it.
      * Top of admin WHO now lists 'Loc #' not 'Room #', as that's more
        accurate. Suggested by Saberwind.
      * @log/wipe returns as @logwipe. Its absence was reported by 
        Nveid@M*U*S*H.
      * Date in hdrs/version.h now y2k compliant.


Version 1.7.2 patchlevel 15                   September 7, 1998

Fixes:
      * @emits weren't propagated through AUDIBLE exits. Report by Nammyung.
      * Building w/o ROYALTY_FLAG defined works again. Report by Scott Weber.
      * When matching $ or ^ patterns with the REGEXP attribute flag set,
        a failed match would then be improperly checked for normal 
        matching as well. Reported by Jason Rhodes.
      * Attribute flags weren't listed in @decomp. Reported by
        Jonathan Booth.
      * Make customize never got updated to match the new mushcnf/restart
        system. Now it has. Reported by Manic@FinalFrontier
      * @edit now works on attribs starting with _. Reported by Jason Rhodes.
      * Help files should work better on Win32. Reported by Miphon. [TAP]


Version 1.7.2 patchlevel 14                   August 4, 1998

Minor Changes:
      * You may @parent to an object you control via ZMO, even if you
        don't own it. Patch by Halatir@M*U*S*H
      * In lsearch() and @search, you may refer to object types
        in either the singular (ROOM) or plural (ROOMS).
      * Most chat messages now include the name of the channel. 
        Suggested by Philip Mak.

Fixes:
      * Long @chat messages crashed the server. Reported first by Rusty
        and Siris@M*U*S*H. [TN]
      * Setting the ZONE flag on a non-zonelocked player should give
        a warning, and wasn't. Reported by Halatir@M*U*S*H
      * @@ was parsing its argument. No longer. [RLM]
      * The @config listing was weird w.r.t. compression. [TN]
      * @shutdown/reboot could cause a crash if a player had an
        OUTPUTPREFIX or OUTPUTSUFFIX set.
      * Hint to linux users about undefining I_MALLOC when using
        gmalloc. Reported by Kyle Forbes.
      * @shutdown/reboot now calls local_shutdown(). Reported by Kyle Forbes.
      * When loading a db in which an object with dbref n has attributes
        owned by players with dbrefs > n, the attribute ownership was
        reset to GOD. This should no longer happen unless the owner 
        really is invalid. Most recently noted by Raevnos@M*U*S*H.
      * Exits that have contents (corrupt!) are fixed up in dbck.
      * dbck is run whenever the db is loaded.
      * objeval() help fixed. Reported by Yeechi Chen.
      * Compiling without ROYALTY_FLAG defined was broken. Reported by
        Scott Weber.
      * Sufficiently tricky use of locks could cause a crash due to
        massive function invocation or recursion. Reported by Atuarre. [TN]


Version 1.7.2 patchlevel 13                   July 7, 1998

Minor changes:
      * @mail/file now shows the folder name of the destination folder
        as well as its number. Suggested by Julianna@ATS TrekMUSH

Fixes:
      * Problems with ANSI causing Pueblo to bleed have been identified
        and fixed!
      * Bug with cwho() fixed. Report by Tripsis@M*U*S*H. [TAP]
      * 'make diffs' in Makefile updated to use prcs and to produce
        diffs for patches without Index: lines which may confuse
        non-POSIX versions of patch.  
      * Fixed typo in options.h reported by Kyle Forbes.
      * Comments in src/services.c and src/filecopy.c are now C-style,
        not C++ style. Some compilers were puking on these, even though 
        WIN32 wasn't defined and the preprocessor should've ignored this 
        stuff. Go figure.
      * Side-effect functions like pemit() didn't obey the restrictions
        on the corresponding command (like @pemit), and setting attributes
        with @set could get around restrictions on ATTRIB_SET. 
        Reported by Scott Weber. [TAP]
      * Help for t() and elock() clarified by Octavian@M*U*S*H.
      * next() could be used on an object in a room that the player
        didn't control to get the room inventory. Reported by Octavian@M*U*S*H
      * hint/aux.sh has been renamed hints/a-u-x.sh. This means it won't
        be properly recommended by Configure on A/UX systems, but Win32
        programs often puke on files name 'aux.*' because they're braindead,
        and there are lots more Win32 users than A/UX users. Bummer.
      * When A was inside B, and @listen B=*, A would hear everything
        in B's room (good) except B's own speech (bad). Report by 
        Nemesis @ Beast Wars 2
      * help exits clarified by Nammyung@M*U*S*H
      * help comp() clarified by Halatir@M*U*S*H
      * @squota without a limit now shows the victim's quota in addition
        to asking what it should be set to. This more closely matches
        the old behavior of @squota without a limit being treated as
        @quota. Reported by Matt@M*U*S*H
      * @chan/what on a nonexistent channel didn't produce any
        feedback. Reported by Octavian@M*U*S*H.
      * Typo in help zone master rooms corrected. Report by Matt@M*U*S*H.


Version 1.7.2 patchlevel 12                   June 11, 1998

Fixes:
      * GAGGED players could pose/semipose. Reported by Jorhan@M*U*S*H. [TN]
      * convsecs() help clarified.
      * @decomp obj/attr didn't work if you couldn't examine the object
        even if the attribute was visible. Reported by Jonathan Booth.
      * make customize had a problem with the way it handled the
        hlp directory. It now creates a real hlp directory, but makes
        all the standard hlp files symlinks to the distributed ones.
        (It used to make the hlp/ directory a symlink, which did bad
        things with 'txt/Makefile'. Report by Gasparin Balazs.
      * help control rewritten to clarify the real algorithm.
        Suggested by Raevnos@M*U*S*H.
      * Configure is more flexible when determining if you're
        building under cygwin. Reported by Miphon.
      * zfun() worked, but gave an error message anyway. Fix by Rob@DuneIII
      * hdrs/regexp.h renamed to hdrs/myregexp.h to avoid conflict
        with standard regexp.h header file in cygwin.
      * Roy/see_all players could, under some circumstances, evaluate
        functions with wiz privileges. Reported by Atuarre. [TAP]


Version 1.7.2 patchlevel 11                   May 25, 1998

Changes:
      * The PennMUSH copyright notice has been changed, as the
        licensing terms for TinyMUD/TinyMUSH 2.0 have changed,
        and to update the TinyMUSH 2.2 part of the copyright and
        the PennMUSH part as well. 'help copyright' now gives the
        copyright, and it's in COPYRITE and hdrs/copyrite.h.
        The licensing terms are now shorter, but practically very similar.
 
Fixes:
      * Possible infinite loop (with disk-filling output!) in @dbck
        with certain types of DB corruption fixed.  Report by RLM and
        Arathorn@CDI.  [TAP]
      * @undest intermittent crash-bug fixed. Report by Arathorn. [TAP]
      * regmatch() crash-bug fixed. Report by Tavoan@ATS. [TAP]
      * Ansi bleeding problem fixed. Report by Atuarre@ATS. [TAP]
      * The embedded version of mkindx used by Win32 builds had a bug - 
        some global variables weren't getting properly reset.
        Fix by Stephane Thibault.
      * Help for @oxmove added. Report by Bray Roned@ATS.
      * isnum() was broken if tinymath was defined. Report by Daniel Peters.
      * portmsg needed MUSH_IP_ADDR, which is now runtime configured.
        It no longer does (see comment in portmsg.c if you need this
        functionality). Report by Daniel Peters.
      * Help for dig() and lnum() clarified by Andre Leopold.


Version 1.7.2 patchlevel 10                   April 24, 1998

Fixes:
      * MANIFEST updated to reflect the deletion of src/nmalloc.c


Version 1.7.2 patchlevel 9                    April 21, 1998

Fixes:
      * Myopic flag didn't work unless Pueblo support was on. Reported by
        Rhysem@M*U*S*H.
      * help debug referred to can_debug, a now-obsolete power.
        Reported by Rodimus Prime @ TF2005.
      * @chown to a Zone Master didn't work. The @chown code has been
        rewritten to be easier to read. Report by Trispis@M*U*S*H.
      * open_anywhere was mis-listed in help powers2. Report by Trispis.
      * nmalloc.c is removed, and Win32 compiles should be a bit easier.
      * Win32 build no longer limited to 64 sockets; 256 instead. [NJG]


Version 1.7.2 patchlevel 8                    April 2, 1998

Fixes: 
      * round() could crash on very big numbers on some systems.
        Reported by Atuarre@ATS.
      * Problem with exits getting a contents list in certain 
        conditions fixed. Reported by Atuarre@ATS. [TAP]
      * Problems with puppets and Pueblo fixed. Report by Mop-Boy.
      * mkindx problem with dos text files fixed. [NJG]
      * Order of include files in htab.c was wrong, caused compilation
        problems on SCO Openserver. Reported by Flame.
      * On Win32, the MUSH could quit without flushing its buffers. [NJG]
      * When inside of an object with @listen *, you didn't see things
        when the object did a 'look'. Reported by Vedui.
      * Warnings in rwho.c eliminated. [NJG]
      * More fooling around with mymalloc.h to help the Win32 compile.
        Suggested by NJG.
      * open_everywhere power get left off help powers list at some point.
        Reported by Steven@Champions.
      * Error message for joining a non-existant channel was different
        from that for joining a channel that exists but you can't
        see. Reported by Octavian@M*U*S*H.
      * get()'ing an attribute that isn't set now returns an error 
        message only if the default permissions don't allow you to 
        get it. This allows get(player/ALIAS) to always work, returning
        an empty string if the player has no ALIAS. [TAP].
      * base_room mush.cnf option got left out.
      * dbck didn't check for disconnected rooms correctly. Noted by
        Rhysem.


Version 1.7.2 patchlevel 7                    March 10, 1998

Fixes:
      * Typo fixed in pennflag.hlp. Report by Keith Howell.
      * Bug in mid() that could cause crashes on some OS's when using
        bad arguments fixed. Report by Yanek@DragonStarMUSH. [TAP]
      * @wait obj=command fails when tiny_math is defined. Report by Yanek.
      * With tiny_math defined and tiny_booleans not defined, 
        strings in booleans weren't being treated as 1. Report by Yanek.
      * @decompile now shows @powers, too. Report by Jonathan Booth.


Version 1.7.2 patchlevel 6                    March 8, 1998

Fixes:
      * src/mymalloc.c now includes config.h correctly. [NJG]
      * @zemit would change zones of objects while running.
        Report by Steve Sanderlin and Vedui.
      * Minor cosmetic bug in @config/list. Reported by Mike Wesson
      * @chown'ing an object to a Zone player doesn't reduce the Zone
        player's quota, but @chown'ing an object back from a Zone player
        should reduce yours (and didn't). Report by Vedui.


Version 1.7.2 patchlevel 5                    March 2, 1998

Fixes:
      * @cloning an object on a channel could crash the MUSH. Report by
        Mordak@ATS.
      * You couldn't add 2 objects with the same name to a channel.
        Report by Mordak@ATS.
      * Help for inc() fixed. Brian@M*U*S*H
      * On Win32, the text file indexes are now properly sorted,
        and things work ok if you don't have a text file defined. [NJG]
      * Wiz objects couldn't add players to channels. Report by Mike@M*U*S*H
      * Compile problem with fork and win32 fixed. [TAP]
      * You shouldn't get nospoof notification from your own emits. [TN]
      * You no longer get nospoof notification from every @chat, only
        from @cemit.
      * @lock obj=here or @lock obj=exit failed. Report by Luke@M*U*S*H
      * The MUSH announces where it's sending stderr when it starts up. [NJG]
      * If there was nothing on the queue, and no user activity,
        the MUSH could wait as long as 999 seconds before checking to
        see if it should do anything (like a dump, a shutdown, idling
        someone out, etc.) This has been changed to 5 seconds.
        Report by NJG.
      * Encryption buffer for SHS encryption was too small, could cause
        password problems. [NJG]


Version 1.7.2 patchlevel 4                    February 24, 1998

Fixes:
      * Fixed a few more compiler warnings under Win32. [NJG]
      * Output to a non-ANSI, non-COLOR player could cause crashes.
        Reported by Vedui.


Version 1.7.2 patchlevel 3                    February 22, 1998

Fixes
       * Fixed a slew of compiler warnings under Win32. [NJG]
       * Jonathan Booth Removed a few #ifdef EVENTS that lingered.
       * Room names weren't shown bold to people who had ANSI
         but not COLOR set. Report by Sylvia
       * Added help alias pueblo() for pueblo. Suggested by Vedui.
       * Fixed some problems with ansi() and tf reported by Vedui.
       * @readcache could cause crashes. First report by Mop-Boy.
       * src/tcl.c is now better located by Configure. [TN]


Version 1.7.2 patchlevel 2                    February 19, 1998

Fixes:
       * Reading of compressed dbs didn't work right. Report by Roger Christie
       * Fix to help to remove reference to @config/globals. Mordak@ATS.


Version 1.7.2 patchlevel 1                    February 18, 1998

Fixes:
       * max_dbref was limited to 256 by mistake. Report by Rhysem@M*U*S*H
       * restricted_building in mush.cnf didn't work. Does now.
         Report by Rhysem@M*U*S*H
       * memchecks for hash tables didn't work right. Report by 
         Raevnos@M*U*S*H


Version 1.7.2 patchlevel 0                    February 9, 1998

Major Changes:
       * Support for the Pueblo MUD client (http://www.chaco.com/pueblo)
         which allows the MUSH to send html to the client. This is
         runtime configurable with @enable/@disable and mush.cnf. [TN]
       * Regular expression support: the REGEXP attribute flag causes
         attributes to match $ and ^ patterns using regular expressions.
         regmatch() matches regular expressions. [2.2]
       * PennMUSH tarfile now unpacks itself in a pennmush/ directory,
         by popular request. pennmush/ is now the 'top-level' directory;
         patches should still be applied from within the pennmush/ directory.
       * More compile-time options are now run-time options:
          HASPOWER_RESTRICTED, SAFER_UFUN, DUMP_WARNINGS,
          INDEX_COMMAND, RULES_COMMAND, HATE_DEST (general command rename?),
          NOISY_WHISPER, POSSESSIVE_GET POSSGET_ON_DISCONNECTED,
          REALLY_SAFE, DESTROY_POSSESSIONS, NULL_EQ_ZERO,
          TINY22_BOOLEANS, TINY_TRIM_ORDER,
          ADEST_ATTRIB, AMAIL, PLAYER_LISTEN, PLAYER_NOAHEAR,
	  ROOM_CONNECTS, ANSI_NAMES, COMMA_EXIT_LIST, COUNT_ALL,
	  EXITS_CONNECT_ROOMS, WIZWALL_PREFIX, RWALL_PREFIX, WALL_PREFIX,
          NO_LINK_TO_OBJECT, QUEUE_PER_OWNER, WIZ_NOAENTER, USE_IDENT,
	  MUSH_IP_ADDR, MAILER, ANSI_JUSTIFY, PLAYER_NAME_SPACES,
          NO_FORK, EVENTS, MILITARY_TIME, LOGIN_LIMIT, IDLE_TIMEOUT,
          RESTRICTED_BUILDING, FREE_OBJECTS, QUOTA, BUILDING_LIMIT,
          FLAGS_ON_EXAMINE, EX_PUBLIC_ATTRIBS, TINY_ATTRS, FULL_INVIS,
          SILENT_PEMIT, PLAYER_LOCATE, DO_GLOBALS, GLOBAL_CONNECTS,
          PARANOID_NOSPOOF, ACCESS_FILE, NAMES_FILE, OBJECT_COST,
          EXIT_COST, LINK_COST, ROOM_COST, QUEUE_COST, QUOTA_COST,
          FIND_COST, PAGE_COST, KILL_BASE_COST, KILL_MIN_COST, KILL_BONUS,
          QUEUE_LOSS, DBTOP_MAX, MAX_OBJECT_ENDOWMENT,
          MAX_WIZ_OBJECT_ENDOWMENT, MAX_PENNIES, MAX_DEPTH, MAX_PARENTS,
          PURGE_INTERVAL, DBCK_INTERVAL.
       * All the functions that used to be optional are now
         enabled. The increase in code size is negligible, and
         the decrase in options is a win. We'll probably add 
         some way to restrict function use in mush.cnf in the future.
       * The original MUSH chat system is no longer distributed or
         supported. The OBJECT_CHAT option is thus obsolete.
         If you've been using the old system, your db will automatically
         be converted to the new one, but you will need to recreate
         your channels and readd players to them.
       * ADD_NO_COMMAND_FLAG has been removed, as few people need
         to add NO_COMMAND en masse to all their rooms and players
         any more. Those that do can use MUSHcode for this.
       * The definitions of GOD, MAX_ARG, have been moved out of options.h, 
         because redefining these isn't really an option you want to exercise.
       * dune.h is no more. Raise a glass to it.
       * Non-standard attributes that are created by objects are set to 
         no_command by default. This improves security in many common cases, 
         but may require your object code to @set the attribute !no_command
         after it creates it, if the attribute is meant to contain
         a $command. Attributes set by players themselves (typed directly
         from a socket) still work as they used to, as do standard
         attributes (@va-@vz, for example). [TN]
       * Hash table code has been tightened up. [TN]
       * New option: tiny_math. Treat strings as 0 in math functions
         rather than errors. This is handy for Tinymush compatibility,
         even though it may make real errors harder to find.
         Suggested by Ashen Shugar.

Minor Changes:
       * idlesecs() now returns the number of seconds idle for the least
         idle connection of the player.
       * conn() now returns number of seconds connected for the longest
         connected connection of the player.
       * I wrote the COPYRITE file some time ago, but forgot to include
         it in the dist. Oops!
       * UFAIL/OUFAIL/AUFAIL is here. Suggested by Mike Affourtit.
       * controls() is now ok if you are See_All; you don't need to 
         actually control the object you're testing. Reported by RLM.
       * If you're allowing empty attributes, ICLOC is set to ""
         on newly created players, instead of " ", to permit testing
         with hasattrval. Suggested by Jonathan Booth. [TN]
       * Improvements to FPE handling on FreeBSD. By Jason Young.
       * New switch /noeval for @mail. Suggested by Mop Boy.
       * The "dbcomp" directive in mush.cnf has been removed.
         "compress_suffix" has been added. Databases are now specified
         without compression suffixes.
       * You are warned if you fail to define an option in the config file.
         Suggested by TN.
       * @config can now list config options in logical groups.
       * mail.c has been removed. extmail.c is used directly instead.

Fixes:
       * hasattr/get/xget/eval now are less likely to tell a player something
         they're not privileged to know about the existence of attributes. [TN]
       * The big_que function has been renamed parse_que. The parse_que
         function (which just called big_que) is gone.
       * FAQ updated, as well as other references to pennmush.tinymush.org.
       * Giving a negative argument to convsecs() would crash Win32.
         As there's no reason to ever do that, you now can't. 
         Reported by Javin@DynamixMUSH
       * dist2d and dist3d now return floating point numbers when
         FLOATING_POINTS is defined, as they said they would.
       * help for pi() now refers to it as 3.141593, which is what
         the function actually produces, due to rounding. Report by Vedui.
       * help for beep() notes that royalty can use it to. Report by Vedui.
       * Using a maildb that referred to db#s that didn't exist
         in the object db (e.g., replacing your object db with minimal.db
         without removing the maildb) would crash the server.
         Now the server fixes up invalid messages after loading maildb
         Report by TN.
       * Connect screen and other cached text files should now be
         automatically terminated with CRLF, so windows and other
         telnet programs will see them correctly. Report by many. [TN]
       * The separator in iter() is now parsed. Report by Ashen-Shugar.
       * match(foo,>) always returned 1; similar problems with matchall,
         grab, graball, strmatch, and elements. Report by Ashen-Shugar.
       * Objects listening for channel broadcasts with ^<chan> *: didn't
         work. Now they do.
       * When you disabled a command in order to override it in MUSHcode,
         calling the command with switches didn't work. 
         Reported by Ben Kenobi. Patch by Eyal Sagi and TN.
       * Calls to cut in utils/mkcmds.sh relied on "-f 2" working like
         "-f2". On at least Ultrix 4.4, it doesn't. Report by Cwilla.
       * Link strdup.o to info_slave because some systems need
         strdup! Report by Cwilla.
       * Some help file typos cleaned up by Ken Ray.
       * exit() used to work on non-rooms. Not anymore. Report by
         Trispis@MUSH101 
       * All header files now idempotent.
       * @tel me=home or @tel home now works in all cases where 'home'
         works. Report by Vedui.
