X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Freadconfig.c;h=91d2b4ede5922fdc2c5b840d4d330a3d3aa0003c;hp=645a9efe269a0b4a0596d07a5b11d33a56fd42f6;hb=31750e8a12eafcd1b8fa81cb12b988e680254f24;hpb=a87df3543d3bc128ba4079d1f95638476ba5ca50 diff --git a/sbr/readconfig.c b/sbr/readconfig.c index 645a9ef..91d2b4e 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 formatted", 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 happened"); + break; + default: adios(EX_CONFIG, NULL, "%s is poorly formatted", file); }