[PENNMUSH-ANNOUNCE] 1.7.4-patch18

dunemush@pennmush.org dunemush at pennmush.org
Fri, 10 May 2002 21:58:12 -0500


This is patch18 to PennMUSH 1.7.4. After applying this patch, you will
have version 1.7.4p18

To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
	patch -p1 < 1.7.4-patch18
	./Configure -d
	make update
	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. Same for index.{nws,hlp,evt}.

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

In this patch:

Minor Changes:
  * The Mersenne Twister RNG has been backported from 1.7.5 into
    this patchlevel, as it is not susceptible to some bugs that could
    cause the RNG to hang the server. Report by Bellemore@M*U*S*H.
  * Improved detection of info_slave errors. Based on patch by CU5.
  * Rooms and exits can now be @forced. Suggested by Philip Mak.
  * Deleting files from the hlp/nws/etc. directories is now sufficient
    to cause game/txt/Makefile to rebuild the txt files. Patch by
    Philip Mak.
  * A see_all player may now use @chan/decompile on any channel.
    Previously, the ROYALTY flag was required. Suggested by Oriens@Alexandria.
Fixes:
  * The QUEUE and semaphore attributes aren't listed in @decompile
    anymore. Suggested by Oriens@Alexandria. [SW]
  * Several compiler warnings fixed. [SW]
  * The LASTSITE and LASTIP attributes are now set locked and wizard by default,
    to go along with the other connection-tracking attributes. [SW]
  * Help on-vacation updated. Report by Nymeria@M*U*S*H.
  * Help for following() function added. Report by Ashen-Shugar@Rhost.
  * The last line of the access.cnf file sometimes wouldn't get read 
    properly. [SW]
  * lnum improperly cached its return values without consideration for
    changes in separator, so subsequent lnums with different separators
    broke. Reported by Rhysem and Ambrosia@M*U*S*H. [TAP]
  * Failing to speak on a channel you can't see no longer reveals the
    full channel name. Reported by Vadiv@M*U*S*H.
  * Passing a negative argument to the space() function now returns
    an error string instead of 8192 blanks. Patch by Myrddin.
  * Improved messages for following/unfollowing an ambiguous object.
    Reported by Philip Mak.


Prereq: 1.7.4p17
*** 1_7_4.260/Patchlevel Mon, 15 Apr 2002 21:33:03 -0500 dunemush (pennmush/5_Patchlevel 1.35 600)
--- 1_7_4.279(w)/Patchlevel Mon, 06 May 2002 16:06:40 -0500 dunemush (pennmush/5_Patchlevel 1.36 600)
***************
*** 1,2 ****
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.4p17
--- 1,2 ----
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.4p18
*** 1_7_4.260/CHANGES Mon, 15 Apr 2002 21:33:03 -0500 dunemush (pennmush/8_CHANGES 1.219.1.72.1.35 600)
--- 1_7_4.279(w)/CHANGES Fri, 10 May 2002 21:47:41 -0500 dunemush (pennmush/8_CHANGES 1.219.1.72.1.50 600)
***************
*** 18,23 ****
--- 18,57 ----
  
  ==========================================================================
  
+ Version 1.7.4 patchlevel 18		       May 6, 2002
+ 
+ Minor Changes:
+   * The Mersenne Twister RNG has been backported from 1.7.5 into
+     this patchlevel, as it is not susceptible to some bugs that could
+     cause the RNG to hang the server. Report by Bellemore@M*U*S*H.
+   * Improved detection of info_slave errors. Based on patch by CU5.
+   * Rooms and exits can now be @forced. Suggested by Philip Mak.
+   * Deleting files from the hlp/nws/etc. directories is now sufficient
+     to cause game/txt/Makefile to rebuild the txt files. Patch by
+     Philip Mak.
+   * A see_all player may now use @chan/decompile on any channel.
+     Previously, the ROYALTY flag was required. Suggested by Oriens@Alexandria.
+ Fixes:
+   * The QUEUE and semaphore attributes aren't listed in @decompile
+     anymore. Suggested by Oriens@Alexandria. [SW]
+   * Several compiler warnings fixed. [SW]
+   * The LASTSITE and LASTIP attributes are now set locked and wizard by default,
+     to go along with the other connection-tracking attributes. [SW]
+   * Help on-vacation updated. Report by Nymeria@M*U*S*H.
+   * Help for following() function added. Report by Ashen-Shugar@Rhost.
+   * The last line of the access.cnf file sometimes wouldn't get read 
+     properly. [SW]
+   * lnum improperly cached its return values without consideration for
+     changes in separator, so subsequent lnums with different separators
+     broke. Reported by Rhysem and Ambrosia@M*U*S*H. [TAP]
+   * Failing to speak on a channel you can't see no longer reveals the
+     full channel name. Reported by Vadiv@M*U*S*H.
+   * Passing a negative argument to the space() function now returns
+     an error string instead of 8192 blanks. Patch by Myrddin.
+   * Improved messages for following/unfollowing an ambiguous object.
+     Reported by Philip Mak.
+ 
+ 
  Version 1.7.4 patchlevel 17		       April 14, 2002
  
  Minor Changes:
*** 1_7_4.260/game/txt/nws/index.nws Wed, 13 Dec 2000 15:49:16 -0600 dunemush (pennmush/11_index.nws 1.1.1.1.1.1.1.1 660)
--- 1_7_4.279(w)/game/txt/nws/index.nws Mon, 15 Apr 2002 23:25:39 -0500 dunemush (pennmush/11_index.nws 1.1.1.1.1.1.1.1.1.1 660)
***************
*** 1,6 ****
  
  & Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  changes                   code
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
--- 1,8 ----
  
  & Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  changes                   code                                               
! 
! & &Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
*** 1_7_4.260/game/txt/hlp/pennvers.hlp Mon, 15 Apr 2002 21:33:03 -0500 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.3 600)
--- 1_7_4.279(w)/game/txt/hlp/pennvers.hlp Fri, 10 May 2002 21:48:33 -0500 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 600)
***************
*** 1,5 ****
  & changes
! & 1.7.4p17
  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.4p18
  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,51 ----
  A list of the patchlevels associated with each release can
  be read in 'help patchlevels'.
  
+ Version 1.7.4 patchlevel 18		       May 6, 2002
+ 
+ Minor Changes:
+   * The Mersenne Twister RNG has been backported from 1.7.5 into
+     this patchlevel, as it is not susceptible to some bugs that could
+     cause the RNG to hang the server. Report by Bellemore@M*U*S*H.
+   * Improved detection of info_slave errors. Based on patch by CU5.
+   * Rooms and exits can now be @forced. Suggested by Philip Mak.
+   * Deleting files from the hlp/nws/etc. directories is now sufficient
+     to cause game/txt/Makefile to rebuild the txt files. Patch by
+     Philip Mak.
+   * A see_all player may now use @chan/decompile on any channel.
+     Previously, the ROYALTY flag was required. Suggested by Oriens@Alexandria.
+ Fixes:
+   * The QUEUE and semaphore attributes aren't listed in @decompile
+     anymore. Suggested by Oriens@Alexandria. [SW]
+   * Several compiler warnings fixed. [SW]
+   * The LASTSITE and LASTIP attributes are now set locked and wizard by default,
+     to go along with the other connection-tracking attributes. [SW]
+   * Help on-vacation updated. Report by Nymeria@M*U*S*H.
+   * Help for following() function added. Report by Ashen-Shugar@Rhost.
+   * The last line of the access.cnf file sometimes wouldn't get read 
+     properly. [SW]
+   * lnum improperly cached its return values without consideration for
+     changes in separator, so subsequent lnums with different separators
+     broke. Reported by Rhysem and Ambrosia@M*U*S*H. [TAP]
+   * Failing to speak on a channel you can't see no longer reveals the
+     full channel name. Reported by Vadiv@M*U*S*H.
+   * Passing a negative argument to the space() function now returns
+     an error string instead of 8192 blanks. Patch by Myrddin.
+   * Improved messages for following/unfollowing an ambiguous object.
+     Reported by Philip Mak.
+ 
+ 
+ & 1.7.4p17
  Version 1.7.4 patchlevel 17		       April 14, 2002
  
  Minor Changes:
***************
*** 5063,5069 ****
  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.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
  1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
  1.7.2: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
         19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
--- 5098,5104 ----
  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.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18
  1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
  1.7.2: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
         19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
*** 1_7_4.260/game/txt/hlp/pennfunc.hlp Thu, 04 Apr 2002 15:04:53 -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 600)
--- 1_7_4.279(w)/game/txt/hlp/pennfunc.hlp Fri, 10 May 2002 21:43: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 600)
***************
*** 96,105 ****
    Dbref functions return a dbref or list of dbrefs related to some value
    on an object.
    
!   con()         entrances()   followers()   home()        lcon()        
!   lexits()      loc()         locate()      lparent()     lsearch()     
!   next()        num()         owner()       parent()      pmatch()      
!   rloc()        rnum()        room()        where()       zone()
    
  See also: DBREF
  & Information functions
--- 96,106 ----
    Dbref functions return a dbref or list of dbrefs related to some value
    on an object.
    
!   con()         entrances()   followers()   following()   home()        
!   lcon()        lexits()      loc()         locate()      lparent()     
!   lsearch()     next()        num()         owner()       parent()      
!   pmatch()      rloc()        rnum()        room()        where()       
!   zone()
    
  See also: DBREF
  & Information functions
***************
*** 795,800 ****
--- 796,803 ----
    Example:
    > say [edit(this is a test,^,I think%b,$,.,a test,an exam)]
    You say "I think this is an exam." 
+ 
+   edit() can not replace a literal single ^ or $. Use regedit() for that.
    
    See also @edit, regedit().
  & ELEMENT()
***************
*** 1060,1065 ****
--- 1063,1073 ----
  
    Returns the list of things and players following object. You must
    control object.
+ & FOLLOWING()
+   following(<object>)
+ 
+   Returns the list of things and players that the object is following.
+   You must control object.
  & FOREACH()
    foreach([<object>/]<attribute>,<string>[,<start>[,<end>]])
   
*** 1_7_4.260/game/txt/hlp/pennflag.hlp Mon, 04 Mar 2002 15:09:34 -0600 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 600)
--- 1_7_4.279(w)/game/txt/hlp/pennflag.hlp Sun, 28 Apr 2002 15:57:50 -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.1 600)
***************
*** 483,490 ****
  
    This flag may be used by the MUSH to allow players to indicate when 
    they have left for vacation, to prevent themselves from being purged
!   for inactivity. It is automatically cleared whenever a player logs in,
!   so players should @set it just prior to leaving the net.
  & OPAQUE
    Flag:  OPAQUE  (all types)
  
--- 483,492 ----
  
    This flag may be used by the MUSH to allow players to indicate when 
    they have left for vacation, to prevent themselves from being purged
!   for inactivity. Its usefulness depends on game policy.
! 
!   You will be notified (periodically and on connect) if you leave this flag 
!   set, to remind you to unset it when you return from vacation.
  & OPAQUE
    Flag:  OPAQUE  (all types)
  
*** 1_7_4.260/game/txt/hlp/penncmd.hlp Mon, 15 Apr 2002 21:33:03 -0500 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.1 600)
--- 1_7_4.279(w)/game/txt/hlp/penncmd.hlp Mon, 22 Apr 2002 11:30:13 -0500 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 600)
***************
*** 3186,3192 ****
    through. This doesn't prevent you from going somewhere else on your
    own.
  
! See also: unfollow, dismiss, desert, followers(), @follow, @ofollow, @afollow
  & dismiss
    dismiss <object>
    dismiss
--- 3186,3193 ----
    through. This doesn't prevent you from going somewhere else on your
    own.
  
! See also: unfollow, dismiss, desert, followers(), following(), 
!           @follow, @ofollow, @afollow
  & dismiss
    dismiss <object>
    dismiss
*** 1_7_4.260/game/txt/hlp/index.hlp Tue, 09 Jan 2001 17:56:37 -0600 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2 660)
--- 1_7_4.279(w)/game/txt/hlp/index.hlp Mon, 15 Apr 2002 23:25:39 -0500 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.1.1 660)
***************
*** 1,479 ****
  
  & Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  "                         $-commands                $-commands2
!  +                         1.50p6                    1.50p7
!  1.50p8                    1.50p9                    1.50p10
!  1.50p11                   1.50p12                   1.50p13
!  1.50p14                   1.50pdune1                1.50pdune2
!  1.6.0p0                   1.6.0p3                   1.6.0p4
!  1.6.0p5                   1.6.1p0                   1.6.1p1
!  1.6.10p0                  1.6.10p1                  1.6.10p2
!  1.6.10p3                  1.6.10p4                  1.6.10p5
!  1.6.10p6                  1.6.10p6                  1.6.2p0
!  1.6.2p1                   1.6.3p0                   1.6.3p1
!  1.6.3p2                   1.6.3p3                   1.6.3p4
!  1.6.3p5                   1.6.3p6                   1.6.3p7
!  1.6.4p0                   1.6.4p1                   1.6.4p2
!  1.6.5p0                   1.6.5p1                   1.6.5p2
!  1.6.5p3                   1.6.5p4                   1.6.6p0
  
  For more, see Entries-2
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-2
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  1.6.7p0                   1.6.7p1                   1.6.7p2
!  1.6.7p3                   1.6.7p4                   1.6.7p5
!  1.6.7p6                   1.6.8p0                   1.6.8p1
!  1.6.9p0                   1.6.9p1                   1.6.9p2
!  1.6.9p3                   1.6.9p4                   1.6.9p5
!  1.6.9p6                   1.6.9p7                   1.6.9p8
!  1.6.9p9                   1.7.0p0                   1.7.0p1
!  1.7.0p2                   1.7.0p3                   1.7.0p4
!  1.7.0p5                   1.7.0p6                   1.7.0p7
!  1.7.0p8                   1.7.0p9                   1.7.0p10
!  1.7.0p11                  1.7.0p11                  1.7.1p0
!  1.7.1p1                   1.7.1p2                   1.7.1p3
!  1.7.2p0                   1.7.2p1                   1.7.2p2
!  1.7.2p3                   1.7.2p4                   1.7.2p5
!  1.7.2p6                   1.7.2p7                   1.7.2p8
!  1.7.2p9                   1.7.2p10                  1.7.2p11
  
  For more, see Entries-3
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-3
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  1.7.2p12                  1.7.2p13                  1.7.2p14
!  1.7.2p15                  1.7.2p16                  1.7.2p17
!  1.7.2p18                  1.7.2p19                  1.7.2p20
!  1.7.2p21                  1.7.2p22                  1.7.2p23
!  1.7.2p24                  1.7.2p25                  1.7.2p26
!  1.7.2p27                  1.7.2p28                  1.7.2p29
!  1.7.2p30                  1.7.2p31                  1.7.2p32
!  1.7.3p0                   1.7.3p1                   1.7.3p2
!  1.7.3p3                   1.7.3p4                   1.7.3p5
!  1.7.3p6                   1.7.3p7                   1.7.3p8
!  1.7.3p9                   1.7.3p10                  1.7.3p11
!  1.7.3p12                  1.7.3p13                  :
!  ;                         @-attributes              @-building
!  @-general                 @-wizard                  @@
!  @@()                      @aahear                   @aclone
!  @aconnect                 @adeath                   @adescribe
  
  For more, see Entries-4
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-4
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @adestroy                 @adisconnect              @adrop
!  @aefail                   @aenter                   @afailure
!  @afollow                  @agive                    @ahear
!  @aidescribe               @aleave                   @alfail
!  @alias                    @allhalt                  @allquota
!  @amhear                   @amove                    @apayment
!  @areceive                 @asuccess                 @atport
!  @atrchown                 @atrlock                  @attribute
!  @aufail                   @aunfollow                @ause
!  @away                     @azenter                  @azleave
!  @boot                     @break                    @cemit
!  @channel                  @channel2                 @channel3
!  @channel4                 @channel5                 @charges
!  @chat                     @chown                    @chownall
!  @chzone                   @chzone2                  @chzoneall
!  @clock                    @clock2                   @clone
  
  For more, see Entries-5
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-5
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @command                  @comment                  @config
!  @conformat                @cost                     @cpattr
!  @create                   @dbck                     @death
!  @decompile                @decompile2               @decompile3
!  @describe                 @destroy                  @destroy2
!  @dig                      @dig2                     @disable
!  @doing                    @dolist                   @drain
!  @drop                     @dump                     @ealias
!  @edit                     @efail                    @elock
!  @emit                     @enable                   @enter
!  @entrances                @eunlock                  @exitformat
!  @failure                  @filter                   @filter2
!  @find                     @firstexit                @follow
!  @force                    @force2                   @function
!  @function2                @function3                @function4
!  @gedit                    @give                     @grep2
  
  For more, see Entries-6
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-6
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @grep                     @halt                     @haven
!  @hide                     @idescribe                @idle
!  @infilter                 @inprefix                 @kick
!  @lalias                   @leave                    @lemit
!  @lfail                    @link                     @list
! @listen <object> = <string>                         @listen2
!  @listmotd                 @lock                     @lock2
!  @lock3                    @lock4                    @lock5
!  @lock6                    @lock7                    @lock8
! @logwipe/<switch> <password>
!  @map2                     @mail                     @malias
!  @malias2                  @malias3                  @malias4
!  @malias5                  @map                      @motd
!  @move                     @mvattr                   @name
!  @nameformat               @newpassword              @notify
!  @nuke                     @odeath                   @odescribe
  
  For more, see Entries-7
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-7
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @odrop                    @oefail                   @oemit
!  @oenter                   @ofailure                 @ofollow
!  @ogive                    @oidescribe               @oleave
!  @olfail                   @omove                    @opayment
!  @open                     @oreceive                 @osuccess
!  @otport                   @oufail                   @ounfollow
!  @ouse                     @oxenter                  @oxleave
!  @oxmove                   @oxtport                  @ozenter
!  @ozleave                  @parent                   @password
!  @payment                  @pcreate                  @pemit
!  @pemit2                   @poll                     @poor
!  @power                    @prefix                   @ps
!  @purge                    @quota                    @readcache
!  @receive                  @recycle                  @rejectmotd
!  @remit                    @restart                  @runout
!  @rwall                    @rwallemit                @rwallpose
  
  For more, see Entries-8
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-8
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @scan                     @search                   @search2
!  @search3                  @select                   @set
!  @set2                     @set3                     @sex
!  @shutdown                 @sitelock                 @sitelock2
!  @sitelock3                @squota                   @startup
!  @stats                    @success                  @sweep
!  @switch                   @switch2                  @teleport
!  @tport                    @trigger                  @trigger2
!  @ufail                    @ulock                    @undestroy
!  @unfollow                 @unlink                   @unlock
!  @unrecycle                @uptime                   @uptime2
!  @use                      @uunlock                  @verb
!  @verb2                    @verb3                    @verb4
!  @version                  @vrml_url                 @wait
!  @wait2                    @wall                     @wallemit
!  @wallpose                 @warnings                 @warnings2
  
  For more, see Entries-9
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-9
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @warnings3                @wcheck                   @whereis
!  @wipe                     @wizemit                  @wizmotd
!  @wizpose                  @wizwall                  @zemit
!  @zenter                   @zleave                   \
!  abode                     abs()                     acos()
!  action lists              action2                   add()
!  after()                   ahelp                     alphamax()
!  alphamin()                and()                     andflags()
!  anews                     ansi                      ansi()
!  aposs()                   art()                     asin()
!  atan()                    atrlock()                 attrcnt()
!  attrib-ownership          attribute functions       attribute list
!  attributes                attributes list           attributes2
!  attributes3               attributes4               audible
!  audible2                  band()                    beep()
!  before()                  being killed              bitwise functions
  
  For more, see Entries-10
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-10
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  bnand()                   bnot()                    boolean functions
!  boolean values            boolean2                  bor()
!  bound()                   brackets()                brief
!  builder                   bxor()                    cand()
!  capstr()                  case()                    caseall()
!  cat()                     cd                        ceil()
!  cemit()                   center()                  cflags()
!  ch                        changes                   channel-list
!  channels()                chat                      chown_ok
!  clients                   clock()                   clone()
!  cloudy                    code                      color
!  commands                  comp()                    comsys
!  con()                     config()                  conn()
!  connected                 control                   controls()
!  convsecs()                convtime()                convutcsecs()
!  copyright                 copyrite                  cor()
  
  For more, see Entries-11
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-11
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  cos()                     costs                     create()
!  credits                   ctime()                   ctitle()
!  cv                        cwho()                    dark
!  dark2                     database                  dbref #
!  dbref functions           dbref number              dbref2
!  dbrefs                    debug                     debug2
!  dec()                     decrypt()                 default()
!  delete()                  destroy_ok                die()
!  dig()                     dist2d()                  dist3d()
!  div()                     doing                     doing()
!  drop                      drop-tos                  e()
!  edefault()                edit()                    element()
!  elements()                elock()                   emit()
!  enactor                   encrypt()                 endtag()
!  enter                     enter_ok                  entrances()
!  eq()                      escape()                  etimefmt()
  
  For more, see Entries-12
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-12
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  etimefmt2                 eval()                    evaluation order
!  evaluation2               events                    examine
!  executor                  exit()                    exits
!  exits2                    exp()                     extract()
!  failure                   fdiv()                    filter()
!  filterbool()              findable()                first()
!  fixed                     flag list                 flags
!  flags list                flags()                   flags2
!  flip()                    floating                  floating point functions
!  floor()                   floordiv()                fmod()
!  fold()                    fold2                     folderstats()
!  follow                    followers()               force_white
!  foreach()                 foreach2                  fullname()
!  function list             functions                 functions()
!  functions2                gagged                    gender
!  get                       get()                     get_eval()
  
  For more, see Entries-13
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-13
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  give                      global commands           globals
!  go                        going                     goto
!  grab()                    graball()                 grep()
!  grepi()                   gt()                      gte()
!  halt                      hasattr()                 hasattrp()
!  hasattrpval()             hasattrval()              hasflag()
!  haspower()                hastype()                 haven
!  help                      here                      hidden()
!  home()                    homes                     html
!  html functions            html()                    idle()
!  idlesecs()                if()                      ifelse()
!  inc()                     index                     index()
!  info                      information functions     inherit
!  inherit2                  insert()                  interiors
!  interiors2                inum()                    inventory
!  isdaylight()              isdbref()                 isint()
  
  For more, see Entries-14
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-14
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  isnum()                   isword()                  items()
!  iter()                    iter2                     itext()
!  judge                     jump_ok                   jury_ok
!  kill                      last                      last()
!  lastsite                  lattr()                   lcon()
!  lcstr()                   ldelete()                 leave
!  left()                    lemit()                   lexits()
!  license                   light                     link()
!  link_ok                   linking                   list functions
!  listen_parent             listening                 listening2
!  listening3                lists                     lit()
!  ljust()                   lmath()                   ln()
!  lnum()                    loc()                     localize()
!  locate()                  locate2                   lock list
!  lock types                lock()                    locking
!  locklist                  locks                     locktypes
  
  For more, see Entries-15
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-15
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  locktypes2                log()                     logout
!  look                      look2                     looping
!  lparent()                 lsearch()                 lsearch2
!  lstats()                  lt()                      lte()
!  lwho()                    macros                    macros2
!  mail()                    mail-admin                mail-folders
!  mail-other                mail-reading              mail-sending
!  maildstats()              mailfrom()                mailfstats()
!  mailstats()               mailstatus()              mailsubject()
!  mailtime()                map()                     master room
!  match()                   matchall()                matching
!  math functions            max()                     me
!  mean()                    median()                  member()
!  merge()                   mid()                     min()
!  mix()                     mod()                     modulo()
!  modulus()                 money                     money()
  
  For more, see Entries-16
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-16
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  monitor                   mortal                    move
!  mtime()                   mudname()                 mul()
!  munge()                   munge2                    munge3
!  mushcode                  mushcode2                 mwho()
!  myopic                    name()                    nand()
!  nattr()                   nearby()                  neq()
!  newbie                    newbie2                   newbie3
!  news                      next()                    no_command
!  no_leave                  no_tel                    no_warn
!  noleave                   non-standard attributes   nor()
!  nospoof                   not()                     nowarn
!  null()                    num()                     obj()
!  object parents            objeval()                 objmem()
!  oemit()                   on-vacation               opaque
!  open()                    or()                      orflags()
!  owner()                   page                      page2
  
  For more, see Entries-17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  paranoid                  parent                    parent()
!  parents                   parents2                  parents3
!  parents4                  parents5                  parse()
!  patchlevels               pemit()                   pi()
!  player                    playermem()               pmatch()
!  poll()                    ports()                   pos()
!  pose                      pose2                     poss()
!  power()                   powers list               powers list2
!  powers()                  powers2                   pueblo
!  pueblo features           pueblo()                  puppet
!  puppets                   puppets2                  queue
!  quiet                     quit                      quota()
!  r()                       r-function                rand()
!  read                      regedit()                 regeditall()
!  regeditalli()             regediti()                regexp
!  regexp classes            regexp classes2           regexp examples
  
  For more, see Entries-18
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-18
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  regexp syntax             regexp syntax2            regexp syntax3
!  regexp syntax4            regexp syntax5            regexp syntax6
!  regexp syntax7            regexp syntax8            regexps
!  regexps2                  registers                 registers2
!  regmatch()                regrab()                  regraball()
! regular expression functions
!  remainder()               remit()                   remove()
!  repeat()                  replace()                 rest()
!  restarts()                restarttime()             restrict
!  restrict2                 restrict3                 reverse()
!  revwords()                right()                   rjust()
!  rloc()                    rnum()                    robbery
!  room                      room()                    round()
!  royalty                   rquota                    rules
!  s()                       s-function                safe
!  say                       score                     scramble()
  
  For more, see Entries-19
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-19
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  search()                  search2                   secs()
!  secure()                  semaphores                semaphores2
!  semaphores3               semaphores4               semaphores5
!  semaphores6               semipose                  session
!  set()                     setdiff()                 setinter()
!  setq()                    setq2                     setq3
!  setr()                    setting-attributes        setunion()
!  sex                       shl()                     shr()
!  shuffle()                 sign()                    sin()
!  slay                      softcode                  sort()
!  sortby()                  soundex()                 soundex2
!  soundlike()               soundslike()              space()
!  spellnum()                splice()                  spoofing
!  sqrt()                    squish()                  stack
!  starttime()               stats()                   stddev()
!  step2                     step()                    sticky
  
  For more, see Entries-20
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-20
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  strcat()                  string functions          strings
!  strinsert()               stripansi()               strlen()
!  strmatch()                sub()                     subj()
!  substitutions             substitutions2            substitutions3
!  substitutions4            success                   suspect
!  switch()                  switch2                   switchall()
!  switches                  t()                       table()
!  tag()                     tagwrap()                 take
!  tan()                     teach                     tel()
!  temple                    terse                     think
!  time functions            time()                    timefmt()
!  timefmt2                  timestring()              topics
!  topics2                   transparent               transparent2
!  trim()                    trunc()                   trust
!  trust2                    type()                    types of objects
!  types2                    u()                       u2
  
  For more, see Entries-21
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-21
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  u3                        ucstr()                   udefault()
!  ufun()                    ufun2                     ufun3
!  uldefault()               ulocal()                  ulocal2
!  unfindable                unfollow                  uninspected
!  unregistered              use                       user-defined commands
!  user-defined2             utctime()                 utility functions
!  v()                       v-function                vadd()
!  val()                     valid()                   vdim()
!  vdot()                    verbose                   verbs
!  version()                 visible()                 visual
!  vmag()                    vmax()                    vmin()
!  vmul()                    vrml                      vsub()
!  vunit()                   warnings                  warnings list
!  warnings list2            weirdansi                 where()
!  whisper                   whisper2                  white
!  who                       wildcards                 wipe()
  
  For more, see Entries-22
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
- 
  & Entries-22
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  with                      wizard                    wordpos()
!  words()                   wrap()                    xget()
!  xor()                     z_tel                     zemit()
!  zfun()                    zmo                       zmp
!  zmr                       zone                      zone master rooms
!  zone masters              zone objects              zone()
!  zones                     zones2                    zones3
!  zones4
! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  
  & &Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  &help
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
--- 1,481 ----
  
  & Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  "                         $-commands                $-commands2              
!  +                         1.50p6                    1.50p7                   
!  1.50p8                    1.50p9                    1.50p10                  
!  1.50p11                   1.50p12                   1.50p13                  
!  1.50p14                   1.50pdune1                1.50pdune2               
!  1.6.0p0                   1.6.0p3                   1.6.0p4                  
!  1.6.0p5                   1.6.1p0                   1.6.1p1                  
!  1.6.10p0                  1.6.10p1                  1.6.10p2                 
!  1.6.10p3                  1.6.10p4                  1.6.10p5                 
!  1.6.10p6                  1.6.10p6                  1.6.2p0                  
!  1.6.2p1                   1.6.3p0                   1.6.3p1                  
!  1.6.3p2                   1.6.3p3                   1.6.3p4                  
!  1.6.3p5                   1.6.3p6                   1.6.3p7                  
!  1.6.4p0                   1.6.4p1                   1.6.4p2                  
!  1.6.5p0                   1.6.5p1                   1.6.5p2                  
!  1.6.5p3                   1.6.5p4                   1.6.6p0                  
  
  For more, see Entries-2
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-2
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  1.6.7p0                   1.6.7p1                   1.6.7p2                  
!  1.6.7p3                   1.6.7p4                   1.6.7p5                  
!  1.6.7p6                   1.6.8p0                   1.6.8p1                  
!  1.6.9p0                   1.6.9p1                   1.6.9p2                  
!  1.6.9p3                   1.6.9p4                   1.6.9p5                  
!  1.6.9p6                   1.6.9p7                   1.6.9p8                  
!  1.6.9p9                   1.7.0p0                   1.7.0p1                  
!  1.7.0p2                   1.7.0p3                   1.7.0p4                  
!  1.7.0p5                   1.7.0p6                   1.7.0p7                  
!  1.7.0p8                   1.7.0p9                   1.7.0p10                 
!  1.7.0p11                  1.7.0p11                  1.7.1p0                  
!  1.7.1p1                   1.7.1p2                   1.7.1p3                  
!  1.7.2p0                   1.7.2p1                   1.7.2p2                  
!  1.7.2p3                   1.7.2p4                   1.7.2p5                  
!  1.7.2p6                   1.7.2p7                   1.7.2p8                  
!  1.7.2p9                   1.7.2p10                  1.7.2p11                 
  
  For more, see Entries-3
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-3
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  1.7.2p12                  1.7.2p13                  1.7.2p14                 
!  1.7.2p15                  1.7.2p16                  1.7.2p17                 
!  1.7.2p18                  1.7.2p19                  1.7.2p20                 
!  1.7.2p21                  1.7.2p22                  1.7.2p23                 
!  1.7.2p24                  1.7.2p25                  1.7.2p26                 
!  1.7.2p27                  1.7.2p28                  1.7.2p29                 
!  1.7.2p30                  1.7.2p31                  1.7.2p32                 
!  1.7.2p33                  1.7.2p34                  1.7.2p35                 
!  1.7.3p0                   1.7.3p1                   1.7.3p2                  
!  1.7.3p3                   1.7.3p4                   1.7.3p5                  
!  1.7.3p6                   1.7.3p7                   1.7.3p8                  
!  1.7.3p9                   1.7.3p10                  1.7.3p11                 
!  1.7.3p12                  1.7.3p13                  1.7.3p14                 
!  1.7.4p0                   1.7.4p1                   1.7.4p2                  
!  1.7.4p3                   1.7.4p4                   1.7.4p5                  
!  1.7.4p6                   1.7.4p7                   1.7.4p8                  
  
  For more, see Entries-4
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-4
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  1.7.4p9                   1.7.4p10                  1.7.4p11                 
!  1.7.4p12                  1.7.4p13                  1.7.4p14                 
!  1.7.4p15                  1.7.4p16                  1.7.4p17                 
!  :                         ;                         @-attributes             
!  @-building                @-general                 @-wizard                 
!  @@                        @@()                      @aahear                  
!  @aclone                   @aconnect                 @adeath                  
!  @adescribe                @adestroy                 @adisconnect             
!  @adrop                    @aefail                   @aenter                  
!  @afailure                 @afollow                  @agive                   
!  @ahear                    @aidescribe               @aleave                  
!  @alfail                   @alias                    @allhalt                 
!  @allquota                 @amhear                   @amove                   
!  @apayment                 @areceive                 @asuccess                
!  @atport                   @atrchown                 @atrlock                 
!  @attribute                @aufail                   @aunfollow               
  
  For more, see Entries-5
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-5
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @ause                     @away                     @azenter                 
!  @azleave                  @boot                     @break                   
!  @cemit                    @channel                  @channel2                
!  @channel3                 @channel4                 @channel5                
!  @charges                  @chat                     @chown                   
!  @chownall                 @chzone                   @chzone2                 
!  @chzoneall                @clock                    @clock2                  
!  @clone                    @command                  @comment                 
!  @config                   @config attribs           @config chat             
!  @config cmds              @config cosmetic          @config cosmetic2        
!  @config costs             @config db                @config dump             
!  @config funcs             @config limits            @config limits2          
!  @config log               @config net               @config parameters       
!  @config tiny              @conformat                @cost                    
!  @cpattr                   @create                   @dbck                    
!  @death                    @decompile                @decompile2              
  
  For more, see Entries-6
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-6
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @decompile3               @describe                 @destroy                 
!  @destroy2                 @dig                      @dig2                    
!  @disable                  @doing                    @dolist                  
!  @drain                    @drop                     @dump                    
!  @ealias                   @edit                     @efail                   
!  @elock                    @emit                     @enable                  
!  @enter                    @entrances                @eunlock                 
!  @exitformat               @failure                  @filter                  
!  @filter2                  @find                     @firstexit               
!  @follow                   @force                    @force2                  
!  @forwardlist              @function                 @function2               
!  @function3                @function4                @gedit                   
!  @give                     @grep2                    @grep                    
!  @halt                     @haven                    @hide                    
!  @idescribe                @idle                     @infilter                
!  @inprefix                 @kick                     @lalias                  
  
  For more, see Entries-7
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-7
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @leave                    @lemit                    @lfail                   
!  @link                     @list                     @listen                  
!  @listen2                  @listmotd                 @lock                    
!  @lock2                    @lock3                    @lock4                   
!  @lock5                    @lock6                    @lock7                   
!  @lock8                    @log                      @logwipe                 
!  @map2                     @mail                     @malias                  
!  @malias2                  @malias3                  @malias4                 
!  @malias5                  @map                      @motd                    
!  @move                     @mvattr                   @name                    
!  @nameformat               @newpassword              @notify                  
!  @nuke                     @odeath                   @odescribe               
!  @odrop                    @oefail                   @oemit                   
!  @oenter                   @ofailure                 @ofollow                 
!  @ogive                    @oidescribe               @oleave                  
!  @olfail                   @omove                    @opayment                
  
  For more, see Entries-8
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-8
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @open                     @oreceive                 @osuccess                
!  @otport                   @oufail                   @ounfollow               
!  @ouse                     @oxenter                  @oxleave                 
!  @oxmove                   @oxtport                  @ozenter                 
!  @ozleave                  @parent                   @password                
!  @payment                  @pcreate                  @pemit                   
!  @pemit2                   @poll                     @poor                    
!  @power                    @prefix                   @ps                      
!  @purge                    @quota                    @readcache               
!  @receive                  @recycle                  @rejectmotd              
!  @remit                    @restart                  @runout                  
!  @rwall                    @rwallemit                @rwallpose               
!  @scan                     @search                   @search2                 
!  @search3                  @select                   @set                     
!  @set2                     @set3                     @sex                     
!  @shutdown                 @sitelock                 @sitelock2               
  
  For more, see Entries-9
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-9
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  @sitelock3                @squota                   @startup                 
!  @stats                    @success                  @sweep                   
!  @switch                   @switch2                  @teleport                
!  @tport                    @trigger                  @trigger2                
!  @ufail                    @ulock                    @undestroy               
!  @unfollow                 @unlink                   @unlock                  
!  @unrecycle                @uptime                   @uptime2                 
!  @use                      @uunlock                  @verb                    
!  @verb2                    @verb3                    @verb4                   
!  @version                  @vrml_url                 @wait                    
!  @wait2                    @wall                     @wallemit                
!  @wallpose                 @warnings                 @warnings2               
!  @warnings3                @wcheck                   @whereis                 
!  @wipe                     @wizemit                  @wizmotd                 
!  @wizpose                  @wizwall                  @zemit                   
!  @zenter                   @zleave                   \                        
  
  For more, see Entries-10
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-10
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  ^                         abode                     abs()                    
!  acos()                    action lists              action2                  
!  add()                     after()                   ahelp                    
!  alphamax()                alphamin()                and()                    
!  andflags()                anews                     ansi                     
!  ansi()                    aposs()                   art()                    
!  asin()                    atan()                    atrlock()                
!  attrcnt()                 attrib-ownership          attribute functions      
!  attribute list            attributes                attributes list          
!  attributes2               attributes3               attributes4              
!  audible                   audible2                  band()                   
!  beep()                    before()                  being killed             
!  bitwise functions         bnand()                   bnot()                   
!  boolean functions         boolean values            boolean2                 
!  boolean3                  bor()                     bound()                  
!  brackets()                brief                     builder                  
  
  For more, see Entries-11
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-11
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  bxor()                    cand()                    capstr()                 
!  case()                    caseall()                 cat()                    
!  cd                        ceil()                    cemit()                  
!  center()                  cflags()                  ch                       
!  changes                   channel-list              channels()               
!  chat                      chown_ok                  clients                  
!  clock()                   clone()                   cloudy                   
!  code                      color                     commands                 
!  comp()                    comsys                    con()                    
!  config()                  conn()                    connected                
!  control                   controls()                convsecs()               
!  convtime()                convutcsecs()             copyright                
!  copyrite                  cor()                     cos()                    
!  costs                     create()                  credits                  
!  ctime()                   ctitle()                  cv                       
!  cwho()                    dark                      dark2                    
  
  For more, see Entries-12
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-12
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  database                  dbref #                   dbref functions          
!  dbref number              dbref2                    dbrefs                   
!  debug                     debug2                    dec()                    
!  decrypt()                 default()                 delete()                 
!  desert                    destroy_ok                die()                    
!  dig()                     dismiss                   dist2d()                 
!  dist3d()                  div()                     doing                    
!  doing()                   drop                      drop-tos                 
!  e()                       edefault()                edit()                   
!  element()                 elements()                elist()                  
!  elock()                   emit()                    enactor                  
!  encrypt()                 endtag()                  enter                    
!  enter_ok                  entrances()               eq()                     
!  escape()                  etimefmt()                etimefmt2                
!  eval()                    evaluation order          evaluation2              
!  events                    examine                   executor                 
  
  For more, see Entries-13
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-13
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  exit()                    exits                     exits2                   
!  exp()                     extract()                 failure                  
!  fdiv()                    filter()                  filterbool()             
!  findable()                first()                   fixed                    
!  flag list                 flags                     flags list               
!  flags()                   flags2                    flip()                   
!  floating                  floating point functions  floor()                  
!  floordiv()                fmod()                    fold()                   
!  fold2                     folderstats()             follow                   
!  followers()               force_white               foreach()                
!  foreach2                  fullname()                function list            
!  functions                 functions()               functions2               
!  gagged                    gender                    get                      
!  get()                     get_eval()                give                     
!  global commands           globals                   go                       
!  going                     goto                      grab()                   
  
  For more, see Entries-14
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-14
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  graball()                 grep()                    grepi()                  
!  gt()                      gte()                     halt                     
!  hasattr()                 hasattrp()                hasattrpval()            
!  hasattrval()              hasflag()                 haspower()               
!  hastype()                 haven                     help                     
!  here                      hidden()                  home                     
!  home()                    homes                     html                     
!  html functions            html()                    i18n                     
!  idle()                    idlesecs()                if()                     
!  ifelse()                  ilev()                    inc()                    
!  index                     index()                   info                     
!  information functions     inherit                   inherit2                 
!  insert()                  interiors                 interiors2               
!  internationalization      inum()                    inventory                
!  isdaylight()              isdbref()                 isint()                  
!  isnum()                   isword()                  itemize()                
  
  For more, see Entries-15
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-15
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  items()                   iter()                    iter2                    
!  itext()                   judge                     jump_ok                  
!  jury_ok                   kill                      last                     
!  last()                    lastip                    lastlogout               
!  lastsite                  lattr()                   lcon()                   
!  lcstr()                   ldelete()                 leave                    
!  left()                    lemit()                   lexits()                 
!  license                   light                     link()                   
!  link_ok                   linking                   list functions           
!  list()                    listen_parent             listening                
!  listening2                listening3                lists                    
!  lit()                     ljust()                   lmath()                  
!  ln()                      lnum()                    loc()                    
!  locale                    localize()                locate()                 
!  locate2                   lock list                 lock types               
!  lock types2               lock()                    locking                  
  
  For more, see Entries-16
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-16
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  locklist                  locks                     locktypes                
!  locktypes2                log()                     logout                   
!  look                      look2                     looping                  
!  lparent()                 lsearch()                 lsearch2                 
!  lsearchr()                lstats()                  lt()                     
!  lte()                     lwho()                    macros                   
!  macros2                   mail functions            mail()                   
!  mail-admin                mail-folders              mail-other               
!  mail-reading              mail-sending              maildstats()             
!  mailfrom()                mailfstats()              mailstats()              
!  mailstatus()              mailsubject()             mailtime()               
!  map()                     master room               match()                  
!  matchall()                matching                  math functions           
!  max()                     me                        mean()                   
!  median()                  member()                  merge()                  
!  mid()                     min()                     mix()                    
  
  For more, see Entries-17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-17
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  mod()                     modulo()                  modulus()                
!  money                     money()                   monitor                  
!  mortal                    move                      mtime()                  
!  mudname()                 mul()                     munge()                  
!  munge2                    munge3                    mushcode                 
!  mushcode2                 mwho()                    myopic                   
!  name()                    nand()                    nattr()                  
!  nearby()                  neq()                     newbie                   
!  newbie2                   newbie3                   news                     
!  next()                    no_command                no_leave                 
!  no_tel                    no_warn                   noleave                  
!  non-standard attributes   nor()                     nospoof                  
!  not()                     nowarn                    null()                   
!  num()                     obj()                     object parents           
!  objeval()                 objmem()                  oemit()                  
!  on-vacation               opaque                    open()                   
  
  For more, see Entries-18
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-18
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  or()                      orflags()                 owner()                  
!  page                      page2                     paranoid                 
!  parent                    parent()                  parents                  
!  parents2                  parents3                  parents4                 
!  parents5                  parse()                   patchlevels              
!  pcreate()                 pemit()                   pi()                     
!  player                    playermem()               pmatch()                 
!  poll()                    ports()                   pos()                    
!  pose                      pose2                     poss()                   
!  power()                   powers list               powers list2             
!  powers()                  powers2                   pueblo                   
!  pueblo features           pueblo()                  puppet                   
!  puppets                   puppets2                  queue                    
!  quiet                     quit                      quota()                  
!  r()                       r-function                rand()                   
!  read                      regedit()                 regeditall()             
  
  For more, see Entries-19
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-19
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  regeditalli()             regediti()                regexp                   
!  regexp classes            regexp classes2           regexp examples          
!  regexp syntax             regexp syntax2            regexp syntax3           
!  regexp syntax4            regexp syntax5            regexp syntax6           
!  regexp syntax7            regexp syntax8            regexps                  
!  regexps2                  registers                 registers2               
!  regmatch()                regrab()                  regraball()              
!  regraballi()              regrabi()                 regrep()                 
!  regular expression functions                        remainder()              
!  remit()                   remove()                  repeat()                 
!  replace()                 rest()                    restarts()               
!  restarttime()             restrict                  restrict2                
!  restrict3                 reverse()                 revwords()               
!  right()                   rjust()                   rloc()                   
!  rnum()                    room                      room()                   
!  round()                   royalty                   rquota                   
  
  For more, see Entries-20
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-20
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  rules                     s()                       s-function               
!  safe                      say                       score                    
!  scramble()                search()                  search2                  
!  secs()                    secure()                  semaphores               
!  semaphores2               semaphores3               semaphores4              
!  semaphores5               semaphores6               semipose                 
!  session                   set()                     setdiff()                
!  setinter()                setq()                    setq2                    
!  setq3                     setr()                    setting-attributes       
!  setunion()                sex                       shl()                    
!  shr()                     shuffle()                 sign()                   
!  sin()                     slay                      softcode                 
!  sort()                    sortby()                  soundex()                
!  soundex2                  soundlike()               soundslike()             
!  space()                   spellnum()                splice()                 
!  spoofing                  sqrt()                    squish()                 
  
  For more, see Entries-21
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-21
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  stack                     starttime()               stats()                  
!  stddev()                  step2                     step()                   
!  sticky                    strcat()                  string functions         
!  strings                   strinsert()               stripansi()              
!  strlen()                  strmatch()                sub()                    
!  subj()                    substitutions             substitutions2           
!  substitutions3            substitutions4            success                  
!  suspect                   switch()                  switch2                  
!  switchall()               switches                  t()                      
!  table()                   tag()                     tagwrap()                
!  take                      tan()                     teach                    
!  tel()                     tel_ok                    temple                   
!  terse                     think                     time functions           
!  time()                    timefmt()                 timefmt2                 
!  timestring()              topics                    topics2                  
!  translation               transparent               transparent2             
  
  For more, see Entries-22
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  & Entries-22
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  trim()                    trunc()                   trust                    
!  trust2                    type()                    types of objects         
!  types2                    u()                       u2                       
!  u3                        ucstr()                   udefault()               
!  ufun()                    ufun2                     ufun3                    
!  uldefault()               ulocal()                  ulocal2                  
!  unfindable                unfollow                  uninspected              
!  unregistered              use                       user-defined commands    
!  user-defined2             utctime()                 utility functions        
!  v()                       v-function                vadd()                   
!  val()                     valid()                   vdim()                   
!  vdot()                    verbose                   verbs                    
!  version()                 visible()                 visual                   
!  vmag()                    vmax()                    vmin()                   
!  vmul()                    vrml                      vsub()                   
!  vunit()                   warnings                  warnings list            
! 
! For more, see Entries-23
! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! & Entries-23
! -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  warnings list2            weirdansi                 where()                  
!  whisper                   whisper2                  white                    
!  who                       wildcards                 wipe()                   
!  with                      wizard                    wordpos()                
!  words()                   wrap()                    xget()                   
!  xor()                     z_tel                     zemit()                  
!  zfun()                    zmo                       zmp                      
!  zmr                       zone                      zone master rooms        
!  zone masters              zone objects              zone()                   
!  zones                     zones2                    zones3                   
!  zones4                                                                       
  
  & &Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  &help                                                                        
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
*** 1_7_4.260/game/txt/evt/index.evt Mon, 17 Apr 2000 11:58:36 -0500 dunemush (pennmush/22_index.evt 1.1.1.1 660)
--- 1_7_4.279(w)/game/txt/evt/index.evt Mon, 15 Apr 2002 23:25:39 -0500 dunemush (pennmush/22_index.evt 1.1.1.1.1.1 660)
***************
*** 1,6 ****
  
  & Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
!  help
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
--- 1,7 ----
  
  & Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
! 
! & &Entries
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
*** 1_7_4.260/game/txt/Makefile Fri, 17 Nov 2000 09:24:35 -0600 dunemush (pennmush/35_Makefile 1.2 600)
--- 1_7_4.279(w)/game/txt/Makefile Fri, 03 May 2002 22:47:03 -0500 dunemush (pennmush/35_Makefile 1.2.1.1 600)
***************
*** 10,31 ****
  
  all: $(TXT)
  
! help.txt: hlp/*.hlp compose.sh
  	./compose.sh hlp
  	mv hlp.txt help.txt
  
! news.txt: nws/*.nws compose.sh
  	./compose.sh nws
  	mv nws.txt news.txt
  
! events.txt: evt/*.evt compose.sh
  	./compose.sh evt
  	mv evt.txt events.txt
  
! rules.txt: rules/*.rules compose.sh
  	./compose.sh rules
  
! index.txt: index/*.index compose.sh
  	./compose.sh index
  
  clean:
--- 10,31 ----
  
  all: $(TXT)
  
! help.txt: hlp/*.hlp hlp compose.sh
  	./compose.sh hlp
  	mv hlp.txt help.txt
  
! news.txt: nws/*.nws nws compose.sh
  	./compose.sh nws
  	mv nws.txt news.txt
  
! events.txt: evt/*.evt evt compose.sh
  	./compose.sh evt
  	mv evt.txt events.txt
  
! rules.txt: rules/*.rules rules compose.sh
  	./compose.sh rules
  
! index.txt: index/*.index index compose.sh
  	./compose.sh index
  
  clean:
*** 1_7_4.260/config_h.SH Sat, 30 Jun 2001 08:59:12 -0500 dunemush (pennmush/b/17_config_h.S 1.17.1.2.1.1 660)
--- 1_7_4.279(w)/config_h.SH Sun, 28 Apr 2002 15:48:35 -0500 dunemush (pennmush/b/17_config_h.S 1.17.1.2.1.1.1.1 660)
***************
*** 713,718 ****
--- 713,723 ----
  #$d_uptime HAS_UPTIME	/**/
  #define UPTIME_PATH "$uptime"
  
+ /* HAS_DEV_URANDOM:
+  *	This symbol is defined if /dev/urandom is available.
+  */
+ #$d_urandom HAS_DEV_URANDOM	/**/
+ 
  /* UNION_WAIT:
   *	This symbol if defined indicates to the C program that the argument
   *	for the wait() system call should be declared as 'union wait status'
*** 1_7_4.260/src/wiz.c Fri, 07 Dec 2001 23:58:39 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1 660)
--- 1_7_4.279(w)/src/wiz.c Fri, 10 May 2002 21:48:59 -0500 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1 660)
***************
*** 554,563 ****
      notify(player, "Sorry.");
      return;
    }
-   if (!Mobile(victim)) {
-     notify(player, T("You can only force players and things."));
-     return;
-   }
    if (options.log_forces) {
      if (Wizard(player)) {
        /* Log forces by wizards */
--- 554,559 ----
*** 1_7_4.260/src/utils.c Wed, 24 Oct 2001 10:41:46 -0500 dunemush (pennmush/b/27_utils.c 1.30 660)
--- 1_7_4.279(w)/src/utils.c Fri, 10 May 2002 21:48:59 -0500 dunemush (pennmush/b/27_utils.c 1.30.1.1 660)
***************
*** 17,22 ****
--- 17,23 ----
  #include <strings.h>
  #endif
  #include <ctype.h>
+ #include <fcntl.h>
  
  
  #include "conf.h"
***************
*** 46,51 ****
--- 47,57 ----
  struct dblist *listcreate _((dbref ref));
  void listadd _((struct dblist * head, dbref ref));
  void listfree _((struct dblist * head));
+ void initialize_mt _((void));
+ void init_genrand _((unsigned long));
+ void init_by_array _((unsigned long *, int));
+ unsigned long genrand_int32 _((void));
+ long genrand_int31 _((void));
  long get_random_long _((long low, long high));
  Malloc_t mush_malloc _((int size, const char *check));
  void mush_free _((Malloc_t ptr, const char *check));
***************
*** 274,308 ****
  }
  
  
! #ifndef RAND_MAX		/* Yes, RAND_MAX is not portable */
! #define RAND_MAX LONG_MAX
  #endif
  
  long
! get_random_long(low, high)
!     long low;
!     long high;
! {
!   long range = high - low + 1;
!   long num;
!   long span;
  
!   if (low > high)
      return 0;
!   for (;;) {
!     num = 0;
!     high = 1;
!     while (high < range) {
!       num = (num + 1) * random();
!       if (high > LONG_MAX / RAND_MAX)
! 	high = LONG_MAX;
!       else
! 	high *= RAND_MAX;
!     }
!     span = high / range;
!     if (num < span * range)
!       return (num / span) + low;
    }
  }
  
  /* Return an object's name, but for exits, return just the first
--- 280,505 ----
  }
  
  
! #define N 624
! 
! /* We use the Mersenne Twister PRNG. It's quite good as PRNGS go,
!  * much better than the typical ones provided in system libc's.
!  *
!  * The following two functions are based on the reference implementation,
!  * with changes in the seeding function to use /dev/urandom as a seed
!  * if possible.
!  *
!  * The Mersenne Twister homepage is:
!  *  http://www.math.keio.ac.jp/~matumoto/emt.html
!  *
!  * You can get the reference code there.
!  */
! 
! 
! /* Initializing the array with a seed */
! void
! initialize_mt(void)
! {
! #ifdef HAS_DEV_URANDOM
!   int fd;
!   unsigned long buf[N];
! 
!   fd = open("/dev/urandom", O_RDONLY);
!   if (fd >= 0) {
!     int r = read(fd, buf, sizeof buf);
!     close(fd);
!     if (r <= 0) {
!       do_rawlog(LT_ERR,
! 		"Couldn't read from /dev/urandom! Resorting to normal seeding method.");
!     } else {
!       do_rawlog(LT_ERR, "Seeded RNG from /dev/urandom");
!       init_by_array(buf, r / sizeof(unsigned long));
!       return;
!     }
!   } else
!     do_rawlog(LT_ERR,
! 	      "Couldn't open /dev/urandom to seed random number generator. Resorting to normal seeding method.");
! 
  #endif
+   /* Default seeder. Pick a seed that's fairly random */
+ #ifdef WIN32
+   init_genrand(GetCurrentProcessId() | (time(NULL) << 16));
+ #else
+   init_genrand(getpid() | (time(NULL) << 16));
+ #endif
+ }
+ 
+ 
+ /* A C-program for MT19937, with initialization improved 2002/1/26.*/
+ /* Coded by Takuji Nishimura and Makoto Matsumoto.                 */
+ 
+ /* Before using, initialize the state by using init_genrand(seed)  */
+ /* or init_by_array(init_key, key_length).                         */
+ 
+ /* This library is free software.                                  */
+ /* This library is distributed in the hope that it will be useful, */
+ /* but WITHOUT ANY WARRANTY; without even the implied warranty of  */
+ /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.            */
+ 
+ /* Copyright (C) 1997, 2002 Makoto Matsumoto and Takuji Nishimura. */
+ /* Any feedback is very welcome.                                   */
+ /* http://www.math.keio.ac.jp/matumoto/emt.html                    */
+ /* email: matumoto@math.keio.ac.jp                                 */
+ 
+ #include <stdio.h>
+ 
+ /* Period parameters */
+ #define M 397
+ #define MATRIX_A 0x9908b0dfUL	/* constant vector a */
+ #define UPPER_MASK 0x80000000UL	/* most significant w-r bits */
+ #define LOWER_MASK 0x7fffffffUL	/* least significant r bits */
+ 
+ static unsigned long mt[N];	/* the array for the state vector  */
+ static int mti = N + 1;		/* mti==N+1 means mt[N] is not initialized */
+ 
+ /* initializes mt[N] with a seed */
+ void
+ init_genrand(unsigned long s)
+ {
+   mt[0] = s & 0xffffffffUL;
+   for (mti = 1; mti < N; mti++) {
+     mt[mti] = (1812433253UL * (mt[mti - 1] ^ (mt[mti - 1] >> 30)) + mti);
+     /* See Knuth TAOCP Vol2. 3rd Ed. P.106 for multiplier. */
+     /* In the previous versions, MSBs of the seed affect   */
+     /* only MSBs of the array mt[].                        */
+     /* 2002/01/09 modified by Makoto Matsumoto             */
+     mt[mti] &= 0xffffffffUL;
+     /* for >32 bit machines */
+   }
+ }
+ 
+ /* initialize by an array with array-length */
+ /* init_key is the array for initializing keys */
+ /* key_length is its length */
+ void
+ init_by_array(unsigned long init_key[], int key_length)
+ {
+   int i, j, k;
+   init_genrand(19650218UL);
+   i = 1;
+   j = 0;
+   k = (N > key_length ? N : key_length);
+   for (; k; k--) {
+     mt[i] = (mt[i] ^ ((mt[i - 1] ^ (mt[i - 1] >> 30)) * 1664525UL))
+       + init_key[j] + j;	/* non linear */
+     mt[i] &= 0xffffffffUL;	/* for WORDSIZE > 32 machines */
+     i++;
+     j++;
+     if (i >= N) {
+       mt[0] = mt[N - 1];
+       i = 1;
+     }
+     if (j >= key_length)
+       j = 0;
+   }
+   for (k = N - 1; k; k--) {
+     mt[i] = (mt[i] ^ ((mt[i - 1] ^ (mt[i - 1] >> 30)) * 1566083941UL))
+       - i;			/* non linear */
+     mt[i] &= 0xffffffffUL;	/* for WORDSIZE > 32 machines */
+     i++;
+     if (i >= N) {
+       mt[0] = mt[N - 1];
+       i = 1;
+     }
+   }
+ 
+   mt[0] = 0x80000000UL;		/* MSB is 1; assuring non-zero initial array */
+ }
  
+ /* generates a random number on [0,0xffffffff]-interval */
+ unsigned long
+ genrand_int32(void)
+ {
+   unsigned long y;
+   static unsigned long mag01[2] = { 0x0UL, MATRIX_A };
+   /* mag01[x] = x * MATRIX_A  for x=0,1 */
+ 
+   if (mti >= N) {		/* generate N words at one time */
+     int kk;
+ 
+     if (mti == N + 1)		/* if init_genrand() has not been called, */
+       init_genrand(5489UL);	/* a default initial seed is used */
+ 
+     for (kk = 0; kk < N - M; kk++) {
+       y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);
+       mt[kk] = mt[kk + M] ^ (y >> 1) ^ mag01[y & 0x1UL];
+     }
+     for (; kk < N - 1; kk++) {
+       y = (mt[kk] & UPPER_MASK) | (mt[kk + 1] & LOWER_MASK);
+       mt[kk] = mt[kk + (M - N)] ^ (y >> 1) ^ mag01[y & 0x1UL];
+     }
+     y = (mt[N - 1] & UPPER_MASK) | (mt[0] & LOWER_MASK);
+     mt[N - 1] = mt[M - 1] ^ (y >> 1) ^ mag01[y & 0x1UL];
+ 
+     mti = 0;
+   }
+ 
+   y = mt[mti++];
+ 
+   /* Tempering */
+   y ^= (y >> 11);
+   y ^= (y << 7) & 0x9d2c5680UL;
+   y ^= (y << 15) & 0xefc60000UL;
+   y ^= (y >> 18);
+ 
+   return y;
+ }
+ 
+ /* generates a random number on [0,0x7fffffff]-interval */
+ long
+ genrand_int31(void)
+ {
+   return (long) (genrand_int32() >> 1);
+ }
+ 
+ /* Based on MUX's RandomINT32() */
  long
! get_random_long(long low, long high)
! {
!   unsigned long x, n, n_limit;
  
!   /* Validate parameters */
!   if (high < low) {
      return 0;
!   } else if (high == low) {
!     return low;
!   }
! 
!   x = high - low;
!   if (LONG_MAX < x) {
!     return -1;
    }
+   x++;
+ 
+   /* We can now look for an random number on the interval [0,x-1].
+      //
+ 
+      // In order to be perfectly conservative about not introducing any
+      // further sources of statistical bias, we're going to call getrand()
+      // until we get a number less than the greatest representable
+      // multiple of x. We'll then return n mod x.
+      //
+      // N.B. This loop happens in randomized constant time, and pretty
+      // damn fast randomized constant time too, since
+      //
+      //      P(UINT32_MAX_VALUE - n < UINT32_MAX_VALUE % x) < 0.5, for any x.
+      //
+      // So even for the least desireable x, the average number of times
+      // we will call getrand() is less than 2.
+    */
+ 
+   n_limit = ULONG_MAX - (ULONG_MAX % x);
+ 
+   do {
+     n = genrand_int31();
+   } while (n >= n_limit);
+ 
+   return low + (n % x);
  }
  
  /* Return an object's name, but for exits, return just the first
*** 1_7_4.260/src/switchinc.c Mon, 15 Apr 2002 21:33:03 -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 660)
--- 1_7_4.279(w)/src/switchinc.c Fri, 10 May 2002 21:48:59 -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.3 660)
***************
*** 1,520 ****
  {
!   "ACCESS", SWITCH_ACCESS
! }
! ,
! {
!   "ADD", SWITCH_ADD
! }
! ,
! {
!   "ALL", SWITCH_ALL
! }
! ,
! {
!   "ANY", SWITCH_ANY
! }
! ,
! {
!   "ATTRIBS", SWITCH_ATTRIBS
! }
! ,
! {
!   "BAN", SWITCH_BAN
! }
! ,
! {
!   "BLIND", SWITCH_BLIND
! }
! ,
! {
!   "BRIEF", SWITCH_BRIEF
! }
! ,
! {
!   "CHECK", SWITCH_CHECK
! }
! ,
! {
!   "CHOWN", SWITCH_CHOWN
! }
! ,
! {
!   "CLEAR", SWITCH_CLEAR
! }
! ,
! {
!   "CMD", SWITCH_CMD
! }
! ,
! {
!   "COMMANDS", SWITCH_COMMANDS
! }
! ,
! {
!   "CONN", SWITCH_CONN
! }
! ,
! {
!   "CONNECT", SWITCH_CONNECT
! }
! ,
! {
!   "CONNECTED", SWITCH_CONNECTED
! }
! ,
! {
!   "CONTENTS", SWITCH_CONTENTS
! }
! ,
! {
!   "COSTS", SWITCH_COSTS
! }
! ,
! {
!   "COUNT", SWITCH_COUNT
! }
! ,
! {
!   "CREATE", SWITCH_CREATE
! }
! ,
! {
!   "DATABASE", SWITCH_DATABASE
! }
! ,
! {
!   "DB", SWITCH_DB
! }
! ,
! {
!   "DEBUG", SWITCH_DEBUG
! }
! ,
! {
!   "DECOMPILE", SWITCH_DECOMPILE
! }
! ,
! {
!   "DEFAULTS", SWITCH_DEFAULTS
! }
! ,
! {
!   "DELETE", SWITCH_DELETE
! }
! ,
! {
!   "DELIMIT", SWITCH_DELIMIT
! }
! ,
! {
!   "DESCRIBE", SWITCH_DESCRIBE
! }
! ,
! {
!   "DESTROY", SWITCH_DESTROY
! }
! ,
! {
!   "DISABLE", SWITCH_DISABLE
! }
! ,
! {
!   "DOWN", SWITCH_DOWN
! }
! ,
! {
!   "DSTATS", SWITCH_DSTATS
! }
! ,
! {
!   "EMIT", SWITCH_EMIT
! }
! ,
! {
!   "ENABLE", SWITCH_ENABLE
! }
! ,
! {
!   "ERR", SWITCH_ERR
! }
! ,
! {
!   "EXITS", SWITCH_EXITS
! }
! ,
! {
!   "FILE", SWITCH_FILE
! }
! ,
! {
!   "FIRST", SWITCH_FIRST
! }
! ,
! {
!   "FLAGS", SWITCH_FLAGS
! }
! ,
! {
!   "FOLDERS", SWITCH_FOLDERS
! }
! ,
! {
!   "FORWARD", SWITCH_FORWARD
! }
! ,
! {
!   "FSTATS", SWITCH_FSTATS
! }
! ,
! {
!   "FULL", SWITCH_FULL
! }
! ,
! {
!   "FUNCTIONS", SWITCH_FUNCTIONS
! }
! ,
! {
!   "FWD", SWITCH_FWD
! }
! ,
! {
!   "GAG", SWITCH_GAG
! }
! ,
! {
!   "GLOBALS", SWITCH_GLOBALS
! }
! ,
! {
!   "HEADER", SWITCH_HEADER
! }
! ,
! {
!   "HERE", SWITCH_HERE
! }
! ,
! {
!   "HIDE", SWITCH_HIDE
! }
! ,
! {
!   "ILIST", SWITCH_ILIST
! }
! ,
! {
!   "INVENTORY", SWITCH_INVENTORY
! }
! ,
! {
!   "IPRINT", SWITCH_IPRINT
! }
! ,
! {
!   "JOIN", SWITCH_JOIN
! }
! ,
! {
!   "LIST", SWITCH_LIST
! }
! ,
! {
!   "LOWERCASE", SWITCH_LOWERCASE
! }
! ,
! {
!   "ME", SWITCH_ME
! }
! ,
! {
!   "MEMBERS", SWITCH_MEMBERS
! }
! ,
! {
!   "MOD", SWITCH_MOD
! }
! ,
! {
!   "MORTAL", SWITCH_MORTAL
! }
! ,
! {
!   "MOTD", SWITCH_MOTD
! }
! ,
! {
!   "MUTE", SWITCH_MUTE
! }
! ,
! {
!   "NAME", SWITCH_NAME
! }
! ,
! {
!   "NO", SWITCH_NO
! }
! ,
! {
!   "NOEVAL", SWITCH_NOEVAL
! }
! ,
! {
!   "NOFLAGCOPY", SWITCH_NOFLAGCOPY
! }
! ,
! {
!   "NOISY", SWITCH_NOISY
! }
! ,
! {
!   "NOSIG", SWITCH_NOSIG
! }
! ,
! {
!   "NOSPACE", SWITCH_NOSPACE
! }
! ,
! {
!   "NOTIFY", SWITCH_NOTIFY
! }
! ,
! {
!   "NUKE", SWITCH_NUKE
! }
! ,
! {
!   "OFF", SWITCH_OFF
! }
! ,
! {
!   "ON", SWITCH_ON
! }
! ,
! {
!   "OUTSIDE", SWITCH_OUTSIDE
! }
! ,
! {
!   "OVERRIDE", SWITCH_OVERRIDE
! }
! ,
! {
!   "PANIC", SWITCH_PANIC
! }
! ,
! {
!   "PARANOID", SWITCH_PARANOID
! }
! ,
! {
!   "PLAYERS", SWITCH_PLAYERS
! }
! ,
! {
!   "PORT", SWITCH_PORT
! }
! ,
! {
!   "POSE", SWITCH_POSE
! }
! ,
! {
!   "PRESERVE", SWITCH_PRESERVE
! }
! ,
! {
!   "PRINT", SWITCH_PRINT
! }
! ,
! {
!   "PRIVS", SWITCH_PRIVS
! }
! ,
! {
!   "PURGE", SWITCH_PURGE
! }
! ,
! {
!   "QUICK", SWITCH_QUICK
! }
! ,
! {
!   "QUIET", SWITCH_QUIET
! }
! ,
! {
!   "READ", SWITCH_READ
! }
! ,
! {
!   "REBOOT", SWITCH_REBOOT
! }
! ,
! {
!   "REGISTER", SWITCH_REGISTER
! }
! ,
! {
!   "REMOVE", SWITCH_REMOVE
! }
! ,
! {
!   "RENAME", SWITCH_RENAME
! }
! ,
! {
!   "RESTORE", SWITCH_RESTORE
! }
! ,
! {
!   "RESTRICT", SWITCH_RESTRICT
! }
! ,
! {
!   "RETROACTIVE", SWITCH_RETROACTIVE
! }
! ,
! {
!   "ROOM", SWITCH_ROOM
! }
! ,
! {
!   "ROOMS", SWITCH_ROOMS
! }
! ,
! {
!   "ROYALTY", SWITCH_ROYALTY
! }
! ,
! {
!   "SEE", SWITCH_SEE
! }
! ,
! {
!   "SEEFLAG", SWITCH_SEEFLAG
! }
! ,
! {
!   "SELF", SWITCH_SELF
! }
! ,
! {
!   "SEND", SWITCH_SEND
! }
! ,
! {
!   "SET", SWITCH_SET
! }
! ,
! {
!   "SILENT", SWITCH_SILENT
! }
! ,
! {
!   "SKIPDEFAULTS", SWITCH_SKIPDEFAULTS
! }
! ,
! {
!   "SPEAK", SWITCH_SPEAK
! }
! ,
! {
!   "STATS", SWITCH_STATS
! }
! ,
! {
!   "SUMMARY", SWITCH_SUMMARY
! }
! ,
! {
!   "TABLES", SWITCH_TABLES
! }
! ,
! {
!   "TAG", SWITCH_TAG
! }
! ,
! {
!   "TELEPORT", SWITCH_TELEPORT
! }
! ,
! {
!   "TF", SWITCH_TF
! }
! ,
! {
!   "THINGS", SWITCH_THINGS
! }
! ,
! {
!   "TITLE", SWITCH_TITLE
! }
! ,
! {
!   "TRACE", SWITCH_TRACE
! }
! ,
! {
!   "UNCLEAR", SWITCH_UNCLEAR
! }
! ,
! {
!   "UNFOLDER", SWITCH_UNFOLDER
! }
! ,
! {
!   "UNGAG", SWITCH_UNGAG
! }
! ,
! {
!   "UNHIDE", SWITCH_UNHIDE
! }
! ,
! {
!   "UNMUTE", SWITCH_UNMUTE
! }
! ,
! {
!   "UNTAG", SWITCH_UNTAG
! }
! ,
! {
!   "UNTIL", SWITCH_UNTIL
! }
! ,
! {
!   "URGENT", SWITCH_URGENT
! }
! ,
! {
!   "USEFLAG", SWITCH_USEFLAG
! }
! ,
! {
!   "WHAT", SWITCH_WHAT
! }
! ,
! {
!   "WHO", SWITCH_WHO
! }
! ,
! {
!   "WIPE", SWITCH_WIPE
! }
! ,
! {
!   "WIZ", SWITCH_WIZ
! }
! ,
! {
!   "WIZARD", SWITCH_WIZARD
! }
! ,
! {
!   "YES", SWITCH_YES
! }
! ,
! {
!   "ZONE", SWITCH_ZONE
! }
  ,
--- 1,391 ----
  {
! "ACCESS", SWITCH_ACCESS}
! 
! , {
! "ADD", SWITCH_ADD}
! 
! , {
! "ALL", SWITCH_ALL}
! 
! , {
! "ANY", SWITCH_ANY}
! 
! , {
! "ATTRIBS", SWITCH_ATTRIBS}
! 
! , {
! "BAN", SWITCH_BAN}
! 
! , {
! "BLIND", SWITCH_BLIND}
! 
! , {
! "BRIEF", SWITCH_BRIEF}
! 
! , {
! "CHECK", SWITCH_CHECK}
! 
! , {
! "CHOWN", SWITCH_CHOWN}
! 
! , {
! "CLEAR", SWITCH_CLEAR}
! 
! , {
! "CMD", SWITCH_CMD}
! 
! , {
! "COMMANDS", SWITCH_COMMANDS}
! 
! , {
! "CONN", SWITCH_CONN}
! 
! , {
! "CONNECT", SWITCH_CONNECT}
! 
! , {
! "CONNECTED", SWITCH_CONNECTED}
! 
! , {
! "CONTENTS", SWITCH_CONTENTS}
! 
! , {
! "COSTS", SWITCH_COSTS}
! 
! , {
! "COUNT", SWITCH_COUNT}
! 
! , {
! "CREATE", SWITCH_CREATE}
! 
! , {
! "DATABASE", SWITCH_DATABASE}
! 
! , {
! "DB", SWITCH_DB}
! 
! , {
! "DEBUG", SWITCH_DEBUG}
! 
! , {
! "DECOMPILE", SWITCH_DECOMPILE}
! 
! , {
! "DEFAULTS", SWITCH_DEFAULTS}
! 
! , {
! "DELETE", SWITCH_DELETE}
! 
! , {
! "DELIMIT", SWITCH_DELIMIT}
! 
! , {
! "DESCRIBE", SWITCH_DESCRIBE}
! 
! , {
! "DESTROY", SWITCH_DESTROY}
! 
! , {
! "DISABLE", SWITCH_DISABLE}
! 
! , {
! "DOWN", SWITCH_DOWN}
! 
! , {
! "DSTATS", SWITCH_DSTATS}
! 
! , {
! "EMIT", SWITCH_EMIT}
! 
! , {
! "ENABLE", SWITCH_ENABLE}
! 
! , {
! "ERR", SWITCH_ERR}
! 
! , {
! "EXITS", SWITCH_EXITS}
! 
! , {
! "FILE", SWITCH_FILE}
! 
! , {
! "FIRST", SWITCH_FIRST}
! 
! , {
! "FLAGS", SWITCH_FLAGS}
! 
! , {
! "FOLDERS", SWITCH_FOLDERS}
! 
! , {
! "FORWARD", SWITCH_FORWARD}
! 
! , {
! "FSTATS", SWITCH_FSTATS}
! 
! , {
! "FULL", SWITCH_FULL}
! 
! , {
! "FUNCTIONS", SWITCH_FUNCTIONS}
! 
! , {
! "FWD", SWITCH_FWD}
! 
! , {
! "GAG", SWITCH_GAG}
! 
! , {
! "GLOBALS", SWITCH_GLOBALS}
! 
! , {
! "HEADER", SWITCH_HEADER}
! 
! , {
! "HERE", SWITCH_HERE}
! 
! , {
! "HIDE", SWITCH_HIDE}
! 
! , {
! "ILIST", SWITCH_ILIST}
! 
! , {
! "INVENTORY", SWITCH_INVENTORY}
! 
! , {
! "IPRINT", SWITCH_IPRINT}
! 
! , {
! "JOIN", SWITCH_JOIN}
! 
! , {
! "LIST", SWITCH_LIST}
! 
! , {
! "LOWERCASE", SWITCH_LOWERCASE}
! 
! , {
! "ME", SWITCH_ME}
! 
! , {
! "MEMBERS", SWITCH_MEMBERS}
! 
! , {
! "MOD", SWITCH_MOD}
! 
! , {
! "MORTAL", SWITCH_MORTAL}
! 
! , {
! "MOTD", SWITCH_MOTD}
! 
! , {
! "MUTE", SWITCH_MUTE}
! 
! , {
! "NAME", SWITCH_NAME}
! 
! , {
! "NO", SWITCH_NO}
! 
! , {
! "NOEVAL", SWITCH_NOEVAL}
! 
! , {
! "NOFLAGCOPY", SWITCH_NOFLAGCOPY}
! 
! , {
! "NOISY", SWITCH_NOISY}
! 
! , {
! "NOSIG", SWITCH_NOSIG}
! 
! , {
! "NOSPACE", SWITCH_NOSPACE}
! 
! , {
! "NOTIFY", SWITCH_NOTIFY}
! 
! , {
! "NUKE", SWITCH_NUKE}
! 
! , {
! "OFF", SWITCH_OFF}
! 
! , {
! "ON", SWITCH_ON}
! 
! , {
! "OUTSIDE", SWITCH_OUTSIDE}
! 
! , {
! "OVERRIDE", SWITCH_OVERRIDE}
! 
! , {
! "PANIC", SWITCH_PANIC}
! 
! , {
! "PARANOID", SWITCH_PARANOID}
! 
! , {
! "PLAYERS", SWITCH_PLAYERS}
! 
! , {
! "PORT", SWITCH_PORT}
! 
! , {
! "POSE", SWITCH_POSE}
! 
! , {
! "PRESERVE", SWITCH_PRESERVE}
! 
! , {
! "PRINT", SWITCH_PRINT}
! 
! , {
! "PRIVS", SWITCH_PRIVS}
! 
! , {
! "PURGE", SWITCH_PURGE}
! 
! , {
! "QUICK", SWITCH_QUICK}
! 
! , {
! "QUIET", SWITCH_QUIET}
! 
! , {
! "READ", SWITCH_READ}
! 
! , {
! "REBOOT", SWITCH_REBOOT}
! 
! , {
! "REGISTER", SWITCH_REGISTER}
! 
! , {
! "REMOVE", SWITCH_REMOVE}
! 
! , {
! "RENAME", SWITCH_RENAME}
! 
! , {
! "RESTORE", SWITCH_RESTORE}
! 
! , {
! "RESTRICT", SWITCH_RESTRICT}
! 
! , {
! "RETROACTIVE", SWITCH_RETROACTIVE}
! 
! , {
! "ROOM", SWITCH_ROOM}
! 
! , {
! "ROOMS", SWITCH_ROOMS}
! 
! , {
! "ROYALTY", SWITCH_ROYALTY}
! 
! , {
! "SEE", SWITCH_SEE}
! 
! , {
! "SEEFLAG", SWITCH_SEEFLAG}
! 
! , {
! "SELF", SWITCH_SELF}
! 
! , {
! "SEND", SWITCH_SEND}
! 
! , {
! "SET", SWITCH_SET}
! 
! , {
! "SILENT", SWITCH_SILENT}
! 
! , {
! "SKIPDEFAULTS", SWITCH_SKIPDEFAULTS}
! 
! , {
! "SPEAK", SWITCH_SPEAK}
! 
! , {
! "STATS", SWITCH_STATS}
! 
! , {
! "SUMMARY", SWITCH_SUMMARY}
! 
! , {
! "TABLES", SWITCH_TABLES}
! 
! , {
! "TAG", SWITCH_TAG}
! 
! , {
! "TELEPORT", SWITCH_TELEPORT}
! 
! , {
! "TF", SWITCH_TF}
! 
! , {
! "THINGS", SWITCH_THINGS}
! 
! , {
! "TITLE", SWITCH_TITLE}
! 
! , {
! "TRACE", SWITCH_TRACE}
! 
! , {
! "UNCLEAR", SWITCH_UNCLEAR}
! 
! , {
! "UNFOLDER", SWITCH_UNFOLDER}
! 
! , {
! "UNGAG", SWITCH_UNGAG}
! 
! , {
! "UNHIDE", SWITCH_UNHIDE}
! 
! , {
! "UNMUTE", SWITCH_UNMUTE}
! 
! , {
! "UNTAG", SWITCH_UNTAG}
! 
! , {
! "UNTIL", SWITCH_UNTIL}
! 
! , {
! "URGENT", SWITCH_URGENT}
! 
! , {
! "USEFLAG", SWITCH_USEFLAG}
! 
! , {
! "WHAT", SWITCH_WHAT}
! 
! , {
! "WHO", SWITCH_WHO}
! 
! , {
! "WIPE", SWITCH_WIPE}
! 
! , {
! "WIZ", SWITCH_WIZ}
! 
! , {
! "WIZARD", SWITCH_WIZARD}
! 
! , {
! "YES", SWITCH_YES}
! 
! , {
! "ZONE", SWITCH_ZONE}
! 
  ,
*** 1_7_4.260/src/move.c Mon, 11 Mar 2002 17:59:05 -0600 dunemush (pennmush/b/51_move.c 1.1.1.18.1.5.1.13.1.3.1.9.1.1.1.1.1.2 660)
--- 1_7_4.279(w)/src/move.c Fri, 10 May 2002 21:48:58 -0500 dunemush (pennmush/b/51_move.c 1.1.1.18.1.5.1.13.1.3.1.9.1.1.1.1.1.2 660)
***************
*** 782,787 ****
--- 782,791 ----
    if (arg && *arg) {
      /* Who do we want to follow? */
      leader = match_result(player, arg, NOTYPE, MAT_NEARBY);
+     if (leader == AMBIGUOUS) {
+       notify(player, T("I can't tell which one to follow."));
+       return;
+     }
      if (!GoodObject(leader) || !GoodObject(Location(player)) ||
  	(IsPlayer(leader) && !Connected(leader)) ||
  	((DarkLegal(leader) || (Dark(Location(player)) && !Light(leader))) &&
***************
*** 830,842 ****
    if (arg && *arg) {
      /* Who do we want to stop following? */
      leader = match_result(player, arg, NOTYPE, MAT_OBJECTS);
      if (!GoodObject(leader)) {
!       notify(player, T("I don't recognize who you want to stop following."));
        return;
      }
      /* Are we following them? */
      if (!is_following(player, leader)) {
!       notify_format(player, T("You're not following %s"), Name(leader));
        return;
      }
      /* Ok, looks good */
--- 834,850 ----
    if (arg && *arg) {
      /* Who do we want to stop following? */
      leader = match_result(player, arg, NOTYPE, MAT_OBJECTS);
+     if (leader == AMBIGUOUS) {
+       notify(player, T("I can't tell which one to stop following."));
+       return;
+     }
      if (!GoodObject(leader)) {
!       notify(player, T("I don't see that here."));
        return;
      }
      /* Are we following them? */
      if (!is_following(player, leader)) {
!       notify_format(player, T("You're not following %s."), Name(leader));
        return;
      }
      /* Ok, looks good */
*** 1_7_4.260/src/look.c Mon, 18 Jun 2001 10:36:58 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2 660)
--- 1_7_4.279(w)/src/look.c Fri, 10 May 2002 21:48:58 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2.1.1 660)
***************
*** 1199,1204 ****
--- 1199,1208 ----
    ATTR *ptr;
    char msg[BUFFER_LEN];
    char *bp;
+ 
+   if (AL_FLAGS(atr) & AF_NODUMP)
+     return 0;
+ 
    ptr = atr_match(AL_NAME(atr));
    bp = msg;
    safe_str(dh->prefix, msg, &bp);
*** 1_7_4.260/src/game.c Tue, 02 Apr 2002 08:15:28 -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 660)
--- 1_7_4.279(w)/src/game.c Fri, 10 May 2002 21:48:58 -0500 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 660)
***************
*** 79,85 ****
  #endif				/* fix to HP-UX getrusage() braindamage */
  
  #include "confmagic.h"
- 
  #ifdef HAS_WAITPID
  #define WAIT_TYPE int
  #else
--- 79,84 ----
***************
*** 102,107 ****
--- 101,108 ----
  extern dbref cplr;
  extern char ccom[];
  
+ extern void initialize_mt(void);
+ 
  int paranoid_dump = 0;		/* if paranoid, scan before dumping */
  int paranoid_checkpt = 0;	/* write out an okay message every x objs */
  extern long indb_flags;
***************
*** 142,147 ****
--- 143,150 ----
  
  dbref orator = NOTHING;
  
+ static Pid_t forked_dump_pid = -1;
+ 
  /*
   * used to allocate storage for temporary stuff, cleared before command
   * execution
***************
*** 475,497 ****
    Pid_t pid;
  
  #ifdef HAS_WAITPID
!   while ((pid = waitpid(-1, &my_stat, WNOHANG)) > 0) ;
  #else
!   while ((pid = wait3(&my_stat, WNOHANG, 0)) > 0) ;
  #endif
! 
  #ifdef INFO_SLAVE
!   if (pid == info_slave_pid) {
!     do_rawlog(LT_ERR, "info_slave on pid %d exited!", pid);
!     info_slave_state = 0;
!     info_slave_pid = -1;
!   }
  #endif
! 
  #ifndef HAS_SIGACTION
  /* If we have sigaction, the signals are reliable */
  #ifndef SIGNALS_KEPT
!   signal(SIGCLD, (Sigfunc) reaper);	/* do this last or it'll loop */
  #endif
  #endif
  #ifndef VOIDSIG
--- 478,510 ----
    Pid_t pid;
  
  #ifdef HAS_WAITPID
!   while ((pid = waitpid(-1, &my_stat, WNOHANG)) > 0)
  #else
!   while ((pid = wait3(&my_stat, WNOHANG, 0)) > 0)
  #endif
!   {
  #ifdef INFO_SLAVE
!     if (info_slave_pid > -1 && pid == info_slave_pid) {
!       do_rawlog(LT_ERR, T("info_slave on pid %d exited!"), pid);
!       info_slave_state = 0;
!       info_slave_pid = -1;
!     } else
  #endif
!     if (forked_dump_pid > -1 && pid == forked_dump_pid) {
!       /* Most failures are handled by the forked mush already */
!       if (WIFSIGNALED(my_stat)) {
! 	do_rawlog(LT_ERR, T("ERROR! forking dump exited with signal %d"),
! 		  WTERMSIG(my_stat));
! 	flag_broadcast(WIZARD | ROYALTY, 0,
! 		       T("GAME: ERROR! Forking database save failed!"));
!       }
!       forked_dump_pid = -1;
!     }
!   }
  #ifndef HAS_SIGACTION
  /* If we have sigaction, the signals are reliable */
  #ifndef SIGNALS_KEPT
!   signal(SIGCHLD, (Sigfunc) reaper);	/* do this last or it'll loop */
  #endif
  #endif
  #ifndef VOIDSIG
***************
*** 531,537 ****
  	flag_broadcast(0, 0, "%s", DUMP_NOFORK_MESSAGE);
        child = 0;
        nofork = 1;
!     }
  #ifdef HAS_SETPRIORITY
      else {
        /* Lower the priority of the child to make parent more responsive */
--- 544,552 ----
  	flag_broadcast(0, 0, "%s", DUMP_NOFORK_MESSAGE);
        child = 0;
        nofork = 1;
!     } else if (child > 0)
!       forked_dump_pid = child;
! 
  #ifdef HAS_SETPRIORITY
      else {
        /* Lower the priority of the child to make parent more responsive */
***************
*** 792,805 ****
    read_access_file();
  
    /* initialize random number generator */
!   srandom(getpid());
  
    /* set up dumper */
    strcpy(dumpfile, outfile);
    init_timer();
  #ifndef macintosh
  #ifndef WIN32
!   signal(SIGCLD, (void *) reaper);
  #endif
  #endif
  
--- 807,820 ----
    read_access_file();
  
    /* initialize random number generator */
!   initialize_mt();
  
    /* set up dumper */
    strcpy(dumpfile, outfile);
    init_timer();
  #ifndef macintosh
  #ifndef WIN32
!   signal(SIGCHLD, (void *) reaper);
  #endif
  #endif
  
*** 1_7_4.260/src/funstr.c Sat, 23 Feb 2002 14:40:55 -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 660)
--- 1_7_4.279(w)/src/funstr.c Fri, 10 May 2002 21:48:57 -0500 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 660)
***************
*** 944,955 ****
  {
    int s;
  
!   if (!is_integer(args[0])) {
!     safe_str(T(e_int), buff, bp);
      return;
    }
    s = parse_integer(args[0]);
- 
    safe_fill(' ', s, buff, bp);
  }
  
--- 944,954 ----
  {
    int s;
  
!   if (!is_uinteger(args[0])) {
!     safe_str(T(e_uint), buff, bp);
      return;
    }
    s = parse_integer(args[0]);
    safe_fill(' ', s, buff, bp);
  }
  
***************
*** 981,986 ****
--- 980,986 ----
  }
  
  /* All the safe tags from HTML 4.0 */
+ void init_tag_hashtab _((void));
  void
  init_tag_hashtab()
  {
*** 1_7_4.260/src/funmath.c Mon, 15 Apr 2002 21:33:03 -0500 dunemush (pennmush/c/15_funmath.c 1.39.1.1.1.1 660)
--- 1_7_4.279(w)/src/funmath.c Fri, 10 May 2002 21:48:57 -0500 dunemush (pennmush/c/15_funmath.c 1.39.1.1.1.1.1.1 660)
***************
*** 1148,1159 ****
   * a multiple of 3.
   */
  #define add_zeros(p) \
-    sprintf(num, "000"); \
     m = strlen(p) % 3; \
!    if (m) \
!       sprintf(num + 3 - m, p); \
!    else \
!       sprintf(num, p); \
     p = num;
  
  /* ARGSUSED */
--- 1148,1159 ----
   * a multiple of 3.
   */
  #define add_zeros(p) \
     m = strlen(p) % 3; \
!    switch (m) { \
!     case 0: strcpy(num, p); break; \
!     case 1: num[0] = '0'; num[1] = '0'; strcpy(num + 2, p); break; \
!     case 2: num[0] = '0'; strcpy(num + 1, p); break; \
!    } \
     p = num;
  
  /* ARGSUSED */
*** 1_7_4.260/src/funlist.c Mon, 15 Apr 2002 21:33:03 -0500 dunemush (pennmush/c/16_funlist.c 1.3.1.1.1.5.1.2.1.1.1.1.1.4.1.2.1.2.1.19.1.2.1.1.1.2.1.5.1.1.1.1.1.1.1.1.1.1.2.1.1.3.1.2.1.1.1.1.1.1 660)
--- 1_7_4.279(w)/src/funlist.c Fri, 10 May 2002 21:48:57 -0500 dunemush (pennmush/c/16_funlist.c 1.3.1.1.1.5.1.2.1.1.1.1.1.4.1.2.1.2.1.19.1.2.1.1.1.2.1.5.1.1.1.1.1.1.1.1.1.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1 660)
***************
*** 1230,1235 ****
--- 1230,1236 ----
  #define CACHE_SIZE 8
    static NVAL cstart[CACHE_SIZE];
    static NVAL cend[CACHE_SIZE];
+   static char csep[CACHE_SIZE][BUFFER_LEN];
    static char cresult[CACHE_SIZE][BUFFER_LEN];
    static int cpos;
    char *cp;
***************
*** 1268,1274 ****
      osep = args[2];
    }
    for (k = 0; k < CACHE_SIZE; k++) {
!     if (cstart[k] == start && cend[k] == end) {
        safe_str(cresult[k], buff, bp);
        return;
      }
--- 1269,1275 ----
      osep = args[2];
    }
    for (k = 0; k < CACHE_SIZE; k++) {
!     if (cstart[k] == start && cend[k] == end && !strcmp(csep[k], osep)) {
        safe_str(cresult[k], buff, bp);
        return;
      }
***************
*** 1276,1281 ****
--- 1277,1283 ----
    cpos = (cpos + 1) % CACHE_SIZE;
    cstart[cpos] = start;
    cend[cpos] = end;
+   strcpy(csep[cpos], osep);
    cp = cresult[cpos];
  
    istart = (int) start;
*** 1_7_4.260/src/extchat.c Mon, 15 Apr 2002 21:33:03 -0500 dunemush (pennmush/c/23_extchat.c 1.1.1.1.1.1.1.1.1.2.1.1.1.3.1.1.1.5.1.1.1.1.1.5.1.2.1.3.1.3.1.1.1.4.1.2.1.6.1.2.1.1.2.4.2.9.1.2.1.2.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.1 660)
--- 1_7_4.279(w)/src/extchat.c Fri, 10 May 2002 21:48:57 -0500 dunemush (pennmush/c/23_extchat.c 1.1.1.1.1.1.1.1.1.2.1.1.1.3.1.1.1.5.1.1.1.1.1.5.1.2.1.3.1.3.1.1.1.4.1.2.1.6.1.2.1.1.2.4.2.9.1.2.1.2.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1 660)
***************
*** 1115,1123 ****
      return;
    }
    if (!Chan_Can_Speak(chan, player)) {
!     notify_format(player,
! 		  T("Sorry, you're not allowed to speak on channel <%s>."),
! 		  ChanName(chan));
      return;
    }
  
--- 1115,1126 ----
      return;
    }
    if (!Chan_Can_Speak(chan, player)) {
!     if (Chan_Can_See(chan, player))
!       notify_format(player,
! 		    T("Sorry, you're not allowed to speak on channel <%s>."),
! 		    ChanName(chan));
!     else
!       notify(player, T("Sorry, you're not allowed to speak on that channel."));
      return;
    }
  
***************
*** 1208,1216 ****
      return;
    }
    if (!Chan_Can_Speak(chan, player)) {
!     notify_format(player,
! 		  T("Sorry, you're not allowed to speak on channel <%s>."),
! 		  ChanName(chan));
      return;
    }
    if (!msg || !*msg) {
--- 1211,1222 ----
      return;
    }
    if (!Chan_Can_Speak(chan, player)) {
!     if (Chan_Can_See(chan, player))
!       notify_format(player,
! 		    T("Sorry, you're not allowed to speak on channel <%s>."),
! 		    ChanName(chan));
!     else
!       notify(player, T("Sorry, you're not allowed to speak on that channel."));
      return;
    }
    if (!msg || !*msg) {
***************
*** 1527,1533 ****
  {
    CHAN *c = NULL;
    CHANUSER *u;
!   char *scan;
  
    if (!name || !*name) {
      notify(player, T("You must specify a channel."));
--- 1533,1539 ----
  {
    CHAN *c = NULL;
    CHANUSER *u;
!   const char *scan;
  
    if (!name || !*name) {
      notify(player, T("You must specify a channel."));
***************
*** 2012,2018 ****
      strcpy(cleanp, remove_markup(ChanName(c), NULL));
      if (string_prefix(cleanp, cleanname)) {
        found++;
!       if (!(Hasprivs(player) || Chan_Can_Modify(c, player)
  	    || (ChanCreator(c) == player))) {
  	notify_format(player, T("CHAT: No permission to decompile <%s>"),
  		      ChanName(c));
--- 2018,2024 ----
      strcpy(cleanp, remove_markup(ChanName(c), NULL));
      if (string_prefix(cleanp, cleanname)) {
        found++;
!       if (!(See_All(player) || Chan_Can_Modify(c, player)
  	    || (ChanCreator(c) == player))) {
  	notify_format(player, T("CHAT: No permission to decompile <%s>"),
  		      ChanName(c));
*** 1_7_4.260/src/cque.c Sun, 17 Mar 2002 13:17:29 -0600 dunemush (pennmush/c/28_cque.c 1.36.1.5.1.1.1.1.1.1.1.2 660)
--- 1_7_4.279(w)/src/cque.c Fri, 10 May 2002 21:48:56 -0500 dunemush (pennmush/c/28_cque.c 1.36.1.5.1.1.1.1.1.1.1.2.1.1 660)
***************
*** 553,560 ****
  }
  
  static int
! drain_helper(dbref player, dbref thing, char const *pattern, ATTR *atr,
! 	     void *args __attribute__ ((__unused__)))
  {
    if (waitable_attr(thing, AL_NAME(atr)))
      (void) atr_clr(thing, AL_NAME(atr), GOD);
--- 553,562 ----
  }
  
  static int
! drain_helper(dbref player
! 	     __attribute__ ((__unused__)), dbref thing, char const *pattern
! 	     __attribute__ ((__unused__)), ATTR *atr, void *args
! 	     __attribute__ ((__unused__)))
  {
    if (waitable_attr(thing, AL_NAME(atr)))
      (void) atr_clr(thing, AL_NAME(atr), GOD);
*** 1_7_4.260/src/bsd.c Mon, 15 Apr 2002 21:33:03 -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 660)
--- 1_7_4.279(w)/src/bsd.c Fri, 10 May 2002 21:48:55 -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 660)
***************
*** 127,132 ****
--- 127,141 ----
  #include "attrib.h"
  #include "game.h"
  #include "confmagic.h"
+ #ifdef HAS_WAITPID
+ #define WAIT_TYPE int
+ #else
+ #ifdef UNION_WAIT
+ #define WAIT_TYPE union wait
+ #else
+ #define WAIT_TYPE int
+ #endif
+ #endif
  
  /* Define to enable experimental conversion of accented characters to
     HTML entities for Pueblo. Meant for European character sets */
***************
*** 159,164 ****
--- 168,174 ----
  extern int reserved;
  static int extrafd;
  int shutdown_flag = 0;
+ extern int paranoid_dump;	/* from game.c */
  
  static int login_number = 0;
  static int under_limit = 1;
***************
*** 2048,2054 ****
      }
  
      if (signal_dump_flag) {
-       extern int paranoid_dump;	/* from game.c */
        paranoid_dump = 0;
        do_rawlog(LT_CHECK, "DUMP by external signal");
        fork_and_dump(1);
--- 2058,2063 ----
***************
*** 2979,2986 ****
    if (info_slave_state != 0) {
      if (info_slave_pid > 0) {
        do_rawlog(LT_ERR, "kill: killing info_slave_pid %d", info_slave_pid);
!       closesocket(info_slave);
!       kill(info_slave_pid, 15);
        info_slave_pid = -1;
      }
      info_slave_state = 0;
--- 2988,3021 ----
    if (info_slave_state != 0) {
      if (info_slave_pid > 0) {
        do_rawlog(LT_ERR, "kill: killing info_slave_pid %d", info_slave_pid);
! #ifdef HAS_SIGPROCMASK
!       {
! 	sigset_t orig, mask;
! 	WAIT_TYPE my_stat;
! 	Pid_t pid;
! 	struct timeval pad;
! 
! 	sigemptyset(&mask);
! 	sigaddset(&mask, SIGCHLD);
! 	sigprocmask(SIG_BLOCK, &mask, &orig);
! #endif
! 	closesocket(info_slave);
! 	kill(info_slave_pid, 15);
! #ifdef HAS_SIGPROCMASK
! 	/* Have to wait long enough for the info_slave to actually
! 	   die. This will hopefully be enough time. */
! 	pad.tv_sec = 0;
! 	pad.tv_usec = 100;
! 	select(0, NULL, NULL, NULL, &pad);
! 
! #ifdef HAS_WAITPID
! 	pid = waitpid(info_slave_pid, &my_stat, WNOHANG);
! #else
! 	pid = wait3(&my_stat, WNOHANG, 0);
! #endif
! 	sigprocmask(SIG_SETMASK, &orig, NULL);
!       }
! #endif
        info_slave_pid = -1;
      }
      info_slave_state = 0;
*** 1_7_4.260/src/access.c Thu, 31 May 2001 11:19:20 -0500 dunemush (pennmush/c/43_access.c 1.11.1.2 660)
--- 1_7_4.279(w)/src/access.c Fri, 10 May 2002 21:48:55 -0500 dunemush (pennmush/c/43_access.c 1.11.1.2.1.1 660)
***************
*** 197,204 ****
      do_log(LT_ERR, GOD, GOD, T("No %s file found."), ACCESS_FILE);
      retval = 0;
    } else {
!     fgets(buf, BUFFER_LEN, fp);
!     while (!feof(fp)) {
        /* Strip newline */
        if ((p = strchr(buf, '\n')))
  	*p = '\0';
--- 197,203 ----
      do_log(LT_ERR, GOD, GOD, T("No %s file found."), ACCESS_FILE);
      retval = 0;
    } else {
!     while (fgets(buf, BUFFER_LEN, fp)) {
        /* Strip newline */
        if ((p = strchr(buf, '\n')))
  	*p = '\0';
***************
*** 236,242 ****
  	  retval = 0;
  	}
        }
-       fgets(buf, BUFFER_LEN, fp);
      }
      retval = 1;
      fclose(fp);
--- 235,240 ----
*** 1_7_4.260/hdrs/version.h Mon, 15 Apr 2002 21:33:03 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.1.1.6 660)
--- 1_7_4.279(w)/hdrs/version.h Fri, 10 May 2002 21:49:01 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.1.1.7 660)
***************
*** 1,2 ****
! #define VERSION "PennMUSH version 1.7.4 patchlevel 17 [04/14/2002]"
! #define SHORTVN "PennMUSH 1.7.4p17"
--- 1,2 ----
! #define VERSION "PennMUSH version 1.7.4 patchlevel 18 [05/06/2002]"
! #define SHORTVN "PennMUSH 1.7.4p18"
*** 1_7_4.260/hdrs/extmail.h Sat, 10 Feb 2001 09:13:21 -0600 dunemush (pennmush/d/15_extmail.h 1.6 660)
--- 1_7_4.279(w)/hdrs/extmail.h Fri, 10 May 2002 21:49:00 -0500 dunemush (pennmush/d/15_extmail.h 1.6.1.1.1.1 660)
***************
*** 37,43 ****
  #define Unread(m)       (!Read(m))
  #define All(ms)         (ms.flags & M_ALL)
  #define AllInFolder(ms) (ms.flags & M_FOLDER)
! #define MSFolder(ms)    ((ms.flags & ~M_FMASK) >> 8)
  
  typedef unsigned int mail_flag;
  
--- 37,43 ----
  #define Unread(m)       (!Read(m))
  #define All(ms)         (ms.flags & M_ALL)
  #define AllInFolder(ms) (ms.flags & M_FOLDER)
! #define MSFolder(ms)    ((int)((ms.flags & ~M_FMASK) >> 8U))
  
  typedef unsigned int mail_flag;
  
*** 1_7_4.260/hdrs/externs.h Mon, 25 Feb 2002 16:04:41 -0600 dunemush (pennmush/d/16_externs.h 1.1.1.53.1.2.1.8.2.1.1.2.1.1.1.1 660)
--- 1_7_4.279(w)/hdrs/externs.h Fri, 10 May 2002 21:49:00 -0500 dunemush (pennmush/d/16_externs.h 1.1.1.53.1.2.1.8.2.1.1.2.1.1.1.1.1.1 660)
***************
*** 11,17 ****
  #ifdef I_LIBINTL
  #include <libintl.h>
  #endif
! #ifdef HAS_GETTEXT
  #define T(str) gettext(str)
  #define N_(str) gettext_noop(str)
  #else
--- 11,17 ----
  #ifdef I_LIBINTL
  #include <libintl.h>
  #endif
! #if defined(HAS_GETTEXT) && !defined(DONT_TRANSLATE)
  #define T(str) gettext(str)
  #define N_(str) gettext_noop(str)
  #else
*** 1_7_4.260/hdrs/atr_tab.h Fri, 19 Jan 2001 09:27:13 -0600 dunemush (pennmush/d/26_atr_tab.h 1.15 660)
--- 1_7_4.279(w)/hdrs/atr_tab.h Fri, 10 May 2002 21:49:00 -0500 dunemush (pennmush/d/26_atr_tab.h 1.15.1.1 660)
***************
*** 68,78 ****
    {(char *) "INPREFIX", AF_NOPROG, NULL, 0, NULL},
    {(char *) "LALIAS", AF_NOPROG, NULL, 0, NULL},
    {(char *) "LAST", AF_VISUAL | AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
!   {(char *) "LASTIP", AF_LOCKED, NULL, 0, NULL},
    {(char *) "LASTFAILED", AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
    {(char *) "LASTLOGOUT", AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
    {(char *) "LASTPAGED", AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
!   {(char *) "LASTSITE", AF_LOCKED, NULL, 0, NULL},
    {(char *) "LEAVE", AF_NOPROG, NULL, 0, NULL},
    {(char *) "LFAIL", AF_NOPROG, NULL, 0, NULL},
    {(char *) "LISTEN", AF_NOPROG, NULL, 0, NULL},
--- 68,78 ----
    {(char *) "INPREFIX", AF_NOPROG, NULL, 0, NULL},
    {(char *) "LALIAS", AF_NOPROG, NULL, 0, NULL},
    {(char *) "LAST", AF_VISUAL | AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
!   {(char *) "LASTIP", AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
    {(char *) "LASTFAILED", AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
    {(char *) "LASTLOGOUT", AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
    {(char *) "LASTPAGED", AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
!   {(char *) "LASTSITE", AF_WIZARD | AF_LOCKED, NULL, 0, NULL},
    {(char *) "LEAVE", AF_NOPROG, NULL, 0, NULL},
    {(char *) "LFAIL", AF_NOPROG, NULL, 0, NULL},
    {(char *) "LISTEN", AF_NOPROG, NULL, 0, NULL},
*** 1_7_4.260/Configure Mon, 11 Mar 2002 18:08:58 -0600 dunemush (pennmush/d/32_Configure 1.21.1.4.1.1.1.1 710)
--- 1_7_4.279(w)/Configure Sun, 28 Apr 2002 15:48:35 -0500 dunemush (pennmush/d/32_Configure 1.21.1.4.1.1.1.1.1.1 710)
***************
*** 338,343 ****
--- 338,344 ----
  d_timelocal=''
  d_toupper=''
  d_uptime=''
+ d_urandom=''
  d_uwait3=''
  d_uwait=''
  d_voidsig=''
***************
*** 5033,5038 ****
--- 5034,5048 ----
  fi
  set d_uptime; eval $setvar
  
+ : see if /dev/urandom is present
+ echo " "
+ if $test -c /dev/urandom ; then
+ 	val="$define"
+ else
+ 	val="$undef"
+ fi
+ set d_urandom; eval $setvar
+ 
  : see if union wait is available
  echo " "
  set X $cppflags
***************
*** 6606,6611 ****
--- 6616,6622 ----
  d_timelocal='$d_timelocal'
  d_toupper='$d_toupper'
  d_uptime='$d_uptime'
+ d_urandom='$d_urandom'
  d_usgnames='$d_usgnames'
  d_uwait3='$d_uwait3'
  d_uwait='$d_uwait'
*** 1_7_4.260/win32/funs.h Mon, 15 Apr 2002 21:33:03 -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 660)
--- 1_7_4.279(w)/win32/funs.h Mon, 06 May 2002 16:02:56 -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 660)
***************
*** 292,294 ****
--- 292,295 ----
  FUNCTION_PROTO(fun_zemit);
  FUNCTION_PROTO(fun_zfun);
  FUNCTION_PROTO(fun_zone);
+ FUNCTION_PROTO(local_fun_silly);
*** 1_7_4.260/hdrs/mushtype.h Thu, 19 Oct 2000 09:30:20 -0500 dunemush (pennmush/f/20_mushtype.h 1.2 660)
--- 1_7_4.279(w)/hdrs/mushtype.h Fri, 10 May 2002 21:49:00 -0500 dunemush (pennmush/f/20_mushtype.h 1.2.1.1.1.1 660)
***************
*** 60,63 ****
--- 60,64 ----
  typedef struct channel CHAN;
  #endif
  
+ 
  #endif