This is patch05 to PennMUSH 1.7.2. After applying this patch, you will have version 1.7.2p5. To apply this patch, save it to a file in your top-level MUSH directory, and do the following: patch -p0 < 1.7.2-patch05 make If you use GNU patch 2.2, you probably want the above to be 'patch -b -p0', not just 'patch -p0'. Then @shutdown and restart your MUSH. In this patch: * Fixed a password encryption problem with SHS. * Fixed a potential crash with @cloning objects on channels * More bugfixes, mostly cosmetic or relatively minor. - Alan/Javelin Prereq: 1.7.2p4 Index: Patchlevel *** Patchlevel.orig Tue, 24 Feb 1998 09:39:51 -0600 dunemush (pennmush/h/12_Patchlevel 1.5 640) 0.20 --- Patchlevel Mon, 02 Mar 1998 10:50:32 -0600 dunemush (pennmush/h/12_Patchlevel 1.5 640) 0.20(w) *************** *** 1,2 **** Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.2p4 --- 1,2 ---- Do not edit this file. It is maintained by the official PennMUSH patches. ! This is PennMUSH 1.7.2p5 Index: CHANGES *** CHANGES.orig Tue, 24 Feb 1998 09:39:51 -0600 dunemush (pennmush/h/9_CHANGES 1.9 640) 0.20 --- CHANGES Wed, 04 Mar 1998 09:49:31 -0600 dunemush (pennmush/h/9_CHANGES 1.9 640) 0.20(w) *************** *** 15,20 **** --- 15,46 ---- ========================================================================== + Version 1.7.2 patchlevel 5 March 2, 1998 + + Fixes: + * @cloning an object on a channel could crash the MUSH. Report by + Mordak@ATS. + * You couldn't add 2 objects with the same name to a channel. + Report by Mordak@ATS. + * Help for inc() fixed. Brian@M*U*S*H + * On Win32, the text file indexes are now properly sorted, + and things work ok if you don't have a text file defined. [NJG] + * Wiz objects couldn't add players to channels. Report by Mike@M*U*S*H + * Compile problem with fork and win32 fixed. [TAP] + * You shouldn't get nospoof notification from your own emits. [TN] + * You no longer get nospoof notification from every @chat, only + from @cemit. + * @lock obj=here or @lock obj=exit failed. Report by Luke@M*U*S*H + * The MUSH announces where it's sending stderr when it starts up. [NJG] + * If there was nothing on the queue, and no user activity, + the MUSH could wait as long as 999 seconds before checking to + see if it should do anything (like a dump, a shutdown, idling + someone out, etc.) This has been changed to 5 seconds. + Report by NJG. + * Encryption buffer for SHS encryption was too small, could cause + password problems. [NJG] + + Version 1.7.2 patchlevel 4 February 24, 1998 Fixes: Index: options.h.dist *** options.h.dist.orig Fri, 13 Feb 1998 14:31:28 -0600 dunemush (pennmush/d/36_options.h. 1.1 640) 0.20 --- options.h.dist Mon, 02 Mar 1998 12:06:32 -0600 dunemush (pennmush/d/36_options.h. 1.1 640) 0.20(w) *************** *** 115,121 **** /* If defined, use the info_slave to get information from identd and DNS, * instead of having the MUSH do it directly. This may help reduce lag ! * from new logins. */ /* #define INFO_SLAVE /* */ --- 115,121 ---- /* If defined, use the info_slave to get information from identd and DNS, * instead of having the MUSH do it directly. This may help reduce lag ! * from new logins. This does _not_ work under Win32. */ /* #define INFO_SLAVE /* */ Index: hdrs/extchat.h *** hdrs/extchat.h.orig Wed, 18 Feb 1998 10:48:44 -0600 dunemush (pennmush/e/0_extchat.h 1.3 640) 0.20 --- hdrs/extchat.h Mon, 02 Mar 1998 11:16:11 -0600 dunemush (pennmush/e/0_extchat.h 1.3 640) 0.20(w) *************** *** 174,180 **** /* Some globals */ extern int num_channels; ! extern void channel_broadcast _((CHAN *channel, int checkquiet, const char *fmt,...)); extern CHANUSER *onchannel _((dbref who, CHAN *c)); extern void init_chatdb _((void)); extern int load_chatdb _((FILE * fp)); --- 174,180 ---- /* Some globals */ extern int num_channels; ! extern void channel_broadcast _((CHAN *channel, int flags, const char *fmt,...)); extern CHANUSER *onchannel _((dbref who, CHAN *c)); extern void init_chatdb _((void)); extern int load_chatdb _((FILE * fp)); Index: hdrs/version.h *** hdrs/version.h.orig Tue, 24 Feb 1998 09:39:51 -0600 dunemush (pennmush/e/22_version.h 1.5 640) 0.20 --- hdrs/version.h Mon, 02 Mar 1998 10:50:44 -0600 dunemush (pennmush/e/22_version.h 1.5 640) 0.20(w) *************** *** 1,2 **** ! #define VERSION "PennMUSH version 1.7.2 patchlevel 4 [2/24/98]" ! #define SHORTVN "PennMUSH 1.7.2p4" --- 1,2 ---- ! #define VERSION "PennMUSH version 1.7.2 patchlevel 5 [3/2/98]" ! #define SHORTVN "PennMUSH 1.7.2p5" Index: src/boolexp.c *** src/boolexp.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/e/29_boolexp.c 1.1 640) 0.20 --- src/boolexp.c Mon, 02 Mar 1998 10:17:06 -0600 dunemush (pennmush/e/29_boolexp.c 1.1 640) 0.20(w) *************** *** 233,239 **** b->type = BOOLEXP_CONST; /* do the match */ ! b->thing = match_result(parse_player, tbuf1, TYPE_THING, MAT_OBJECTS); if (b->thing == NOTHING) { notify(parse_player, --- 233,239 ---- b->type = BOOLEXP_CONST; /* do the match */ ! b->thing = match_result(parse_player, tbuf1, TYPE_THING, MAT_EVERYTHING); if (b->thing == NOTHING) { notify(parse_player, Index: src/bsd.c *** src/bsd.c.orig Tue, 24 Feb 1998 09:39:51 -0600 dunemush (pennmush/e/30_bsd.c 1.5 640) 0.20 --- src/bsd.c Mon, 02 Mar 1998 12:07:27 -0600 dunemush (pennmush/e/30_bsd.c 1.5 640) 0.20(w) *************** *** 24,29 **** --- 24,32 ---- #define EWOULDBLOCK WSAEWOULDBLOCK #define MAXHOSTNAMELEN 32 void shutdown_checkpoint _((void)); + #ifdef INFO_SLAVE + #undef INFO_SLAVE + #endif #else /* WIN32 */ #include <sys/file.h> #ifdef I_SYS_TIME *************** *** 410,415 **** --- 413,419 ---- if (!newerr) { fprintf(stderr, "Unable to open %s. Error output to stderr.\n", errlog); } else { + fprintf(stderr, "Redirecting output to: %s\n", errlog); if (!freopen(errlog, "a", stderr)) { printf("Ack! Failed reopening stderr!"); exit(1); *************** *** 887,899 **** } i = 0; if ( ! (newstate[TA_BOLD] && (newstate[TA_BOLD] != state[TA_BOLD])) || ! (newstate[TA_REV] && (newstate[TA_REV] != state[TA_REV])) || ! (newstate[TA_BLINK] && (newstate[TA_BLINK] != state[TA_BLINK])) || ! (newstate[TA_ULINE] && (newstate[TA_ULINE] != state[TA_ULINE])) || ! (color && newstate[TA_FGC] && (newstate[TA_FGC] != state[TA_FGC])) || ! (color && newstate[TA_BGC] && (newstate[TA_BGC] != state[TA_BGC])) ! ) { safe_chr(ESC_CHAR, t, &o); safe_chr('[', t, &o); i = 0; --- 891,903 ---- } i = 0; if ( ! (newstate[TA_BOLD] && (newstate[TA_BOLD] != state[TA_BOLD])) || ! (newstate[TA_REV] && (newstate[TA_REV] != state[TA_REV])) || ! (newstate[TA_BLINK] && (newstate[TA_BLINK] != state[TA_BLINK])) || ! (newstate[TA_ULINE] && (newstate[TA_ULINE] != state[TA_ULINE])) || ! (color && newstate[TA_FGC] && (newstate[TA_FGC] != state[TA_FGC])) || ! (color && newstate[TA_BGC] && (newstate[TA_BGC] != state[TA_BGC])) ! ) { safe_chr(ESC_CHAR, t, &o); safe_chr('[', t, &o); i = 0; *************** *** 922,928 **** } if (state[TA_BOLD] || state[TA_REV] || state[TA_BLINK] || state[TA_ULINE] || ! (color && (state[TA_FGC] || state[TA_BGC]))) safe_str(ANSI_NORMAL, t, &o); break; } --- 926,932 ---- } if (state[TA_BOLD] || state[TA_REV] || state[TA_BLINK] || state[TA_ULINE] || ! (color && (state[TA_FGC] || state[TA_BGC]))) safe_str(ANSI_NORMAL, t, &o); break; } *************** *** 1088,1094 **** if ((flags & NA_PONLY) && (poutput != NA_PUEBLO)) continue; ! if (nsfunc && Nospoof(target)) { if (!havespoof) { nsfunc(nospoof, speaker, func, fdata); havespoof = 1; --- 1092,1098 ---- if ((flags & NA_PONLY) && (poutput != NA_PUEBLO)) continue; ! if (nsfunc && Nospoof(target) && (target != speaker)) { if (!havespoof) { nsfunc(nospoof, speaker, func, fdata); havespoof = 1; *************** *** 4119,4130 **** #ifdef I_STDARG void ! channel_broadcast(CHAN *channel, int checkquiet, const char *fmt,...) #else void ! channel_broadcast(channel, checkquiet, va_alist) CHAN *channel; ! int checkquiet; va_dcl #endif { --- 4123,4134 ---- #ifdef I_STDARG void ! channel_broadcast(CHAN *channel, int flags, const char *fmt,...) #else void ! channel_broadcast(channel, flags, va_alist) CHAN *channel; ! int flags; /* 0x1 = checkquiet, 0x2 = nospoof */ va_dcl #endif { *************** *** 4150,4157 **** va_end(args); nac.u = ChanUsers(channel); ! nac.checkquiet = checkquiet; ! notify_anything(orator, na_channel, &nac, ns_esnotify, 0, tbuf1); } void --- 4154,4161 ---- va_end(args); nac.u = ChanUsers(channel); ! nac.checkquiet = (flags & 0x1) ? 1 : 0; ! notify_anything(orator, na_channel, &nac, (flags & 0x2) ? ns_esnotify : NULL, 0, tbuf1); } void Index: src/cque.c *** src/cque.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/e/40_cque.c 1.1 640) 0.20 --- src/cque.c Tue, 03 Mar 1998 15:23:48 -0600 dunemush (pennmush/e/40_cque.c 1.1 640) 0.20(w) *************** *** 485,491 **** * queue when they have one second to go. */ ! min = 1000; for (point = qwait; point; point = point->next) { curr = point->left - mudtime; --- 485,491 ---- * queue when they have one second to go. */ ! min = 5; for (point = qwait; point; point = point->next) { curr = point->left - mudtime; Index: src/create.c *** src/create.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/e/41_create.c 1.1 640) 0.20 --- src/create.c Wed, 04 Mar 1998 09:37:43 -0600 dunemush (pennmush/e/41_create.c 1.1 640) 0.20(w) *************** *** 510,515 **** --- 510,518 ---- if (can_pay_fees(player, OBJECT_DEPOSIT(Pennies(thing)))) { clone = new_object(); memcpy(&db[clone], &db[thing], sizeof(struct object)); + #ifdef CHAT_SYSTEM + Chanlist(clone) = NULL; + #endif db[clone].name = NULL; SET(db[clone].name, Name(thing)); s_Pennies(clone, Pennies(thing)); *************** *** 521,531 **** add_lock(clone, ll->type, dup_bool(ll->key)); } } ! db[clone].zone = db[thing].zone; ! db[clone].parent = db[thing].parent; ! db[clone].flags &= ~WIZARD; #ifdef ROYALTY_FLAG ! db[clone].flags &= ~ROYALTY; #endif #ifdef USE_WARNINGS db[clone].warnings = 0; /* zap warnings */ --- 524,534 ---- add_lock(clone, ll->type, dup_bool(ll->key)); } } ! Zone(clone) = Zone(thing); ! Parent(clone) = Parent(thing); ! Flags(clone) &= ~WIZARD; #ifdef ROYALTY_FLAG ! Flags(clone) &= ~ROYALTY; #endif #ifdef USE_WARNINGS db[clone].warnings = 0; /* zap warnings */ *************** *** 535,543 **** * other clone has, but update the creation time */ db[clone].creation_time = time((time_t *) 0); #endif ! db[clone].powers = 0; /* zap powers */ ! db[clone].contents = db[clone].location = db[clone].next = NOTHING; notify(player, tprintf("Cloned: Object #%d.", clone)); moveto(clone, Location(player)); #ifdef LOCAL_DATA --- 538,546 ---- * other clone has, but update the creation time */ db[clone].creation_time = time((time_t *) 0); #endif ! Powers(clone) = 0; /* zap powers */ ! Contents(clone) = Location(clone) = Next(clone) = NOTHING; notify(player, tprintf("Cloned: Object #%d.", clone)); moveto(clone, Location(player)); #ifdef LOCAL_DATA *************** *** 566,573 **** add_lock(clone, ll->type, dup_bool(ll->key)); } } ! db[clone].zone = Zone(thing); ! db[clone].parent = Parent(thing); Flags(clone) = Flags(thing); Flags(clone) &= ~WIZARD; #ifdef ROYALTY_FLAG --- 569,576 ---- add_lock(clone, ll->type, dup_bool(ll->key)); } } ! Zone(clone) = Zone(thing); ! Parent(clone) = Parent(thing); Flags(clone) = Flags(thing); Flags(clone) &= ~WIZARD; #ifdef ROYALTY_FLAG *************** *** 576,582 **** #ifdef USE_WARNINGS db[clone].warnings = 0; /* zap warnings */ #endif ! db[clone].powers = 0; /* zap powers */ notify(player, "Exit cloned."); #ifdef LOCAL_DATA db[clone].local_data = NULL; --- 579,585 ---- #ifdef USE_WARNINGS db[clone].warnings = 0; /* zap warnings */ #endif ! Powers(clone) = 0; /* zap powers */ notify(player, "Exit cloned."); #ifdef LOCAL_DATA db[clone].local_data = NULL; Index: src/extchat.c *** src/extchat.c.orig Wed, 18 Feb 1998 10:48:44 -0600 dunemush (pennmush/e/45_extchat.c 1.4 640) 0.20 --- src/extchat.c Wed, 04 Mar 1998 09:49:08 -0600 dunemush (pennmush/e/45_extchat.c 1.4 640) 0.20(w) *************** *** 496,502 **** for (; p->next && (strcasecmp(Name(CUdbref(p->next)), Name(CUdbref(user))) <= 0); p = p->next) ; ! if (!strcasecmp(Name(CUdbref(p)), Name(CUdbref(user)))) { /* Don't add the same user twice! */ mush_free((Malloc_t) user, "CHANUSER"); return 0; --- 496,502 ---- for (; p->next && (strcasecmp(Name(CUdbref(p->next)), Name(CUdbref(user))) <= 0); p = p->next) ; ! if (CUdbref(p) == CUdbref(user)) { /* Don't add the same user twice! */ mush_free((Malloc_t) user, "CHANUSER"); return 0; *************** *** 722,731 **** notify(player, "I don't recognize that channel."); return; } - if (!Chan_Ok_Type(chan, player)) { - notify(player, "Sorry, you're the wrong type of thing."); - return; - } if (!strcasecmp(com, "who")) { do_channel_who(player, chan); return; --- 722,727 ---- *************** *** 748,753 **** --- 744,753 ---- notify(player, "Invalid target."); return; } + if (!Chan_Ok_Type(chan, victim)) { + notify(player, "Sorry, wrong type of thing for that channel."); + return; + } if (!strcasecmp("on", com)) { if (Guest(player)) { notify(player, "Guests are not allowed to join channels."); *************** *** 928,934 **** notify(player, "What do you want to emit?"); return; } ! channel_broadcast(chan, 0, "%s", msg); if (!onchannel(player, chan)) notify(player, tprintf("Cemit to channel %s: %s", ChanName(chan), msg)); --- 928,934 ---- notify(player, "What do you want to emit?"); return; } ! channel_broadcast(chan, 2, "%s", msg); if (!onchannel(player, chan)) notify(player, tprintf("Cemit to channel %s: %s", ChanName(chan), msg)); *************** *** 1254,1260 **** if (SUPPORT_PUEBLO) sprintf(numusers, "%cA XCH_CMD=\"@channel/who %s\" XCH_HINT=\"See who's on this channel now\"%c%5ld%c/A%c", TAG_START, ChanName(c), TAG_END, ChanNumUsers(c), TAG_START, TAG_END); else ! sprintf(numusers, "%5d", ChanNumUsers(c)); notify(player, tprintf("%-30s %s %8d [%c%c%c%c%c%c %c%c%c%c%c%c] [%-3s %c%c]", ChanName(c), --- 1254,1260 ---- if (SUPPORT_PUEBLO) sprintf(numusers, "%cA XCH_CMD=\"@channel/who %s\" XCH_HINT=\"See who's on this channel now\"%c%5ld%c/A%c", TAG_START, ChanName(c), TAG_END, ChanNumUsers(c), TAG_START, TAG_END); else ! sprintf(numusers, "%5ld", ChanNumUsers(c)); notify(player, tprintf("%-30s %s %8d [%c%c%c%c%c%c %c%c%c%c%c%c] [%-3s %c%c]", ChanName(c), Index: src/filecopy.c *** src/filecopy.c.orig Mon, 16 Feb 1998 14:44:40 -0600 dunemush (pennmush/e/47_filecopy.c 1.2 640) 0.20 --- src/filecopy.c Tue, 03 Mar 1998 11:10:29 -0600 dunemush (pennmush/e/47_filecopy.c 1.2 640) 0.20(w) *************** *** 49,54 **** --- 49,58 ---- char *p; + /* If outputfile is an empty string, forget it. */ + if (!outputfile || !*outputfile) + return FALSE; + // extract the directory from the path name strcpy(directory, path); *************** *** 237,254 **** long indb_size, outdb_size, panicdb_size; ! ConcatenateFiles("txt\\hlp\\*.hlp", options.help_file); ! ConcatenateFiles("txt\\nws\\*.nws", options.news_file); ! ConcatenateFiles("txt\\evt\\*.evt", options.events_file); ! #ifdef RULES ConcatenateFiles("txt\\rul\\*.rul", RULES_FILE); ! #endif ! makeindex(options.help_file, options.help_index); ! makeindex(options.news_file, options.news_index); ! makeindex(options.events_file, options.events_index); ! #ifdef RULES makeindex(RULES_FILE, RULESINDX); ! #endif indb_OK = CheckDatabase(options.input_db, &indb_time, &indb_size); outdb_OK = CheckDatabase(options.output_db, &outdb_time, &outdb_size); --- 241,256 ---- long indb_size, outdb_size, panicdb_size; ! ConcatenateFiles("txt\\hlp\\*.hlp", HELPTEXT); ! ConcatenateFiles("txt\\nws\\*.nws", NEWS_FILE); ! ConcatenateFiles("txt\\evt\\*.evt", EVENT_FILE); ConcatenateFiles("txt\\rul\\*.rul", RULES_FILE); ! ConcatenateFiles("txt\\idx\\*.idx", INDEX_FILE); ! makeindex(HELPTEXT, HELPINDX); ! makeindex(NEWS_FILE, NEWSINDX); ! makeindex(EVENT_FILE, EVENTINDX); makeindex(RULES_FILE, RULESINDX); ! makeindex(INDEX_FILE, INDEXINDX); indb_OK = CheckDatabase(options.input_db, &indb_time, &indb_size); outdb_OK = CheckDatabase(options.output_db, &outdb_time, &outdb_size); Index: src/game.c *** src/game.c.orig Mon, 23 Feb 1998 14:31:54 -0600 dunemush (pennmush/f/6_game.c 1.4 640) 0.20 --- src/game.c Mon, 02 Mar 1998 12:07:27 -0600 dunemush (pennmush/f/6_game.c 1.4 640) 0.20(w) *************** *** 473,479 **** --- 473,483 ---- nofork = 1; else nofork = !forking || (paranoid_dump == 2); /* Don't fork for dump/debug */ + #ifdef WIN32 + nofork = 1; + #endif if (!nofork) { + #ifndef WIN32 child = fork(); if (child < 0) { /* Oops, fork failed. Let's do a nofork dump */ *************** *** 492,497 **** --- 496,502 ---- setpriority(PRIO_PROCESS, child, 8); #endif } + #endif #endif } else { if (DUMP_NOFORK_MESSAGE && *DUMP_NOFORK_MESSAGE) Index: src/mkindx.c *** src/mkindx.c.orig Mon, 23 Feb 1998 14:31:54 -0600 dunemush (pennmush/f/17_mkindx.c 1.2 640) 0.20 --- src/mkindx.c Tue, 03 Mar 1998 11:13:05 -0600 dunemush (pennmush/f/17_mkindx.c 1.2 640) 0.20(w) *************** *** 1,16 **** /* mkindx.c */ ! /* order the entries alphabetically - define this unless you ! * have memory problems This code by Pavel Kankovsky (PeaK) ! */ ! #ifndef EMBEDDED_MKINDX ! #define ORDERED_INDEXFILE ! #endif #ifdef EMBEDDED_MKINDX #include "conf.h" #endif - #include "config.h" #include <stdio.h> #include <stdlib.h> --- 1,11 ---- /* mkindx.c */ ! #include "config.h" ! #include "copyrite.h" #ifdef EMBEDDED_MKINDX #include "conf.h" #endif #include <stdio.h> #include <stdlib.h> *************** *** 33,43 **** } tlist; tlist *top = NULL; - #ifdef ORDERED_INDEXFILE help_indx *topics = NULL; unsigned num_topics = 0; unsigned top_topics = 0; - #endif void write_topic _((FILE * out, long int p, int l)); void flush_topics _((FILE * out)); --- 28,36 ---- *************** *** 75,81 **** int l; { tlist *cur, *nextptr; - #ifdef ORDERED_INDEXFILE help_indx *temp; for (cur = top; cur; cur = nextptr) { nextptr = cur->next; --- 68,73 ---- *************** *** 96,115 **** strcpy(temp->topic, cur->topic); free(cur); } - #else - help_indx temp; - for (cur = top; cur; cur = nextptr) { - nextptr = cur->next; - temp.pos = p; - temp.len = l; - strcpy(temp.topic, cur->topic); - if (fwrite(&temp, sizeof(help_indx), 1, out) < 1) { - fprintf(stderr, "error writing\n"); - exit(-1); - } - free(cur); - } - #endif top = NULL; } --- 88,93 ---- *************** *** 124,130 **** top = cur; } - #ifdef ORDERED_INDEXFILE static int topic_cmp _((const help_indx *s1, const help_indx *s2)); static int topic_cmp(s1, s2) --- 102,107 ---- *************** *** 134,152 **** int k = strcasecmp(s1->topic, s2->topic); return k; } - #endif void flush_topics(out) FILE *out; { - #ifdef ORDERED_INDEXFILE qsort(topics, num_topics, sizeof(help_indx), topic_cmp); if ((Size_t) fwrite(topics, sizeof(help_indx), num_topics, out) < num_topics) { fprintf(stderr, "error writing\n"); exit(-1); } - #endif } --- 111,126 ---- *************** *** 172,177 **** --- 146,154 ---- #endif #ifdef EMBEDDED_MKINDX + /* Quietly ignore null values for the file */ + if (!inputfile || !*inputfile || !outputfile || !*outputfile) + return 0; if ((rfp = fopen(inputfile, "rb")) == NULL) { fprintf(stderr, "can't open %s for reading\n", inputfile); exit(-1); Index: src/mycrypt.c *** src/mycrypt.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/f/19_mycrypt.c 1.1 640) 0.20 --- src/mycrypt.c Mon, 02 Mar 1998 10:17:24 -0600 dunemush (pennmush/f/19_mycrypt.c 1.1 640) 0.20(w) *************** *** 36,42 **** { #if (CRYPT_SYSTEM == 2) SHS_INFO shsInfo; ! static char crypt_buff[15]; #endif #if (CRYPT_SYSTEM == 0) --- 36,42 ---- { #if (CRYPT_SYSTEM == 2) SHS_INFO shsInfo; ! static char crypt_buff[70]; #endif #if (CRYPT_SYSTEM == 0) Index: game/mushcnf.dst *** game/mushcnf.dst.orig Mon, 16 Feb 1998 15:51:40 -0600 dunemush (pennmush/g/28_mushcnf.ds 1.2 640) 0.20 --- game/mushcnf.dst Mon, 02 Mar 1998 12:06:43 -0600 dunemush (pennmush/g/28_mushcnf.ds 1.2 640) 0.20(w) *************** *** 204,210 **** # should I fork a concurrent process to do database dumps? # If I do, your memory requirements will double during the dump. # If I don't, the MUSH will pause while it dumps. ! # if you're low on memory, don't do this. forking_dump yes # If you're not forking, you get a bunch of messages that you --- 204,211 ---- # should I fork a concurrent process to do database dumps? # If I do, your memory requirements will double during the dump. # If I don't, the MUSH will pause while it dumps. ! # If you're low on memory, don't do this. ! # If you're on Win32, don't do this; fork() is not defined. forking_dump yes # If you're not forking, you get a bunch of messages that you Index: game/txt/hlp/pennfunc.hlp *** game/txt/hlp/pennfunc.hlp.orig Sat, 14 Feb 1998 09:54:48 -0600 dunemush (pennmush/h/1_pennfunc.h 1.2 640) 0.20 --- game/txt/hlp/pennfunc.hlp Tue, 03 Mar 1998 11:14:23 -0600 dunemush (pennmush/h/1_pennfunc.h 1.2 640) 0.20(w) *************** *** 999,1005 **** inc(<integer>) inc(<string-ending-in-integer>) ! Inc returns the integer minus 1. If given a string that ends in an integer, it increments only the final integer portion. That is: > think inc(3) --- 999,1005 ---- inc(<integer>) inc(<string-ending-in-integer>) ! Inc returns the integer plus 1. If given a string that ends in an integer, it increments only the final integer portion. That is: > think inc(3) Index: game/txt/hlp/penntop.hlp *** game/txt/hlp/penntop.hlp.orig Fri, 13 Feb 1998 14:34:10 -0600 dunemush (pennmush/h/4_penntop.hl 1.1 640) 0.20 --- game/txt/hlp/penntop.hlp Tue, 03 Mar 1998 11:15:30 -0600 dunemush (pennmush/h/4_penntop.hl 1.1 640) 0.20(w) *************** *** 378,385 **** has been maintaining this code. Additional credits go to: ! Talek and Rhyanna: co-developers with Javelin ! Nick Gammon: win32 post Pavel Kankovsky and Thorvald Natvig: rewrites of things Naomi Novik: rewrite of the help files for 1.7.0 Ambar (PernMUSH): debugging and lots of other stuff (PernMUSH v1.14) --- 378,386 ---- has been maintaining this code. Additional credits go to: ! Talek and Trivian: co-developers with Javelin ! Rhyanna: former co-developer ! Nick Gammon: win32 port Sylvia: os2 port Pavel Kankovsky and Thorvald Natvig: rewrites of things Naomi Novik: rewrite of the help files for 1.7.0 Ambar (PernMUSH): debugging and lots of other stuff (PernMUSH v1.14) Index: game/txt/hlp/pennvers.hlp *** game/txt/hlp/pennvers.hlp.orig Tue, 24 Feb 1998 09:39:51 -0600 dunemush (pennmush/h/5_pennvers.h 1.5 640) 0.20 --- game/txt/hlp/pennvers.hlp Wed, 04 Mar 1998 10:06:54 -0600 dunemush (pennmush/h/5_pennvers.h 1.5 640) 0.20(w) *************** *** 30,35 **** --- 30,57 ---- 1.50p11, 1.50p12, 1.50p13, 1.50p14, 1.50p15, 1.6.0, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.6.6, 1.6.7, 1.6.8, 1.6.9, 1.6.10, 1.7.0, 1.7.1 + Version 1.7.2 patchlevel 5 March 2, 1998 + + Fixes: + * @cloning an object on a channel could crash the MUSH. Report by + Mordak@ATS. + * You couldn't add 2 objects with the same name to a channel. + Report by Mordak@ATS. + * Wiz objects couldn't add players to channels. Report by Mike@M*U*S*H + * Compile problem with fork and win32 fixed. [TAP] + * You shouldn't get nospoof notification when the speaker isn't + spoofing. [TN] + * You shouldn't get nospoof notification from @chat, only @cemit + * @lock obj=here or @lock obj=exit failed. Report by Luke@M*U*S*H + * The MUSH announces where it's sending stderr when it starts up. [NJG] + * If there was nothing on the queue, and no user activity, + the MUSH could wait as long as 999 seconds before checking to + see if it should do anything (like a dump, a shutdown, idling + someone out, etc.) This has been changed to 5 seconds. + Report by NJG. + * Encryption buffer for SHS encryption was too small, could cause + password problems. [NJG] + Version 1.7.2 patchlevel 4 February 24, 1998 Fixes: