+ int state;
+};
+
+void
+m_getfld_state_init (m_getfld_state_t *s) {
+ *s = (m_getfld_state_t) mh_xmalloc(sizeof (struct m_getfld_state));
+ (*s)->readpos = (*s)->end = (*s)->msg_buf;
+ (*s)->bytes_read = (*s)->total_bytes_read = 0;
+ (*s)->last_caller_pos = (*s)->last_internal_pos = 0;
+ /* (*s)->iob gets loaded on every call to m_getfld()/m_unknown(). */
+ (*s)->pat_map = NULL;
+ (*s)->msg_style = MS_DEFAULT;
+ (*s)->msg_delim = "";
+ (*s)->fdelim = (*s)->delimend = (*s)->edelim = NULL;
+ (*s)->fdelimlen = (*s)->edelimlen = 0;
+ (*s)->eom_action = NULL;
+ (*s)->state = FLD;
+}
+
+/* scan() needs to force a state an initial state of FLD for each message. */
+void
+m_getfld_state_reset (m_getfld_state_t *s) {
+ (*s)->state = FLD;
+}
+
+void m_getfld_state_destroy (m_getfld_state_t *s) {
+ if (*s) {
+ free (*s);
+ *s = 0;
+ }
+}