X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=uip%2Fwhom.c;h=c4e7e8f87497fa1bee07e0ed603280babc472441;hp=d313f05656097d0621b3e609404131abc029e75a;hb=a87df3543d3bc128ba4079d1f95638476ba5ca50;hpb=ca2931beaec23f8e1d2f98d15d7e9974009278b0 diff --git a/uip/whom.c b/uip/whom.c index d313f05..c4e7e8f 100644 --- a/uip/whom.c +++ b/uip/whom.c @@ -203,9 +203,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 = free_field; + int compnum; FILE *in; @@ -213,31 +213,19 @@ 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 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 LENERR2: + case FMTERR2: + case IOERR2: adios(EX_DATAERR, NULL, "message format error in component #%d", compnum);