]> diplodocus.org Git - nmh/blobdiff - sbr/m_getfld.c
Removed export of most of the variables in test/common.sh.in. The
[nmh] / sbr / m_getfld.c
index c4bc15fdadce951e48bbad40a960860f04d69125..b09605474e44d88d4f83970585a107dd3bfaa31d 100644 (file)
  * static prototypes
  */
 struct m_getfld_state;
-static int m_Eom (m_getfld_state_t, int);
+static int m_Eom (m_getfld_state_t);
 static char *matchc(int, char *, int, char *);
 
 #define eom(c,s)       (s->msg_style != MS_DEFAULT && \
-                        ((c) == *s->msg_delim && m_Eom(s,c)))
+                        ((c) == *s->msg_delim && m_Eom(s)))
 
 /* This replaces the old approach, with its direct access to stdio
  * internals.  It uses one fread() to load a buffer that we manage.
@@ -217,9 +217,9 @@ static char *matchc(int, char *, int, char *);
  * separate messages in a maildrop, such as mbox "From ".
  *
  * Some of the tests in the test suite assume a MSG_INPUT_SIZE
- * of 4096.
+ * of 8192.
  */
-#define MSG_INPUT_SIZE 4096
+#define MSG_INPUT_SIZE NMH_BUFSIZ
 #define MAX_DELIMITER_SIZE 5
 
 struct m_getfld_state {
@@ -788,8 +788,11 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob)
     s->msg_style = MS_UNKNOWN;
 
     for (i = 0, cp = text; i < sizeof text; ++i, ++cp) {
-       if ((signed char) (*cp = Getc (s)) == EOF) {
+       if ((c = Getc (s)) == EOF) {
+           *cp = '\0';
            break;
+       } else {
+           *cp = c;
        }
     }
 
@@ -822,7 +825,7 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob)
      * separator) or the last char (since the matchc would have found it
      * if it was a real delim).
      */
-    s->pat_map = (char **) calloc (256, sizeof(char *));
+    s->pat_map = (char **) mh_xcalloc (256, sizeof(char *));
 
     for (cp = s->fdelim + 1; cp < s->delimend; cp++ )
        s->pat_map[(unsigned char)*cp] = cp;
@@ -844,15 +847,20 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob)
  */
 
 static int
-m_Eom (m_getfld_state_t s, int c)
+m_Eom (m_getfld_state_t s)
 {
     register int i;
     char text[MAX_DELIMITER_SIZE];
     char *cp;
 
     for (i = 0, cp = text; i < s->edelimlen; ++i, ++cp) {
-       if ((signed char) (*cp = Getc (s)) == EOF) {
+       int c2;
+
+       if ((c2 = Getc (s)) == EOF) {
+           *cp = '\0';
            break;
+       } else {
+           *cp = c2;
        }
     }
 
@@ -873,6 +881,7 @@ m_Eom (m_getfld_state_t s, int c)
     }
 
     if (s->msg_style == MS_MBOX) {
+       int c;
        while ((c = Getc (s)) != '\n')
            if (c < 0)
                break;