This is patch13 to PennMUSH 1.7.6. After applying this patch, you will have version 1.7.6p13 To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p1 < 1.7.6-patch13 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. On the off chance they appear not to be, simply rm them and re-run make. Then @shutdown and restart your MUSH. - Alan/Javelin In this patch: Fixes: * Calling panic() while in the middle of a panic dump would cause a loop. Reported by [EEH]. [SW] * Outdated mention of compose.csh removed from compose.sh.SH. Reported by Cheetah@M*U*S*H. * timestring() dealt wrongly with large arguments. Reported by Jules@M*U*S*H. timefmt() had a similar problem, reported by Luke@M*U*S*H. * Better checking of db save failures. [SW] Prereq: 1.7.6p12 *** 1_7_6.168/Patchlevel Mon, 23 Jun 2003 11:08:49 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.1.1.12 600) --- 1_7_6.173(w)/Patchlevel Mon, 11 Aug 2003 16:40:29 -0500 dunemush (pennmush/5_Patchlevel 1.17.1.11.1.1.1.13 600) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.6p12 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.6p13 *** 1_7_6.168/CHANGES.176 Mon, 23 Jun 2003 21:42:51 -0500 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.1.9.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1 600) --- 1_7_6.173(w)/CHANGES.176 Thu, 14 Aug 2003 09:44:31 -0500 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.1.9.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.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) *************** *** 18,23 **** --- 18,36 ---- ========================================================================== + Version 1.7.6 patchlevel 13 August 11, 2003 + + Fixes: + * Calling panic() while in the middle of a panic dump would cause a loop. + Reported by [EEH]. [SW] + * Outdated mention of compose.csh removed from compose.sh.SH. + Reported by Cheetah@M*U*S*H. + * timestring() dealt wrongly with large arguments. Reported by + Jules@M*U*S*H. timefmt() had a similar problem, reported by + Luke@M*U*S*H. + * Better checking of db save failures. [SW] + + Version 1.7.6 patchlevel 12 June 23, 2003 Minor changes: *** 1_7_6.168/game/txt/hlp/pennvOLD.hlp Tue, 17 Jun 2003 14:15:47 -0500 dunemush (pennmush/g/30_pennvOLD.h 1.1.1.1.1.1.1.1.1.1 660) --- 1_7_6.173(w)/game/txt/hlp/pennvOLD.hlp Thu, 14 Aug 2003 09:44:35 -0500 dunemush (pennmush/g/30_pennvOLD.h 1.1.1.1.1.1.1.1.1.1.1.1 660) *************** *** 4417,4423 **** For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' ! 1.7.6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 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, 19, 20 --- 4417,4423 ---- For information on a specific patchlevel of one of the versions listed, type 'help p'. For example, 'help 1.7.2p3' ! 1.7.6: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 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, 19, 20 *** 1_7_6.168/game/txt/hlp/pennv176.hlp Mon, 23 Jun 2003 21:42:51 -0500 dunemush (pennmush/g/33_pennv176.h 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1 660) --- 1_7_6.173(w)/game/txt/hlp/pennv176.hlp Thu, 14 Aug 2003 09:44:35 -0500 dunemush (pennmush/g/33_pennv176.h 1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.1.1.1.1.1.1.1.1.1.2.1.1.1.1 660) *************** *** 1,4 **** ! & 1.7.6p12 & changes This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions --- 1,4 ---- ! & 1.7.6p13 & changes This is a list of changes in this patchlevel which are probably of interest to players. More information about new commands and functions *************** *** 11,16 **** --- 11,30 ---- A list of the patchlevels associated with each release can be read in 'help patchlevels'. + Version 1.7.6 patchlevel 13 August 11, 2003 + + Fixes: + * Calling panic() while in the middle of a panic dump would cause a loop. + Reported by [EEH]. [SW] + * Outdated mention of compose.csh removed from compose.sh.SH. + Reported by Cheetah@M*U*S*H. + * timestring() dealt wrongly with large arguments. Reported by + Jules@M*U*S*H. timefmt() had a similar problem, reported by + Luke@M*U*S*H. + * Better checking of db save failures. [SW] + + + & 1.7.6p12 Version 1.7.6 patchlevel 12 June 23, 2003 Minor changes: *** 1_7_6.168/game/txt/compose.sh.SH Thu, 29 Aug 2002 23:08:19 -0500 dunemush (pennmush/33_compose.sh 1.4 700) --- 1_7_6.173(w)/game/txt/compose.sh.SH Sat, 19 Jul 2003 09:30:43 -0500 dunemush (pennmush/33_compose.sh 1.5 700) *************** *** 51,57 **** # What subdirectories should we be processing? dir=$1 if $test ! -d $dir; then ! $echo "Usage: compose.csh " exit 0 fi --- 51,57 ---- # What subdirectories should we be processing? dir=$1 if $test ! -d $dir; then ! $echo "Usage: compose.sh " exit 0 fi *** 1_7_6.168/utils/mkcmds.sh.SH Sun, 22 Dec 2002 01:03:36 -0600 dunemush (pennmush/g/16_mkcmds.sh. 1.3 750) --- 1_7_6.173(w)/utils/mkcmds.sh.SH Tue, 24 Jun 2003 15:05:28 -0500 dunemush (pennmush/g/16_mkcmds.sh. 1.3.1.1 750) *************** *** 101,107 **** $echo "," >> ../src/temp.c snum=`expr $snum + 1` done ! $echo "{NULL, 0}" >> ../src/temp.c $echo "};" >> ../src/temp.c # NUM_BYTES from command.h * 8. --- 101,107 ---- $echo "," >> ../src/temp.c snum=`expr $snum + 1` done ! $echo " {NULL, 0}" >> ../src/temp.c $echo "};" >> ../src/temp.c # NUM_BYTES from command.h * 8. *** 1_7_6.168/src/game.c Tue, 13 May 2003 12:32:06 -0500 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.2.1.1.1.1.1.1.1.1 660) --- 1_7_6.173(w)/src/game.c Sun, 17 Aug 2003 16:00:59 -0500 dunemush (pennmush/c/10_game.c 1.50.1.8.1.1.1.1.2.1.1.1.2.1.1.4.1.1.1.1.1.1.1.1.1.1.2.1.1.2.1.1.1.1.1.1.1.2.1.1.1.2.1.1.1.1.1.1.1.1.1.5.1.3.1.2.1.2.1.1.1.1.1.1.1.1.1.1 660) *************** *** 420,431 **** } void ! panic(message) ! const char *message; { const char *panicfile = options.crash_db; FILE *f = NULL; do_rawlog(LT_ERR, "PANIC: %s", message); report(); flag_broadcast(0, 0, "EMERGENCY SHUTDOWN: %s", message); --- 420,440 ---- } void ! panic(const char *message) { const char *panicfile = options.crash_db; FILE *f = NULL; + static int already_panicking = 0; + if (already_panicking) { + do_rawlog(LT_ERR, + T + ("PANIC: Attempted to panic because of '%s' while already panicking. Run in circles, scream and shout!"), + message); + _exit(133); + } + + already_panicking = 1; do_rawlog(LT_ERR, "PANIC: %s", message); report(); flag_broadcast(0, 0, "EMERGENCY SHUTDOWN: %s", message); *** 1_7_6.168/src/funtime.c Wed, 19 Mar 2003 13:42:56 -0600 dunemush (pennmush/c/12_funtime.c 1.11.1.14.1.1 660) --- 1_7_6.173(w)/src/funtime.c Sun, 17 Aug 2003 16:00:58 -0500 dunemush (pennmush/c/12_funtime.c 1.11.1.14.1.1.1.1 660) *************** *** 33,43 **** return; /* No field? Bad user. */ if (nargs == 2) { ! if (!is_uinteger(args[1])) { safe_str(T(e_uint), buff, bp); return; } - tt = parse_uinteger(args[1]); } else tt = mudtime; --- 33,54 ---- return; /* No field? Bad user. */ if (nargs == 2) { ! /* This is silly, but time_t is signed on several platforms, ! * so we can't assign an unsigned int to it safely ! */ ! if (!is_integer(args[1])) { ! safe_str(T(e_uint), buff, bp); ! return; ! } ! tt = parse_integer(args[1]); ! if (errno == ERANGE) { ! safe_str(T(e_range), buff, bp); ! return; ! } ! if (tt < 0) { safe_str(T(e_uint), buff, bp); return; } } else tt = mudtime; *************** *** 169,176 **** * If pad > 0, pad with 0's (i.e. 0d 0h 5m 1s) * If pad > 1, force all #'s to be 2 digits */ ! int secs, pad; ! int days, hours, mins; if (!is_uinteger(args[0])) { safe_str(T(e_uints), buff, bp); --- 180,187 ---- * If pad > 0, pad with 0's (i.e. 0d 0h 5m 1s) * If pad > 1, force all #'s to be 2 digits */ ! unsigned int secs, pad; ! unsigned int days, hours, mins; if (!is_uinteger(args[0])) { safe_str(T(e_uints), buff, bp); *************** *** 196,210 **** secs %= 60; if (pad || (days > 0)) { if (pad == 2) ! safe_format(buff, bp, "%02dd %02dh %02dm %02ds", days, hours, mins, secs); else ! safe_format(buff, bp, "%dd %2dh %2dm %2ds", days, hours, mins, secs); } else if (hours > 0) ! safe_format(buff, bp, "%2dh %2dm %2ds", hours, mins, secs); else if (mins > 0) ! safe_format(buff, bp, "%2dm %2ds", mins, secs); else ! safe_format(buff, bp, "%2ds", secs); } #ifdef HAS_GETDATE --- 207,221 ---- secs %= 60; if (pad || (days > 0)) { if (pad == 2) ! safe_format(buff, bp, "%02ud %02uh %02um %02us", days, hours, mins, secs); else ! safe_format(buff, bp, "%ud %2uh %2um %2us", days, hours, mins, secs); } else if (hours > 0) ! safe_format(buff, bp, "%2uh %2um %2us", hours, mins, secs); else if (mins > 0) ! safe_format(buff, bp, "%2um %2us", mins, secs); else ! safe_format(buff, bp, "%2us", secs); } #ifdef HAS_GETDATE *** 1_7_6.168/src/db.c Fri, 03 Jan 2003 01:01:06 -0600 dunemush (pennmush/c/25_db.c 1.26.1.1.1.1.1.6.1.1 660) --- 1_7_6.173(w)/src/db.c Sun, 17 Aug 2003 16:00:58 -0500 dunemush (pennmush/c/25_db.c 1.26.1.1.1.1.1.6.1.1.1.1 660) *************** *** 383,417 **** static void db_write_label(FILE * f, char const *l) { ! fputs(l, f); ! putc(' ', f); ! } ! ! static void ! db_write_string(FILE * f, char const *s) ! { ! putc('"', f); ! while (*s) { ! if (*s == '"' || *s == '\\') ! putc('\\', f); ! putc(*s, f); ! s++; /* done separately because putc() is a macro */ ! } ! putc('"', f); } static void db_write_labeled_string(FILE * f, char const *label, char const *value) { db_write_label(f, label); ! db_write_string(f, value); ! putc('\n', f); } static void db_write_labeled_number(FILE * f, char const *label, int value) { ! fprintf(f, "%s %d\n", label, value); } void --- 383,403 ---- static void db_write_label(FILE * f, char const *l) { ! OUTPUT(fputs(l, f)); ! OUTPUT(putc(' ', f)); } static void db_write_labeled_string(FILE * f, char const *label, char const *value) { db_write_label(f, label); ! putstring(f, value); } static void db_write_labeled_number(FILE * f, char const *label, int value) { ! OUTPUT(fprintf(f, "%s %d\n", label, value)); } void *** 1_7_6.168/hdrs/version.h Mon, 23 Jun 2003 11:08:49 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.2.1.11 660) --- 1_7_6.173(w)/hdrs/version.h Sun, 17 Aug 2003 16:01:01 -0500 dunemush (pennmush/c/47_version.h 1.32.1.2.1.7.1.9.1.1.1.17.1.2.1.12 660) *************** *** 1,2 **** ! #define VERSION "PennMUSH version 1.7.6 patchlevel 12 [06/23/2003]" ! #define SHORTVN "PennMUSH 1.7.6p12" --- 1,2 ---- ! #define VERSION "PennMUSH version 1.7.6 patchlevel 13 [08/11/2003]" ! #define SHORTVN "PennMUSH 1.7.6p13" *** 1_7_6.168/po/Makefile Tue, 17 Dec 2002 22:33:42 -0600 dunemush (pennmush/e/47_Makefile 1.11 660) --- 1_7_6.173(w)/po/Makefile Sun, 17 Aug 2003 15:57:20 -0500 dunemush (pennmush/e/47_Makefile 1.11 660) *************** *** 1,7 **** .SUFFIXES: .po .pox .mo POFILES=ru_RU.po nl_NL.po sv_SE.po hu_HU.po es_ES.po pt_BR.po fr_FR.po \ ! da_DK.po de_DE.po no_NO.po pl_PL.po .pox.po: $*.pox pennmush.pot -msgmerge -E -v $*.pox pennmush.pot > $*.po --- 1,7 ---- .SUFFIXES: .po .pox .mo POFILES=ru_RU.po nl_NL.po sv_SE.po hu_HU.po es_ES.po pt_BR.po fr_FR.po \ ! da_DK.po de_DE.po no_NO.po pl_PL.po ro_RO.po .pox.po: $*.pox pennmush.pot -msgmerge -E -v $*.pox pennmush.pot > $*.po