[PENNMUSH-ANNOUNCE] 1.7.7-patch15

dunemush at tala.mede.uic.edu dunemush at tala.mede.uic.edu
Mon Jun 2 15:28:10 CDT 2003


This is patch15 to PennMUSH 1.7.7. After applying this patch, you will
have version 1.7.7p15

To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
	patch -p1 < 1.7.7-patch15
	./Configure -S
	make install

If you use GNU patch 2.2, you probably want the above to be 'patch -b -p1',
not just 'patch -p1'.

Unix (or cygwin) users need not worry about failed hunks in src/switchinc.c,
hdrs/switches.h, hdrs/cmds.h, or hdrs/funs.h. These files are automatically
rebuilt on compile. On the off chance they appear not to be, simply
rm them and re-run make.

If a hunk fails in game/restart, you will have to decide if you want
to hand-patch the changes to restart, which increase safety in
unusual conditions.

Then @shutdown and restart your MUSH.
    - Alan/Javelin

In this patch:

Fixes:
  * Problem with checking command flag masks when the number of
    flags was an even multiple of 8. Reported by Nymeria and 
    Mordie at M*U*S*H.
  * Tweak to improve efficiency of ancestor checking code and delint
    warning reported by Cheetah at M*U*S*H.
  * SESSION output no longer misaligned with 5-digit dbrefs.
    Reported by Cheetah at M*U*S*H. [TAP].
  * Fixes from 1.7.6p11.
  * game/txt/index-files.pl now uses locale information in the
    environment to, e.g., correctly lowercase accented characters.
    Report by Krad at M*U*S*H.
  * Modified several Makefile.SH targets to prevent Javelin from
    releasing patches that don't have the autogenerated files 
    up-to-date for Windows folks.
  * Removed some dependence on typedefs that may or may not be in system
    header files. [SW]
  * Patch compiler warnings. [SW,EEH]
  * Help fixes by Mike Griffiths and Oriens at Alexandria.

  
Prereq: 1.7.7p14
*** 1_7_7.447/Patchlevel Thu, 22 May 2003 13:40:04 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.16 600)
--- 1_7_7.464(w)/Patchlevel Mon, 02 Jun 2003 13:17:14 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.17 600)
***************
*** 1,2 ****
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.7p14
--- 1,2 ----
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.7p15
*** 1_7_7.447/CHANGES.176 Tue, 13 May 2003 12:53:40 -0500 dunemush (pennmush/g/17_CHANGES 1.10.1.6.1.2.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.9.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2 600)
--- 1_7_7.464(w)/CHANGES.176 Mon, 02 Jun 2003 13:32:58 -0500 dunemush (pennmush/g/17_CHANGES 1.10.1.6.1.2.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.9.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.2 600)
***************
*** 13,18 ****
--- 13,32 ----
  
  ==========================================================================
  
+ Version 1.7.6 patchlevel 11                     June 1, 2003
+ 
+ Minor changes:
+    * The restart script now insures that GAMEDIR is a real directory
+      and CONF_FILE exists therein before proceeding. Suggested by
+      Philip Mak.
+    * Attribute flag setting messages are more verbose. Suggested by
+      Mike Griffiths
+    * See_All players may use the ports() function. Suggested by 
+      Mike Griffiths.
+ Fixes:
+    * Wizards can no longer @chzone God. Report by Kevin at M*U*S*H.
+    * Help fixes by Mike Griffiths.
+ 
  Version 1.7.6 patchlevel 10                     May 13, 2003
  
  Minor changes:
*** 1_7_7.447/CHANGES.177 Thu, 22 May 2003 13:40:04 -0500 dunemush (pennmush/g/23_CHANGES 1.48.1.84 600)
--- 1_7_7.464(w)/CHANGES.177 Mon, 02 Jun 2003 13:17:09 -0500 dunemush (pennmush/g/23_CHANGES 1.48.1.94 600)
***************
*** 18,23 ****
--- 18,46 ----
  
  ==========================================================================
  
+ Version 1.7.7 patchlevel 15                     June 1, 2003
+ 
+ Fixes:
+   * Problem with checking command flag masks when the number of
+     flags was an even multiple of 8. Reported by Nymeria and 
+     Mordie at M*U*S*H.
+   * Tweak to improve efficiency of ancestor checking code and delint
+     warning reported by Cheetah at M*U*S*H.
+   * SESSION output no longer misaligned with 5-digit dbrefs.
+     Reported by Cheetah at M*U*S*H. [TAP].
+   * Fixes from 1.7.6p11.
+   * game/txt/index-files.pl now uses locale information in the
+     environment to, e.g., correctly lowercase accented characters.
+     Report by Krad at M*U*S*H.
+   * Modified several Makefile.SH targets to prevent Javelin from
+     releasing patches that don't have the autogenerated files 
+     up-to-date for Windows folks.
+   * Removed some dependence on typedefs that may or may not be in system
+     header files. [SW]
+   * Patch compiler warnings. [SW,EEH]
+   * Help fixes by Mike Griffiths and Oriens at Alexandria.
+ 
+   
  Version 1.7.7 patchlevel 14                     May 22, 2003
  
  Major changes:
*** 1_7_7.447/game/txt/hlp/penntop.hlp Tue, 15 Apr 2003 12:22:04 -0500 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.7 600)
--- 1_7_7.464(w)/game/txt/hlp/penntop.hlp Sat, 31 May 2003 16:32:16 -0500 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.12.1.1.1.1.1.2 600)
***************
*** 902,909 ****
    own attributes by the child. Thus, when a $-command or @trigger is
    executed, "me", for example, refers to the child, not the parent,
    and the $-command's associated actions are performed by the child.
-   However, uselocks are checked on parents. Failing one stops looking
-   for a matching command on that parent chain.
  
  (continued in help parents3)
  & PARENTS3
--- 902,907 ----
*** 1_7_7.447/game/txt/hlp/pennfunc.hlp Mon, 12 May 2003 16:46:13 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.3 600)
--- 1_7_7.464(w)/game/txt/hlp/pennfunc.hlp Sat, 31 May 2003 16:32:16 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.2 600)
***************
*** 1265,1271 ****
    accname() returns the name of object <object>, applying the object's
    @nameaccent, if any.
  
!   Related functions: NAME(), ACCNAME(), INAME()
  & FRACTION()
    fraction(<number>)
  
--- 1265,1271 ----
    accname() returns the name of object <object>, applying the object's
    @nameaccent, if any.
  
!   Related functions: NAME(), FULLNAME(), INAME()
  & FRACTION()
    fraction(<number>)
  
***************
*** 1346,1353 ****
  & REGREP()
    grep(<object>,<attrs>,<pattern>)
    regrep(<object>,<attrs>,<regexp>)
    
!   This function returns a list of attributes on <object> containing
    <pattern> (or matching <regexp>).  <attrs> is a wildcard pattern for
    attribute names to search; if you want to search all attributes, use "*".
  
--- 1346,1355 ----
  & REGREP()
    grep(<object>,<attrs>,<pattern>)
    regrep(<object>,<attrs>,<regexp>)
+   grepi(<object>,<attrs>,<pattern>)
+   regrepi(<object>,<attrs>,<regexp>)
    
!   These functions return a list of attributes on <object> containing
    <pattern> (or matching <regexp>).  <attrs> is a wildcard pattern for
    attribute names to search; if you want to search all attributes, use "*".
  
***************
*** 1358,1370 ****
    "special" characters will need to be escaped out.  In grep(), 
    <pattern> is NOT wildcard matched.
  
!   These functions are case-sensitive. grepi()/regrepi() are case-insensitive.
! & GREPI()
!   grepi(<object>,<attrs>,<pattern>)
!   regrepi(<object>,<attrs>,<regexp>)
!  
!   This function works exactly like grep or regrep, but is case-insensitive.
!   See "help grep()" or "help regrep()" for details. 
  & GT()
    gt(<num>,<num>)
  
--- 1360,1366 ----
    "special" characters will need to be escaped out.  In grep(), 
    <pattern> is NOT wildcard matched.
  
!   grep()/regrep() are case-sensitive. grepi()/regrepi() are case-insensitive.
  & GT()
    gt(<num>,<num>)
  
***************
*** 2566,2576 ****
    ports(<player name>)
   
    This function returns the list of descriptors ("ports") that a player,
!   specified by full player name, or by dbref, is connected to. Only Wizards
!   and Royalty may use this function; if a user lacks the privileges, or the
!   player is not connected, an empty list is returned. Otherwise, a list of
!   ports is returned in order of most recent connection to least recent
!   connection.
  & POS()
    pos(<string1>,<string2>)
  
--- 2562,2571 ----
    ports(<player name>)
   
    This function returns the list of descriptors ("ports") that a player,
!   specified by full player name, or by dbref, is connected to. Only players
!   who are See_All or privileged may use this function; in other cases,
!   an empty list is returned. Otherwise, a list of ports is returned in 
!   order of most recent connection to least recent connection.
  & POS()
    pos(<string1>,<string2>)
  
***************
*** 2648,2653 ****
--- 2643,2649 ----
  
    See also: edit(), regmatch()
  & REGMATCH()
+ & REGMATCHI()
    (Help text from TinyMUSH 2.2.4, with permission)
    regmatch(<string>,<regexp>[,<register list>])
    regmatchi(<string>,<regexp>[,<register list>])
*** 1_7_7.447/game/txt/hlp/pennflag.hlp Tue, 15 Apr 2003 12:28:09 -0500 dunemush (pennmush/17_pennflag.h 1.1.1.1.1.2.1.1.1.2.1.1.1.2.1.1.2.1.2.1.1.1.1.2.1.4.1.2.2.4 600)
--- 1_7_7.464(w)/game/txt/hlp/pennflag.hlp Mon, 02 Jun 2003 13:16:53 -0500 dunemush (pennmush/17_pennflag.h 1.1.1.1.1.2.1.1.1.2.1.1.1.2.1.1.2.1.2.1.1.1.1.2.1.4.1.2.2.5 600)
***************
*** 531,537 ****
    The ORPHAN flag severs the connection between an object and its
    type ancestor, and prevents attributes from being
    retrieved from the ancestor. It has no effect on the object's 
!   true @parents, only on the its use of the ancestor.
  
    See also: @parent, ancestors
  & PLAYER
--- 531,537 ----
    The ORPHAN flag severs the connection between an object and its
    type ancestor, and prevents attributes from being
    retrieved from the ancestor. It has no effect on the object's 
!   true @parents, only on its use of the ancestor.
  
    See also: @parent, ancestors
  & PLAYER
*** 1_7_7.447/game/txt/index-files.pl Wed, 26 Mar 2003 09:19:34 -0600 dunemush (pennmush/28_index-file 1.8 600)
--- 1_7_7.464(w)/game/txt/index-files.pl Sat, 31 May 2003 15:29:18 -0500 dunemush (pennmush/28_index-file 1.9 600)
***************
*** 17,22 ****
--- 17,23 ----
  require 5; # Sorry, Talek.
  use strict;
  use Getopt::Long;
+ use locale;
  my (@entries, @aentries);
  
  # Have we got any options?
*** 1_7_7.447/game/restart Mon, 05 May 2003 20:48:03 -0500 dunemush (pennmush/39_restart 1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.2.2.4.1.1 700)
--- 1_7_7.464(w)/game/restart Thu, 29 May 2003 11:45:33 -0500 dunemush (pennmush/39_restart 1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.2.2.1.2.2 700)
***************
*** 8,16 ****
  # If this doesn't work, you can set GAMEDIR to the directory this
  # script lives in by hand.
  GAMEDIR=`which $0 | sed 's/\/[^\/]*$//'`
- cd $GAMEDIR
- echo Running from `pwd`
- 
  
  # The config file
  CONF_FILE=mush.cnf
--- 8,13 ----
***************
*** 18,23 ****
--- 15,34 ----
  # The error log file
  LOG=log/netmush.log
  
+ 
+ if [ ! -d $GAMEDIR ]; then
+   echo "GAMEDIR doesn't appear to be a directory. It's: $GAMEDIR"
+   exit 1
+ fi
+ 
+ cd $GAMEDIR
+ echo Running from `pwd`
+ 
+ if [ ! -f $CONF_FILE ]; then
+   echo "CONF_FILE doesn't exist. It's: $CONF_FILE"
+   exit 1
+ fi
+ 
  # Internationalization stuff
  # Set LANG here to get international character sets and, if someone's
  # done it, translation of messages.
*** 1_7_7.447/src/switchinc.c Mon, 28 Apr 2003 22:37:00 -0500 dunemush (pennmush/b/32_switchinc. 1.3.1.2.1.6.1.18.1.2.1.2.2.5.1.4.2.4.1.1.1.2.1.5.1.2.1.5.2.1.1.31.3.4.1.5.1.4.1.1.1.1.1.4 660)
--- 1_7_7.464(w)/src/switchinc.c Mon, 02 Jun 2003 14:20:37 -0500 dunemush (pennmush/b/32_switchinc. 1.3.1.2.1.6.1.18.1.2.1.2.2.5.1.4.2.4.1.1.1.2.1.5.1.2.1.5.2.1.1.31.3.4.1.5.1.4.1.1.1.1.1.1.1.6 660)
***************
*** 46,51 ****
--- 46,52 ----
    {"FLAGS", SWITCH_FLAGS},
    {"FOLDERS", SWITCH_FOLDERS},
    {"FORWARD", SWITCH_FORWARD},
+   {"FREESPACE", SWITCH_FREESPACE},
    {"FSTATS", SWITCH_FSTATS},
    {"FULL", SWITCH_FULL},
    {"FUNCTIONS", SWITCH_FUNCTIONS},
***************
*** 136,140 ****
    {"WIZARD", SWITCH_WIZARD},
    {"YES", SWITCH_YES},
    {"ZONE", SWITCH_ZONE},
!   {NULL, 0}
  };
--- 137,141 ----
    {"WIZARD", SWITCH_WIZARD},
    {"YES", SWITCH_YES},
    {"ZONE", SWITCH_ZONE},
! {NULL, 0}
  };
*** 1_7_7.447/src/set.c Mon, 12 May 2003 16:54:32 -0500 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.11.1.1.1.1.1.1.1.6 660)
--- 1_7_7.464(w)/src/set.c Mon, 02 Jun 2003 14:20:27 -0500 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.11.1.1.1.1.1.1.1.1.1.1.1.1.1.2 660)
***************
*** 356,362 ****
     * we only want the owner to be able to rezone the object. Also,
     * this allows players to @chzone themselves to an object they own.
     */
!   if (!Wizard(player) && !Owns(player, thing)) {
      if (noisy)
        notify(player, T("You don't have the power to shift reality."));
      return 0;
--- 356,362 ----
     * we only want the owner to be able to rezone the object. Also,
     * this allows players to @chzone themselves to an object they own.
     */
!   if (!(God(player) || (!God(thing) && Wizard(player)) || Owns(player, thing))) {
      if (noisy)
        notify(player, T("You don't have the power to shift reality."));
      return 0;
***************
*** 471,486 ****
    if (!(Can_Write_Attr(player, thing, AL_ATTR(atr)) ||
  	((*af->flag == NOT_TOKEN) && (af->f == AF_SAFE) &&
  	 Can_Write_Attr_Ignore_Safe(player, thing, AL_ATTR(atr))))) {
!     notify_format(player, T("You cannot set %s/%s"), Name(thing), AL_NAME(atr));
      return 0;
    }
!   if (*af->flag == NOT_TOKEN)
      AL_FLAGS(atr) &= ~af->f;
!   else
      AL_FLAGS(atr) |= af->f;
! 
!   if (!Quiet(player) && !(Quiet(thing) && (Owner(thing) == player)))
!     notify_format(player, "%s/%s - Set.", Name(thing), AL_NAME(atr));
  
    return 1;
  }
--- 471,492 ----
    if (!(Can_Write_Attr(player, thing, AL_ATTR(atr)) ||
  	((*af->flag == NOT_TOKEN) && (af->f == AF_SAFE) &&
  	 Can_Write_Attr_Ignore_Safe(player, thing, AL_ATTR(atr))))) {
!     notify_format(player, T("You cannot change that flag on %s/%s"),
! 		  Name(thing), AL_NAME(atr));
      return 0;
    }
! 
!   if (*af->flag == NOT_TOKEN) {
      AL_FLAGS(atr) &= ~af->f;
!     if (!Quiet(player) && !(Quiet(thing) && (Owner(thing) == player)))
!       notify_format(player, T("%s/%s - %s reset."), Name(thing), AL_NAME(atr),
! 		    (af->flag + 1));
!   } else {
      AL_FLAGS(atr) |= af->f;
!     if (!Quiet(player) && !(Quiet(thing) && (Owner(thing) == player)))
!       notify_format(player, T("%s/%s - %s set."), Name(thing), AL_NAME(atr),
! 		    af->flag);
!   }
  
    return 1;
  }
*** 1_7_7.447/src/look.c Mon, 28 Apr 2003 22:37:00 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2.1.9.1.1.1.1.1.7 660)
--- 1_7_7.464(w)/src/look.c Mon, 02 Jun 2003 14:20:26 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2.1.9.1.1.1.1.1.8 660)
***************
*** 40,46 ****
  static void look_contents(dbref player, dbref loc, const char *contents_name);
  static void look_atrs(dbref player, dbref thing, const char *mstr, int all);
  static void look_simple(dbref player, dbref thing);
! static void look_description(dbref player, dbref thing, char *def,
  			     const char *descname, const char *descformatname);
  static int decompile_helper
    (dbref player, dbref thing, char const *pattern, ATTR *atr, void *args);
--- 40,46 ----
  static void look_contents(dbref player, dbref loc, const char *contents_name);
  static void look_atrs(dbref player, dbref thing, const char *mstr, int all);
  static void look_simple(dbref player, dbref thing);
! static void look_description(dbref player, dbref thing, const char *def,
  			     const char *descname, const char *descformatname);
  static int decompile_helper
    (dbref player, dbref thing, char const *pattern, ATTR *atr, void *args);
***************
*** 482,489 ****
  }
  
  static void
! look_description(dbref player, dbref thing, char *def, const char *descname,
! 		 const char *descformatname)
  {
    /* Show thing's description to player, obeying DESCFORMAT if set */
    ATTR *a, *f;
--- 482,489 ----
  }
  
  static void
! look_description(dbref player, dbref thing, const char *def,
! 		 const char *descname, const char *descformatname)
  {
    /* Show thing's description to player, obeying DESCFORMAT if set */
    ATTR *a, *f;
*** 1_7_7.447/src/flags.c Tue, 06 May 2003 17:31:42 -0500 dunemush (pennmush/c/20_flags.c 1.1.1.1.1.1.1.1.1.1.1.1.1.6.1.2.1.1.1.1.1.2.2.2.2.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.3.1.9.1.2.2.1.1.2.1.49 660)
--- 1_7_7.464(w)/src/flags.c Mon, 02 Jun 2003 14:20:25 -0500 dunemush (pennmush/c/20_flags.c 1.1.1.1.1.1.1.1.1.1.1.1.1.6.1.2.1.1.1.1.1.2.2.2.2.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.3.1.9.1.2.2.1.1.2.1.51 660)
***************
*** 708,713 ****
--- 708,715 ----
  #define FlagByte(x) (x / 8)
  /** Locate a specific bit within a byte given a bit position */
  #define FlagBit(x) (7 - (x % 8))
+ /** How many bytes do we need for a flag bitmask? */
+ #define FlagBytes  ((size_t)((flagbits + 7) / 8))
  
  /** Allocate a new flag bitmask.
   * This function allocates a new flag bitmask of sufficient length
***************
*** 719,729 ****
  new_flag_bitmask(void)
  {
    object_flag_type bitmask;
!   int flagbytes = (flagbits + 7) / 8;	/* Rounds up to nearest byte */
!   bitmask = (object_flag_type) mush_malloc(flagbytes, "flag_bitmask");
    if (!bitmask)
      panic("Unable to allocate memory for flag bitmask");
!   memset(bitmask, 0, flagbytes);
    return bitmask;
  }
  
--- 721,730 ----
  new_flag_bitmask(void)
  {
    object_flag_type bitmask;
!   bitmask = (object_flag_type) mush_malloc(FlagBytes, "flag_bitmask");
    if (!bitmask)
      panic("Unable to allocate memory for flag bitmask");
!   memset(bitmask, 0, FlagBytes);
    return bitmask;
  }
  
***************
*** 738,748 ****
  clone_flag_bitmask(object_flag_type given)
  {
    object_flag_type bitmask;
!   int flagbytes = 1 + flagbits / 8;
!   bitmask = (object_flag_type) mush_malloc(flagbytes, "flag_bitmask");
    if (!bitmask)
      panic("Unable to allocate memory for flag bitmask");
!   memcpy(bitmask, given, flagbytes);
    return bitmask;
  }
  
--- 739,748 ----
  clone_flag_bitmask(object_flag_type given)
  {
    object_flag_type bitmask;
!   bitmask = (object_flag_type) mush_malloc(FlagBytes, "flag_bitmask");
    if (!bitmask)
      panic("Unable to allocate memory for flag bitmask");
!   memcpy(bitmask, given, FlagBytes);
    return bitmask;
  }
  
***************
*** 755,762 ****
  void
  copy_flag_bitmask(object_flag_type dest, object_flag_type given)
  {
!   int flagbytes = 1 + flagbits / 8;
!   memcpy((void *) dest, (void *) given, flagbytes);
  }
  
  /** Deallocate a flag bitmask.
--- 755,761 ----
  void
  copy_flag_bitmask(object_flag_type dest, object_flag_type given)
  {
!   memcpy((void *) dest, (void *) given, FlagBytes);
  }
  
  /** Deallocate a flag bitmask.
***************
*** 836,843 ****
  {
    unsigned int i;
    int ok = 1;
!   unsigned int flagbytes = 1 + flagbits / 8;
!   for (i = 0; i < flagbytes; i++)
      ok &= ((*(bitmask + i) & *(source + i)) == *(bitmask + i));
    return ok;
  }
--- 835,841 ----
  {
    unsigned int i;
    int ok = 1;
!   for (i = 0; i < FlagBytes; i++)
      ok &= ((*(bitmask + i) & *(source + i)) == *(bitmask + i));
    return ok;
  }
***************
*** 852,859 ****
  {
    unsigned int i;
    int bad = 0;
!   unsigned int flagbytes = 1 + flagbits / 8;
!   for (i = 0; i < flagbytes; i++)
      bad |= *(source + i);
    return (!bad);
  }
--- 850,856 ----
  {
    unsigned int i;
    int bad = 0;
!   for (i = 0; i < FlagBytes; i++)
      bad |= *(source + i);
    return (!bad);
  }
***************
*** 871,878 ****
  {
    unsigned int i;
    int ok = 0;
!   unsigned int flagbytes = 1 + flagbits / 8;
!   for (i = 0; i < flagbytes; i++)
      ok |= (*(bitmask + i) & *(source + i));
    return ok;
  }
--- 868,874 ----
  {
    unsigned int i;
    int ok = 0;
!   for (i = 0; i < FlagBytes; i++)
      ok |= (*(bitmask + i) & *(source + i));
    return ok;
  }
*** 1_7_7.447/src/bsd.c Tue, 06 May 2003 17:27:48 -0500 dunemush (pennmush/c/38_bsd.c 1.58.1.11.1.2.1.5.1.7.1.14.1.13.1.9.1.4.1.2.1.12.1.1.1.1.1.2.1.1.1.13.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.8.2.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.27 660)
--- 1_7_7.464(w)/src/bsd.c Mon, 02 Jun 2003 14:20:25 -0500 dunemush (pennmush/c/38_bsd.c 1.58.1.11.1.2.1.5.1.7.1.14.1.13.1.9.1.4.1.2.1.12.1.1.1.1.1.2.1.1.1.13.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.8.2.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.3 660)
***************
*** 965,971 ****
  }
  
  static void
! shovechars(Port_t port, Port_t sslport)
  {
    /* this is the main game loop */
  
--- 965,971 ----
  }
  
  static void
! shovechars(Port_t port, Port_t sslport __attribute__ ((__unused__)))
  {
    /* this is the main game loop */
  
***************
*** 3248,3265 ****
      if (poll_msg[0] == '\0')
        strcpy(poll_msg, "Doing");
      if (ShowAnsi(call_by->player))
!       sprintf(tbuf2, "%s          %s   %s  %s%s\n",
  	      T("Player Name"), T("On For"), T("Idle"), poll_msg, ANSI_NORMAL);
      else
!       sprintf(tbuf2, "%s          %s   %s  %s\n",
  	      T("Player Name"), T("On For"), T("Idle"), poll_msg);
      queue_string(call_by, tbuf2);
    } else if (doing == 2) {
!     sprintf(tbuf2, "%s      %s    %s  %s  %s  Des  Sent    Recv  Pend\n",
  	    T("Player Name"), T("Loc #"), T("On For"), T("Idle"), T("Cmds"));
      queue_string(call_by, tbuf2);
    } else {
!     sprintf(tbuf2, "%s       %s    %s  %s  %s Des  Host\n",
  	    T("Player Name"), T("Loc #"), T("On For"), T("Idle"), T("Cmds"));
      queue_string(call_by, tbuf2);
    }
--- 3248,3265 ----
      if (poll_msg[0] == '\0')
        strcpy(poll_msg, "Doing");
      if (ShowAnsi(call_by->player))
!       sprintf(tbuf2, "%-16s %10s %6s  %s%s\n",
  	      T("Player Name"), T("On For"), T("Idle"), poll_msg, ANSI_NORMAL);
      else
!       sprintf(tbuf2, "%-16s %10s %6s  %s\n",
  	      T("Player Name"), T("On For"), T("Idle"), poll_msg);
      queue_string(call_by, tbuf2);
    } else if (doing == 2) {
!     sprintf(tbuf2, "%-16s %6s %9s %5s %5s Des  Sent    Recv  Pend\n",
  	    T("Player Name"), T("Loc #"), T("On For"), T("Idle"), T("Cmds"));
      queue_string(call_by, tbuf2);
    } else {
!     sprintf(tbuf2, "%-16s %6s %9s %5s %5s Des  Host\n",
  	    T("Player Name"), T("Loc #"), T("On For"), T("Idle"), T("Cmds"));
      queue_string(call_by, tbuf2);
    }
***************
*** 3291,3297 ****
  	}
        } else if (call_by->connected && doing == 2 && call_by->player
  		 && Priv_Who(call_by->player)) {
! 	sprintf(tbuf1, "%-16s %5s %9s %5s %5d %4d %5lu %7lu %5d",
  		Name(d->player), unparse_dbref(Location(d->player)),
  		time_format_1(now - d->connected_at),
  		time_format_2(now - d->last_time), d->cmds, d->descriptor,
--- 3291,3297 ----
  	}
        } else if (call_by->connected && doing == 2 && call_by->player
  		 && Priv_Who(call_by->player)) {
! 	sprintf(tbuf1, "%-16s %6s %9s %5s %5d %3d %5lu %7lu %5d",
  		Name(d->player), unparse_dbref(Location(d->player)),
  		time_format_1(now - d->connected_at),
  		time_format_2(now - d->last_time), d->cmds, d->descriptor,
***************
*** 3922,3934 ****
  FUNCTION(fun_ports)
  {
    /* returns a list of the network descriptors that a player is
!    * connected to (wizard-only)
     */
  
    dbref target;
    DESC *d;
    int first;
!   if (!Hasprivs(executor)) {
      notify(executor, T("Permission denied."));
      return;
    }
--- 3922,3935 ----
  FUNCTION(fun_ports)
  {
    /* returns a list of the network descriptors that a player is
!    * connected to 
     */
  
    dbref target;
    DESC *d;
    int first;
! 
!   if (!Priv_Who(executor)) {
      notify(executor, T("Permission denied."));
      return;
    }
*** 1_7_7.447/src/attrib.c Mon, 12 May 2003 13:56:08 -0500 dunemush (pennmush/c/40_attrib.c 1.15.1.2.1.5.1.1.1.3.1.3.1.2.1.2.1.2.2.1.1.2.1.2.1.2.1.1.1.3.1.1.1.1.1.1.3.15 660)
--- 1_7_7.464(w)/src/attrib.c Mon, 02 Jun 2003 14:20:24 -0500 dunemush (pennmush/c/40_attrib.c 1.15.1.2.1.5.1.1.1.3.1.3.1.2.1.2.1.2.2.1.1.2.1.2.1.2.1.1.1.3.1.1.1.1.1.1.3.17 660)
***************
*** 30,35 ****
--- 30,40 ----
  #include "log.h"
  #include "confmagic.h"
  
+ #ifdef WIN32
+ #pragma warning( disable : 4761)	/* disable warning re conversion */
+ #endif
+ 
+ 
  /** A string tree that temporarily stores matching attributes from current
   * and parent objects when we're searching for commands on attributes
   */
***************
*** 391,396 ****
--- 396,402 ----
    if (thing == NOTHING || !good_atr_name(atr))
      return NULL;
  
+   ancestor = Ancestor_Parent(thing);
    for (parent_depth = 0, temp = thing;
         parent_depth < MAX_PARENTS && temp != NOTHING;
         parent_depth++, temp = Parent(temp)) {
***************
*** 398,404 ****
       * we use it there, and don't check the ancestor later
       */
      if (temp == ancestor)
!       ancestor = -1;
      for (ptr = List(temp); ptr; ptr = AL_NEXT(ptr)) {
        comp = strcoll(atr, AL_NAME(ptr));
        if (comp < 0)
--- 404,410 ----
       * we use it there, and don't check the ancestor later
       */
      if (temp == ancestor)
!       ancestor = NOTHING;
      for (ptr = List(temp); ptr; ptr = AL_NEXT(ptr)) {
        comp = strcoll(atr, AL_NAME(ptr));
        if (comp < 0)
***************
*** 412,418 ****
      }
    }
    /* If we have a valid ancestor, search it as well */
-   ancestor = Ancestor_Parent(thing);
    if (GoodObject(ancestor)) {
      for (parent_depth = 0, temp = ancestor;
  	 parent_depth < MAX_PARENTS && temp != NOTHING;
--- 418,423 ----
***************
*** 440,450 ****
    for (parent_depth = 0, temp = thing;
         parent_depth < MAX_PARENTS && temp != NOTHING;
         parent_depth++, temp = Parent(temp)) {
-     /* If the ancestor of the object is in its explict parent chain,
-      * we use it there, and don't check the ancestor later
-      */
-     if (temp == ancestor)
-       ancestor = -1;
      for (ptr = List(temp); ptr; ptr = AL_NEXT(ptr)) {
        comp = strcoll(atr, AL_NAME(ptr));
        if (comp < 0)
--- 445,450 ----
***************
*** 1074,1080 ****
   * \param atr the attribute struct from which to get the data reference.
   * \return a pointer to the compressed data, in a static buffer.
   */
! unsigned char *const
  atr_get_compressed_data(ATTR *atr)
  {
    static unsigned char buffer[BUFFER_LEN * 2];
--- 1074,1080 ----
   * \param atr the attribute struct from which to get the data reference.
   * \return a pointer to the compressed data, in a static buffer.
   */
! unsigned char const *
  atr_get_compressed_data(ATTR *atr)
  {
    static unsigned char buffer[BUFFER_LEN * 2];
***************
*** 1091,1097 ****
   * \param atr the attribute struct from which to get the data reference.
   * \return a pointer to the uncompressed data, in a static buffer.
   */
! char *const
  atr_value(ATTR *atr)
  {
    return uncompress(atr_get_compressed_data(atr));
--- 1091,1097 ----
   * \param atr the attribute struct from which to get the data reference.
   * \return a pointer to the uncompressed data, in a static buffer.
   */
! char *
  atr_value(ATTR *atr)
  {
    return uncompress(atr_get_compressed_data(atr));
*** 1_7_7.447/hdrs/version.h Thu, 22 May 2003 13:40:04 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.18 660)
--- 1_7_7.464(w)/hdrs/version.h Mon, 02 Jun 2003 14:20:31 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.19 660)
***************
*** 1,3 ****
! #define VERSION "PennMUSH version 1.7.7 patchlevel 14 [05/22/2003]"
! #define SHORTVN "PennMUSH 1.7.7p14"
! #define NUMVERSION 001007007014
--- 1,3 ----
! #define VERSION "PennMUSH version 1.7.7 patchlevel 15 [06/01/2003]"
! #define SHORTVN "PennMUSH 1.7.7p15"
! #define NUMVERSION 001007007015
*** 1_7_7.447/hdrs/switches.h Mon, 28 Apr 2003 22:20:23 -0500 dunemush (pennmush/d/21_switches.h 1.2.1.6.2.7.1.3 660)
--- 1_7_7.464(w)/hdrs/switches.h Mon, 02 Jun 2003 14:20:37 -0500 dunemush (pennmush/d/21_switches.h 1.2.1.6.2.7.1.4 660)
***************
*** 45,137 ****
  #define SWITCH_FLAGS 44
  #define SWITCH_FOLDERS 45
  #define SWITCH_FORWARD 46
! #define SWITCH_FSTATS 47
! #define SWITCH_FULL 48
! #define SWITCH_FUNCTIONS 49
! #define SWITCH_FWD 50
! #define SWITCH_GAG 51
! #define SWITCH_GLOBALS 52
! #define SWITCH_HEADER 53
! #define SWITCH_HERE 54
! #define SWITCH_HIDE 55
! #define SWITCH_ILIST 56
! #define SWITCH_INVENTORY 57
! #define SWITCH_IPRINT 58
! #define SWITCH_JOIN 59
! #define SWITCH_LIST 60
! #define SWITCH_LOWERCASE 61
! #define SWITCH_ME 62
! #define SWITCH_MEMBERS 63
! #define SWITCH_MOD 64
! #define SWITCH_MORTAL 65
! #define SWITCH_MOTD 66
! #define SWITCH_MUTE 67
! #define SWITCH_NAME 68
! #define SWITCH_NO 69
! #define SWITCH_NOEVAL 70
! #define SWITCH_NOFLAGCOPY 71
! #define SWITCH_NOISY 72
! #define SWITCH_NOSIG 73
! #define SWITCH_NOSPACE 74
! #define SWITCH_NOTIFY 75
! #define SWITCH_NUKE 76
! #define SWITCH_OFF 77
! #define SWITCH_ON 78
! #define SWITCH_OUTSIDE 79
! #define SWITCH_OVERRIDE 80
! #define SWITCH_PAGING 81
! #define SWITCH_PANIC 82
! #define SWITCH_PARANOID 83
! #define SWITCH_PLAYERS 84
! #define SWITCH_PORT 85
! #define SWITCH_PRESERVE 86
! #define SWITCH_PRINT 87
! #define SWITCH_PRIVS 88
! #define SWITCH_PURGE 89
! #define SWITCH_QUICK 90
! #define SWITCH_QUIET 91
! #define SWITCH_READ 92
! #define SWITCH_REBOOT 93
! #define SWITCH_RECALL 94
! #define SWITCH_REGIONS 95
! #define SWITCH_REGISTER 96
! #define SWITCH_REMOVE 97
! #define SWITCH_RENAME 98
! #define SWITCH_RESTORE 99
! #define SWITCH_RESTRICT 100
! #define SWITCH_RETROACTIVE 101
! #define SWITCH_ROOM 102
! #define SWITCH_ROOMS 103
! #define SWITCH_SEE 104
! #define SWITCH_SEEFLAG 105
! #define SWITCH_SELF 106
! #define SWITCH_SEND 107
! #define SWITCH_SET 108
! #define SWITCH_SILENT 109
! #define SWITCH_SKIPDEFAULTS 110
! #define SWITCH_SPEAK 111
! #define SWITCH_STATS 112
! #define SWITCH_SUMMARY 113
! #define SWITCH_TABLES 114
! #define SWITCH_TAG 115
! #define SWITCH_TELEPORT 116
! #define SWITCH_TF 117
! #define SWITCH_THINGS 118
! #define SWITCH_TITLE 119
! #define SWITCH_TRACE 120
! #define SWITCH_UNCLEAR 121
! #define SWITCH_UNFOLDER 122
! #define SWITCH_UNGAG 123
! #define SWITCH_UNHIDE 124
! #define SWITCH_UNMUTE 125
! #define SWITCH_UNTAG 126
! #define SWITCH_UNTIL 127
! #define SWITCH_URGENT 128
! #define SWITCH_USEFLAG 129
! #define SWITCH_WHAT 130
! #define SWITCH_WHO 131
! #define SWITCH_WIPE 132
! #define SWITCH_WIZ 133
! #define SWITCH_WIZARD 134
! #define SWITCH_YES 135
! #define SWITCH_ZONE 136
--- 45,138 ----
  #define SWITCH_FLAGS 44
  #define SWITCH_FOLDERS 45
  #define SWITCH_FORWARD 46
! #define SWITCH_FREESPACE 47
! #define SWITCH_FSTATS 48
! #define SWITCH_FULL 49
! #define SWITCH_FUNCTIONS 50
! #define SWITCH_FWD 51
! #define SWITCH_GAG 52
! #define SWITCH_GLOBALS 53
! #define SWITCH_HEADER 54
! #define SWITCH_HERE 55
! #define SWITCH_HIDE 56
! #define SWITCH_ILIST 57
! #define SWITCH_INVENTORY 58
! #define SWITCH_IPRINT 59
! #define SWITCH_JOIN 60
! #define SWITCH_LIST 61
! #define SWITCH_LOWERCASE 62
! #define SWITCH_ME 63
! #define SWITCH_MEMBERS 64
! #define SWITCH_MOD 65
! #define SWITCH_MORTAL 66
! #define SWITCH_MOTD 67
! #define SWITCH_MUTE 68
! #define SWITCH_NAME 69
! #define SWITCH_NO 70
! #define SWITCH_NOEVAL 71
! #define SWITCH_NOFLAGCOPY 72
! #define SWITCH_NOISY 73
! #define SWITCH_NOSIG 74
! #define SWITCH_NOSPACE 75
! #define SWITCH_NOTIFY 76
! #define SWITCH_NUKE 77
! #define SWITCH_OFF 78
! #define SWITCH_ON 79
! #define SWITCH_OUTSIDE 80
! #define SWITCH_OVERRIDE 81
! #define SWITCH_PAGING 82
! #define SWITCH_PANIC 83
! #define SWITCH_PARANOID 84
! #define SWITCH_PLAYERS 85
! #define SWITCH_PORT 86
! #define SWITCH_PRESERVE 87
! #define SWITCH_PRINT 88
! #define SWITCH_PRIVS 89
! #define SWITCH_PURGE 90
! #define SWITCH_QUICK 91
! #define SWITCH_QUIET 92
! #define SWITCH_READ 93
! #define SWITCH_REBOOT 94
! #define SWITCH_RECALL 95
! #define SWITCH_REGIONS 96
! #define SWITCH_REGISTER 97
! #define SWITCH_REMOVE 98
! #define SWITCH_RENAME 99
! #define SWITCH_RESTORE 100
! #define SWITCH_RESTRICT 101
! #define SWITCH_RETROACTIVE 102
! #define SWITCH_ROOM 103
! #define SWITCH_ROOMS 104
! #define SWITCH_SEE 105
! #define SWITCH_SEEFLAG 106
! #define SWITCH_SELF 107
! #define SWITCH_SEND 108
! #define SWITCH_SET 109
! #define SWITCH_SILENT 110
! #define SWITCH_SKIPDEFAULTS 111
! #define SWITCH_SPEAK 112
! #define SWITCH_STATS 113
! #define SWITCH_SUMMARY 114
! #define SWITCH_TABLES 115
! #define SWITCH_TAG 116
! #define SWITCH_TELEPORT 117
! #define SWITCH_TF 118
! #define SWITCH_THINGS 119
! #define SWITCH_TITLE 120
! #define SWITCH_TRACE 121
! #define SWITCH_UNCLEAR 122
! #define SWITCH_UNFOLDER 123
! #define SWITCH_UNGAG 124
! #define SWITCH_UNHIDE 125
! #define SWITCH_UNMUTE 126
! #define SWITCH_UNTAG 127
! #define SWITCH_UNTIL 128
! #define SWITCH_URGENT 129
! #define SWITCH_USEFLAG 130
! #define SWITCH_WHAT 131
! #define SWITCH_WHO 132
! #define SWITCH_WIPE 133
! #define SWITCH_WIZ 134
! #define SWITCH_WIZARD 135
! #define SWITCH_YES 136
! #define SWITCH_ZONE 137
*** 1_7_7.447/hdrs/attrib.h Thu, 01 May 2003 21:17:12 -0500 dunemush (pennmush/d/25_attrib.h 1.4.1.1.1.1.1.2.1.1.1.1.1.2.1.2.1.1.1.2.1.1.2.3.1.5 660)
--- 1_7_7.464(w)/hdrs/attrib.h Mon, 02 Jun 2003 14:20:31 -0500 dunemush (pennmush/d/25_attrib.h 1.4.1.1.1.1.1.2.1.1.1.1.1.2.1.2.1.1.1.2.1.1.2.3.1.6 660)
***************
*** 55,62 ****
  extern void do_atrchown(dbref player, char const *arg1, char const *arg2);
  extern int string_to_atrflag(dbref player, const char *p);
  extern void init_atr_name_tree(void);
! extern unsigned char *const atr_get_compressed_data(ATTR *atr);
! extern char *const atr_value(ATTR *atr);
  extern char *safe_atr_value(ATTR *atr);
  extern void atr_migrate(int amount);
  
--- 55,62 ----
  extern void do_atrchown(dbref player, char const *arg1, char const *arg2);
  extern int string_to_atrflag(dbref player, const char *p);
  extern void init_atr_name_tree(void);
! extern unsigned const char *atr_get_compressed_data(ATTR *atr);
! extern char *atr_value(ATTR *atr);
  extern char *safe_atr_value(ATTR *atr);
  extern void atr_migrate(int amount);
  
*** 1_7_7.447/src/mysocket.c Thu, 24 Apr 2003 09:36:42 -0500 dunemush (pennmush/f/0_mysocket.c 1.16.1.1.1.1.1.1.1.4.1.4.1.9 660)
--- 1_7_7.464(w)/src/mysocket.c Mon, 02 Jun 2003 14:20:26 -0500 dunemush (pennmush/f/0_mysocket.c 1.16.1.1.1.1.1.1.1.4.1.4.1.10 660)
***************
*** 475,482 ****
   * sizeof(int) < 4.  sizeof(int) > 4 is fine; all the world's not a VAX.
   */
  
! static const char *inet_ntop4(const u_char * src, char *dst, size_t size);
! static const char *inet_ntop6(const u_char * src, char *dst, size_t size);
  
  /* char *
   * inet_ntop(af, src, dst, size)
--- 475,482 ----
   * sizeof(int) < 4.  sizeof(int) > 4 is fine; all the world's not a VAX.
   */
  
! static const char *inet_ntop4(const unsigned char *src, char *dst, size_t size);
! static const char *inet_ntop6(const unsigned char *src, char *dst, size_t size);
  
  /* char *
   * inet_ntop(af, src, dst, size)
***************
*** 508,519 ****
   *      `dst' (as a const)
   * notes:
   *      (1) uses no statics
!  *      (2) takes a u_char* not an in_addr as input
   * author:
   *      Paul Vixie, 1996.
   */
  static const char *
! inet_ntop4(const u_char * src, char *dst, size_t size)
  {
    static const char fmt[] = "%u.%u.%u.%u";
    char tmp[sizeof "255.255.255.255"];
--- 508,519 ----
   *      `dst' (as a const)
   * notes:
   *      (1) uses no statics
!  *      (2) takes a unsigned char* not an in_addr as input
   * author:
   *      Paul Vixie, 1996.
   */
  static const char *
! inet_ntop4(const unsigned char *src, char *dst, size_t size)
  {
    static const char fmt[] = "%u.%u.%u.%u";
    char tmp[sizeof "255.255.255.255"];
***************
*** 534,540 ****
   *      Paul Vixie, 1996.
   */
  static const char *
! inet_ntop6(const u_char * src, char *dst, size_t size)
  {
    /*
     * Note that int32_t and int16_t need only be "at least" large enough
--- 534,540 ----
   *      Paul Vixie, 1996.
   */
  static const char *
! inet_ntop6(const unsigned char *src, char *dst, size_t size)
  {
    /*
     * Note that int32_t and int16_t need only be "at least" large enough
***************
*** 547,553 ****
    struct {
      int base, len;
    } best, cur;
!   u_int words[IN6ADDRSZ / INT16SZ];
    int i;
  
    /*
--- 547,553 ----
    struct {
      int base, len;
    } best, cur;
!   unsigned int words[IN6ADDRSZ / INT16SZ];
    int i;
  
    /*
***************
*** 647,654 ****
   * sizeof(int) < 4.  sizeof(int) > 4 is fine; all the world's not a VAX.
   */
  
! static int inet_pton4(const char *src, u_char * dst);
! static int inet_pton6(const char *src, u_char * dst);
  
  /* int
   * inet_pton(af, src, dst)
--- 647,654 ----
   * sizeof(int) < 4.  sizeof(int) > 4 is fine; all the world's not a VAX.
   */
  
! static int inet_pton4(const char *src, unsigned char *dst);
! static int inet_pton6(const char *src, unsigned char *dst);
  
  /* int
   * inet_pton(af, src, dst)
***************
*** 687,697 ****
   *      Paul Vixie, 1996.
   */
  static int
! inet_pton4(const char *src, u_char * dst)
  {
    static const char digits[] = "0123456789";
    int saw_digit, octets, ch;
!   u_char tmp[INADDRSZ], *tp;
  
    saw_digit = 0;
    octets = 0;
--- 687,697 ----
   *      Paul Vixie, 1996.
   */
  static int
! inet_pton4(const char *src, unsigned char *dst)
  {
    static const char digits[] = "0123456789";
    int saw_digit, octets, ch;
!   unsigned char tmp[INADDRSZ], *tp;
  
    saw_digit = 0;
    octets = 0;
***************
*** 700,706 ****
      const char *pch;
  
      if ((pch = strchr(digits, ch)) != NULL) {
!       u_int new = *tp * 10 + (pch - digits);
  
        if (new > 255)
  	return (0);
--- 700,706 ----
      const char *pch;
  
      if ((pch = strchr(digits, ch)) != NULL) {
!       unsigned int new = *tp * 10 + (pch - digits);
  
        if (new > 255)
  	return (0);
***************
*** 739,752 ****
   *      Paul Vixie, 1996.
   */
  static int
! inet_pton6(const char *src, u_char * dst)
  {
    static const char xdigits_l[] = "0123456789abcdef",
      xdigits_u[] = "0123456789ABCDEF";
!   u_char tmp[IN6ADDRSZ], *tp, *endp, *colonp;
    const char *xdigits, *curtok;
    int ch, saw_xdigit;
!   u_int val;
  
    memset((tp = tmp), 0, IN6ADDRSZ);
    endp = tp + IN6ADDRSZ;
--- 739,752 ----
   *      Paul Vixie, 1996.
   */
  static int
! inet_pton6(const char *src, unsigned char *dst)
  {
    static const char xdigits_l[] = "0123456789abcdef",
      xdigits_u[] = "0123456789ABCDEF";
!   unsigned char tmp[IN6ADDRSZ], *tp, *endp, *colonp;
    const char *xdigits, *curtok;
    int ch, saw_xdigit;
!   unsigned int val;
  
    memset((tp = tmp), 0, IN6ADDRSZ);
    endp = tp + IN6ADDRSZ;
***************
*** 781,788 ****
        }
        if (tp + INT16SZ > endp)
  	return (0);
!       *tp++ = (u_char) (val >> 8) & 0xff;
!       *tp++ = (u_char) val & 0xff;
        saw_xdigit = 0;
        val = 0;
        continue;
--- 781,788 ----
        }
        if (tp + INT16SZ > endp)
  	return (0);
!       *tp++ = (unsigned char) (val >> 8) & 0xff;
!       *tp++ = (unsigned char) val & 0xff;
        saw_xdigit = 0;
        val = 0;
        continue;
***************
*** 797,804 ****
    if (saw_xdigit) {
      if (tp + INT16SZ > endp)
        return (0);
!     *tp++ = (u_char) (val >> 8) & 0xff;
!     *tp++ = (u_char) val & 0xff;
    }
    if (colonp != NULL) {
      /*
--- 797,804 ----
    if (saw_xdigit) {
      if (tp + INT16SZ > endp)
        return (0);
!     *tp++ = (unsigned char) (val >> 8) & 0xff;
!     *tp++ = (unsigned char) val & 0xff;
    }
    if (colonp != NULL) {
      /*
*** 1_7_7.447/win32/funs.h Thu, 17 Apr 2003 09:53:35 -0500 dunemush (pennmush/f/12_funs.h 1.11.1.9.2.8.2.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.8.1.3.1.7.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.7 660)
--- 1_7_7.464(w)/win32/funs.h Mon, 02 Jun 2003 13:33:13 -0500 dunemush (pennmush/f/12_funs.h 1.11.1.9.2.8.2.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.8.1.3.1.7.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3 660)
***************
*** 319,322 ****
  FUNCTION_PROTO(fun_zemit);
  FUNCTION_PROTO(fun_zfun);
  FUNCTION_PROTO(fun_zone);
- FUNCTION_PROTO(local_fun_silly);
--- 319,321 ----
*** 1_7_7.447/game/txt/hlp/pennvOLD.hlp Fri, 18 Apr 2003 21:18:45 -0500 dunemush (pennmush/g/30_pennvOLD.h 1.1.1.1.1.2 660)
--- 1_7_7.464(w)/game/txt/hlp/pennvOLD.hlp Mon, 02 Jun 2003 14:20:32 -0500 dunemush (pennmush/g/30_pennvOLD.h 1.1.1.1.1.1.1.2 660)
***************
*** 4417,4424 ****
  For information on a specific patchlevel of one of the versions listed,
  type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'
  
! 1.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
! 1.7.6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
  1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
  1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
         19, 20
--- 4417,4424 ----
  For information on a specific patchlevel of one of the versions listed,
  type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'
  
! 1.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
! 1.7.6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
  1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
  1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
         19, 20
*** 1_7_7.447/game/txt/hlp/pennv176.hlp Tue, 13 May 2003 12:53:40 -0500 dunemush (pennmush/g/33_pennv176.h 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2 660)
--- 1_7_7.464(w)/game/txt/hlp/pennv176.hlp Mon, 02 Jun 2003 14:20:31 -0500 dunemush (pennmush/g/33_pennv176.h 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.3 660)
***************
*** 1,3 ****
--- 1,18 ----
+ & 1.7.6p11
+ Version 1.7.6 patchlevel 11                     June 1, 2003
+ 
+ Minor changes:
+    * The restart script now insures that GAMEDIR is a real directory
+      and CONF_FILE exists therein before proceeding. Suggested by
+      Philip Mak.
+    * Attribute flag setting messages are more verbose. Suggested by
+      Mike Griffiths
+    * See_All players may use the ports() function. Suggested by 
+      Mike Griffiths.
+ Fixes:
+    * Wizards can no longer @chzone God. Report by Kevin at M*U*S*H.
+    * Help fixes by Mike Griffiths.
+ 
  & 1.7.6p10
  Version 1.7.6 patchlevel 10                     May 13, 2003
  
*** 1_7_7.447/game/txt/hlp/pennv177.hlp Thu, 22 May 2003 13:40:04 -0500 dunemush (pennmush/g/34_pennv177.h 1.54 660)
--- 1_7_7.464(w)/game/txt/hlp/pennv177.hlp Mon, 02 Jun 2003 14:20:31 -0500 dunemush (pennmush/g/34_pennv177.h 1.64 660)
***************
*** 1,4 ****
! & 1.7.7p14
  & changes
  This is a list of changes in this patchlevel which are probably of
  interest to players. More information about new commands and functions
--- 1,4 ----
! & 1.7.7p15
  & changes
  This is a list of changes in this patchlevel which are probably of
  interest to players. More information about new commands and functions
***************
*** 11,16 ****
--- 11,40 ----
  A list of the patchlevels associated with each release can
  be read in 'help patchlevels'.
  
+ Version 1.7.7 patchlevel 15                     June 1, 2003
+ 
+ Fixes:
+   * Problem with checking command flag masks when the number of
+     flags was an even multiple of 8. Reported by Nymeria and 
+     Mordie at M*U*S*H.
+   * Tweak to improve efficiency of ancestor checking code and delint
+     warning reported by Cheetah at M*U*S*H.
+   * SESSION output no longer misaligned with 5-digit dbrefs.
+     Reported by Cheetah at M*U*S*H. [TAP].
+   * Fixes from 1.7.6p11.
+   * game/txt/index-files.pl now uses locale information in the
+     environment to, e.g., correctly lowercase accented characters.
+     Report by Krad at M*U*S*H.
+   * Modified several Makefile.SH targets to prevent Javelin from
+     releasing patches that don't have the autogenerated files 
+     up-to-date for Windows folks.
+   * Removed some dependence on typedefs that may or may not be in system
+     header files. [SW]
+   * Patch compiler warnings. [SW,EEH]
+   * Help fixes by Mike Griffiths and Oriens at Alexandria.
+ 
+   
+ & 1.7.7p14
  Version 1.7.7 patchlevel 14                     May 22, 2003
  
  Major changes:
*** 1_7_7.447/src/chunk.c Wed, 28 May 2003 10:06:29 -0500 dunemush (pennmush/g/38_chunk.c 1.15 660)
--- 1_7_7.464(w)/src/chunk.c Mon, 02 Jun 2003 14:20:25 -0500 dunemush (pennmush/g/38_chunk.c 1.17 660)
***************
*** 223,229 ****
--- 223,233 ----
  #include <fcntl.h>
  #include <assert.h>
  #include <sys/types.h>
+ #ifdef WIN32
+ #include <io.h>
+ #else
  #include <unistd.h>
+ #endif
  
  #include "chunk.h"
  #include "command.h"
***************
*** 234,239 ****
--- 238,247 ----
  #include "mymalloc.h"
  #include "confmagic.h"
  
+ #ifdef WIN32
+ #pragma warning( disable : 4761)	/* disable warning re conversion */
+ #endif
+ 
  /* A whole bunch of debugging #defines. */
  /** Basic debugging stuff - are assertions checked? */
  #undef CHUNK_DEBUG
***************
*** 528,546 ****
  /** Deref scale control.
   * When the deref counts get too big, the current period is incremented
   * and all derefs are divided by 2. */
! static u_int curr_period;
  
  /*
   * Info about all regions
   */
! static u_int region_count;	/**< regions in use */
! static u_int region_array_len;	/**< length of regions array */
  static Region *regions;		/**< regions array, realloced as (rarely) needed */
  
  /*
   * regions presently in memory
   */
! static u_int cached_region_count;	/**< number of regions in cache */
  static RegionHeader *cache_head;	/**< most recently used region */
  static RegionHeader *cache_tail;	/**< least recently used region */
  
--- 536,554 ----
  /** Deref scale control.
   * When the deref counts get too big, the current period is incremented
   * and all derefs are divided by 2. */
! static u_int_32 curr_period;
  
  /*
   * Info about all regions
   */
! static u_int_32 region_count;	/**< regions in use */
! static u_int_32 region_array_len;	/**< length of regions array */
  static Region *regions;		/**< regions array, realloced as (rarely) needed */
  
  /*
   * regions presently in memory
   */
! static u_int_32 cached_region_count;	/**< number of regions in cache */
  static RegionHeader *cache_head;	/**< most recently used region */
  static RegionHeader *cache_tail;	/**< least recently used region */
  
***************
*** 580,586 ****
  static chunk_reference_t **m_references; /**< The passed-in references array. */
  static u_int_16 *m_length;	/**< The lengths of the chunks to be moved. */
  static u_int_16 *m_unhappiness;	/**< The unhappiness of the chunks. */
! static u_char *m_derefs;	/**< The dereferences for the chunks. */
  static int m_limit;		/**< The number of migrates allowed. */
  
  
--- 588,594 ----
  static chunk_reference_t **m_references; /**< The passed-in references array. */
  static u_int_16 *m_length;	/**< The lengths of the chunks to be moved. */
  static u_int_16 *m_unhappiness;	/**< The unhappiness of the chunks. */
! static unsigned char *m_derefs;	/**< The dereferences for the chunks. */
  static int m_limit;		/**< The number of migrates allowed. */
  
  
***************
*** 1505,1511 ****
    int j, k;
    chunk_reference_t *t_r;
    u_int_16 t_l, t_u;
!   u_char t_d;
  
    for (j = 1; j < m_count; j++) {
      t_r = m_references[j];
--- 1513,1519 ----
    int j, k;
    chunk_reference_t *t_r;
    u_int_16 t_l, t_u;
!   unsigned char t_d;
  
    for (j = 1; j < m_count; j++) {
      t_r = m_references[j];
***************
*** 2017,2023 ****
      if (GoodObject(player)) \
        notify(player, s); \
      else \
!       do_rawlog(LT_TRACE, s); \
    } while (0)
  
  /** Display the stats summary page.
--- 2025,2031 ----
      if (GoodObject(player)) \
        notify(player, s); \
      else \
!       do_rawlog(LT_TRACE, "%s", s); \
    } while (0)
  
  /** Display the stats summary page.
***************
*** 2087,2093 ****
   * \param legend the legend for the histogram.
   */
  static void
! chunk_histogram(dbref player, int *histogram, char const *legend)
  {
    const char *s;
    int j, k, max, pen, ante;
--- 2095,2101 ----
   * \param legend the legend for the histogram.
   */
  static void
! chunk_histogram(dbref player, int const *histogram, char const *legend)
  {
    const char *s;
    int j, k, max, pen, ante;
***************
*** 2145,2151 ****
  	memcpy(buffer[ante] + j + 1, num, strlen(num));
  	pen = j + strlen(num) + 1;
        } else {
! 	if (j - strlen(num) < pen)
  	  ante = 18;
  	else
  	  ante = 19;
--- 2153,2159 ----
  	memcpy(buffer[ante] + j + 1, num, strlen(num));
  	pen = j + strlen(num) + 1;
        } else {
! 	if (j - (int) strlen(num) < pen)
  	  ante = 18;
  	else
  	  ante = 19;
***************
*** 2169,2175 ****
  /** Compile a histogram for the region dereferences.
   * \return histogram data for the regions.
   */
! static int *const
  chunk_regionhist(void)
  {
    static int histogram[CHUNK_DEREF_MAX + 1];
--- 2177,2183 ----
  /** Compile a histogram for the region dereferences.
   * \return histogram data for the regions.
   */
! static int const *
  chunk_regionhist(void)
  {
    static int histogram[CHUNK_DEREF_MAX + 1];
***************
*** 2186,2192 ****
  /** Compile a histogram for the region free space.
   * \return histogram data for the free space.
   */
! static int *const
  chunk_freehist(void)
  {
    static int histogram[CHUNK_DEREF_MAX + 1];
--- 2194,2200 ----
  /** Compile a histogram for the region free space.
   * \return histogram data for the free space.
   */
! static int const *
  chunk_freehist(void)
  {
    static int histogram[CHUNK_DEREF_MAX + 1];
Index: 1_7_7.447/Makefile.SH
*** 1_7_7.447/Makefile.SH Wed, 26 Mar 2003 09:47:20 -0600 dunemush (pennmush/d/30_Makefile.S 1.14.1.1.1.7.1.1.1.2 700)
--- 1_7_7.464(w)/Makefile.SH Mon, 02 Jun 2003 14:20:20 -0500 dunemush (pennmush/d/30_Makefile.S 1.14.1.1.1.7.1.1.1.4 700)
***************
*** 56,62 ****
  # Where to install with 'make globalinstall'
  GLOBAL_INSTALL=/usr/libexec/pennmush
  
! all: config.h options.h hdrs/cmds.h hdrs/funs.h hdrs/switches.h src/switchinc.c game/mush.cnf
  	@echo "Making all in src."
  	(cd src; make all "CC=$(CC)" "CCFLAGS=$(CCFLAGS)" \
  	"LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" "MAKE=$(MAKE)" \
--- 56,62 ----
  # Where to install with 'make globalinstall'
  GLOBAL_INSTALL=/usr/libexec/pennmush
  
! all: config.h options.h autogen game/mush.cnf
  	@echo "Making all in src."
  	(cd src; make all "CC=$(CC)" "CCFLAGS=$(CCFLAGS)" \
  	"LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" "MAKE=$(MAKE)" \
***************
*** 73,86 ****
  	@echo "You must cp options.h.dist to options.h and edit it."
  	exit 1
  
  hdrs/cmds.h: src/cmds.c src/command.c src/cque.c src/help.c src/set.c Patchlevel
  	(cd utils; sh mkcmds.sh commands)
  
  hdrs/switches.h: src/SWITCHES Patchlevel
  	(cd utils; sh mkcmds.sh switches)
  
! #src/switchinc.c: hdrs/switches.h
! #	(cd utils; sh mkcmds.sh switches)
  
  hdrs/funs.h: src/fun*.c src/bsd.c src/conf.c src/extmail.c src/help.c src/wiz.c Patchlevel
  	(cd utils; sh mkcmds.sh functions)
--- 73,88 ----
  	@echo "You must cp options.h.dist to options.h and edit it."
  	exit 1
  
+ autogen: hdrs/cmds.h hdrs/funs.h hdrs/switches.h
+ 
  hdrs/cmds.h: src/cmds.c src/command.c src/cque.c src/help.c src/set.c Patchlevel
  	(cd utils; sh mkcmds.sh commands)
  
  hdrs/switches.h: src/SWITCHES Patchlevel
  	(cd utils; sh mkcmds.sh switches)
  
! src/switchinc.c: src/SWITCHES Patchlevel
! 	(cd utils; sh mkcmds.sh switches)
  
  hdrs/funs.h: src/fun*.c src/bsd.c src/conf.c src/extmail.c src/help.c src/wiz.c Patchlevel
  	(cd utils; sh mkcmds.sh functions)
***************
*** 120,127 ****
  	"LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" )
  
  versions: CHANGES*
! 	-rm -rf CHANGES*~ CHANGES*bak
! 	utils/mkvershlp.pl game/txt/hlp CHANGES*
  
  safety:
  	$(CP) src/*.c /var/pennmush-bak/src
--- 122,129 ----
  	"LDFLAGS=$(LDFLAGS)" "CLIBS=$(CLIBS)" )
  
  versions: CHANGES*
! 	- at rm -rf CHANGES*~ CHANGES*bak
! 	@utils/mkvershlp.pl game/txt/hlp CHANGES*
  
  safety:
  	$(CP) src/*.c /var/pennmush-bak/src
***************
*** 134,141 ****
  
  # REQUIRES GNU INDENT! DON'T INDENT WITH ANYTHING ELSE!
  indent:
! 	(cd utils; sh mkcmds.sh)
! 	(cd src; make indent)
  
  protoize:
  	(cd src; make protoize "CCFLAGS=$(CCFLAGS)")
--- 136,142 ----
  
  # REQUIRES GNU INDENT! DON'T INDENT WITH ANYTHING ELSE!
  indent:
! 	@(cd src; make indent)
  
  protoize:
  	(cd src; make protoize "CCFLAGS=$(CCFLAGS)")
***************
*** 200,210 ****
  	  game/access.README \
  	  game/txt/* game/txt/nws/* game/txt/evt/* game/txt/hlp/* )
  
! diffs: versions
  	@make indent > /dev/null 2>&1
! 	@(cd utils; sh mkcmds.sh) > /dev/null 2>&1
  	@(prcs diff -r$(VS) -N pennmush `cat MANIFEST` | grep -v 'Index:')
  
  patch: versions
  	@make-patch-header
  	@make diffs
--- 201,216 ----
  	  game/access.README \
  	  game/txt/* game/txt/nws/* game/txt/evt/* game/txt/hlp/* )
  
! diffs:
  	@make indent > /dev/null 2>&1
! 	@make versions > /dev/null 2>&1
! 	@make touchswitches > /dev/null 2>&1
! 	@make autogen > /dev/null 2>&1
  	@(prcs diff -r$(VS) -N pennmush `cat MANIFEST` | grep -v 'Index:')
  
+ checkin: versions autogen
+ 	@prcs checkin
+ 
  patch: versions
  	@make-patch-header
  	@make diffs
***************
*** 221,228 ****
  dist.tar.gz: distclean dist.tar
  	gzip /tmp/dist.tar
  
! dist.tar: distclean versions
! 	(cd utils; sh mkcmds.sh)
  	makedist -c pennmush
  	tar -cvf /tmp/dist.tar pennmush
  	-pgp -sb /tmp/dist.tar
--- 227,236 ----
  dist.tar.gz: distclean dist.tar
  	gzip /tmp/dist.tar
  
! touchswitches:
! 	@touch src/SWITCHES
! 
! dist.tar: indent distclean versions touchswitches autogen
  	makedist -c pennmush
  	tar -cvf /tmp/dist.tar pennmush
  	-pgp -sb /tmp/dist.tar


More information about the Pennmush-announce mailing list