redesign version string
[mmh] / uip / whom.c
index d313f05..64ec7c9 100644 (file)
@@ -37,6 +37,7 @@ static struct swit switches[] = {
        { NULL, 0 }
 };
 
+char *version=VERSION;
 
 #define NFILES 32
 
@@ -167,7 +168,7 @@ main(int argc, char **argv)
                }
                pclose(in);
        }
-       free(cmd);
+       mh_free0(&cmd);
        naddrs += n;
 
        cmd = add("ali -list", NULL);
@@ -180,7 +181,7 @@ main(int argc, char **argv)
                }
                pclose(in);
        }
-       free(cmd);
+       mh_free0(&cmd);
        naddrs += n;
 
        cmd = add("ali -list", NULL);
@@ -193,7 +194,7 @@ main(int argc, char **argv)
                }
                pclose(in);
        }
-       free(cmd);
+       mh_free0(&cmd);
        naddrs += n;
 
        return naddrs ? 0 : 1;
@@ -203,9 +204,9 @@ main(int argc, char **argv)
 static int
 process(char *file)
 {
-        int state, compnum;
-       char *cp = NULL;
-       char buf[BUFSIZ], name[NAMESZ];
+       enum state state;
+       struct field f = {{0}};
+       int compnum;
        FILE *in;
 
 
@@ -213,31 +214,24 @@ process(char *file)
                adios(EX_IOERR, file, "unable to open");
        }
 
-       for (compnum = 1, state = FLD;;) {
-               switch (state = m_getfld(state, name, buf, sizeof(buf), in)) {
-               case FLD:
-                       compnum++;
-                       proc_hdr(name, buf);
+       for (compnum=1, state=FLD2;; compnum++) {
+               switch (state = m_getfld2(state, &f, in)) {
+               case LENERR2:
+                       state = FLD2;
+                       /* FALL */
+               case FLD2:
+                       proc_hdr(f.name, f.value);
                        continue;
 
-               case FLDPLUS:
-                       compnum++;
-                       cp = getcpy(buf);
-                       while (state == FLDPLUS) {
-                               state = m_getfld(state, name, buf,
-                                               sizeof(buf), in);
-                               cp = add(buf, cp);
-                       }
-                       proc_hdr(name, cp);
-                       free(cp);
-                       continue;
-
-               case BODY:
-               case FILEEOF:
+               case BODY2:
+               case FILEEOF2:
                        break;
 
-               case LENERR:
-               case FMTERR:
+               case FMTERR2:
+                       advise(NULL, "message format error in component #%d", compnum);
+                       continue;
+
+               case IOERR2:
                        adios(EX_DATAERR, NULL, "message format error in component #%d",
                                        compnum);