- /* If so, just add header line to draft */
- if (*cp++ != '\n' || *cp != 0) {
- printf ("%s:%s", name, field);
- fprintf (out, "%s:%s", name, field);
- while (state == FLDPLUS) {
- state =
- m_getfld (state, name, field, sizeof(field), in);
- printf ("%s", field);
- fprintf (out, "%s", field);
- }
- } else {
- /* Else, get value of header field */
- printf ("%s: ", name);
- fflush (stdout);
- i = getln (field, sizeof(field));
- if (i == -1) {
+ sigint = 0;
+ SIGNAL2 (SIGINT, intrser);
+
+ /*
+ * Loop through the lines of the draft skeleton.
+ */
+ for (state = FLD;;) {
+ switch (state = m_getfld (state, name, field, sizeof(field), in)) {
+ case FLD:
+ case FLDEOF:
+ case FLDPLUS:
+ /*
+ * Check if the value of field contains anything
+ * other than space or tab.
+ */
+ for (cp = field; *cp; cp++)
+ if (*cp != ' ' && *cp != '\t')
+ break;
+
+ /* If so, just add header line to draft */
+ if (*cp++ != '\n' || *cp != 0) {
+ printf ("%s:%s", name, field);
+ fprintf (out, "%s:%s", name, field);
+ while (state == FLDPLUS) {
+ state =
+ m_getfld (state, name, field, sizeof(field), in);
+ printf ("%s", field);
+ fprintf (out, "%s", field);
+ }
+ } else {
+ /* Else, get value of header field */
+ printf ("%s: ", name);
+ fflush (stdout);
+ i = getln (field, sizeof(field));
+ if (i == -1) {