PennMUSH Community

Changeset 515

Show
Ignore:
Timestamp:
08/16/06 02:55:20 (2 years ago)
Author:
pennmush
Message:

PennMUSH 1.8.1p2 Archival

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 1.8.1/CHANGES.180

    r511 r515  
    1212 
    1313========================================================================== 
     14 
     15Version 1.8.0 patchlevel 8                      August 29, 2005 
     16 
     17Fixes: 
     18  * /noflagcopy switch to @cpattr/@mvattr works now. Report by 
     19    Kimiko Muffin. 
     20  * SHS encryption now works on 64-bit architectures that define 
     21    uint32_t. Report by Licenser@M*U*S*H. 
     22 
     23 
     24Version 1.8.0 patchlevel 7                      August 29, 2005 
     25 
     26Fixes: 
     27  * lsearch() with no results no longer returns #-1. It still does so when 
     28    there's an error. Suggested by Nathan Baum. [SW] 
     29  * Improved messages for @link of exits. Report by Nathan Baum. [SW] 
     30  * Restart script more portable to older bourne-like shells. 
     31    Patch by Walker@M*U*S*H. 
     32  * Fix to MinGW reboot. Patch by Nathan Baum. 
     33  * Help fixes by Tyr@M*U*S*H, Talvo@M*U*S*H, Dizzy@Forgotten Time, 
     34    and Trinsec@M*U*S*H. 
     35  * @flag/add of a flag with a name that is a unique prefix of an existing  
     36    flag wouldn't add the new flag. Reported by Mike Griffiths. [SW] 
     37  * @config/set of an invalid option would still return a success message. 
     38    Report by Sholevi@M*U*S*H. [SW] 
     39  * sql() without a field delimiter defaulted to using the row delimiter, 
     40    instead of a space. Report by Kali@M*U*S*H. 
     41  * lock() didn't set user-defined locks properly. Report by  
     42    Dahan@M*U*S*H. [SW] 
     43  * Infinite loop in fraction() fixed. 
     44  * FIXED players may no longer teleport through exits. Report by 
     45    Anyasha@bDv2 
     46  * Better messages when attempting to wipe SAFE attributes. 
     47    Suggested by Nathan Baum. 
     48 
    1449 
    1550Version 1.8.0 patchlevel 6                      June 24, 2005 
  • 1.8.1/CHANGES.181

    r513 r515  
    99[EEH] is Ervin Hearn III, a PennMUSH developer (aka Noltar) 
    1010[3] refers to code by (or inspired by) TinyMUSH 3.0 
     11[MUX] refers to code by (or inspired by) TinyMUX 2.x 
    1112[Rhost] refers to code by (or inspired by) RhostMUSH 
    1213 
    1314========================================================================== 
     15 
     16Version 1.8.1 patchlevel 2                      September 5, 2005 
     17 
     18Commands: 
     19  * @edit/check shows the results of an @edit without actually doing 
     20    it, to avoid inadvertent overediting. Patch by Walker@M*U*S*H. 
     21Functions: 
     22  * sortkey() sorts a list by mapping each list element through a 
     23    function and applying a standard sort type. Patch by Walker@M*U*S*H. 
     24Minor changes: 
     25  * "% " (percent-space) is now parsed to a literal percent-space, 
     26    making it easier to type things like "I'm 50% happy". And 
     27    % at end of line is parsed to a literal %.  Patch by Sketch@M*U*S*H. 
     28  * @nameformat now receives the default-formatted name as %1 
     29    so you can edit from that if you prefer. Suggested by Talvo@M*U*S*H. 
     30  * Added netbsd hints. Suggested by Tyr@M*U*S*H. 
     31  * hastype() can take a list of types to check for, not just one. [SW] 
     32  * Add @function/preserve, which does the same thing as the localize 
     33    restriction. [MUX] [SW] 
     34  * Leaving out the <filler> argument to align() defaults it to a 
     35    space. Suggested by Tyr@M*U*S*H, patch by Walker@M*U*S*H. 
     36  * Improved error message for setq() with odd arguments. 
     37    Report by Malix@8bit. 
     38  * When variable exits fail due to invalid/not permitted destination, 
     39    the enactor is told what the attempted destination was. 
     40    Suggested by Nathan Baum. 
     41  * Rooms may now @search/search() their owners. Suggested by Kali@M*U*S*H. 
     42Fixes: 
     43  * @function/restrict mentioned in help. [SW] 
     44  * Clearer help on parallel setq. Suggested by Trinsec@M*U*S*H. [TAP] 
     45  * lsearch() didn't refund pennies when it failed because of lack of  
     46    permissions or invalid search criteria. Reported by Nathan Baum. [SW] 
     47  * lsearch() could return garbage objects. Report by Nathan Baum. [SW] 
     48  * %+ now only records argument count from last ufun, not from other 
     49    (builtin) functions. Report by Cheetah@M*U*S*H. 
     50  * Some linting of float comparisons. Report by Cheetah@M*U*S*H. 
     51  * page <player>= now pages the player with a blank line instead of 
     52    repaging the last paged player with "<player>". Report by Cheetah@M*U*S*H. 
     53 
    1454 
    1555Version 1.8.1 patchlevel 1                      June 27, 2005 
  • 1.8.1/Configure

    r479 r515  
    264264cdecl='' 
    265265cf_email='' 
    266 cf_name='' 
    267266cf_by='' 
    268267cf_time='' 
     
    356355d_timelocal='' 
    357356d_toupper='' 
     357d_uint32_t='' 
    358358d_uptime='' 
    359359d_urandom='' 
     
    380380i_niin='' 
    381381i_sysin='' 
    382 i_nitcp='' 
    383382i_setjmp='' 
    384383i_stddef='' 
     384i_stdint='' 
    385385i_stdlib='' 
    386386i_string='' 
     
    417417installdir='' 
    418418libc='' 
    419 d_mysql='' 
    420 libmysqlclient='' 
    421419glibpth='' 
    422420libpth='' 
     
    456454so='' 
    457455d_keepalive='' 
    458 d_keepidle='' 
    459456sharpbang='' 
    460457shsharp='' 
     
    46214618eval $inlibc 
    46224619 
    4623 : see if this is a netinet/tcp.h system 
    4624 set netinet/tcp.h i_nitcp 
    4625 eval $inhdr 
    4626  
    46274620: see if setsockopt with SO_KEEPALIVE works as advertised 
    46284621echo " " 
    46294622case "$d_oldsock" in 
    46304623"$undef") 
     4624    if $contains SO_KEEPALIVE `./findhdr sys/socket.h` \ 
     4625        /dev/null >/dev/null 2>&1 
     4626    then 
    46314627        echo "OK, let's see if SO_KEEPALIVE works as advertised..." >&4 
    46324628        $cat > socket.c <<EOP 
     
    46344630#include <sys/socket.h> 
    46354631#include <netinet/in.h> 
    4636 #$i_nitcp I_NETINET_TCP 
    4637 #ifdef I_NETINET_TCP 
    4638 #include <netinet/tcp.h> 
    4639 #endif 
    46404632#include <netdb.h> 
    46414633 
     
    46434635{ 
    46444636    int s = socket(AF_INET, SOCK_STREAM, 0); 
    4645     int val = 1; 
    46464637    if (s == -1) 
    46474638        exit(1); 
    4648     if (-1 == setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, &val, sizeof(val))) 
     4639    if (-1 == setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, 0, 0)) 
    46494640        exit(2); 
    4650 #ifdef I_NETINET_TCP 
    4651 #ifdef TCP_KEEPIDLE 
    4652     val = 1; 
    4653     if (-1 == setsockopt(s, IPPROTO_TCP, TCP_KEEPIDLE, &val, sizeof(val))) 
    4654         exit(3); 
    4655 #else 
    4656         exit(3); 
    4657 #endif 
    4658 #endif 
    46594641    exit(0); 
    46604642} 
     
    46654647            case $? in 
    46664648            0) echo "Yes, it does!" 
    4667                 val="$define" 
    4668                 val2="$i_nitcp" 
    4669             ;; 
     4649                val="$define";; 
    46704650            1) $cat <<EOM 
    46714651(Something went wrong -- Assuming SO_KEEPALIVE is broken) 
    46724652EOM 
    4673                 val="$undef" 
    4674                 val2="$undef" 
    4675             ;; 
     4653                val="$undef";; 
    46764654            2) echo "No, it doesn't.  Don't trust your manuals!!" 
    4677                 val="$undef" 
    4678                 val2="$undef" 
    4679             ;; 
    4680             3) echo "It does, but TCP_KEEPIDLE doesn't." 
    4681                 val="$define" 
    4682                 val2="$undef" 
    4683             ;; 
     4655                val="$undef";; 
    46844656            esac 
    46854657        else 
     
    46884660EOM 
    46894661            val="$undef" 
    4690             val2="$undef" 
    46914662        fi 
    4692     ;; 
     4663    else 
     4664        echo "Strange!! You have BSD 4.2 sockets but no SO_KEEPALIVE option." 
     4665        val="$undef" 
     4666    fi;; 
    46934667*) cat <<EOM 
    46944668As you have an old socket interface, you can't have heard of SO_KEEPALIVE. 
    46954669EOM 
    4696     val="$undef" 
    4697     val2="$undef";; 
     4670    val="$undef";; 
    46984671esac 
    46994672set d_keepalive 
    4700 eval $setvar 
    4701 val="$val2" 
    4702 set d_keepidle 
    47034673eval $setvar 
    47044674$rm -f socket socket.c 
     
    47894759set memset d_memset 
    47904760eval $inlibc 
    4791  
    4792 : see if we should include -lmysqlclient 
    4793 echo " " 
    4794  
    4795 d_mysql="$undef" 
    4796  
    4797 if $test "x$no_mysql" = "x"; then 
    4798  
    4799   libmysqlclient="-lmysqlclient" 
    4800  
    4801   $cat > test_mysql.c <<EOM 
    4802 #include <stdio.h> 
    4803 #include <stdlib.h> 
    4804 #include <mysql/mysql.h> 
    4805 #include <mysql/errmsg.h> 
    4806  
    4807 int main(int argc, char **argv) { 
    4808    printf("Your mysql is version %s\n",mysql_get_client_info()); 
    4809    exit(0); 
    4810 } 
    4811 EOM 
    4812  
    4813   if $cc $ccflags $ldflags -o test_mysql test_mysql.c $libs $libmysqlclient >/dev/null 2>&1 ; 
    4814   then 
    4815       echo 'You have mysql...' >&4 
    4816       version=`./test_mysql` 
    4817       if $test $? -eq 0; then 
    4818     echo "$version" >&4 
    4819         d_mysql="$define" 
    4820       else 
    4821         echo "...but my test program didn't run correctly." >&4 
    4822         libmysqlclient='' 
    4823       fi 
    4824   else 
    4825       echo "You don't seem to have mysql." >&4 
    4826       libmysqlclient='' 
    4827   fi 
    4828   $rm -f test_mysql* core 
    4829  
    4830 else 
    4831  
    4832   echo "Skipping mysql tests." >&4 
    4833   libmysqlclient='' 
    4834  
    4835 fi 
    48364761 
    48374762: check for a new-style definitions 
     
    53145239$rm -f test_toupper* core 
    53155240 
    5316 : uptime 
    5317 echo " " 
    5318 if $test -x $uptime ; then 
    5319     val="$define" 
    5320 else 
    5321     val="$undef" 
    5322 fi 
    5323 set d_uptime; eval $setvar 
    5324  
    5325 : see if /dev/urandom is present 
    5326 echo " " 
    5327 if $test -c /dev/urandom ; then 
    5328     val="$define" 
    5329 else 
    5330     val="$undef" 
    5331 fi 
    5332 set d_urandom; eval $setvar 
    5333  
    5334 : see if union wait is available 
    5335 echo " " 
    5336 set X $cppflags 
    5337 shift 
    5338 flags='' 
    5339 also='' 
    5340 for f in $*; do 
    5341     case "$f" in 
    5342     *NO_PROTO*) ;; 
    5343     *) flags="$flags $f";; 
    5344     esac 
    5345 done 
    5346 xxx="`./findhdr sys/wait.h`" 
    5347 case "x$xxx" in 
    5348 x) xxx=/dev/null 
    5349 esac 
    5350 $cat "$xxx" | $cppstdin $flags $cppminus >wait.out 2>/dev/null 
    5351 if $contains 'union.*wait.*{' wait.out >/dev/null 2>&1 ; then 
    5352     echo "Looks like your <sys/wait.h> knows about 'union wait'..." >&4 
    5353     val="$define" 
    5354     also='also ' 
    5355     if $contains 'extern.*wait[     ]*([    ]*int' wait.out >/dev/null 2>&1 
    5356     then 
    5357         echo "But wait() seems to expect an 'int' pointer (POSIX way)." >&4 
    5358         val="$undef" 
    5359         also='' 
    5360     elif $contains 'extern.*wait[   ]*([    ]*union' wait.out >/dev/null 2>&1 
    5361     then 
    5362         echo "And indeed wait() expects an 'union wait' pointer (BSD way)." >&4 
    5363     else 
    5364         echo "So we'll use that for wait()." >&4 
    5365     fi 
    5366 else 
    5367     echo "No trace of 'union wait' in <sys/wait.h>..." >&4 
    5368     val="$undef" 
    5369     echo "Your wait() should be happy with a plain 'int' pointer." >&4 
    5370 fi 
    5371 set d_uwait 
    5372 eval $setvar 
    5373 $rm -f wait.out 
    5374  
    53755241: get C preprocessor symbols handy 
    53765242echo " " 
     
    54795345fi 
    54805346$rm -f ccsym* 
     5347 
     5348: see if this is a stdint system 
     5349val="$undef" 
     5350if $test "`./findhdr stdint.h`"; then 
     5351    val="$define" 
     5352    echo "<stdint.h> found." >&4 
     5353fi 
     5354echo " " 
     5355set i_stdint; eval $setvar 
     5356: see if we have uint32_t 
     5357echo "Let's try to figure out a really big double." >&4 
     5358echo " " 
     5359    $cat >d_uint32.c <<EOCP 
     5360#include <stdio.h> 
     5361#$i_stdint I_STDINT 
     5362#ifdef I_STDINT 
     5363#include <stdint.h> 
     5364#endif 
     5365 
     5366int main() 
     5367{ 
     5368  uint32_t a; 
     5369  a = 2*2*2*2; 
     5370  a *= a; /* 2^8 */ 
     5371  a *= a; /* 2^16 */ 
     5372  a *= a; /* 2^32 */ 
     5373  a += 1; /* 2^32 + 1 */ 
     5374  if (a == 1) 
     5375    printf("ok\n"); 
     5376  else 
     5377    printf("not ok\n"); 
     5378} 
     5379EOCP 
     5380 
     5381if $cc $ccflags $ldflags d_uint32.c -o d_uint32 $libs >/dev/null 2>&1; then 
     5382          val=`./d_uint32` 
     5383          if test $val = "ok" ; then 
     5384        val="$define" 
     5385        set d_uint32_t; eval $setvar 
     5386        echo "You have uint32_t." >&4 
     5387      else 
     5388        val="$undef" 
     5389        set d_uint32_t; eval $setvar 
     5390        echo "You don't have uint32_t, hope you're a 32 bit machine." >&4 
     5391      fi 
     5392else 
     5393      val="$undef" 
     5394      set d_uint32_t; eval $setvar 
     5395      echo "I can't tell if you have uint32_t, hope you're a 32 bit machine." >&4 
     5396fi 
     5397 
     5398$rm -f d_uint32* 
     5399 
     5400: uptime 
     5401echo " " 
     5402if $test -x $uptime ; then 
     5403    val="$define" 
     5404else 
     5405    val="$undef" 
     5406fi 
     5407set d_uptime; eval $setvar 
     5408 
     5409: see if /dev/urandom is present 
     5410echo " " 
     5411if $test -c /dev/urandom ; then 
     5412    val="$define" 
     5413else 
     5414    val="$undef" 
     5415fi 
     5416set d_urandom; eval $setvar 
     5417 
     5418: see if union wait is available 
     5419echo " " 
     5420set X $cppflags 
     5421shift 
     5422flags='' 
     5423also='' 
     5424for f in $*; do 
     5425    case "$f" in 
     5426    *NO_PROTO*) ;; 
     5427    *) flags="$flags $f";; 
     5428    esac 
     5429done 
     5430xxx="`./findhdr sys/wait.h`" 
     5431case "x$xxx" in 
     5432x) xxx=/dev/null 
     5433esac 
     5434$cat "$xxx" | $cppstdin $flags $cppminus >wait.out 2>/dev/null 
     5435if $contains 'union.*wait.*{' wait.out >/dev/null 2>&1 ; then 
     5436    echo "Looks like your <sys/wait.h> knows about 'union wait'..." >&4 
     5437    val="$define" 
     5438    also='also ' 
     5439    if $contains 'extern.*wait[     ]*([    ]*int' wait.out >/dev/null 2>&1 
     5440    then 
     5441        echo "But wait() seems to expect an 'int' pointer (POSIX way)." >&4 
     5442        val="$undef" 
     5443        also='' 
     5444    elif $contains 'extern.*wait[   ]*([    ]*union' wait.out >/dev/null 2>&1 
     5445    then 
     5446        echo "And indeed wait() expects an 'union wait' pointer (BSD way)." >&4 
     5447    else 
     5448        echo "So we'll use that for wait()." >&4 
     5449    fi 
     5450else 
     5451    echo "No trace of 'union wait' in <sys/wait.h>..." >&4 
     5452    val="$undef" 
     5453    echo "Your wait() should be happy with a plain 'int' pointer." >&4 
     5454fi 
     5455set d_uwait 
     5456eval $setvar 
     5457$rm -f wait.out 
    54815458 
    54825459: see if this is a termio system 
     
    66296606    elif ./xenix; then 
    66306607        dflt=y 
    6631     elif $test "x$osname" = "xlinux"; then 
    6632         dflt=y 
    66336608    else 
    66346609        dflt=n 
     
    68876862cf_by='$cf_by' 
    68886863cf_email='$cf_email' 
    6889 cf_name='$cf_name' 
    68906864cf_time='$cf_time' 
    68916865chgrp='$chgrp' 
     
    69416915d_itimer='$d_itimer' 
    69426916d_keepalive='$d_keepalive' 
    6943 d_keepidle='$d_keepidle' 
    69446917d_keepsig='$d_keepsig' 
    69456918d_lrand48='$d_lrand48' 
     
    69506923d_memset='$d_memset' 
    69516924d_mymalloc='$d_mymalloc' 
    6952 d_mysql='$d_mysql' 
    69536925d_newstyle='$d_newstyle' 
    69546926d_oldsock='$d_oldsock' 
     
    69896961d_timelocal='$d_timelocal' 
    69906962d_toupper='$d_toupper' 
     6963d_uint32_t='$d_uint32_t' 
    69916964d_uptime='$d_uptime' 
    69926965d_urandom='$d_urandom' 
     
    70357008i_netdb='$i_netdb' 
    70367009i_niin='$i_niin' 
    7037 i_nitcp='$i_nitcp' 
    70387010i_setjmp='$i_setjmp' 
    70397011i_sgtty='$i_sgtty' 
    70407012i_stdarg='$i_stdarg' 
    70417013i_stddef='$i_stddef' 
     7014i_stdint='$i_stdint' 
    70427015i_stdlib='$i_stdlib' 
    70437016i_string='$i_string' 
     
    70767049less='$less' 
    70777050libc='$libc' 
    7078 libmysqlclient='$libmysqlclient' 
    70797051libpth='$libpth' 
    70807052libs='$libs' 
  • 1.8.1/Patchlevel

    r513 r515  
    11Do not edit this file. It is maintained by the official PennMUSH patches. 
    2 This is PennMUSH 1.8.1p1 
     2This is PennMUSH 1.8.1p2 
  • 1.8.1/README.SQL

    r469 r515  
    1717   III. SQL setup tips 
    1818 
    19 I. Compiling withi MySQL 
     19I. Compiling with MySQL 
    2020 
    2121  The Configure script distributed with PennMUSH automatically detects 
  • 1.8.1/config_h.SH

    r479 r515  
    399399#define Size_t $sizetype     /* length paramater for string functions */ 
    400400 
     401/* CAN_KEEPALIVE: 
     402 *  This symbol if defined indicates to the C program that the SO_KEEPALIVE 
     403 *  option of setsockopt() will work as advertised in the manual. 
     404 */ 
     405#$d_keepalive CAN_KEEPALIVE     /**/ 
     406 
    401407/* VOIDFLAGS: 
    402408 *  This symbol indicates how much support of the void type is given by this 
     
    730736#$d_toupper HAS_SAFE_TOUPPER /**/ 
    731737 
     738/* HAS_UINT32_T: 
     739 *  If defined, this system has the uint32_t type. 
     740 */ 
     741#$d_uint32_t HAS_UINT32_T   /**/ 
     742 
    732743/* UPTIME_PATH: 
    733744 *  This symbol gives the full path to the uptime(1) program if 
     
    796807#$i_netdb I_NETDB       /**/ 
    797808 
    798 /* I_NETINET_TCP: 
    799  *  This symbol, if defined, indicates to the C program that it should 
    800  *  include <netinet/tcp.h>. 
    801  */ 
    802 #$i_nitcp I_NETINET_TCP /**/ 
    803  
    804809/* I_SETJMP: 
    805810 *  This symbol, if defined, indicates to the C program that it can 
     
    807812 */ 
    808813#$i_setjmp I_SETJMP     /**/ 
     814 
     815/* I_STDINT: 
     816 *  This symbol, if defined, indicates that the program should include 
     817 *  <stdint.h>. 
     818 */ 
     819#$i_stdint I_STDINT     /**/ 
    809820 
    810821/* USE_TIOCNOTTY: 
     
    834845#$i_stdarg I_STDARG     /**/ 
    835846 
    836 /* HAS_MYSQL: 
    837  *     Defined if mysql client libraries are available. 
    838  */ 
    839 #$d_mysql HAS_MYSQL /**/ 
    840  
    841847/* HAS_OPENSSL: 
    842848 *     Defined if openssl 0.9.6+ is available. 
     
    844850#$d_openssl HAS_OPENSSL /**/ 
    845851 
    846 /* CAN_KEEPALIVE: 
    847  *  This symbol if defined indicates to the C program that the SO_KEEPALIVE 
    848  *  option of setsockopt() will work as advertised in the manual. 
    849  */ 
    850 /* CAN_KEEPIDLE: 
    851  *  This symbol if defined indicates to the C program that the TCP_KEEPIDLE 
    852  *  option of setsockopt() will work as advertised in the manual. 
    853  */ 
    854 #$d_keepalive CAN_KEEPALIVE     /**/ 
    855  
    856 #$d_keepidle CAN_KEEPIDLE       /**/ 
    857  
    858852#endif 
    859853!GROK!THIS! 
  • 1.8.1/game/README

    r469 r515  
    4242in mush.cnf) every time, since errors and other important messages get 
    4343printed to that logfile. 
     44 
     45After your first startup, it's a good idea to make some small 
     46change to the database (e.g., @create an object) and then 
     47do an @shutdown. Restart the game again and ensure that your 
     48object is still present - this verifies that the server is 
     49successfully dumping. 
    4450 
    4551============================================================================ 
  • 1.8.1/game/restart

    r511 r515  
    3737####################################################################### 
    3838 
    39 if [ -z $GAMEDIR ]; then 
     39if [ -z "$GAMEDIR" ]; then 
    4040  echo "You must set GAMEDIR in the restart script." 
    4141  exit 1 
    4242fi 
    4343 
    44 if [ ! -d $GAMEDIR ]; then 
     44if [ ! -d "$GAMEDIR" ]; then 
    4545  echo "GAMEDIR doesn't appear to be a directory. It's: $GAMEDIR" 
    4646  exit 1 
     
    5050echo Running from `pwd` 
    5151 
    52 if [ ! -f $CONF_FILE ]; then 
     52if [ ! -f "$CONF_FILE" ]; then 
    5353  echo "CONF_FILE doesn't exist. It's: $CONF_FILE" 
    5454  echo "Create $CONF_FILE from $GAMEDIR/mushcnf.dst" 
     
    7676egrep -s "^compress_program[    ]*[A-Za-z0-9]" $CONF_FILE 
    7777nocompress=$? 
    78 if [ $nocompress -eq 0 ]; then 
     78if [ "$nocompress" -eq 0 ]; then 
    7979    COMPRESSOR=`egrep "^compress_program" $CONF_FILE | sed "s/[^    ]*[     ]*\(.*\)/\1/" | sed 's/\r$//'` 
    8080    SUFFIX=`egrep "^compress_suffix" $CONF_FILE | sed "s/[^     ]*[     ]*\(.*\)/\1/" | sed 's/\r$//'` 
     
    8989 
    9090 
    91 if [ $mush -gt 0 ]; then 
     91if [ "$mush" -gt 0 ]; then 
    9292  echo Mush already active or some other process is using $GAMEDIR/$CONF_FILE. 
    9393  exit 0 
     
    9999echo Restarting Mush. 
    100100 
    101 if [ -r $PANICDIR/$PANICDB ]; then 
     101if [ -r "$PANICDIR/$PANICDB" ]; then 
    102102   end="`tail -1 $PANICDIR/$PANICDB`" 
    103103   if [ "$end" = "***END OF DUMP***" ]; then 
     
    114114rm -f log/*.log 
    115115 
    116 if [ -r data/$OUTDB$SUFFIX ]; then 
     116if [ -r "data/$OUTDB$SUFFIX" ]; then 
    117117   rm -f save/$INDB$SUFFIX.old 
    118118   mv -f data/$INDB$SUFFIX save/$INDB$SUFFIX.old 
     
    120120else 
    121121   echo "No $OUTDB$SUFFIX found." 
    122    if [ -r data/$INDB$SUFFIX ]; then 
     122   if [ -r "data/$INDB$SUFFIX" ]; then 
    123123      echo "Using $INDB$SUFFIX." 
    124124   else 
    125125      echo "No $INDB$SUFFIX found." 
    126       if [ -r save/$INDB$SUFFIX.old ]; then 
     126      if [ -r "save/$INDB$SUFFIX.old" ]; then 
    127127     echo "Using save/$INDB$SUFFIX.old." 
    128128     cp save/$INDB$SUFFIX.old data/$INDB$SUFFIX 
  • 1.8.1/game/txt/hlp/penncmd.hlp

    r511 r515  
    623623  needs to make allowances for the /noeval switch in it's matching. 
    624624 
     625  Commands added with @command/add, like other standard commands, 
     626  are never case-sensitive (regardless of CASE flag on the attribute). 
     627 
    625628(examples in help @command3) 
    626629& @command3 
     
    740743  Customizes the usual display of the object's name to people who 
    741744  are inside it and 'look'. It is evaluated as if it were a description 
    742   or similar message on the room. The room's dbref is passed as %0. 
     745  or similar message on the room. The room's dbref is passed as %0, 
     746  and the default-formatted name as %1. 
    743747 
    744748  @nameformat is not used when people outside the object look at it. 
    745749 
    746750  Example: Show the room's zone after its name. 
    747   @nameformat here = [name(%0)] [if(isdbref(zone(%0)),<[name(zone(%0))]>)] 
     751  @nameformat here = %1 [if(isdbref(zone(%0)),<[name(zone(%0))]>)] 
    748752 
    749753  See also: @exitformat, @conformat, @descformat 
     
    10801084& @edit 
    10811085& @gedit 
    1082   @edit[/first] <object>/<pattern> = <search>,<replace>  
    1083   @edit <object>/<pattern> = $,<string to append> 
    1084   @edit <object>/<pattern> = ^,<string to prepend> 
     1086  @edit[/first][/check] <object>/<pattern> = <search>,<replace>  
     1087  @edit[/check] <object>/<pattern> = $,<string to append> 
     1088  @edit[/check] <object>/<pattern> = ^,<string to prepend> 
    10851089 
    10861090  This is useful when you don't want to have to retype those obnoxiously  
     
    10981102  If the /first switch is used, only the first occurrence of <search> 
    10991103  is replaced. 
     1104 
     1105  If the /check switch is used, the editing is not actually done, but the 
     1106  results are shown to you (with changes hilighted) as if a normal @edit 
     1107  was performed. 
    11001108   
    11011109  See also ATTRIBUTES, edit() 
     
    14731481& @function 
    14741482  @function [<function name>] 
    1475   @function <name>=<obj>,<attrib>[,<min args>, <max args>[,<restrictions>]] 
     1483  @function[/preserve] <name>=<obj>,<attrib>[,<min args>, 
     1484     <max args>[,<restrictions>]] 
    14761485    or @function <function name>=<object>/<attribute> 
    14771486  @function/<switch> <function name> 
     1487  @function/restrict <function name>=<restrictions> 
    14781488   
    14791489  When used without any arguments, this command lists all global 
     
    14901500  /enable, to re-enable it. 
    14911501  /delete, to remove a user-defined function. 
     1502  /restrict, to change the restriction flags on an existing function. 
    14921503 
    14931504  Otherwise, this command defines a global function with the name 
    14941505  <function name>, which evaluates to <attribute> on <object>. 
    1495   <object> can be anything that the player using the @function command 
    1496   controls. <function name> must be 30 characters or less. 
    1497  
    14981506(continued in help @function2) 
    14991507& @function2 
     1508  <object> can be anything that the player using the @function command 
     1509  controls. <function name> must be 30 characters or less.  
     1510 
    15001511  A function defined using @function works just like any of the normal 
    15011512  MUSH functions, from the user's perspective. The functions are 
     
    15041515  Functions defined via @function should follow the format used by 
    15051516  UFUN() - %0 is the first argument passed, %1 is the second argument 
    1506   passed, and so forth. Option third and fourth arguments to @function 
     1517  passed, and so forth. Optional third and fourth arguments to @function 
    15071518  can be used to set a parser-enforced number of arguments for the function. 
     1519  An optional fifth argument will set restriction flags.  
     1520 
     1521  The /preserve switch, for MUX compability, does the same thing as the 
     1522  'localize' restriction - treats the attribute that's evaluated as if it  
     1523  were called with ulocal() instead of u(). 
    15081524   
    15091525  Example: 
     
    15401556 @function/restore will delete the @function and turn the built in 
    15411557 version back on. 
     1558 
     1559 Using @function on an already-added @function will delete the old one and 
     1560 install a new function with none of the settings of the old one kept. 
    15421561 
    15431562 For example: 
  • 1.8.1/game/txt/hlp/pennfunc.hlp

    r511 r515  
    147147  matchall()    member()      mix()         munge()       remove() 
    148148  replace()     rest()        revwords()    setdiff()     setinter() 
    149   setunion()    shuffle()     sort()        sortby()      splice() 
    150   step()        table()       wordpos()     words() 
     149  setunion()    shuffle()     sort()        sortby()      sortkey() 
     150  splice()      step()        table()       wordpos()     words() 
    151151     
    152152  See also: LISTS 
     
    15501550  You may or may not have to be able to examine the object to use this. 
    15511551& HASTYPE() 
    1552   hastype(<object>, <type>) 
     1552  hastype(<object>, <type list>) 
    15531553 
    15541554  Returns 1 if the object is of the named type, otherwise 0. 
    1555   Valid types are: ROOM, EXIT, PLAYER, THING, GARBAGE. 
     1555  Valid types are: ROOM, EXIT, PLAYER, THING, GARBAGE. You can 
     1556  test to see if the object is one of a number of types by using a space- 
     1557  separated list of types. 
    15561558  If an invalid type is given, #-1 NO SUCH TYPE is returned. 
    15571559& HIDDEN() 
     
    22802282  lvthings(<object>) 
    22812283 
    2282   This function returns the dbrefs of all connected and non-dark things 
    2283   inside an object. You must be in the object or control it to use this  
    2284   function. 
     2284  This function returns the dbrefs of all non-dark things inside an 
     2285  object. You must be in the object or control it to use this function. 
    22852286& LWHO() 
    22862287  lwho() 
     
    28432844  pmatch(<string>) 
    28442845  
    2845   Given the partial name of a player, it returns that player's dbref 
     2846  Given the partial name of a connected player, returns that player's dbref 
    28462847  number. This partial name completion works similarly to the partial 
    28472848  name completion of the "page" command - i.e. it first attempts to match 
    2848   the normal names of all players (connected or not), and if that fails, 
     2849  the full names of all players (connected or not), and if that fails, 
    28492850  it tries to match the partial names of connected players visible to 
    28502851  the enactor. If no player is matched, it returns "#-1". If more than 
     
    32413242  assigned with a single setq() or setr(), with additional pairs of 
    32423243  registers and values in the function's arguments. In this case, 
    3243   setr() returns the value stored in the first register listed. 
     3244  setr() returns the value stored in the first register listed.  All 
     3245  arguments are evaluated before any registers are set; if you want 
     3246  to use the result of setting one register in setting another, use 
     3247  multiple setq()s. 
    32443248 
    32453249  There are thirty-six local registers, numbered 0 through 9 and A 
     
    32593263  being manipulated, such as in the following example: 
    32603264 
    3261     &TEST object=[strlen(%0)] &CMD object=$test 
    3262     *:"[setq(0,u(TEST,%0))]Test. %0 has length [r(0)].  test Foo > 
    3263     Object says, "Test. Foo has length 3." 
     3265    &TEST object=[strlen(%0)] 
     3266    &CMD object=$test *:"[setq(0,u(TEST,%0))]Test. %0 has length %q0. 
     3267    test Foo 
     3268    > Object says, "Test. Foo has length 3." 
    32643269 
    32653270  In this case, it is a waste to use setq(), since we only use the 
     
    32673272  multiple times within the same command, it would be much more efficient 
    32683273  to use the local register, since TEST would then only be evaluated once. 
    3269  
    32703274  setq() can thus be used to improve the readability of MUSH code, as 
    32713275  well as to cut down the amount of time needed to do complex evaluations. 
     3276 
     3277  Swapping the contents of registers can be done without writing to 
     3278  temporary registers by setting both registers at once, so the code: 
     3279 
     3280    think setq(0,foo,1,bar)%q0%q1 - [setq(0,%q1,1,%q0)]%q0%q1 
     3281 
     3282  yields "foobar - barfoo". 
    32723283 
    32733284  See "help SETQ3" for scoping rules of setq(). 
     
    32853296  produces the following when executed by an object: 
    32863297 
    3287   Object says "foo" Object says "bar" Object says "foo" 
     3298  Object says "foo" 
     3299  Object says "bar" 
     3300  Object says "foo" 
    32883301 
    32893302& SETUNION() 
     
    33783391  function sizes should be kept reasonable. 
    33793392 
    3380   See also: anonymous attributes 
     3393  See also: anonymous attributes, sorting 
     3394& SORTKEY() 
     3395  sortkey([<obj>/]<attrib>,<list>[,<sort type>[,<delimiter>[,<osep>]]]) 
     3396 
     3397  This function creates a list of keys by passing every element of <list> 
     3398  into the u-function given in <attrib>. The list is then sorted according 
     3399  to the sorting method in <sort type>, or is automatically guessed. 
     3400  (As per 'help sorting') 
     3401 
     3402  This is equivalent to: 
     3403    > &munge_sort me=sort(%0,<sort type>) 
     3404    > munge(munge_sort,map(<attrib>,<list>),<list>) 
     3405 
     3406    Only there is no risk with delimiters ocurring within the list. 
     3407 
     3408  A simple example, which sorts players by their names: 
     3409    > @@ #1 is "God", #2 is "Amby", "#3" is "Bob" 
     3410    > &KEY_NAME me=name(%0) 
     3411    > say sortkey(key_name,#1 #2 #3) 
     3412    You say, "#2 #3 #1" 
     3413 
     3414  See also: anonymous attributes, sorting 
    33813415& SORTING 
    33823416  In functions where you can specify a sorting method, you can provide 
     
    34053439  on the particular mush and its environment. 
    34063440 
    3407   See also: sort(), sortby(), setunion(), setinter(), setdiff() 
     3441  See also: sort(), sortby(), sortkey(), setunion(), setinter(), setdiff() 
    34083442& SOUNDEX() 
    34093443  soundex(<word>) 
     
    34963530 
    34973531     &SEL_GETID obj = SELECT id FROM mytable WHERE name = '[sqlescape(%0)]' 
    3498      &DOIT obj = $do *: ... [setq(0,u(SEL_GETID,%0))] ... 
     3532     &DOIT obj = $do *: ... [setq(0,sql(u(SEL_GETID,%0),~,|))] ... 
    34993533 
    35003534  See also: sqlescape(), @sql 
  • 1.8.1/game/txt/hlp/penntop.hlp

    r511 r515  
    11861186  pattern, and match the corresponding characters in the subject.  
    11871187 
    1188   There are two different sets of meta-characters: those that are 
     1188  There are two different sets of meta-characters: those that are 
    11891189  recognized anywhere in the pattern except within square brackets, 
    11901190  and those that are recognized in square  brackets.  Outside square 
     
    12311231  (Cont'd in help regexp syntax4) 
    12321232& regexp syntax4 
    1233   A backlash can also two useful assertions -- conditions that 
     1233  A backlash can also be used for two useful assertions -- conditions that 
    12341234  must be met at a particular point in a match: 
    12351235 
     
    15171517  Nonstandard attributes are set using &<attrib> <obj>=<value>  
    15181518  Attributes may also be set using @set <obj>=<attrib>:<value> 
     1519  or the attrib_set() or set() functions. 
    15191520   
    15201521  Attributes are cleared using @<attrib> <obj> or &<attrib> <obj> 
    1521   or with @wipe. 
    1522    
    1523   Note that there is a difference between clearing an attribute 
    1524   and setting an attribute to a null value: 
     1522  or with @wipe or wipe(). 
     1523   
     1524  Note that if the empty_attrs configuration option is set  
     1525  (@config empty_attrs to check), there is a difference between  
     1526  clearing an attribute and setting an attribute to a null value: 
    15251527    @va me       <--- wipes out my VA attribute 
    15261528    @va me=      <--- sets my VA attribute to be empty 
     
    15291531  are gone forever. 
    15301532   
    1531   See also ATTRIBUTES, NON-STANDARD ATTRIBUTES, @set, @wipe 
     1533  See also ATTRIBUTES, NON-STANDARD ATTRIBUTES, @set, @wipe, attrib_set(),  
     1534  set(), wipe() 
    15321535& SPOOFING 
    15331536  Spoofing is the act of making other characters think that a person 
     
    16011604     %c = text of the last command, _before_ evaluation. 
    16021605     %? = The current function invocation and depth counts. 
    1603      %+ = The number of arguments passed to the current function. 
     1606     %+ = The number of arguments passed to the current ufun. 
    16041607    %qN = the equivalent of r(N), a register set by a setq() function. 
    16051608  
  • 1.8.1/game/txt/hlp/pennv180.hlp

    <
    r511 r515  
     1& 1.8.0p8 
     2Version 1.8.0 patchlevel 8                      August 29, 2005 
     3 
     4Fixes: 
     5  * /noflagcopy switch to @cpattr/@mvattr works now. Report by 
     6    Kimiko Muffin. 
     7  * SHS encryption now works on 64-bit architectures that define 
     8    uint32_t. Report by Licenser@M*U*S*H. 
     9 
     10