Fix uip/whom.c for C89 compatibility
[mmh] / uip / prompter.c
index c715cb7..7f71e02 100644 (file)
@@ -38,6 +38,7 @@ static struct swit switches[] = {
        { NULL, 0 }
 };
 
+char *version=VERSION;
 
 volatile sig_atomic_t wtuser = 0;
 volatile sig_atomic_t sigint = 0;
@@ -57,7 +58,7 @@ main(int argc, char **argv)
        int fdi, fdo, i;
        char *cp, *drft = NULL;
        enum state state;
-       struct field f = free_field;
+       struct field f = {{0}};
        char buffer[BUFSIZ], tmpfil[BUFSIZ];
        char **arguments, **argp;
        FILE *in, *out;
@@ -140,6 +141,10 @@ main(int argc, char **argv)
        */
        for (state = FLD2;;) {
                switch (state = m_getfld2(state, &f, in)) {
+               case LENERR2:
+                       state = FLD2;
+                       /* FALL */
+
                case FLD2:
                        /*
                        ** Check if the value of field contains
@@ -212,6 +217,9 @@ abort:
                                        }
                                } while ((state = m_getfld2(state, &f, in))
                                                ==BODY2);
+                               if (state != FILEEOF2) {
+                                       adios(EX_IOERR, "m_getfld2", "io error");
+                               }
                        }
 
                        if (prepend || !qbody) {
@@ -230,8 +238,11 @@ has_no_body:
                        }
                        break;
 
+               case FMTERR2:
+                       advise(NULL, "skeleton is poorly formatted");
+                       continue;
                default:
-                       adios(EX_DATAERR, NULL, "skeleton is poorly formatted");
+                       adios(EX_IOERR, "m_getfld2", "io error");
                }
                break;
        }