X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/068f5266319343e8d27fe1596f30f4e3f69fd28c..e19df85ee3edbc78b6029aa2344bb62bf4270747:/sbr/m_getfld.c?ds=inline diff --git a/sbr/m_getfld.c b/sbr/m_getfld.c index 77dbeda1..4da2f3ee 100644 --- a/sbr/m_getfld.c +++ b/sbr/m_getfld.c @@ -90,7 +90,7 @@ be parsed as well. Unfortunately the speed issue finally caught up with us since this routine is at the very heart of MH. - To speed things up considerably, the routine Eom() was made an auxilary + To speed things up considerably, the routine Eom() was made an auxiliary function called by the macro eom(). Unless we are bursting a maildrop, the eom() macro returns FALSE saying we aren't at the end of the message. @@ -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 { @@ -444,29 +444,21 @@ read_more (m_getfld_state_t s) { but EOF is typically 0xffffffff. */ static int Getc (m_getfld_state_t s) { - if (s->end - s->readpos < 1) { - if (read_more (s) == 0) { - /* Pretend that we read a character. That's what stdio does. */ - ++s->readpos; - return EOF; - } + if (s->end - s->readpos < 1 && read_more (s) == 0) { + return EOF; + } else { + ++s->bytes_read; + return s->readpos < s->end ? (unsigned char) *s->readpos++ : EOF; } - - ++s->bytes_read; - return s->readpos < s->end ? (unsigned char) *s->readpos++ : EOF; } static int Peek (m_getfld_state_t s) { - if (s->end - s->readpos < 1) { - if (read_more (s) == 0) { - /* Pretend that we read a character. That's what stdio does. */ - ++s->readpos; - return EOF; - } + if (s->end - s->readpos < 1 && read_more (s) == 0) { + return EOF; + } else { + return s->readpos < s->end ? (unsigned char) *s->readpos : EOF; } - - return s->readpos < s->end ? (unsigned char) *s->readpos : EOF; } static int @@ -825,7 +817,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;