This is patch03 to PennMUSH 1.7.2. After applying this patch, you will
have version 1.7.2p3. 

To apply this patch, save it to a file in your top-level MUSH directory,
and do the following:
	patch -p0 < 1.7.2-patch03	
	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:
  * Bug in @readcache that could cause crashes fixed
  * Problems with ansi fixed
  * Problems with events fixed
  * help pueblo() works
  * Various warnings fixed

 - Alan/Javelin

Index: Patchlevel
Prereq: 1.7.2p2
*** Patchlevel.orig Thu, 19 Feb 1998 13:26:17 -0600 dunemush (pennmush/h/12_Patchlevel 1.3 640) 0.18
--- Patchlevel      Sun, 22 Feb 1998 11:46:01 -0600 dunemush (pennmush/h/12_Patchlevel 1.3 640) 0.18(w)
***************
*** 1,2 ****
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.2p2
--- 1,2 ----
  Do not edit this file. It is maintained by the official PennMUSH patches.
! This is PennMUSH 1.7.2p3
Index: CHANGES
*** CHANGES.orig Thu, 19 Feb 1998 13:26:17 -0600 dunemush (pennmush/h/9_CHANGES 1.7 640) 0.18
--- CHANGES      Sun, 22 Feb 1998 11:45:47 -0600 dunemush (pennmush/h/9_CHANGES 1.7 640) 0.18(w)
***************
*** 15,20 ****
--- 15,33 ----
  
  ==========================================================================
  
+ Version 1.7.2 patchlevel 3                    February 22, 1998
+ 
+ Fixes
+        * Fixed a slew of compiler warnings under Win32. [NJG]
+        * Jonathan Booth Removed a few #ifdef EVENTS that lingered.
+        * Room names weren't shown bold to people who had ANSI
+          but not COLOR set. Report by Sylvia
+        * Added help alias pueblo() for pueblo. Suggested by Vedui.
+        * Fixed some problems with ansi() and tf reported by Vedui.
+        * @readcache could cause crashes. First report by Mop-Boy.
+        * src/tcl.c is now better located by Configure. [TN]
+ 
+ 
  Version 1.7.2 patchlevel 2                    February 19, 1998
  
  Fixes:
***************
*** 37,43 ****
  Major Changes:
         * Support for the Pueblo MUD client (http://www.chaco.com/pueblo)
           which allows the MUSH to send html to the client. This is
!          runtime configurable with @enable/@disable and mush.cnf. [TAP]
         * Regular expression support: the REGEXP attribute flag causes
           attributes to match $ and ^ patterns using regular expressions.
           regmatch() matches regular expressions. [2.2]
--- 50,56 ----
  Major Changes:
         * Support for the Pueblo MUD client (http://www.chaco.com/pueblo)
           which allows the MUSH to send html to the client. This is
!          runtime configurable with @enable/@disable and mush.cnf. [TN]
         * Regular expression support: the REGEXP attribute flag causes
           attributes to match $ and ^ patterns using regular expressions.
           regmatch() matches regular expressions. [2.2]
Index: Configure
*** Configure.orig Wed, 18 Feb 1998 10:48:44 -0600 dunemush (pennmush/d/37_Configure 1.4 750) 0.18
--- Configure      Sun, 22 Feb 1998 11:16:39 -0600 dunemush (pennmush/d/37_Configure 1.4 750) 0.18(w)
***************
*** 5825,5831 ****
  echo " "
  ok=0
  
! if $test -f src/tcl.c; then
    echo "I'm tickled pink - we have the penn TCL source." >&4
    echo "Let's see if we have TCL." >&4
  
--- 5825,5831 ----
  echo " "
  ok=0
  
! if $test -f src/tcl.c -o -f ../src/tcl.c ; then
    echo "I'm tickled pink - we have the penn TCL source." >&4
    echo "Let's see if we have TCL." >&4
  
Index: hdrs/externs.h
*** hdrs/externs.h.orig Mon, 16 Feb 1998 13:50:13 -0600 dunemush (pennmush/e/1_externs.h 1.2 640) 0.18
--- hdrs/externs.h      Fri, 20 Feb 1998 10:38:15 -0600 dunemush (pennmush/e/1_externs.h 1.2 640) 0.18(w)
***************
*** 15,20 ****
--- 15,27 ----
  #ifndef __EXTERNS_H
  #define __EXTERNS_H
  
+ /* Get the time_t definition that we use in prototypes here */
+ #ifdef I_SYS_TIME
+ #include <sys/time.h>
+ #else
+ #include <time.h>
+ #endif
+ 
  #include "config.h"
  #include "copyrite.h"
  #include "conf.h"
***************
*** 327,332 ****
--- 334,340 ----
  extern int local_wild_match _((const char *s, const char *d));
  extern int quick_wild _((const char *tstr, const char *dstr));
  extern int wildcard _((const char *s));
+ extern int regexp_match _((const char *s, const char *d));
  
  /* From wiz.c */
  extern void do_chownall _((dbref player, const char *name, const char *target));
Index: hdrs/version.h
*** hdrs/version.h.orig Thu, 19 Feb 1998 13:26:17 -0600 dunemush (pennmush/e/22_version.h 1.3 640) 0.18
--- hdrs/version.h      Sun, 22 Feb 1998 11:45:53 -0600 dunemush (pennmush/e/22_version.h 1.3 640) 0.18(w)
***************
*** 1,2 ****
! #define VERSION "PennMUSH version 1.7.2 patchlevel 2 [2/19/98]"
! #define SHORTVN "PennMUSH 1.7.2p2"
--- 1,2 ----
! #define VERSION "PennMUSH version 1.7.2 patchlevel 3 [2/22/98]"
! #define SHORTVN "PennMUSH 1.7.2p3"
Index: src/bsd.c
*** src/bsd.c.orig Wed, 18 Feb 1998 10:48:44 -0600 dunemush (pennmush/e/30_bsd.c 1.3 640) 0.18
--- src/bsd.c      Sun, 22 Feb 1998 11:28:01 -0600 dunemush (pennmush/e/30_bsd.c 1.3 640) 0.18(w)
***************
*** 597,603 ****
  #define NA_ANSI 1
  #define NA_COLOR 2
  #define NA_PUEBLO 3
! #define NA_PASCII 1
  
  #define TA_BGC 0
  #define TA_FGC 1
--- 597,603 ----
  #define NA_ANSI 1
  #define NA_COLOR 2
  #define NA_PUEBLO 3
! #define NA_PASCII 4
  
  #define TA_BGC 0
  #define TA_FGC 1
***************
*** 853,858 ****
--- 853,859 ----
      break;
    case NA_COLOR:
      color = 1;
+     /* FALLTHROUGH */
    case NA_ANSI:
      while (*p) {
        switch (*p) {
***************
*** 885,896 ****
  	    safe_str(ANSI_NORMAL, t, &o);
  	  }
  	  i = 0;
! 	  for (n = 0; n < 4; n++)
! 	    if (newstate[n])
! 	      i = 1;
! 	  if (!i && color && (newstate[4] || newstate[5]))
! 	    i = 1;
! 	  if (i) {
  	    safe_chr(ESC_CHAR, t, &o);
  	    safe_chr('[', t, &o);
  	    i = 0;
--- 886,899 ----
  	    safe_str(ANSI_NORMAL, t, &o);
  	  }
  	  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;
***************
*** 917,930 ****
        }
        p++;
      }
!     i = 0;
!     for (n = 0; n < 4; n++)
!       if (state[n])
! 	i = 1;
!     if (!i && color && (newstate[4] || newstate[5]))
!       i = 1;
!     if (i)
        safe_str(ANSI_NORMAL, t, &o);
    }
  
    *o = '\0';
--- 920,930 ----
        }
        p++;
      }
!     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;
    }
  
    *o = '\0';
***************
*** 1030,1037 ****
  {
    dbref target;
    dbref passalong[3];
!   struct notify_strings messages[4];
!   struct notify_strings nospoofs[4];
    int i, j;
    struct descriptor_data *d;
    int poutput;
--- 1030,1037 ----
  {
    dbref target;
    dbref passalong[3];
!   struct notify_strings messages[5];
!   struct notify_strings nospoofs[5];
    int i, j;
    struct descriptor_data *d;
    int poutput;
***************
*** 1055,1061 ****
  
    target = NOTHING;
  
!   for (i = 0; i < 4; i++) {
      nospoofs[i].made = 0;
      messages[i].made = 0;
    }
--- 1055,1061 ----
  
    target = NOTHING;
  
!   for (i = 0; i < 5; i++) {
      nospoofs[i].made = 0;
      messages[i].made = 0;
    }
***************
*** 1084,1089 ****
--- 1084,1090 ----
  	  } else {
  	    poutput = NA_PASCII;
  	  }
+ 
  	  if ((flags & NA_PONLY) && (poutput != NA_PUEBLO))
  	    continue;
  
***************
*** 1677,1682 ****
--- 1678,1684 ----
    close(reserved);
    if ((fd = open(filename, O_RDONLY, 0)) == -1) {
      do_log(LT_ERR, 0, 0, "couldn't open cached text file '%s'", filename);
+     reserved = open("/dev/null", O_RDWR);
      return -1;
    }
    fp = (FBLOCK *) malloc(sizeof(char) * 256);
***************
*** 1730,1738 ****
  {
    int conn, motd, wiz, new, reg, quit, down, full;
    int guest;
!   int i = 0;
  
!   for (; i < (SUPPORT_PUEBLO ? 2 : 1); i++) {
      conn = fcache_read(&options.connect_fcache[i], options.connect_file[i]);
      motd = fcache_read(&options.motd_fcache[i], options.motd_file[i]);
      wiz = fcache_read(&options.wizmotd_fcache[i], options.wizmotd_file[i]);
--- 1732,1740 ----
  {
    int conn, motd, wiz, new, reg, quit, down, full;
    int guest;
!   int i;
  
!   for (i = 0; i < (SUPPORT_PUEBLO ? 2 : 1); i++) {
      conn = fcache_read(&options.connect_fcache[i], options.connect_file[i]);
      motd = fcache_read(&options.motd_fcache[i], options.motd_file[i]);
      wiz = fcache_read(&options.wizmotd_fcache[i], options.wizmotd_file[i]);
Index: src/cmds.c
*** src/cmds.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/e/31_cmds.c 1.1 640) 0.18
--- src/cmds.c      Sat, 21 Feb 1998 11:21:40 -0600 dunemush (pennmush/e/31_cmds.c 1.1 640) 0.18(w)
***************
*** 3,8 ****
--- 3,9 ----
   * Parsing is handled in command.c
   */
  #include "copyrite.h"
+ #include "config.h"
  
  #ifdef I_STRING
  #include <string.h>
***************
*** 10,17 ****
  #include <strings.h>
  #endif
  
- #include "config.h"
- 
  #include "dbdefs.h"
  #include "conf.h"
  
--- 11,16 ----
***************
*** 836,847 ****
    do_enter(player, arg_left, 0);
  }
  
- #ifdef EVENTS
  COMMAND (cmd_events) {
    do_new_spitfile(player, arg_left, EVENTINDX, EVENT_FILE, 0);
  }
- 
- #endif
  
  COMMAND (cmd_follow) {
    notify(player, "COMMAND NOT IMPLEMENTED YET.");
--- 835,843 ----
Index: src/command.c
*** src/command.c.orig Wed, 18 Feb 1998 10:48:44 -0600 dunemush (pennmush/e/32_command.c 1.3 640) 0.18
--- src/command.c      Sat, 21 Feb 1998 11:21:40 -0600 dunemush (pennmush/e/32_command.c 1.3 640) 0.18(w)
***************
*** 187,195 ****
    {"DROP", NULL, cmd_drop, CMD_T_PLAYER | CMD_T_THING, 0, 0, 0},
    {"EXAMINE", "BRIEF DEBUG MORTAL", cmd_examine, CMD_T_ANY, 0, 0, 0},
    {"ENTER", NULL, cmd_enter, CMD_T_ANY, 0, 0, 0},
- #ifdef EVENTS
    {"EVENTS", NULL, cmd_events, CMD_T_ANY | CMD_T_NOPARSE, 0, 0, 0},
- #endif
  #ifdef FOLLOW
    {"FOLLOW", NULL, cmd_follow, CMD_T_PLAYER | CMD_T_THING | CMD_T_NOGAGGED, 0, 0, 0},
  #endif
--- 187,193 ----
***************
*** 406,412 ****
    command_mkalias();
  }
  
! void 
  command_init_postconfig()
  {
    if (!*EVENT_FILE)
--- 404,410 ----
    command_mkalias();
  }
  
! void
  command_init_postconfig()
  {
    if (!*EVENT_FILE)
Index: src/flags.c
*** src/flags.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/e/48_flags.c 1.1 640) 0.18
--- src/flags.c      Fri, 20 Feb 1998 10:37:55 -0600 dunemush (pennmush/e/48_flags.c 1.1 640) 0.18(w)
***************
*** 752,758 ****
    static char fbuf[BUFFER_LEN];
    char *bp;
    FLAG *f;
-   int t;
  
    bp = fbuf;
    f = flag_table;
--- 752,757 ----
Index: src/funmath.c
*** src/funmath.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/f/1_funmath.c 1.1 640) 0.18
--- src/funmath.c      Fri, 20 Feb 1998 10:37:57 -0600 dunemush (pennmush/f/1_funmath.c 1.1 640) 0.18(w)
***************
*** 650,656 ****
  #ifdef FLOATING_POINTS
    sum = sqrt(sum);
  #else
!   sum = sqrt(sum) + 0.5;
  #endif				/* FLOATING_POINTS */
  
    if (!sum) {
--- 650,656 ----
  #ifdef FLOATING_POINTS
    sum = sqrt(sum);
  #else
!   sum = (NVAL) (sqrt(sum) + 0.5);
  #endif				/* FLOATING_POINTS */
  
    if (!sum) {
Index: src/game.c
*** src/game.c.orig Thu, 19 Feb 1998 13:26:17 -0600 dunemush (pennmush/f/6_game.c 1.3 640) 0.18
--- src/game.c      Fri, 20 Feb 1998 10:37:59 -0600 dunemush (pennmush/f/6_game.c 1.3 640) 0.18(w)
***************
*** 1490,1496 ****
      /* We do this because on some machines (SGI Irix, for example),
       * the popen will not return NULL if the mailfile isn't there.
       */
!     f = fopen(tprintf("%s%s", filename, options.compresssuff),"r");
      if (f) {
        fclose(f);
        f = popen(tprintf("%s < %s%s", options.uncompressprog, filename, options.compresssuff), "r");
--- 1490,1496 ----
      /* We do this because on some machines (SGI Irix, for example),
       * the popen will not return NULL if the mailfile isn't there.
       */
!     f = fopen(tprintf("%s%s", filename, options.compresssuff), "r");
      if (f) {
        fclose(f);
        f = popen(tprintf("%s < %s%s", options.uncompressprog, filename, options.compresssuff), "r");
Index: src/ident.c
*** src/ident.c.orig Mon, 16 Feb 1998 14:44:40 -0600 dunemush (pennmush/f/8_ident.c 1.2 640) 0.18
--- src/ident.c      Fri, 20 Feb 1998 10:38:00 -0600 dunemush (pennmush/f/8_ident.c 1.2 640) 0.18(w)
***************
*** 251,257 ****
  #endif
  {
    ident_t *id;
!   int res, tmperrno;
    struct sockaddr_in sin_laddr, sin_faddr;
    fd_set rs, ws, es;
  #ifndef OLD_SETSOCKOPT
--- 251,260 ----
  #endif
  {
    ident_t *id;
!   int res;
! #ifndef WIN32
!   int tmperrno;
! #endif
    struct sockaddr_in sin_laddr, sin_faddr;
    fd_set rs, ws, es;
  #ifndef OLD_SETSOCKOPT
***************
*** 406,412 ****
--- 409,417 ----
      __STRUCT_TIMEVAL_P timeout;
  #endif
  {
+ #ifndef WIN32
    Signal_t(*old_sig) ();
+ #endif
    int res;
    char buf[80];
    fd_set ws;
Index: src/mkindx.c
*** src/mkindx.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/f/17_mkindx.c 1.1 640) 0.18
--- src/mkindx.c      Fri, 20 Feb 1998 10:38:02 -0600 dunemush (pennmush/f/17_mkindx.c 1.1 640) 0.18(w)
***************
*** 167,173 ****
--- 167,175 ----
    char *s, *topic;
    char the_topic[TOPIC_NAME_LEN + 1];
    FILE *rfp, *wfp;
+ #ifndef EMBEDDED_MKINDX
    char c;
+ #endif
  
  #ifdef EMBEDDED_MKINDX
    if ((rfp = fopen(inputfile, "rb")) == NULL) {
Index: src/move.c
*** src/move.c.orig Fri, 13 Feb 1998 14:32:30 -0600 dunemush (pennmush/f/18_move.c 1.1 640) 0.18
--- src/move.c      Fri, 20 Feb 1998 10:38:02 -0600 dunemush (pennmush/f/18_move.c 1.1 640) 0.18(w)
***************
*** 1,8 ****
- 
- 
  /* move.c */
  
  #include "copyrite.h"
  #include <ctype.h>
  #ifdef I_STRING
  #include <string.h>
--- 1,8 ----
  /* move.c */
  
  #include "copyrite.h"
+ #include "config.h"
+ 
  #include <ctype.h>
  #ifdef I_STRING
  #include <string.h>
***************
*** 10,16 ****
  #include <strings.h>
  #endif
  
- #include "config.h"
  #include "conf.h"
  #include "mushdb.h"
  #include "intrface.h"
--- 10,15 ----
Index: src/regexp.c
*** src/regexp.c.orig Wed, 18 Feb 1998 10:48:44 -0600 dunemush (pennmush/f/27_regexp.c 1.2 600) 0.18
--- src/regexp.c      Fri, 20 Feb 1998 10:38:06 -0600 dunemush (pennmush/f/27_regexp.c 1.2 600) 0.18(w)
***************
*** 284,290 ****
        longest = NULL;
        len = 0;
        for (; scan != NULL; scan = regnext(scan))
! 	if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= len) {
  	  longest = OPERAND(scan);
  	  len = strlen(OPERAND(scan));
  	}
--- 284,290 ----
        longest = NULL;
        len = 0;
        for (; scan != NULL; scan = regnext(scan))
! 	if (OP(scan) == EXACTLY && strlen(OPERAND(scan)) >= (Size_t) len) {
  	  longest = OPERAND(scan);
  	  len = strlen(OPERAND(scan));
  	}
***************
*** 616,622 ****
     - regc - emit (if appropriate) a byte of code
   */
  #ifdef CAN_NEWSTYLE
! static void 
  regc(char b)
  #else
  static void
--- 616,622 ----
     - regc - emit (if appropriate) a byte of code
   */
  #ifdef CAN_NEWSTYLE
! static void
  regc(char b)
  #else
  static void
***************
*** 636,642 ****
     * Means relocating the operand.
   */
  #ifdef CAN_NEWSTYLE
! static void 
  reginsert(char op, char *opnd)
  #else
  static void
--- 636,642 ----
     * Means relocating the operand.
   */
  #ifdef CAN_NEWSTYLE
! static void
  reginsert(char op, char *opnd)
  #else
  static void
Index: src/rwho.c
*** src/rwho.c.orig Mon, 16 Feb 1998 14:44:40 -0600 dunemush (pennmush/f/30_rwho.c 1.2 640) 0.18
--- src/rwho.c      Fri, 20 Feb 1998 10:38:07 -0600 dunemush (pennmush/f/30_rwho.c 1.2 640) 0.18(w)
***************
*** 43,49 ****
--- 43,51 ----
  #else
  #include <strings.h>
  #endif
+ #ifdef I_UNISTD
  #include <unistd.h>
+ #endif
  #include "mymalloc.h"
  #include "confmagic.h"
  
Index: src/htab.c
*** src/htab.c.orig Wed, 18 Feb 1998 19:11:27 -0600 dunemush (pennmush/f/39_htab.c 1.3 640) 0.18
--- src/htab.c      Fri, 20 Feb 1998 10:38:00 -0600 dunemush (pennmush/f/39_htab.c 1.3 640) 0.18(w)
***************
*** 80,86 ****
      HASHTAB *htab;
      const char *key;
  {
!   int hval, numchecks;
    HASHENT *hptr;
  
    if (!htab->buckets)
--- 80,86 ----
      HASHTAB *htab;
      const char *key;
  {
!   int hval;
    HASHENT *hptr;
  
    if (!htab->buckets)
***************
*** 199,205 ****
      const char *key;
      void *hashdata;
  {
-   int hval;
    HASHENT *hptr;
  
    if (hash_find(htab, key) != NULL) {
--- 199,204 ----
Index: game/txt/hlp/pennpueb.hlp
*** game/txt/hlp/pennpueb.hlp.orig Fri, 13 Feb 1998 14:34:10 -0600 dunemush (pennmush/h/3_pennpueb.h 1.1 600) 0.18
--- game/txt/hlp/pennpueb.hlp      Sat, 21 Feb 1998 11:59:50 -0600 dunemush (pennmush/h/3_pennpueb.h 1.1 600) 0.18(w)
***************
*** 1,4 ****
--- 1,5 ----
  & PUEBLO
+ & PUEBLO()
  Pueblo is a client made by Chaco (http://www.chaco.com/pueblo).
  It attempts to MIX HTML with MUSH, and does a very good job at it.
  If compiled into the MUSH, PennMUSH offers full support for the
Index: game/txt/hlp/pennvers.hlp
*** game/txt/hlp/pennvers.hlp.orig Thu, 19 Feb 1998 13:26:17 -0600 dunemush (pennmush/h/5_pennvers.h 1.3 640) 0.18
--- game/txt/hlp/pennvers.hlp      Sun, 22 Feb 1998 11:47:32 -0600 dunemush (pennmush/h/5_pennvers.h 1.3 640) 0.18(w)
***************
*** 30,35 ****
--- 30,47 ----
  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 3                    February 22, 1998
+ 
+ Fixes
+        * Fixed a slew of compiler warnings under Win32. [NJG]
+        * Jonathan Booth Removed a few #ifdef EVENTS that lingered.
+        * Room names weren't shown bold to people who had ANSI
+          but not COLOR set. Report by Sylvia
+        * Added help alias pueblo() for pueblo. Suggested by Vedui.
+        * Fixed some problems with ansi() and tf reported by Vedui.
+        * @readcache could cause crashes. First report by Mop-Boy.
+        * src/tcl.c is now better located by Configure. [TN]
+ 
  Version 1.7.2 patchlevel 2                    February 19, 1998
  
  Fixes:
***************
*** 50,56 ****
  Major Changes:
         * Support for the Pueblo MUD client (http://www.chaco.com/pueblo)
           which allows the MUSH to send html to the client. This is
!          runtime configurable with @enable/@disable and mush.cnf. [TAP]
         * Regular expression support: the REGEXP attribute flag causes
           attributes to match $ and ^ patterns using regular expressions.
           regmatch() matches regular expressions. [2.2]
--- 62,68 ----
  Major Changes:
         * Support for the Pueblo MUD client (http://www.chaco.com/pueblo)
           which allows the MUSH to send html to the client. This is
!          runtime configurable with @enable/@disable and mush.cnf. [TN]
         * Regular expression support: the REGEXP attribute flag causes
           attributes to match $ and ^ patterns using regular expressions.
           regmatch() matches regular expressions. [2.2]