- for (state = FLD;;) {
- bufsz = sizeof(rbuf);
- state = m_getfld(&gstate, name, rbuf, &bufsz, in);
- switch (state) {
- case FLD:
- case FLDPLUS:
- i = fmt_addcomptext(name, rbuf);
- if (i != -1) {
- while (state == FLDPLUS) {
- bufsz = sizeof(rbuf);
- state = m_getfld(&gstate, name, rbuf, &bufsz, in);
- fmt_appendcomp(i, name, rbuf);
- }
- }
-
- while (state == FLDPLUS) {
- bufsz = sizeof(rbuf);
- state = m_getfld(&gstate, name, rbuf, &bufsz, in);
- }
- break;
+ process_single_file(in, comps, dat, msgsize, fmt, buffer,
+ outwidth, cb);
+ }
+ }
+
+ ivector_free (seqnum);
+ folder_free(mp);
+ return;
+}
+
+/*
+ * Process a single file in message mode
+ */
+
+static void
+process_single_file(FILE *in, struct msgs_array *comps, int *dat, int msgsize,
+ struct format *fmt, charstring_t buffer, int outwidth,
+ struct fmt_callbacks *cb)
+{
+ int i, state;
+ char name[NAMESZ], rbuf[NMH_BUFSIZ];
+ m_getfld_state_t gstate = 0;
+ struct comp *c;
+ int bufsz;
+
+ /*
+ * Get our size if we didn't include one
+ */
+
+ if (msgsize == -1) {
+ struct stat st;