X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=sbr%2Freadconfig.c;h=6253c233b5ee17562c4e152c393bf11a646a9796;hp=ccdf867c63cec3d1c2988ed6feeef48846daf1bb;hb=d4bcca1aa235370bc20bc2734c0cd6f700b17871;hpb=1e99819ed105950cd584c71fa4b2e36b038be102 diff --git a/sbr/readconfig.c b/sbr/readconfig.c index ccdf867..6253c23 100644 --- a/sbr/readconfig.c +++ b/sbr/readconfig.c @@ -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 happend"); + break; + default: adios(EX_CONFIG, NULL, "%s is poorly formatted", file); }