Resolve the circular dependency of libmh on libmts on libmh. The
[mmh] / sbr / m_getfld.c
index cddf362..8a18e78 100644 (file)
@@ -6,7 +6,7 @@
  */
 
 #include <h/mh.h>
-#include <zotnet/mts/mts.h>
+#include <h/mts.h>
 
 /* This module has a long and checkered history.  First, it didn't burst
    maildrops correctly because it considered two CTRL-A:s in a row to be
@@ -184,6 +184,7 @@ static int (*eom_action)() = NULL;
 # define _ptr    _p            /* Gag   */
 # define _cnt    _r            /* Retch */
 # define _filbuf __srget       /* Puke  */
+# define DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
 #endif
 
 #ifdef SCO_5_STDIO
@@ -191,6 +192,11 @@ static int (*eom_action)() = NULL;
 # define _cnt  __cnt
 # define _base __base
 # define _filbuf(fp)  ((fp)->__cnt = 0, __filbuf(fp))
+# define DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
+#endif
+
+#ifndef DEFINED__FILBUF_TO_SOMETHING_SPECIFIC
+extern int  _filbuf(FILE*);
 #endif
 
 
@@ -572,7 +578,7 @@ m_unknown(FILE *iob)
     pat_map = (unsigned char **) calloc (256, sizeof(unsigned char *));
 
     for (cp = (char *) fdelim + 1; cp < (char *) delimend; cp++ )
-       pat_map[*cp] = (unsigned char *) cp;
+       pat_map[(unsigned char)*cp] = (unsigned char *) cp;
 
     if (msg_style == MS_MMDF) {
        /* flush extra msg hdrs */
@@ -724,7 +730,8 @@ matchc(int patln, char *pat, int strln, char *str)
                while (pc != *str++)
                        if (str > es)
                                return 0;
-
+               if (str > es+1)
+                       return 0;
                sp = str; pp = pat;
                while (pp < ep && *sp++ == *pp)
                        pp++;