X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Fseq_read.c;h=1929b263f8400d392c4f93ee78b07e2861b57c1e;hp=ff01c427a94f3cd4a5e41a39e1ab26e6a69f53ca;hb=cdb32d069bdcb6fa04ca7e3d87240442665611b0;hpb=cf1205b5cbea2f0cd6ea710ec16c637df85b647c diff --git a/sbr/seq_read.c b/sbr/seq_read.c index ff01c42..1929b26 100644 --- a/sbr/seq_read.c +++ b/sbr/seq_read.c @@ -55,9 +55,9 @@ seq_read(struct msgs *mp) static void seq_public(struct msgs *mp) { - int state; - char *cp, seqfile[PATH_MAX]; - char name[NAMESZ], field[BUFSIZ]; + enum state state; + struct field f = {{0}}; + char seqfile[PATH_MAX]; FILE *fp; /* @@ -74,41 +74,24 @@ seq_public(struct msgs *mp) return; /* Use m_getfld to scan sequence file */ - for (state = FLD;;) { - switch (state = m_getfld(state, name, field, sizeof(field), - fp)) { - case FLD: - case FLDPLUS: - case FLDEOF: - if (state == FLDPLUS) { - cp = getcpy(field); - while (state == FLDPLUS) { - state = m_getfld(state, name, field, - sizeof(field), fp); - cp = add(field, cp); - } - seq_init(mp, getcpy(name), trimcpy(cp)); - free(cp); - } else { - seq_init(mp, getcpy(name), trimcpy(field)); - } - if (state == FLDEOF) - break; + for (state = FLD2;;) { + switch (state = m_getfld2(state, &f, fp)) { + case FLD2: + seq_init(mp, getcpy(f.name), trimcpy(f.value)); continue; - case BODY: - case BODYEOF: + case BODY2: adios(EX_CONFIG, NULL, "no blank lines are permitted in %s", seqfile); - /* fall */ + /* FALL */ - case FILEEOF: + case FILEEOF2: break; default: adios(EX_CONFIG, NULL, "%s is poorly formatted", seqfile); } - break; /* break from for loop */ + break; } lkfclose(fp, seqfile);