This patch upgrades a PennMUSH 1.7.6p1 to 1.7.7p0. After applying this patch, you will have version 1.7.7p0. If you are currently running 1.7.6p0, upgrade to 1.7.6p1 first and then apply this patch. To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p1 < 1.7.6p1-1.7.7p0.patch 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. A full shutdown is recommended. - Alan/Javelin In this patch: Major Changes: * Clients that understand telnet NAWS (See RFC 1073) can tell the mush what dimensions a given connection's display is. Added the width() and height() functions, and SCREENWIDTH and SCREENHEIGHT psuedo-commands for getting/setting this information from the mush. This changes the reboot.db format and requires a full shutdown. [SW] * Two new atoms for locks. "#true" in a lock is always evaluated as true (anyone can pass), and "#false" is always evaluated as false (no one can pass). Suggested by Vadiv@M*U*S*H. Internationalization: * The pronoun sets are no longer hardcoded. If you're running in a locale other than C or en*, you'll see weird looking pronoun descriptions for things like %s until a translation team translates them to your locale's language. Suggested by Dandy@M*U*S*H. Attributes: * @DESCFORMAT can be used to separate description contents from formatting. Suggested by Philip Mak. * VEILED attribute flag causes attribute value not to be displayed on default examine, but otherwise accessible as usual. Good for spammy data attributes. See 'help attribute flags'. Suggested by Cheetah@M*U*S*H. Commands: * examine/all shows contents of veiled attributes. Suggested by Intrevis@M*U*S*H. Flags: * The FIXED and ROYALTY flags are no longer optional. Minor Changes: * Object creation times are no longer optional. * Warnings are no longer a compile-time option; they're turned on. You can stop automatic warnings in mush.cnf, as before. * Cleanup of the telnet-option code in general. [SW] * Consolidation of much of the code for functions that return information about the least-idle connection of a given player. [SW] * The tiny_attrs configuration option has been removed. * Removed a lot of preprocessor checks for conditionally including header files that always succeed because they're standard C headers. [SW] * Removed the Size_t typedef in favor of the standard size_t. [SW] * Some optimization hints for the GCC and VS.NET compilers. [SW] * We try to be more conservative about when we show lines of asterisks around motd-type messages, to avoid showing them when there's no message. * Continued ansi-C-ification of function declarations. Prereq: 1.7.6p1 *** 1_7_6.57/Patchlevel Mon, 09 Dec 2002 10:15:18 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.1.1.1 600) --- 1_7_7.58(w)/Patchlevel Tue, 26 Nov 2002 21:18:21 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.2 600) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.6p1 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.7p0 *** 1_7_6.57/CHANGES Sun, 08 Dec 2002 22:35:42 -0600 dunemush (pennmush/g/17_CHANGES 1.10.1.6.1.2.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1 600) --- 1_7_7.58(w)/CHANGES Mon, 09 Dec 2002 14:25:19 -0600 dunemush (pennmush/g/23_CHANGES 1.18 600) *************** *** 18,125 **** ========================================================================== ! Version 1.7.6 patchlevel 1 November 26, 2002 ! Minor changes: ! * When using @nuke to destroy a SAFE object when really_safe is "no", ! provide a warning (but schedule destruction anyway). Suggested by ! Cerekk@bDV. ! Fixes: ! * VS.NET project file was defaulting to signed instead of unsigned ! chars, causing crashes. Fixed by BladedThoth@M*U*S*H. ! Several places where we should have cast things to unsigned to ! avoid this kind of thing have been fixed. [SW] ! * The *emit() functions now set the orator correctly. ! Reported by Philip Mak. ! * ccom and cplr are cleared after each command execution so they ! can't be leaked as easily. Suggested by Philip Mak. ! * Linting. ! * If God gives the wrong password to @logwipe, provide some feedback. ! Suggested by Cerekk@bDv. ! * mkcmds.sh was needlessly rebuilding several autogenerated files. ! * The rules for flag characters shown in object headers now allows ! F_INTERNAL flags to be shown (like GOING), just the same as ! when you get a full flag list on examine. Report by Philip Mak. ! * Help fixes by Bird@M*U*S*H, Intrevis@M*U*S*H, Philip Mak. ! * @search type=something would report an error AND match the entire ! database when something wasn't object, player, exit or room. [SW] ! * Cosmetic bug in @malias/list fixed. Report by Philip Mak. ! * The info_slave now properly obeys the use_dns setting in mush.cnf. ! This requires a full shutdown to put into effect. Report by ! BlaZe@M*U*S*H. [SW] ! ! ! Version 1.7.6 patchlevel 0 November 11, 2002 ! ! License: ! * PennMUSH 1.7.6 and later is now released under the Artistic ! License. This is an OSI-compliant open source license. See the file ! COPYRITE for the complete license text. ! ! Notable changes from the old license: ! * No restrictions on commercial use ! * No requirement to inform developers of improvements or submit ! modifications, though it's still a nice thing to do. Note, however ! that if you redistribute a modified version of PennMUSH, you MUST ! include source code. ! ! The PennMUSH devteam thanks the copyright holders of TinyMUD, ! TinyMUSH 2.0, TinyMUSH 2.2, and TinyMUSH 3.0 for their assistance ! in making this possible. ! Documentation: ! * The README file has been split into README, INSTALL, UPGRADING, ! and I18N files. Minor Changes: ! * Rooms now hear remits and lemits in them, and can be pemitted ! to. This behavior now matches that of other MUSH servers. ! * AUDIBLE objects now propagate sound @remit'd into them. ! Report by [SW]. ! * Added @lock/destroy to limit who can destroy a DESTROY_OK ! object. Suggested by Luigi@8bit. ! * PARANOID nospoof notification now includes the name of the object's ! owner as well. Suggested by Philip Mak. ! * room() no longer notifies the executor of permission errors out of ! band. It now just returns the error instead, like loc(). Suggested by ! Philip Mak. ! * Creation times are now public information via ctime(); permission to ! examine is no longer required. This allows objects to use, e.g., ! %#@[ctime(%#)] as a historically unique identifier of an enactor. ! Suggested by Philip Mak. ! * The reboot.db is now versioned. This will make it possible to ! @shutdown/reboot across patchlevels that change the reboot.db ! format (in 1.7.7 and later versions). ! * Rooms on an @forwardlist now receive the message as a remit, ! rather than a pemit. Suggested by BladedThoth@M*U*S*H. ! Fixes: ! * More work on the great table() bug. Looks like a fix. [SW] ! * Improved VS.NET project files by BladedThoth. ! * Plugged a memory leak in deleting @locks. [SW] ! * Fixed @lock-related crash bug reported by Philip Mak. [SW] ! * General linting. ! * process_expression ignores the [ in ansi escapes. Reported in the ! context of #$ by Philip Mak. [SW] ! * Internal changes to compress(), which now returns an allocated ! string. Under Huffman compression, it should no longer be possible ! to overflow a buffer with a pathological compression tree. Initial ! concern voiced by Eyal Sagi. ! * Table and ansi didn't play well together. Reported by Ellis@M*U*S*H. ! * Config file reading should be better on Macs. Patch by Philip Mak. ! * Obsolete checks for OLD_ANSI are removed. [SW] ! * Crash bug in @function fixed. Report by Dallimar@Hemlock. ! * Change to message on failed attribute flag set, to make it more ! generic to cover all the possible failures. Report by Cerekk@bDv. ! * Translations to some languages were broken. Fixed now. Report by ! Sbot@M*U*S*H. ! * QUEUE is now visible if you control an object, as promised in the ! help. Reported by Luigi@8bit. ! * Help fixes by Mortimer@M*U*S*H, Bellemore@M*U*S*H, Hyacinth@8bit, ! [EEH], BladedThoth@M*U*S*H, Moe@M*U*S*H, Viila@M*U*S*H, Walker@M*U*S*H. ! * Comment in src/Makefile fixed by Vadiv@M*U*S*H. ! * A weird crash on @shutdown/reboot, probably attributable to a ! broken library or system call, is now worked-around. Report by ! Solarius@SWWF. ! * Audible objects with @forwardlist set are no longer concealed by ! the DARK flag. ! * Win32 project files no longer use the win32/ directory as an include ! directory, which causes problems. Reported by Gepht. ! --- 18,63 ---- ========================================================================== ! Version 1.7.7 patchlevel 0 December 8, 2002 ! Major Changes: ! * Clients that understand telnet NAWS (See RFC 1073) can tell the mush ! what dimensions a given connection's display is. Added the ! width() and height() functions, and SCREENWIDTH and SCREENHEIGHT ! psuedo-commands for getting/setting this information from the mush. ! This changes the reboot.db format and requires a full shutdown. [SW] ! * Two new atoms for locks. "#true" in a lock is always evaluated as true ! (anyone can pass), and "#false" is always evaluated as false (no one ! can pass). Suggested by Vadiv@M*U*S*H. ! Internationalization: ! * The pronoun sets are no longer hardcoded. If you're running in a ! locale other than C or en*, you'll see weird looking pronoun descriptions ! for things like %s until a translation team translates them to your ! locale's language. Suggested by Dandy@M*U*S*H. ! Attributes: ! * @DESCFORMAT can be used to separate description contents from formatting. ! Suggested by Philip Mak. ! * VEILED attribute flag causes attribute value not to be displayed ! on default examine, but otherwise accessible as usual. Good for spammy ! data attributes. See 'help attribute flags'. Suggested by Cheetah@M*U*S*H. ! Commands: ! * examine/all shows contents of veiled attributes. Suggested by ! Intrevis@M*U*S*H. ! Flags: ! * The FIXED and ROYALTY flags are no longer optional. Minor Changes: ! * Object creation times are no longer optional. ! * Warnings are no longer a compile-time option; they're turned on. ! You can stop automatic warnings in mush.cnf, as before. ! * Cleanup of the telnet-option code in general. [SW] ! * Consolidation of much of the code for functions that return information ! about the least-idle connection of a given player. [SW] ! * The tiny_attrs configuration option has been removed. ! * Removed a lot of preprocessor checks for conditionally including header ! files that always succeed because they're standard C headers. [SW] ! * Removed the Size_t typedef in favor of the standard size_t. [SW] ! * Some optimization hints for the GCC and VS.NET compilers. [SW] ! * We try to be more conservative about when we show lines of ! asterisks around motd-type messages, to avoid showing them when ! there's no message. ! * Continued ansi-C-ification of function declarations. *** 1_7_6.57/game/txt/hlp/pennvers.hlp Sun, 08 Dec 2002 22:35:42 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.5.1.4.1.1.1.1.1.1.1.1.1.5.1.1.1.3.1.1.1.3.1.1.1.54.1.10.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1 600) --- 1_7_7.58(w)/game/txt/hlp/pennvers.hlp Sun, 08 Dec 2002 22:36:01 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.3.1.2.2.2.1.1.1.3.1.1.1.5.1.4.1.1.1.1.1.1.1.1.1.5.1.1.1.3.1.1.1.3.1.1.1.54.1.10.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.2 600) *************** *** 1,5 **** & changes ! & 1.7.6p1 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.7p0 This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions can probably be gotten via 'help '. 'help credits' *************** *** 11,122 **** A list of the patchlevels associated with each release can be read in 'help patchlevels'. ! Version 1.7.6 patchlevel 1 November 26, 2002 ! Minor changes: ! * When using @nuke to destroy a SAFE object when really_safe is "no", ! provide a warning (but schedule destruction anyway). Suggested by ! Cerekk@bDV. ! Fixes: ! * VS.NET project file was defaulting to signed instead of unsigned ! chars, causing crashes. Fixed by BladedThoth@M*U*S*H. ! Several places where we should have cast things to unsigned to ! avoid this kind of thing have been fixed. [SW] ! * The *emit() functions now set the orator correctly. ! Reported by Philip Mak. ! * ccom and cplr are cleared after each command execution so they ! can't be leaked as easily. Suggested by Philip Mak. ! * Linting. ! * If God gives the wrong password to @logwipe, provide some feedback. ! Suggested by Cerekk@bDv. ! * mkcmds.sh was needlessly rebuilding several autogenerated files. ! * The rules for flag characters shown in object headers now allows ! F_INTERNAL flags to be shown (like GOING), just the same as ! when you get a full flag list on examine. Report by Philip Mak. ! * Help fixes by Bird@M*U*S*H, Intrevis@M*U*S*H, Philip Mak. ! * @search type=something would report an error AND match the entire ! database when something wasn't object, player, exit or room. [SW] ! * Cosmetic bug in @malias/list fixed. Report by Philip Mak. ! * The info_slave now properly obeys the use_dns setting in mush.cnf. ! This requires a full shutdown to put into effect. Report by ! BlaZe@M*U*S*H. [SW] ! ! ! & 1.7.6p0 ! Version 1.7.6 patchlevel 0 November 11, 2002 ! ! License: ! * PennMUSH 1.7.6 and later is now released under the Artistic ! License. This is an OSI-compliant open source license. See the file ! COPYRITE for the complete license text. ! ! Notable changes from the old license: ! * No restrictions on commercial use ! * No requirement to inform developers of improvements or submit ! modifications, though it's still a nice thing to do. Note, however ! that if you redistribute a modified version of PennMUSH, you MUST ! include source code. ! ! The PennMUSH devteam thanks the copyright holders of TinyMUD, ! TinyMUSH 2.0, TinyMUSH 2.2, and TinyMUSH 3.0 for their assistance ! in making this possible. ! Documentation: ! * The README file has been split into README, INSTALL, UPGRADING, ! and I18N files. Minor Changes: ! * Rooms now hear remits and lemits in them, and can be pemitted ! to. This behavior now matches that of other MUSH servers. ! * AUDIBLE objects now propagate sound @remit'd into them. ! Report by [SW]. ! * Added @lock/destroy to limit who can destroy a DESTROY_OK ! object. Suggested by Luigi@8bit. ! * PARANOID nospoof notification now includes the name of the object's ! owner as well. Suggested by Philip Mak. ! * room() no longer notifies the executor of permission errors out of ! band. It now just returns the error instead, like loc(). Suggested by ! Philip Mak. ! * Creation times are now public information via ctime(); permission to ! examine is no longer required. This allows objects to use, e.g., ! %#@[ctime(%#)] as a historically unique identifier of an enactor. ! Suggested by Philip Mak. ! * The reboot.db is now versioned. This will make it possible to ! @shutdown/reboot across patchlevels that change the reboot.db ! format (in 1.7.7 and later versions). ! * Rooms on an @forwardlist now receive the message as a remit, ! rather than a pemit. Suggested by BladedThoth@M*U*S*H. ! Fixes: ! * More work on the great table() bug. Looks like a fix. [SW] ! * Improved VS.NET project files by BladedThoth. ! * Plugged a memory leak in deleting @locks. [SW] ! * Fixed @lock-related crash bug reported by Philip Mak. [SW] ! * General linting. ! * process_expression ignores the [ in ansi escapes. Reported in the ! context of #$ by Philip Mak. [SW] ! * Internal changes to compress(), which now returns an allocated ! string. Under Huffman compression, it should no longer be possible ! to overflow a buffer with a pathological compression tree. Initial ! concern voiced by Eyal Sagi. ! * Table and ansi didn't play well together. Reported by Ellis@M*U*S*H. ! * Config file reading should be better on Macs. Patch by Philip Mak. ! * Obsolete checks for OLD_ANSI are removed. [SW] ! * Crash bug in @function fixed. Report by Dallimar@Hemlock. ! * Change to message on failed attribute flag set, to make it more ! generic to cover all the possible failures. Report by Cerekk@bDv. ! * Translations to some languages were broken. Fixed now. Report by ! Sbot@M*U*S*H. ! * QUEUE is now visible if you control an object, as promised in the ! help. Reported by Luigi@8bit. ! * Help fixes by Mortimer@M*U*S*H, Bellemore@M*U*S*H, Hyacinth@8bit, ! [EEH], BladedThoth@M*U*S*H, Moe@M*U*S*H, Viila@M*U*S*H, Walker@M*U*S*H. ! * Comment in src/Makefile fixed by Vadiv@M*U*S*H. ! * A weird crash on @shutdown/reboot, probably attributable to a ! broken library or system call, is now worked-around. Report by ! Solarius@SWWF. ! * Audible objects with @forwardlist set are no longer concealed by ! the DARK flag. ! * Win32 project files no longer use the win32/ directory as an include ! directory, which causes problems. Reported by Gepht. ! & 1.7.4p20 Version 1.7.4 patchlevel 20 September 19, 2002 --- 11,59 ---- A list of the patchlevels associated with each release can be read in 'help patchlevels'. ! Version 1.7.7 patchlevel 0 November 11, 2002 ! Major Changes: ! * Clients that understand telnet NAWS (See RFC 1073) can tell the mush ! what dimensions a given connection's display is. Added the ! width() and height() functions, and SCREENWIDTH and SCREENHEIGHT ! psuedo-commands for getting/setting this information from the mush. ! This changes the reboot.db format and requires a full shutdown. [SW] ! * Two new atoms for locks. "#true" in a lock is always evaluated as true ! (anyone can pass), and "#false" is always evaluated as false (no one ! can pass). Suggested by Vadiv@M*U*S*H. ! Internationalization: ! * The pronoun sets are no longer hardcoded. If you're running in a ! locale other than C or en*, you'll see weird looking pronoun descriptions ! for things like %s until a translation team translates them to your ! locale's language. Suggested by Dandy@M*U*S*H. ! Attributes: ! * @DESCFORMAT can be used to separate description contents from formatting. ! Suggested by Philip Mak. ! * VEILED attribute flag causes attribute value not to be displayed ! on default examine, but otherwise accessible as usual. Good for spammy ! data attributes. See 'help attribute flags'. Suggested by Cheetah@M*U*S*H. ! Commands: ! * examine/all shows contents of veiled attributes. Suggested by ! Intrevis@M*U*S*H. ! Flags: ! * The FIXED and ROYALTY flags are no longer optional. Minor Changes: ! * Object creation times are no longer optional. ! * Warnings are no longer a compile-time option; they're turned on. ! You can stop automatic warnings in mush.cnf, as before. ! * Cleanup of the telnet-option code in general. [SW] ! * Consolidation of much of the code for functions that return information ! about the least-idle connection of a given player. [SW] ! * The tiny_attrs configuration option has been removed. ! * Removed a lot of preprocessor checks for conditionally including header ! files that always succeed because they're standard C headers. [SW] ! * Removed the Size_t typedef in favor of the standard size_t. [SW] ! * Some optimization hints for the GCC and VS.NET compilers. [SW] ! * We try to be more conservative about when we show lines of ! asterisks around motd-type messages, to avoid showing them when ! there's no message. ! * Continued ansi-C-ification of function declarations. & 1.7.4p20 Version 1.7.4 patchlevel 20 September 19, 2002 *************** *** 1314,1319 **** --- 1251,1363 ---- * Indentation fixes [SW] * Fixes up to 1.7.4p12 merged in. + & 1.7.6p1 + Version 1.7.6 patchlevel 1 November 26, 2002 + + Minor changes: + * When using @nuke to destroy a SAFE object when really_safe is "no", + provide a warning (but schedule destruction anyway). Suggested by + Cerekk@bDV. + Fixes: + * VS.NET project file was defaulting to signed instead of unsigned + chars, causing crashes. Fixed by BladedThoth@M*U*S*H. + Several places where we should have cast things to unsigned to + avoid this kind of thing have been fixed. [SW] + * The *emit() functions now set the orator correctly. + Reported by Philip Mak. + * ccom and cplr are cleared after each command execution so they + can't be leaked as easily. Suggested by Philip Mak. + * Linting. + * If God gives the wrong password to @logwipe, provide some feedback. + Suggested by Cerekk@bDv. + * mkcmds.sh was needlessly rebuilding several autogenerated files. + * The rules for flag characters shown in object headers now allows + F_INTERNAL flags to be shown (like GOING), just the same as + when you get a full flag list on examine. Report by Philip Mak. + * Help fixes by Bird@M*U*S*H, Intrevis@M*U*S*H, Philip Mak. + * @search type=something would report an error AND match the entire + database when something wasn't object, player, exit or room. [SW] + * Cosmetic bug in @malias/list fixed. Report by Philip Mak. + * The info_slave now properly obeys the use_dns setting in mush.cnf. + This requires a full shutdown to put into effect. Report by + BlaZe@M*U*S*H. [SW] + + + & 1.7.6p0 + Version 1.7.6 patchlevel 0 November 11, 2002 + + License: + * PennMUSH 1.7.6 and later is now released under the Artistic + License. This is an OSI-compliant open source license. See the file + COPYRITE for the complete license text. + + Notable changes from the old license: + * No restrictions on commercial use + * No requirement to inform developers of improvements or submit + modifications, though it's still a nice thing to do. Note, however + that if you redistribute a modified version of PennMUSH, you MUST + include source code. + + The PennMUSH devteam thanks the copyright holders of TinyMUD, + TinyMUSH 2.0, TinyMUSH 2.2, and TinyMUSH 3.0 for their assistance + in making this possible. + Documentation: + * The README file has been split into README, INSTALL, UPGRADING, + and I18N files. + Minor Changes: + * Rooms now hear remits and lemits in them, and can be pemitted + to. This behavior now matches that of other MUSH servers. + * AUDIBLE objects now propagate sound @remit'd into them. + Report by [SW]. + * Added @lock/destroy to limit who can destroy a DESTROY_OK + object. Suggested by Luigi@8bit. + * PARANOID nospoof notification now includes the name of the object's + owner as well. Suggested by Philip Mak. + * room() no longer notifies the executor of permission errors out of + band. It now just returns the error instead, like loc(). Suggested by + Philip Mak. + * Creation times are now public information via ctime(); permission to + examine is no longer required. This allows objects to use, e.g., + %#@[ctime(%#)] as a historically unique identifier of an enactor. + Suggested by Philip Mak. + * The reboot.db is now versioned. This will make it possible to + @shutdown/reboot across patchlevels that change the reboot.db + format (in 1.7.7 and later versions). + * Rooms on an @forwardlist now receive the message as a remit, + rather than a pemit. Suggested by BladedThoth@M*U*S*H. + Fixes: + * More work on the great table() bug. Looks like a fix. [SW] + * Improved VS.NET project files by BladedThoth. + * Plugged a memory leak in deleting @locks. [SW] + * Fixed @lock-related crash bug reported by Philip Mak. [SW] + * General linting. + * process_expression ignores the [ in ansi escapes. Reported in the + context of #$ by Philip Mak. [SW] + * Internal changes to compress(), which now returns an allocated + string. Under Huffman compression, it should no longer be possible + to overflow a buffer with a pathological compression tree. Initial + concern voiced by Eyal Sagi. + * Table and ansi didn't play well together. Reported by Ellis@M*U*S*H. + * Config file reading should be better on Macs. Patch by Philip Mak. + * Obsolete checks for OLD_ANSI are removed. [SW] + * Crash bug in @function fixed. Report by Dallimar@Hemlock. + * Change to message on failed attribute flag set, to make it more + generic to cover all the possible failures. Report by Cerekk@bDv. + * Translations to some languages were broken. Fixed now. Report by + Sbot@M*U*S*H. + * QUEUE is now visible if you control an object, as promised in the + help. Reported by Luigi@8bit. + * Help fixes by Mortimer@M*U*S*H, Bellemore@M*U*S*H, Hyacinth@8bit, + [EEH], BladedThoth@M*U*S*H, Moe@M*U*S*H, Viila@M*U*S*H, Walker@M*U*S*H. + * Comment in src/Makefile fixed by Vadiv@M*U*S*H. + * A weird crash on @shutdown/reboot, probably attributable to a + broken library or system call, is now worked-around. Report by + Solarius@SWWF. + * Audible objects with @forwardlist set are no longer concealed by + the DARK flag. + * Win32 project files no longer use the win32/ directory as an include + directory, which causes problems. Reported by Gepht. + & 1.7.3p14 Version 1.7.3 patchlevel 14 January 29, 2001 *************** *** 5747,5752 **** --- 5791,5797 ---- For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' + 1.7.7: 0 1.7.6: 0, 1 1.7.5: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, *** 1_7_6.57/game/txt/hlp/pennfunc.hlp Mon, 02 Dec 2002 18:14:17 -0600 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.1.1.1 600) --- 1_7_7.58(w)/game/txt/hlp/pennfunc.hlp Mon, 02 Dec 2002 18:14:31 -0600 dunemush (pennmush/16_pennfunc.h 1.2.1.50.1.1.1.1.1.2.1.7.1.8.1.1.1.1.1.1.1.1.1.1.1.1.1.3.1.1.1.1.1.1.1.1.1.1.1.1.1.9.1.1.1.2 600) *************** *** 121,131 **** 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. --- 121,132 ---- andflags() config() conn() controls() ctime() doing() elock() findable() flags() fullname() hasattr() hasattrp() ! hasflag() haspower() hastype() height() hidden() ! idle() iname() lock() lstats() lwho() ! money() mtime() mwho() name() nattr() ! nearby() objmem() orflags() playermem() poll() ! ports() powers() quota() type() visible() ! width() & Mail functions Mail functions work with @mail. *************** *** 3642,3648 **** 1 0 0 > think vmul(vunit(5 6 7),vmag(5 6 7)) 5 6 7 ! & WHERE() where() --- 3643,3669 ---- 1 0 0 > think vmul(vunit(5 6 7),vmag(5 6 7)) 5 6 7 ! & WIDTH() ! & HEIGHT() ! & SCREENWIDTH ! & SCREENHEIGHT ! width() ! height() ! ! These two functions return the screen width and height for a connected ! player. If the player's client is capable of doing so, it will let the ! mush know what the correct sizes are on connection and when the client ! is resized. The defaults are 78 for width, and 24 for height, the ! normal minimal values. These can be changed with the special ! SCREENWIDTH and SCREENHEIGHT commands, both of which take a number as ! their sole argument, and set the appropriate field. ! ! If used on something that's not a player, the functions return the ! default values. ! ! The intent of these functions is allow softcode that does formatting ! to be able to produce a display that can make full use of any given ! screen size. & WHERE() where() *** 1_7_6.57/game/txt/hlp/penncmd.hlp Mon, 09 Dec 2002 10:15:18 -0600 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.10.1.1.1.1 600) --- 1_7_7.58(w)/game/txt/hlp/penncmd.hlp Mon, 09 Dec 2002 14:23:53 -0600 dunemush (pennmush/18_penncmd.hl 1.2.1.1.1.47.1.1.1.1.1.3.1.4.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.10.1.1.1.2 600) *************** *** 31,41 **** follow the pattern above: @aahear @aclone @aconnect @adisconnect @amhear ! @away @charges @cost @conformat @ealias ! @exitformat @filter @forwardlist @haven @idle ! @infilter @inprefix @lalias @listen @nameformat ! @oxenter @oxleave @oxmove @oxtport @prefix ! @runout @sex @startup See also: ATTRIBUTES, NON-STANDARD ATTRIBUTES & @-BUILDING --- 31,41 ---- follow the pattern above: @aahear @aclone @aconnect @adisconnect @amhear ! @away @charges @cost @conformat @descformat ! @ealias @exitformat @filter @forwardlist @haven ! @idle @infilter @inprefix @lalias @listen ! @nameformat @oxenter @oxleave @oxmove @oxtport ! @prefix @runout @sex @startup See also: ATTRIBUTES, NON-STANDARD ATTRIBUTES & @-BUILDING *************** *** 575,581 **** /set -- Wizard only, changes parameters from the mush. See help @config parameters for available ones. & @conformat ! @conformat [=]. Replaces the usual "Contents:" or "Carrying:" format when an object is looked at, by a player-specified contents format. This is evaluated --- 575,581 ---- /set -- Wizard only, changes parameters from the mush. See help @config parameters for available ones. & @conformat ! @conformat [=] Replaces the usual "Contents:" or "Carrying:" format when an object is looked at, by a player-specified contents format. This is evaluated *************** *** 587,593 **** through '@conformat here = Contents: [iter(%0,name(##))]', for example. More complex things are, obviously, possible. ! See also: @exitformat, @nameformat & @nameaccent @nameaccent [=] --- 587,605 ---- through '@conformat here = Contents: [iter(%0,name(##))]', for example. More complex things are, obviously, possible. ! See also: @exitformat, @nameformat, @descformat ! & @descformat ! @descformat [=] ! ! Replaces the usual description of the object when it is looked at ! by player-specified text. The evaluated DESCRIBE attribute is ! passed as %0; the unevaluated DESCRIBE can be acquired through ! v(DESCRIBE). ! ! This is useful for things like room parents that enforce a consistent ! "look" for each room's @desc. ! ! See also: @exitformat, @nameformat, @conformat & @nameaccent @nameaccent [=] *************** *** 614,620 **** Example: Show the room's zone after its name. @nameformat here = [name(%0)] [if(isdbref(zone(%0)),<[name(zone(%0))]>)] ! See also: @exitformat, @conformat & @cost @cost = --- 626,632 ---- Example: Show the room's zone after its name. @nameformat here = [name(%0)] [if(isdbref(zone(%0)),<[name(zone(%0))]>)] ! See also: @exitformat, @conformat, @descformat & @cost @cost = *************** *** 1105,1111 **** One could change the format to 'Exits: Exit1 Exit2 Exit3' through '@exitformat here = Exits: [iter(%0,name(##))]', for example. ! See also: TRANSPARENT, @conformat, @nameformat & @failure @failure [=] --- 1117,1123 ---- One could change the format to 'Exits: Exit1 Exit2 Exit3' through '@exitformat here = Exits: [iter(%0,name(##))]', for example. ! See also: TRANSPARENT, @conformat, @nameformat, @descformat & @failure @failure [=] *************** *** 2626,2631 **** --- 2638,2645 ---- 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. + veiled (V) Attribute value will not be shown on default examine, + but is still otherwise accessible (for spammy attribs). 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. *************** *** 3311,3321 **** example. to see all the attributes that began with a 'v' you could do ex /v* ! Examine takes three switches, "brief" (equivalent to the "brief" command), ! "debug", which is a wizard-only switch, and "mortal". "debug" examine ! will show the raw values for certain fields in an object. "mortal" ! examine will show an object as if you were a mortal and not the object's ! owner. It's primarily useful to admins. & follow follow --- 3325,3336 ---- example. to see all the attributes that began with a 'v' you could do ex /v* ! The /brief switch is equivalent to the 'brief' command. ! The /debug switch is wizard-only and shows raw values for certa ! in fields in an object. ! The /mortal switch shows an object as if you were a mortal other than ! the object's owner and is primarily useful to admins. ! The /all switch shows the values of VEILED attributes. & follow follow *** 1_7_6.57/game/txt/hlp/index.hlp Tue, 12 Nov 2002 22:36:54 -0600 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.2.1.1.1.4.2.1 660) --- 1_7_7.58(w)/game/txt/hlp/index.hlp Sat, 07 Dec 2002 10:24:36 -0600 dunemush (pennmush/20_index.hlp 1.1.1.1.1.1.1.1.1.2.1.1.2.2.2.2.1.1.1.4.2.1.1.1 660) *************** *** 74,119 **** 1.7.5p5 1.7.5p6 1.7.5p7 1.7.5p8 1.7.5p9 1.7.5p10 1.7.5p11 1.7.5p12 1.7.6p0 ! : ; @-attributes ! @-building @-general @-wizard ! @@ @@() @aahear ! @aclone @aconnect @adeath ! @adescribe @adestroy @adisconnect ! @adrop @aefail @aenter For more, see Entries-5 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-5 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @afailure @afollow @agive ! @ahear @aidescribe @aleave ! @alfail @alias @allhalt ! @allquota @amhear @amove ! @apayment @areceive @asuccess ! @atport @atrchown @atrlock ! @attribute @aufail @aunfollow ! @ause @away @azenter ! @azleave @boot @break ! @cemit @channel @channel2 ! @channel3 @channel4 @channel5 ! @charges @chat @chown ! @chownall @chzone @chzone2 ! @chzoneall @clock @clock2 ! @clone @command @comment ! @config @config attribs @config chat For more, see Entries-6 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-6 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @config cmds @config cosmetic @config cosmetic2 ! @config costs @config db @config dump ! @config funcs @config limits @config limits2 ! @config log @config net @config parameters ! @config tiny @conformat @cost ! @cpattr @create @dbck ! @death @decompile @decompile2 ! @decompile3 @describe @destroy @destroy2 @dig @dig2 @disable @doing @dolist @drain @drop @dump --- 74,120 ---- 1.7.5p5 1.7.5p6 1.7.5p7 1.7.5p8 1.7.5p9 1.7.5p10 1.7.5p11 1.7.5p12 1.7.6p0 ! 1.7.6p1 1.7.7p0 : ! ; @-attributes @-building ! @-general @-wizard @@ ! @@() @aahear @aclone ! @aconnect @adeath @adescribe ! @adestroy @adisconnect @adrop For more, see Entries-5 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-5 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @aefail @aenter @afailure ! @afollow @agive @ahear ! @aidescribe @aleave @alfail ! @alias @allhalt @allquota ! @amhear @amove @apayment ! @areceive @asuccess @atport ! @atrchown @atrlock @attribute ! @aufail @aunfollow @ause ! @away @azenter @azleave ! @boot @break @cemit ! @channel @channel2 @channel3 ! @channel4 @channel5 @charges ! @chat @chown @chownall ! @chzone @chzone2 @chzoneall ! @clock @clock2 @clone ! @command @comment @config For more, see Entries-6 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-6 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! @config attribs @config chat @config cmds ! @config cosmetic @config cosmetic2 @config costs ! @config db @config dump @config funcs ! @config limits @config limits2 @config log ! @config net @config parameters @config tiny ! @conformat @cost @cpattr ! @create @dbck @death ! @decompile @decompile2 @decompile3 ! @descformat @describe @destroy @destroy2 @dig @dig2 @disable @doing @dolist @drain @drop @dump *************** *** 121,132 **** @elock @emit @enable @enter @entrances @eunlock @exitformat @failure @filter - @filter2 @find @firstexit For more, see Entries-7 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-7 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @follow @force @force2 @forwardlist @function @function2 @function3 @function4 @gedit --- 122,133 ---- @elock @emit @enable @enter @entrances @eunlock @exitformat @failure @filter For more, see Entries-7 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-7 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + @filter2 @find @firstexit @follow @force @force2 @forwardlist @function @function2 @function3 @function4 @gedit *************** *** 142,153 **** @lock6 @lock7 @lock8 @lock9 @log @logwipe @lset @map2 @mail - @malias @malias2 @malias3 For more, see Entries-8 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-8 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @malias4 @malias5 @map @motd @move @mvattr @name @nameaccent @nameformat --- 143,154 ---- @lock6 @lock7 @lock8 @lock9 @log @logwipe @lset @map2 @mail For more, see Entries-8 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-8 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + @malias @malias2 @malias3 @malias4 @malias5 @map @motd @move @mvattr @name @nameaccent @nameformat *************** *** 163,174 **** @oxmove @oxtport @ozenter @ozleave @parent @password @payment @pcreate @pemit - @pemit2 @poll @poor For more, see Entries-9 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-9 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @power @prefix @ps @purge @quota @readcache @receive @recycle @rejectmotd --- 164,175 ---- @oxmove @oxtport @ozenter @ozleave @parent @password @payment @pcreate @pemit For more, see Entries-9 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-9 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + @pemit2 @poll @poor @power @prefix @ps @purge @quota @readcache @receive @recycle @rejectmotd *************** *** 184,195 **** @trigger2 @ufail @ulock @undestroy @unfollow @unlink @unlock @unrecycle @uptime - @uptime2 @use @uunlock For more, see Entries-10 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-10 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- @verb @verb2 @verb3 @verb4 @version @vrml_url @wait @wait2 @wall --- 185,196 ---- @trigger2 @ufail @ulock @undestroy @unfollow @unlink @unlock @unrecycle @uptime For more, see Entries-10 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-10 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + @uptime2 @use @uunlock @verb @verb2 @verb3 @verb4 @version @vrml_url @wait @wait2 @wall *************** *** 205,216 **** after() ahelp alphamax() alphamin() and() andflags() anews ansi ansi() - aposs() art() asin() For more, see Entries-11 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-11 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- atan() atan2() atrlock() attrcnt() attrib-ownership attribute flags attribute functions attribute list attributes --- 206,217 ---- after() ahelp alphamax() alphamin() and() andflags() anews ansi ansi() For more, see Entries-11 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-11 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + aposs() art() asin() atan() atan2() atrlock() attrcnt() attrib-ownership attribute flags attribute functions attribute list attributes *************** *** 226,237 **** cat() cd ceil() cemit() center() cflags() ch changes channel functions - channel-list channels() chat For more, see Entries-12 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-12 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- checkpass() chown_ok chr() clients clock() clone() cloudy code color --- 227,238 ---- cat() cd ceil() cemit() center() cflags() ch changes channel functions For more, see Entries-12 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-12 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + channel-list channels() chat checkpass() chown_ok chr() clients clock() clone() cloudy code color *************** *** 247,258 **** database dbref # dbref functions dbref number dbref2 dbrefs debug debug2 dec() - decrypt() default() delete() For more, see Entries-13 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-13 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- desert destroy_ok die() dig() dismiss dist2d() dist3d() div() doing --- 248,259 ---- database dbref # dbref functions dbref number dbref2 dbrefs debug debug2 dec() For more, see Entries-13 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-13 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + decrypt() default() delete() desert destroy_ok die() dig() dismiss dist2d() dist3d() div() doing *************** *** 268,279 **** exit() exits exits2 exp() extract() failure fdiv() filter() filterbool() - findable() first() fixed For more, see Entries-14 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-14 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- flag list flags flags list flags() flags2 flip() floating floating point functions floor() --- 269,280 ---- exit() exits exits2 exp() extract() failure fdiv() filter() filterbool() For more, see Entries-14 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-14 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + findable() first() fixed flag list flags flags list flags() flags2 flip() floating floating point functions floor() *************** *** 289,301 **** graball() grep() grepi() gt() gte() halt hasattr() hasattrp() hasattrpval() - hasattrval() hasflag() haspower() For more, see Entries-15 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-15 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! hastype() haven help here hidden() home home() homes html html functions html() i18n --- 290,302 ---- graball() grep() grepi() gt() gte() halt hasattr() hasattrp() hasattrpval() For more, see Entries-15 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-15 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! hasattrval() hasflag() haspower() ! hastype() haven height() here hidden() home home() homes html html functions html() i18n *************** *** 310,321 **** itemize() items() iter() iter2 itext() judge jump_ok jury_ok kill - last & lastlogout last() lastip For more, see Entries-16 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-16 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- lastsite lattr() lcon() lcstr() ldelete() leave left() lemit() lexits() --- 311,322 ---- itemize() items() iter() iter2 itext() judge jump_ok jury_ok kill For more, see Entries-16 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-16 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + last & lastlogout last() lastip lastsite lattr() lcon() lcstr() ldelete() leave left() lemit() lexits() *************** *** 331,342 **** locklist locks locktypes locktypes2 log() logout look look2 looping - lparent() lplayers() lsearch() For more, see Entries-17 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-17 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- lsearch2 lsearchr() lstats() lt() lte() lvcon() lvexits() lvplayers() lwho() --- 332,343 ---- locklist locks locktypes locktypes2 log() logout look look2 looping For more, see Entries-17 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-17 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + lparent() lplayers() lsearch() lsearch2 lsearchr() lstats() lt() lte() lvcon() lvexits() lvplayers() lwho() *************** *** 352,363 **** member() merge() mid() min() mix() mix2 mod() modulo() modulus() - money money() monitor For more, see Entries-18 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-18 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- mortal move mtime() mudname() mul() munge() munge2 munge3 mushcode --- 353,364 ---- member() merge() mid() min() mix() mix2 mod() modulo() modulus() For more, see Entries-18 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-18 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + money money() monitor mortal move mtime() mudname() mul() munge() munge2 munge3 mushcode *************** *** 373,384 **** num() obj() object parents objeval() objmem() oemit() on-vacation opaque open() - or() ord() orflags() For more, see Entries-19 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-19 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- owner() page page2 paranoid parent parent() parents parents2 parents3 --- 374,385 ---- num() obj() object parents objeval() objmem() oemit() on-vacation opaque open() For more, see Entries-19 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-19 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + or() ord() orflags() owner() page page2 paranoid parent parent() parents parents2 parents3 *************** *** 394,405 **** queue quiet quit quota() r() r-function rand() read regedit() - regeditall() regeditalli() regediti() For more, see Entries-20 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-20 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- regexp regexp classes regexp classes2 regexp examples regexp syntax regexp syntax2 regexp syntax3 regexp syntax4 regexp syntax5 --- 395,406 ---- queue quiet quit quota() r() r-function rand() read regedit() For more, see Entries-20 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-20 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + regeditall() regeditalli() regediti() regexp regexp classes regexp classes2 regexp examples regexp syntax regexp syntax2 regexp syntax3 regexp syntax4 regexp syntax5 *************** *** 415,493 **** revwords() right() rjust() rloc() rnum() room room() round() royalty - rquota rules s() For more, see Entries-21 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-21 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- s-function safe say ! score scramble() search() ! search2 secs() secure() ! semaphores semaphores2 semaphores3 ! semaphores4 semaphores5 semaphores6 ! semipose session set() ! setdiff() setinter() setq() ! setq2 setq3 setr() ! setting-attributes setunion() sex ! sha1() shared shared players ! shared players2 shl() shr() ! shuffle() sign() sin() ! slay softcode sort() ! sortby() soundex() soundex2 ! soundlike() soundslike() space() ! spellnum() splice() spoofing For more, see Entries-22 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-22 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! sqrt() squish() stack ! starttime() stats() stddev() ! step2 step() sticky ! strcat() string functions strings ! strinsert() stripaccents() stripansi() ! strlen() strmatch() sub() ! subj() substitutions substitutions2 ! substitutions3 substitutions4 success ! suspect switch wildcards switch() ! switch2 switchall() switches ! t() table() tag() ! tagwrap() take tan() ! teach tel() tel_ok ! temple terse textfile() ! think time functions time() ! timefmt() timefmt2 timestring() For more, see Entries-23 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-23 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! topics topics2 translation ! transparent transparent2 trim() ! trunc() trust trust2 ! type() types of objects types2 ! u() u2 u3 ! ucstr() udefault() ufun() ! ufun2 ufun3 uldefault() ! ulocal() ulocal2 unfindable ! unfollow uninspected unregistered ! use user-defined commands user-defined2 ! utctime() utility functions v() ! v-function vadd() val() ! valid() vdim() vdot() ! verbose verbs version() ! visible() visual vmag() ! vmax() vmin() vmul() For more, see Entries-24 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-24 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! vrml vsub() vunit() ! warnings warnings list warnings list2 ! where() whisper whisper2 ! who wildcards wipe() with wizard wordpos() words() wrap() xget() xor() z_tel zemit() --- 416,495 ---- revwords() right() rjust() rloc() rnum() room room() round() royalty For more, see Entries-21 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-21 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + rquota rules s() s-function safe say ! score scramble() screenheight ! screenwidth search() search2 ! secs() secure() semaphores ! semaphores2 semaphores3 semaphores4 ! semaphores5 semaphores6 semipose ! session set() setdiff() ! setinter() setq() setq2 ! setq3 setr() setting-attributes ! setunion() sex sha1() ! shared shared players shared players2 ! shl() shr() shuffle() ! sign() sin() slay ! softcode sort() sortby() ! soundex() soundex2 soundlike() For more, see Entries-22 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-22 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! soundslike() space() spellnum() ! splice() spoofing sqrt() ! squish() stack starttime() ! stats() stddev() step2 ! step() sticky strcat() ! string functions strings strinsert() ! stripaccents() stripansi() strlen() ! strmatch() sub() subj() ! substitutions substitutions2 substitutions3 ! substitutions4 success suspect ! switch wildcards switch() switch2 ! switchall() switches t() ! table() tag() tagwrap() ! take tan() teach ! tel() tel_ok temple ! terse textfile() think For more, see Entries-23 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-23 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! time functions time() timefmt() ! timefmt2 timestring() topics ! topics2 translation transparent ! transparent2 trim() trunc() ! trust trust2 type() ! types of objects types2 u() ! u2 u3 ucstr() ! udefault() ufun() ufun2 ! ufun3 uldefault() ulocal() ! ulocal2 unfindable unfollow ! uninspected unregistered use ! user-defined commands user-defined2 utctime() ! utility functions v() v-function ! vadd() val() valid() ! vdim() vdot() verbose ! verbs version() visible() For more, see Entries-24 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- & Entries-24 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- ! visual vmag() vmax() ! vmin() vmul() vrml ! vsub() vunit() warnings ! warnings list warnings list2 where() ! whisper whisper2 who ! width() wildcards wipe() with wizard wordpos() words() wrap() xget() xor() z_tel zemit() *** 1_7_6.57/game/mushcnf.dst Sun, 08 Dec 2002 22:35:42 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1.1.8.1.1 600) --- 1_7_7.58(w)/game/mushcnf.dst Sun, 08 Dec 2002 22:35:56 -0600 dunemush (pennmush/41_mushcnf.ds 1.1.1.19.1.1.1.2.1.1.1.8.1.2 600) *************** *** 484,493 **** # Should we emulate TinyMUSH? [+ for new MUSHes] tiny_trim_fun yes - # show attributes in TinyMUSH format (FOO(#4v): test) rather than - # PennMUSH format (FOO [#4v]: test)? - tiny_attrs no - # In Tiny, strings used in math expressions evaluate to 0, # so eq(asdfa,0) = 1, gt(asdf,0) = 0, etc. # In Penn, using strings where numbers should be is traditionally an --- 484,489 ---- *** 1_7_6.57/config_h.SH Thu, 05 Sep 2002 18:45:47 -0500 dunemush (pennmush/b/17_config_h.S 1.17.1.2.1.1.1.5 660) --- 1_7_7.58(w)/config_h.SH Fri, 06 Dec 2002 22:50:50 -0600 dunemush (pennmush/b/17_config_h.S 1.17.1.2.1.1.1.6 660) *************** *** 599,604 **** --- 599,609 ---- */ #$d_newstyle CAN_NEWSTYLE /**/ + /* HAS_OPENSSL: + * Defined if openssl 0.9.6+ is available. + */ + #$d_openssl HAS_OPENSSL /**/ + /* HAS_RANDOM: * Have we got random(), our first choice for number generation? */ *************** *** 730,740 **** #$d_uptime HAS_UPTIME /**/ #define UPTIME_PATH "$uptime" - /* HAS_DEV_URANDOM: - * This symbol is defined if /dev/urandom is available. - */ - #$d_urandom HAS_DEV_URANDOM /**/ - /* UNION_WAIT: * This symbol if defined indicates to the C program that the argument * for the wait() system call should be declared as 'union wait status' --- 735,740 ---- *** 1_7_6.57/src/shs.c Sat, 12 Oct 2002 16:53:23 -0500 dunemush (pennmush/b/18_shs.c 1.6 660) --- 1_7_7.58(w)/src/shs.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/18_shs.c 1.7 660) *************** *** 23,33 **** #include "copyrite.h" #include "config.h" - #ifdef I_STRING #include - #else - #include - #endif #include "shs.h" --- 23,29 ---- *** 1_7_6.57/src/local.dst Tue, 25 Sep 2001 16:27:49 -0500 dunemush (pennmush/b/19_local.dst 1.8 660) --- 1_7_7.58(w)/src/local.dst Thu, 12 Dec 2002 21:11:56 -0600 dunemush (pennmush/b/19_local.dst 1.9 660) *************** *** 9,22 **** */ #include "copyrite.h" #include "config.h" - #ifdef I_STRING #include - #else - #include - #endif - #ifdef I_SETJMP #include - #endif #include "externs.h" #include "parse.h" #include "htab.h" --- 9,16 ---- *************** *** 25,36 **** extern HASHTAB htab_reserved_aliases; - #ifdef I_SETJMP extern jmp_buf db_err; #define OUTPUT(fun) do { if ((fun) < 0) longjmp(db_err, 1); } while (0) - #else - #define OUTPUT(fun) fun - #endif /* Called after all MUSH init is done. */ --- 19,26 ---- *** 1_7_6.57/src/funlocal.dst Fri, 05 Jul 2002 12:57:10 -0500 dunemush (pennmush/b/20_funlocal.d 1.4 660) --- 1_7_7.58(w)/src/funlocal.dst Thu, 12 Dec 2002 21:11:56 -0600 dunemush (pennmush/b/20_funlocal.d 1.5 660) *************** *** 14,24 **** */ #include "copyrite.h" #include "config.h" - #ifdef I_STRING #include - #else - #include - #endif #include "externs.h" #include "parse.h" #include "confmagic.h" --- 14,20 ---- *** 1_7_6.57/src/cmdlocal.dst Tue, 29 Oct 2002 14:47:59 -0600 dunemush (pennmush/b/21_cmdlocal.d 1.9 660) --- 1_7_7.58(w)/src/cmdlocal.dst Thu, 12 Dec 2002 21:11:56 -0600 dunemush (pennmush/b/21_cmdlocal.d 1.10 660) *************** *** 9,19 **** */ #include "copyrite.h" #include "config.h" - #ifdef I_STRING #include - #else - #include - #endif #include "externs.h" #include "parse.h" #include "htab.h" --- 9,15 ---- *** 1_7_6.57/src/wiz.c Fri, 06 Dec 2002 21:20:38 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.1 660) --- 1_7_7.58(w)/src/wiz.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.1.1.1.1.1.1.1.1.8.1.2.2.2.1.2.1.1.1.1.1.2 660) *************** *** 1296,1303 **** 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; --- 1296,1303 ---- 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; *************** *** 1310,1316 **** /* Range limits */ if (start && *start) { ! Size_t offset = 0; if (start[0] == '#') offset = 1; low = parse_integer(start + offset); --- 1310,1316 ---- /* Range limits */ if (start && *start) { ! size_t offset = 0; if (start[0] == '#') offset = 1; low = parse_integer(start + offset); *************** *** 1320,1326 **** } } if (stop && *stop) { ! Size_t offset = 0; if (stop[0] == '#') offset = 1; high = parse_integer(stop + offset); --- 1320,1326 ---- } } if (stop && *stop) { ! size_t offset = 0; if (stop[0] == '#') offset = 1; high = parse_integer(stop + offset); *** 1_7_6.57/src/wild.c Tue, 20 Aug 2002 09:48:05 -0500 dunemush (pennmush/b/24_wild.c 1.11.1.1.1.8 660) --- 1_7_7.58(w)/src/wild.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/24_wild.c 1.11.1.1.1.9 660) *************** *** 19,32 **** */ #include "config.h" #include - #ifdef I_STRING #include - #else - #include - #endif - #ifdef I_STDLIB #include - #endif #include "copyrite.h" #include "conf.h" --- 19,26 ---- *************** *** 49,57 **** /* big to match tprintf */ static int wild1 ! (const char *tstr, const char *dstr, int arg, char *wbuf, int cs); ! static int wild(const char *s, const char *d, int p, int cs); ! static int check_literals(const char *tstr, const char *dstr, int cs); /* --------------------------------------------------------------------------- * quick_wild: do a wildcard match, without remembering the wild data. --- 43,53 ---- /* big to match tprintf */ static int wild1 ! (const char *RESTRICT tstr, const char *RESTRICT dstr, int arg, ! char *RESTRICT wbuf, int cs); ! static int wild(const char *RESTRICT s, const char *RESTRICT d, int p, int cs); ! static int check_literals(const char *RESTRICT tstr, const char *RESTRICT dstr, ! int cs); /* --------------------------------------------------------------------------- * quick_wild: do a wildcard match, without remembering the wild data. *************** *** 59,65 **** * This routine will cause crashes if fed NULLs instead of strings. */ int ! quick_wild(const char *tstr, const char *dstr) { /* quick_wild_new does the real work, but before we call it, * we do some sanity checking. --- 55,61 ---- * This routine will cause crashes if fed NULLs instead of strings. */ int ! quick_wild(const char *RESTRICT tstr, const char *RESTRICT dstr) { /* quick_wild_new does the real work, but before we call it, * we do some sanity checking. *************** *** 71,77 **** int ! quick_wild_new(const char *tstr, const char *dstr, int cs) { while (*tstr != '*') { switch (*tstr) { --- 67,73 ---- int ! quick_wild_new(const char *RESTRICT tstr, const char *RESTRICT dstr, int cs) { while (*tstr != '*') { switch (*tstr) { *************** *** 145,156 **** * and what it points to. */ static int ! wild1(tstr, dstr, arg, wbuf, cs) ! const char *tstr; ! const char *dstr; ! int arg; ! char *wbuf; ! int cs; /* Case sensitive? */ { const char *datapos; char *wnext; --- 141,148 ---- * and what it points to. */ static int ! wild1(const char *RESTRICT tstr, const char *RESTRICT dstr, int arg, ! char *RESTRICT wbuf, int cs) { const char *datapos; char *wnext; *************** *** 301,311 **** * Side Effect: this routine modifies the 'wnxt' global variable. */ static int ! wild(s, d, p, cs) ! const char *s; ! const char *d; ! int p; ! int cs; /* Case sensitive? */ { /* Do fast match. */ while ((*s != '*') && (*s != '?')) { --- 293,299 ---- * Side Effect: this routine modifies the 'wnxt' global variable. */ static int ! wild(const char *RESTRICT s, const char *RESTRICT d, int p, int cs) { /* Do fast match. */ while ((*s != '*') && (*s != '?')) { *************** *** 334,343 **** * This routine will cause crashes if fed NULLs instead of strings. */ int ! wild_match_case(s, d, cs) ! const char *s; ! const char *d; ! int cs; /* Case sensitive match? */ { int j; /* Clear %0-%9 and r(0) - r(9) */ --- 322,328 ---- * This routine will cause crashes if fed NULLs instead of strings. */ int ! wild_match_case(const char *RESTRICT s, const char *RESTRICT d, int cs) { int j; /* Clear %0-%9 and r(0) - r(9) */ *************** *** 352,361 **** * regexp_match: do a regexp match, remembering the matched subexpressions */ int ! regexp_match_case(s, d, cs) ! const char *s; ! const char *d; ! int cs; /* Case sensitive? */ { int j; pcre *re; --- 337,343 ---- * regexp_match: do a regexp match, remembering the matched subexpressions */ int ! regexp_match_case(const char *RESTRICT s, const char *RESTRICT d, int cs) { int j; pcre *re; *************** *** 428,437 **** * subexpressions. */ int ! quick_regexp_match(s, d, cs) ! const char *s; ! const char *d; ! int cs; /* Case sensitive? */ { pcre *re; const char *errptr; --- 410,416 ---- * subexpressions. */ int ! quick_regexp_match(const char *RESTRICT s, const char *RESTRICT d, int cs) { pcre *re; const char *errptr; *************** *** 475,484 **** * This routine will cause crashes if fed NULLs instead of strings. */ int ! local_wild_match_case(s, d, cs) ! const char *s; ! const char *d; ! int cs; { switch (*s) { case '>': --- 454,460 ---- * This routine will cause crashes if fed NULLs instead of strings. */ int ! local_wild_match_case(const char *RESTRICT s, const char *RESTRICT d, int cs) { switch (*s) { case '>': *************** *** 504,511 **** * suitable for outside use. */ int ! wildcard(s) ! const char *s; { if (strchr(s, '*') || strchr(s, '?')) return 1; --- 480,486 ---- * suitable for outside use. */ int ! wildcard(const char *s) { if (strchr(s, '*') || strchr(s, '?')) return 1; *************** *** 513,519 **** } static int ! check_literals(const char *tstr, const char *dstr, int cs) { /* Every literal string in tstr must appear, in order, in dstr, * or no match can happen. That is, tstr is the pattern and dstr --- 488,494 ---- } static int ! check_literals(const char *RESTRICT tstr, const char *RESTRICT dstr, int cs) { /* Every literal string in tstr must appear, in order, in dstr, * or no match can happen. That is, tstr is the pattern and dstr *** 1_7_6.57/src/warnings.c Fri, 05 Jul 2002 09:26:45 -0500 dunemush (pennmush/b/25_warnings.c 1.21 660) --- 1_7_7.58(w)/src/warnings.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/25_warnings.c 1.22 660) *************** *** 19,25 **** #include "attrib.h" #include "confmagic.h" - #ifdef USE_WARNINGS #define W_UNLOCKED 0x1 #define W_LOCKED 0x2 --- 19,24 ---- *************** *** 535,540 **** notify(player, T("@wcheck complete.")); return; } - - - #endif /* USE_WARNINGS */ --- 534,536 ---- *** 1_7_6.57/src/version.c Fri, 05 Jul 2002 12:57:10 -0500 dunemush (pennmush/b/26_version.c 1.7 660) --- 1_7_7.58(w)/src/version.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/26_version.c 1.8 660) *************** *** 5,15 **** #include "config.h" #include "copyrite.h" - #ifdef I_STRING #include - #else - #include - #endif #include #include "conf.h" --- 5,11 ---- *** 1_7_6.57/src/utils.c Fri, 05 Jul 2002 09:26:45 -0500 dunemush (pennmush/b/27_utils.c 1.30.1.1.1.4 660) --- 1_7_7.58(w)/src/utils.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/27_utils.c 1.30.1.1.1.5 660) *************** *** 52,58 **** void init_by_array(unsigned long *, int); Malloc_t ! mush_malloc(Size_t size, const char *check) { Malloc_t ptr; #ifdef MEM_CHECK --- 52,58 ---- void init_by_array(unsigned long *, int); Malloc_t ! mush_malloc(size_t size, const char *check) { Malloc_t ptr; #ifdef MEM_CHECK *************** *** 66,72 **** } void ! mush_free(Malloc_t ptr, const char *check __attribute__ ((__unused__))) { #ifdef MEM_CHECK del_check(check); --- 66,73 ---- } void ! mush_free(Malloc_t RESTRICT ptr, const char *RESTRICT check ! __attribute__ ((__unused__))) { #ifdef MEM_CHECK del_check(check); *** 1_7_6.57/src/unparse.c Sun, 10 Nov 2002 14:27:19 -0600 dunemush (pennmush/b/28_unparse.c 1.16.1.7 660) --- 1_7_7.58(w)/src/unparse.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/28_unparse.c 1.16.1.8 660) *************** *** 2,12 **** #include "copyrite.h" #include "config.h" - #ifdef I_STRING #include - #else - #include - #endif #include "conf.h" #include "mushdb.h" #include "dbdefs.h" --- 2,8 ---- *** 1_7_6.57/src/timer.c Thu, 05 Sep 2002 09:29:20 -0500 dunemush (pennmush/b/29_timer.c 1.29.1.7 660) --- 1_7_7.58(w)/src/timer.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/29_timer.c 1.29.1.8 660) *************** *** 159,171 **** *options.dump_warning_5min) { flag_broadcast(0, 0, "%s", options.dump_warning_5min); } - #ifdef USE_WARNINGS if (options.warn_interval && (options.warn_counter <= mudtime)) { options.warn_counter = options.warn_interval + mudtime; strcpy(ccom, "warnings"); run_topology(); } - #endif local_timer(); } --- 159,169 ---- *** 1_7_6.57/src/help.c Sat, 30 Nov 2002 15:49:22 -0600 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.6 660) --- 1_7_7.58(w)/src/help.c Thu, 12 Dec 2002 21:11:58 -0600 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.7 660) *************** *** 1,12 **** #include "config.h" - #ifdef I_STDLIB #include - #endif - #ifdef I_STRING #include - #else - #include - #endif #include #include #include "externs.h" --- 1,6 ---- *************** *** 152,158 **** FILE *fp; char *p, line[LINE_SIZE + 1]; char the_topic[LINE_SIZE + 2]; ! Size_t n; if (*arg1 == '\0') arg1 = (char *) "help"; --- 146,152 ---- FILE *fp; char *p, line[LINE_SIZE + 1]; char the_topic[LINE_SIZE + 2]; ! size_t n; if (*arg1 == '\0') arg1 = (char *) "help"; *************** *** 444,450 **** FILE *fp; char line[LINE_SIZE + 1]; char the_topic[LINE_SIZE + 2]; ! Size_t n; static char buff[BUFFER_LEN]; char *bp; --- 438,444 ---- FILE *fp; char line[LINE_SIZE + 1]; char the_topic[LINE_SIZE + 2]; ! size_t n; static char buff[BUFFER_LEN]; char *bp; *** 1_7_6.57/src/htab.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/b/30_htab.c 1.8.1.5 660) --- 1_7_7.58(w)/src/htab.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/b/30_htab.c 1.8.1.6 660) *************** *** 262,273 **** } HASHENT * ! hash_new(htab, key) ! HASHTAB *htab; ! const char *key; { int hval; ! Size_t keylen; HASHENT *hptr, *curr, *old; hptr = hash_find(htab, key); --- 262,271 ---- } HASHENT * ! hash_new(HASHTAB *htab, const char *key) { int hval; ! size_t keylen; HASHENT *hptr, *curr, *old; hptr = hash_find(htab, key); *** 1_7_6.57/src/privtab.c Thu, 04 Jul 2002 14:34:07 -0500 dunemush (pennmush/b/31_privtab.c 1.5 660) --- 1_7_7.58(w)/src/privtab.c Thu, 12 Dec 2002 21:11:59 -0600 dunemush (pennmush/b/31_privtab.c 1.6 660) *************** *** 4,17 **** #include "copyrite.h" #include "config.h" #include - #ifdef I_STDLIB #include - #endif - #ifdef I_STRING #include - #else - #include - #endif #include "conf.h" #include "privtab.h" #include "externs.h" --- 4,11 ---- *** 1_7_6.57/src/switchinc.c Mon, 09 Dec 2002 14:23:00 -0600 dunemush (pennmush/b/32_switchinc. 1.3.1.2.1.6.1.18.1.2.1.2.2.5.1.4.2.4.1.1.1.2.1.5.1.2.1.5.2.1.1.31.3.4.1.1 660) --- 1_7_7.58(w)/src/switchinc.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/32_switchinc. 1.3.1.2.1.6.1.18.1.2.1.2.2.5.1.4.2.4.1.1.1.2.1.5.1.2.1.5.2.1.1.31.3.7 660) *************** *** 132,136 **** {"WIZARD", SWITCH_WIZARD}, {"YES", SWITCH_YES}, {"ZONE", SWITCH_ZONE}, ! {NULL, 0} }; --- 132,136 ---- {"WIZARD", SWITCH_WIZARD}, {"YES", SWITCH_YES}, {"ZONE", SWITCH_ZONE}, ! {NULL, 0} }; *** 1_7_6.57/src/strutil.c Sun, 01 Dec 2002 13:45:45 -0600 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.1.1.21 660) --- 1_7_7.58(w)/src/strutil.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.7.2.1.1.2.1.1.1.1.1.1.1.22 660) *************** *** 26,36 **** char *next_token(char *str, char sep); static int format_long(long val, char *buff, char **bp, int maxlen); - char *mush_strndup(const char *src, size_t len, const char *check); - - /* Duplicate the first len characters of s */ char * mush_strndup(const char *src, size_t len, const char *check) { char *copy; size_t rlen = strlen(src); --- 26,37 ---- char *next_token(char *str, char sep); static int format_long(long val, char *buff, char **bp, int maxlen); char * mush_strndup(const char *src, size_t len, const char *check) + __attribute_malloc__; + + /* Duplicate the first len characters of s */ + char *mush_strndup(const char *src, size_t len, const char *check) { char *copy; size_t rlen = strlen(src); *************** *** 60,66 **** #endif #else ! Size_t len = strlen(s) + 1; x = mush_malloc(len, check); if (x) memcpy(x, s, len); --- 61,67 ---- #endif #else ! size_t len = strlen(s) + 1; x = mush_malloc(len, check); if (x) memcpy(x, s, len); *************** *** 93,99 **** } int ! strncasecmp(const char *s1, const char *s2, Size_t n) { for (; 0 < n; ++s1, ++s2, --n) if (DOWNCASE(*s1) != DOWNCASE(*s2)) --- 94,100 ---- } int ! strncasecmp(const char *s1, const char *s2, size_t n) { for (; 0 < n; ++s1, ++s2, --n) if (DOWNCASE(*s1) != DOWNCASE(*s2)) *************** *** 107,113 **** #endif /* !HAS_STRCASECMP */ int ! string_prefix(const char *string, const char *prefix) { if (!string || !prefix) return 0; --- 108,114 ---- #endif /* !HAS_STRCASECMP */ int ! string_prefix(const char *RESTRICT string, const char *RESTRICT prefix) { if (!string || !prefix) return 0; *************** *** 182,189 **** } 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; --- 183,190 ---- } int ! safe_accent(const char *RESTRICT base, const char *RESTRICT tmplate, size_t len, ! char *buff, char **bp) { /* base and tmplate must be the same length */ size_t n; *************** *** 518,524 **** int ! safe_format(char *buff, char **bp, const char *fmt, ...) { APPEND_ARGS; #ifdef HAS_VSNPRINTF --- 519,525 ---- int ! safe_format(char *buff, char **bp, const char *RESTRICT fmt, ...) { APPEND_ARGS; #ifdef HAS_VSNPRINTF *************** *** 720,729 **** } char * ! replace_string(const char *old, const char *newbit, const char *string) { char *result, *r; ! Size_t len, newlen; r = result = mush_malloc(BUFFER_LEN, "replace_string.buff"); if (!result) --- 721,731 ---- } char * ! replace_string(const char *RESTRICT old, const char *RESTRICT newbit, ! const char *RESTRICT string) { char *result, *r; ! size_t len, newlen; r = result = mush_malloc(BUFFER_LEN, "replace_string.buff"); if (!result) *************** *** 753,763 **** * replace_string() twice */ char * ! replace_string2(const char *old[2], const char *newbits[2], const char *string) { char *result, *rp; char firsts[3] = { '\0', '\0', '\0' }; ! Size_t oldlens[2], newlens[2]; if (!string) return NULL; --- 755,766 ---- * replace_string() twice */ char * ! replace_string2(const char *old[2], const char *newbits[2], ! const char *RESTRICT string) { char *result, *rp; char firsts[3] = { '\0', '\0', '\0' }; ! size_t oldlens[2], newlens[2]; if (!string) return NULL; *************** *** 775,781 **** newlens[1] = strlen(newbits[1]); while (*string) { ! Size_t skip = strcspn(string, firsts); if (skip) { safe_strl(string, skip, result, &rp); string += skip; --- 778,784 ---- newlens[1] = strlen(newbits[1]); while (*string) { ! size_t skip = strcspn(string, firsts); if (skip) { safe_strl(string, skip, result, &rp); string += skip; *************** *** 1238,1244 **** { ansi_string *data; char *y, *current = NULL; ! Size_t p = 0; if (!src) return NULL; --- 1241,1247 ---- { ansi_string *data; char *y, *current = NULL; ! size_t p = 0; if (!src) return NULL; *** 1_7_6.57/src/strdup.c Fri, 05 Jul 2002 12:57:10 -0500 dunemush (pennmush/b/34_strdup.c 1.2 660) --- 1_7_7.58(w)/src/strdup.c Thu, 12 Dec 2002 21:12:02 -0600 dunemush (pennmush/b/34_strdup.c 1.3 660) *************** *** 5,21 **** #include "config.h" #include - #ifdef I_STRING #include - #else - #include - #endif - #ifdef I_STDLIB #include - #endif - #ifdef I_MEMORY - #include - #endif #include "conf.h" #include "copyrite.h" #include "mymalloc.h" --- 5,12 ---- *** 1_7_6.57/src/set.c Sat, 30 Nov 2002 15:49:22 -0600 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.11 660) --- 1_7_7.58(w)/src/set.c Thu, 12 Dec 2002 21:11:59 -0600 dunemush (pennmush/b/38_set.c 1.26.1.5.1.1.2.1.1.1.1.1.1.12 660) *************** *** 718,724 **** } else { /* find and replace */ char *p, *start = s; ! Size_t vlen; int too_long = 0; /* This will have problems if val is ever "", but do_gedit makes sure --- 718,724 ---- } else { /* find and replace */ char *p, *start = s; ! size_t vlen; int too_long = 0; /* This will have problems if val is ever "", but do_gedit makes sure *** 1_7_6.57/src/services.c Fri, 05 Jul 2002 12:57:10 -0500 dunemush (pennmush/b/39_services.c 1.13 660) --- 1_7_7.58(w)/src/services.c Thu, 12 Dec 2002 21:11:59 -0600 dunemush (pennmush/b/39_services.c 1.14 660) *************** *** 9,17 **** #include /* for service and thread routines */ - #ifdef I_STDLIB #include - #endif #include #include --- 9,15 ---- *** 1_7_6.57/src/player.c Wed, 16 Oct 2002 18:01:52 -0500 dunemush (pennmush/b/47_player.c 1.15.1.1.1.1.1.4.1.6 660) --- 1_7_7.58(w)/src/player.c Thu, 12 Dec 2002 21:11:59 -0600 dunemush (pennmush/b/47_player.c 1.15.1.1.1.1.1.4.1.9 660) *************** *** 6,19 **** #ifdef I_UNISTD #include #endif - #ifdef I_STDLIB #include - #endif - #ifdef I_STRING #include - #else - #include - #endif #ifdef I_SYS_TIME #include #else --- 6,13 ---- *************** *** 153,162 **** /* validate password */ if (!Guest(player)) if (!password_check(player, password)) { - #ifdef CREATION_TIMES /* Increment count of login failures */ ModTime(player)++; - #endif check_lastfailed(player, host); return NOTHING; } --- 147,154 ---- *************** *** 380,392 **** Toggles(player) |= options.player_toggles; if (Suspect_Site(host, player) || Suspect_Site(ip, player)) Toggles(player) |= PLAYER_SUSPECT; - #ifdef USE_WARNINGS set_initial_warnings(player); - #endif - #ifdef CREATION_TIMES /* Modtime tracks login failures */ ModTime(player) = (time_t) 0; - #endif (void) atr_add(player, "XYXXY", mush_crypt(password), GOD, NOTHING); giveto(player, START_BONUS); /* starting bonus */ (void) atr_add(player, "LAST", s, GOD, NOTHING); --- 372,380 ---- *************** *** 397,403 **** sprintf(temp, "%d", START_QUOTA); (void) atr_add(player, "RQUOTA", temp, GOD, NOTHING); #endif /* QUOTA */ - #ifdef FIXED_FLAG #ifndef EMPTY_ATTRS (void) atr_add(player, "ICLOC", " ", GOD, --- 385,390 ---- *************** *** 407,413 **** (void) atr_add(player, "ICLOC", "", GOD, AF_MDARK | AF_PRIVATE | AF_WIZARD | AF_NOCOPY); #endif - #endif #ifdef USE_MAILER (void) atr_add(player, "MAILCURF", "0", GOD, AF_LOCKED | AF_NOPROG | AF_WIZARD); --- 394,399 ---- *** 1_7_6.57/src/mycrypt.c Wed, 16 Oct 2002 18:01:52 -0500 dunemush (pennmush/b/50_mycrypt.c 1.8 660) --- 1_7_7.58(w)/src/mycrypt.c Thu, 12 Dec 2002 21:11:59 -0600 dunemush (pennmush/b/50_mycrypt.c 1.9 660) *************** *** 4,14 **** #include "config.h" #include - #ifdef I_STRING #include - #else - #include - #endif #include "conf.h" #if (CRYPT_SYSTEM > 0) #include "shs.h" --- 4,10 ---- *** 1_7_6.57/src/memcheck.c Fri, 26 Oct 2001 19:24:45 -0500 dunemush (pennmush/c/1_memcheck.c 1.8.1.3 660) --- 1_7_7.58(w)/src/memcheck.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/1_memcheck.c 1.8.1.4 660) *************** *** 2,16 **** #include "conf.h" #include "copyrite.h" - #ifdef I_STDLIB #include - #endif - - #ifdef I_STRING #include - #else - #include - #endif #ifdef MEM_CHECK --- 2,9 ---- *************** *** 40,46 **** const char *ref; { MEM *loop, *newcheck, *prev = NULL; ! Size_t reflen; int cmp; for (loop = my_check; loop; loop = loop->next) { --- 33,39 ---- const char *ref; { MEM *loop, *newcheck, *prev = NULL; ! size_t reflen; int cmp; for (loop = my_check; loop; loop = loop->next) { *** 1_7_6.57/src/match.c Sat, 30 Nov 2002 15:49:22 -0600 dunemush (pennmush/c/2_match.c 1.24.1.1.1.4 660) --- 1_7_7.58(w)/src/match.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/2_match.c 1.24.1.1.1.5 660) *************** *** 48,61 **** #include "copyrite.h" #include "config.h" #include - #ifdef I_STRING #include - #else - #include - #endif - #ifdef I_STDLIB #include - #endif #include "conf.h" #include "mushdb.h" #include "externs.h" --- 48,55 ---- *** 1_7_6.57/src/malias.c Sun, 08 Dec 2002 22:10:26 -0600 dunemush (pennmush/c/3_malias.c 1.36.1.1 660) --- 1_7_7.58(w)/src/malias.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/3_malias.c 1.36.1.2 660) *************** *** 40,50 **** #ifdef I_SYS_TYPES #include #endif - #ifdef I_STRING #include - #else - #include - #endif #include "conf.h" #include "mushdb.h" --- 40,46 ---- *** 1_7_6.57/src/look.c Mon, 07 Oct 2002 20:48:39 -0500 dunemush (pennmush/c/4_look.c 1.21.1.2.1.9 660) --- 1_7_7.58(w)/src/look.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/4_look.c 1.21.1.2.1.19 660) *************** *** 4,14 **** #include "copyrite.h" /* commands which look at things */ - #ifdef I_STRING #include - #else - #include - #endif #include "conf.h" #include "mushdb.h" --- 4,10 ---- *************** *** 36,47 **** static void look_exits(dbref player, dbref loc, const char *exit_name); static void look_contents(dbref player, dbref loc, const char *contents_name); ! static void look_atrs(dbref player, dbref thing, const char *mstr); static void look_simple(dbref player, dbref thing); static int decompile_helper (dbref player, dbref thing, char const *pattern, ATTR *atr, void *args); static int look_helper (dbref player, dbref thing, char const *pattern, ATTR *atr, void *args); #ifdef CHAT_SYSTEM static const char *channel_description(dbref player); #endif --- 32,46 ---- static void look_exits(dbref player, dbref loc, const char *exit_name); static void look_contents(dbref player, dbref loc, const char *contents_name); ! static void look_atrs(dbref player, dbref thing, const char *mstr, int all); static void look_simple(dbref player, dbref thing); + static void look_description(dbref player, dbref thing, char *def); static int decompile_helper (dbref player, dbref thing, char const *pattern, ATTR *atr, void *args); static int look_helper (dbref player, dbref thing, char const *pattern, ATTR *atr, void *args); + static int look_helper_veiled + (dbref player, dbref thing, char const *pattern, ATTR *atr, void *args); #ifdef CHAT_SYSTEM static const char *channel_description(dbref player); #endif *************** *** 319,330 **** } static int ! look_helper(player, thing, pattern, atr, args) ! dbref player; ! dbref thing; ! char const *pattern; ! ATTR *atr; ! void *args __attribute__ ((__unused__)); { char fbuf[BUFFER_LEN]; char *r; --- 318,326 ---- } static int ! look_helper_veiled(dbref player, dbref thing __attribute__ ((__unused__)), ! char const *pattern, ATTR *atr, void *args ! __attribute__ ((__unused__))) { char fbuf[BUFFER_LEN]; char *r; *************** *** 332,384 **** if (EX_PUBLIC_ATTRIBS && !strcmp(AL_NAME(atr), "DESCRIBE") && !strcmp(pattern, "*")) return 0; - - r = safe_uncompress(AL_STR(atr)); strcpy(fbuf, privs_to_letters(attr_privs, AL_FLAGS(atr))); ! if (TINY_ATTRS) { ! if (ShowAnsi(player)) { ! if (Owner(AL_CREATOR(atr)) != Owner(thing)) ! notify_format(player, ! "%s%s(#%d%s):%s%s", ANSI_HILITE, AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL, r); ! else if (*fbuf != '\0') ! notify_format(player, "%s%s(%s):%s%s", ANSI_HILITE, AL_NAME(atr), ! fbuf, ANSI_NORMAL, r); ! else ! notify_format(player, "%s%s:%s%s", ANSI_HILITE, AL_NAME(atr), ! ANSI_NORMAL, r); ! } else { ! if (Owner(AL_CREATOR(atr)) != Owner(thing)) ! notify_format(player, "%s(#%d%s):%s", AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, r); ! else if (*fbuf != '\0') ! notify_format(player, "%s(%s):%s", AL_NAME(atr), fbuf, r); ! else ! notify_format(player, "%s:%s", AL_NAME(atr), r); ! } } else { ! if (ShowAnsi(player)) { notify_format(player, "%s%s [#%d%s]:%s %s", ANSI_HILITE, AL_NAME(atr), Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL, r); ! } else { notify_format(player, "%s [#%d%s]: %s", AL_NAME(atr), Owner(AL_CREATOR(atr)), fbuf, r); ! } } ! free((Malloc_t) r); return 1; } static void ! look_atrs(player, thing, mstr) ! dbref player; ! dbref thing; ! const char *mstr; { ! if (!atr_iter_get(player, thing, mstr, look_helper, NULL) && mstr) ! notify(player, T("No matching attributes.")); } static void --- 328,391 ---- if (EX_PUBLIC_ATTRIBS && !strcmp(AL_NAME(atr), "DESCRIBE") && !strcmp(pattern, "*")) return 0; strcpy(fbuf, privs_to_letters(attr_privs, AL_FLAGS(atr))); ! if (AL_FLAGS(atr) & AF_VEILED) { ! if (ShowAnsi(player)) ! notify_format(player, ! "%s%s [#%d%s]%s is veiled", ANSI_HILITE, AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL); ! else ! notify_format(player, ! "%s [#%d%s] is veiled", AL_NAME(atr), ! Owner(AL_CREATOR(atr)), fbuf); } else { ! r = safe_uncompress(AL_STR(atr)); ! if (ShowAnsi(player)) notify_format(player, "%s%s [#%d%s]:%s %s", ANSI_HILITE, AL_NAME(atr), Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL, r); ! else notify_format(player, "%s [#%d%s]: %s", AL_NAME(atr), Owner(AL_CREATOR(atr)), fbuf, r); ! free((Malloc_t) r); } ! return 1; ! } + static int + look_helper(dbref player, dbref thing __attribute__ ((__unused__)), + char const *pattern, ATTR *atr, void *args + __attribute__ ((__unused__))) + { + char fbuf[BUFFER_LEN]; + char *r; + + if (EX_PUBLIC_ATTRIBS && + !strcmp(AL_NAME(atr), "DESCRIBE") && !strcmp(pattern, "*")) + return 0; + strcpy(fbuf, privs_to_letters(attr_privs, AL_FLAGS(atr))); + r = safe_uncompress(AL_STR(atr)); + if (ShowAnsi(player)) + notify_format(player, + "%s%s [#%d%s]:%s %s", ANSI_HILITE, AL_NAME(atr), + Owner(AL_CREATOR(atr)), fbuf, ANSI_NORMAL, r); + else + notify_format(player, "%s [#%d%s]: %s", AL_NAME(atr), + Owner(AL_CREATOR(atr)), fbuf, r); + free((Malloc_t) r); return 1; } static void ! look_atrs(dbref player, dbref thing, const char *mstr, int all) { ! if (all) { ! if (!atr_iter_get(player, thing, mstr, look_helper, NULL) && mstr) ! notify(player, T("No matching attributes.")); ! } else { ! if (!atr_iter_get(player, thing, mstr, look_helper_veiled, NULL) && mstr) ! notify(player, T("No matching attributes.")); ! } } static void *************** *** 393,400 **** tag_wrap("FONT", "SIZE=+2", unparse_object_myopic(player, thing)); PEND; notify(player, pbuff); ! did_it(player, thing, "DESCRIBE", T("You see nothing special."), ! "ODESCRIBE", NULL, "ADESCRIBE", NOTHING); if (IsExit(thing) && Transparented(thing)) { if (Cloudy(thing)) flag = 3; --- 400,407 ---- tag_wrap("FONT", "SIZE=+2", unparse_object_myopic(player, thing)); PEND; notify(player, pbuff); ! look_description(player, thing, T("You see nothing special.")); ! did_it(player, thing, NULL, NULL, "ODESCRIBE", NULL, "ADESCRIBE", NOTHING); if (IsExit(thing) && Transparented(thing)) { if (Cloudy(thing)) flag = 3; *************** *** 453,472 **** did_it(player, loc, "IDESCRIBE", NULL, "OIDESCRIBE", NULL, "AIDESCRIBE", NOTHING); else ! did_it(player, loc, "DESCRIBE", NULL, NULL, NULL, NULL, NOTHING); } } /* tell him the description */ else { if ((flag == 0) || (flag == 2)) { ! if ((flag == 0) || !Terse(player)) ! did_it(player, loc, "DESCRIBE", NULL, "ODESCRIBE", NULL, "ADESCRIBE", NOTHING); ! else did_it(player, loc, NULL, NULL, "ODESCRIBE", NULL, "ADESCRIBE", NOTHING); } else if (flag != 4) ! did_it(player, loc, "DESCRIBE", NULL, NULL, NULL, NULL, NOTHING); } /* tell him the appropriate messages if he has the key */ if (IsRoom(loc) && ((flag == 0) || (flag == 2))) { --- 460,480 ---- did_it(player, loc, "IDESCRIBE", NULL, "OIDESCRIBE", NULL, "AIDESCRIBE", NOTHING); else ! look_description(player, loc, NULL); } } /* tell him the description */ else { if ((flag == 0) || (flag == 2)) { ! if ((flag == 0) || !Terse(player)) { ! look_description(player, loc, NULL); ! did_it(player, loc, NULL, NULL, "ODESCRIBE", NULL, "ADESCRIBE", NOTHING); ! } else did_it(player, loc, NULL, NULL, "ODESCRIBE", NULL, "ADESCRIBE", NOTHING); } else if (flag != 4) ! look_description(player, loc, NULL); } /* tell him the appropriate messages if he has the key */ if (IsRoom(loc) && ((flag == 0) || (flag == 2))) { *************** *** 490,495 **** --- 498,553 ---- } } + static void + look_description(dbref player, dbref thing, char *def) + { + /* Show thing's description to player, obeying DESCFORMAT if set */ + ATTR *a, *f; + char *preserveq[NUMQ]; + char *preserves[10]; + char buff[BUFFER_LEN], fbuff[BUFFER_LEN]; + char *bp, *fbp, *asave; + char const *ap; + + if (!GoodObject(player) || !GoodObject(thing)) + return; + save_global_regs("look_desc_save", preserveq); + save_global_env("look_desc_save", preserves); + a = atr_get(thing, "DESCRIBE"); + if (a) { + /* We have a DESCRIBE, evaluate it into buff */ + asave = safe_uncompress(a->value); + ap = asave; + bp = buff; + process_expression(buff, &bp, &ap, thing, player, player, + PE_DEFAULT, PT_DEFAULT, NULL); + *bp = '\0'; + free((Malloc_t) asave); + } + f = atr_get(thing, "DESCFORMAT"); + if (f) { + /* We have a DESCFORMAT, evaluate it into fbuff and use it */ + /* If we have a DESCRIBE, pass the evaluated version as %0 */ + wenv[0] = a ? buff : NULL; + asave = safe_uncompress(f->value); + ap = asave; + fbp = fbuff; + process_expression(fbuff, &fbp, &ap, thing, player, player, + PE_DEFAULT, PT_DEFAULT, NULL); + *fbp = '\0'; + free((Malloc_t) asave); + notify_by(thing, player, fbuff); + } else if (a) { + /* DESCRIBE only */ + notify_by(thing, player, buff); + } else if (def) { + /* Nothing, go with the default message */ + notify_by(thing, player, def); + } + restore_global_regs("look_desc_save", preserveq); + restore_global_env("look_desc_save", preserves); + } + void do_look_around(player) dbref player; *************** *** 576,593 **** switch (Typeof(thing)) { case TYPE_ROOM: look_room(player, thing, 0); - /* look_atrs(player, thing); */ break; case TYPE_THING: case TYPE_PLAYER: look_simple(player, thing); - /* look_atrs(player,thing); */ if (!(Opaque(thing))) look_contents(player, thing, "Carrying:"); break; default: look_simple(player, thing); - /* look_atrs(player,thing); */ break; } } --- 634,648 ---- *************** *** 612,621 **** #endif void ! do_examine(player, name, brief) dbref player; const char *name; int brief; { dbref thing; ATTR *a; --- 667,677 ---- #endif void ! do_examine(player, name, brief, all) dbref player; const char *name; int brief; + int all; { dbref thing; ATTR *a; *************** *** 654,660 **** } /* only look at some of the attributes */ if (attrib_name && *attrib_name) { ! look_atrs(player, thing, attrib_name); return; } if (brief == 2) { --- 710,716 ---- } /* only look at some of the attributes */ if (attrib_name && *attrib_name) { ! look_atrs(player, thing, attrib_name, all); return; } if (brief == 2) { *************** *** 715,725 **** notify(player, channel_description(thing)); #endif /* CHAT_SYSTEM */ - #ifdef USE_WARNINGS notify_format(player, T("Warnings checked: %s"), unparse_warnings(thing)); - #endif - #ifdef CREATION_TIMES tp = (char *) ctime(&CreTime(thing)); tp[strlen(tp) - 1] = '\0'; notify_format(player, T("Created: %s"), tp); --- 771,778 ---- *************** *** 728,737 **** tp[strlen(tp) - 1] = '\0'; notify_format(player, T("Last Modification: %s"), tp); } - #endif } if ((brief != 1) && (EX_PUBLIC_ATTRIBS || ok)) { ! look_atrs(player, thing, NULL); } /* show contents */ if ((Contents(thing) != NOTHING) && --- 781,789 ---- tp[strlen(tp) - 1] = '\0'; notify_format(player, T("Last Modification: %s"), tp); } } if ((brief != 1) && (EX_PUBLIC_ATTRIBS || ok)) { ! look_atrs(player, thing, NULL, all); } /* show contents */ if ((Contents(thing) != NOTHING) && *************** *** 876,882 **** } /* determinte range */ if (argv[1] && *argv[1]) { ! Size_t offset = 0; if (argv[1][0] == '#') offset = 1; bot = parse_integer(argv[1] + offset); --- 928,934 ---- } /* determinte range */ if (argv[1] && *argv[1]) { ! size_t offset = 0; if (argv[1][0] == '#') offset = 1; bot = parse_integer(argv[1] + offset); *************** *** 886,892 **** } } if (argv[2] && *argv[2]) { ! Size_t offset = 0; if (argv[2][0] == '#') offset = 1; top = parse_integer(argv[2] + offset); --- 938,944 ---- } } if (argv[2] && *argv[2]) { ! size_t offset = 0; if (argv[2][0] == '#') offset = 1; top = parse_integer(argv[2] + offset); *** 1_7_6.57/src/lock.c Wed, 20 Nov 2002 09:43:49 -0600 dunemush (pennmush/c/6_lock.c 1.17.1.13 660) --- 1_7_7.58(w)/src/lock.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/6_lock.c 1.17.1.14 660) *************** *** 181,187 **** lock_list *ll; if (!free_list) { ! Size_t n; ll = mush_malloc(sizeof(lock_list) * LOCKS_PER_PAGE, "lock_page"); --- 181,187 ---- lock_list *ll; if (!free_list) { ! size_t n; ll = mush_malloc(sizeof(lock_list) * LOCKS_PER_PAGE, "lock_page"); *** 1_7_6.57/src/info_slave.c Sun, 08 Dec 2002 22:35:42 -0600 dunemush (pennmush/c/7_info_slave 1.9.1.4.1.1 660) --- 1_7_7.58(w)/src/info_slave.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/7_info_slave 1.9.1.4.1.2 660) *************** *** 8,16 **** #include #include - #ifdef I_MEMORY - #include - #endif #ifdef I_SYS_TYPES #include #endif --- 8,13 ---- *** 1_7_6.57/src/ident.c Sat, 30 Nov 2002 15:49:22 -0600 dunemush (pennmush/c/8_ident.c 1.19.1.4.1.11 660) --- 1_7_7.58(w)/src/ident.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/8_ident.c 1.19.1.4.1.12 660) *************** *** 346,352 **** ** Fiddling: Pär Emanuelsson */ static char * ! xstrtok(char *cp, const char *cs, char *dc) { static char *bp = 0; --- 346,352 ---- ** Fiddling: Pär Emanuelsson */ static char * ! xstrtok(char *RESTRICT cp, const char *RESTRICT cs, char *RESTRICT dc) { static char *bp = 0; *************** *** 395,401 **** char c, *cp, *tmp_charset; fd_set rs; int res = 0, lp, fp; ! Size_t pos; struct timeval to; #ifndef WIN32 --- 395,401 ---- char c, *cp, *tmp_charset; fd_set rs; int res = 0, lp, fp; ! size_t pos; struct timeval to; #ifndef WIN32 *** 1_7_6.57/src/gmalloc.c Tue, 15 May 2001 15:59:50 -0500 dunemush (pennmush/c/9_gmalloc.c 1.20 660) --- 1_7_7.58(w)/src/gmalloc.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/9_gmalloc.c 1.21 660) *************** *** 36,46 **** #include #endif - #ifdef I_STRING /* For bzero and bcopy */ #include - #else - #include - #endif #ifndef memset #define memset(s, zero, n) bzero ((s), (n)) --- 36,42 ---- *** 1_7_6.57/src/game.c Sat, 30 Nov 2002 15:49:22 -0600 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.2 660) --- 1_7_7.58(w)/src/game.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.5 660) *************** *** 31,39 **** #ifdef I_UNISTD #include #endif - #ifdef I_SETJMP #include - #endif #ifdef macintosh extern void PMSSetupDatabases(void); --- 31,37 ---- *************** *** 315,323 **** } } - #ifdef I_SETJMP jmp_buf db_err; - #endif static void dump_database_internal() --- 313,319 ---- *************** *** 327,333 **** char tmpfl[2048]; FILE *f = NULL; - #ifdef I_SETJMP if (setjmp(db_err)) { /* The dump failed. Disk might be full or something went bad with the compression slave. Boo! */ --- 323,328 ---- *************** *** 335,341 **** flag_broadcast(WIZARD | ROYALTY, 0, T("GAME: ERROR! Database save failed!")); } else { - #endif local_dump_database(); #ifdef ALWAYS_PARANOID --- 330,335 ---- *************** *** 405,413 **** } else perror(realtmpfl); #endif /* CHAT_SYSTEM */ - #ifdef I_SETJMP } - #endif } --- 399,405 ---- *************** *** 429,441 **** emergency_shutdown(); /* dump panic file */ - #ifdef I_SETJMP if (setjmp(db_err)) { /* Dump failed. We're in deep doo-doo */ do_rawlog(LT_ERR, T("CANNOT DUMP PANIC DB. OOPS.")); _exit(134); } else { - #endif #ifdef macintosh if ((f = fopen(panicfile, "wb")) == NULL) { #else --- 421,431 ---- *************** *** 456,464 **** do_rawlog(LT_ERR, T("DUMPING: %s (done)"), panicfile); _exit(136); } - #ifdef I_SETJMP } - #endif } void --- 446,452 ---- *************** *** 622,627 **** --- 610,616 ---- init_atr_name_tree(); init_locks(); init_names(); + init_pronouns(); memset(¤t_state, 0, sizeof current_state); *************** *** 1452,1464 **** T(" Time until next purge: %ld minutes %ld seconds."), (options.purge_counter - mudtime) / 60, (options.purge_counter - mudtime) % 60); - #ifdef USE_WARNINGS if (options.warn_interval) notify_format(player, T(" Time until next @warnings: %ld minutes %ld seconds."), (options.warn_counter - mudtime) / 60, (options.warn_counter - mudtime) % 60); - #endif /* Mortals, go no further! */ if (!Wizard(player) || mortal) --- 1441,1451 ---- *************** *** 1578,1584 **** int n; for (n = 0; fields[n]; n++) { ! Size_t len = strlen(fields[n]); if (strncmp(line, fields[n], len) == 0) { if ((nl = strchr(line, '\n')) != NULL) *nl = '\0'; --- 1565,1571 ---- int n; for (n = 0; fields[n]; n++) { ! size_t len = strlen(fields[n]); if (strncmp(line, fields[n], len) == 0) { if ((nl = strchr(line, '\n')) != NULL) *nl = '\0'; *************** *** 1689,1698 **** f = fopen(filename, "w"); #endif } - #ifdef I_SETJMP if (!f) longjmp(db_err, 1); - #endif return f; } --- 1676,1683 ---- *** 1_7_6.57/src/funstr.c Sat, 30 Nov 2002 15:49:22 -0600 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.6.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.3.1.5.1.3.1.2 660) --- 1_7_7.58(w)/src/funstr.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.6.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.3.1.5.1.3.1.6 660) *************** *** 27,68 **** static int wraplen(char *str, int maxlen); void init_tag_hashtab(void); int get_gender(dbref player) { ! /* 0 for error, 1 for neuter, 2 for female, 3 for male, 4 for plural */ ATTR *a; a = atr_get(player, "SEX"); if (!a) ! return 1; switch (*uncompress(a->value)) { case 'T': case 't': case 'P': case 'p': ! return 4; case 'M': case 'm': ! return 3; case 'F': case 'f': case 'W': case 'w': - return 2; - default: return 1; } } ! char const *subj[5] = { "", "it", "she", "he", "they" }; ! char const *poss[5] = { "", "its", "her", "his", "their" }; ! char const *obj[5] = { "", "it", "her", "him", "them" }; ! char const *absp[5] = { "", "its", "hers", "his", "theirs" }; /* ARGSUSED */ FUNCTION(fun_isword) --- 27,101 ---- static int wraplen(char *str, int maxlen); void init_tag_hashtab(void); + void init_pronouns(void); int get_gender(dbref player) { ! /* 0 for neuter, 1 for female, 2 for male, 3 for plural */ ATTR *a; a = atr_get(player, "SEX"); if (!a) ! return 0; switch (*uncompress(a->value)) { case 'T': case 't': case 'P': case 'p': ! return 3; case 'M': case 'm': ! return 2; case 'F': case 'f': case 'W': case 'w': return 1; + default: + return 0; } } ! char *subj[4]; ! char *poss[4]; ! char *obj[4]; ! char *absp[4]; ! ! void ! init_pronouns(void) ! { ! int translate = 0; ! #ifdef HAS_SETLOCALE ! char *loc; ! if ((loc = setlocale(LC_MESSAGES, NULL))) { ! if (strcmp(loc, "C") && strncmp(loc, "en", 2)) ! translate = 1; ! } ! #endif ! #define SET_PRONOUN(p,v,u) p = strdup((translate) ? (v) : (u)) ! SET_PRONOUN(subj[0], T("pronoun:neuter,subjective"), "it"); ! SET_PRONOUN(subj[1], T("pronoun:feminine,subjective"), "she"); ! SET_PRONOUN(subj[2], T("pronoun:masculine,subjective"), "he"); ! SET_PRONOUN(subj[3], T("pronoun:plural,subjective"), "they"); ! SET_PRONOUN(poss[0], T("pronoun:neuter,possessive"), "its"); ! SET_PRONOUN(poss[1], T("pronoun:feminine,possessive"), "her"); ! SET_PRONOUN(poss[2], T("pronoun:masculine,possessive"), "his"); ! SET_PRONOUN(poss[3], T("pronoun:plural,possessive"), "their"); ! SET_PRONOUN(obj[0], T("pronoun:neuter,objective"), "it"); ! SET_PRONOUN(obj[1], T("pronoun:feminine,objective"), "her"); ! SET_PRONOUN(obj[2], T("pronoun:masculine,objective"), "him"); ! SET_PRONOUN(obj[3], T("pronoun:plural,objective"), "them"); ! SET_PRONOUN(absp[0], T("pronoun:neuter,absolute possessive"), "its"); ! SET_PRONOUN(absp[1], T("pronoun:feminine,absolute possessive"), "hers"); ! SET_PRONOUN(absp[2], T("pronoun:masculine,absolute possessive"), "his"); ! SET_PRONOUN(absp[3], T("pronoun:plural,absolute possessive "), "theirs"); ! #undef SET_PRONOUN ! } ! /* ARGSUSED */ FUNCTION(fun_isword) *************** *** 180,186 **** char amax[BUFFER_LEN]; char *c; int j, m = 0; ! Size_t len; c = remove_markup(args[0], &len); memcpy(amax, c, len); --- 213,219 ---- char amax[BUFFER_LEN]; char *c; int j, m = 0; ! size_t len; c = remove_markup(args[0], &len); memcpy(amax, c, len); *************** *** 200,206 **** char amin[BUFFER_LEN]; char *c; int j, m = 0; ! Size_t len; c = remove_markup(args[0], &len); memcpy(amin, c, len); --- 233,239 ---- char amin[BUFFER_LEN]; char *c; int j, m = 0; ! size_t len; c = remove_markup(args[0], &len); memcpy(amin, c, len); *************** *** 376,382 **** case 'A': /* Case-sensitive lexicographic */ { char left[BUFFER_LEN], right[BUFFER_LEN], *l, *r; ! Size_t llen, rlen; l = remove_markup(args[0], &llen); memcpy(left, l, llen); r = remove_markup(args[1], &rlen); --- 409,415 ---- case 'A': /* Case-sensitive lexicographic */ { char left[BUFFER_LEN], right[BUFFER_LEN], *l, *r; ! size_t llen, rlen; l = remove_markup(args[0], &llen); memcpy(left, l, llen); r = remove_markup(args[1], &rlen); *************** *** 387,393 **** case 'I': /* Case-insensitive lexicographic */ { char left[BUFFER_LEN], right[BUFFER_LEN], *l, *r; ! Size_t llen, rlen; l = remove_markup(args[0], &llen); memcpy(left, l, llen); r = remove_markup(args[1], &rlen); --- 420,426 ---- case 'I': /* Case-insensitive lexicographic */ { char left[BUFFER_LEN], right[BUFFER_LEN], *l, *r; ! size_t llen, rlen; l = remove_markup(args[0], &llen); memcpy(left, l, llen); r = remove_markup(args[1], &rlen); *************** *** 432,438 **** { char tbuf[BUFFER_LEN]; char *pos; ! Size_t len; pos = remove_markup(args[1], &len); memcpy(tbuf, pos, len); --- 465,471 ---- { char tbuf[BUFFER_LEN]; char *pos; ! size_t len; pos = remove_markup(args[1], &len); memcpy(tbuf, pos, len); *************** *** 448,454 **** { char tbuf[BUFFER_LEN]; char *t; ! Size_t len; /* matches a wildcard pattern for an _entire_ string */ t = remove_markup(args[0], &len); --- 481,487 ---- { char tbuf[BUFFER_LEN]; char *t; ! size_t len; /* matches a wildcard pattern for an _entire_ string */ t = remove_markup(args[0], &len); *************** *** 746,752 **** char *oldbp; char start, end; char letters[BUFFER_LEN]; ! Size_t len; if (nargs >= 3) { if (!delim_check(buff, bp, nargs, args, 3, &start)) --- 779,785 ---- char *oldbp; char start, end; char letters[BUFFER_LEN]; ! size_t len; if (nargs >= 3) { if (!delim_check(buff, bp, nargs, args, 3, &start)) *************** *** 1054,1060 **** FUNCTION(fun_ord) { char *m; ! Size_t len = 0; if (!args[0] || !args[0][0]) { safe_str(T("#-1 FUNCTION EXPECTS ONE CHARACTER"), buff, bp); return; --- 1087,1093 ---- FUNCTION(fun_ord) { char *m; ! size_t len = 0; if (!args[0] || !args[0][0]) { safe_str(T("#-1 FUNCTION EXPECTS ONE CHARACTER"), buff, bp); return; *** 1_7_6.57/src/funlist.c Sun, 10 Nov 2002 14:27:19 -0600 dunemush (pennmush/c/16_funlist.c 1.3.1.1.1.5.1.2.1.1.1.1.1.4.1.2.1.2.1.19.1.2.1.1.1.2.1.5.1.1.1.1.1.1.1.1.1.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.1.1.12 660) --- 1_7_7.58(w)/src/funlist.c Thu, 12 Dec 2002 21:11:58 -0600 dunemush (pennmush/c/16_funlist.c 1.3.1.1.1.5.1.2.1.1.1.1.1.4.1.2.1.2.1.19.1.2.1.1.1.2.1.5.1.1.1.1.1.1.1.1.1.1.2.1.1.3.1.2.1.1.1.1.1.1.1.1.1.1.1.12.1.1 660) *************** *** 26,32 **** static char *next_token(char *str, char sep); static void arr2list(char *r[], int max, char *list, char **lp, char *sep); - static void swap(char **p, char **q); static int autodetect_list(char **ptrs, int nptrs); static int get_list_type(char **args, int nargs, int type_pos, char **ptrs, int nptrs); --- 26,31 ---- *************** *** 102,120 **** **lp = '\0'; } - static void - swap(p, q) - char **p; - char **q; - { - /* swaps two pointers to strings */ - - char *temp; - temp =