
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.0 patchlevel 10                    October 30, 1997

Minor Changes:
        * Players can now have @parents. Inspired by AJ Prowant.

Fixes:
        * @drain was doing @notify instead. Ick. Reported by Amberyl.
        * Royalty can @boot, as the help suggests. Reported by Vedui@Robotech
        * (Hopefully current) copies of hdrs/funs.h and hdrs/cmds.h are
          kept in the win32/ directory for win32 folks who don't have
          a Bourne shell and can't run utils/mkcmds.sh.


Version 1.7.0 patchlevel 9                    October 16, 1997

Fixes:
        * @clone could corrupt the db on some machines in some cases. 
          Report by Jonathan booth. [TAP]
        * @list attribs now works. Report by Corum@StormWorld.

          
Version 1.7.0 patchlevel 8                    October 15, 1997

Fixes:
        * Hopefully the final command_parse fix. 


Version 1.7.0 patchlevel 7                    October 15, 1997

Fixes:
        * The ANSI_JUSTIFY patch got left out somewhere. It's back.
          Report by John Hutchinson.
        * +channel and exits are broken in 1.7.0p6 due to our stupidity.
          Fixed again. Report by John Hutchinson.
        * @cemit was restricted to Wizards, and should have been restricted
          to Wiz or Royal. Fixed. Reported by Vedui@Robotech.


Version 1.7.0 patchlevel 6                    October 9, 1997

New Functions:
        * cand(), cor() are short-circuit boolean functions. Suggested by
          Flame who saw reference to them in a patch to TinyMUX. [TAP]
        * if() and ifelse() do about what you'd expect. Suggested by
          a number of people. [TAP]

Minor Changes:
        * Prototypes for the functions in src/local.c are now in
          hdrs/externs.h
        * round(.15,1) = .1 on many systems due to the floating point
          representation. A tiny kludge around this is now in place.
          Reported by Flame.
        * @command/disable say now disables " as well. The same applies
          to other single-character command forms. If you disable SAY,
          commands of the form "hi! are rewritten as: say hi! before
          being passed to the checker for user-defined commands
          so you need only set up $say *: to catch both. %c will, as always,
          contain the raw command as entered (i.e. "hi!). Aliases
          (like 'p' for page) are treated similarly when the aliased
          command is disabled -- you need only match $page *. [TN]
        * The Huffman compression algorithm is now 8-bit clean, in 
          preparation for a future internationalization of PennMUSH
          (Eh? Dite "help" pour aide. :) In addition, none of the compression
          algorithms treat the first character of a compressed string
          specially anymore -- they don't have to. [TAP]
        * The customize.pl script no longer copies over all the distribution
          help files from game/txt/hlp. Instead it makes customdir/txt/hlp
          into a link to game/txt/hlp, which is a good thing when future
          patches update the help files. Dedicated to Oleo.

Fixes:
        * @list/attribs showed many duplicate attribute names.
          Reported by John Hutchinson.
        * Fixed a mislabeling of allocated memory by htab.c, so mem_check
          stats will be correct.
        * @channel/gag now works.


Version 1.7.0 patchlevel 5                    October 1, 1997

Minor Changes:
        * New os2/ subdirectory with information for those looking to
          build under OS2. Maintained by Sylvia (penn-os2@pennmush.tinymush.org)

Fixes:
        * Examine/brief could sometimes cause crashes. Reported by
          Sean Fike. [TN]
        * cmds.c and command.c didn't do the right #includes for the
          original chat system. Reported by Magus.
        * Added help for @shutdown/paranoid. Reported by Sean Fike
        * @chan/decompile on a nonexistant channel didn't return an
          error. Reported by Mike Wesson


Version 1.7.0 patchlevel 4                    September 19, 1997

New command:
        * The @shutdown command now takes a /paranoid switch
          to perform a paranoid dump when shutting down
          (or rebooting, if given with /reboot as well). Idea by Flame.

New options:
        * You can define the MAILER option in dune.h to be
          something other than sendmail if you want to put a
          wrapper around the mailing program used to send out
          passwords to players using the 'register' command.
        * If you define LOCAL_DATA in options.h, you can 
          use functions in local.c to maintain your own data structures
          associated with each db object. [TN]
        * If you define the TINY_TRIM_ORDER option in dune.h,
          the trim() function takes arguments like TinyMUSH's.
        * If you define ANSI_JUSTIFY in options.h, the rjust, ljust,
          and center functions will ignore ansi codes when computing
          where the string should be placed, so they'll work right for
          strings with ansi. Wadhah Al-Tailji contributed a patch
          for this concept. TN wrote this particular implementation.

Fixes:
        * rnum() didn't find exits properly. Reported by Vedui.
        * Null channels would get added if the chatdb's channel count
          got unsync'd with the actual number of channels in the chatdb.
          Reported by Matt@New England: The Reckoning.
        * @wcheck/all didn't work. Report by Wolverine@Holodeck1
        * HPUX needs _XOPEN_SOURCE_EXTENDED in the hints. Report by Angel.
        * db reading error messages are slightly more verbose.
          Suggested by Flame.
        * Mortals examining DARK rooms don't see contents anymore.
          Report by Jonas Oberg. [TN]
        * Attribute names may no longer contain the caret (^) character.
          It's a security risk. Noted by Rob Wilson.
        * hdrs/funs.h was being appended to, not rebuilt. Noted
          by John Hutchinson.
        * setunion fixed again, so that setunion(a a,) correctly
          returns 'a', not 'a a'. [TN]
        * Various references to mellers1 updated to pennmush.tinymush.org.
        * COPYRITE file added to explain a couple of the unclear
          points in hdrs/copyrite.h and to serve as a pointer.
        * @chan/rename didnt work. Reported by Jonathan Booth.
        * Help for entrances() updated by Naomi Novik
        * Players no longer hear about all the channels they're
          no longer gagged on when they disconnect. Report by
          Naomi Novik.
        * The time noted in the LAST attribute now will always
          have day numbers 01-31 instead of 1-31, just like time()
          does. This makes convtime() work better on LAST for some
          systems. Reported by Valin@PernMUSH.
        * MUSHcoding a command called $attr * would crash the MUSH.
          Fixed. Reported by Sam Knowlton. [TN]
        * Disabling say now disables ", (same for pose, semipose,
          emit, and chat and their corresponding tokens).
          Reported by Flame.
        * The hint for Dec Alpha OSF now indicates that you need to
          use native malloc. Reported by Sean Fike.
        * We now check for the assert() macro in Configure. NetBSD may
          not have it, according to Logan Five.
        * Doing a LOGOUT after a @shutdown/reboot caused crashes
          because mail pointers weren't being reset.


Version 1.7.0 patchlevel 3                    August 13, 1997

Fixes:
        * setunion(,list) should work now.
        * @wall/wizard and @wall/royalty work right. Report by Alan T. [TN]


Version 1.7.0 patchlevel 2                    August 12, 1997

Fixes:
        * Linux 2 is now instructed not to use nm to find objects
          in libraries since its nm output doesn't seem to be
          BSD compatible or something.
        * Compile with CSRI malloc in debugging mode didn't work.
          Reported by TwinSuns MUSH.
        * Exits in transparent rooms with COMMA_EXIT_LIST had
          vanished. They're back! [TN]
        * More command parser bugs ironed out. [TN]
        * 'e' is examine, 'b' is brief, 'w' is whisper
           (unless you reserve them). [TN]
        * @config said conflicting things about possessive get.
          Report by Jonas Oberg.
        * When not using @prefix, audible messages were prefixed
          with "From <source>" instead of "From <source>,".
          Fixed. Report by Jonas Oberg.


Version 1.7.0 patchlevel 1                    August 7, 1997

Minor Changes:
        * New file local.c (from local.dst) makes more local hooks
          available. Some of the hooks in command.c have been moved
          here, so you may have to mess around a bit if you've already
          added things in command.c's local_startup or local_shutdown. [TN]
        * Functions can now be defined and added all within funlocal.c
          so you don't have to muck with the function.c table. [TN]

Fixes:
        * restrict_command didn't restrict commands to God correctly.
          Reported by Jason Newquist.
        * @command indicates if commands are restricted to God.
        * When COMMA_EXIT_LIST was defined, rooms with no exits
          still showed the "Obvious Exits:" message. Report by Michael Rudel.
        * Partial switch-matching for commands is back.
          And CMD_T_NEWSTYLE is gone. [TN]
        * Makefile doesn't clobber existing funlocal.c/cmdlocal.c
          any more. Report by Jason Young.
        * inv wasn't working for inventory, and other command aliasing
          flaws are fixed. Report by Corum. [TN]
        * MUSH wouldn't compile if PLAYER_LOCATE wasn't defined. Fixed.
          Report by Alan T.
        * Some leftover defines removed from game.c and mushcnf.dst
        * @lock didn't parse right. Fixed. Report by Corum.


Version 1.7.0 patchlevel 0                    July 31, 1997

The major goals of this release are to make what used to be
compile-time options into run-time options, and improve a number
of internals.

Major Changes:  

        * The hashtable functions from TinyMUSH (htab.c/htab.h) are
          now used by PennMUSH (with permission), so instead of 
          every subsystem writing its own hashtable code, they now
          all use the standard code.

        * The giant switch in game.c has been replaced by hashtabled
          commands. [TN] 
          Groovy new features:
          * @command/enable and @command/disable for any command
          * Multiple switches (@pemit/noeval/silent) work
          * The left side of the = is always evaluated before
            the right (previously, this was compiler-dependent).
          * Command table is built during compilation, and there's 
            a standardized command interface, so adding commands
            is easier.
          * local.c contains hooks for local routines to run
            on startup and shutdown, and to use to add new commands.

        * Configuration options which restricted or disabled commands
          (READ, NO_KILL, ROBBERS, HATE_TOAD, ROY_FIND, HARSH_GUEST,
          SITELOCK_COMMAND) have been replaced the 'restrict_command'
          directive in mush.cnf. Check there and be sure things are
          set the way you want them!

        * Commands may be overridden by completely disabling them,
          and providing a MUSHcoded version instead.
            
        * Ident and DNS lookups are handled by a slave process
          if possible. [TAP]

        * The help files have been rewritten by Naomi Novik!

        * The MUSH now closes and reopens the log files when it
          receives a SIGHUP signal. [TAP]

        * @shutdown/reboot will dump the database and restart the
          MUSH without disconnecting the players. So will a USR1 signal.
          Good for patching in new source code on the fly. Based on the 
          patch by Cro@Spaceballs which is itself based on ideas from
          TinyMUX. This may be nonportable - if it fails on your OS, 
          pennmush-bugs@pennmush.tinymush.org would like to hear about it. 
          [TAP]

New commands:
        * @command (see above)
        * @list/commands
        * @attribute, similar to Tinymush (but doesn't save data
          across shutdowns at this point, so you've got to use it
          on an @startup!). Also @list/attribs.
        * @function/delete 
        * @channel/gag <channel>=<yes|no>, keeps you on the channel
          (preserving your title, etc.) but silences it so you don't 
          hear messages. The channel is automatically ungagged if
          you log out from the MUSH.
        * @conformat and @exitformat allow custom-formatted Contents:
          and exit lists. [2.2,TAP]

Minor Changes:
        * Configure now looks for libbind.a, the BIND 8.1 library
        * @config shows more of the configuration options
        * @mail/unfolder <folder> can be used to remove a mailfolder's name.
          Suggested by Julianna Barrenson.
        * The default malloc is now CSRImalloc, which is now distributed
          in a single-file form with the MUSH. 
        * The MALLOC define in src/Makefile has been removed.
          Unlike MALLOC_D and MALLOC_O, it didn't do anything.
        * The "CHANGES" file now contains only the current
          version's changes. Older changes are in the 
          "CHANGES.OLD" file.
        * The attribute flag AF_ODARK is now assumed to be default, 
          and is thus no longer used or stored. Instead, AF_VISUAL
          is used to indicate a visual attribute (previously, this
          was indicated by the absence of AF_ODARK). To note this
          change in the db, a new DBF constant, DBF_AF_VISUAL,
          has been defined.
        * Code for "privilege tables" (like chat channel privs, 
          attribute flags, etc.) has been centralized into privtab.c

Fixes: 
        * Locks on zone exits now evaluate with the right enactor.
          Problem noted by Leonid Korogodsky. [TAP]
        * Win32 compatibility improvements. [TAP]
        * Prefer limits.h to values.h. Suggested by Atuarre.
        * SIGCHLD and SIGCLD now both work. Noted by Naomi Novik
        * If you idle out and get hidden, only the idle descriptor
          should get hidden. Noted by Gepht@Hemlock
        * With DBF_LESS_GARBAGE, garbage objects were loaded with
          owner NOTHING instead of owner GOD, which could cause
          crashes in the @mail code. Reported by Harvester@StarWars.
        * Problems with getrandom() on some systems fixed.
        * Help for dist3d() clarified. Reported by 
          Kova'khan@Among the Stars TrekMUSH via Leo at the same MUSH.
        * You may now use power() for integral powers of negative
          numbers. Suggested by John Hutchinson.
        * setunion(,test,|) used to return |test, now returns test.
          Reported by Ashford @ V MUSH
        * SAFER_UFUN now blocks non-God eval'ing a u() on God.
          Reported by MRR@ATS
        * Building with SunOS cc and COMPRESSION_TYPE 0 works now. 
          Reported by Jonas Oberg.

Personnel Changes:
        * Ralph Melton has retired as a member of the PennMUSH 
          devteam. Alex and Javelin send him best wishes and big
          thanks for all his work. Replacing Ralph will be
          Thorvald Natvig. Welcome aboard, TN!
