X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Freadconfig.c;h=45e1cb6fcc21b62d3b4d17eaca36ff0a3192c914;hp=645a9efe269a0b4a0596d07a5b11d33a56fd42f6;hb=1fb6287fc4986668e8f49d7c3bdca27d53e267af;hpb=a87df3543d3bc128ba4079d1f95638476ba5ca50 diff --git a/sbr/readconfig.c b/sbr/readconfig.c index 645a9ef..45e1cb6 100644 --- a/sbr/readconfig.c +++ b/sbr/readconfig.c @@ -37,7 +37,7 @@ void readconfig(struct node **npp, FILE *ib, char *file, int ctx) { enum state state; - struct field f = free_field; + struct field f = {{0}}; struct node *np; struct procstr *ps; @@ -48,11 +48,14 @@ readconfig(struct node **npp, FILE *ib, char *file, int ctx) for (state = FLD2;;) { switch (state = m_getfld2(state, &f, ib)) { + case LENERR2: + state = FLD2; + /* FALL */ case FLD2: - np = (struct node *) mh_xmalloc(sizeof(*np)); + np = mh_xcalloc(1, sizeof(*np)); *npp = np; *(npp = &np->n_next) = NULL; - np->n_name = getcpy(f.name); + np->n_name = mh_xstrdup(f.name); np->n_field = trimcpy(f.value); np->n_context = ctx; @@ -68,7 +71,10 @@ readconfig(struct node **npp, FILE *ib, char *file, int ctx) } } continue; - + case FMTERR2: + advise(NULL, "%s is poorly formated", file); + state = FLD2; + continue; case BODY2: adios(EX_CONFIG, NULL, "no blank lines are permitted in %s", file); @@ -76,6 +82,10 @@ readconfig(struct node **npp, FILE *ib, char *file, int ctx) case FILEEOF2: break; + case IOERR2: + adios(EX_IOERR, NULL, "m_getfld2", "some error happend"); + break; + default: adios(EX_CONFIG, NULL, "%s is poorly formatted", file); }