[PENNMUSH-ANNOUNCE] 1.7.5-patch02
dunemush@pennmush.org
dunemush at pennmush.org
Wed, 23 Jan 2002 10:27:37 -0600
This is patch02 to PennMUSH 1.7.5. After applying this patch, you will
have version 1.7.5p2
To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
patch -p1 < 1.7.5-patch02
make install
If you use GNU patch 2.2, you probably want the above to be 'patch -b -p1',
not just 'patch -p1'.
Unix (or cygwin) users need not worry about failed hunks in src/switchinc.c,
hdrs/switches.h, hdrs/cmds.h, or hdrs/funs.h. These files are automatically
rebuilt on compile.
Then @shutdown and restart your MUSH.
- Alan/Javelin
In this patch:
Major changes:
* Implementations for softcode functions get the lengths of their arguments
passed to them, and this is taken advantage of in a number of places. [SW]
Minor changes:
* It's harder to get a partial dbref because of end-of-buffer truncation. [SW]
* Code cleanup. In particular, safe_str() and friends are no longer
macros for a safe_copy_str() or the like, because hardly anything
used a different buffer length than BUFFER_LEN, and those places
can be handled other ways. [SW]
Fixes:
* Win32 portability fixes by Noltar@Korongil and Eric Koske.
* When you have two hidden connections, one idle over the inactivity limit,
and the other not, @hide/off on the active connection unhides both,
but you also see the Inactivity re-hide message from the other
connection. Reported by Trispis.
* iname() function actually added to function table so it works.
Reported by K. Shirow.
* @lock obj=attrib:value locks didn't work properly. Reported by
Linda Antonsson.
* Fixes from 1.7.4p14.
Prereq: 1.7.5p1
*** 1_7_5.45/Patchlevel Mon, 03 Dec 2001 10:28:03 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.2 600)
--- 1_7_5.63(w)/Patchlevel Wed, 23 Jan 2002 10:11:53 -0600 dunemush (pennmush/5_Patchlevel 1.17.1.2 600)
***************
*** 1,2 ****
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.5p1
--- 1,2 ----
Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.5p2
*** 1_7_5.45/CHANGES.174 Mon, 03 Dec 2001 10:13:02 -0600 dunemush (pennmush/8_CHANGES 1.219.1.58 600)
--- 1_7_5.63(w)/CHANGES.174 Wed, 23 Jan 2002 10:12:04 -0600 dunemush (pennmush/8_CHANGES 1.219.1.66 600)
***************
*** 17,22 ****
--- 17,45 ----
==========================================================================
+ Version 1.7.4 patchlevel 14 January 4, 2002
+
+ Minor Changes:
+ * The global function invocation limit is now 5 times the per-evaluation
+ function invocation limit, to provide some flexibility in cases
+ where you run a small number of functions that cause a larger
+ number of other functions to be evaluated (e.g., using tel()
+ to move players into rooms with function-laden descriptions). [TAP]
+ Fixes:
+ * Mortals are now restricted in which html tags they can generate
+ when pueblo support is enabled. Suggested by BladedThoth.
+ * @sitelock/name !<name> was improperly case-sensitive in its
+ matching. Reported by Linda Antonsson.
+ * Better invocation count checking and aborting on reaching limit.
+ Reported by Ashen-Shugar. [TAP]
+ * Beep characters are ignored when matching object listen patterns.
+ Suggested by Wayne@PDX.
+ * The end-of-dump marker is checked when reading the chat database.
+ Suggested by Bellemore@M*U*S*H. [SW]
+ * @lock obj=attrib:value locks were broken. Reported by Linda
+ Antonsson.
+ * Minor help fixes.
+
Version 1.7.4 patchlevel 13 November 30, 2001
Minor changes:
*** 1_7_5.45/CHANGES Mon, 03 Dec 2001 10:28:03 -0600 dunemush (pennmush/g/7_CHANGES 1.12 600)
--- 1_7_5.63(w)/CHANGES Wed, 23 Jan 2002 10:11:37 -0600 dunemush (pennmush/g/7_CHANGES 1.20 600)
***************
*** 17,22 ****
--- 17,45 ----
==========================================================================
+ Version 1.7.5 patchlevel 2 January 23, 2002
+
+ Major changes:
+ * Implementations for softcode functions get the lengths of their arguments
+ passed to them, and this is taken advantage of in a number of places. [SW]
+ Minor changes:
+ * It's harder to get a partial dbref because of end-of-buffer truncation. [SW]
+ * Code cleanup. In particular, safe_str() and friends are no longer
+ macros for a safe_copy_str() or the like, because hardly anything
+ used a different buffer length than BUFFER_LEN, and those places
+ can be handled other ways. [SW]
+ Fixes:
+ * Win32 portability fixes by Noltar@Korongil and Eric Koske.
+ * When you have two hidden connections, one idle over the inactivity limit,
+ and the other not, @hide/off on the active connection unhides both,
+ but you also see the Inactivity re-hide message from the other
+ connection. Reported by Trispis.
+ * iname() function actually added to function table so it works.
+ Reported by K. Shirow.
+ * @lock obj=attrib:value locks didn't work properly. Reported by
+ Linda Antonsson.
+ * Fixes from 1.7.4p14.
+
Version 1.7.5 patchlevel 1 December 3, 2001
Minor Changes:
*** 1_7_5.45/game/txt/hlp/pennvers.hlp Mon, 03 Dec 2001 10:28:03 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.47 600)
--- 1_7_5.63(w)/game/txt/hlp/pennvers.hlp Wed, 23 Jan 2002 10:13:05 -0600 dunemush (pennmush/12_pennvers.h 1.169.1.42.1.6 600)
***************
*** 1,5 ****
& changes
! & 1.7.5p1
This is a list of changes in this patchlevel which are probably of
interest to players. More information about new commands and functions
can probably be gotten via 'help <name of whatever>'. 'help credits'
--- 1,5 ----
& changes
! & 1.7.5p2
This is a list of changes in this patchlevel which are probably of
interest to players. More information about new commands and functions
can probably be gotten via 'help <name of whatever>'. 'help credits'
***************
*** 11,16 ****
--- 11,40 ----
A list of the patchlevels associated with each release can
be read in 'help patchlevels'.
+ Version 1.7.5 patchlevel 2 January 23, 2002
+
+ Major changes:
+ * Implementations for softcode functions get the lengths of their arguments
+ passed to them, and this is taken advantage of in a number of places. [SW]
+ Minor changes:
+ * It's harder to get a partial dbref because of end-of-buffer truncation. [SW]
+ * Code cleanup. In particular, safe_str() and friends are no longer
+ macros for a safe_copy_str() or the like, because hardly anything
+ used a different buffer length than BUFFER_LEN, and those places
+ can be handled other ways. [SW]
+ Fixes:
+ * Win32 portability fixes by Noltar@Korongil and Eric Koske.
+ * When you have two hidden connections, one idle over the inactivity limit,
+ and the other not, @hide/off on the active connection unhides both,
+ but you also see the Inactivity re-hide message from the other
+ connection. Reported by Trispis.
+ * iname() function actually added to function table so it works.
+ Reported by K. Shirow.
+ * @lock obj=attrib:value locks didn't work properly. Reported by
+ Linda Antonsson.
+ * Fixes from 1.7.4p14.
+
+ & 1.7.5p1
Version 1.7.5 patchlevel 1 December 3, 2001
Minor Changes:
***************
*** 93,98 ****
--- 117,146 ----
* Indentation fixes [SW]
* Fixes up to 1.7.4p12 merged in.
+ & 1.7.4p14
+ Version 1.7.4 patchlevel 14 January 4, 2002
+
+ Minor Changes:
+ * The global function invocation limit is now 5 times the per-evaluation
+ function invocation limit, to provide some flexibility in cases
+ where you run a small number of functions that cause a larger
+ number of other functions to be evaluated (e.g., using tel()
+ to move players into rooms with function-laden descriptions). [TAP]
+ Fixes:
+ * Mortals are now restricted in which html tags they can generate
+ when pueblo support is enabled. Suggested by BladedThoth.
+ * @sitelock/name !<name> was improperly case-sensitive in its
+ matching. Reported by Linda Antonsson.
+ * Better invocation count checking and aborting on reaching limit.
+ Reported by Ashen-Shugar. [TAP]
+ * Beep characters are ignored when matching object listen patterns.
+ Suggested by Wayne@PDX.
+ * The end-of-dump marker is checked when reading the chat database.
+ Suggested by Bellemore@M*U*S*H. [SW]
+ * @lock obj=attrib:value locks were broken. Reported by Linda
+ Antonsson.
+ * Minor help fixes.
+
& 1.7.4p13
Version 1.7.4 patchlevel 13 November 30, 2001
***************
*** 5078,5085 ****
For information on a specific patchlevel of one of the versions listed,
type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'
! 1.7.5: 0, 0, 1, 1
! 1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1.7.2: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
--- 5126,5133 ----
For information on a specific patchlevel of one of the versions listed,
type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3'
! 1.7.5: 0, 0, 1, 1, 2
! 1.7.4: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1.7.3: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14
1.7.2: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35
*** 1_7_5.45/game/txt/hlp/pennpueb.hlp Tue, 04 Sep 2001 08:19:24 -0500 dunemush (pennmush/14_pennpueb.h 1.2.1.1 600)
--- 1_7_5.63(w)/game/txt/hlp/pennpueb.hlp Fri, 07 Dec 2001 23:26:28 -0600 dunemush (pennmush/14_pennpueb.h 1.2.1.3 600)
***************
*** 1,7 ****
& PUEBLO
& PUEBLO()
Pueblo is a client made by Chaco (a now defunct company).
! It attempts to MIX HTML with MUSH, and does a decent job at it.
There are other clients (notably MUSHclient) that also offer Pueblo
features. If compiled into the MUSH, PennMUSH offers support for
the enhanced features of Pueblo.
--- 1,7 ----
& PUEBLO
& PUEBLO()
Pueblo is a client made by Chaco (a now defunct company).
! It attempts to mix HTML with MUSH, and does a decent job at it.
There are other clients (notably MUSHclient) that also offer Pueblo
features. If compiled into the MUSH, PennMUSH offers support for
the enhanced features of Pueblo.
***************
*** 75,84 ****
Each of these produces the HTML output:
<A HREF="http://www.pennmush.org">PennMUSH</A>
& HTML()
Function: html(<string>)
! This will output string as a HTML Tag.
Example:
think [html(B)]
--- 75,87 ----
Each of these produces the HTML output:
<A HREF="http://www.pennmush.org">PennMUSH</A>
+ Mortals are restricted in the tags they may use. Most standard HTML
+ tags are ok; protocol-specific tags like SEND and XCH_CMD can only be
+ sent by Wizards. In addition, the html() function is Wizard-only.
& HTML()
Function: html(<string>)
! This wizard-only function will output string as a HTML Tag.
Example:
think [html(B)]
***************
*** 86,91 ****
--- 89,95 ----
Will output (in HTML):
<B>
+ Non-wizards should see the tag(), endtag(), and tagwrap() functions.
& TAG()
Function: tag(<name>,[param1[,param2...]])
*** 1_7_5.45/game/txt/hlp/pennfunc.hlp Tue, 20 Nov 2001 17:08:09 -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.4 600)
--- 1_7_5.63(w)/game/txt/hlp/pennfunc.hlp Sun, 06 Jan 2002 20:44:55 -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.2 600)
***************
*** 1437,1445 ****
> say [map(strlen_fun, This is a test string)]
> say [iter(lnum(3), ##, ,%r)]
! You say, "1
! 2
! 3"
& ILEV()
& ITEXT()
& INUM()
--- 1437,1445 ----
> say [map(strlen_fun, This is a test string)]
> say [iter(lnum(3), ##, ,%r)]
! You say, "0
! 1
! 2"
& ILEV()
& ITEXT()
& INUM()
*** 1_7_5.45/src/wiz.c Thu, 22 Nov 2001 15:42:40 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.5 660)
--- 1_7_5.63(w)/src/wiz.c Wed, 23 Jan 2002 10:24:32 -0600 dunemush (pennmush/b/23_wiz.c 1.44.1.1.1.1.1.2.1.7.1.1.1.4 660)
***************
*** 1290,1297 ****
for (n = 0; n < nresults; n++) {
if (first)
first = 0;
! else
! safe_chr(' ', buff, bp);
if (safe_dbref(results[n], buff, bp))
break;
}
--- 1290,1297 ----
for (n = 0; n < nresults; n++) {
if (first)
first = 0;
! else if (safe_chr(' ', buff, bp))
! break;
if (safe_dbref(results[n], buff, bp))
break;
}
***************
*** 1299,1306 ****
for (n = nresults - 1; n >= 0; n--) {
if (first)
first = 0;
! else
! safe_chr(' ', buff, bp);
if (safe_dbref(results[n], buff, bp))
break;
}
--- 1299,1306 ----
for (n = nresults - 1; n >= 0; n--) {
if (first)
first = 0;
! else if (safe_chr(' ', buff, bp))
! break;
if (safe_dbref(results[n], buff, bp))
break;
}
***************
*** 1815,1821 ****
while (fgets(buffer, 79, fp)) {
if ((p = strrchr(buffer, '\n')))
*p = '\0';
! if (strcmp(buffer, site + 1) != 0)
fprintf(fptmp, "%s\n", buffer);
}
fclose(fp);
--- 1815,1821 ----
while (fgets(buffer, 79, fp)) {
if ((p = strrchr(buffer, '\n')))
*p = '\0';
! if (strcasecmp(buffer, site + 1) != 0)
fprintf(fptmp, "%s\n", buffer);
}
fclose(fp);
*** 1_7_5.45/src/unparse.c Tue, 04 Sep 2001 09:41:50 -0500 dunemush (pennmush/b/28_unparse.c 1.16.1.3 660)
--- 1_7_5.63(w)/src/unparse.c Wed, 23 Jan 2002 10:24:31 -0600 dunemush (pennmush/b/28_unparse.c 1.16.1.4 660)
***************
*** 193,203 ****
unparse_dbref(num)
dbref num;
{
! static char str[16];
char *strp;
strp = str;
! safe_dbref_len(num, str, &strp, sizeof(str));
*strp = '\0';
return str;
}
--- 193,204 ----
unparse_dbref(num)
dbref num;
{
! /* Not BUFFER_LEN, but no dbref will come near this long */
! static char str[SBUF_LEN];
char *strp;
strp = str;
! safe_dbref(num, str, &strp);
*strp = '\0';
return str;
}
***************
*** 207,217 ****
unparse_integer(num)
int num;
{
! static char str[16];
char *strp;
strp = str;
! safe_integer_len(num, str, &strp, sizeof(str));
*strp = '\0';
return str;
}
--- 208,218 ----
unparse_integer(num)
int num;
{
! static char str[SBUF_LEN];
char *strp;
strp = str;
! safe_integer_sbuf(num, str, &strp);
*strp = '\0';
return str;
}
*** 1_7_5.45/src/switchinc.c Mon, 03 Dec 2001 10:28:03 -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.4 660)
--- 1_7_5.63(w)/src/switchinc.c Wed, 23 Jan 2002 10:24:31 -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.5 660)
***************
*** 1,516 ****
{
! "ACCESS", SWITCH_ACCESS
! }
! ,
! {
! "ADD", SWITCH_ADD
! }
! ,
! {
! "ALL", SWITCH_ALL
! }
! ,
! {
! "ATTRIBS", SWITCH_ATTRIBS
! }
! ,
! {
! "BAN", SWITCH_BAN
! }
! ,
! {
! "BLIND", SWITCH_BLIND
! }
! ,
! {
! "BRIEF", SWITCH_BRIEF
! }
! ,
! {
! "CHECK", SWITCH_CHECK
! }
! ,
! {
! "CHOWN", SWITCH_CHOWN
! }
! ,
! {
! "CLEAR", SWITCH_CLEAR
! }
! ,
! {
! "CMD", SWITCH_CMD
! }
! ,
! {
! "COMMANDS", SWITCH_COMMANDS
! }
! ,
! {
! "CONN", SWITCH_CONN
! }
! ,
! {
! "CONNECT", SWITCH_CONNECT
! }
! ,
! {
! "CONNECTED", SWITCH_CONNECTED
! }
! ,
! {
! "CONTENTS", SWITCH_CONTENTS
! }
! ,
! {
! "COSTS", SWITCH_COSTS
! }
! ,
! {
! "COUNT", SWITCH_COUNT
! }
! ,
! {
! "CREATE", SWITCH_CREATE
! }
! ,
! {
! "DATABASE", SWITCH_DATABASE
! }
! ,
! {
! "DB", SWITCH_DB
! }
! ,
! {
! "DEBUG", SWITCH_DEBUG
! }
! ,
! {
! "DECOMPILE", SWITCH_DECOMPILE
! }
! ,
! {
! "DEFAULTS", SWITCH_DEFAULTS
! }
! ,
! {
! "DELETE", SWITCH_DELETE
! }
! ,
! {
! "DELIMIT", SWITCH_DELIMIT
! }
! ,
! {
! "DESCRIBE", SWITCH_DESCRIBE
! }
! ,
! {
! "DESTROY", SWITCH_DESTROY
! }
! ,
! {
! "DISABLE", SWITCH_DISABLE
! }
! ,
! {
! "DOWN", SWITCH_DOWN
! }
! ,
! {
! "DSTATS", SWITCH_DSTATS
! }
! ,
! {
! "EMIT", SWITCH_EMIT
! }
! ,
! {
! "ENABLE", SWITCH_ENABLE
! }
! ,
! {
! "ERR", SWITCH_ERR
! }
! ,
! {
! "EXITS", SWITCH_EXITS
! }
! ,
! {
! "FILE", SWITCH_FILE
! }
! ,
! {
! "FIRST", SWITCH_FIRST
! }
! ,
! {
! "FLAGS", SWITCH_FLAGS
! }
! ,
! {
! "FOLDERS", SWITCH_FOLDERS
! }
! ,
! {
! "FORWARD", SWITCH_FORWARD
! }
! ,
! {
! "FSTATS", SWITCH_FSTATS
! }
! ,
! {
! "FULL", SWITCH_FULL
! }
! ,
! {
! "FUNCTIONS", SWITCH_FUNCTIONS
! }
! ,
! {
! "FWD", SWITCH_FWD
! }
! ,
! {
! "GAG", SWITCH_GAG
! }
! ,
! {
! "GLOBALS", SWITCH_GLOBALS
! }
! ,
! {
! "HEADER", SWITCH_HEADER
! }
! ,
! {
! "HERE", SWITCH_HERE
! }
! ,
! {
! "HIDE", SWITCH_HIDE
! }
! ,
! {
! "ILIST", SWITCH_ILIST
! }
! ,
! {
! "INVENTORY", SWITCH_INVENTORY
! }
! ,
! {
! "IPRINT", SWITCH_IPRINT
! }
! ,
! {
! "JOIN", SWITCH_JOIN
! }
! ,
! {
! "LIST", SWITCH_LIST
! }
! ,
! {
! "LOWERCASE", SWITCH_LOWERCASE
! }
! ,
! {
! "ME", SWITCH_ME
! }
! ,
! {
! "MEMBERS", SWITCH_MEMBERS
! }
! ,
! {
! "MOD", SWITCH_MOD
! }
! ,
! {
! "MORTAL", SWITCH_MORTAL
! }
! ,
! {
! "MOTD", SWITCH_MOTD
! }
! ,
! {
! "MUTE", SWITCH_MUTE
! }
! ,
! {
! "NAME", SWITCH_NAME
! }
! ,
! {
! "NO", SWITCH_NO
! }
! ,
! {
! "NOEVAL", SWITCH_NOEVAL
! }
! ,
! {
! "NOFLAGCOPY", SWITCH_NOFLAGCOPY
! }
! ,
! {
! "NOISY", SWITCH_NOISY
! }
! ,
! {
! "NOSIG", SWITCH_NOSIG
! }
! ,
! {
! "NOSPACE", SWITCH_NOSPACE
! }
! ,
! {
! "NOTIFY", SWITCH_NOTIFY
! }
! ,
! {
! "NUKE", SWITCH_NUKE
! }
! ,
! {
! "OFF", SWITCH_OFF
! }
! ,
! {
! "ON", SWITCH_ON
! }
! ,
! {
! "OUTSIDE", SWITCH_OUTSIDE
! }
! ,
! {
! "OVERRIDE", SWITCH_OVERRIDE
! }
! ,
! {
! "PANIC", SWITCH_PANIC
! }
! ,
! {
! "PARANOID", SWITCH_PARANOID
! }
! ,
! {
! "PLAYERS", SWITCH_PLAYERS
! }
! ,
! {
! "PORT", SWITCH_PORT
! }
! ,
! {
! "POSE", SWITCH_POSE
! }
! ,
! {
! "PRESERVE", SWITCH_PRESERVE
! }
! ,
! {
! "PRINT", SWITCH_PRINT
! }
! ,
! {
! "PRIVS", SWITCH_PRIVS
! }
! ,
! {
! "PURGE", SWITCH_PURGE
! }
! ,
! {
! "QUICK", SWITCH_QUICK
! }
! ,
! {
! "QUIET", SWITCH_QUIET
! }
! ,
! {
! "READ", SWITCH_READ
! }
! ,
! {
! "REBOOT", SWITCH_REBOOT
! }
! ,
! {
! "REGISTER", SWITCH_REGISTER
! }
! ,
! {
! "REMOVE", SWITCH_REMOVE
! }
! ,
! {
! "RENAME", SWITCH_RENAME
! }
! ,
! {
! "RESTORE", SWITCH_RESTORE
! }
! ,
! {
! "RESTRICT", SWITCH_RESTRICT
! }
! ,
! {
! "RETROACTIVE", SWITCH_RETROACTIVE
! }
! ,
! {
! "ROOM", SWITCH_ROOM
! }
! ,
! {
! "ROOMS", SWITCH_ROOMS
! }
! ,
! {
! "ROYALTY", SWITCH_ROYALTY
! }
! ,
! {
! "SEE", SWITCH_SEE
! }
! ,
! {
! "SEEFLAG", SWITCH_SEEFLAG
! }
! ,
! {
! "SELF", SWITCH_SELF
! }
! ,
! {
! "SEND", SWITCH_SEND
! }
! ,
! {
! "SET", SWITCH_SET
! }
! ,
! {
! "SILENT", SWITCH_SILENT
! }
! ,
! {
! "SKIPDEFAULTS", SWITCH_SKIPDEFAULTS
! }
! ,
! {
! "SPEAK", SWITCH_SPEAK
! }
! ,
! {
! "STATS", SWITCH_STATS
! }
! ,
! {
! "SUMMARY", SWITCH_SUMMARY
! }
! ,
! {
! "TABLES", SWITCH_TABLES
! }
! ,
! {
! "TAG", SWITCH_TAG
! }
! ,
! {
! "TELEPORT", SWITCH_TELEPORT
! }
! ,
! {
! "TF", SWITCH_TF
! }
! ,
! {
! "THINGS", SWITCH_THINGS
! }
! ,
! {
! "TITLE", SWITCH_TITLE
! }
! ,
! {
! "TRACE", SWITCH_TRACE
! }
! ,
! {
! "UNCLEAR", SWITCH_UNCLEAR
! }
! ,
! {
! "UNFOLDER", SWITCH_UNFOLDER
! }
! ,
! {
! "UNGAG", SWITCH_UNGAG
! }
! ,
! {
! "UNHIDE", SWITCH_UNHIDE
! }
! ,
! {
! "UNMUTE", SWITCH_UNMUTE
! }
! ,
! {
! "UNTAG", SWITCH_UNTAG
! }
! ,
! {
! "UNTIL", SWITCH_UNTIL
! }
! ,
! {
! "URGENT", SWITCH_URGENT
! }
! ,
! {
! "USEFLAG", SWITCH_USEFLAG
! }
! ,
! {
! "WHAT", SWITCH_WHAT
! }
! ,
! {
! "WHO", SWITCH_WHO
! }
! ,
! {
! "WIPE", SWITCH_WIPE
! }
! ,
! {
! "WIZ", SWITCH_WIZ
! }
! ,
! {
! "WIZARD", SWITCH_WIZARD
! }
! ,
! {
! "YES", SWITCH_YES
! }
! ,
! {
! "ZONE", SWITCH_ZONE
! }
,
--- 1,388 ----
{
! "ACCESS", SWITCH_ACCESS}
!
! , {
! "ADD", SWITCH_ADD}
!
! , {
! "ALL", SWITCH_ALL}
!
! , {
! "ATTRIBS", SWITCH_ATTRIBS}
!
! , {
! "BAN", SWITCH_BAN}
!
! , {
! "BLIND", SWITCH_BLIND}
!
! , {
! "BRIEF", SWITCH_BRIEF}
!
! , {
! "CHECK", SWITCH_CHECK}
!
! , {
! "CHOWN", SWITCH_CHOWN}
!
! , {
! "CLEAR", SWITCH_CLEAR}
!
! , {
! "CMD", SWITCH_CMD}
!
! , {
! "COMMANDS", SWITCH_COMMANDS}
!
! , {
! "CONN", SWITCH_CONN}
!
! , {
! "CONNECT", SWITCH_CONNECT}
!
! , {
! "CONNECTED", SWITCH_CONNECTED}
!
! , {
! "CONTENTS", SWITCH_CONTENTS}
!
! , {
! "COSTS", SWITCH_COSTS}
!
! , {
! "COUNT", SWITCH_COUNT}
!
! , {
! "CREATE", SWITCH_CREATE}
!
! , {
! "DATABASE", SWITCH_DATABASE}
!
! , {
! "DB", SWITCH_DB}
!
! , {
! "DEBUG", SWITCH_DEBUG}
!
! , {
! "DECOMPILE", SWITCH_DECOMPILE}
!
! , {
! "DEFAULTS", SWITCH_DEFAULTS}
!
! , {
! "DELETE", SWITCH_DELETE}
!
! , {
! "DELIMIT", SWITCH_DELIMIT}
!
! , {
! "DESCRIBE", SWITCH_DESCRIBE}
!
! , {
! "DESTROY", SWITCH_DESTROY}
!
! , {
! "DISABLE", SWITCH_DISABLE}
!
! , {
! "DOWN", SWITCH_DOWN}
!
! , {
! "DSTATS", SWITCH_DSTATS}
!
! , {
! "EMIT", SWITCH_EMIT}
!
! , {
! "ENABLE", SWITCH_ENABLE}
!
! , {
! "ERR", SWITCH_ERR}
!
! , {
! "EXITS", SWITCH_EXITS}
!
! , {
! "FILE", SWITCH_FILE}
!
! , {
! "FIRST", SWITCH_FIRST}
!
! , {
! "FLAGS", SWITCH_FLAGS}
!
! , {
! "FOLDERS", SWITCH_FOLDERS}
!
! , {
! "FORWARD", SWITCH_FORWARD}
!
! , {
! "FSTATS", SWITCH_FSTATS}
!
! , {
! "FULL", SWITCH_FULL}
!
! , {
! "FUNCTIONS", SWITCH_FUNCTIONS}
!
! , {
! "FWD", SWITCH_FWD}
!
! , {
! "GAG", SWITCH_GAG}
!
! , {
! "GLOBALS", SWITCH_GLOBALS}
!
! , {
! "HEADER", SWITCH_HEADER}
!
! , {
! "HERE", SWITCH_HERE}
!
! , {
! "HIDE", SWITCH_HIDE}
!
! , {
! "ILIST", SWITCH_ILIST}
!
! , {
! "INVENTORY", SWITCH_INVENTORY}
!
! , {
! "IPRINT", SWITCH_IPRINT}
!
! , {
! "JOIN", SWITCH_JOIN}
!
! , {
! "LIST", SWITCH_LIST}
!
! , {
! "LOWERCASE", SWITCH_LOWERCASE}
!
! , {
! "ME", SWITCH_ME}
!
! , {
! "MEMBERS", SWITCH_MEMBERS}
!
! , {
! "MOD", SWITCH_MOD}
!
! , {
! "MORTAL", SWITCH_MORTAL}
!
! , {
! "MOTD", SWITCH_MOTD}
!
! , {
! "MUTE", SWITCH_MUTE}
!
! , {
! "NAME", SWITCH_NAME}
!
! , {
! "NO", SWITCH_NO}
!
! , {
! "NOEVAL", SWITCH_NOEVAL}
!
! , {
! "NOFLAGCOPY", SWITCH_NOFLAGCOPY}
!
! , {
! "NOISY", SWITCH_NOISY}
!
! , {
! "NOSIG", SWITCH_NOSIG}
!
! , {
! "NOSPACE", SWITCH_NOSPACE}
!
! , {
! "NOTIFY", SWITCH_NOTIFY}
!
! , {
! "NUKE", SWITCH_NUKE}
!
! , {
! "OFF", SWITCH_OFF}
!
! , {
! "ON", SWITCH_ON}
!
! , {
! "OUTSIDE", SWITCH_OUTSIDE}
!
! , {
! "OVERRIDE", SWITCH_OVERRIDE}
!
! , {
! "PANIC", SWITCH_PANIC}
!
! , {
! "PARANOID", SWITCH_PARANOID}
!
! , {
! "PLAYERS", SWITCH_PLAYERS}
!
! , {
! "PORT", SWITCH_PORT}
!
! , {
! "POSE", SWITCH_POSE}
!
! , {
! "PRESERVE", SWITCH_PRESERVE}
!
! , {
! "PRINT", SWITCH_PRINT}
!
! , {
! "PRIVS", SWITCH_PRIVS}
!
! , {
! "PURGE", SWITCH_PURGE}
!
! , {
! "QUICK", SWITCH_QUICK}
!
! , {
! "QUIET", SWITCH_QUIET}
!
! , {
! "READ", SWITCH_READ}
!
! , {
! "REBOOT", SWITCH_REBOOT}
!
! , {
! "REGISTER", SWITCH_REGISTER}
!
! , {
! "REMOVE", SWITCH_REMOVE}
!
! , {
! "RENAME", SWITCH_RENAME}
!
! , {
! "RESTORE", SWITCH_RESTORE}
!
! , {
! "RESTRICT", SWITCH_RESTRICT}
!
! , {
! "RETROACTIVE", SWITCH_RETROACTIVE}
!
! , {
! "ROOM", SWITCH_ROOM}
!
! , {
! "ROOMS", SWITCH_ROOMS}
!
! , {
! "ROYALTY", SWITCH_ROYALTY}
!
! , {
! "SEE", SWITCH_SEE}
!
! , {
! "SEEFLAG", SWITCH_SEEFLAG}
!
! , {
! "SELF", SWITCH_SELF}
!
! , {
! "SEND", SWITCH_SEND}
!
! , {
! "SET", SWITCH_SET}
!
! , {
! "SILENT", SWITCH_SILENT}
!
! , {
! "SKIPDEFAULTS", SWITCH_SKIPDEFAULTS}
!
! , {
! "SPEAK", SWITCH_SPEAK}
!
! , {
! "STATS", SWITCH_STATS}
!
! , {
! "SUMMARY", SWITCH_SUMMARY}
!
! , {
! "TABLES", SWITCH_TABLES}
!
! , {
! "TAG", SWITCH_TAG}
!
! , {
! "TELEPORT", SWITCH_TELEPORT}
!
! , {
! "TF", SWITCH_TF}
!
! , {
! "THINGS", SWITCH_THINGS}
!
! , {
! "TITLE", SWITCH_TITLE}
!
! , {
! "TRACE", SWITCH_TRACE}
!
! , {
! "UNCLEAR", SWITCH_UNCLEAR}
!
! , {
! "UNFOLDER", SWITCH_UNFOLDER}
!
! , {
! "UNGAG", SWITCH_UNGAG}
!
! , {
! "UNHIDE", SWITCH_UNHIDE}
!
! , {
! "UNMUTE", SWITCH_UNMUTE}
!
! , {
! "UNTAG", SWITCH_UNTAG}
!
! , {
! "UNTIL", SWITCH_UNTIL}
!
! , {
! "URGENT", SWITCH_URGENT}
!
! , {
! "USEFLAG", SWITCH_USEFLAG}
!
! , {
! "WHAT", SWITCH_WHAT}
!
! , {
! "WHO", SWITCH_WHO}
!
! , {
! "WIPE", SWITCH_WIPE}
!
! , {
! "WIZ", SWITCH_WIZ}
!
! , {
! "WIZARD", SWITCH_WIZARD}
!
! , {
! "YES", SWITCH_YES}
!
! , {
! "ZONE", SWITCH_ZONE}
!
,
*** 1_7_5.45/src/strutil.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.9 660)
--- 1_7_5.63(w)/src/strutil.c Wed, 23 Jan 2002 10:24:31 -0600 dunemush (pennmush/b/33_strutil.c 1.28.1.3.1.3.1.11 660)
***************
*** 24,29 ****
--- 24,30 ----
#include "mymalloc.h"
#include "confmagic.h"
+ #include "log.h"
char *next_token _((char *str, char sep));
static int format_long _((long val, char *buff, char **bp, int maxlen));
***************
*** 182,188 ****
* string c to the end of buff, starting at *bp.
*/
#define APPEND_ARGS int len, blen, clen
! #define APPEND_TO_BUF(mlen) \
/* Trivial cases */ \
if (c[0] == '\0') \
return 0; \
--- 183,189 ----
* string c to the end of buff, starting at *bp.
*/
#define APPEND_ARGS int len, blen, clen
! #define APPEND_TO_BUF \
/* Trivial cases */ \
if (c[0] == '\0') \
return 0; \
***************
*** 191,202 ****
return safe_chr(c[0], buff, bp); \
len = strlen(c); \
blen = *bp - buff; \
! if (blen > (mlen)) \
return len; \
! if ((len + blen) <= (mlen)) \
clen = len; \
else \
! clen = (mlen) - blen; \
memcpy(*bp, c, clen); \
*bp += clen; \
return len - clen
--- 192,203 ----
return safe_chr(c[0], buff, bp); \
len = strlen(c); \
blen = *bp - buff; \
! if (blen > (BUFFER_LEN - 1)) \
return len; \
! if ((len + blen) <= (BUFFER_LEN - 1)) \
clen = len; \
else \
! clen = (BUFFER_LEN - 1) - blen; \
memcpy(*bp, c, clen); \
*bp += clen; \
return len - clen
***************
*** 223,245 ****
c[BUFFER_LEN - 1] = '\0';
va_end(args);
! APPEND_TO_BUF(BUFFER_LEN - 1);
}
int
! safe_integer_len(int i, char *buff, char **bp, int maxlen)
{
/* Adds a int to a string, being careful not to overflow buffer */
! return format_long(i, buff, bp, maxlen);
}
int
! safe_dbref_len(dbref d, char *buff, char **bp, int maxlen)
{
! /* Adds a dbref to a string, being careful not to overflow buffer */
! if (safe_chr('#', buff, bp))
return 1;
! return format_long(d, buff, bp, maxlen);
}
--- 224,261 ----
c[BUFFER_LEN - 1] = '\0';
va_end(args);
! APPEND_TO_BUF;
}
int
! safe_integer(int i, char *buff, char **bp)
{
/* Adds a int to a string, being careful not to overflow buffer */
! return format_long(i, buff, bp, BUFFER_LEN);
}
int
! safe_integer_sbuf(int i, char *buff, char **bp)
{
! /* Adds a int to a string, being careful not to overflow buffer */
! return format_long(i, buff, bp, SBUF_LEN);
! }
!
! int
! safe_dbref(dbref d, char *buff, char **bp)
! {
! /* Adds a dbref to a string, being careful not to overflow buffer and
! avoiding writing partial dbrefs */
! char *saved = *bp;
! if (safe_chr('#', buff, bp)) {
! *bp = saved;
return 1;
! }
! if (format_long(d, buff, bp, BUFFER_LEN)) {
! *bp = saved;
! return 1;
! }
! return 0;
}
***************
*** 251,300 ****
APPEND_ARGS;
c = unparse_number(n);
! APPEND_TO_BUF(BUFFER_LEN - 1);
}
- /* safe_chr and safe_str are essentially straight out of the 2.0 code,
- * but safe_chr now returns 1 on FAILURE, not success, to match safe_copy_str
- */
- #ifdef SAFE_CHR_FUNCTION
int
! safe_chr(char c, char *buf, char **bufp)
{
! /* adds a character to a string, being careful not to overflow buffer */
! if ((*bufp - buf >= BUFFER_LEN - 1))
! return 1;
! *(*bufp)++ = c;
! return 0;
}
- #endif
int
! safe_copy_str(c, buff, bp, maxlen)
! const char *c;
! char *buff;
! char **bp;
! int maxlen;
{
! /* copies a string into a buffer, making sure there's no overflow. */
! APPEND_ARGS;
! if (!c || !*c)
return 0;
! APPEND_TO_BUF(maxlen);
}
int
! safe_ansi_len(src, copylen, buff, bp, maxlen)
! const char *src;
! int copylen;
! char *buff;
! char **bp;
! int maxlen;
{
char tbuf[BUFFER_LEN];
char ansibuf[BUFFER_LEN], *ap = ansibuf;
--- 267,312 ----
APPEND_ARGS;
c = unparse_number(n);
! APPEND_TO_BUF;
}
int
! safe_str(const char *c, char *buff, char **bp)
{
! /* copies a string into a buffer, making sure there's no overflow. */
! APPEND_ARGS;
! if (!c || !*c)
! return 0;
! APPEND_TO_BUF;
}
int
! safe_strl(const char *s, int len, char *buff, char **bp)
{
! int blen, clen;
! if (!s || !*s)
return 0;
+ if (len == 1)
+ return safe_chr(*s, buff, bp);
! blen = *bp - buff;
! if (blen > BUFFER_LEN - 2)
! return len;
! if ((len + blen) <= BUFFER_LEN - 2)
! clen = len;
! else
! clen = BUFFER_LEN - 2 - blen;
! memcpy(*bp, s, clen);
! *bp += clen;
! return len - clen;
}
int
! safe_ansi(const char *src, int copylen, char *buff, char **bp)
{
char tbuf[BUFFER_LEN];
char ansibuf[BUFFER_LEN], *ap = ansibuf;
***************
*** 306,314 ****
len = ansi_align(tbuf, len);
if (len < BUFFER_LEN)
tbuf[len] = '\0';
! if (safe_copy_str(tbuf, buff, bp, maxlen))
return 1;
! return safe_copy_str(ansibuf, buff, bp, maxlen);
}
#undef APPEND_ARGS
--- 318,326 ----
len = ansi_align(tbuf, len);
if (len < BUFFER_LEN)
tbuf[len] = '\0';
! if (safe_str(tbuf, buff, bp))
return 1;
! return safe_str(ansibuf, buff, bp);
}
#undef APPEND_ARGS
***************
*** 667,672 ****
--- 679,688 ----
* This will someday take extra arguments for use with our version
* of snprintf. Please try not to use it.
*/
+ /* maxlen = total length of string.
+ buf[maxlen - 1] = place where \0 will go.
+ buf[maxlen - 2] = last visible character.
+ */
static int
format_long(long val, char *buff, char **bp, int maxlen)
{
***************
*** 719,725 ****
size = stack + sizeof(stack) - current;
! if (size <= (int) ((buff + maxlen - 1) - *bp)) {
switch (size % 8) {
case 0:
while (current < stack + sizeof(stack)) {
--- 735,742 ----
size = stack + sizeof(stack) - current;
! // if (size < (int) ((buff + maxlen - 1) - *bp)) {
! if (((int) (*bp - buff)) + size < maxlen - 2) {
switch (size % 8) {
case 0:
while (current < stack + sizeof(stack)) {
***************
*** 743,750 ****
} else {
while (current < stack + sizeof(stack)) {
if (*bp - buff >= maxlen - 1) {
! size = stack + sizeof(stack) - current;
! return size;
}
*((*bp)++) = *(current++);
}
--- 760,766 ----
} else {
while (current < stack + sizeof(stack)) {
if (*bp - buff >= maxlen - 1) {
! return 1;
}
*((*bp)++) = *(current++);
}
*** 1_7_5.45/src/parse.c Mon, 30 Jul 2001 13:14:13 -0500 dunemush (pennmush/b/48_parse.c 1.23.1.10 660)
--- 1_7_5.63(w)/src/parse.c Wed, 23 Jan 2002 10:24:31 -0600 dunemush (pennmush/b/48_parse.c 1.23.1.10.1.4 660)
***************
*** 486,492 ****
}
break;
case '%': /* Percent substitutions */
! if (!(eflags & PE_EVALUATE)) {
/* peak -- % escapes (at least) one character */
char savec;
--- 486,492 ----
}
break;
case '%': /* Percent substitutions */
! if (!(eflags & PE_EVALUATE) || (*bp - buff >= BUFFER_LEN - 1)) {
/* peak -- % escapes (at least) one character */
char savec;
***************
*** 497,502 ****
--- 497,518 ----
goto exit_sequence;
safe_chr(savec, buff, bp);
(*str)++;
+ switch (savec) {
+ case 'Q':
+ case 'q':
+ case 'V':
+ case 'v':
+ case 'W':
+ case 'w':
+ case 'X':
+ case 'x':
+ /* These sequences escape two characters */
+ savec = **str;
+ if (!savec)
+ goto exit_sequence;
+ safe_chr(savec, buff, bp);
+ (*str)++;
+ }
break;
} else {
char savec, nextc;
***************
*** 716,721 ****
--- 732,739 ----
} else {
char *sargs[10];
char **fargs;
+ int sarglens[10];
+ int *arglens;
int args_alloced;
int nfargs;
int j;
***************
*** 724,732 ****
FUN *fp;
int temp_tflags;
int denied;
fargs = sargs;
! for (j = 0; j < 10; j++)
fargs[j] = NULL;
args_alloced = 10;
eflags &= ~PE_FUNCTION_CHECK;
/* Get the function name */
--- 742,754 ----
FUN *fp;
int temp_tflags;
int denied;
+
fargs = sargs;
! arglens = sarglens;
! for (j = 0; j < 10; j++) {
fargs[j] = NULL;
+ arglens[j] = 0;
+ }
args_alloced = 10;
eflags &= ~PE_FUNCTION_CHECK;
/* Get the function name */
***************
*** 745,751 ****
PE_NOTHING, PT_PAREN, pe_info);
if (**str == ')')
(*str)++;
! goto exit_sequence;
}
safe_chr('(', buff, bp);
if (**str == ' ') {
--- 767,773 ----
PE_NOTHING, PT_PAREN, pe_info);
if (**str == ')')
(*str)++;
! break;
}
safe_chr('(', buff, bp);
if (**str == ' ') {
***************
*** 763,768 ****
--- 785,815 ----
break;
}
*bp = startpos;
+
+ /* Check for the invocation limit */
+ if ((pe_info->fun_invocations >= FUNCTION_LIMIT) ||
+ (global_fun_invocations >= FUNCTION_LIMIT * 5)) {
+ int e_len = strlen(e_invoke);
+ if ((buff + e_len > *bp) || strcmp(e_invoke, *bp - e_len))
+ safe_str(T(e_invoke), buff, bp);
+ process_expression(name, &tp, str,
+ executor, caller, enactor,
+ PE_NOTHING, PT_PAREN, pe_info);
+ if (**str == ')')
+ (*str)++;
+ break;
+ }
+ /* Check for the recursion limit */
+ if ((pe_info->fun_depth + 1 >= RECURSION_LIMIT) ||
+ (global_fun_recursions + 1 >= RECURSION_LIMIT * 5)) {
+ safe_str(T("#-1 FUNCTION RECURSION LIMIT EXCEEDED"), buff, bp);
+ process_expression(name, &tp, str,
+ executor, caller, enactor,
+ PE_NOTHING, PT_PAREN, pe_info);
+ if (**str == ')')
+ (*str)++;
+ break;
+ }
/* Get the arguments */
temp_eflags = (eflags & ~PE_FUNCTION_MANDATORY)
| PE_COMPRESS_SPACES | PE_EVALUATE | PE_FUNCTION_CHECK;
***************
*** 789,802 ****
temp_tflags = PT_PAREN;
if (nfargs >= args_alloced) {
char **nargs;
nargs = (char **) mush_malloc((nfargs + 10) * sizeof(char *),
"process_expression.function_arglist");
! for (j = 0; j < nfargs; j++)
nargs[j] = fargs[j];
if (fargs != sargs)
mush_free((Malloc_t) fargs,
"process_expression.function_arglist");
fargs = nargs;
args_alloced += 10;
}
fargs[nfargs] = (char *) mush_malloc(BUFFER_LEN,
--- 836,858 ----
temp_tflags = PT_PAREN;
if (nfargs >= args_alloced) {
char **nargs;
+ int *narglens;
nargs = (char **) mush_malloc((nfargs + 10) * sizeof(char *),
"process_expression.function_arglist");
! narglens = (int *) mush_malloc((nfargs + 10) * sizeof(int),
! "process_expression.function_arglens");
! for (j = 0; j < nfargs; j++) {
nargs[j] = fargs[j];
+ narglens[j] = arglens[j];
+ }
if (fargs != sargs)
mush_free((Malloc_t) fargs,
"process_expression.function_arglist");
+ if (arglens != sarglens)
+ mush_free((Malloc_t) arglens,
+ "process_expression.function_arglens");
fargs = nargs;
+ arglens = narglens;
args_alloced += 10;
}
fargs[nfargs] = (char *) mush_malloc(BUFFER_LEN,
***************
*** 806,817 ****
--- 862,876 ----
executor, caller, enactor,
temp_eflags, temp_tflags, pe_info);
*argp = '\0';
+ arglens[nfargs] = argp - fargs[nfargs];
(*str)++;
nfargs++;
} while ((*str)[-1] == ',');
if ((*str)[-1] != ')')
(*str)--;
/* See if this function is enabled */
+ /* Can't do this check earlier, because of possible side effects
+ * from the functions. Bah. */
if (denied) {
if (fp->flags & FN_DISABLED)
safe_str(T(e_disabled), buff, bp);
***************
*** 827,832 ****
--- 886,892 ----
mush_free((Malloc_t) fargs[0],
"process_expression.function_argument");
fargs[0] = NULL;
+ arglens[0] = 0;
nfargs = 0;
}
if ((nfargs < fp->minargs) || (nfargs > abs(fp->maxargs))) {
***************
*** 852,870 ****
} else {
global_fun_recursions++;
pe_info->fun_depth++;
! if ((pe_info->fun_invocations >= FUNCTION_LIMIT) ||
! (global_fun_invocations >= FUNCTION_LIMIT)) {
! int e_len = strlen(e_invoke);
! if ((buff + e_len > *bp) || strcmp(e_invoke, *bp - e_len))
! safe_str(T(e_invoke), buff, bp);
! } else if ((pe_info->fun_depth >= RECURSION_LIMIT) ||
! (global_fun_recursions >= RECURSION_LIMIT)) {
! safe_str(T("#-1 FUNCTION RECURSION LIMIT EXCEEDED"), buff, bp);
! } else if (fp->flags & FN_BUILTIN) {
global_fun_invocations++;
pe_info->fun_invocations++;
! fp->where.fun(buff, bp, nfargs, fargs, executor, caller, enactor,
! fp->name, pe_info);
} else {
dbref thing;
ATTR *attrib;
--- 912,922 ----
} else {
global_fun_recursions++;
pe_info->fun_depth++;
! if (fp->flags & FN_BUILTIN) {
global_fun_invocations++;
pe_info->fun_invocations++;
! fp->where.fun(buff, bp, nfargs, fargs, arglens, executor, caller,
! enactor, fp->name, pe_info);
} else {
dbref thing;
ATTR *attrib;
***************
*** 898,903 ****
--- 950,957 ----
"process_expression.function_argument");
if (fargs != sargs)
mush_free((Malloc_t) fargs, "process_expression.function_arglist");
+ if (arglens != sarglens)
+ mush_free((Malloc_t) arglens, "process_expression.function_arglens");
}
break;
/* Space compression */
*** 1_7_5.45/src/log.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/c/5_log.c 1.10.1.2.1.1 660)
--- 1_7_5.63(w)/src/log.c Wed, 23 Jan 2002 10:24:30 -0600 dunemush (pennmush/c/5_log.c 1.10.1.2.1.2 660)
***************
*** 11,19 ****
#include <stdarg.h>
#ifdef I_SYS_TIME
#include <sys/time.h>
- #else
- #include <time.h>
#endif
#ifdef I_SYS_TYPES
#include <sys/types.h>
#endif
--- 11,18 ----
#include <stdarg.h>
#ifdef I_SYS_TIME
#include <sys/time.h>
#endif
+ #include <time.h>
#ifdef I_SYS_TYPES
#include <sys/types.h>
#endif
***************
*** 130,136 ****
* log types are defined in log.h
*/
struct tm *ttm;
! char timebuf[16];
char tbuf1[BUFFER_LEN + 50];
va_list args;
FILE *f = NULL;
--- 129,135 ----
* log types are defined in log.h
*/
struct tm *ttm;
! char timebuf[18];
char tbuf1[BUFFER_LEN + 50];
va_list args;
FILE *f = NULL;
***************
*** 145,156 ****
va_end(args);
ttm = localtime(&mudtime);
! sprintf(timebuf, "%d%d/%d%d %d%d:%d%d:%d%d",
! (((ttm->tm_mon) + 1) / 10), (((ttm->tm_mon) + 1) % 10),
! (ttm->tm_mday / 10), (ttm->tm_mday % 10),
! (ttm->tm_hour / 10), (ttm->tm_hour % 10),
! (ttm->tm_min / 10), (ttm->tm_min % 10),
! (ttm->tm_sec / 10), (ttm->tm_sec % 10));
switch (logtype) {
case LT_ERR:
--- 144,151 ----
va_end(args);
ttm = localtime(&mudtime);
!
! strftime(timebuf, sizeof timebuf, "[%m/%d %H:%M:%S]", ttm);
switch (logtype) {
case LT_ERR:
***************
*** 178,184 ****
f = stderr;
break;
}
! fprintf(f, "%s %s\n", timebuf, tbuf1);
fflush(f);
}
--- 173,179 ----
f = stderr;
break;
}
! fprintf(f, "%s %s\n", timebuf, tbuf1);
fflush(f);
}
*** 1_7_5.45/src/info_slave.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/c/7_info_slave 1.9.1.3 660)
--- 1_7_5.63(w)/src/info_slave.c Wed, 23 Jan 2002 10:24:30 -0600 dunemush (pennmush/c/7_info_slave 1.9.1.4 660)
***************
*** 70,76 ****
#endif
int
! safe_copy_str(const char *c, char *buff, char **bp, int maxlen)
{
/* copies a string into a buffer, making sure there's no overflow. */
APPEND_ARGS;
--- 70,76 ----
#endif
int
! safe_str(const char *c, char *buff, char **bp)
{
/* copies a string into a buffer, making sure there's no overflow. */
APPEND_ARGS;
***************
*** 78,84 ****
if (!c || !*c)
return 0;
! APPEND_TO_BUF(maxlen);
}
#undef APPEND_ARGS
--- 78,84 ----
if (!c || !*c)
return 0;
! APPEND_TO_BUF(BUFFER_LEN);
}
#undef APPEND_ARGS
*** 1_7_5.45/src/ident.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/c/8_ident.c 1.19.1.4.1.4 660)
--- 1_7_5.63(w)/src/ident.c Wed, 23 Jan 2002 10:24:30 -0600 dunemush (pennmush/c/8_ident.c 1.19.1.4.1.5 660)
***************
*** 213,219 ****
--- 213,221 ----
fd_set rs, ws, es;
struct timeval to;
int res;
+ #ifndef WIN32
int tmperrno;
+ #endif
if ((id = (ident_t *) malloc(sizeof(*id))) == 0)
return 0;
*** 1_7_5.45/src/game.c Tue, 20 Nov 2001 17:08:09 -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.4 660)
--- 1_7_5.63(w)/src/game.c Wed, 23 Jan 2002 10:24:30 -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.2 660)
***************
*** 664,673 ****
do_rawlog(LT_ERR, T("MUSH restarted, PID %d, at %s"),
(int) getpid(), ctime(&start_time));
! /* initialize all the hash tables: flags, functions, and attributes. */
init_flag_hashtab();
init_func_hashtab();
init_math_hashtab();
init_aname_hashtab();
init_atr_name_tree();
init_locks();
--- 664,674 ----
do_rawlog(LT_ERR, T("MUSH restarted, PID %d, at %s"),
(int) getpid(), ctime(&start_time));
! /* initialize all the hash tables */
init_flag_hashtab();
init_func_hashtab();
init_math_hashtab();
+ init_tag_hashtab();
init_aname_hashtab();
init_atr_name_tree();
init_locks();
***************
*** 1910,1915 ****
--- 1911,1917 ----
extern HASHTAB htab_function;
extern HASHTAB htab_user_function;
extern HASHTAB htab_math;
+ extern HASHTAB htab_tag;
extern HASHTAB htab_player_list;
extern HASHTAB htab_reserved_aliases;
extern HASHTAB help_files;
***************
*** 1929,1934 ****
--- 1931,1937 ----
hash_stats(player, &htab_function, "Functions");
hash_stats(player, &htab_user_function, "@Functions");
hash_stats(player, &htab_math, "Math funs");
+ hash_stats(player, &htab_tag, "HTML tags");
hash_stats(player, &htab_player_list, "Players");
hash_stats(player, &htab_reserved_aliases, "Aliases");
hash_stats(player, &help_files, "HelpFiles");
*** 1_7_5.45/src/funstr.c Thu, 25 Oct 2001 15:04:15 -0500 dunemush (pennmush/c/13_funstr.c 1.28.1.1.1.2.1.4.1.6.1.1.1.1.1.3 660)
--- 1_7_5.63(w)/src/funstr.c Wed, 23 Jan 2002 10:24:30 -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.4 660)
***************
*** 18,23 ****
--- 18,24 ----
#include "flags.h"
#include "dbdefs.h"
#include "mushdb.h"
+ #include "htab.h"
#include "lock.h"
#include "confmagic.h"
***************
*** 25,30 ****
--- 26,33 ----
#pragma warning( disable : 4761) /* NJG: disable warning re conversion */
#endif
+ HASHTAB htab_tag;
+
static int wraplen _((char *str, int maxlen));
int
***************
*** 88,99 ****
char *p;
p = skip_leading_ansi(args[0]);
if (!p) {
! safe_str(args[0], buff, bp);
return;
} else if (p != args[0]) {
char x = *p;
*p = '\0';
! safe_str(args[0], buff, bp);
*p = x;
}
if (*p) {
--- 91,102 ----
char *p;
p = skip_leading_ansi(args[0]);
if (!p) {
! safe_strl(args[0], arglens[0], buff, bp);
return;
} else if (p != args[0]) {
char x = *p;
*p = '\0';
! safe_strl(args[0], arglens[0], buff, bp);
*p = x;
}
if (*p) {
***************
*** 191,197 ****
m = j;
}
}
! safe_str(args[m], buff, bp);
}
/* ARGSUSED */
--- 194,200 ----
m = j;
}
}
! safe_strl(args[m], arglens[m], buff, bp);
}
/* ARGSUSED */
***************
*** 211,217 ****
m = j;
}
}
! safe_str(args[m], buff, bp);
}
/* ARGSUSED */
--- 214,220 ----
m = j;
}
}
! safe_strl(args[m], arglens[m], buff, bp);
}
/* ARGSUSED */
***************
*** 283,289 ****
as = parse_ansi_string(args[0]);
if (len > as->len)
! safe_str(args[0], buff, bp);
else
safe_ansi_string(as, as->len - len, as->len, buff, bp);
free_ansi_string(as);
--- 286,292 ----
as = parse_ansi_string(args[0]);
if (len > as->len)
! safe_strl(args[0], arglens[0], buff, bp);
else
safe_ansi_string(as, as->len - len, as->len, buff, bp);
free_ansi_string(as);
***************
*** 311,324 ****
if (pos > as->len) {
/* Fast special case - concatenate args[2] to args[0] */
! safe_str(args[0], buff, bp);
! safe_str(args[2], buff, bp);
free_ansi_string(as);
return;
}
safe_ansi_string(as, 0, pos, buff, bp);
! safe_str(args[2], buff, bp);
safe_ansi_string(as, pos, as->len, buff, bp);
free_ansi_string(as);
--- 314,327 ----
if (pos > as->len) {
/* Fast special case - concatenate args[2] to args[0] */
! safe_strl(args[0], arglens[0], buff, bp);
! safe_strl(args[2], arglens[0], buff, bp);
free_ansi_string(as);
return;
}
safe_ansi_string(as, 0, pos, buff, bp);
! safe_strl(args[2], arglens[2], buff, bp);
safe_ansi_string(as, pos, as->len, buff, bp);
free_ansi_string(as);
***************
*** 347,353 ****
as = parse_ansi_string(args[0]);
if (pos > as->len || num <= 0) {
! safe_str(args[0], buff, bp);
free_ansi_string(as);
return;
}
--- 350,356 ----
as = parse_ansi_string(args[0]);
if (pos > as->len || num <= 0) {
! safe_strl(args[0], arglens[0], buff, bp);
free_ansi_string(as);
return;
}
***************
*** 410,416 ****
int j;
for (j = 0; j < nargs; j++)
! safe_str(args[j], buff, bp);
}
/* ARGSUSED */
--- 413,419 ----
int j;
for (j = 0; j < nargs; j++)
! safe_strl(args[j], arglens[j], buff, bp);
}
/* ARGSUSED */
***************
*** 538,548 ****
ap = args[0] + strlen(args[0]);
while (times) {
if (times & 1) {
! if (safe_str(args[0], buff, bp) != 0)
break;
}
safe_str(args[0], args[0], &ap);
*ap = '\0';
times = times >> 1;
}
}
--- 541,552 ----
ap = args[0] + strlen(args[0]);
while (times) {
if (times & 1) {
! if (safe_strl(args[0], arglens[0], buff, bp) != 0)
break;
}
safe_str(args[0], args[0], &ap);
*ap = '\0';
+ arglens[0] = strlen(args[0]);
times = times >> 1;
}
}
***************
*** 596,602 ****
if (!delim_check(buff, bp, nargs, args, 3, &sep))
return;
! safe_str(args[0], buff, bp);
for (; spaces > 0; spaces--)
safe_chr(sep, buff, bp);
}
--- 600,606 ----
if (!delim_check(buff, bp, nargs, args, 3, &sep))
return;
! safe_strl(args[0], arglens[0], buff, bp);
for (; spaces > 0; spaces--)
safe_chr(sep, buff, bp);
}
***************
*** 622,628 ****
for (; spaces > 0; spaces--)
safe_chr(sep, buff, bp);
! safe_str(args[0], buff, bp);
}
/* ARGSUSED */
--- 626,632 ----
for (; spaces > 0; spaces--)
safe_chr(sep, buff, bp);
! safe_strl(args[0], arglens[0], buff, bp);
}
/* ARGSUSED */
***************
*** 650,656 ****
for (; lsp > 0; lsp--)
safe_chr(sep, buff, bp);
! safe_str(args[0], buff, bp);
for (; rsp > 0; rsp--)
safe_chr(sep, buff, bp);
}
--- 654,660 ----
for (; lsp > 0; lsp--)
safe_chr(sep, buff, bp);
! safe_strl(args[0], arglens[0], buff, bp);
for (; rsp > 0; rsp--)
safe_chr(sep, buff, bp);
}
***************
*** 668,674 ****
char const *asave, *ap, *lp;
char cbuf[2];
char *tptr[2];
! char place[16];
int placenr = 0;
int funccount;
char *oldbp;
--- 672,678 ----
char const *asave, *ap, *lp;
char cbuf[2];
char *tptr[2];
! char place[SBUF_LEN];
int placenr = 0;
int funccount;
char *oldbp;
***************
*** 716,722 ****
}
oldbp = place;
placenr = (tmp + 1) - lp;
! safe_integer_len(placenr, place, &oldbp, sizeof(place));
oldbp = *bp;
*tmp = '\0';
--- 720,726 ----
}
oldbp = place;
placenr = (tmp + 1) - lp;
! safe_integer_sbuf(placenr, place, &oldbp);
oldbp = *bp;
*tmp = '\0';
***************
*** 736,742 ****
if (*bp == oldbp && pe_info->fun_invocations == funccount)
break;
oldbp = place;
! safe_integer_len(++placenr, place, &oldbp, sizeof(place));
*oldbp = '\0';
oldbp = *bp;
funccount = pe_info->fun_invocations;
--- 740,746 ----
if (*bp == oldbp && pe_info->fun_invocations == funccount)
break;
oldbp = place;
! safe_integer_sbuf(++placenr, place, &oldbp);
*oldbp = '\0';
oldbp = *bp;
funccount = pe_info->fun_invocations;
***************
*** 777,783 ****
}
p++;
}
! safe_str(args[0], buff, bp);
}
/* ARGSUSED */
--- 781,787 ----
}
p++;
}
! safe_strl(args[0], arglens[0], buff, bp);
}
/* ARGSUSED */
***************
*** 861,867 ****
}
/* Cut off the trailing stuff, if appropriate. */
if ((trim != 1) && (*p != '\0')) {
! q = args[0] + strlen(args[0]) - 1;
while ((q > p) && (*q == sep))
q--;
q[1] = '\0';
--- 865,871 ----
}
/* Cut off the trailing stuff, if appropriate. */
if ((trim != 1) && (*p != '\0')) {
! q = args[0] + arglens[0] - 1;
while ((q > p) && (*q == sep))
q--;
q[1] = '\0';
***************
*** 873,879 ****
FUNCTION(fun_lit)
{
/* Just returns the argument, literally */
! safe_str(args[0], buff, bp);
}
/* ARGSUSED */
--- 877,883 ----
FUNCTION(fun_lit)
{
/* Just returns the argument, literally */
! safe_strl(args[0], arglens[0], buff, bp);
}
/* ARGSUSED */
***************
*** 896,902 ****
/* get rid of trailing spaces first, so we don't have to worry about
* them later.
*/
! tp = args[0] + strlen(args[0]) - 1;
while ((tp > args[0]) && (*tp == sep))
tp--;
tp[1] = '\0';
--- 900,906 ----
/* get rid of trailing spaces first, so we don't have to worry about
* them later.
*/
! tp = args[0] + arglens[0] - 1;
while ((tp > args[0]) && (*tp == sep))
tp--;
tp[1] = '\0';
***************
*** 960,997 ****
safe_chr(BEEP_CHAR, buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_html)
{
! safe_tag(args[0], buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_tag)
{
int i;
! safe_chr(TAG_START, buff, bp);
! safe_str(args[0], buff, bp);
! for (i = 1; i < nargs; i++) {
! safe_chr(' ', buff, bp);
! safe_str(args[i], buff, bp);
}
- safe_chr(TAG_END, buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_endtag)
{
! safe_tag_cancel(args[0], buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_tagwrap)
{
! if (nargs == 2)
! safe_tag_wrap(args[0], NULL, args[1], buff, bp);
! else
! safe_tag_wrap(args[0], args[1], args[2], buff, bp);
}
#define COL_FLASH (1)
--- 964,1039 ----
safe_chr(BEEP_CHAR, buff, bp);
}
+ /* All the safe tags from HTML 4.0 */
+ void
+ init_tag_hashtab()
+ {
+ static char dummy = 1;
+ int i = 0;
+ static const char *safetags[] = { "A", "B", "I", "U", "STRONG", "EM",
+ "ADDRESS", "BLOCKQUOTE", "CENTER", "DEL", "DIV",
+ "H1", "H2", "H3", "H4", "H5", "H6", "HR", "INS",
+ "P", "PRE", "DIR", "DL", "DT", "DD", "LI", "MENU", "OL", "UL",
+ "TABLE", "CAPTION", "COLGROUP", "COL", "THEAD", "TFOOT",
+ "TBODY", "TR", "TD", "TH",
+ "BR", "FONT", "IMG", "SPAN", "SUB", "SUP",
+ "ABBR", "ACRONYM", "CITE", "CODE", "DFN", "KBD", "SAMP", "VAR",
+ "BIG", "S", "SMALL", "STRIKE", "TT",
+ NULL
+ };
+ hashinit(&htab_tag, 64, 1);
+ while (safetags[i]) {
+ hashadd(safetags[i], (void *) &dummy, &htab_tag);
+ i++;
+ }
+ }
+
/* ARGSUSED */
FUNCTION(fun_html)
{
! if (!Wizard(executor))
! safe_str(T(e_perm), buff, bp);
! else
! safe_tag(args[0], buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_tag)
{
int i;
! if (!Wizard(executor) && !hash_find(&htab_tag, strupper(args[0])))
! safe_str("#-1", buff, bp);
! else {
! safe_chr(TAG_START, buff, bp);
! safe_strl(args[0], arglens[0], buff, bp);
! for (i = 1; i < nargs; i++) {
! safe_chr(' ', buff, bp);
! safe_strl(args[i], arglens[i], buff, bp);
! }
! safe_chr(TAG_END, buff, bp);
}
}
/* ARGSUSED */
FUNCTION(fun_endtag)
{
! if (!Wizard(executor) && !hash_find(&htab_tag, strupper(args[0])))
! safe_str("#-1", buff, bp);
! else
! safe_tag_cancel(args[0], buff, bp);
}
/* ARGSUSED */
FUNCTION(fun_tagwrap)
{
! if (!Wizard(executor) && !hash_find(&htab_tag, strupper(args[0])))
! safe_str("#-1", buff, bp);
! else {
! if (nargs == 2)
! safe_tag_wrap(args[0], NULL, args[1], buff, bp);
! else
! safe_tag_wrap(args[0], args[1], args[2], buff, bp);
! }
}
#define COL_FLASH (1)
***************
*** 1225,1231 ****
char postbuf[BUFFER_LEN], *postp;
postp = postbuf;
! safe_str(args[0], postbuf, &postp);
*postp = '\0';
for (i = 1; i < nargs - 1; i += 2) {
/* Old postbuf is new prebuf */
--- 1267,1273 ----
char postbuf[BUFFER_LEN], *postp;
postp = postbuf;
! safe_strl(args[0], arglens[0], postbuf, &postp);
*postp = '\0';
for (i = 1; i < nargs - 1; i += 2) {
/* Old postbuf is new prebuf */
*** 1_7_5.45/src/funmisc.c Mon, 13 Aug 2001 19:51:56 -0500 dunemush (pennmush/c/14_funmisc.c 1.30 660)
--- 1_7_5.63(w)/src/funmisc.c Wed, 23 Jan 2002 10:24:30 -0600 dunemush (pennmush/c/14_funmisc.c 1.31 660)
***************
*** 159,165 ****
&& renv[qindex]) {
strcpy(renv[qindex], args[1]);
if (!strcmp(called_as, "SETR"))
! safe_str(args[1], buff, bp);
} else
safe_str(T("#-1 REGISTER OUT OF RANGE"), buff, bp);
}
--- 159,165 ----
&& renv[qindex]) {
strcpy(renv[qindex], args[1]);
if (!strcmp(called_as, "SETR"))
! safe_strl(args[1], arglens[1], buff, bp);
} else
safe_str(T("#-1 REGISTER OUT OF RANGE"), buff, bp);
}
*** 1_7_5.45/src/funmath.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/c/15_funmath.c 1.40 660)
--- 1_7_5.63(w)/src/funmath.c Wed, 23 Jan 2002 10:24:30 -0600 dunemush (pennmush/c/15_funmath.c 1.41 660)
***************
*** 1247,1257 ****
}
if (parse_number(args[0]) < parse_number(args[1]))
! safe_str(args[1], buff, bp);
else if (nargs == 3 && parse_number(args[0]) > parse_number(args[2]))
! safe_str(args[2], buff, bp);
else
! safe_str(args[0], buff, bp);
}
FUNCTION(fun_band)
--- 1247,1257 ----
}
if (parse_number(args[0]) < parse_number(args[1]))
! safe_strl(args[1], arglens[1], buff, bp);
else if (nargs == 3 && parse_number(args[0]) > parse_number(args[2]))
! safe_strl(args[2], arglens[2], buff, bp);
else
! safe_strl(args[0], arglens[0], buff, bp);
}
FUNCTION(fun_band)
*** 1_7_5.45/src/funlist.c Tue, 20 Nov 2001 17:08:09 -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.6 660)
--- 1_7_5.63(w)/src/funlist.c Wed, 23 Jan 2002 10:24:30 -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 660)
***************
*** 19,24 ****
--- 19,25 ----
#include "lock.h"
#include "confmagic.h"
+
#define ALPHANUM_LIST 0
#define NUMERIC_LIST 1
#define DBREF_LIST 2
***************
*** 357,362 ****
--- 358,364 ----
char *cp;
char *tptr[2];
char sep;
+ int funccount;
if (!delim_check(buff, bp, nargs, args, 4, &sep))
return;
***************
*** 397,402 ****
--- 399,405 ----
PE_DEFAULT, PT_DEFAULT, pe_info);
*rp = '\0';
strcpy(rsave, result);
+ funccount = pe_info->fun_invocations;
/* handle the rest of the cases */
while (cp && *cp) {
***************
*** 407,412 ****
--- 410,419 ----
process_expression(result, &rp, &ap, thing, executor, enactor,
PE_DEFAULT, PT_DEFAULT, pe_info);
*rp = '\0';
+ if (pe_info->fun_invocations >= FUNCTION_LIMIT &&
+ pe_info->fun_invocations == funccount && !strcmp(rsave, result))
+ break;
+ funccount = pe_info->fun_invocations;
strcpy(rsave, result);
}
safe_str(rsave, buff, bp);
***************
*** 1535,1544 ****
{
int i;
! safe_str(args[0], buff, bp);
for (i = 1; i < nargs; i++) {
safe_chr(' ', buff, bp);
! safe_str(args[i], buff, bp);
}
}
--- 1542,1551 ----
{
int i;
! safe_strl(args[0], arglens[0], buff, bp);
for (i = 1; i < nargs; i++) {
safe_chr(' ', buff, bp);
! safe_strl(args[i], arglens[i], buff, bp);
}
}
***************
*** 1851,1857 ****
p = strstr(args[0], args[1]);
if (p)
*p = '\0';
! safe_str(args[0], buff, bp);
}
/* ARGSUSED */
--- 1858,1864 ----
p = strstr(args[0], args[1]);
if (p)
*p = '\0';
! safe_strl(args[0], arglens[0], buff, bp);
}
/* ARGSUSED */
*** 1_7_5.45/src/function.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.10 660)
--- 1_7_5.63(w)/src/function.c Wed, 23 Jan 2002 10:24:30 -0600 dunemush (pennmush/c/18_function.c 1.29.1.14.1.3.1.11 660)
***************
*** 263,268 ****
--- 263,269 ----
{"IF", fun_if, 2, 3, FN_NOPARSE},
{"IFELSE", fun_if, 3, 3, FN_NOPARSE},
{"ILEV", fun_ilev, 0, 0, FN_REG},
+ {"INAME", fun_iname, 1, 1, FN_REG},
{"INC", fun_inc, 1, 1, FN_REG},
{"INDEX", fun_index, 4, 4, FN_REG},
{"INSERT", fun_insert, 3, 4, FN_REG},
*** 1_7_5.45/src/extmail.c Tue, 25 Sep 2001 16:27:49 -0500 dunemush (pennmush/c/22_extmail.c 1.44.1.6 660)
--- 1_7_5.63(w)/src/extmail.c Wed, 23 Jan 2002 10:24:30 -0600 dunemush (pennmush/c/22_extmail.c 1.44.1.8 660)
***************
*** 1855,1861 ****
count++;
}
! OUTPUT(fprintf(fp, "***END OF DUMP***\n"));
fflush(fp);
if (count != mdb_top) {
--- 1855,1861 ----
count++;
}
! OUTPUT(fputs(EOD, fp));
fflush(fp);
if (count != mdb_top) {
***************
*** 1974,1985 ****
if (!mail_top) {
/* mail_top could be 0 from an error or actually be 0. */
if (nbuf1[0] == '0' && nbuf1[1] == '\n') {
! char eodbuf[20];
! fgets(eodbuf, sizeof(eodbuf), fp);
! if (eodbuf && !strcmp(eodbuf, (mail_flags & MDBF_NEW_EOD)
! ? "***END OF DUMP***\n" : "*** END OF DUMP ***\n"))
return 1;
! do_rawlog(LT_ERR, T("MAIL: Trailing garbage in the mail database."));
}
return 0;
}
--- 1974,1989 ----
if (!mail_top) {
/* mail_top could be 0 from an error or actually be 0. */
if (nbuf1[0] == '0' && nbuf1[1] == '\n') {
! char buff[20];
! fgets(buff, sizeof buff, fp);
! if (!buff)
! do_rawlog(LT_ERR,
! T("MAIL: Missing end-of-dump marker in mail database."));
! else if (strcmp(buff, (mail_flags & MDBF_NEW_EOD)
! ? "***END OF DUMP***\n" : "*** END OF DUMP ***\n") == 0)
return 1;
! else
! do_rawlog(LT_ERR, T("MAIL: Trailing garbage in the mail database."));
}
return 0;
}
***************
*** 2068,2080 ****
mail_top, i);
}
{
! char eodbuf[20];
! fgets(eodbuf, sizeof(eodbuf), fp);
! if (!(eodbuf && !strcmp(eodbuf, (mail_flags & MDBF_NEW_EOD)
! ? "***END OF DUMP***\n" : "*** END OF DUMP ***\n"))) {
/* There's still stuff. Icky. */
do_rawlog(LT_ERR, T("MAIL: Trailing garbage in the mail database."));
- }
}
do_mail_debug(GOD, (char *) "fix", (char *) "");
--- 2072,2086 ----
mail_top, i);
}
{
! char buff[20];
! fgets(buff, sizeof buff, fp);
! if (!buff)
! do_rawlog(LT_ERR,
! T("MAIL: Missing end-of-dump marker in mail database."));
! else if (strcmp(buff, (mail_flags & MDBF_NEW_EOD)
! ? EOD : "*** END OF DUMP ***\n") != 0)
/* There's still stuff. Icky. */
do_rawlog(LT_ERR, T("MAIL: Trailing garbage in the mail database."));
}
do_mail_debug(GOD, (char *) "fix", (char *) "");
*** 1_7_5.45/src/extchat.c Mon, 03 Dec 2001 10:28:03 -0600 dunemush (pennmush/c/23_extchat.c 1.1.1.1.1.1.1.1.1.2.1.1.1.3.1.1.1.5.1.1.1.1.1.5.1.2.1.3.1.3.1.1.1.4.1.2.1.6.1.2.1.1.2.4.2.9.1.2.1.2.1.3.1.2.1.2.1.2 660)
--- 1_7_5.63(w)/src/extchat.c Wed, 23 Jan 2002 10:24:29 -0600 dunemush (pennmush/c/23_extchat.c 1.1.1.1.1.1.1.1.1.2.1.1.1.3.1.1.1.5.1.1.1.1.1.5.1.2.1.3.1.3.1.1.1.4.1.2.1.6.1.2.1.1.2.4.2.9.1.2.1.2.1.3.1.2.1.2.1.1.1.2 660)
***************
*** 155,160 ****
--- 155,161 ----
{
int i;
CHAN *ch;
+ char buff[20];
/* How many channels? */
num_channels = getref(fp);
***************
*** 176,182 ****
insert_channel(&ch);
}
num_channels = i;
! /* There may be an END OF DUMP line, but we ignore it */
return 1;
}
--- 177,189 ----
insert_channel(&ch);
}
num_channels = i;
!
! /* Check for **END OF DUMP*** */
! fgets(buff, sizeof buff, fp);
! if (!buff)
! do_rawlog(LT_ERR, T("CHAT: No end-of-dump marker in the chat database."));
! else if (strcmp(buff, EOD) != 0)
! do_rawlog(LT_ERR, T("CHAT: Trailing garbage in the chat database."));
return 1;
}
***************
*** 585,591 ****
for (ch = channels; ch; ch = ch->next) {
save_channel(fp, ch);
}
! OUTPUT(fputs("***END OF DUMP***\n", fp));
return 1;
}
--- 592,598 ----
for (ch = channels; ch; ch = ch->next) {
save_channel(fp, ch);
}
! OUTPUT(fputs(EOD, fp));
return 1;
}
*** 1_7_5.45/src/db.c Mon, 03 Dec 2001 10:28:03 -0600 dunemush (pennmush/c/25_db.c 1.31 660)
--- 1_7_5.63(w)/src/db.c Wed, 23 Jan 2002 10:24:29 -0600 dunemush (pennmush/c/25_db.c 1.26.1.1.1.1 660)
***************
*** 57,62 ****
--- 57,64 ----
dbref errobj;
+ const char *EOD = "***END OF DUMP***\n";
+
#ifndef DB_INITIAL_SIZE
#define DB_INITIAL_SIZE 5000
#endif /* DB_INITIAL_SIZE */
***************
*** 634,640 ****
OUTPUT(fprintf(f, "!%d\n", i));
db_write_object(f, i);
}
! OUTPUT(fputs("***END OF DUMP***\n", f));
/* fflush(f); */
return (db_top);
}
--- 636,642 ----
OUTPUT(fprintf(f, "!%d\n", i));
db_write_object(f, i);
}
! OUTPUT(fputs(EOD, f));
/* fflush(f); */
return (db_top);
}
***************
*** 792,798 ****
if (i % paranoid_checkpt == 0)
do_rawlog(LT_CHECK, T("\t...wrote up to object #%d\n"), i);
}
! OUTPUT(fputs("***END OF DUMP***\n", f));
do_rawlog(LT_CHECK, T("\t...finished at object #%d\n"), i - 1);
do_rawlog(LT_CHECK, "END OF PARANOID WRITE.\n");
return (db_top);
--- 794,800 ----
if (i % paranoid_checkpt == 0)
do_rawlog(LT_CHECK, T("\t...wrote up to object #%d\n"), i);
}
! OUTPUT(fputs(EOD, f));
do_rawlog(LT_CHECK, T("\t...finished at object #%d\n"), i - 1);
do_rawlog(LT_CHECK, "END OF PARANOID WRITE.\n");
return (db_top);
***************
*** 1383,1398 ****
break;
case '*':
! end = getstring_noalloc(f);
! if (!strcmp(end, "***END OF DUMP***")) {
! do_rawlog(LT_ERR, T("ERROR: No end of dump %d"), i);
! return -1;
! } else {
! do_rawlog(LT_ERR, "READING: done");
! loading_db = 0;
! fix_free_list();
! dbck();
! return db_top;
}
default:
do_rawlog(LT_ERR, T("ERROR: failed object %d"), i);
--- 1385,1404 ----
break;
case '*':
! {
! char buff[80];
! ungetc('*', f);
! fgets(buff, sizeof buff, f);
! if (strcmp(buff, EOD) != 0) {
! do_rawlog(LT_ERR, T("ERROR: No end of dump after object #%d"), i - 1);
! return -1;
! } else {
! do_rawlog(LT_ERR, "READING: done");
! loading_db = 0;
! fix_free_list();
! dbck();
! return db_top;
! }
}
default:
do_rawlog(LT_ERR, T("ERROR: failed object %d"), i);
*** 1_7_5.45/src/bsd.c Fri, 23 Nov 2001 18:36:56 -0600 dunemush (pennmush/c/38_bsd.c 1.58.1.11.1.2.1.5.1.7.1.14.1.13.1.9.1.4.1.2.1.12.1.1.1.1.1.2.1.1.1.13.1.1.1.1.1.1.1.8 660)
--- 1_7_5.63(w)/src/bsd.c Wed, 23 Jan 2002 10:24:29 -0600 dunemush (pennmush/c/38_bsd.c 1.58.1.11.1.2.1.5.1.7.1.14.1.13.1.9.1.4.1.2.1.12.1.1.1.1.1.2.1.1.1.13.1.1.1.1.1.1.1.1.1.3 660)
***************
*** 19,24 ****
--- 19,25 ----
#define EINTR WSAEINTR
#define EWOULDBLOCK WSAEWOULDBLOCK
#define MAXHOSTNAMELEN 32
+ #define LC_MESSAGES 6
void shutdown_checkpoint _((void));
#else /* WIN32 */
#ifdef I_SYS_FILE
***************
*** 1109,1114 ****
--- 1110,1116 ----
p++;
break;
case '\r':
+ case BEEP_CHAR:
break;
case ESC_CHAR:
while (*p && *p != 'm')
***************
*** 4949,4955 ****
else if (!Can_Idle(d->player)) {
! notify(d->player, T("\n*** Inactivity timeout ***\n"));
do_log(LT_CONN, 0, 0,
T("[%d/%s/%s] Logout by %s(#%d) <Inactivity Timeout>"),
d->descriptor, d->addr, d->ip, Name(d->player), d->player);
--- 4951,4957 ----
else if (!Can_Idle(d->player)) {
! queue_string(d, T("\n*** Inactivity timeout ***\n"));
do_log(LT_CONN, 0, 0,
T("[%d/%s/%s] Logout by %s(#%d) <Inactivity Timeout>"),
d->descriptor, d->addr, d->ip, Name(d->player), d->player);
***************
*** 4958,4966 ****
} else if (Unfind(d->player)) {
if ((Can_Hide(d->player)) && (!Hidden(d))) {
! notify(d->player,
! T
! ("\n*** Inactivity limit reached. You are now HIDDEN. ***\n"));
d->hide = 1;
}
}
--- 4960,4968 ----
} else if (Unfind(d->player)) {
if ((Can_Hide(d->player)) && (!Hidden(d))) {
! queue_string(d,
! T
! ("\n*** Inactivity limit reached. You are now HIDDEN. ***\n"));
d->hide = 1;
}
}
*** 1_7_5.45/src/boolexp.c Fri, 23 Nov 2001 18:31:24 -0600 dunemush (pennmush/c/39_boolexp.c 1.1.1.23 660)
--- 1_7_5.63(w)/src/boolexp.c Wed, 23 Jan 2002 10:24:29 -0600 dunemush (pennmush/c/39_boolexp.c 1.1.1.17.1.1 660)
***************
*** 275,285 ****
case BOOLEXP_OWNER:
return Owner(b->thing) == Owner(player);
case BOOLEXP_ATR:
! a = atr_complete_match(player, b->data.atr_lock->name, target);
! if (!a)
return 0;
strcpy(tbuf1, b->data.atr_lock->text);
! strcpy(tbuf2, (const char *) (a->value));
return local_wild_match(tbuf1, tbuf2);
case BOOLEXP_EVAL:
strcpy(tbuf1, b->data.atr_lock->text);
--- 275,285 ----
case BOOLEXP_OWNER:
return Owner(b->thing) == Owner(player);
case BOOLEXP_ATR:
! a = atr_get(player, b->data.atr_lock->name);
! if (!a || !Can_Read_Attr(target, player, a))
return 0;
strcpy(tbuf1, b->data.atr_lock->text);
! strcpy(tbuf2, uncompress(a->value));
return local_wild_match(tbuf1, tbuf2);
case BOOLEXP_EVAL:
strcpy(tbuf1, b->data.atr_lock->text);
*** 1_7_5.45/src/attrib.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/c/40_attrib.c 1.15.1.2.1.5.1.1.1.3.1.3.1.2.1.2.1.2.2.1.1.2.1.2.1.4 660)
--- 1_7_5.63(w)/src/attrib.c Wed, 23 Jan 2002 10:24:29 -0600 dunemush (pennmush/c/40_attrib.c 1.15.1.2.1.5.1.1.1.3.1.3.1.2.1.2.1.2.2.1.1.2.1.2.1.2.1.1 660)
***************
*** 514,519 ****
--- 514,521 ----
return result;
}
+ #ifdef NEVER
+ /* Old code that we don't use any more */
ATTR *
atr_complete_match(player, atr, privs)
dbref player;
***************
*** 534,539 ****
--- 536,542 ----
return NULL;
}
+ #endif
void
atr_free(thing)
*** 1_7_5.45/src/access.c Thu, 31 May 2001 11:19:20 -0500 dunemush (pennmush/c/43_access.c 1.11.1.2 660)
--- 1_7_5.63(w)/src/access.c Wed, 23 Jan 2002 10:24:29 -0600 dunemush (pennmush/c/43_access.c 1.11.1.3 660)
***************
*** 197,202 ****
--- 197,203 ----
do_log(LT_ERR, GOD, GOD, T("No %s file found."), ACCESS_FILE);
retval = 0;
} else {
+ do_rawlog(LT_ERR, "Reading %s", ACCESS_FILE);
fgets(buf, BUFFER_LEN, fp);
while (!feof(fp)) {
/* Strip newline */
*** 1_7_5.45/hdrs/version.h Mon, 03 Dec 2001 10:28:03 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.5 660)
--- 1_7_5.63(w)/hdrs/version.h Wed, 23 Jan 2002 10:24:32 -0600 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.5 660)
***************
*** 1,2 ****
! #define VERSION "PennMUSH version 1.7.5 patchlevel 1 [12/03/2001]"
! #define SHORTVN "PennMUSH 1.7.5p1"
--- 1,2 ----
! #define VERSION "PennMUSH version 1.7.5 patchlevel 2 [01/23/2002]"
! #define SHORTVN "PennMUSH 1.7.5p2"
*** 1_7_5.45/hdrs/parse.h Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/c/51_parse.h 1.11 660)
--- 1_7_5.63(w)/hdrs/parse.h Wed, 23 Jan 2002 10:24:32 -0600 dunemush (pennmush/c/51_parse.h 1.12 660)
***************
*** 82,93 ****
#define FUNCTION(fun_name) \
/* ARGSUSED */ /* try to keep lint happy */ \
void fun_name (char *buff, char **bp, int nargs, char *args[], \
! dbref executor, dbref caller, dbref enactor, \
char const *called_as, PE_Info *pe_info); \
void fun_name(char *buff __attribute__ ((__unused__)), \
char **bp __attribute__ ((__unused__)), \
int nargs __attribute__ ((__unused__)), \
char *args[] __attribute__ ((__unused__)), \
dbref executor __attribute__ ((__unused__)), \
dbref caller __attribute__ ((__unused__)), \
dbref enactor __attribute__ ((__unused__)), \
--- 82,94 ----
#define FUNCTION(fun_name) \
/* ARGSUSED */ /* try to keep lint happy */ \
void fun_name (char *buff, char **bp, int nargs, char *args[], \
! int arglens[], dbref executor, dbref caller, dbref enactor, \
char const *called_as, PE_Info *pe_info); \
void fun_name(char *buff __attribute__ ((__unused__)), \
char **bp __attribute__ ((__unused__)), \
int nargs __attribute__ ((__unused__)), \
char *args[] __attribute__ ((__unused__)), \
+ int arglens[] __attribute__ ((__unused__)), \
dbref executor __attribute__ ((__unused__)), \
dbref caller __attribute__ ((__unused__)), \
dbref enactor __attribute__ ((__unused__)), \
*** 1_7_5.45/hdrs/game.h Thu, 22 Nov 2001 15:42:40 -0600 dunemush (pennmush/d/12_game.h 1.28.1.2.1.3 660)
--- 1_7_5.63(w)/hdrs/game.h Wed, 23 Jan 2002 10:24:32 -0600 dunemush (pennmush/d/12_game.h 1.28.1.2.1.1.1.1.1.2 660)
***************
*** 17,22 ****
--- 17,23 ----
extern void init_math_hashtab _((void)); /* funmath.c */
extern void init_aname_hashtab _((void)); /* atr_tab.c */
extern void init_flag_hashtab _((void)); /* flags.c */
+ extern void init_tag_hashtab _((void)); /* funstr.c */
/* From bsd.c */
extern void fcache_init _((void));
*** 1_7_5.45/hdrs/function.h Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/d/13_function.h 1.13 660)
--- 1_7_5.63(w)/hdrs/function.h Wed, 23 Jan 2002 10:24:32 -0600 dunemush (pennmush/d/13_function.h 1.14 660)
***************
*** 33,40 ****
typedef struct fun FUN;
! typedef void (*function_func) (char *, char **, int, char *[], dbref, dbref,
! dbref, const char *, PE_Info *);
union fun_call {
function_func fun;
--- 33,40 ----
typedef struct fun FUN;
! typedef void (*function_func) (char *, char **, int, char *[], int[], dbref,
! dbref, dbref, const char *, PE_Info *);
union fun_call {
function_func fun;
***************
*** 85,91 ****
#define FUNCTION_PROTO(fun_name) \
extern void fun_name (char *buff, char **bp, int nargs, char *args[], \
! dbref executor, dbref caller, dbref enactor, \
char const *called_as, PE_Info *pe_info)
extern void function_add(const char *name, function_func fun, int minargs,
int maxargs, int ftype);
--- 85,91 ----
#define FUNCTION_PROTO(fun_name) \
extern void fun_name (char *buff, char **bp, int nargs, char *args[], \
! int arglen[], dbref executor, dbref caller, dbref enactor, \
char const *called_as, PE_Info *pe_info)
extern void function_add(const char *name, function_func fun, int minargs,
int maxargs, int ftype);
*** 1_7_5.45/hdrs/externs.h Fri, 23 Nov 2001 18:31:24 -0600 dunemush (pennmush/d/16_externs.h 1.1.1.53.1.2.1.13 660)
--- 1_7_5.63(w)/hdrs/externs.h Wed, 23 Jan 2002 10:24:32 -0600 dunemush (pennmush/d/16_externs.h 1.1.1.53.1.2.1.14 660)
***************
*** 53,62 ****
extern void do_doing _((dbref player, const char *message));
/* the following symbols are provided by game.c */
-
-
-
- #define SBUF_LEN 32
#define DOING_LEN 40
extern void process_command _((dbref player, char *command,
--- 53,58 ----
***************
*** 316,358 ****
extern int strncasecoll _((const char *s1, const char *s2, Size_t t));
/* Append a character to the end of a BUFFER_LEN long string.
! * Two versions here - one an inline macro, the other a function.
! * #define SAFE_CHR_FUNCTION to use the function form.
! * You shouldn't use arguments with side effects in the
! * macro form */
! #ifndef SAFE_CHR_FUNCTION
#define safe_chr(x, buf, bp) \
((*(bp) - (buf) >= BUFFER_LEN - 1) ? \
1 : (*(*(bp))++ = (x), 0))
- #else
- extern int safe_chr _((char c, char *buf, char **bufp));
- #endif
/* Like sprintf */
! extern int safe_format _((char *buff, char **bp, const char *fmt, ...))
__attribute__ ((__format__(__printf__, 3, 4)));
! /* Append an int to the end of a string */
! #define safe_integer(i, buf, bufp) \
! safe_integer_len((i), (buf), (bufp), BUFFER_LEN)
! /* Append an int to a string with a max length of maxlen */
! extern int safe_integer_len _((int i, char *buff, char **bp, int maxlen));
/* Append a NVAL to a string */
! extern int safe_number _((NVAL n, char *buff, char **bp));
! /* Append a dbref to a string */
! #define safe_dbref(d, buf, bufp) \
! safe_dbref_len((d), (buf), (bufp), BUFFER_LEN)
! /* Append a dbref to a string with a max length of maxlen */
! extern int safe_dbref_len _((dbref d, char *buff, char **bp, int maxlen));
! /* Append a string to the end of another string */
! extern int safe_copy_str _((const char *c, char *buff, char **bp, int maxlen));
/* Append a boolean to the end of a string */
#define safe_boolean(x, buf, bufp) \
safe_chr((x) ? '1' : '0', (buf), (bufp))
/* Append X characters to the end of a string, taking ansi and html codes into
account. */
! extern int safe_ansi_len
! _((const char *src, int copylen, char *buff, char **bp, int maxlen));
! #define safe_ansi(src, copylen, buff, bp) \
! safe_ansi_len((src), (copylen), (buff), (bp), BUFFER_LEN)
extern char *replace_string
_((const char *old, const char *newbit, const char *string));
extern char *trim_space_sep _((char *str, char sep));
--- 312,344 ----
extern int strncasecoll _((const char *s1, const char *s2, Size_t t));
/* Append a character to the end of a BUFFER_LEN long string.
! * You shouldn't use arguments with side effects with this macro.
! */
#define safe_chr(x, buf, bp) \
((*(bp) - (buf) >= BUFFER_LEN - 1) ? \
1 : (*(*(bp))++ = (x), 0))
/* Like sprintf */
! extern int safe_format(char *buff, char **bp, const char *fmt, ...)
__attribute__ ((__format__(__printf__, 3, 4)));
! /* Append an int to the end of a buffer */
! extern int safe_integer(int i, char *buff, char **bp);
! /* Same, but for a SBUF_LEN buffer, not BUFFER_LEN */
! #define SBUF_LEN 64
! extern int safe_integer_sbuf(int i, char *buff, char **bp);
/* Append a NVAL to a string */
! extern int safe_number(NVAL n, char *buff, char **bp);
! /* Append a dbref to a buffer */
! extern int safe_dbref(dbref d, char *buff, char **bp);
! /* Append a string to a buffer */
! extern int safe_str(const char *s, char *buff, char **bp);
! /* Append len characters of a string to a buffer */
! extern int safe_strl(const char *s, int len, char *buff, char **bp);
/* Append a boolean to the end of a string */
#define safe_boolean(x, buf, bufp) \
safe_chr((x) ? '1' : '0', (buf), (bufp))
/* Append X characters to the end of a string, taking ansi and html codes into
account. */
! extern int safe_ansi(const char *src, int copylen, char *buff, char **bp);
extern char *replace_string
_((const char *old, const char *newbit, const char *string));
extern char *trim_space_sep _((char *str, char sep));
***************
*** 361,368 ****
extern char *remove_word _((char *list, char *word, char sep));
extern char *next_in_list _((char **head));
- #define safe_str(s,b,p) safe_copy_str(s,b,p,BUFFER_LEN - 1)
- #define safe_short_str(s,b,p) safe_copy_str(s,b,p,SBUF_LEN - 1)
extern int ansi_strlen _((char *string));
extern int ansi_strnlen _((char *string, unsigned int numchars));
--- 347,352 ----
*** 1_7_5.45/hdrs/dbdefs.h Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/d/18_dbdefs.h 1.1.1.1.1.1.1.1.1.1.1.2.1.2 660)
--- 1_7_5.63(w)/hdrs/dbdefs.h Wed, 23 Jan 2002 10:24:32 -0600 dunemush (pennmush/d/18_dbdefs.h 1.1.1.1.1.1.1.1.1.1.1.2.2.2 660)
***************
*** 310,313 ****
--- 310,315 ----
#endif /* USE_MAILER */
+ extern const char *EOD;
+
#endif /* __DBDEFS_H */
*** 1_7_5.45/Makefile.SH Tue, 13 Nov 2001 17:37:52 -0600 dunemush (pennmush/d/30_Makefile.S 1.14.1.1.1.2 700)
--- 1_7_5.63(w)/Makefile.SH Thu, 13 Dec 2001 20:18:27 -0600 dunemush (pennmush/d/30_Makefile.S 1.14.1.1.1.3 700)
***************
*** 210,215 ****
--- 210,216 ----
gzip /tmp/dist.tar
dist.tar: distclean versions
+ -rm -f hdrs/timestamp
(cd utils; sh mkcmds.sh)
makedist -c pennmush
tar -cvf /tmp/dist.tar pennmush
*** 1_7_5.45/src/mysocket.c Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/f/0_mysocket.c 1.16.1.1.1.1.1.1.1.4.1.7 660)
--- 1_7_5.63(w)/src/mysocket.c Wed, 23 Jan 2002 10:24:31 -0600 dunemush (pennmush/f/0_mysocket.c 1.16.1.1.1.1.1.1.1.4.1.9 660)
***************
*** 16,21 ****
--- 16,24 ----
#endif
#ifdef I_NETINET_IN
+ #ifdef WIN32
+ #undef EINTR
+ #endif
#include <netinet/in.h>
#else
#ifdef I_SYS_IN
***************
*** 596,604 ****
* SOFTWARE.
*/
- #if defined(LIBC_SCCS) && !defined(lint)
- static char rcsid[] = "$Id$";
- #endif /* LIBC_SCCS and not lint */
/*
* WARNING: Don't even consider trying to compile this on a system where
--- 599,604 ----
*** 1_7_5.45/win32/config.h Tue, 20 Nov 2001 17:08:09 -0600 dunemush (pennmush/f/14_config.h 1.3 600)
--- 1_7_5.63(w)/win32/config.h Sat, 08 Dec 2001 00:02:03 -0600 dunemush (pennmush/f/14_config.h 1.4 600)
***************
*** 140,146 ****
* This symbol, if defined, indicates that the strcasecmp() routine is
* available for case-insensitive string compares.
*/
! #define HAS_STRCASECMP /**/
/* HAS_STRDUP:
* This symbol, if defined, indicates that the strdup routine is
--- 140,146 ----
* This symbol, if defined, indicates that the strcasecmp() routine is
* available for case-insensitive string compares.
*/
! /* #define HAS_STRCASECMP /**/
/* HAS_STRDUP:
* This symbol, if defined, indicates that the strdup routine is
***************
*** 484,490 ****
* This symbol, if defined, indicates that the getnameinfo() routine is
* available to lookup host names in some data base or other.
*/
! #define HAS_GETNAMEINFO /**/
/* HAS_GETPAGESIZE:
* This symbol, if defined, indicates that the getpagesize system call
--- 484,490 ----
* This symbol, if defined, indicates that the getnameinfo() routine is
* available to lookup host names in some data base or other.
*/
! /* #define HAS_GETNAMEINFO /**/
/* HAS_GETPAGESIZE:
* This symbol, if defined, indicates that the getpagesize system call
***************
*** 714,720 ****
* available to printf with a pointer to an argument list. If not, you
* may need to write your own, probably in terms of _doprnt().
*/
! #define HAS_VSNPRINTF /**/
/* I_ARPA_NAMESER:
* This symbol, if defined, indicates to the C program that it should
--- 714,720 ----
* available to printf with a pointer to an argument list. If not, you
* may need to write your own, probably in terms of _doprnt().
*/
! /* #define HAS_VSNPRINTF /**/
/* I_ARPA_NAMESER:
* This symbol, if defined, indicates to the C program that it should