X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/3028e444662122daf45e924d60874c0de619b478..3910a511d4d9ad19e5eeff769881f4e52f498947:/sbr/m_getfld.c diff --git a/sbr/m_getfld.c b/sbr/m_getfld.c index a7622b56..135be1db 100644 --- a/sbr/m_getfld.c +++ b/sbr/m_getfld.c @@ -450,12 +450,12 @@ 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 && read_more (s) == 0) { + if ((s->end - s->readpos < 1 && read_more (s) == 0) || + s->readpos >= s->end) return EOF; - } else { - ++s->bytes_read; - return s->readpos < s->end ? (unsigned char) *s->readpos++ : EOF; - } + + s->bytes_read++; + return (unsigned char)*s->readpos++; } static int @@ -489,17 +489,17 @@ m_getfld (m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz, enter_getfld (gstate, iob); s = *gstate; - if ((c = Getc(s)) < 0) { + if ((c = Getc(s)) == EOF) { *bufsz = *buf = 0; leave_getfld (s); return s->state = FILEEOF; } if (eom (c, s)) { /* flush null messages */ - while ((c = Getc(s)) >= 0 && eom (c, s)) + while ((c = Getc(s)) != EOF && eom (c, s)) ; - if (c >= 0) + if (c != EOF) Ungetc(c, s); *bufsz = *buf = 0; leave_getfld (s); @@ -510,13 +510,14 @@ m_getfld (m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz, case FLD: if (c == '\n' || c == '-') { /* we hit the header/body separator */ - while (c != '\n' && (c = Getc(s)) >= 0) continue; + while (c != '\n' && (c = Getc(s)) != EOF) + ; - if (c < 0 || (c = Getc(s)) < 0 || eom (c, s)) { + if (c == EOF || (c = Getc(s)) == EOF || eom (c, s)) { /* flush null messages */ - while ((c = Getc(s)) >= 0 && eom (c, s)) + while ((c = Getc(s)) != EOF && eom (c, s)) ; - if (c >= 0) + if (c != EOF) Ungetc(c, s); *bufsz = *buf = 0; leave_getfld (s); @@ -797,7 +798,8 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) if (i == sizeof from-1 && strncmp (text, "From ", sizeof from-1) == 0) { s->msg_style = MS_MBOX; delimstr = "\nFrom "; - while ((c = Getc (s)) != '\n' && c >= 0) continue; + while ((c = Getc(s)) != EOF && c != '\n') + ; } else { /* not a Unix style maildrop */ s->readpos -= s->bytes_read; @@ -830,9 +832,9 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) if (s->msg_style == MS_MMDF) { /* flush extra msg hdrs */ - while ((c = Getc(s)) >= 0 && eom (c, s)) + while ((c = Getc(s)) != EOF && eom (c, s)) ; - if (c >= 0) + if (c != EOF) Ungetc(c, s); } @@ -880,9 +882,8 @@ m_Eom (m_getfld_state_t s) if (s->msg_style == MS_MBOX) { int c; - while ((c = Getc (s)) != '\n') - if (c < 0) - break; + while ((c = Getc(s)) != EOF && c != '\n') + ; } return 1;