better error handling
[mmh] / sbr / readconfig.c
index 6975d72..45e1cb6 100644 (file)
@@ -48,6 +48,9 @@ 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 = mh_xcalloc(1, sizeof(*np));
                        *npp = np;
@@ -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);
                }