X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/0ff76f3b2823f98e75b76dc93f2b5be293171610..4fb142af4ad2ca73d141cc04af24e7c1b62f8a77:/sbr/m_getfld.c diff --git a/sbr/m_getfld.c b/sbr/m_getfld.c index f674792e..2b585541 100644 --- a/sbr/m_getfld.c +++ b/sbr/m_getfld.c @@ -60,10 +60,13 @@ Usage ===== - m_getfld_state_t gstate = 0; - ... - int state = m_getfld (&gstate, ...); - ... + m_getfld_state_t gstate; + + gstate = m_getfld_state_init(mailfp); + Perhaps m_getfld_track_filepos2(&gstate); + ... + state = m_getfld2(&gstate, ...); + ...Repeat until finished with mailfp. m_getfld_state_destroy (&gstate); The state is retained internally by gstate. To reset its state to FLD: @@ -91,7 +94,7 @@ 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 + the eom() macro returns false saying we aren't at the end of the message. The next thing to do is to read the mts.conf file and initialize @@ -350,7 +353,7 @@ m_getfld_track_filepos (m_getfld_state_t *gstate, FILE *iob) { void m_getfld_track_filepos2(m_getfld_state_t *gstate) { if (!*gstate) - adios(NULL, "m_getfld_track_filepos2 without gstate"); + die("m_getfld_track_filepos2 without gstate"); m_getfld_track_filepos(gstate, (*gstate)->iob); } @@ -544,7 +547,7 @@ static void Ungetc(m_getfld_state_t s) { if (s->readpos == s->msg_buf) - adios(NULL, "Ungetc() at start of message buffer."); + die("Ungetc() at start of message buffer."); s->readpos--; s->bytes_read--; @@ -688,12 +691,10 @@ m_getfld (m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz, * characters up to the end of this field (newline * followed by non-blank) or bufsz-1 characters. */ - int finished; - cp = buf; max = *bufsz-1; n = 0; - for (finished = 0; ! finished; ) { + for (bool finished = false; !finished; ) { while (c != '\n' && c != EOF && n++ < max) { if ((c = Getc (s)) != EOF) *cp++ = c; @@ -713,14 +714,14 @@ m_getfld (m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz, --s->bytes_read; } s->state = FLDPLUS; - finished = 1; + finished = true; } else if (c != ' ' && c != '\t') { /* The next character is not folded whitespace, so prepare to move on to the next field. It's OK if c is EOF, it will be handled on the next call to m_getfld (). */ s->state = FLD; - finished = 1; + finished = true; } else { /* Folded header field, continues on the next line. */ } @@ -830,7 +831,7 @@ m_getfld (m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz, } default: - adios (NULL, "m_getfld() called with bogus state of %d", s->state); + die("m_getfld() called with bogus state of %d", s->state); } *cp = 0; @@ -844,7 +845,7 @@ m_getfld (m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz, int m_getfld2(m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz) { if (!*gstate) - adios(NULL, "m_getfld2 without gstate"); + die("m_getfld2 without gstate"); return m_getfld(gstate, name, buf, bufsz, (*gstate)->iob); } @@ -915,7 +916,7 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) s->edelimlen = c - 1; s->delimend = s->msg_delim + s->edelimlen; if (s->edelimlen <= 1) - adios (NULL, "maildrop delimiter must be at least 2 bytes"); + die("maildrop delimiter must be at least 2 bytes"); /* * build a Boyer-Moore end-position map for the matcher in m_getfld. @@ -923,7 +924,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 **) mh_xcalloc (256, sizeof(char *)); + s->pat_map = mh_xcalloc (256, sizeof(char *)); for (cp = s->fdelim + 1; cp < s->delimend; cp++ ) s->pat_map[(unsigned char)*cp] = cp; @@ -944,7 +945,7 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) void m_unknown2(m_getfld_state_t *gstate) { if (!*gstate) - adios(NULL, "m_unknown2 without gstate"); + die("m_unknown2 without gstate"); m_unknown(gstate, (*gstate)->iob); }