- switch (state = m_getfld (state, name, buf, sizeof buf, fp)) {
- case FLD:
- case FLDEOF:
- case FLDPLUS:
- if (bp != NULL)
- free (bp), bp = NULL;
- bp = add (buf, NULL);
- while (state == FLDPLUS) {
- state = m_getfld (state, name, buf,
- sizeof buf, fp);
- bp = add (buf, bp);
- }
- if (!mh_strcasecmp (name, n->n_datef))
- break;
- if (state != FLDEOF)
- continue;
-
- case BODY:
- case BODYEOF:
- case FILEEOF:
- case LENERR:
- case FMTERR:
- if (state == LENERR || state == FMTERR)
- advise (NULL, "format error in message %d", msgnum);
- if (bp != NULL)
- free (bp);
- return 0;
-
- default:
- adios (NULL, "internal error -- you lose");
+ switch (state = m_getfld(state, name, buf, sizeof buf, fp)) {
+ case FLD:
+ case FLDEOF:
+ case FLDPLUS:
+ if (bp != NULL)
+ free(bp), bp = NULL;
+ bp = getcpy(buf);
+ while (state == FLDPLUS) {
+ state = m_getfld(state, name, buf,
+ sizeof buf, fp);
+ bp = add(buf, bp);
+ }
+ if (!mh_strcasecmp(name, n->n_datef))
+ break;
+ if (state != FLDEOF)
+ continue;
+
+ case BODY:
+ case BODYEOF:
+ case FILEEOF:
+ case LENERR:
+ case FMTERR:
+ if (state == LENERR || state == FMTERR)
+ advise(NULL, "format error in message %d", msgnum);
+ if (bp != NULL)
+ free(bp);
+ return 0;
+
+ default:
+ adios(NULL, "internal error -- you lose");