X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Freadconfig.c;h=6253c233b5ee17562c4e152c393bf11a646a9796;hb=c93521777fac4d553a5fe4410ab8fc3e9b9b7ed8;hp=ccdf867c63cec3d1c2988ed6feeef48846daf1bb;hpb=cdb32d069bdcb6fa04ca7e3d87240442665611b0;p=mmh 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); }