- for (state = FLD;;) {
- state = m_getfld(state, name, rbuf, sizeof(rbuf), in);
- switch (state) {
- case FLD:
- case FLDPLUS:
- i = fmt_addcomptext(name, rbuf);
- if (i != -1) {
- while (state == FLDPLUS) {
- state = m_getfld(state, name, rbuf,
- sizeof(rbuf), in);
- fmt_appendcomp(i, name, rbuf);
- }
- }
-
- while (state == FLDPLUS)
- state = m_getfld(state, name, rbuf,
- sizeof(rbuf), 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;
+
+ if (fstat(fileno(in), &st) < 0)
+ dat[2] = 0;
+ else
+ dat[2] = st.st_size;
+ }