X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fm_getfld2.c;h=970a3f03b0b5600b1477a48e52a0fa3f046b0210;hp=de38435c01267e1a328721834f5d98d3c2a81321;hb=2c31657cf61e7fe818571f3c60f168d3210988ab;hpb=e3589a920c43d8f4c7967a4884238658076114a1 diff --git a/sbr/m_getfld2.c b/sbr/m_getfld2.c index de38435..970a3f0 100644 --- a/sbr/m_getfld2.c +++ b/sbr/m_getfld2.c @@ -48,29 +48,29 @@ m_getfld2(enum state s, struct field *f, FILE *msg) ssize_t nchars; enum threestate falted; - nchars = getline(&tmpline, &len, msg); - if (nchars < 1) { - if (feof(msg)) { - return FILEEOF2; - } else { - return IOERR2; + switch (s) { + case FLD2: + nchars = getline(&tmpline, &len, msg); + if (nchars < 1) { + if (feof(msg)) { + return FILEEOF2; + } else { + return IOERR2; + } } - } - *f->name = '\0'; - f->namelen = 0; + *f->name = '\0'; + f->namelen = 0; - if (nchars >= NAMESZ) { - if (f->value) { - free(f->value); + if (nchars >= NAMESZ) { + if (f->value) { + free(f->value); + } + f->value = tmpline; + f->valuelen = nchars; + return LENERR2; } - f->value = tmpline; - f->valuelen = nchars; - return LENERR2; - } - switch (s) { - case FLD2: if (*(tmpline + nchars - 1) != '\n') { if (f->value) { free(f->value); @@ -151,6 +151,26 @@ m_getfld2(enum state s, struct field *f, FILE *msg) return FLD2; case BODY2: + nchars = getline(&tmpline, &len, msg); + if (nchars < 1) { + if (feof(msg)) { + return FILEEOF2; + } else { + return IOERR2; + } + } + + *f->name = '\0'; + f->namelen = 0; + + if (nchars >= NAMESZ) { + if (f->value) { + free(f->value); + } + f->value = tmpline; + f->valuelen = nchars; + return LENERR2; + } if (f->value) { free(f->value); }