]> git.pond.sub.org Git - empserver/commitdiff
xundump: Report all missing fields, not just first one
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 2 Feb 2014 11:24:22 +0000 (12:24 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 1 Feb 2015 15:52:59 +0000 (16:52 +0100)
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/lib/common/xundump.c
tests/empdump/errors.err
tests/empdump/xundump-errors/fld-miss
tests/empdump/xundump-errors/fld-miss2

index 9cd66bf1b4ff6de9863c9a654a350b4e46988afa..5426c47cd0a39095e2c9f0da8eb95c377e351b63 100644 (file)
@@ -424,7 +424,7 @@ xufldname(FILE *fp, int i)
 static int
 xufld(FILE *fp, int i)
 {
-    int ch;
+    int ch, j;
     char buf[1024];
     double dbl;
     long set;
@@ -435,14 +435,15 @@ xufld(FILE *fp, int i)
        return gripe("Unexpected EOF");
     case '\n':
        CANT_HAPPEN(i > nflds);
-       if (i < nflds) {
-           if (CA_IS_ARRAY(fldca[i]))
-               return gripe("Field %s(%d) missing",
-                            fldca[i]->ca_name, fldidx[i]);
-           return gripe("Field %s missing", fldca[i]->ca_name);
+       for (j = i; j < nflds; j++) {
+           if (CA_IS_ARRAY(fldca[j]))
+               gripe("Field %s(%d) missing",
+                     fldca[j]->ca_name, fldidx[j]);
+           else
+               gripe("Field %s missing", fldca[j]->ca_name);
        }
        lineno++;
-       return 0;
+       return i < nflds ? -1 : 0;
     case '+': case '-': case '.':
     case '0': case '1': case '2': case '3': case '4':
     case '5': case '6': case '7': case '8': case '9':
index 97db388c73125c452e94ba0c68ca0b43a2049881..3af703ca9e18f5d011666bd44ca00885910681fd 100644 (file)
@@ -56,7 +56,17 @@ tests/empdump/xundump-errors/fld-malnum:2: Malformed number in field 1
 tests/empdump/xundump-errors/fld-malstr:2: Malformed string in field 1
 tests/empdump/xundump-errors/fld-many:2: Too many fields, expected only 6
 tests/empdump/xundump-errors/fld-miss:2: Field name missing
-tests/empdump/xundump-errors/fld-miss2:2: Field ctype(0) missing
+tests/empdump/xundump-errors/fld-miss:2: Field mnem missing
+tests/empdump/xundump-errors/fld-miss:2: Field value missing
+tests/empdump/xundump-errors/fld-miss:2: Field sell missing
+tests/empdump/xundump-errors/fld-miss:2: Field lbs missing
+tests/empdump/xundump-errors/fld-miss:2: Field pkg(0) missing
+tests/empdump/xundump-errors/fld-miss:2: Field pkg(1) missing
+tests/empdump/xundump-errors/fld-miss:2: Field pkg(2) missing
+tests/empdump/xundump-errors/fld-miss:2: Field pkg(3) missing
+tests/empdump/xundump-errors/fld-miss:2: Field pkg(4) missing
+tests/empdump/xundump-errors/fld-miss:2: Field melt_denom missing
+tests/empdump/xundump-errors/fld-miss2:3: Field ctype(0) missing
 tests/empdump/xundump-errors/fld-nonil:3: Field 19 doesn't take nil
 tests/empdump/xundump-errors/fld-nonum:3: Field 2 doesn't take numbers
 tests/empdump/xundump-errors/fld-nostr:3: Field 1 doesn't take strings
index d92284ba7dfdc4d484a4969b3296a28005cbb705..b90739311f8e03eec3b628a5cefacd4baf4c2f73 100644 (file)
@@ -1,3 +1,13 @@
 XDUMP item 0
 0
 # Field name missing
+# Field mnem missing
+# Field value missing
+# Field sell missing
+# Field lbs missing
+# Field pkg(0) missing
+# Field pkg(1) missing
+# Field pkg(2) missing
+# Field pkg(3) missing
+# Field pkg(4) missing
+# Field melt_denom missing
index eaeb3c96f31ceb0b08c6fbf5f860c703c15705fa..586f6ef01ca327fc973151c98a48afb6d02194bb 100644 (file)
@@ -1,3 +1,4 @@
-XDUMP product 0
+config product
+uid name sname ct(0) ...
 0 "iron\040ore" "iron"
 # Field ctype(0) missing