X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Freadconfig.c;h=645a9efe269a0b4a0596d07a5b11d33a56fd42f6;hp=bc9329f451ef321dd700b4feaf0cf6d6816c06f0;hb=a87df3543d3bc128ba4079d1f95638476ba5ca50;hpb=4dc39c08f07428ff5f39acd7b0ddee30e0a004f6 diff --git a/sbr/readconfig.c b/sbr/readconfig.c index bc9329f..645a9ef 100644 --- a/sbr/readconfig.c +++ b/sbr/readconfig.c @@ -36,9 +36,8 @@ static struct node **opp = NULL; void readconfig(struct node **npp, FILE *ib, char *file, int ctx) { - int state; - char *cp; - char name[NAMESZ], field[BUFSIZ]; + enum state state; + struct field f = free_field; struct node *np; struct procstr *ps; @@ -47,46 +46,34 @@ readconfig(struct node **npp, FILE *ib, char *file, int ctx) return; } - for (state = FLD;;) { - switch (state = m_getfld(state, name, field, sizeof(field), - ib)) { - case FLD: - case FLDPLUS: + for (state = FLD2;;) { + switch (state = m_getfld2(state, &f, ib)) { + case FLD2: np = (struct node *) mh_xmalloc(sizeof(*np)); *npp = np; *(npp = &np->n_next) = NULL; - np->n_name = getcpy(name); - if (state == FLDPLUS) { - cp = getcpy(field); - while (state == FLDPLUS) { - state = m_getfld(state, name, field, - sizeof(field), ib); - cp = add(field, cp); - } - np->n_field = trimcpy(cp); - free(cp); - } else { - np->n_field = trimcpy(field); - } + np->n_name = getcpy(f.name); + np->n_field = trimcpy(f.value); np->n_context = ctx; /* ** Now scan the list of `procs' and link in ** the field value to the global variable. */ - for (ps = procs; ps->procname; ps++) + for (ps = procs; ps->procname; ps++) { if (mh_strcasecmp(np->n_name, ps->procname) == 0) { *ps->procnaddr = np->n_field; break; } + } continue; - case BODY: + case BODY2: adios(EX_CONFIG, NULL, "no blank lines are permitted in %s", file); - case FILEEOF: + case FILEEOF2: break; default: