X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/b3bcb44d340fd017efac8bb31c3859dd91b24af3..670a0d84c25b458bbb348d2a1ecee178cfa6c226:/sbr/m_getfld.c diff --git a/sbr/m_getfld.c b/sbr/m_getfld.c index a8377bf7..940b3efc 100644 --- a/sbr/m_getfld.c +++ b/sbr/m_getfld.c @@ -5,9 +5,11 @@ * complete copyright information. */ -#include -#include -#include +#include "h/mh.h" +#include "m_getfld.h" +#include "error.h" +#include "h/mts.h" +#include "h/utils.h" #include /* @@ -331,7 +333,8 @@ m_getfld_state_t m_getfld_state_init(FILE *iob) /* scan() needs to force an initial state of FLD for each message. */ void -m_getfld_state_reset (m_getfld_state_t *gstate) { +m_getfld_state_reset (m_getfld_state_t *gstate) +{ if (*gstate) { (*gstate)->state = FLD; } @@ -341,7 +344,8 @@ m_getfld_state_reset (m_getfld_state_t *gstate) { calls, m_getfld() must keep track of the file position. The caller must use this function to inform m_getfld(). */ void -m_getfld_track_filepos (m_getfld_state_t *gstate, FILE *iob) { +m_getfld_track_filepos (m_getfld_state_t *gstate, FILE *iob) +{ if (! *gstate) { *gstate = m_getfld_state_init(iob); } @@ -350,15 +354,18 @@ m_getfld_track_filepos (m_getfld_state_t *gstate, FILE *iob) { } /* m_getfld_track_filepos() with the existing iob. */ -void m_getfld_track_filepos2(m_getfld_state_t *gstate) +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); } -void m_getfld_state_destroy (m_getfld_state_t *gstate) { +void +m_getfld_state_destroy (m_getfld_state_t *gstate) +{ m_getfld_state_t s = *gstate; if (s) { @@ -401,7 +408,8 @@ void m_getfld_state_destroy (m_getfld_state_t *gstate) { static void -enter_getfld (m_getfld_state_t *gstate, FILE *iob) { +enter_getfld (m_getfld_state_t *gstate, FILE *iob) +{ m_getfld_state_t s; off_t pos; off_t pos_movement; @@ -475,7 +483,8 @@ enter_getfld (m_getfld_state_t *gstate, FILE *iob) { } static void -leave_getfld (m_getfld_state_t s) { +leave_getfld (m_getfld_state_t s) +{ s->total_bytes_read += s->bytes_read; if (s->track_filepos) { @@ -493,7 +502,8 @@ leave_getfld (m_getfld_state_t s) { } static size_t -read_more (m_getfld_state_t s) { +read_more (m_getfld_state_t s) +{ /* Retain at least edelimlen characters that have already been read, if at least edelimlen have been read, so that we can back up to them in m_Eom(). */ @@ -519,7 +529,8 @@ read_more (m_getfld_state_t s) { /* Return the next character consumed from the input, fetching more of * the input for the buffer if required, or EOF on end of file. */ static int -Getc (m_getfld_state_t s) { +Getc (m_getfld_state_t s) +{ if ((s->end - s->readpos < 1 && read_more (s) == 0) || s->readpos >= s->end) return EOF; @@ -547,7 +558,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--; @@ -691,12 +702,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; @@ -716,14 +725,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. */ } @@ -833,7 +842,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,10 +853,11 @@ m_getfld (m_getfld_state_t *gstate, char name[NAMESZ], char *buf, int *bufsz, /* m_getfld() with the existing iob. */ -int m_getfld2(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); } @@ -918,7 +928,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. @@ -944,10 +954,11 @@ m_unknown(m_getfld_state_t *gstate, FILE *iob) /* m_unknown() with the existing iob. */ -void m_unknown2(m_getfld_state_t *gstate) +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); }