[PENNMUSH-ANNOUNCE] 1.7.7-patch01

dunemush at tala.mede.uic.edu dunemush at tala.mede.uic.edu
Wed Dec 18 04:44:58 CST 2002


This is patch01 to PennMUSH 1.7.7. After applying this patch, you will
have version 1.7.7p1

To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
	patch -p1 < 1.7.7-patch01
	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.

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

In this patch:

Minor Changes:
  * ex obj/attrib returns the attribute value even if it's veiled,
    if a specific (non-wildcard) attribute is given. Suggested by
    Nhoj@M*U*S*H.
Fixes:
  * Win32 portability fixes. [EEH]
  * Fixes from 1.7.6p2

Prereq: 1.7.7p0
*** 1_7_7.59/Patchlevel Tue, 26 Nov 2002 21:18:51 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.2 600)
--- 1_7_7.65(w)/Patchlevel Tue, 17 Dec 2002 22:43:29 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.2 600)
***************
*** 1,2 ****
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.7p0
--- 1,2 ----
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.7p1
*** 1_7_7.59/CHANGES Thu, 12 Dec 2002 21:23:20 -0600 dunemush (pennmush/g/23_CHANGES 1.19 600)
--- 1_7_7.65(w)/CHANGES Tue, 17 Dec 2002 16:00:39 -0600 dunemush (pennmush/g/23_CHANGES 1.21 600)
***************
*** 18,23 ****
--- 18,33 ----
  
  ==========================================================================
  
+ Version 1.7.7 patchlevel 1                      December 17, 2002
+ 
+ Minor Changes:
+   * ex obj/attrib returns the attribute value even if it's veiled,
+     if a specific (non-wildcard) attribute is given. Suggested by
+     Nhoj@M*U*S*H.
+ Fixes:
+   * Win32 portability fixes. [EEH]
+   * Fixes from 1.7.6p2
+ 
  Version 1.7.7 patchlevel 0                      December 8, 2002
  
  Major Changes:
*** 1_7_7.59/game/txt/hlp/pennvers.hlp Thu, 12 Dec 2002 21:23:20 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.5.1.4.1.1.1.1.1.1.1.1.1.5.1.1.1.3.1.1.1.3.1.1.1.54.1.10.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.3 600)
--- 1_7_7.65(w)/game/txt/hlp/pennvers.hlp Tue, 17 Dec 2002 22:42:53 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.5.1.4.1.1.1.1.1.1.1.1.1.5.1.1.1.3.1.1.1.3.1.1.1.54.1.10.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.7.1.1.1.1 600)
***************
*** 1,5 ****
  & changes
! & 1.7.7p0
  This is a list of changes in this patchlevel which are probably of
  interest to players. More information about new commands and functions
  can probably be gotten via 'help <name of whatever>'. 'help credits'
--- 1,5 ----
  & changes
! & 1.7.7p1
  This is a list of changes in this patchlevel which are probably of
  interest to players. More information about new commands and functions
  can probably be gotten via 'help <name of whatever>'. 'help credits'
***************
*** 11,16 ****
--- 11,27 ----
  A list of the patchlevels associated with each release can
  be read in 'help patchlevels'.
  
+ Version 1.7.7 patchlevel 1                      December 17, 2002
+ 
+ Minor Changes:
+   * ex obj/attrib returns the attribute value even if it's veiled,
+     if a specific (non-wildcard) attribute is given. Suggested by
+     Nhoj@M*U*S*H.
+ Fixes:
+   * Win32 portability fixes. [EEH]
+   * Fixes from 1.7.6p2
+ 
+ & 1.7.7p0
  Version 1.7.7 patchlevel 0                      December 8, 2002
  
  Major Changes:
***************
*** 1251,1256 ****
--- 1262,1291 ----
    * Indentation fixes [SW]
    * Fixes up to 1.7.4p12 merged in.
  
+ & 1.7.6p2
+ Version 1.7.6 patchlevel 2                      December 17, 2002
+ 
+ Minor changes:
+    * An invalid range argument to @search/lsearch is now coerced
+      to be the lowest or highest dbref, as appropriate. The search
+      range is also now inclusive. And lsearch(<player>) works.
+      Suggested by Philip Mak.
+    * mushcnf.dst now includes a default value for call_limit.
+      Suggested by Philip Mak.
+    * Testing for whether the mush is already running in the
+      restart script has been improved by Philip Mak.
+ Internationalization:
+    * Polish translation files (partial) are now being distributed.
+ Fixes:
+    * Fix to win32 warnings. [EEH]
+    * Under Win32, a failed accept() call in bsd.c would not be
+      correctly handled. Report by BladedThoth@M*U*S*H.
+    * Help fixes by Luigi@8bitMUSH, Kyieren@M*U*S*H, Intrevis@M*U*S*H.
+    * @map crash bug repoted by Philip Mak, fixed by Walker@M*U*S*H.
+    * Modifiying locks now updates the object's modification time.
+      Reported by Philip Mak.
+ 
+ 
  & 1.7.6p1
  Version 1.7.6 patchlevel 1                      November 26, 2002
  
***************
*** 5791,5798 ****
  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.7.6: 0, 1
  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
--- 5826,5833 ----
  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
! 1.7.6: 0, 1, 2
  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.59/game/txt/hlp/pennfunc.hlp Mon, 02 Dec 2002 18:14:37 -0600 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.2 600)
--- 1_7_7.65(w)/game/txt/hlp/pennfunc.hlp Tue, 17 Dec 2002 00:17:01 -0600 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.4 600)
***************
*** 1898,1905 ****
  & LSEARCH()
  & SEARCH()
  & LSEARCHR()
!   lsearch(<player>, <class>, <restriction>[, <low>[, <high>]])
!   lsearchr(<player>, <class>, <restriction>[, <low>[, <high>]])
   
    This function is similar to the @search command, except it returns
    just a list of dbref numbers. It is computationally expensive, and
--- 1898,1905 ----
  & LSEARCH()
  & SEARCH()
  & LSEARCHR()
!   lsearch(<player>[, <class>[, <restriction>[, <low>[, <high>]]]])
!   lsearchr(<player>[, <class>[, <restriction>[, <low>[, <high>]]]])
   
    This function is similar to the @search command, except it returns
    just a list of dbref numbers. It is computationally expensive, and
***************
*** 2530,2536 ****
  & RAND()
    rand(<num>)
  
!   Rand returns an integer between 0 and num-1.
    If called with an invalid argument, rand() returns an error message
    beginning with #-1.
  & REGEDIT()
--- 2530,2536 ----
  & RAND()
    rand(<num>)
  
!   Rand returns an integer between 0 and num-1, inclusive.
    If called with an invalid argument, rand() returns an error message
    beginning with #-1.
  & REGEDIT()
***************
*** 3409,3433 ****
    Example:
    
    > @va Object=$test *:"[ufun(testfun, v(0))]; @emit [v(0)]
!   >
!  &testfun object=[strlen(v(0))] [ucstr(v(0))]
    > test string
!   Foo says, "6 STRING"
    string
    
!   See "help UFUN3" for more.
!  
! & U3
! & UFUN3
!   A user-defined function may be as complex as you want it to be.
    If the evaluation order doesn't quite seem right, adding escapes
    or breaking up the expression will probably help.
      
-   Excessive recursion in either a UFUN() or ZFUN() will cause it to
-   return "#-1 EXCESSIVE RECURSION ERROR", and sets the object HALT.
-   An object which is HALT may not evaluate either UFUN() or ZFUN();
-   those functions will then return "#-1 OBJECT HALTED".
-   
  & UCSTR()
    ucstr(<string>)
  
--- 3409,3425 ----
    Example:
    
    > @va Object=$test *:"[ufun(testfun, v(0))]; @emit [v(0)]
!   > &testfun object=[strlen(v(0))] [ucstr(v(0))]
    > test string
!   Object says, "6 STRING"
    string
    
!   A user-defined function may be as complex as you want it to be,
!   subject to limits on recursion depth, number of function invocations,
!   or cpu time that may be configured in the MUSH.
    If the evaluation order doesn't quite seem right, adding escapes
    or breaking up the expression will probably help.
      
  & UCSTR()
    ucstr(<string>)
  
*** 1_7_7.59/game/txt/hlp/penncmd.hlp Mon, 09 Dec 2002 14:24:35 -0600 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.10.1.1.1.2 600)
--- 1_7_7.65(w)/game/txt/hlp/penncmd.hlp Tue, 17 Dec 2002 15:56:27 -0600 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.10.1.1.1.1.1.2 600)
***************
*** 820,827 ****
  
  See also: SAFE, GOING, DESTROY_OK  
  & @dig
!   @dig <room name> [= <exit name>;<exit alias>*,<exit name>;<exit alias>*]
!   @dig/teleport
    
    This command is used to create a new room, possibly with exits linking
    it to the room you are standing in. This command normally costs 10 pennies,
--- 820,826 ----
  
  See also: SAFE, GOING, DESTROY_OK  
  & @dig
!   @dig[/teleport] <room name>[=<exit name>;<alias>*,<exit name>;<alias>*]
    
    This command is used to create a new room, possibly with exits linking
    it to the room you are standing in. This command normally costs 10 pennies,
***************
*** 985,992 ****
    (which is a good thing for security).
  & @emit
  & \  
!   @emit[/room][/silent] <message> 
!   @emit[/noeval] <message> 
    \<message>
  
    This sends <message> to every person in the current room. However, no
--- 984,990 ----
    (which is a good thing for security).
  & @emit
  & \  
!   @emit[/room][/silent][/noeval] [<message>]
    \<message>
  
    This sends <message> to every person in the current room. However, no
*** 1_7_7.59/game/restart Fri, 17 May 2002 14:49:25 -0500 dunemush (pennmush/39_restart 1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.2 700)
--- 1_7_7.65(w)/game/restart Tue, 17 Dec 2002 00:17:03 -0600 dunemush (pennmush/39_restart 1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.2.2.1 700)
***************
*** 55,61 ****
  
  # Prevent double-starting things. You may need to provide a pathname for
  #  some of the commands. System V flavors need "ps -f" instead of "ps uwx".
! mush=`ps uwx | grep $CONF_FILE | grep -v grep | wc -l`
  
  
  if [ $mush -gt 0 ]; then
--- 55,61 ----
  
  # Prevent double-starting things. You may need to provide a pathname for
  #  some of the commands. System V flavors need "ps -f" instead of "ps uwx".
! mush=`ps uwx | grep " $CONF_FILE" | grep -v grep | wc -l`
  
  
  if [ $mush -gt 0 ]; then
*** 1_7_7.59/game/mushcnf.dst Sun, 08 Dec 2002 22:36:08 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1.1.8.1.2 600)
--- 1_7_7.65(w)/game/mushcnf.dst Tue, 17 Dec 2002 16:00:54 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1.1.8.1.1.1.2 600)
***************
*** 161,171 ****
  # the maximum number of times we're allowed to recursively call the parser
  # for a single expression. This limits how much the stack size can increase,
  # which could be useful if your host limits your stack (it will prevent
! # a crash).
  # But remember that you need to recurse for every [ or { or function call
  # in your code, and those add up quickly. So this must often be set quite
  # high (e.g. 18000), alas. Setting it to '0' means unlimited.
! call_limit 0
  
  # The maximum number of milliseconds of CPU time that a single queue entry
  # is allowed to use before aborting. Setting this to a low number will
--- 161,172 ----
  # the maximum number of times we're allowed to recursively call the parser
  # for a single expression. This limits how much the stack size can increase,
  # which could be useful if your host limits your stack (it will prevent
! # a crash). The higher your allowed stack size limit, the larger the
! # mush process can grow, and the higher this can be set.
  # But remember that you need to recurse for every [ or { or function call
  # in your code, and those add up quickly. So this must often be set quite
  # high (e.g. 18000), alas. Setting it to '0' means unlimited.
! call_limit 10000
  
  # The maximum number of milliseconds of CPU time that a single queue entry
  # is allowed to use before aborting. Setting this to a low number will
*** 1_7_7.59/src/wiz.c Fri, 06 Dec 2002 21:20:59 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.2 660)
--- 1_7_7.65(w)/src/wiz.c Tue, 17 Dec 2002 22:44:12 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1.1.3 660)
***************
*** 1304,1310 ****
    object_flag_type restrict_flags = 0;
    dbref restrict_obj = NOTHING, restrict_owner = ANY_OWNER;
    int is_wiz;
!   dbref low = 0, high = db_top;
  
    is_wiz = Search_All(player) || See_All(player);
  
--- 1304,1310 ----
    object_flag_type restrict_flags = 0;
    dbref restrict_obj = NOTHING, restrict_owner = ANY_OWNER;
    int is_wiz;
!   dbref low = 0, high = db_top - 1;
  
    is_wiz = Search_All(player) || See_All(player);
  
***************
*** 1314,1333 ****
      if (start[0] == '#')
        offset = 1;
      low = parse_integer(start + offset);
!     if (!GoodObject(low)) {
!       notify(player, T("Invalid range argument."));
!       return -1;
!     }
    }
    if (stop && *stop) {
      size_t offset = 0;
      if (stop[0] == '#')
        offset = 1;
      high = parse_integer(stop + offset);
!     if (!GoodObject(high)) {
!       notify(player, T("Invalid range argument."));
!       return -1;
!     }
    }
  
    /* set limits on who we search */
--- 1314,1329 ----
      if (start[0] == '#')
        offset = 1;
      low = parse_integer(start + offset);
!     if (!GoodObject(low))
!       low = 0;
    }
    if (stop && *stop) {
      size_t offset = 0;
      if (stop[0] == '#')
        offset = 1;
      high = parse_integer(stop + offset);
!     if (!GoodObject(high))
!       high = db_top - 1;
    }
  
    /* set limits on who we search */
***************
*** 1454,1460 ****
    switch (sclass) {
    case S_OWNER:		/* @search someone */
    case S_TYPE:			/* @search type=whatever */
!     for (n = low; n < high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && (restrict_type == NOTYPE || Typeof(n) == restrict_type)) {
  	if (nresults >= result_size) {
--- 1450,1456 ----
    switch (sclass) {
    case S_OWNER:		/* @search someone */
    case S_TYPE:			/* @search type=whatever */
!     for (n = low; n <= high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && (restrict_type == NOTYPE || Typeof(n) == restrict_type)) {
  	if (nresults >= result_size) {
***************
*** 1471,1477 ****
      }
      break;
    case S_ZONE:			/* @search ZONE=#1234 */
!     for (n = low; n < high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && Zone(n) == restrict_obj) {
  	if (nresults >= result_size) {
--- 1467,1473 ----
      }
      break;
    case S_ZONE:			/* @search ZONE=#1234 */
!     for (n = low; n <= high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && Zone(n) == restrict_obj) {
  	if (nresults >= result_size) {
***************
*** 1489,1495 ****
      }
      break;
    case S_PARENT:		/* @search parent=#1234 */
!     for (n = low; n < high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && Parent(n) == restrict_obj) {
  	if (nresults >= result_size) {
--- 1485,1491 ----
      }
      break;
    case S_PARENT:		/* @search parent=#1234 */
!     for (n = low; n <= high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && Parent(n) == restrict_obj) {
  	if (nresults >= result_size) {
***************
*** 1507,1513 ****
      }
      break;
    case S_NAME:			/* @search (?:name|exits|objects|rooms|players|things)=name */
!     for (n = low; n < high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && (restrict_type == NOTYPE || Typeof(n) == restrict_type)
  	  && string_match(Name(n), restriction)) {
--- 1503,1509 ----
      }
      break;
    case S_NAME:			/* @search (?:name|exits|objects|rooms|players|things)=name */
!     for (n = low; n <= high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && (restrict_type == NOTYPE || Typeof(n) == restrict_type)
  	  && string_match(Name(n), restriction)) {
***************
*** 1535,1541 ****
        if (!restriction || !*restriction)
  	break;
  
!       for (n = low; n < high; n++) {
  	if (!((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	      && (restrict_type == NOTYPE || Typeof(n) == restrict_type)))
  	  continue;
--- 1531,1537 ----
        if (!restriction || !*restriction)
  	break;
  
!       for (n = low; n <= high; n++) {
  	if (!((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	      && (restrict_type == NOTYPE || Typeof(n) == restrict_type)))
  	  continue;
***************
*** 1566,1572 ****
      }
      break;
    case S_POWER:		/* @search power=see_all */
!     for (n = low; n < high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && (Powers(n) & restrict_flags) == restrict_flags) {
  	if (nresults >= result_size) {
--- 1562,1568 ----
      }
      break;
    case S_POWER:		/* @search power=see_all */
!     for (n = low; n <= high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && (Powers(n) & restrict_flags) == restrict_flags) {
  	if (nresults >= result_size) {
***************
*** 1584,1590 ****
      }
      break;
    case S_FLAG:
!     for (n = low; n < high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && (restrict_type == NOTYPE || Typeof(n) == restrict_type)
  	  && flaglist_check(player, n, restriction, 1)) {
--- 1580,1586 ----
      }
      break;
    case S_FLAG:
!     for (n = low; n <= high; n++) {
        if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner)
  	  && (restrict_type == NOTYPE || Typeof(n) == restrict_type)
  	  && flaglist_check(player, n, restriction, 1)) {
*** 1_7_7.59/src/timer.c Sat, 07 Dec 2002 16:26:26 -0600 dunemush (pennmush/b/29_timer.c 1.29.1.8 660)
--- 1_7_7.65(w)/src/timer.c Tue, 17 Dec 2002 22:44:12 -0600 dunemush (pennmush/b/29_timer.c 1.29.1.7.1.2 660)
***************
*** 214,220 ****
    }
  #elif defined(WIN32)		/* Windoze way */
    if (options.queue_entry_cpu_time > 0)
!     timer_id = SetTimer(NULL, NULL, (unsigned) options.queue_entry_cpu_time,
  			(TIMERPROC) win32_timer);
    else
      timer_set = 0;
--- 214,220 ----
    }
  #elif defined(WIN32)		/* Windoze way */
    if (options.queue_entry_cpu_time > 0)
!     timer_id = SetTimer(NULL, 0, (unsigned) options.queue_entry_cpu_time,
  			(TIMERPROC) win32_timer);
    else
      timer_set = 0;
*** 1_7_7.59/src/switchinc.c Sat, 07 Dec 2002 16:26:26 -0600 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.7 660)
--- 1_7_7.65(w)/src/switchinc.c Tue, 17 Dec 2002 22:44:12 -0600 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.2 660)
***************
*** 132,136 ****
    {"WIZARD", SWITCH_WIZARD},
    {"YES", SWITCH_YES},
    {"ZONE", SWITCH_ZONE},
! {NULL, 0}
  };
--- 132,136 ----
    {"WIZARD", SWITCH_WIZARD},
    {"YES", SWITCH_YES},
    {"ZONE", SWITCH_ZONE},
!   {NULL, 0}
  };
*** 1_7_7.59/src/strutil.c Sun, 01 Dec 2002 21:14:41 -0600 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.1.1.22 660)
--- 1_7_7.65(w)/src/strutil.c Tue, 17 Dec 2002 22:44:12 -0600 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.1.1.21.1.3 660)
***************
*** 1094,1100 ****
       * which we need).
       */
      r = ldiv(r.quot, 10);
!     *(--current) = r.rem + '0';
    } while (r.quot);
  
    /* Add the negative sign if needed. */
--- 1094,1100 ----
       * which we need).
       */
      r = ldiv(r.quot, 10);
!     *(--current) = (unsigned char) r.rem + '0';
    } while (r.quot);
  
    /* Add the negative sign if needed. */
*** 1_7_7.59/src/look.c Sat, 07 Dec 2002 16:26:26 -0600 dunemush (pennmush/c/4_look.c 1.21.1.2.1.19 660)
--- 1_7_7.65(w)/src/look.c Tue, 17 Dec 2002 22:44:11 -0600 dunemush (pennmush/c/4_look.c 1.21.1.2.1.21 660)
***************
*** 379,385 ****
  static void
  look_atrs(dbref player, dbref thing, const char *mstr, int all)
  {
!   if (all) {
      if (!atr_iter_get(player, thing, mstr, look_helper, NULL) && mstr)
        notify(player, T("No matching attributes."));
    } else {
--- 379,385 ----
  static void
  look_atrs(dbref player, dbref thing, const char *mstr, int all)
  {
!   if (all || (mstr && *mstr && !wildcard(mstr))) {
      if (!atr_iter_get(player, thing, mstr, look_helper, NULL) && mstr)
        notify(player, T("No matching attributes."));
    } else {
*** 1_7_7.59/src/lock.c Sun, 01 Dec 2002 21:14:41 -0600 dunemush (pennmush/c/6_lock.c 1.17.1.14 660)
--- 1_7_7.65(w)/src/lock.c Tue, 17 Dec 2002 22:44:11 -0600 dunemush (pennmush/c/6_lock.c 1.17.1.13.1.2 660)
***************
*** 32,37 ****
--- 32,38 ----
  #include "mushdb.h"
  #include "attrib.h"
  #include "externs.h"
+ #include "dbdefs.h"
  #include "lock.h"
  #include "match.h"
  #include "log.h"
***************
*** 497,506 ****
        if (getlock(thing, real_type) == TRUE_BOOLEXP)
  	notify_format(player, T("%s(%s) - (already) unlocked."), Name(thing),
  		      unparse_dbref(thing));
!       else if (delete_lock(player, thing, real_type))
  	notify_format(player, T("%s(%s) - unlocked."), Name(thing),
  		      unparse_dbref(thing));
!       else
  	notify(player, T("Permission denied."));
      }
    }
--- 498,508 ----
        if (getlock(thing, real_type) == TRUE_BOOLEXP)
  	notify_format(player, T("%s(%s) - (already) unlocked."), Name(thing),
  		      unparse_dbref(thing));
!       else if (delete_lock(player, thing, real_type)) {
  	notify_format(player, T("%s(%s) - unlocked."), Name(thing),
  		      unparse_dbref(thing));
! 	ModTime(thing) = mudtime;
!       } else
  	notify(player, T("Permission denied."));
      }
    }
***************
*** 555,564 ****
    } else {
      if ((real_type = check_lock_type(player, thing, type)) != NULL) {
        /* everything ok, do it */
!       if (add_lock(player, thing, real_type, key, -1))
  	notify_format(player, T("%s(%s) - locked."), Name(thing),
  		      unparse_dbref(thing));
!       else
  	notify(player, T("Permission denied."));
      }
    }
--- 557,567 ----
    } else {
      if ((real_type = check_lock_type(player, thing, type)) != NULL) {
        /* everything ok, do it */
!       if (add_lock(player, thing, real_type, key, -1)) {
  	notify_format(player, T("%s(%s) - locked."), Name(thing),
  		      unparse_dbref(thing));
! 	ModTime(thing) = mudtime;
!       } else
  	notify(player, T("Permission denied."));
      }
    }
***************
*** 638,641 ****
--- 641,645 ----
  
    notify_format(player, "%s/%s - %s.", Name(thing), L_TYPE(l),
  		unset ? "unset" : "set");
+   ModTime(thing) = mudtime;
  }
*** 1_7_7.59/src/game.c Sat, 07 Dec 2002 16:26:26 -0600 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.5 660)
--- 1_7_7.65(w)/src/game.c Tue, 17 Dec 2002 22:44:08 -0600 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.2.1.2 660)
***************
*** 1357,1373 ****
        bind_and_queue(player, cause, command, curr, placestr);
      } else {
        const char *replace[2];
!       char *ebuf;
  
        /* it's @map, add to the output list */
        if (bp != outbuf)
  	safe_chr(delim, outbuf, &bp);
        replace[0] = curr;
        replace[1] = placestr;
!       ebuf = replace_string2(standard_tokens, replace, command);
        process_expression(outbuf, &bp, (char const **) &ebuf,
  			 player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL);
!       mush_free(ebuf, "replace_string.buff");
      }
    }
  
--- 1357,1373 ----
        bind_and_queue(player, cause, command, curr, placestr);
      } else {
        const char *replace[2];
!       char *ebuf, *ebufptr;
  
        /* it's @map, add to the output list */
        if (bp != outbuf)
  	safe_chr(delim, outbuf, &bp);
        replace[0] = curr;
        replace[1] = placestr;
!       ebufptr = ebuf = replace_string2(standard_tokens, replace, command);
        process_expression(outbuf, &bp, (char const **) &ebuf,
  			 player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL);
!       mush_free(ebufptr, "replace_string.buff");
      }
    }
  
*** 1_7_7.59/src/funstr.c Mon, 02 Dec 2002 18:50:58 -0600 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.6.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.3.1.5.1.3.1.6 660)
--- 1_7_7.65(w)/src/funstr.c Tue, 17 Dec 2002 22:44:08 -0600 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.6.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.3.1.5.1.3.1.7 660)
***************
*** 4,9 ****
--- 4,10 ----
  #include <string.h>
  #include <ctype.h>
  #include <limits.h>
+ #include <locale.h>
  #include "conf.h"
  #include "ansi.h"
  #include "externs.h"
***************
*** 19,28 ****
--- 20,35 ----
  #include "lock.h"
  #include "confmagic.h"
  
+ 
  #ifdef WIN32
+ #define LC_MESSAGES 6
  #pragma warning( disable : 4761)	/* NJG: disable warning re conversion */
  #endif
  
+ #ifdef __APPLE__
+ #define LC_MESSAGES 6
+ #endif
+ 
  HASHTAB htab_tag;
  
  static int wraplen(char *str, int maxlen);
*** 1_7_7.59/src/function.c Sat, 07 Dec 2002 16:26:26 -0600 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.6.1.1.1.1.1.14.1.5 660)
--- 1_7_7.65(w)/src/function.c Tue, 17 Dec 2002 22:44:08 -0600 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.6.1.1.1.1.1.14.1.2.1.2 660)
***************
*** 297,304 ****
    {"LOCK", fun_lock, 1, 2, FN_REG},
    {"LPARENT", fun_lparent, 1, 1, FN_REG},
    {"LPLAYERS", fun_lplayers, 1, 1, FN_REG},
!   {"LSEARCH", fun_lsearch, 3, 5, FN_REG},
!   {"LSEARCHR", fun_lsearch, 3, 5, FN_REG},
    {"LSTATS", fun_lstats, 0, 1, FN_REG},
    {"LT", fun_lt, 2, 2, FN_REG},
    {"LTE", fun_lte, 2, 2, FN_REG},
--- 297,304 ----
    {"LOCK", fun_lock, 1, 2, FN_REG},
    {"LPARENT", fun_lparent, 1, 1, FN_REG},
    {"LPLAYERS", fun_lplayers, 1, 1, FN_REG},
!   {"LSEARCH", fun_lsearch, 1, 5, FN_REG},
!   {"LSEARCHR", fun_lsearch, 1, 5, FN_REG},
    {"LSTATS", fun_lstats, 0, 1, FN_REG},
    {"LT", fun_lt, 2, 2, FN_REG},
    {"LTE", fun_lte, 2, 2, FN_REG},
*** 1_7_7.59/src/conf.c Sat, 07 Dec 2002 16:26:26 -0600 dunemush (pennmush/c/31_conf.c 1.41.2.3.1.3.1.2.1.20 660)
--- 1_7_7.65(w)/src/conf.c Tue, 17 Dec 2002 22:44:07 -0600 dunemush (pennmush/c/31_conf.c 1.41.2.3.1.3.1.2.1.15.1.1.1.2 660)
***************
*** 932,937 ****
--- 932,938 ----
    options.player_name_len = 16;
    options.queue_entry_cpu_time = 1500;
    options.ascii_names = 1;
+   options.call_lim = 10000;
  }
  
  /* Limit how many files we can nest */
*** 1_7_7.59/src/comp_w.c Sun, 01 Dec 2002 21:14:41 -0600 dunemush (pennmush/c/33_comp_w.c 1.12 660)
--- 1_7_7.65(w)/src/comp_w.c Tue, 17 Dec 2002 22:44:07 -0600 dunemush (pennmush/c/33_comp_w.c 1.13 660)
***************
*** 127,133 ****
  #include "confmagic.h"
  
  #define MAXTABLE 32768
! #define MAXWORD 100
  #define COLLISION_LIMIT 20
  
  #define COMPRESS_HASH_MASK 0x7FFF	/* 32767 */
--- 127,133 ----
  #include "confmagic.h"
  
  #define MAXTABLE 32768
! #define MAXWORDS 100
  #define COLLISION_LIMIT 20
  
  #define COMPRESS_HASH_MASK 0x7FFF	/* 32767 */
***************
*** 142,148 ****
  
  /* The word we are currently compressing */
  
! static char word[MAXWORD + 2];
  static size_t wordpos = 0;
  
  /* Stats */
--- 142,148 ----
  
  /* The word we are currently compressing */
  
! static char word[MAXWORDS + 2];
  static size_t wordpos = 0;
  
  /* Stats */
***************
*** 239,245 ****
  
  /* break up input into words */
    while (*p) {
!     if (!(isdigit(*p) || isalpha(*p)) || wordpos >= MAXWORD) {
        if (wordpos) {
  	word[wordpos++] = *p & 0x7F;	/* add trailing punctuation */
  	output_previous_word();
--- 239,245 ----
  
  /* break up input into words */
    while (*p) {
!     if (!(isdigit(*p) || isalpha(*p)) || wordpos >= MAXWORDS) {
        if (wordpos) {
  	word[wordpos++] = *p & 0x7F;	/* add trailing punctuation */
  	output_previous_word();
*** 1_7_7.59/src/comp_w8.c Sun, 01 Dec 2002 21:14:41 -0600 dunemush (pennmush/f/33_comp_w8.c 1.8 660)
--- 1_7_7.65(w)/src/comp_w8.c Tue, 17 Dec 2002 22:44:07 -0600 dunemush (pennmush/f/33_comp_w8.c 1.9 660)
***************
*** 128,134 ****
  #include "confmagic.h"
  
  #define MAXTABLE 32768
! #define MAXWORD 100
  #define COLLISION_LIMIT 20
  
  #define COMPRESS_HASH_MASK 0x7FFF	/* 32767 */
--- 128,134 ----
  #include "confmagic.h"
  
  #define MAXTABLE 32768
! #define MAXWORDS 100
  #define COLLISION_LIMIT 20
  
  #define COMPRESS_HASH_MASK 0x7FFF	/* 32767 */
***************
*** 144,150 ****
  
  /* The word we are currently compressing */
  
! static char word[MAXWORD + 2];
  static size_t wordpos = 0;
  
  /* Stats */
--- 144,150 ----
  
  /* The word we are currently compressing */
  
! static char word[MAXWORDS + 2];
  static size_t wordpos = 0;
  
  /* Stats */
***************
*** 243,249 ****
  
  /* break up input into words */
    while (*p) {
!     if (!(isdigit(*p) || isalpha(*p)) || wordpos >= MAXWORD) {
        if (wordpos) {
  	word[wordpos++] = *p;	/* add trailing punctuation */
  	output_previous_word();
--- 243,249 ----
  
  /* break up input into words */
    while (*p) {
!     if (!(isdigit(*p) || isalpha(*p)) || wordpos >= MAXWORDS) {
        if (wordpos) {
  	word[wordpos++] = *p;	/* add trailing punctuation */
  	output_previous_word();
*** 1_7_7.59/src/bsd.c Thu, 12 Dec 2002 21:23:20 -0600 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.3 660)
--- 1_7_7.65(w)/src/bsd.c Tue, 17 Dec 2002 22:44:07 -0600 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.4 660)
***************
*** 371,401 ****
  void parse_connect(const char *msg, char *command, char *user, char *pass);
  void close_sockets(void);
  dbref find_player_by_desc(int port);
! void
! bailout(int sig)
!   NORETURN;
!     void WIN32_CDECL signal_shutdown(int sig);
!     void WIN32_CDECL signal_dump(int sig);
!     void reaper(int sig);
!     extern Pid_t forked_dump_pid;
!     void dump_users(DESC *call_by, char *match, int doing);
!     const char *time_format_1(long int dt);
!     const char *time_format_2(long int dt);
!     static void announce_connect(dbref player, int isnew, int num);
!     static void announce_disconnect(dbref player);
!     void inactivity_check(void);
  #ifdef INFO_SLAVE
!     static void make_info_slave(void);
!     static void promote_info_slave(void);
!     static void query_info_slave(int fd);
!     static void reap_info_slave(void);
!     void kill_info_slave(void);
  #endif
!     void reopen_logs(void);
!     void load_reboot_db(void);
  #ifdef HAS_GETRLIMIT
!     static void
!      init_rlimit(void)
  {
    /* Unlimit file descriptors. */
    /* Ultrix 4.4 and others may have getrlimit but may not be able to
--- 371,399 ----
  void parse_connect(const char *msg, char *command, char *user, char *pass);
  void close_sockets(void);
  dbref find_player_by_desc(int port);
! void NORETURN bailout(int sig);
! void WIN32_CDECL signal_shutdown(int sig);
! void WIN32_CDECL signal_dump(int sig);
! void reaper(int sig);
! extern Pid_t forked_dump_pid;
! void dump_users(DESC *call_by, char *match, int doing);
! const char *time_format_1(long int dt);
! const char *time_format_2(long int dt);
! static void announce_connect(dbref player, int isnew, int num);
! static void announce_disconnect(dbref player);
! void inactivity_check(void);
  #ifdef INFO_SLAVE
! static void make_info_slave(void);
! static void promote_info_slave(void);
! static void query_info_slave(int fd);
! static void reap_info_slave(void);
! void kill_info_slave(void);
  #endif
! void reopen_logs(void);
! void load_reboot_db(void);
  #ifdef HAS_GETRLIMIT
! static void
! init_rlimit(void)
  {
    /* Unlimit file descriptors. */
    /* Ultrix 4.4 and others may have getrlimit but may not be able to
*** 1_7_7.59/hdrs/version.h Thu, 12 Dec 2002 21:23:20 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.19 660)
--- 1_7_7.65(w)/hdrs/version.h Tue, 17 Dec 2002 22:44:13 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.3 660)
***************
*** 1,2 ****
! #define VERSION "PennMUSH version 1.7.7 patchlevel 0 [12/8/2002]"
! #define SHORTVN "PennMUSH 1.7.7p0"
--- 1,2 ----
! #define VERSION "PennMUSH version 1.7.7 patchlevel 1 [12/17/2002]"
! #define SHORTVN "PennMUSH 1.7.7p1"
*** 1_7_7.59/hdrs/game.h Mon, 02 Dec 2002 18:48:13 -0600 dunemush (pennmush/d/12_game.h 1.28.1.2.1.1.1.1.1.1.1.10 660)
--- 1_7_7.65(w)/hdrs/game.h Tue, 17 Dec 2002 22:44:12 -0600 dunemush (pennmush/d/12_game.h 1.28.1.2.1.1.1.1.1.1.1.11 660)
***************
*** 151,168 ****
     int type);
  extern void do_chownall
    (dbref player, const char *name, const char *target, int preserve);
! extern void
! do_reboot(dbref player, int flag)
!   NORETURN;
  
  /* From destroy.c */
!     extern void do_dbck(dbref player);
!     extern void do_destroy(dbref player, char *name, int confirm);
  
  /* From timer.c */
!     extern void init_timer(void);
  
  /* From version.c */
!     extern void do_version(dbref player);
  
  #endif				/* __GAME_H */
--- 151,166 ----
     int type);
  extern void do_chownall
    (dbref player, const char *name, const char *target, int preserve);
! extern void NORETURN do_reboot(dbref player, int flag);
  
  /* From destroy.c */
! extern void do_dbck(dbref player);
! extern void do_destroy(dbref player, char *name, int confirm);
  
  /* From timer.c */
! extern void init_timer(void);
  
  /* From version.c */
! extern void do_version(dbref player);
  
  #endif				/* __GAME_H */
*** 1_7_7.59/hdrs/externs.h Sat, 07 Dec 2002 16:26:26 -0600 dunemush (pennmush/d/16_externs.h 1.1.1.53.1.2.1.8.2.1.1.2.1.1.1.1.1.2.1.6.1.3.1.4.2.3 660)
--- 1_7_7.65(w)/hdrs/externs.h Tue, 17 Dec 2002 22:44:12 -0600 dunemush (pennmush/d/16_externs.h 1.1.1.53.1.2.1.8.2.1.1.2.1.1.1.1.1.2.1.6.1.3.1.4.2.4 660)
***************
*** 53,82 ****
  extern int init_game_dbs(void);
  extern void init_game_config(const char *conf);
  extern void dump_database(void);
! extern void
! panic(const char *message)
!   NORETURN;
  
  
  #ifdef WIN32
  /* From timer.c */
!     extern void init_timer(void);
!     extern void kill_timer(void);
  #endif				/* WIN32 */
  
  /* From bsd.c */
!     extern FILE *connlog_fp;
!     extern FILE *checklog_fp;
!     extern FILE *wizlog_fp;
!     extern FILE *tracelog_fp;
!     extern FILE *cmdlog_fp;
!     extern int restarting;
  #ifdef SUN_OS
!     extern int f_close(FILE * file);
  #define fclose(f) f_close(f);
  #endif
!     extern int hidden(dbref player);
!     void dump_reboot_db(void);
  
  /* The #defs for our notify_anything hacks.. Errr. Functions */
  #define NA_NORELAY      0x0001
--- 53,80 ----
  extern int init_game_dbs(void);
  extern void init_game_config(const char *conf);
  extern void dump_database(void);
! extern void NORETURN panic(const char *message);
  
  
  #ifdef WIN32
  /* From timer.c */
! extern void init_timer(void);
! extern void kill_timer(void);
  #endif				/* WIN32 */
  
  /* From bsd.c */
! extern FILE *connlog_fp;
! extern FILE *checklog_fp;
! extern FILE *wizlog_fp;
! extern FILE *tracelog_fp;
! extern FILE *cmdlog_fp;
! extern int restarting;
  #ifdef SUN_OS
! extern int f_close(FILE * file);
  #define fclose(f) f_close(f);
  #endif
! extern int hidden(dbref player);
! void dump_reboot_db(void);
  
  /* The #defs for our notify_anything hacks.. Errr. Functions */
  #define NA_NORELAY      0x0001
***************
*** 89,110 ****
  #define NA_MUST_PUPPET  0x0100	/* Ok to puppet even in same room */
  
  
!     typedef dbref (*na_lookup) (dbref, void *);
!     extern void notify_anything(dbref speaker, na_lookup func,
! 				void *fdata,
! 				char *(*nsfunc) (dbref,
! 						 na_lookup func,
! 						 void *, int), int flags,
! 				const char *message);
!     extern dbref na_one(dbref current, void *data);
!     extern dbref na_next(dbref current, void *data);
!     extern dbref na_loc(dbref current, void *data);
!     extern dbref na_nextbut(dbref current, void *data);
!     extern dbref na_except(dbref current, void *data);
!     extern dbref na_except2(dbref current, void *data);
!     extern dbref na_exceptN(dbref current, void *data);
  #ifdef CHAT_SYSTEM
!     extern dbref na_channel(dbref current, void *data);
  #endif
  
  #define notify(p,m)           notify_anything(orator, na_one, &(p), NULL, 0, m)
--- 87,108 ----
  #define NA_MUST_PUPPET  0x0100	/* Ok to puppet even in same room */
  
  
! typedef dbref (*na_lookup) (dbref, void *);
! extern void notify_anything(dbref speaker, na_lookup func,
! 			    void *fdata,
! 			    char *(*nsfunc) (dbref,
! 					     na_lookup func,
! 					     void *, int), int flags,
! 			    const char *message);
! extern dbref na_one(dbref current, void *data);
! extern dbref na_next(dbref current, void *data);
! extern dbref na_loc(dbref current, void *data);
! extern dbref na_nextbut(dbref current, void *data);
! extern dbref na_except(dbref current, void *data);
! extern dbref na_except2(dbref current, void *data);
! extern dbref na_exceptN(dbref current, void *data);
  #ifdef CHAT_SYSTEM
! extern dbref na_channel(dbref current, void *data);
  #endif
  
  #define notify(p,m)           notify_anything(orator, na_one, &(p), NULL, 0, m)
***************
*** 112,118 ****
  #define notify_by(t,p,m)           notify_anything(t, na_one, &(p), NULL, 0, m)
  #define notify_noecho(p,m)    notify_anything(orator, na_one, &(p), NULL, NA_NORELAY | NA_PUPPET, m)
  #define quiet_notify(p,m)     if (!IsQuiet(p)) notify(p,m)
!     extern void notify_format(dbref player, const char *fmt, ...)
    __attribute__ ((__format__(__printf__, 2, 3)));
  
  /* From compress.c */
--- 110,116 ----
  #define notify_by(t,p,m)           notify_anything(t, na_one, &(p), NULL, 0, m)
  #define notify_noecho(p,m)    notify_anything(orator, na_one, &(p), NULL, NA_NORELAY | NA_PUPPET, m)
  #define quiet_notify(p,m)     if (!IsQuiet(p)) notify(p,m)
! extern void notify_format(dbref player, const char *fmt, ...)
    __attribute__ ((__format__(__printf__, 2, 3)));
  
  /* From compress.c */
***************
*** 121,131 ****
   */
  /* #define COMP_STATS /* */
  #if (COMPRESSION_TYPE != 0)
!     extern unsigned char *compress(char const *s) __attribute_malloc__;
      extern char *uncompress(unsigned char const *s);
      extern char *safe_uncompress(unsigned char const *s) __attribute_malloc__;
  #else
!     extern char ucbuff[];
  #define init_compress(f) 0
  #define compress(s) ((unsigned char *)strdup(s))
  #define uncompress(s) (strcpy(ucbuff, (char *) s))
--- 119,131 ----
   */
  /* #define COMP_STATS /* */
  #if (COMPRESSION_TYPE != 0)
! extern unsigned char *
! compress(char const *s)
!   __attribute_malloc__;
      extern char *uncompress(unsigned char const *s);
      extern char *safe_uncompress(unsigned char const *s) __attribute_malloc__;
  #else
! extern char ucbuff[];
  #define init_compress(f) 0
  #define compress(s) ((unsigned char *)strdup(s))
  #define uncompress(s) (strcpy(ucbuff, (char *) s))
***************
*** 133,285 ****
  #endif
  
  /* From cque.c */
!     extern char *wenv[10], renv[NUMQ][BUFFER_LEN];
!     extern char *wnxt[10], *rnxt[NUMQ];
!     extern void do_second(void);
!     extern int do_top(int ncom);
!     extern void do_halt(dbref owner, const char *ncom, dbref victim);
!     extern void parse_que(dbref player, const char *command, dbref cause);
!     extern int queue_attribute_base
!       (dbref executor, const char *atrname, dbref enactor, int noparent);
  #define queue_attribute(a,b,c) queue_attribute_base(a,b,c,0)
  #define queue_attribute_noparent(a,b,c) queue_attribute_base(a,b,c,1)
!     extern void dequeue_semaphores(dbref thing, char const *aname, int count,
! 				   int all, int drain);
  
  
  /* From create.c */
!     extern dbref do_dig(dbref player, const char *name, char **argv, int tport);
!     extern dbref do_create(dbref player, char *name, int cost);
!     extern dbref do_real_open(dbref player, const char *direction,
! 			      const char *linkto, dbref pseudo);
!     extern void do_open(dbref player, const char *direction, char **links);
!     extern void do_link(dbref player, const char *name, const char *room_name,
! 			int preserve);
!     extern void do_unlink(dbref player, const char *name);
!     extern dbref do_clone(dbref player, char *name, char *newname,
! 			  int preserve);
  
  /* From game.c */
!     extern void report(void);
!     extern int Hearer(dbref thing);
!     extern int Commer(dbref thing);
!     extern int Listener(dbref thing);
!     extern dbref orator;
!     int parse_chat(dbref player, char *command);
!     extern void fork_and_dump(int forking);
  
  /* From look.c */
!     extern void look_room(dbref player, dbref loc, int flag);
!     extern void do_look_around(dbref player);
!     extern void do_look_at(dbref player, const char *name, int key);
  
  /* From move.c */
!     extern void enter_room(dbref player, dbref loc, int nomovemsgs);
!     extern int can_move(dbref player, const char *direction);
!     extern void do_move(dbref player, const char *direction, int type);
!     extern void moveto(dbref what, dbref where);
!     extern void safe_tel(dbref player, dbref dest, int nomovemsgs);
!     extern dbref global_exit(dbref player, const char *direction);
!     extern dbref remote_exit(dbref loc, const char *direction);
!     extern void move_wrapper(dbref player, const char *command);
!     extern void do_follow(dbref player, const char *arg);
!     extern void do_unfollow(dbref player, const char *arg);
!     extern void do_desert(dbref player, const char *arg);
!     extern void do_dismiss(dbref player, const char *arg);
!     extern void clear_followers(dbref leader, int noisy);
!     extern void clear_following(dbref follower, int noisy);
  
  /* From mycrypt.c */
!     extern char *mush_crypt(const char *key);
  
  /* From player.c */
!     extern int password_check(dbref player, const char *password);
!     extern dbref lookup_player(const char *name);
  /* from player.c */
!     extern dbref create_player(const char *name, const char *password,
! 			       const char *host, const char *ip);
!     extern dbref connect_player(const char *name, const char *password,
! 				const char *host, const char *ip);
!     extern void check_last(dbref player, const char *host, const char *ip);
!     extern void check_lastfailed(dbref player, const char *host);
  
  /* From parse.c */
!     extern int is_number(const char *str);
!     extern int is_strict_number(const char *str);
!     extern int is_strict_integer(const char *str);
  
  /* From plyrlist.c */
!     void clear_players(void);
!     void add_player(dbref player, const char *alias);
!     void delete_player(dbref player, const char *alias);
  
  /* From predicat.c */
  
!     extern char *WIN32_CDECL tprintf(const char *fmt, ...)
    __attribute__ ((__format__(__printf__, 1, 2)));
  
!     extern int could_doit(dbref player, dbref thing);
!     extern void did_it(dbref player, dbref thing, const char *what,
! 		       const char *def, const char *owhat, const char *odef,
! 		       const char *awhat, dbref loc);
!     extern void real_did_it(dbref player, dbref thing, const char *what,
! 			    const char *def, const char *owhat,
! 			    const char *odef, const char *awhat, dbref loc,
! 			    char *myenv[10]);
!     extern int can_see(dbref player, dbref thing, int can_see_loc);
!     extern int controls(dbref who, dbref what);
!     extern int can_pay_fees(dbref who, int pennies);
!     extern void giveto(dbref who, dbref pennies);
!     extern int payfor(dbref who, int cost);
!     extern int nearby(dbref obj1, dbref obj2);
  #ifdef QUOTA
!     extern int get_current_quota(dbref who);
!     extern void change_quota(dbref who, int payment);
  #endif
!     extern int ok_name(const char *name);
!     extern int ok_command_name(const char *name);
!     extern int ok_player_name(const char *name);
!     extern int ok_password(const char *password);
!     extern dbref parse_match_possessive(dbref player, const char *str);
!     extern void page_return(dbref player, dbref target, const char *type,
! 			    const char *message, const char *def);
!     extern char *grep_util(dbref player, dbref thing, char *pattern,
! 			   char *lookfor, int len, int insensitive);
!     extern dbref where_is(dbref thing);
!     extern int charge_action(dbref player, dbref thing, const char *awhat);
!     dbref first_visible(dbref player, dbref thing);
  
  /* From set.c */
!     extern void chown_object(dbref player, dbref thing, dbref newowner,
! 			     int preserve);
  
  /* From speech.c */
!     extern char *ns_esnotify(dbref speaker, na_lookup func, void *fdata,
! 			     int para);
!     extern void notify_except(dbref first, dbref exception, const char *msg);
!     extern void notify_except2
!       (dbref first, dbref exc1, dbref exc2, const char *msg);
  /* Return thing/PREFIX + msg */
!     extern void make_prefixstr(dbref thing, const char *msg, char *tbuf1);
!     extern int filter_found(dbref thing, const char *msg, int flag);
  
  /* From strutil.c */
!     extern char *split_token(char **sp, char sep);
!     extern char *chopstr(const char *str, size_t lim);
!     extern int string_prefix(const char *RESTRICT string,
! 			     const char *RESTRICT prefix);
!     extern const char *string_match(const char *src, const char *sub);
!     extern char *strupper(const char *s);
!     extern char *strlower(const char *s);
!     extern char *upcasestr(char *s);
!     extern char *skip_space(const char *s);
!     extern char *seek_char(const char *s, char c);
!     extern int u_strlen(const unsigned char *s);
!     extern unsigned char *u_strcpy
!       (unsigned char *target, const unsigned char *source);
  #define u_strdup(x) (unsigned char *)strdup((char *) x)
  #ifndef HAS_STRDUP
!     char *strdup(const char *s) __attribute_malloc__;
  #endif
      char *mush_strdup(const char *s, const char *check) __attribute_malloc__;
  #ifdef WIN32
--- 133,285 ----
  #endif
  
  /* From cque.c */
! extern char *wenv[10], renv[NUMQ][BUFFER_LEN];
! extern char *wnxt[10], *rnxt[NUMQ];
! extern void do_second(void);
! extern int do_top(int ncom);
! extern void do_halt(dbref owner, const char *ncom, dbref victim);
! extern void parse_que(dbref player, const char *command, dbref cause);
! extern int queue_attribute_base
!   (dbref executor, const char *atrname, dbref enactor, int noparent);
  #define queue_attribute(a,b,c) queue_attribute_base(a,b,c,0)
  #define queue_attribute_noparent(a,b,c) queue_attribute_base(a,b,c,1)
! extern void dequeue_semaphores(dbref thing, char const *aname, int count,
! 			       int all, int drain);
  
  
  /* From create.c */
! extern dbref do_dig(dbref player, const char *name, char **argv, int tport);
! extern dbref do_create(dbref player, char *name, int cost);
! extern dbref do_real_open(dbref player, const char *direction,
! 			  const char *linkto, dbref pseudo);
! extern void do_open(dbref player, const char *direction, char **links);
! extern void do_link(dbref player, const char *name, const char *room_name,
! 		    int preserve);
! extern void do_unlink(dbref player, const char *name);
! extern dbref do_clone(dbref player, char *name, char *newname, int preserve);
  
  /* From game.c */
! extern void report(void);
! extern int Hearer(dbref thing);
! extern int Commer(dbref thing);
! extern int Listener(dbref thing);
! extern dbref orator;
! int parse_chat(dbref player, char *command);
! extern void fork_and_dump(int forking);
  
  /* From look.c */
! extern void look_room(dbref player, dbref loc, int flag);
! extern void do_look_around(dbref player);
! extern void do_look_at(dbref player, const char *name, int key);
  
  /* From move.c */
! extern void enter_room(dbref player, dbref loc, int nomovemsgs);
! extern int can_move(dbref player, const char *direction);
! extern void do_move(dbref player, const char *direction, int type);
! extern void moveto(dbref what, dbref where);
! extern void safe_tel(dbref player, dbref dest, int nomovemsgs);
! extern dbref global_exit(dbref player, const char *direction);
! extern dbref remote_exit(dbref loc, const char *direction);
! extern void move_wrapper(dbref player, const char *command);
! extern void do_follow(dbref player, const char *arg);
! extern void do_unfollow(dbref player, const char *arg);
! extern void do_desert(dbref player, const char *arg);
! extern void do_dismiss(dbref player, const char *arg);
! extern void clear_followers(dbref leader, int noisy);
! extern void clear_following(dbref follower, int noisy);
  
  /* From mycrypt.c */
! extern char *mush_crypt(const char *key);
  
  /* From player.c */
! extern int password_check(dbref player, const char *password);
! extern dbref lookup_player(const char *name);
  /* from player.c */
! extern dbref create_player(const char *name, const char *password,
! 			   const char *host, const char *ip);
! extern dbref connect_player(const char *name, const char *password,
! 			    const char *host, const char *ip);
! extern void check_last(dbref player, const char *host, const char *ip);
! extern void check_lastfailed(dbref player, const char *host);
  
  /* From parse.c */
! extern int is_number(const char *str);
! extern int is_strict_number(const char *str);
! extern int is_strict_integer(const char *str);
  
  /* From plyrlist.c */
! void clear_players(void);
! void add_player(dbref player, const char *alias);
! void delete_player(dbref player, const char *alias);
  
  /* From predicat.c */
  
! extern char *WIN32_CDECL tprintf(const char *fmt, ...)
    __attribute__ ((__format__(__printf__, 1, 2)));
  
! extern int could_doit(dbref player, dbref thing);
! extern void did_it(dbref player, dbref thing, const char *what,
! 		   const char *def, const char *owhat, const char *odef,
! 		   const char *awhat, dbref loc);
! extern void real_did_it(dbref player, dbref thing, const char *what,
! 			const char *def, const char *owhat,
! 			const char *odef, const char *awhat, dbref loc,
! 			char *myenv[10]);
! extern int can_see(dbref player, dbref thing, int can_see_loc);
! extern int controls(dbref who, dbref what);
! extern int can_pay_fees(dbref who, int pennies);
! extern void giveto(dbref who, dbref pennies);
! extern int payfor(dbref who, int cost);
! extern int nearby(dbref obj1, dbref obj2);
  #ifdef QUOTA
! extern int get_current_quota(dbref who);
! extern void change_quota(dbref who, int payment);
  #endif
! extern int ok_name(const char *name);
! extern int ok_command_name(const char *name);
! extern int ok_player_name(const char *name);
! extern int ok_password(const char *password);
! extern dbref parse_match_possessive(dbref player, const char *str);
! extern void page_return(dbref player, dbref target, const char *type,
! 			const char *message, const char *def);
! extern char *grep_util(dbref player, dbref thing, char *pattern,
! 		       char *lookfor, int len, int insensitive);
! extern dbref where_is(dbref thing);
! extern int charge_action(dbref player, dbref thing, const char *awhat);
! dbref first_visible(dbref player, dbref thing);
  
  /* From set.c */
! extern void chown_object(dbref player, dbref thing, dbref newowner,
! 			 int preserve);
  
  /* From speech.c */
! extern char *ns_esnotify(dbref speaker, na_lookup func, void *fdata, int para);
! extern void notify_except(dbref first, dbref exception, const char *msg);
! extern void notify_except2
!   (dbref first, dbref exc1, dbref exc2, const char *msg);
  /* Return thing/PREFIX + msg */
! extern void make_prefixstr(dbref thing, const char *msg, char *tbuf1);
! extern int filter_found(dbref thing, const char *msg, int flag);
  
  /* From strutil.c */
! extern char *split_token(char **sp, char sep);
! extern char *chopstr(const char *str, size_t lim);
! extern int string_prefix(const char *RESTRICT string,
! 			 const char *RESTRICT prefix);
! extern const char *string_match(const char *src, const char *sub);
! extern char *strupper(const char *s);
! extern char *strlower(const char *s);
! extern char *upcasestr(char *s);
! extern char *skip_space(const char *s);
! extern char *seek_char(const char *s, char c);
! extern int u_strlen(const unsigned char *s);
! extern unsigned char *u_strcpy
!   (unsigned char *target, const unsigned char *source);
  #define u_strdup(x) (unsigned char *)strdup((char *) x)
  #ifndef HAS_STRDUP
! char *
! strdup(const char *s)
!   __attribute_malloc__;
  #endif
      char *mush_strdup(const char *s, const char *check) __attribute_malloc__;
  #ifdef WIN32
*** 1_7_7.59/po/Makefile Wed, 13 Nov 2002 15:39:20 -0600 dunemush (pennmush/e/47_Makefile 1.10 660)
--- 1_7_7.65(w)/po/Makefile Tue, 17 Dec 2002 22:39:16 -0600 dunemush (pennmush/e/47_Makefile 1.11 660)
***************
*** 1,7 ****
  .SUFFIXES: .po .pox .mo
  
  POFILES=ru_RU.po nl_NL.po sv_SE.po hu_HU.po es_ES.po pt_BR.po fr_FR.po \
! da_DK.po de_DE.po no_NO.po
  
  .pox.po: $*.pox pennmush.pot
  	-msgmerge -E -v $*.pox pennmush.pot > $*.po
--- 1,7 ----
  .SUFFIXES: .po .pox .mo
  
  POFILES=ru_RU.po nl_NL.po sv_SE.po hu_HU.po es_ES.po pt_BR.po fr_FR.po \
! da_DK.po de_DE.po no_NO.po pl_PL.po
  
  .pox.po: $*.pox pennmush.pot
  	-msgmerge -E -v $*.pox pennmush.pot > $*.po
*** 1_7_7.59/hdrs/mushtype.h Sat, 07 Dec 2002 16:26:26 -0600 dunemush (pennmush/f/20_mushtype.h 1.2.1.1.1.5 660)
--- 1_7_7.65(w)/hdrs/mushtype.h Tue, 17 Dec 2002 22:44:12 -0600 dunemush (pennmush/f/20_mushtype.h 1.2.1.1.1.6 660)
***************
*** 3,8 ****
--- 3,11 ----
  #include "copyrite.h"
  #include "options.h"
  #include <stdio.h>
+ #ifdef WIN32
+ #include <windows.h>
+ #endif
  #ifdef HAS_OPENSSL
  #include <openssl/ssl.h>
  #endif


More information about the Pennmush-announce mailing list