xundump: Report all missing fields, not just first one

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2014-02-02 12:24:22 +01:00
parent 41f00fdd33
commit 67425a06d9
4 changed files with 31 additions and 9 deletions

View 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':

View 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

View 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

View file

@ -1,3 +1,4 @@
XDUMP product 0
config product
uid name sname ct(0) ...
0 "iron\040ore" "iron"
# Field ctype(0) missing