This is patch08 to PennMUSH 1.7.5. After applying this patch, you will have version 1.7.5p8 To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p1 < 1.7.5-patch08 make install If you use GNU patch 2.2, you probably want the above to be 'patch -b -p1', not just 'patch -p1'. Unix (or cygwin) users need not worry about failed hunks in src/switchinc.c, hdrs/switches.h, hdrs/cmds.h, or hdrs/funs.h. These files are automatically rebuilt on compile. Then @shutdown and restart your MUSH. - Alan/Javelin In this patch: Minor Changes: * Added @nspemit and nspemit(). Wizard-only versions of @pemit and pemit() that don't print nospoof information. Suggested by many people, most recently Mike Griffiths and Nymeria@M*U*S*H. [SW] * Help updates. [SW] * Force the pipes to compression program for database reads and saves to be block-buffered. [SW] * @function name=obj/attrib now works, as well as @function name=obj,attrib [TAP] * The AF_PREFIXMATCH flag is no longer shown on attributes it's set on when you examine them. Fixes: * A bunch of internal code cleanup, especially around casts. [SW] * The disconnected room check is skipped on GOING rooms. Suggested by Philip Mak. * The dbck check for nameless rooms was only checking disconnected rooms; now it checks all rooms. * hasflag() did not work with single-character flag abbreviations. Report by Mystery8. * The variable named 'template' in src/strutil.c has been renamed to avoid clashes with the C++ reserved word. Suggested by Mac@M*U*S*H. * Improvement to help @filter. Suggested by Philip Mak. [SW] * Files in the patches directory ending in ~ are ignored when patches.h is rebuilt. [SW] * Removed a // comment from strutil.c, as we're still just following the c89 standard, not c99. Report by Vadiv@M*U*S*H. [SW] * make indent now indents the .dst files before the .c ones. Fixes some spurious warnings from later makes. Suggested by Vadiv@M*U*S*H. [SW] * Code cleanup, mostly tprintf() and unneeded header file checking elimination. [SW] * Since a Windows header #defines OPAQUE, which conflicts with a #define for the mush flag of the same name, rename our #define rather than #undefining the Windows one. [SW] Prereq: 1.7.5p7 *** 1_7_5.188/Patchlevel Tue, 14 May 2002 23:25:01 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.8 600) --- 1_7_5.213(w)/Patchlevel Wed, 26 Jun 2002 10:09:31 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.9 600) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.5p7 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.5p8 *** 1_7_5.188/CHANGES.174 Tue, 14 May 2002 21:59:33 -0500 dunemush (pennmush/8_CHANGES 1.219.1.72.1.52 600) --- 1_7_5.213(w)/CHANGES.174 Wed, 19 Jun 2002 21:50:34 -0500 dunemush (pennmush/8_CHANGES 1.219.1.72.1.65 600) *************** *** 18,28 **** ========================================================================== ! Version 1.7.4 patchlevel 19 May 6, 2002 Fixes: * Win32 portability fixes. [EEH] ! Version 1.7.4 patchlevel 18 May 6, 2002 --- 18,53 ---- ========================================================================== ! Version 1.7.4 patchlevel 19 June 14, 2002 + Minor changes: + * Wizards can now unset the WIZARD flag on any thing, whether they + own it or not. Suggested by Cerekk@bDv. + * Circular zoning is no longer allowed. Fixes part of a bug reported + by Philip Mak. [SW] Fixes: * Win32 portability fixes. [EEH] ! * grep for 'grep' rather than 'egrep' in restart because in grep 2.5.1, ! egrep is a shell script that exec's grep instead of a link. ! Fix by Vadiv@M*U*S*H. ! * The messages for a possessive get used the object's new location ! instead of its old one. Fixed by Apollo@Restoration. ! * Attempts by unlinked exits to @link an exit could crash. ! * %1 in @areceive was being set to the recipient rather than the giver. ! Fixed. Report by jubjup@trekmush.org ! * @uptime fix for Linux 2.4 kernel. [SW] ! * The @@() function no longer complains about commas. Report by ! Trispis@M*U*S*H. [TAP] ! * @search flags= is now smarter about toggles with the same ! letter and different types. Report by Philip Mak. ! * English-style matching now ignores the type of object being matched. ! This fixes a bug with, e.g., @link my 1st object=me reported by ! Oriens@Alexandria. ! * bound() now listed in the math functions list. Report by Dandy@M*U*S*H. ! * Help fix for member() by Cerekk@bDV TrekMUSH ! * The server can now transparently read mush.cnf (and included) files ! that have Dos- or Mac-style line-endings. Suggested by Paleran. ! * Crash bug in @search fixed. Reported by Philip Mak. Version 1.7.4 patchlevel 18 May 6, 2002 *** 1_7_5.188/CHANGES Wed, 15 May 2002 22:11:33 -0500 dunemush (pennmush/g/7_CHANGES 1.27.1.36 600) --- 1_7_5.213(w)/CHANGES Thu, 04 Jul 2002 14:33:55 -0500 dunemush (pennmush/g/7_CHANGES 1.27.1.43 600) *************** *** 18,23 **** --- 18,62 ---- ========================================================================== + Version 1.7.5 patchlevel 8 June 26, 2002 + + Minor Changes: + * Added @nspemit and nspemit(). Wizard-only versions of @pemit and + pemit() that don't print nospoof information. Suggested by many people, + most recently Mike Griffiths and Nymeria@M*U*S*H. [SW] + * Help updates. [SW] + * Force the pipes to compression program for database reads and saves to be + block-buffered. [SW] + * @function name=obj/attrib now works, as well as + @function name=obj,attrib [TAP] + * The AF_PREFIXMATCH flag is no longer shown on attributes it's set + on when you examine them. + Fixes: + * A bunch of internal code cleanup, especially around casts. [SW] + * The disconnected room check is skipped on GOING rooms. Suggested + by Philip Mak. + * The dbck check for nameless rooms was only checking disconnected + rooms; now it checks all rooms. + * hasflag() did not work with single-character flag abbreviations. + Report by Mystery8. + * The variable named 'template' in src/strutil.c has been renamed + to avoid clashes with the C++ reserved word. Suggested by Mac@M*U*S*H. + * Improvement to help @filter. Suggested by Philip Mak. [SW] + * Files in the patches directory ending in ~ are ignored + when patches.h is rebuilt. [SW] + * Removed a // comment from strutil.c, as we're still + just following the c89 standard, not c99. Report by + Vadiv@M*U*S*H. [SW] + * make indent now indents the .dst files before the .c ones. + Fixes some spurious warnings from later makes. Suggested by + Vadiv@M*U*S*H. [SW] + * Code cleanup, mostly tprintf() and unneeded header file + checking elimination. [SW] + * Since a Windows header #defines OPAQUE, which conflicts with a + #define for the mush flag of the same name, rename + our #define rather than #undefining the Windows one. [SW] + + Version 1.7.5 patchlevel 7 May 14, 2002 Utilities: *** 1_7_5.188/game/txt/hlp/pennvers.hlp Wed, 15 May 2002 22:11: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.7 600) --- 1_7_5.213(w)/game/txt/hlp/pennvers.hlp Thu, 04 Jul 2002 14:33:58 -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.1.5.1.6 600) *************** *** 1,5 **** & changes ! & 1.7.5p7 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 '. 'help credits' --- 1,5 ---- & changes ! & 1.7.5p8 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 '. 'help credits' *************** *** 11,16 **** --- 11,56 ---- A list of the patchlevels associated with each release can be read in 'help patchlevels'. + Version 1.7.5 patchlevel 8 June 26, 2002 + + Minor Changes: + * Added @nspemit and nspemit(). Wizard-only versions of @pemit and + pemit() that don't print nospoof information. Suggested by many people, + most recently Mike Griffiths and Nymeria@M*U*S*H. [SW] + * Help updates. [SW] + * Force the pipes to compression program for database reads and saves to be + block-buffered. [SW] + * @function name=obj/attrib now works, as well as + @function name=obj,attrib [TAP] + * The AF_PREFIXMATCH flag is no longer shown on attributes it's set + on when you examine them. + Fixes: + * A bunch of internal code cleanup, especially around casts. [SW] + * The disconnected room check is skipped on GOING rooms. Suggested + by Philip Mak. + * The dbck check for nameless rooms was only checking disconnected + rooms; now it checks all rooms. + * hasflag() did not work with single-character flag abbreviations. + Report by Mystery8. + * The variable named 'template' in src/strutil.c has been renamed + to avoid clashes with the C++ reserved word. Suggested by Mac@M*U*S*H. + * Improvement to help @filter. Suggested by Philip Mak. [SW] + * Files in the patches directory ending in ~ are ignored + when patches.h is rebuilt. [SW] + * Removed a // comment from strutil.c, as we're still + just following the c89 standard, not c99. Report by + Vadiv@M*U*S*H. [SW] + * make indent now indents the .dst files before the .c ones. + Fixes some spurious warnings from later makes. Suggested by + Vadiv@M*U*S*H. [SW] + * Code cleanup, mostly tprintf() and unneeded header file + checking elimination. [SW] + * Since a Windows header #defines OPAQUE, which conflicts with a + #define for the mush flag of the same name, rename + our #define rather than #undefining the Windows one. [SW] + + + & 1.7.5p7 Version 1.7.5 patchlevel 7 May 14, 2002 Utilities: *************** *** 269,279 **** * Fixes up to 1.7.4p12 merged in. & 1.7.4p19 ! Version 1.7.4 patchlevel 19 May 6, 2002 Fixes: * Win32 portability fixes. [EEH] ! & 1.7.4p18 Version 1.7.4 patchlevel 18 May 6, 2002 --- 309,344 ---- * Fixes up to 1.7.4p12 merged in. & 1.7.4p19 ! Version 1.7.4 patchlevel 19 June 14, 2002 + Minor changes: + * Wizards can now unset the WIZARD flag on any thing, whether they + own it or not. Suggested by Cerekk@bDv. + * Circular zoning is no longer allowed. Fixes part of a bug reported + by Philip Mak. [SW] Fixes: * Win32 portability fixes. [EEH] ! * grep for 'grep' rather than 'egrep' in restart because in grep 2.5.1, ! egrep is a shell script that exec's grep instead of a link. ! Fix by Vadiv@M*U*S*H. ! * The messages for a possessive get used the object's new location ! instead of its old one. Fixed by Apollo@Restoration. ! * Attempts by unlinked exits to @link an exit could crash. ! * %1 in @areceive was being set to the recipient rather than the giver. ! Fixed. Report by jubjup@trekmush.org ! * @uptime fix for Linux 2.4 kernel. [SW] ! * The @@() function no longer complains about commas. Report by ! Trispis@M*U*S*H. [TAP] ! * @search flags= is now smarter about toggles with the same ! letter and different types. Report by Philip Mak. ! * English-style matching now ignores the type of object being matched. ! This fixes a bug with, e.g., @link my 1st object=me reported by ! Oriens@Alexandria. ! * bound() now listed in the math functions list. Report by Dandy@M*U*S*H. ! * Help fix for member() by Cerekk@bDV TrekMUSH ! * The server can now transparently read mush.cnf (and included) files ! that have Dos- or Mac-style line-endings. Suggested by Paleran. ! * Crash bug in @search fixed. Reported by Philip Mak. & 1.7.4p18 Version 1.7.4 patchlevel 18 May 6, 2002 *************** *** 5363,5369 **** For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' ! 1.7.5: 0, 1, 2, 3, 4, 5, 6, 7 1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 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, --- 5428,5434 ---- For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' ! 1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8 1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 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, *** 1_7_5.188/game/txt/hlp/penntop.hlp Wed, 10 Apr 2002 20:36:23 -0500 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.2 600) --- 1_7_5.213(w)/game/txt/hlp/penntop.hlp Mon, 10 Jun 2002 17:36:59 -0500 dunemush (pennmush/13_penntop.hl 1.2.1.27.1.3.1.2.1.2.1.1.1.1.1.1.1.3 600) *************** *** 267,277 **** Value tiny_booleans=no tiny_booleans=yes Gotcha 0 FALSE FALSE non-zero number TRUE TRUE ! # TRUE TRUE ! # FALSE TRUE * null string FALSE FALSE 0 TRUE FALSE * ! TRUE TRUE (continued in help boolean3) & BOOLEAN3 --- 267,277 ---- Value tiny_booleans=no tiny_booleans=yes Gotcha 0 FALSE FALSE non-zero number TRUE TRUE ! # TRUE FALSE * ! # FALSE FALSE null string FALSE FALSE 0 TRUE FALSE * ! TRUE FALSE * (continued in help boolean3) & BOOLEAN3 *** 1_7_5.188/game/txt/hlp/pennfunc.hlp Fri, 10 May 2002 22:07:51 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.2 600) --- 1_7_5.213(w)/game/txt/hlp/pennfunc.hlp Wed, 19 Jun 2002 21:50:39 -0500 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.2 600) *************** *** 42,47 **** --- 42,49 ---- Attribute functions: attribute-related manipulations (GET, UFUN) Bitwise functions: Manipulation of individual bits of numbers (SHL, BOR) Boolean functions: produce 0 or 1 (false or true) answers (OR, AND) + Channel functions: Get information about channels (CTITLE, CWHO) + Communication functions: Send messages to objects (PEMIT, OEMIT) Dbref functions: return dbref info related to objects (LOC, LEXITS) Floating point functions: floating point math (SIN, ROUND) Global functions: local MUSH-specific functions defined with @function *************** *** 92,97 **** --- 94,109 ---- nor() not() or() t() xor() See also: BOOLEAN VALUES, @config + & Channel functions + Channel functions work with the channel system. + + cflags() channels() clock() ctitle() cwho() + & Communication functions + Communication functions are side-effect functions that send a message + to an object or objects. + + cemit() emit() lemit() nspemit() oemit() + pemit() remit() zemit() & Dbref functions Dbref functions return a dbref or list of dbrefs related to some value on an object. *************** *** 104,120 **** See also: DBREF & Information functions ! Information functions return values related to objects or channels. ! andflags() cflags() channels() clock() config() ! conn() controls() ctime() ctitle() cwho() ! doing() elock() findable() flags() fullname() ! hasattr() hasattrp() hasflag() haspower() hastype() ! hidden() idle() iname() lock() lstats() ! lwho() money() mtime() mwho() name() ! nattr() nearby() objmem() orflags() playermem() ! poll() ports() powers() quota() type() ! visible() & Mail functions Mail functions work with @mail. --- 116,131 ---- See also: DBREF & Information functions ! Information functions return values related to objects. ! andflags() config() ! conn() controls() ctime() doing() elock() ! findable() flags() fullname() hasattr() hasattrp() ! hasflag() haspower() hastype() hidden() idle() ! iname() lock() lstats() lwho() money() ! mtime() mwho() name() nattr() nearby() ! objmem() orflags() playermem() poll() ports() ! powers() quota() type() visible() & Mail functions Mail functions work with @mail. *************** *** 154,162 **** Math functions take one or more numbers and return a numeric value. What is allowed as a 'number' depends on @config settings (see help). These functions can taken both integers and floating point numbers: ! add() lmath() max() mean() median() ! min() mul() sign() stddev() sub() ! trunc() val() These functions operate only on integers (if passed floating point numbers, an error will be reported): --- 165,173 ---- Math functions take one or more numbers and return a numeric value. What is allowed as a 'number' depends on @config settings (see help). These functions can taken both integers and floating point numbers: ! add() bound() lmath() max() mean() ! median() min() mul() sign() stddev() ! sub() trunc() val() These functions operate only on integers (if passed floating point numbers, an error will be reported): *************** *** 208,222 **** & Utility functions These functions don't quite fit into any other category. ! ansi() atrlock() beep() cemit() clone() ! create() die() dig() emit() functions() ! isdbref() isint() isnum() isword() lemit() ! localize() link() list() lnum() mudname() ! null() objeval() oemit() open() pcreate() ! pemit() r-function rand() remit() restarts() ! s-function set() setq() setr() soundex() ! soundslike() tel() textfile() valid() version() ! wipe() zemit() @@() & @@() & NULL() --- 219,232 ---- & Utility functions These functions don't quite fit into any other category. ! ansi() atrlock() beep() clone() create() ! die() dig() functions() isdbref() isint() ! isnum() isword() localize() link() list() ! lnum() mudname() null() objeval() open() ! pcreate() r-function rand() restarts() s-function ! set() setq() setr() soundex() soundslike() ! tel() textfile() valid() version() wipe() ! @@() & @@() & NULL() *************** *** 2045,2054 **** & MEMBER() member(,[,]) ! Member takes a list and a word, and returns the position of if is a word in . A word is defined as a string which has no interior spaces. So ' hello ' would be one word, while 'hello there' would be two. See LISTS & MERGE() merge(, , ) --- 2055,2066 ---- & MEMBER() member(,[,]) ! Takes a list and a word, and returns the position of if is a word in . A word is defined as a string which has no interior spaces. So ' hello ' would be one word, while 'hello there' would be two. See LISTS + + member() is case-sensitive. & MERGE() merge(, , ) *************** *** 2282,2287 **** --- 2294,2309 ---- see help BOOLEAN VALUES for details. See also: and(), or(), nor(), xor() + & NSPEMIT() + nspemit(,) + + This wizard-only function will send each object on the list a + message, as per the @nspemit/list command. It returns nothing. It is + similar to pemit(), except it does not include any nospoof information. + Like @nspemit, it is meant for use with globals where nospoof + information isn't wanted. + + See also: pemit(), @nspemit & NUM() num() *************** *** 2365,2372 **** pemit(,) This function will send each object on the list a message, as per ! the @pemit/list command (that is, the list must be a list of dbrefs). ! It returns nothing. It respects page-locks and HAVEN flags on players. & PI() pi() --- 2387,2394 ---- pemit(,) This function will send each object on the list a message, as per ! the @pemit/list command. It returns nothing. It respects page-locks and ! HAVEN flags on players. & PI() pi() *** 1_7_5.188/game/txt/hlp/penncmd.hlp Mon, 06 May 2002 20:42:49 -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.4 600) --- 1_7_5.213(w)/game/txt/hlp/penncmd.hlp Thu, 04 Jul 2002 14:47:51 -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.10 600) *************** *** 55,65 **** @dolist @drain @edit @emit @entrances @find @force @function @gedit @grep @halt @lemit @listmotd @mail @map ! @notify @oemit @password @pemit @ps ! @remit @restart @rwall @rwallemit @rwallpose ! @scan @search @select @stats @sweep ! @switch @teleport @trigger @verb @version ! @wait @whereis @zemit & @-WIZARD These '@' commands are only usable by wizards or privileged players: --- 55,65 ---- @dolist @drain @edit @emit @entrances @find @force @function @gedit @grep @halt @lemit @listmotd @mail @map ! @notify @nspemit @oemit @password @pemit ! @ps @remit @restart @rwall @rwallemit ! @rwallpose @scan @search @select @stats ! @sweep @switch @teleport @trigger @verb ! @version @wait @whereis @zemit & @-WIZARD These '@' commands are only usable by wizards or privileged players: *************** *** 1133,1140 **** with the @filter set. (Note: @filter on rooms has no effect!) Please note that you should NOT use curly brackets {} in an @filter ! pattern. Also note that AUDIBLE exits will not take effect unless the ! room they lead from is also set AUDIBLE. See 'help @filter2' for more. & @filter2 --- 1133,1141 ---- with the @filter set. (Note: @filter on rooms has no effect!) Please note that you should NOT use curly brackets {} in an @filter ! pattern. If you want to filter a message containing a comma, you ! need to put a \ before it. Also note that AUDIBLE exits will not ! take effect unless the room they lead from is also set AUDIBLE. See 'help @filter2' for more. & @filter2 *************** *** 1240,1245 **** --- 1241,1247 ---- & @function @function [] @function =, + or @function =/ @function/ When used without any arguments, this command lists all global *************** *** 1947,1952 **** --- 1949,1963 ---- Similarly, you may not specify both the /all switch and a number. See also: SEMAPHORES, @drain, @wait + & @nspemit + @nspemit[/switches] = + + This wizard-only command is similar to @pemit, with two differences. + It will not include nospoof information, and it doesn't accept the + /contents switch. It is meant to be used by commands in the master + room where the nospoof information is just useless noise. + + See also: @pemit, nspemit() & @odeath @odeath [=] *************** *** 2293,2299 **** There can be any number of objects in the list. The objects must be specified by dbref number. You will not get back a "confirmation" message for the /list form of this command. ! (continued in help @pemit2) & @pemit2 The @pemit command can take the following additional switches: --- 2304,2310 ---- There can be any number of objects in the list. The objects must be specified by dbref number. You will not get back a "confirmation" message for the /list form of this command. ! (continued in help @pemit2) & @pemit2 The @pemit command can take the following additional switches: *************** *** 2541,2547 **** @set =: @set /=[!] ! The first form sets (or unsets) a flag on . Ex: @set me=VISUAL The second form sets a pre-defined attribute on --- 2552,2558 ---- @set =: @set /=[!] ! The first form sets (or unsets) a flag on . See 'help flags'. Ex: @set me=VISUAL The second form sets a pre-defined attribute on *************** *** 2552,2589 **** Ex: @set Test Object=random:This is a random attribute. &random Test Object=This is a random attribute. - See "help @set2" for more. - & @set2 The fourth form sets (or unsets) an attribute flag on the specified ! attribute. Possible flags are: ! ! no_command Attribute will not be checked for '$' commands and ! '^' listen patterns. In an 'examine', this is denoted ! by '$' next to the dbref of the attribute's owner. ! visual Attribute can be seen by anyone via get(), eval(), ! ufun(), zfun(), and similar functions. In 'examine', ! this is denoted by 'v'. ! ! (continued in help @set3) ! & @set3 ! no_inherit Attribute will not be inherited by the children of ! this object. In 'examine', this is denoted by 'i'. ! "private" is a synonym for no_inherit. ! no_clone Attribute will not be copied if the object is @clone'd. ! In 'examine', this is denoted by 'c'. ! mortal_dark Attribute cannot be seen by mortals. Denoted by 'm'. ! This flag can only be set by royalty and wizards. ! "hidden" is a synonym for mortal_dark. ! regexp Match $-commands and ^-listens using regular expressions. ! See 'help regexps'. Denoted by 'R'. ! case Match $-commands and ^-listens case sensitively. ! Otherwise case doesn't count. Denoted by 'C'. ! wizard Attribute can only be set by wizards. Denoted by 'w'. This flag can only be set by royalty and wizards. ! safe Attribute may not be modified, without unsetting this ! flag. Denoted by 'S'. ! ! See also: FLAGS, NON-STANDARD ATTRIBUTES. & @sex @sex = --- 2563,2593 ---- Ex: @set Test Object=random:This is a random attribute. &random Test Object=This is a random attribute. The fourth form sets (or unsets) an attribute flag on the specified ! attribute. See 'help attribute flags'. ! & attribute flags ! Attribute flags are set on an object's attributes using @set, or applied ! to attributes globally using @attrib. Their names (and, when applicable, ! the character used in examine as shorthand for the flag) include: ! ! no_command ($) Attribute will not be checked for '$' commands and ! '^' listen patterns. ! visual (v) Attribute can be seen by anyone via get(), eval(), ! ufun(), zfun(), and similar functions. ! no_inherit (i) Attribute will not be inherited by the children of ! this object. ! no_clone (c) Attribute will not be copied if the object is @clone'd. ! regexp (R) Match $-commands and ^-listens using regular expressions. ! See 'help regexps'. ! case (C) Match $-commands and ^-listens case sensitively. ! safe (S) Attribute may not be modified, without unsetting this flag. ! mortal_dark (m) Attribute cannot be seen by mortals. This flag can only ! be set by royalty and wizards. "hidden" is a synonym. ! wizard (w) Attribute can only be set by wizards. This flag can only be set by royalty and wizards. ! prefixmatch When a user attempts to set an attribute using @, ! this attribute will be matched down to its unique ! prefixes. This flag is primarily used internally. & @sex @sex = *** 1_7_5.188/game/restart Mon, 16 Jul 2001 11:57:35 -0500 dunemush (pennmush/39_restart 1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.1 700) --- 1_7_5.213(w)/game/restart Sat, 25 May 2002 11:52:09 -0500 dunemush (pennmush/39_restart 1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.2 700) *************** *** 55,61 **** # Prevent double-starting things. You may need to provide a pathname for # some of the commands. System V flavors need "ps -f" instead of "ps uwx". ! mush=`ps uwx | egrep $CONF_FILE | grep -v egrep | wc -l` if [ $mush -gt 0 ]; then --- 55,61 ---- # Prevent double-starting things. You may need to provide a pathname for # some of the commands. System V flavors need "ps -f" instead of "ps uwx". ! mush=`ps uwx | grep $CONF_FILE | grep -v grep | wc -l` if [ $mush -gt 0 ]; then *** 1_7_5.188/utils/mkcmds.sh Tue, 25 Sep 2001 15:42:13 -0500 dunemush (pennmush/45_mkcmds.sh 1.6 700) --- 1_7_5.213(w)/utils/mkcmds.sh Wed, 26 Jun 2002 08:44:02 -0500 dunemush (pennmush/45_mkcmds.sh 1.7 700) *************** *** 14,20 **** if [ -d ../patches ]; then echo "Rebuilding list of installed Patches" ! for bu in ../patches/*; do name=`grep "^# Patch name:" $bu | sed 's/[^:]*://'` ver=`grep "^# Patch version:" $bu | sed 's/[^:]*://'` name=`echo $name` --- 14,20 ---- if [ -d ../patches ]; then echo "Rebuilding list of installed Patches" ! for bu in ../patches/*[^~]; do name=`grep "^# Patch name:" $bu | sed 's/[^:]*://'` ver=`grep "^# Patch version:" $bu | sed 's/[^:]*://'` name=`echo $name` *** 1_7_5.188/src/shs.c Sun, 25 Feb 2001 13:37:15 -0600 dunemush (pennmush/b/18_shs.c 1.4 660) --- 1_7_5.213(w)/src/shs.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/18_shs.c 1.5 660) *************** *** 23,33 **** #include "copyrite.h" #include "config.h" - #ifdef I_STRING #include - #else - /* #include Not sure why this is commented out. */ - #endif #include "shs.h" --- 23,29 ---- *************** *** 138,148 **** /* some optimizing compilers - it may be necessary to split it into sections, e.g. */ /* based on the four subrounds */ ! static void shsTransform _((SHS_INFO * shsInfo)); static void ! shsTransform(shsInfo) ! SHS_INFO *shsInfo; { LONG W[80], temp; int i; --- 134,143 ---- /* some optimizing compilers - it may be necessary to split it into sections, e.g. */ /* based on the four subrounds */ ! static void shsTransform(SHS_INFO * shsInfo); static void ! shsTransform(SHS_INFO * shsInfo) { LONG W[80], temp; int i; *************** *** 320,330 **** } /* end of shsTransform */ ! static void byteReverse _((LONG * buffer, int byteCount)); static void ! byteReverse(buffer, byteCount) ! LONG *buffer; ! int byteCount; { LONG value; int count; --- 315,323 ---- } /* end of shsTransform */ ! static void byteReverse(LONG * buffer, int byteCount); static void ! byteReverse(LONG * buffer, int byteCount) { LONG value; int count; *************** *** 343,352 **** /* away with the need to handle partial blocks between calls to shsUpdate () */ void ! shsUpdate(shsInfo, buffer, count) ! SHS_INFO *shsInfo; ! BYTE *buffer; ! int count; { /* Update bitcount */ --- 336,342 ---- /* away with the need to handle partial blocks between calls to shsUpdate () */ void ! shsUpdate(SHS_INFO * shsInfo, const BYTE * buffer, int count) { /* Update bitcount */ *************** *** 373,383 **** } /* end of shsUpdate */ - void shsFile _((SHS_INFO * shsInfo)); - void ! shsFinal(shsInfo) ! SHS_INFO *shsInfo; { int count; LONG lowBitcount = shsInfo->countLo, highBitcount = shsInfo->countHi; --- 363,370 ---- } /* end of shsUpdate */ void ! shsFinal(SHS_INFO * shsInfo) { int count; LONG lowBitcount = shsInfo->countLo, highBitcount = shsInfo->countHi; *** 1_7_5.188/src/wiz.c Fri, 03 May 2002 22:41:51 -0500 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.2 660) --- 1_7_5.213(w)/src/wiz.c Thu, 04 Jul 2002 16:11:39 -0500 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.6 660) *************** *** 8,27 **** #ifdef I_UNISTD #include #endif - #ifdef I_STRING #include - #else - #include - #endif #include #ifdef I_SYS_TIME #include #else #include #endif - #ifdef I_STDLIB #include - #endif #include #ifdef I_FCNTL #include --- 8,21 ---- *************** *** 29,35 **** #ifdef WIN32 #include #include "process.h" - #undef OPAQUE #endif #include "conf.h" #include "mushdb.h" --- 23,28 ---- *************** *** 55,66 **** #include "confmagic.h" ! extern dbref find_entrance _((dbref door)); ! extern int convert_flags _((dbref player, char *s, object_flag_type *p_mask, ! object_flag_type *p_toggle, ! object_flag_type *p_type)); ! struct db_stat_info *get_stats _((dbref owner)); ! extern dbref find_player_by_desc _((int port)); extern int paranoid_dump; extern int paranoid_checkpt; --- 48,58 ---- #include "confmagic.h" ! extern dbref find_entrance(dbref door); ! extern int convert_flags(dbref player, const char *s, object_flag_type *p_mask, ! object_flag_type *p_toggle, object_flag_type *p_type); ! struct db_stat_info *get_stats(dbref owner); ! extern dbref find_player_by_desc(int port); extern int paranoid_dump; extern int paranoid_checkpt; *************** *** 74,85 **** extern int reserved; #endif ! int tport_dest_ok _((dbref player, dbref victim, dbref dest)); ! int tport_control_ok _((dbref player, dbref victim, dbref loc)); ! static int mem_usage _((dbref thing)); #ifdef INFO_SLAVE ! void kill_info_slave _((void)); #endif extern char confname[BUFFER_LEN]; --- 66,77 ---- extern int reserved; #endif ! int tport_dest_ok(dbref player, dbref victim, dbref dest); ! int tport_control_ok(dbref player, dbref victim, dbref loc); ! static int mem_usage(dbref thing); #ifdef INFO_SLAVE ! void kill_info_slave(void); #endif extern char confname[BUFFER_LEN]; *************** *** 158,164 **** /* the quotas of priv'ed players are unlimited and cannot be set. */ if (NoQuota(who)) { ! notify(player, tprintf(T("Objects: %d Limit: UNLIMITED"), owned)); return; } /* if we're not doing a change, determine the mortal's quota limit. --- 150,156 ---- /* the quotas of priv'ed players are unlimited and cannot be set. */ if (NoQuota(who)) { ! notify_format(player, T("Objects: %d Limit: UNLIMITED"), owned); return; } /* if we're not doing a change, determine the mortal's quota limit. *************** *** 167,179 **** if (!set_q) { limit = get_current_quota(who); ! notify(player, tprintf(T("Objects: %d Limit: %d"), owned, owned + limit)); return; } /* set a new quota */ if (!arg2 || !*arg2) { limit = get_current_quota(who); ! notify(player, tprintf(T("Objects: %d Limit: %d"), owned, owned + limit)); notify(player, T("What do you want to set the quota to?")); return; } --- 159,171 ---- if (!set_q) { limit = get_current_quota(who); ! notify_format(player, T("Objects: %d Limit: %d"), owned, owned + limit); return; } /* set a new quota */ if (!arg2 || !*arg2) { limit = get_current_quota(who); ! notify_format(player, T("Objects: %d Limit: %d"), owned, owned + limit); notify(player, T("What do you want to set the quota to?")); return; } *************** *** 188,194 **** (void) atr_add(Owner(who), "RQUOTA", tprintf("%d", limit - owned), GOD, NOTHING); ! notify(player, tprintf(T("Objects: %d Limit: %d"), owned, limit)); } --- 180,186 ---- (void) atr_add(Owner(who), "RQUOTA", tprintf("%d", limit - owned), GOD, NOTHING); ! notify_format(player, T("Objects: %d Limit: %d"), owned, limit); } *************** *** 233,246 **** if (NoQuota(who)) { if (!quiet) ! notify(player, tprintf("%s: Objects: %d Limit: UNLIMITED", ! Name(who), owned)); continue; } if (!quiet) { oldlimit = get_current_quota(who); ! notify(player, tprintf("%s: Objects: %d Limit: %d", ! Name(who), owned, oldlimit)); } if (limit != -1) { if (limit <= owned) --- 225,238 ---- if (NoQuota(who)) { if (!quiet) ! notify_format(player, "%s: Objects: %d Limit: UNLIMITED", ! Name(who), owned); continue; } if (!quiet) { oldlimit = get_current_quota(who); ! notify_format(player, "%s: Objects: %d Limit: %d", ! Name(who), owned, oldlimit); } if (limit != -1) { if (limit <= owned) *************** *** 253,259 **** if (limit == -1) notify(player, T("Quotas not changed.")); else ! notify(player, tprintf(T("All quotas changed to %d."), limit)); } #endif /* QUOTA */ --- 245,251 ---- if (limit == -1) notify(player, T("Quotas not changed.")); else ! notify_format(player, T("All quotas changed to %d."), limit); } #endif /* QUOTA */ *************** *** 529,537 **** || controls(player, Location(victim))) do_move(victim, to, 0); else ! notify(victim, ! tprintf(T("%s tries to impose his will on you and fails."), ! Name(player))); } } } --- 521,529 ---- || controls(player, Location(victim))) do_move(victim, to, 0); else ! notify_format(victim, ! T("%s tries to impose his will on you and fails."), ! Name(player)); } } } *************** *** 656,662 **** else owner = lookup_player(name); if (owner == NOTHING) { ! notify(player, tprintf(T("%s: No such player."), name)); return; } if (!Search_All(player)) { --- 648,654 ---- else owner = lookup_player(name); if (owner == NOTHING) { ! notify_format(player, T("%s: No such player."), name); return; } if (!Search_All(player)) { *************** *** 667,687 **** } si = get_stats(owner); if (owner == ANY_OWNER) { ! notify(player, ! tprintf ! (T ! ("%d objects = %d rooms, %d exits, %d things, %d players, %d garbage."), ! si->total, si->rooms, si->exits, si->things, si->players, ! si->garbage)); if (first_free != NOTHING) ! notify(player, tprintf(T("The next object to be created will be #%d."), ! first_free)); } else { ! notify(player, ! tprintf ! (T("%d objects = %d rooms, %d exits, %d things, %d players."), ! si->total - si->garbage, si->rooms, si->exits, si->things, ! si->players)); } } --- 659,677 ---- } si = get_stats(owner); if (owner == ANY_OWNER) { ! notify_format(player, ! T ! ("%d objects = %d rooms, %d exits, %d things, %d players, %d garbage."), ! si->total, si->rooms, si->exits, si->things, si->players, ! si->garbage); if (first_free != NOTHING) ! notify_format(player, T("The next object to be created will be #%d."), ! first_free); } else { ! notify_format(player, ! T("%d objects = %d rooms, %d exits, %d things, %d players."), ! si->total - si->garbage, si->rooms, si->exits, si->things, ! si->players); } } *************** *** 842,848 **** change_quota(n_target, -count); #endif ! notify(player, tprintf(T("Ownership changed for %d objects."), count)); } void --- 832,838 ---- change_quota(n_target, -count); #endif ! notify_format(player, T("Ownership changed for %d objects."), count); } void *************** *** 889,895 **** count += do_chzone(player, unparse_dbref(i), target, 0); } } ! notify(player, tprintf(T("Zone changed for %d objects."), count)); } /*----------------------------------------------------------------------- --- 879,885 ---- count += do_chzone(player, unparse_dbref(i), target, 0); } } ! notify_format(player, T("Zone changed for %d objects."), count); } /*----------------------------------------------------------------------- *************** *** 921,927 **** } n = do_top(n); ! notify(player, tprintf(T("%d commands executed."), n)); } --- 911,917 ---- } n = do_top(n); ! notify_format(player, T("%d commands executed."), n); } *************** *** 945,975 **** return; notify(player, object_header(player, thing)); ! notify(player, tprintf(T("Flags value: 0x%08x"), Flags(thing))); ! notify(player, tprintf(T("Toggles value: 0x%08x"), Toggles(thing))); ! notify(player, tprintf(T("Powers value: 0x%08x"), Powers(thing))); ! notify(player, tprintf("Next: %d", Next(thing))); ! notify(player, tprintf("Contents: %d", Contents(thing))); switch (Typeof(thing)) { case TYPE_PLAYER: #ifdef USE_MAILER mp = desc_mail(thing); ! notify(player, ! tprintf(T("First mail sender: %d"), mp ? mp->from : NOTHING)); #endif case TYPE_THING: ! notify(player, tprintf("Location: %d", Location(thing))); ! notify(player, tprintf("Home: %d", Home(thing))); break; case TYPE_EXIT: ! notify(player, tprintf("Destination: %d", Location(thing))); ! notify(player, tprintf("Source: %d", Source(thing))); break; case TYPE_ROOM: ! notify(player, tprintf("Drop-to: %d", Location(thing))); ! notify(player, tprintf("Exits: %d", Exits(thing))); break; case TYPE_GARBAGE: break; --- 935,964 ---- return; notify(player, object_header(player, thing)); ! notify_format(player, T("Flags value: 0x%08x"), Flags(thing)); ! notify_format(player, T("Toggles value: 0x%08x"), Toggles(thing)); ! notify_format(player, T("Powers value: 0x%08x"), Powers(thing)); ! notify_format(player, "Next: %d", Next(thing)); ! notify_format(player, "Contents: %d", Contents(thing)); switch (Typeof(thing)) { case TYPE_PLAYER: #ifdef USE_MAILER mp = desc_mail(thing); ! notify_format(player, T("First mail sender: %d"), mp ? mp->from : NOTHING); #endif case TYPE_THING: ! notify_format(player, "Location: %d", Location(thing)); ! notify_format(player, "Home: %d", Home(thing)); break; case TYPE_EXIT: ! notify_format(player, "Destination: %d", Location(thing)); ! notify_format(player, "Source: %d", Source(thing)); break; case TYPE_ROOM: ! notify_format(player, "Drop-to: %d", Location(thing)); ! notify_format(player, "Exits: %d", Exits(thing)); break; case TYPE_GARBAGE: break; *************** *** 1036,1048 **** #endif void ! do_power(player, name, power) ! dbref player; ! const char *name; ! const char *power; { object_flag_type pwr; ! char *s; dbref thing; if (!Wizard(player)) { --- 1025,1034 ---- #endif void ! do_power(dbref player, const char *name, const char *power) { object_flag_type pwr; ! const char *s; dbref thing; if (!Wizard(player)) { *************** *** 1063,1069 **** return; } /* move past the not token if there is one */ ! for (s = (char *) power; *s && ((*s == NOT_TOKEN) || isspace(*s)); s++) ; if (*s == '\0') { notify(player, T("You must specify a power.")); --- 1049,1055 ---- return; } /* move past the not token if there is one */ ! for (s = power; *s && ((*s == NOT_TOKEN) || isspace(*s)); s++) ; if (*s == '\0') { notify(player, T("You must specify a power.")); *************** *** 1077,1083 **** if (*power == NOT_TOKEN) { Powers(thing) &= ~pwr; if (!AreQuiet(player, thing)) ! notify(player, tprintf(T("%s - power removed."), Name(thing))); do_log(LT_WIZ, player, thing, T("Power Removed: %s"), power); } else { if (Hasprivs(thing) && (pwr == IS_GUEST)) { --- 1063,1069 ---- if (*power == NOT_TOKEN) { Powers(thing) &= ~pwr; if (!AreQuiet(player, thing)) ! notify_format(player, T("%s - power removed."), Name(thing)); do_log(LT_WIZ, player, thing, T("Power Removed: %s"), power); } else { if (Hasprivs(thing) && (pwr == IS_GUEST)) { *************** *** 1086,1092 **** } Powers(thing) |= pwr; if (!AreQuiet(player, thing)) ! notify(player, tprintf(T("%s - power granted."), Name(thing))); do_log(LT_WIZ, player, thing, T("Power Granted: %s"), power); } } --- 1072,1078 ---- } Powers(thing) |= pwr; if (!AreQuiet(player, thing)) ! notify_format(player, T("%s - power granted."), Name(thing)); do_log(LT_WIZ, player, thing, T("Power Granted: %s"), power); } } *************** *** 1096,1104 **** */ ! int raw_search _((dbref player, const char *owner, const char *class, ! const char *restriction, const char *start, const char *stop, ! dbref **result, PE_Info * pe_info)); void do_search(player, arg1, arg3) --- 1082,1090 ---- */ ! int raw_search(dbref player, const char *owner, const char *class, ! const char *restriction, const char *start, const char *stop, ! dbref **result, PE_Info * pe_info); void do_search(player, arg1, arg3) *************** *** 1106,1112 **** const char *arg1; char **arg3; { ! char *arg2; dbref *results = NULL; int nresults; --- 1092,1098 ---- const char *arg1; char **arg3; { ! char tbuf[BUFFER_LEN], *arg2 = tbuf; dbref *results = NULL; int nresults; *************** *** 1117,1123 **** /* First argument is a player, so we could have a quoted name */ if (PLAYER_NAME_SPACES && *arg1 == '\"') { for (; *arg1 && ((*arg1 == '\"') || isspace(*arg1)); arg1++) ; ! arg2 = (char *) arg1; while (*arg2 && (*arg2 != '\"')) { while (*arg2 && (*arg2 != '\"')) arg2++; --- 1103,1109 ---- /* First argument is a player, so we could have a quoted name */ if (PLAYER_NAME_SPACES && *arg1 == '\"') { for (; *arg1 && ((*arg1 == '\"') || isspace(*arg1)); arg1++) ; ! strcpy(tbuf, arg1); while (*arg2 && (*arg2 != '\"')) { while (*arg2 && (*arg2 != '\"')) arg2++; *************** *** 1129,1135 **** } } } else { ! arg2 = (char *) arg1; while (*arg2 && !isspace(*arg2)) arg2++; if (*arg2) --- 1115,1121 ---- } } } else { ! strcpy(tbuf, arg1); while (*arg2 && !isspace(*arg2)) arg2++; if (*arg2) *************** *** 1142,1153 **** if (!arg3[1] || !*arg3[1]) arg2 = (char *) ""; /* arg1 */ else { ! arg2 = (char *) arg1; /* arg2, arg3 */ ! arg1 = (char *) ""; } } ! nresults = raw_search(player, arg1, arg2, arg3[1], arg3[2], arg3[3], &results, NULL); if (nresults == 0) { --- 1128,1139 ---- if (!arg3[1] || !*arg3[1]) arg2 = (char *) ""; /* arg1 */ else { ! arg2 = (char *) arg1; /* arg2=arg3 */ ! tbuf[0] = '\0'; } } ! nresults = raw_search(player, tbuf, arg2, arg3[1], arg3[2], arg3[3], &results, NULL); if (nresults == 0) { *************** *** 1156,1165 **** /* Split the results up by type and report. */ int n; int nthings = 0, nexits = 0, nrooms = 0, nplayers = 0; ! char *tbuf, *tbuf1; dbref *things, *exits, *rooms, *players; - tbuf = (char *) mush_malloc(BUFFER_LEN, "string"); tbuf1 = (char *) mush_malloc(BUFFER_LEN, "string"); things = (dbref *) mush_malloc(sizeof(dbref) * nresults, "dbref_list"); exits = (dbref *) mush_malloc(sizeof(dbref) * nresults, "dbref_list"); --- 1142,1150 ---- /* Split the results up by type and report. */ int n; int nthings = 0, nexits = 0, nrooms = 0, nplayers = 0; ! char *tbuf1; dbref *things, *exits, *rooms, *players; tbuf1 = (char *) mush_malloc(BUFFER_LEN, "string"); things = (dbref *) mush_malloc(sizeof(dbref) * nresults, "dbref_list"); exits = (dbref *) mush_malloc(sizeof(dbref) * nresults, "dbref_list"); *************** *** 1190,1198 **** notify(player, "\nROOMS:"); for (n = 0; n < nrooms; n++) { strcpy(tbuf1, object_header(player, Owner(rooms[n]))); ! sprintf(tbuf, T("%s [owner: %s]"), object_header(player, rooms[n]), ! tbuf1); ! notify(player, tbuf); } } --- 1175,1182 ---- notify(player, "\nROOMS:"); for (n = 0; n < nrooms; n++) { strcpy(tbuf1, object_header(player, Owner(rooms[n]))); ! notify_format(player, T("%s [owner: %s]"), ! object_header(player, rooms[n]), tbuf1); } } *************** *** 1211,1219 **** strcpy(tbuf1, (from == NOTHING) ? "NOWHERE" : object_header(player, from)); strcpy(tbuf2, (to == NOTHING) ? "NOWHERE" : object_header(player, to)); ! sprintf(tbuf, T("%s [from %s to %s]"), object_header(player, exits[n]), ! tbuf1, tbuf2); ! notify(player, tbuf); } mush_free((Malloc_t) tbuf2, "string"); } --- 1195,1202 ---- strcpy(tbuf1, (from == NOTHING) ? "NOWHERE" : object_header(player, from)); strcpy(tbuf2, (to == NOTHING) ? "NOWHERE" : object_header(player, to)); ! notify_format(player, T("%s [from %s to %s]"), ! object_header(player, exits[n]), tbuf1, tbuf2); } mush_free((Malloc_t) tbuf2, "string"); } *************** *** 1222,1230 **** notify(player, "\nOBJECTS:"); for (n = 0; n < nthings; n++) { strcpy(tbuf1, object_header(player, Owner(things[n]))); ! sprintf(tbuf, T("%s [owner: %s]"), object_header(player, things[n]), ! tbuf1); ! notify(player, tbuf); } } --- 1205,1212 ---- notify(player, "\nOBJECTS:"); for (n = 0; n < nthings; n++) { strcpy(tbuf1, object_header(player, Owner(things[n]))); ! notify_format(player, T("%s [owner: %s]"), ! object_header(player, things[n]), tbuf1); } } *************** *** 1244,1254 **** } notify(player, T("---------- Search Done ----------")); ! notify(player, ! tprintf(T ! ("Totals: Rooms...%d Exits...%d Objects...%d Players...%d"), ! nrooms, nexits, nthings, nplayers)); ! mush_free((Malloc_t) tbuf, "string"); mush_free((Malloc_t) tbuf1, "string"); mush_free((Malloc_t) rooms, "dbref_list"); mush_free((Malloc_t) exits, "dbref_list"); --- 1226,1235 ---- } notify(player, T("---------- Search Done ----------")); ! notify_format(player, ! T ! ("Totals: Rooms...%d Exits...%d Objects...%d Players...%d"), ! nrooms, nexits, nthings, nplayers); mush_free((Malloc_t) tbuf1, "string"); mush_free((Malloc_t) rooms, "dbref_list"); mush_free((Malloc_t) exits, "dbref_list"); *************** *** 1310,1331 **** /* Does the actual searching */ int ! raw_search(player, owner, class, restriction, start, stop, result, pe_info) ! dbref player; ! const char *owner; ! const char *class; ! const char *restriction; ! const char *start; ! const char *stop; ! dbref **result; ! PE_Info *pe_info; { Size_t result_size; Size_t nresults = 0; enum search_class sclass = S_OWNER; int n; int restrict_type = NOTYPE; ! object_flag_type restrict_flags = 0, restrict_toggles = 0; dbref restrict_obj = NOTHING, restrict_owner = ANY_OWNER; int is_wiz; dbref low = 0, high = db_top; --- 1291,1306 ---- /* Does the actual searching */ int ! raw_search(dbref player, const char *owner, const char *class, ! const char *restriction, const char *start, const char *stop, ! dbref **result, PE_Info * pe_info) { Size_t result_size; Size_t nresults = 0; enum search_class sclass = S_OWNER; int n; int restrict_type = NOTYPE; ! object_flag_type restrict_flags = 0; dbref restrict_obj = NOTHING, restrict_owner = ANY_OWNER; int is_wiz; dbref low = 0, high = db_top; *************** *** 1444,1458 **** return -1; } } else if (string_prefix("flags", class)) { ! /* ! * convert_flags ignores previous values of flag_mask and ! * restrict_type while setting them ! */ sclass = S_FLAG; ! if (restriction && *restriction && ! !convert_flags(player, (char *) restriction, &restrict_flags, ! &restrict_toggles, &restrict_type)) return -1; } else { notify(player, T("Unknown search class.")); return -1; --- 1419,1430 ---- return -1; } } else if (string_prefix("flags", class)) { ! /* Handle the checking later. */ sclass = S_FLAG; ! if (!restriction || !*restriction) { ! notify(player, T("You must give a flag list.")); return -1; + } } else { notify(player, T("Unknown search class.")); return -1; *************** *** 1466,1473 **** /* make sure player has money to do the search */ if (!payfor(player, FIND_COST)) { ! notify(player, tprintf(T("Searches cost %d %s."), FIND_COST, ! ((FIND_COST == 1) ? MONEY : MONIES))); return -1; } --- 1438,1445 ---- /* make sure player has money to do the search */ if (!payfor(player, FIND_COST)) { ! notify_format(player, T("Searches cost %d %s."), FIND_COST, ! ((FIND_COST == 1) ? MONEY : MONIES)); return -1; } *************** *** 1558,1569 **** char tbuf1[BUFFER_LEN]; char *bp; for (n = low; n < high; n++) { if (!((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner) && (restrict_type == NOTYPE || Typeof(n) == restrict_type))) continue; ! ebuf1 = replace_string("##", tprintf("#%d", n), restriction); ebuf2 = ebuf1; bp = tbuf1; process_expression(tbuf1, &bp, &ebuf2, player, player, player, --- 1530,1544 ---- char tbuf1[BUFFER_LEN]; char *bp; + if (!restriction || !*restriction) + break; + for (n = low; n < high; n++) { if (!((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner) && (restrict_type == NOTYPE || Typeof(n) == restrict_type))) continue; ! ebuf1 = replace_string("##", unparse_dbref(n), restriction); ebuf2 = ebuf1; bp = tbuf1; process_expression(tbuf1, &bp, &ebuf2, player, player, player, *************** *** 1610,1617 **** for (n = low; n < high; n++) { if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner) && (restrict_type == NOTYPE || Typeof(n) == restrict_type) ! && (Flags(n) & restrict_flags) == restrict_flags ! && (Toggles(n) & restrict_toggles) == restrict_toggles) { if (nresults >= result_size) { dbref *newresults; result_size *= 2; --- 1585,1591 ---- for (n = low; n < high; n++) { if ((restrict_owner == ANY_OWNER || Owner(n) == restrict_owner) && (restrict_type == NOTYPE || Typeof(n) == restrict_type) ! && flaglist_check(player, n, restriction, 1)) { if (nresults >= result_size) { dbref *newresults; result_size *= 2; *************** *** 1734,1748 **** add_access_sitelock(player, site, whod, can, cant); write_access_file(); if (whod != AMBIGUOUS) { ! notify(player, ! tprintf(T("Site %s access options for %s(%s) set to %s"), ! site, Name(whod), unparse_dbref(whod), opts)); do_log(LT_WIZ, player, NOTHING, T("*** SITELOCK *** %s for %s(%s) --> %s"), site, Name(whod), unparse_dbref(whod), opts); } else { ! notify(player, ! tprintf(T("Site %s access options set to %s"), site, opts)); do_log(LT_WIZ, player, NOTHING, "*** SITELOCK *** %s --> %s", site, opts); } return; --- 1708,1721 ---- add_access_sitelock(player, site, whod, can, cant); write_access_file(); if (whod != AMBIGUOUS) { ! notify_format(player, ! T("Site %s access options for %s(%s) set to %s"), ! site, Name(whod), unparse_dbref(whod), opts); do_log(LT_WIZ, player, NOTHING, T("*** SITELOCK *** %s for %s(%s) --> %s"), site, Name(whod), unparse_dbref(whod), opts); } else { ! notify_format(player, T("Site %s access options set to %s"), site, opts); do_log(LT_WIZ, player, NOTHING, "*** SITELOCK *** %s --> %s", site, opts); } return; *************** *** 1764,1770 **** else add_access_sitelock(player, site, AMBIGUOUS, 0, ACS_DEFAULT); write_access_file(); ! notify(player, tprintf(T("Site %s locked"), site)); do_log(LT_WIZ, player, NOTHING, "*** SITELOCK *** %s", site); break; case 3:{ --- 1737,1743 ---- else add_access_sitelock(player, site, AMBIGUOUS, 0, ACS_DEFAULT); write_access_file(); ! notify_format(player, T("Site %s locked"), site); do_log(LT_WIZ, player, NOTHING, "*** SITELOCK *** %s", site); break; case 3:{ *************** *** 1852,1858 **** /* Put a newline at the end of the site */ fprintf(fp, "%s\n", site); fclose(fp); ! notify(player, tprintf(T("Name %s locked"), site)); do_log(LT_WIZ, player, NOTHING, "*** NAMELOCK *** %s", site); } else { notify(player, T("Error writing to file.")); --- 1825,1831 ---- /* Put a newline at the end of the site */ fprintf(fp, "%s\n", site); fclose(fp); ! notify_format(player, T("Name %s locked"), site); do_log(LT_WIZ, player, NOTHING, "*** NAMELOCK *** %s", site); } else { notify(player, T("Error writing to file.")); *** 1_7_5.188/src/utils.c Tue, 14 May 2002 22:08:43 -0500 dunemush (pennmush/b/27_utils.c 1.30.1.1.1.2 660) --- 1_7_5.213(w)/src/utils.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/27_utils.c 1.30.1.1.1.3 660) *************** *** 29,35 **** #ifdef WIN32 #include #include /* For GetCurrentProcessId() */ - #undef OPAQUE /* Clashes with flags.h */ #endif #include #include --- 29,34 ---- *** 1_7_5.188/src/timer.c Mon, 22 Apr 2002 11:34:33 -0500 dunemush (pennmush/b/29_timer.c 1.29.1.2 660) --- 1_7_5.213(w)/src/timer.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/29_timer.c 1.29.1.3 660) *************** *** 15,21 **** #endif #ifdef WIN32 #include - #undef OPAQUE /* conflict */ #endif #include #ifdef I_UNISTD --- 15,20 ---- *** 1_7_5.188/src/help.c Mon, 29 Apr 2002 10:47:50 -0500 dunemush (pennmush/f/32_help.c 1.4.1.2.1.1.1.3.2.2.1.1.2.1.1.2.1.2.1.2.1.3.1.2 660) --- 1_7_5.213(w)/src/help.c Thu, 04 Jul 2002 16:11:37 -0500 dunemush (pennmush/f/32_help.c 1.4.1.2.1.1.1.3.2.2.1.1.2.1.1.2.1.2.1.2.1.3.1.3 660) *************** *** 33,39 **** static void do_new_spitfile _((dbref player, char *arg1, help_file *help_dat, int restricted)); ! static char *string_spitfile(help_file *help_dat, char *arg1); static void help_build_index _((help_file *h, int restricted)); --- 33,39 ---- static void do_new_spitfile _((dbref player, char *arg1, help_file *help_dat, int restricted)); ! static const char *string_spitfile(help_file *help_dat, char *arg1); static void help_build_index _((help_file *h, int restricted)); *************** *** 437,443 **** } ! static char * string_spitfile(help_file *help_dat, char *arg1) { help_indx *entry = NULL; --- 437,443 ---- } ! static const char * string_spitfile(help_file *help_dat, char *arg1) { help_indx *entry = NULL; *** 1_7_5.188/src/privtab.c Tue, 03 Oct 2000 09:25:10 -0500 dunemush (pennmush/b/31_privtab.c 1.3 660) --- 1_7_5.213(w)/src/privtab.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/31_privtab.c 1.5 660) *************** *** 140,146 **** bp = buf; for (c = table; c->name; c++) { ! if (privs & c->bits_to_show) { safe_chr(c->letter, buf, &bp); privs &= ~c->bits_to_set; } --- 140,146 ---- bp = buf; for (c = table; c->name; c++) { ! if ((privs & c->bits_to_show) && c->letter) { safe_chr(c->letter, buf, &bp); privs &= ~c->bits_to_set; } *** 1_7_5.188/src/switchinc.c Fri, 17 May 2002 11:04:48 -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.6 660) --- 1_7_5.213(w)/src/switchinc.c Thu, 04 Jul 2002 16:11:38 -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.9 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_5.188/src/strutil.c Mon, 29 Apr 2002 10:17:15 -0500 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.3 660) --- 1_7_5.213(w)/src/strutil.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.6 660) *************** *** 180,196 **** } int ! safe_accent(const char *base, const char *template, size_t len, char *buff, char **bp) { ! /* base and template must be the same length */ size_t n; unsigned char c; for (n = 0; n < len; n++) { switch (base[n]) { case 'A': ! switch (template[n]) { case '`': c = 192; break; --- 180,196 ---- } int ! safe_accent(const char *base, const char *tmplate, size_t len, char *buff, char **bp) { ! /* base and tmplate must be the same length */ size_t n; unsigned char c; for (n = 0; n < len; n++) { switch (base[n]) { case 'A': ! switch (tmplate[n]) { case '`': c = 192; break; *************** *** 214,220 **** } break; case 'a': ! switch (template[n]) { case '`': c = 224; break; --- 214,220 ---- } break; case 'a': ! switch (tmplate[n]) { case '`': c = 224; break; *************** *** 238,256 **** } break; case 'C': ! if (template[n] == ',') c = 199; else c = 'C'; break; case 'c': ! if (template[n] == ',') c = 231; else c = 'c'; break; case 'E': ! switch (template[n]) { case '`': c = 200; break; --- 238,256 ---- } break; case 'C': ! if (tmplate[n] == ',') c = 199; else c = 'C'; break; case 'c': ! if (tmplate[n] == ',') c = 231; else c = 'c'; break; case 'E': ! switch (tmplate[n]) { case '`': c = 200; break; *************** *** 268,274 **** } break; case 'e': ! switch (template[n]) { case '`': c = 232; break; --- 268,274 ---- } break; case 'e': ! switch (tmplate[n]) { case '`': c = 232; break; *************** *** 286,292 **** } break; case 'I': ! switch (template[n]) { case '`': c = 204; break; --- 286,292 ---- } break; case 'I': ! switch (tmplate[n]) { case '`': c = 204; break; *************** *** 304,310 **** } break; case 'i': ! switch (template[n]) { case '`': c = 236; break; --- 304,310 ---- } break; case 'i': ! switch (tmplate[n]) { case '`': c = 236; break; *************** *** 322,340 **** } break; case 'N': ! if (template[n] == '~') c = 209; else c = 'N'; break; case 'n': ! if (template[n] == '~') c = 241; else c = 'n'; break; case 'O': ! switch (template[n]) { case '`': c = 210; break; --- 322,340 ---- } break; case 'N': ! if (tmplate[n] == '~') c = 209; else c = 'N'; break; case 'n': ! if (tmplate[n] == '~') c = 241; else c = 'n'; break; case 'O': ! switch (tmplate[n]) { case '`': c = 210; break; *************** *** 355,361 **** } break; case 'o': ! switch (template[n]) { case '&': c = 240; break; --- 355,361 ---- } break; case 'o': ! switch (tmplate[n]) { case '&': c = 240; break; *************** *** 379,385 **** } break; case 'U': ! switch (template[n]) { case '`': c = 217; break; --- 379,385 ---- } break; case 'U': ! switch (tmplate[n]) { case '`': c = 217; break; *************** *** 397,403 **** } break; case 'u': ! switch (template[n]) { case '`': c = 249; break; --- 397,403 ---- } break; case 'u': ! switch (tmplate[n]) { case '`': c = 249; break; *************** *** 415,477 **** } break; case 'Y': ! if (template[n] == '\'') c = 221; else c = 'Y'; break; case 'y': ! if (template[n] == '\'') c = 253; ! else if (template[n] == ':') c = 255; else c = 'y'; break; case '?': ! if (template[n] == 'u') c = 191; else c = '?'; break; case '!': ! if (template[n] == 'u') c = 161; else c = '!'; break; case '<': ! if (template[n] == '"') c = 171; else c = '<'; break; case '>': ! if (template[n] == '"') c = 187; else c = '>'; break; case 's': ! if (template[n] == 'B') c = 223; else c = 's'; break; case 'p': ! if (template[n] == '|') c = 254; else c = 'p'; break; case 'P': ! if (template[n] == '|') c = 222; else c = 'P'; break; case 'D': ! if (template[n] == '-') c = 208; else c = 'D'; --- 415,477 ---- } break; case 'Y': ! if (tmplate[n] == '\'') c = 221; else c = 'Y'; break; case 'y': ! if (tmplate[n] == '\'') c = 253; ! else if (tmplate[n] == ':') c = 255; else c = 'y'; break; case '?': ! if (tmplate[n] == 'u') c = 191; else c = '?'; break; case '!': ! if (tmplate[n] == 'u') c = 161; else c = '!'; break; case '<': ! if (tmplate[n] == '"') c = 171; else c = '<'; break; case '>': ! if (tmplate[n] == '"') c = 187; else c = '>'; break; case 's': ! if (tmplate[n] == 'B') c = 223; else c = 's'; break; case 'p': ! if (tmplate[n] == '|') c = 254; else c = 'p'; break; case 'P': ! if (tmplate[n] == '|') c = 222; else c = 'P'; break; case 'D': ! if (tmplate[n] == '-') c = 208; else c = 'D'; *************** *** 676,688 **** int u_strlen(const unsigned char *s) { ! return strlen((char *) s); } unsigned char * u_strcpy(unsigned char *target, const unsigned char *source) { ! return (unsigned char *) strcpy((char *) target, (char *) source); } char * --- 676,688 ---- int u_strlen(const unsigned char *s) { ! return strlen((const char *) s); } unsigned char * u_strcpy(unsigned char *target, const unsigned char *source) { ! return (unsigned char *) strcpy((char *) target, (const char *) source); } char * *************** *** 862,874 **** /* Strlen that ignores ansi and HTML sequences */ int ! ansi_strlen(const char *string) { int i = 0; ! char *p; ! if (!ANSI_JUSTIFY) ! return strlen(string); ! p = (char *) string; if (!p) return 0; --- 862,871 ---- /* Strlen that ignores ansi and HTML sequences */ int ! ansi_strlen(const char *p) { int i = 0; ! if (!p) return 0; *************** *** 893,903 **** /* Returns true length of string up to numchars visible characters. */ int ! ansi_strnlen(const char *string, Size_t numchars) { int i = 0; ! char *p; ! p = (char *) string; if (!p) return 0; while (*p && numchars > 0) { --- 890,899 ---- /* Returns true length of string up to numchars visible characters. */ int ! ansi_strnlen(const char *p, size_t numchars) { int i = 0; ! if (!p) return 0; while (*p && numchars > 0) { *************** *** 951,957 **** } char * ! next_in_list(char **head) { int paren = 0; static char buf[BUFFER_LEN]; --- 947,953 ---- } char * ! next_in_list(const char **head) { int paren = 0; static char buf[BUFFER_LEN]; *************** *** 987,999 **** { static char buff[BUFFER_LEN]; char *bp = buff; ! char *q; ! Size_t len = 0; if (!orig) return NULL; ! for (q = (char *) orig; *q;) { switch (*q) { case ESC_CHAR: /* Skip over ansi */ --- 983,995 ---- { static char buff[BUFFER_LEN]; char *bp = buff; ! const char *q; ! size_t len = 0; if (!orig) return NULL; ! for (q = orig; *q;) { switch (*q) { case ESC_CHAR: /* Skip over ansi */ *************** *** 1075,1081 **** size = stack + sizeof(stack) - current; ! // if (size < (int) ((buff + maxlen - 1) - *bp)) { if (((int) (*bp - buff)) + size < maxlen - 2) { switch (size % 8) { case 0: --- 1071,1077 ---- size = stack + sizeof(stack) - current; ! /* if (size < (int) ((buff + maxlen - 1) - *bp)) { */ if (((int) (*bp - buff)) + size < maxlen - 2) { switch (size % 8) { case 0: *************** *** 1172,1180 **** #endif /* HAS_STRXFRM && !WIN32 */ char * ! skip_leading_ansi(const char *s) { - char *p = (char *) s; if (!p) return NULL; while (*p == ESC_CHAR || *p == TAG_START) { --- 1168,1175 ---- #endif /* HAS_STRXFRM && !WIN32 */ char * ! skip_leading_ansi(const char *p) { if (!p) return NULL; while (*p == ESC_CHAR || *p == TAG_START) { *************** *** 1188,1194 **** if (*p) p++; } ! return p; } --- 1183,1189 ---- if (*p) p++; } ! return (char *) p; } *************** *** 1206,1212 **** if (!data) return NULL; ! data->len = ansi_strlen((char *) src); while (*src) { y = skip_leading_ansi(src); --- 1201,1207 ---- if (!data) return NULL; ! data->len = ansi_strlen(src); while (*src) { y = skip_leading_ansi(src); *** 1_7_5.188/src/speech.c Mon, 29 Apr 2002 10:17:15 -0500 dunemush (pennmush/b/35_speech.c 1.21.1.2.1.3.1.5.1.1.1.7.1.3.1.1.1.8.1.1.1.1.1.1 660) --- 1_7_5.213(w)/src/speech.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/35_speech.c 1.21.1.2.1.3.1.5.1.1.1.7.1.3.1.1.1.8.1.1.1.1.1.1.1.3 660) *************** *** 298,307 **** dbref good[100]; int gcount, bcount; char *bad, *bptr; ! char *head; int overheard; char *current; ! char **start; if (!arg1 || !*arg1) { notify(player, T("Whisper to whom?")); --- 298,307 ---- dbref good[100]; int gcount, bcount; char *bad, *bptr; ! const char *head; int overheard; char *current; ! const char **start; if (!arg1 || !*arg1) { notify(player, T("Whisper to whom?")); *************** *** 319,325 **** panic("Unable to allocate memory in do_whisper_list"); overheard = 0; ! head = (char *) arg1; start = &head; /* Figure out what kind of message */ gap = " "; --- 319,325 ---- panic("Unable to allocate memory in do_whisper_list"); overheard = 0; ! head = arg1; start = &head; /* Figure out what kind of message */ gap = " "; *************** *** 340,346 **** bptr = bad; safe_str(T("Unable to whisper to:"), bad, &bptr); while (head && *head) { ! current = (char *) next_in_list(start); who = match_result(player, current, TYPE_PLAYER, MAT_NEAR_THINGS | MAT_CONTAINER); if (!GoodObject(who)) { --- 340,346 ---- bptr = bad; safe_str(T("Unable to whisper to:"), bad, &bptr); while (head && *head) { ! current = next_in_list(start); who = match_result(player, current, TYPE_PLAYER, MAT_NEAR_THINGS | MAT_CONTAINER); if (!GoodObject(who)) { *************** *** 485,491 **** } void ! do_pemit_list(dbref player, char *list, const char *message) { /* Send a message to a list of dbrefs. To avoid repeated generation * of the NOSPOOF string, we set it up the first time we encounter --- 485,491 ---- } void ! do_pemit_list(dbref player, char *list, const char *message, int nospoof) { /* Send a message to a list of dbrefs. To avoid repeated generation * of the NOSPOOF string, we set it up the first time we encounter *************** *** 510,516 **** while ((p = split_token(&l, ' '))) { who = noisy_match_result(player, p, NOTYPE, MAT_ABSOLUTE); if (GoodObject(who) && okay_pemit(player, who)) { ! if (Nospoof(who)) { bp = tbuf; if (Paranoid(who)) safe_format(tbuf, &bp, "[%s(#%d)->] ", Name(player), player); --- 510,516 ---- while ((p = split_token(&l, ' '))) { who = noisy_match_result(player, p, NOTYPE, MAT_ABSOLUTE); if (GoodObject(who) && okay_pemit(player, who)) { ! if (nospoof && Nospoof(who)) { bp = tbuf; if (Paranoid(who)) safe_format(tbuf, &bp, "[%s(#%d)->] ", Name(player), player); *************** *** 527,539 **** } void ! do_pemit(dbref player, const char *arg1, const char *arg2, int silent) { dbref who; ! switch (who = ! match_result(player, arg1, NOTYPE, ! MAT_OBJECTS | MAT_HERE | MAT_CONTAINER)) { case NOTHING: notify(player, T("I don't see that here.")); break; --- 527,539 ---- } void ! do_pemit(dbref player, const char *arg1, const char *arg2, int silent, ! int nospoof) { dbref who; ! switch (who = match_result(player, arg1, NOTYPE, ! MAT_OBJECTS | MAT_HERE | MAT_CONTAINER)) { case NOTHING: notify(player, T("I don't see that here.")); break; *************** *** 553,559 **** } if (!silent) notify_format(player, T("You pemit \"%s\" to %s."), arg2, Name(who)); ! if (Nospoof(who)) { if (Paranoid(who)) notify_format(who, "[%s(#%d)->%s] %s", Name(player), player, Name(who), arg2); --- 553,559 ---- } if (!silent) notify_format(player, T("You pemit \"%s\" to %s."), arg2, Name(who)); ! if (nospoof && Nospoof(who)) { if (Paranoid(who)) notify_format(who, "[%s(#%d)->%s] %s", Name(player), player, Name(who), arg2); *************** *** 697,703 **** int noeval, int multipage) { dbref target; ! char *message; const char *gap; int key; char *tbuf, *tbuf2; --- 697,703 ---- int noeval, int multipage) { dbref target; ! const char *message; const char *gap; int key; char *tbuf, *tbuf2; *************** *** 705,714 **** char *rp, *rplist; dbref good[100]; int gcount = 0, bcount = 0; ! char tobuf[BUFFER_LEN]; ! char msgbuf[BUFFER_LEN]; ! char *head; ! char **start; char *current; char *s; int i; --- 705,714 ---- char *rp, *rplist; dbref good[100]; int gcount = 0, bcount = 0; ! char tobuf[BUFFER_LEN], *tb; ! char msgbuf[BUFFER_LEN], *mb; ! const char *head; ! const char **start; char *current; char *s; int i; *************** *** 717,746 **** if (arg2 && *arg2) { /* page to=msg. Always evaluate to, maybe evaluate msg */ ! head = tobuf; ! process_expression(tobuf, &head, &arg1, player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL); ! *head = '\0'; head = tobuf; if (noeval) { ! message = (char *) arg2; } else { ! message = msgbuf; ! process_expression(msgbuf, &message, &arg2, player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL); ! *message = '\0'; message = msgbuf; } } else { /* page msg. A repage. Maybe evaluate msg */ head = NULL; if (noeval) { ! message = (char *) arg1; } else { ! message = msgbuf; ! process_expression(msgbuf, &message, &arg1, player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL); ! *message = '\0'; message = msgbuf; } } --- 717,746 ---- if (arg2 && *arg2) { /* page to=msg. Always evaluate to, maybe evaluate msg */ ! tb = tobuf; ! process_expression(tobuf, &tb, &arg1, player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL); ! *tb = '\0'; head = tobuf; if (noeval) { ! message = arg2; } else { ! mb = msgbuf; ! process_expression(msgbuf, &mb, &arg2, player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL); ! *mb = '\0'; message = msgbuf; } } else { /* page msg. A repage. Maybe evaluate msg */ head = NULL; if (noeval) { ! message = arg1; } else { ! mb = msgbuf; ! process_expression(msgbuf, &mb, &arg1, player, cause, cause, PE_DEFAULT, PT_DEFAULT, NULL); ! *mb = '\0'; message = msgbuf; } } *************** *** 805,811 **** safe_str(T("Unable to page:"), tbuf, &tp); while (head && *head) { ! current = (char *) next_in_list(start); target = lookup_player(current); if (!GoodObject(target)) target = short_page(current); --- 805,811 ---- safe_str(T("Unable to page:"), tbuf, &tp); while (head && *head) { ! current = next_in_list(start); target = lookup_player(current); if (!GoodObject(target)) target = short_page(current); *************** *** 1075,1082 **** const char * make_prefixstr(dbref thing, const char *msg) { ! char *bp; ! char const *asave, *ap; static char tbuf1[BUFFER_LEN]; char *wsave[10], *preserve[NUMQ]; ATTR *a; --- 1075,1082 ---- const char * make_prefixstr(dbref thing, const char *msg) { ! char *bp, *asave; ! char const *ap; static char tbuf1[BUFFER_LEN]; char *wsave[10], *preserve[NUMQ]; ATTR *a; *** 1_7_5.188/src/set.c Wed, 10 Apr 2002 20:36:23 -0500 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.2 660) --- 1_7_5.213(w)/src/set.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.3 660) *************** *** 6,16 **** /* commands which set parameters */ #include #include - #ifdef I_STRING #include - #else - #include - #endif #ifdef I_SYS_TIME #include #else --- 6,12 ---- *************** *** 19,27 **** #ifdef I_SYS_TYPES #include #endif - #ifdef I_STDLIB #include - #endif #include "conf.h" #include "mushdb.h" --- 15,21 ---- *************** *** 372,377 **** --- 366,385 ---- notify(player, T("You shouldn't zone objects to themselves!")); return 0; } + /* Don't allow circular zones */ + { + dbref tmp; + for (tmp = Zone(zone); GoodObject(tmp); tmp = Zone(tmp)) { + if (tmp == thing) { + notify(player, T("You can't make circular zones!")); + return 0; + } + if (tmp == Zone(tmp)) /* Ran into an object zoned to itself */ + break; + } + } + + /* Don't allow chzone to objects without elocks! * If no lock is set, set a default lock (warn if zmo are used for control) * This checks for many trivial elocks (canuse/1, where &canuse=1) *************** *** 454,461 **** if (!(Can_Write_Attr(player, thing, AL_ATTR(atr)) || ((*af->flag == NOT_TOKEN) && (af->f == AF_SAFE) && Can_Write_Attr_Ignore_Safe(player, thing, AL_ATTR(atr))))) { ! notify(player, ! tprintf(T("You cannot set %s/%s"), Name(thing), AL_NAME(atr))); return 0; } if (*af->flag == NOT_TOKEN) --- 462,468 ---- if (!(Can_Write_Attr(player, thing, AL_ATTR(atr)) || ((*af->flag == NOT_TOKEN) && (af->f == AF_SAFE) && Can_Write_Attr_Ignore_Safe(player, thing, AL_ATTR(atr))))) { ! notify_format(player, T("You cannot set %s/%s"), Name(thing), AL_NAME(atr)); return 0; } if (*af->flag == NOT_TOKEN) *************** *** 464,470 **** AL_FLAGS(atr) |= af->f; if (!Quiet(player) && !(Quiet(thing) && (Owner(thing) == player))) ! notify(player, tprintf("%s/%s - Set.", Name(thing), AL_NAME(atr))); return 1; } --- 471,477 ---- AL_FLAGS(atr) |= af->f; if (!Quiet(player) && !(Quiet(thing) && (Owner(thing) == player))) ! notify_format(player, "%s/%s - Set.", Name(thing), AL_NAME(atr)); return 1; } *************** *** 479,487 **** if (!atr) return; if (!Can_Write_Attr(player, target, AL_ATTR(atr))) { ! notify(player, ! tprintf(T("You cannot set attrib flags on %s/%s"), Name(target), ! AL_NAME(atr))); return; } AL_FLAGS(atr) = flags; --- 486,494 ---- if (!atr) return; if (!Can_Write_Attr(player, target, AL_ATTR(atr))) { ! notify_format(player, ! T("You cannot set attrib flags on %s/%s"), Name(target), ! AL_NAME(atr)); return; } AL_FLAGS(atr) = flags; *************** *** 647,659 **** free((Malloc_t) text); /* safe_uncompress malloc()s memory */ if (copies) { ! notify(player, tprintf(T("Attribute %s (%d copies)"), ! (move ? "moved" : "copied"), copies)); if (move) do_set_atr(oldobj, AL_NAME(a), NULL, player, 1); } else { ! notify(player, tprintf(T("Unable to %s attribute."), ! (move ? "move" : "copy"))); } return; } --- 654,666 ---- free((Malloc_t) text); /* safe_uncompress malloc()s memory */ if (copies) { ! notify_format(player, T("Attribute %s (%d copies)"), ! (move ? "moved" : "copied"), copies); if (move) do_set_atr(oldobj, AL_NAME(a), NULL, player, 1); } else { ! notify_format(player, T("Unable to %s attribute."), ! (move ? "move" : "copy")); } return; } *************** *** 667,679 **** void *args; { int ansi_long_flag = 0; ! char *r, *s, *val; char tbuf1[BUFFER_LEN], tbuf_ansi[BUFFER_LEN]; char *tbufp, *tbufap; char **argv = (char **) args; val = argv[1]; ! r = (argv[2]) ? argv[2] : (char *) ""; tbufp = tbuf1; tbufap = tbuf_ansi; --- 674,687 ---- void *args; { int ansi_long_flag = 0; ! const char *r; ! char *s, *val; char tbuf1[BUFFER_LEN], tbuf_ansi[BUFFER_LEN]; char *tbufp, *tbufap; char **argv = (char **) args; val = argv[1]; ! r = (argv[2]) ? argv[2] : ""; tbufp = tbuf1; tbufap = tbuf_ansi; *************** *** 756,764 **** if (do_set_atr(thing, AL_NAME(a), tbuf1, player, 0) && !Quiet(player) && !Quiet(thing)) { if (!ansi_long_flag && ShowAnsi(player)) ! notify(player, tprintf("%s - Set: %s", AL_NAME(a), tbuf_ansi)); else ! notify(player, tprintf("%s - Set: %s", AL_NAME(a), tbuf1)); } return 1; --- 764,772 ---- if (do_set_atr(thing, AL_NAME(a), tbuf1, player, 0) && !Quiet(player) && !Quiet(thing)) { if (!ansi_long_flag && ShowAnsi(player)) ! notify_format(player, "%s - Set: %s", AL_NAME(a), tbuf_ansi); else ! notify_format(player, "%s - Set: %s", AL_NAME(a), tbuf1); } return 1; *************** *** 838,844 **** if (charge_action(player, thing, upcasestr(s))) { if (!Quiet(player) && !Quiet(thing)) ! notify(player, tprintf("%s - Triggered.", Name(thing))); } else { notify(player, T("No such attribute.")); } --- 846,852 ---- if (charge_action(player, thing, upcasestr(s))) { if (!Quiet(player) && !Quiet(thing)) ! notify_format(player, "%s - Triggered.", Name(thing)); } else { notify(player, T("No such attribute.")); } *** 1_7_5.188/src/services.c Tue, 15 May 2001 15:59:50 -0500 dunemush (pennmush/b/39_services.c 1.11 660) --- 1_7_5.213(w)/src/services.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/39_services.c 1.12 660) *************** *** 8,14 **** #include "config.h" #include /* for service and thread routines */ - #undef OPAQUE /* clashes with MUSH definition */ #ifdef I_STDLIB #include --- 8,13 ---- *** 1_7_5.188/src/rob.c Mon, 11 Mar 2002 18:22:55 -0600 dunemush (pennmush/b/42_rob.c 1.18.1.2.1.3.1.4 660) --- 1_7_5.213(w)/src/rob.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/42_rob.c 1.18.1.2.1.3.1.3.1.3 660) *************** *** 3,11 **** #include "config.h" #include "copyrite.h" #include - #ifdef I_STDLIB #include - #endif /* give and kill */ --- 3,9 ---- *************** *** 18,35 **** #include "log.h" #include "lock.h" #include "dbdefs.h" #include "confmagic.h" - - void do_kill _((dbref player, const char *what, int cost, int slay)); - void do_give _((dbref player, char *recipient, char *amnt, int silent)); - void ! do_kill(player, what, cost, slay) ! dbref player; ! const char *what; ! int cost; ! int slay; { dbref victim; char tbuf1[BUFFER_LEN], tbuf2[BUFFER_LEN]; --- 16,26 ---- #include "log.h" #include "lock.h" #include "dbdefs.h" + #include "game.h" #include "confmagic.h" void ! do_kill(dbref player, const char *what, int cost, int slay) { dbref victim; char tbuf1[BUFFER_LEN], tbuf2[BUFFER_LEN]; *************** *** 78,84 **** /* see if it works */ if (!payfor(player, cost)) { ! notify(player, tprintf(T("You don't have enough %s."), MONIES)); break; } } --- 69,75 ---- /* see if it works */ if (!payfor(player, cost)) { ! notify_format(player, T("You don't have enough %s."), MONIES); break; } } *************** *** 101,108 **** if (payoff + Pennies(Owner(victim)) > Max_Pennies(Owner(victim))) payoff = Max_Pennies(Owner(victim)) - Pennies(Owner(victim)); if (payoff > 0) { ! notify(victim, tprintf(T("Your insurance policy pays %d %s."), ! payoff, ((payoff == 1) ? MONEY : MONIES))); giveto(Owner(victim), payoff); } else { notify(victim, T("Your insurance policy has been revoked.")); --- 92,99 ---- if (payoff + Pennies(Owner(victim)) > Max_Pennies(Owner(victim))) payoff = Max_Pennies(Owner(victim)) - Pennies(Owner(victim)); if (payoff > 0) { ! notify_format(victim, T("Your insurance policy pays %d %s."), ! payoff, ((payoff == 1) ? MONEY : MONIES)); giveto(Owner(victim), payoff); } else { notify(victim, T("Your insurance policy has been revoked.")); *************** *** 114,120 **** } else { /* notify player and victim only */ notify(player, T("Your murder attempt failed.")); ! notify(victim, tprintf(T("%s tried to kill you!"), Name(player))); } break; } --- 105,111 ---- } else { /* notify player and victim only */ notify(player, T("Your murder attempt failed.")); ! notify_format(victim, T("%s tried to kill you!"), Name(player)); } break; } *************** *** 122,132 **** } void ! do_give(player, recipient, amnt, silent) ! dbref player; ! char *recipient; ! char *amnt; ! int silent; { dbref who; int amount; --- 113,119 ---- } void ! do_give(dbref player, char *recipient, char *amnt, int silent) { dbref who; int amount; *************** *** 199,206 **** "AGIVE", NOTHING, myenv); /* Notify the object that it's been given */ ! notify(thing, ! tprintf(T("%s gave you to %s."), Name(player), Name(who))); /* Recipient gets success message on thing and receive on self */ did_it(who, thing, "SUCCESS", NULL, "OSUCCESS", NULL, "ASUCCESS", --- 186,192 ---- "AGIVE", NOTHING, myenv); /* Notify the object that it's been given */ ! notify_format(thing, T("%s gave you to %s."), Name(player), Name(who)); /* Recipient gets success message on thing and receive on self */ did_it(who, thing, "SUCCESS", NULL, "OSUCCESS", NULL, "ASUCCESS", *************** *** 209,214 **** --- 195,201 ---- safe_format(tbuf1, &bp, T("%s gave you %s."), Name(player), Name(thing)); *bp = '\0'; + sprintf(myenv[1], "#%d", player); real_did_it(who, who, "RECEIVE", tbuf1, "ORECEIVE", NULL, "ARECEIVE", NOTHING, myenv); *************** *** 225,232 **** notify(player, T("What is this, a holdup?")); return; } else if (amount == 0) { ! notify(player, ! tprintf(T("You must specify a positive number of %s."), MONIES)); return; } if (Pennies(who) + amount > Max_Pennies(who)) { --- 212,219 ---- notify(player, T("What is this, a holdup?")); return; } else if (amount == 0) { ! notify_format(player, ! T("You must specify a positive number of %s."), MONIES); return; } if (Pennies(who) + amount > Max_Pennies(who)) { *************** *** 240,246 **** } /* try to do the give */ if (!payfor(player, amount)) { ! notify(player, tprintf(T("You don't have that many %s to give!"), MONIES)); } else { /* objects work differently */ if (IsThing(who)) { --- 227,233 ---- } /* try to do the give */ if (!payfor(player, amount)) { ! notify_format(player, T("You don't have that many %s to give!"), MONIES); } else { /* objects work differently */ if (IsThing(who)) { *************** *** 269,290 **** } else { /* he can do it */ if (amount > 0) { ! notify(player, ! tprintf(T("You give %d %s to %s."), amount, ! ((amount == 1) ? MONEY : MONIES), Name(who))); } else { ! notify(player, tprintf(T("You took %d %s from %s!"), abs(amount), ! ((abs(amount) == 1) ? MONEY : MONIES), ! Name(who))); } if (IsPlayer(who) && !silent) { if (amount > 0) { ! notify(who, tprintf(T("%s gives you %d %s."), Name(player), ! amount, ((amount == 1) ? MONEY : MONIES))); } else { ! notify(who, tprintf(T("%s took %d %s from you!"), Name(player), ! abs(amount), ! ((abs(amount) == 1) ? MONEY : MONIES))); } } giveto(who, amount); --- 256,275 ---- } else { /* he can do it */ if (amount > 0) { ! notify_format(player, ! T("You give %d %s to %s."), amount, ! ((amount == 1) ? MONEY : MONIES), Name(who)); } else { ! notify_format(player, T("You took %d %s from %s!"), abs(amount), ! ((abs(amount) == 1) ? MONEY : MONIES), Name(who)); } if (IsPlayer(who) && !silent) { if (amount > 0) { ! notify_format(who, T("%s gives you %d %s."), Name(player), ! amount, ((amount == 1) ? MONEY : MONIES)); } else { ! notify_format(who, T("%s took %d %s from you!"), Name(player), ! abs(amount), ((abs(amount) == 1) ? MONEY : MONIES)); } } giveto(who, amount); *** 1_7_5.188/src/predicat.c Wed, 06 Feb 2002 23:25:21 -0600 dunemush (pennmush/b/44_predicat.c 1.1.1.34.1.1.1.3.1.4.2.2 660) --- 1_7_5.213(w)/src/predicat.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/44_predicat.c 1.1.1.34.1.1.1.3.1.4.2.3 660) *************** *** 183,190 **** */ ATTR *d; ! char buff[BUFFER_LEN], *bp, *sp; ! char const *asave, *ap; int j; char *preserves[10]; char *preserveq[NUMQ]; --- 183,190 ---- */ ATTR *d; ! char buff[BUFFER_LEN], *bp, *sp, *asave; ! char const *ap; int j; char *preserves[10]; char *preserveq[NUMQ]; *************** *** 797,804 **** /* code for auto-return page - HAVEN, IDLE, and AWAY messages */ ATTR *d; ! char buff[BUFFER_LEN], *bp; ! char const *asave, *ap; struct tm *ptr; if (message && *message) { --- 797,804 ---- /* code for auto-return page - HAVEN, IDLE, and AWAY messages */ ATTR *d; ! char buff[BUFFER_LEN], *bp, *asave; ! char const *ap; struct tm *ptr; if (message && *message) { *** 1_7_5.188/src/plyrlist.c Wed, 15 May 2002 20:41:03 -0500 dunemush (pennmush/b/46_plyrlist.c 1.5.1.2 660) --- 1_7_5.213(w)/src/plyrlist.c Thu, 04 Jul 2002 16:11:38 -0500 dunemush (pennmush/b/46_plyrlist.c 1.5.1.2.1.1 660) *************** *** 3,16 **** #include "config.h" #include - #ifdef I_STRING #include - #else - #include - #endif - #ifdef I_STDLIB #include ! #endif #include "copyrite.h" #include "conf.h" --- 3,11 ---- #include "config.h" #include #include #include ! #include "copyrite.h" #include "conf.h" *************** *** 25,31 **** HASHTAB htab_player_list; static int hft_initialized = 0; ! static void init_hft _((void)); static void init_hft() --- 20,26 ---- HASHTAB htab_player_list; static int hft_initialized = 0; ! static void init_hft(void); static void init_hft() *************** *** 42,50 **** void ! add_player(player, alias) ! dbref player; ! char *alias; { if (!hft_initialized) init_hft(); --- 37,43 ---- void ! add_player(dbref player, const char *alias) { if (!hft_initialized) init_hft(); *************** *** 55,62 **** } dbref ! lookup_player(name) ! const char *name; { int p; void *hval; --- 48,54 ---- } dbref ! lookup_player(const char *name) { int p; void *hval; *************** *** 86,94 **** } void ! delete_player(player, alias) ! dbref player; ! char *alias; { if (alias) hashdelete(strupper(alias), &htab_player_list); --- 78,84 ---- } void ! delete_player(dbref player, const char *alias) { if (alias) hashdelete(strupper(alias), &htab_player_list); *** 1_7_5.188/src/mycrypt.c Wed, 06 Sep 2000 20:09:35 -0500 dunemush (pennmush/b/50_mycrypt.c 1.4 660) --- 1_7_5.213(w)/src/mycrypt.c Thu, 04 Jul 2002 16:11:37 -0500 dunemush (pennmush/b/50_mycrypt.c 1.5 660) *************** *** 28,37 **** #include "shs.c" #endif ! char *mush_crypt _((const char *key)); char * ! mush_crypt(key) ! const char *key; { #if (CRYPT_SYSTEM >= 2) SHS_INFO shsInfo; --- 28,36 ---- #include "shs.c" #endif ! char *mush_crypt(const char *key); char * ! mush_crypt(const char *key) { #if (CRYPT_SYSTEM >= 2) SHS_INFO shsInfo; *************** *** 51,57 **** #if (CRYPT_SYSTEM >= 2) shsInfo.reverse_wanted = (BYTE) options.reverse_shs; shsInit(&shsInfo); ! shsUpdate(&shsInfo, (BYTE *) key, strlen(key)); shsFinal(&shsInfo); sprintf(crypt_buff, "XX%lu%lu", shsInfo.digest[0], shsInfo.digest[1]); return crypt_buff; --- 50,56 ---- #if (CRYPT_SYSTEM >= 2) shsInfo.reverse_wanted = (BYTE) options.reverse_shs; shsInit(&shsInfo); ! shsUpdate(&shsInfo, (const BYTE *) key, strlen(key)); shsFinal(&shsInfo); sprintf(crypt_buff, "XX%lu%lu", shsInfo.digest[0], shsInfo.digest[1]); return crypt_buff; *** 1_7_5.188/src/move.c Fri, 10 May 2002 22:07:51 -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.1.2 660) --- 1_7_5.213(w)/src/move.c Thu, 04 Jul 2002 16:11:37 -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.1.1.1.4 660) *************** *** 4,14 **** #include "config.h" #include - #ifdef I_STRING #include - #else - #include - #endif #include "conf.h" #include "mushdb.h" --- 4,10 ---- *************** *** 28,47 **** extern char ccom[BUFFER_LEN]; ! void moveit _((dbref what, dbref where, int nomovemsgs)); ! static void send_contents _((dbref loc, dbref dest)); ! static void maybe_dropto _((dbref loc, dbref dropto)); ! static dbref find_var_dest _((dbref player, dbref exit_obj)); ! static void add_follower _((dbref leader, dbref follower)); ! static void add_following _((dbref follower, dbref leader)); ! static void add_follow _((dbref leader, dbref follower, int noisy)); ! static void del_follower _((dbref leader, dbref follower)); ! static void del_following _((dbref follower, dbref leader)); ! static void del_follow _((dbref follower, dbref leader, int noisy)); ! static char *list_followers _((dbref player)); ! static char *list_following _((dbref player)); ! static int is_following _((dbref follower, dbref leader)); ! static void follower_command _((dbref leader, dbref loc, char *com)); void moveto(what, where) --- 24,43 ---- extern char ccom[BUFFER_LEN]; ! void moveit(dbref what, dbref where, int nomovemsgs); ! static void send_contents(dbref loc, dbref dest); ! static void maybe_dropto(dbref loc, dbref dropto); ! static dbref find_var_dest(dbref player, dbref exit_obj); ! static void add_follower(dbref leader, dbref follower); ! static void add_following(dbref follower, dbref leader); ! static void add_follow(dbref leader, dbref follower, int noisy); ! static void del_follower(dbref leader, dbref follower); ! static void del_following(dbref follower, dbref leader); ! static void del_follow(dbref follower, dbref leader, int noisy); ! static char *list_followers(dbref player); ! static char *list_following(dbref player); ! static int is_following(dbref follower, dbref leader); ! static void follower_command(dbref leader, dbref loc, const char *com); void moveto(what, where) *************** *** 484,490 **** Exits(loc) = remove_first(Exits(loc), thing); Source(thing) = loc; PUSH(thing, Exits(loc)); ! notify(player, tprintf(T("%s is now the first exit."), Name(thing))); } --- 480,486 ---- Exits(loc) = remove_first(Exits(loc), thing); Source(thing) = loc; PUSH(thing, Exits(loc)); ! notify_format(player, T("%s is now the first exit."), Name(thing)); } *************** *** 526,539 **** (controls(player, thing) || (EnterOk(Location(thing)) && eval_lock(player, Location(thing), Enter_Lock)))) { ! moveto(thing, player); ! notify(Location(thing), ! tprintf(T("%s was taken from you."), Name(thing))); notify_format(thing, T("%s took you."), Name(player)); sprintf(tbuf1, T("You take %s from %s."), Name(thing), Name(Location(thing))); sprintf(tbuf2, T("takes %s from %s."), Name(thing), Name(Location(thing))); did_it(player, thing, "SUCCESS", tbuf1, "OSUCCESS", tbuf2, "ASUCCESS", NOTHING); myenv[0] = (char *) mush_malloc(BUFFER_LEN, "dbref"); --- 522,535 ---- (controls(player, thing) || (EnterOk(Location(thing)) && eval_lock(player, Location(thing), Enter_Lock)))) { ! notify_format(Location(thing), ! T("%s was taken from you."), Name(thing)); notify_format(thing, T("%s took you."), Name(player)); sprintf(tbuf1, T("You take %s from %s."), Name(thing), Name(Location(thing))); sprintf(tbuf2, T("takes %s from %s."), Name(thing), Name(Location(thing))); + moveto(thing, player); did_it(player, thing, "SUCCESS", tbuf1, "OSUCCESS", tbuf2, "ASUCCESS", NOTHING); myenv[0] = (char *) mush_malloc(BUFFER_LEN, "dbref"); *************** *** 721,727 **** } enter_room(player, Location(loc), 0); if (Location(player) != loc) ! follower_command(player, loc, (char *) "leave"); } dbref --- 717,723 ---- } enter_room(player, Location(loc), 0); if (Location(player) != loc) ! follower_command(player, loc, "leave"); } dbref *************** *** 821,829 **** add_follow(leader, player, 1); } else { /* List followers */ ! notify(player, tprintf(T("You are following: %s"), list_following(player))); ! notify(player, ! tprintf(T("You are followed by: %s"), list_followers(player))); } } --- 817,824 ---- add_follow(leader, player, 1); } else { /* List followers */ ! notify_format(player, T("You are following: %s"), list_following(player)); ! notify_format(player, T("You are followed by: %s"), list_followers(player)); } } *************** *** 982,988 **** add_following(follower, leader); if (noisy) { strcpy(msg, tprintf(T("You begin following %s."), Name(leader))); ! notify(leader, tprintf(T("%s begins following you."), Name(follower))); did_it(follower, leader, "FOLLOW", msg, "OFOLLOW", NULL, "AFOLLOW", NOTHING); } --- 977,983 ---- add_following(follower, leader); if (noisy) { strcpy(msg, tprintf(T("You begin following %s."), Name(leader))); ! notify_format(leader, T("%s begins following you."), Name(follower)); did_it(follower, leader, "FOLLOW", msg, "OFOLLOW", NULL, "AFOLLOW", NOTHING); } *************** *** 1040,1046 **** del_following(follower, leader); if (noisy) { strcpy(msg, tprintf(T("You stop following %s."), Name(leader))); ! notify(leader, tprintf(T("%s stops following you."), Name(follower))); did_it(follower, leader, "UNFOLLOW", msg, "OUNFOLLOW", NULL, "AUNFOLLOW", NOTHING); } --- 1035,1041 ---- del_following(follower, leader); if (noisy) { strcpy(msg, tprintf(T("You stop following %s."), Name(leader))); ! notify_format(leader, T("%s stops following you."), Name(follower)); did_it(follower, leader, "UNFOLLOW", msg, "OUNFOLLOW", NULL, "AUNFOLLOW", NOTHING); } *************** *** 1158,1164 **** if (GoodObject(flwr)) { del_following(flwr, leader); if (noisy) ! notify(flwr, tprintf(T("You stop following %s."), Name(leader))); } } (void) atr_clr(leader, "FOLLOWERS", GOD); --- 1153,1159 ---- if (GoodObject(flwr)) { del_following(flwr, leader); if (noisy) ! notify_format(flwr, T("You stop following %s."), Name(leader)); } } (void) atr_clr(leader, "FOLLOWERS", GOD); *************** *** 1185,1191 **** if (GoodObject(ldr)) { del_follower(ldr, follower); if (noisy) ! notify(ldr, tprintf(T("%s stops following you."), Name(follower))); } } (void) atr_clr(follower, "FOLLOWING", GOD); --- 1180,1186 ---- if (GoodObject(ldr)) { del_follower(ldr, follower); if (noisy) ! notify_format(ldr, T("%s stops following you."), Name(follower)); } } (void) atr_clr(follower, "FOLLOWING", GOD); *************** *** 1195,1204 **** * leader, run the same command the leader just ran. */ static void ! follower_command(leader, loc, com) ! dbref leader; ! dbref loc; ! char *com; { dbref follower; ATTR *a; --- 1190,1196 ---- * leader, run the same command the leader just ran. */ static void ! follower_command(dbref leader, dbref loc, const char *com) { dbref follower; ATTR *a; *** 1_7_5.188/src/match.c Tue, 09 Apr 2002 11:29:01 -0500 dunemush (pennmush/c/2_match.c 1.25 660) --- 1_7_5.213(w)/src/match.c Thu, 04 Jul 2002 16:11:37 -0500 dunemush (pennmush/c/2_match.c 1.24.1.1.1.2 660) *************** *** 94,106 **** const int type, const long int flags, dbref *last_match, int *match_count); static dbref match_english(const dbref who, const char *name, ! const int type, const long int flags); static dbref choose_thing(const dbref match_who, const int preferred_type, long int flags, dbref thing1, dbref thing2, int *match_count); - /* A wrapper for returning a match, AMBIGUOUS, or NOTHING */ dbref --- 94,105 ---- const int type, const long int flags, dbref *last_match, int *match_count); static dbref match_english(const dbref who, const char *name, ! const long int flags); static dbref choose_thing(const dbref match_who, const int preferred_type, long int flags, dbref thing1, dbref thing2, int *match_count); /* A wrapper for returning a match, AMBIGUOUS, or NOTHING */ dbref *************** *** 252,258 **** } if ((flags & MAT_ENGLISH) && !GoodObject(last_match) && !GoodObject(exact_match)) { ! match = match_english(who, name, type, flags); if (GoodObject(match)) { exact_match_count++; exact_match = match; --- 251,257 ---- } if ((flags & MAT_ENGLISH) && !GoodObject(last_match) && !GoodObject(exact_match)) { ! match = match_english(who, name, flags); if (GoodObject(match)) { exact_match_count++; exact_match = match; *************** *** 525,534 **** } static dbref ! match_english(who, name, type, flags) const dbref who; const char *name; - const int type; const long int flags; { int do_loc; --- 524,532 ---- } static dbref ! match_english(who, name, flags) const dbref who; const char *name; const long int flags; { int do_loc; *************** *** 619,627 **** } matchnum = 0; DOLIST(item, item) { ! if ((Typeof(item) & type) ! && (!strcasecmp(Name(item), dupname) ! || string_match(Name(item), dupname))) { matchnum++; if (matchnum == num) { mush_free(p, "string"); --- 617,624 ---- } matchnum = 0; DOLIST(item, item) { ! if (!strcasecmp(Name(item), dupname) ! || string_match(Name(item), dupname)) { matchnum++; if (matchnum == num) { mush_free(p, "string"); *** 1_7_5.188/src/look.c Mon, 29 Apr 2002 13:41:26 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2.1.3 660) --- 1_7_5.213(w)/src/look.c Thu, 04 Jul 2002 16:11:37 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2.1.4 660) *************** *** 80,87 **** a = atr_get(loc, "EXITFORMAT"); if (a) { char *wsave[10], *rsave[NUMQ]; ! char *arg, *buff, *bp; ! char const *sp, *save; int j; arg = (char *) mush_malloc(BUFFER_LEN, "string"); --- 80,87 ---- a = atr_get(loc, "EXITFORMAT"); if (a) { char *wsave[10], *rsave[NUMQ]; ! char *arg, *buff, *bp, *save; ! char const *sp; int j; arg = (char *) mush_malloc(BUFFER_LEN, "string"); *************** *** 256,263 **** a = atr_get(loc, "CONFORMAT"); if (a) { char *wsave[10], *rsave[NUMQ]; ! char *arg, *buff, *bp; ! char const *sp, *save; int j; arg = (char *) mush_malloc(BUFFER_LEN, "string"); --- 256,263 ---- a = atr_get(loc, "CONFORMAT"); if (a) { char *wsave[10], *rsave[NUMQ]; ! char *arg, *buff, *bp, *save; ! char const *sp; int j; arg = (char *) mush_malloc(BUFFER_LEN, "string"); *************** *** 628,634 **** char *r; dbref content; dbref exit_dbref; ! char *real_name = NULL, *attrib_name = NULL; char *tp; char *tbuf; int ok = 0; --- 628,635 ---- char *r; dbref content; dbref exit_dbref; ! const char *real_name = NULL; ! char *attrib_name = NULL; char *tp; char *tbuf; int ok = 0; *************** *** 645,651 **** *attrib_name = '\0'; attrib_name++; } ! real_name = (char *) name; /* look it up */ if ((thing = noisy_match_result(player, real_name, NOTYPE, --- 646,652 ---- *attrib_name = '\0'; attrib_name++; } ! real_name = name; /* look it up */ if ((thing = noisy_match_result(player, real_name, NOTYPE, *************** *** 675,681 **** */ tp = tbuf; safe_str(object_header(player, thing), tbuf, &tp); ! safe_str((char *) T(" is owned by "), tbuf, &tp); safe_str(object_header(player, Owner(thing)), tbuf, &tp); *tp = '\0'; notify(player, tbuf); --- 676,682 ---- */ tp = tbuf; safe_str(object_header(player, thing), tbuf, &tp); ! safe_str(T(" is owned by "), tbuf, &tp); safe_str(object_header(player, Owner(thing)), tbuf, &tp); *tp = '\0'; notify(player, tbuf); *************** *** 758,764 **** look_exits(player, thing, T("Obvious exits:")); tp = tbuf; safe_str(object_header(player, thing), tbuf, &tp); ! safe_str((char *) T(" is owned by "), tbuf, &tp); safe_str(object_header(player, Owner(thing)), tbuf, &tp); *tp = '\0'; notify(player, tbuf); --- 759,765 ---- look_exits(player, thing, T("Obvious exits:")); tp = tbuf; safe_str(object_header(player, thing), tbuf, &tp); ! safe_str(T(" is owned by "), tbuf, &tp); safe_str(object_header(player, Owner(thing)), tbuf, &tp); *tp = '\0'; notify(player, tbuf); *************** *** 1222,1235 **** /* Now deal with attribute flags, if not FugueEditing */ if (!*dh->prefix) { /* If skipdef is on, only show sets that aren't the defaults */ ! char *privs = NULL; if (dh->skipdef && ptr) { /* Standard attribute. Get the default perms, if any. */ /* Are we different? If so, do as usual */ if (AL_FLAGS(atr) != AL_FLAGS(ptr)) ! privs = (char *) privs_to_string(attr_privs, AL_FLAGS(atr)); } else { ! privs = (char *) privs_to_string(attr_privs, AL_FLAGS(atr)); } if (privs && *privs) notify_format(player, "@set %s/%s=%s", dh->name, AL_NAME(atr), privs); --- 1223,1236 ---- /* Now deal with attribute flags, if not FugueEditing */ if (!*dh->prefix) { /* If skipdef is on, only show sets that aren't the defaults */ ! const char *privs = NULL; if (dh->skipdef && ptr) { /* Standard attribute. Get the default perms, if any. */ /* Are we different? If so, do as usual */ if (AL_FLAGS(atr) != AL_FLAGS(ptr)) ! privs = privs_to_string(attr_privs, AL_FLAGS(atr)); } else { ! privs = privs_to_string(attr_privs, AL_FLAGS(atr)); } if (privs && *privs) notify_format(player, "@set %s/%s=%s", dh->name, AL_NAME(atr), privs); *** 1_7_5.188/src/ident.c Fri, 04 Jan 2002 16:13:39 -0600 dunemush (pennmush/c/8_ident.c 1.19.1.4.1.5 660) --- 1_7_5.213(w)/src/ident.c Thu, 04 Jul 2002 16:11:37 -0500 dunemush (pennmush/c/8_ident.c 1.19.1.4.1.6 660) *************** *** 17,49 **** #include #include #include - #ifdef I_STDLIB #include - #endif - #ifdef I_STRING #include - #else - #include - #endif #ifdef I_SYS_TYPES #include #endif - #ifdef I_TIME #include - #endif #ifdef I_SYS_TIME #include #endif #ifdef I_SYS_WAIT #include #endif - #ifdef I_ERRNO #include - #else - #ifdef I_SYS_ERRNO - #include - #endif - #endif #ifndef WIN32 #ifdef I_SYS_SOCKET #include --- 17,35 ---- *************** *** 375,381 **** ** Fiddling: Pär Emanuelsson */ static char * ! xstrtok(char *cp, char *cs, char *dc) { static char *bp = 0; --- 361,367 ---- ** Fiddling: Pär Emanuelsson */ static char * ! xstrtok(char *cp, const char *cs, char *dc) { static char *bp = 0; *************** *** 388,394 **** if (!cs) { while (*bp) bp++; ! return cs; } /* ** Skip leading spaces --- 374,380 ---- if (!cs) { while (*bp) bp++; ! return NULL; } /* ** Skip leading spaces *************** *** 400,411 **** ** No token found? */ if (!*bp) ! return 0; cp = bp; ! while (*bp && !strchr(cs, *bp)) ! bp++; ! /* Remove trailing spaces */ *dc = *bp; for (dc = bp - 1; dc > cp && isspace(*dc); dc--) ; --- 386,398 ---- ** No token found? */ if (!*bp) ! return NULL; cp = bp; ! bp += strcspn(bp, cs); ! /* while (*bp && !strchr(cs, *bp)) ! bp++; ! */ /* Remove trailing spaces */ *dc = *bp; for (dc = bp - 1; dc > cp && isspace(*dc); dc--) ; *************** *** 481,487 **** id->buf[pos++] = '\0'; /* Get first field ( , ) */ ! cp = xstrtok(id->buf, (char *) ":", &c); if (!cp) { return -2; } --- 468,474 ---- id->buf[pos++] = '\0'; /* Get first field ( , ) */ ! cp = xstrtok(id->buf, ":", &c); if (!cp) { return -2; } *************** *** 491,502 **** return -2; } /* Get second field (USERID or ERROR) */ ! cp = xstrtok((char *) 0, (char *) ":", &c); if (!cp) { return -2; } if (strcmp(cp, "ERROR") == 0) { ! cp = xstrtok((char *) 0, (char *) "\n\r", &c); if (!cp) return -2; --- 478,489 ---- return -2; } /* Get second field (USERID or ERROR) */ ! cp = xstrtok(NULL, ":", &c); if (!cp) { return -2; } if (strcmp(cp, "ERROR") == 0) { ! cp = xstrtok(NULL, "\n\r", &c); if (!cp) return -2; *************** *** 505,511 **** return 2; } else if (strcmp(cp, "USERID") == 0) { /* Get first subfield of third field */ ! cp = xstrtok((char *) 0, (char *) ",:", &c); if (!cp) { return -2; } --- 492,498 ---- return 2; } else if (strcmp(cp, "USERID") == 0) { /* Get first subfield of third field */ ! cp = xstrtok(NULL, ",:", &c); if (!cp) { return -2; } *************** *** 513,519 **** /* We have a second subfield () */ if (c == ',') { ! cp = xstrtok((char *) 0, (char *) ":", &c); if (!cp) return -2; --- 500,506 ---- /* We have a second subfield () */ if (c == ',') { ! cp = xstrtok(NULL, ":", &c); if (!cp) return -2; *************** *** 523,534 **** /* We have even more subfields - ignore them */ if (c == ',') ! xstrtok((char *) 0, (char *) ":", &c); } if (tmp_charset && strcmp(tmp_charset, "OCTET") == 0) ! cp = xstrtok((char *) 0, (char *) 0, &c); else ! cp = xstrtok((char *) 0, (char *) "\n\r", &c); (*ident)->identifier = strdup(cp); return 1; --- 510,521 ---- /* We have even more subfields - ignore them */ if (c == ',') ! xstrtok(NULL, ":", &c); } if (tmp_charset && strcmp(tmp_charset, "OCTET") == 0) ! cp = xstrtok(NULL, NULL, &c); else ! cp = xstrtok(NULL, "\n\r", &c); (*ident)->identifier = strdup(cp); return 1; *** 1_7_5.188/src/game.c Tue, 14 May 2002 23:18:56 -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.1.3 660) --- 1_7_5.213(w)/src/game.c Thu, 04 Jul 2002 16:11:37 -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.1.1.1.1.1.3 660) *************** *** 159,173 **** memstat.dwLength = sizeof(memstat); GlobalMemoryStatus(&memstat); notify(player, "---------- Windows memory usage ------------"); ! notify(player, tprintf("%10ld %% memory in use", memstat.dwMemoryLoad)); mem = memstat.dwAvailPhys / 1024.0 / 1024.0; ! notify(player, tprintf("%10.3f Mb free physical memory", mem)); mem = memstat.dwTotalPhys / 1024.0 / 1024.0; ! notify(player, tprintf("%10.3f Mb total physical memory", mem)); mem = memstat.dwAvailPageFile / 1024.0 / 1024.0; ! notify(player, tprintf("%10.3f Mb available in the paging file ", mem)); mem = memstat.dwTotalPageFile / 1024.0 / 1024.0; ! notify(player, tprintf("%10.3f Mb total paging file size", mem)); } /* end of calc_memory_used */ #endif --- 159,173 ---- memstat.dwLength = sizeof(memstat); GlobalMemoryStatus(&memstat); notify(player, "---------- Windows memory usage ------------"); ! notify_format(player, "%10ld %% memory in use", memstat.dwMemoryLoad); mem = memstat.dwAvailPhys / 1024.0 / 1024.0; ! notify_format(player, "%10.3f Mb free physical memory", mem); mem = memstat.dwTotalPhys / 1024.0 / 1024.0; ! notify_format(player, "%10.3f Mb total physical memory", mem); mem = memstat.dwAvailPageFile / 1024.0 / 1024.0; ! notify_format(player, "%10.3f Mb available in the paging file ", mem); mem = memstat.dwTotalPageFile / 1024.0 / 1024.0; ! notify_format(player, "%10.3f Mb total paging file size", mem); } /* end of calc_memory_used */ #endif *************** *** 1683,1770 **** if (!fp) return; ! /* First lines are name, state, pid, ppid and some other stuff. We don't care about them */ ! fgets(line, sizeof line, fp); ! fgets(line, sizeof line, fp); ! fgets(line, sizeof line, fp); ! fgets(line, sizeof line, fp); ! fgets(line, sizeof line, fp); ! fgets(line, sizeof line, fp); ! fgets(line, sizeof line, fp); ! ! /* 7th line isn't Groups: on linux 2.0.X */ ! if (strncmp(line, "Groups:", 7) == 0) ! fgets(line, sizeof line, fp); ! ! /* Memory stats */ ! ! /* VmSize */ ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* VmLck */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* VmRSS */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* VmData */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* VmStk */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* VmExe */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* VmLib */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* Signals */ ! /* SigPnd */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* SigBlk */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* SigIgn */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); ! ! /* SigCgt */ ! fgets(line, sizeof line, fp); ! if ((nl = strchr(line, '\n')) != NULL) ! *nl = '\0'; ! notify(player, line); - /* We don't care about capabilities */ fclose(fp); #else /* LINUX */ --- 1683,1706 ---- if (!fp) return; ! /* Skip lines we don't care about. */ ! while (fge