diff --git a/src/lib/common/xundump.c b/src/lib/common/xundump.c index e34dcb3a..68d894ab 100644 --- a/src/lib/common/xundump.c +++ b/src/lib/common/xundump.c @@ -53,7 +53,7 @@ static char *fname; static int lineno; static int human; -static int ellipsis, need_uid; +static int ellipsis, is_partial; static int cur_type, cur_id; static void *cur_obj; static int nflds; @@ -325,7 +325,7 @@ defellipsis(int fldno) if (ca[0].ca_table != cur_type) return gripe("Table %s doesn't support ...", ef_nameof(cur_type)); ellipsis = fldno; - need_uid = 1; + is_partial = 1; return 0; } @@ -335,9 +335,12 @@ chkflds(void) struct castr *ca = ef_cadef(cur_type); int i, len, res = 0; - if (need_uid) { + if (is_partial) { + /* Require index field */ if (!caflds[0]) return gripe("Header field %s required with ...", ca[0].ca_name); + /* Want the index field again in continued table: */ + caflds[0] = 0; return 0; } @@ -659,8 +662,6 @@ xuheader1(FILE *fp, int type, struct castr ca[]) int ch, i, j, n; if (human) { - /* Allow repetition of the index field in continued table: */ - caflds[0] = 0; while ((ch = skipfs(fp)) == '\n') lineno++; ungetc(ch, fp); @@ -760,7 +761,7 @@ xundump(FILE *fp, char *file, int expected_table) static int xundump2(FILE *fp, int type, struct castr *ca) { - need_uid = 0; + is_partial = 0; for (;;) { if (xuheader1(fp, type, ca) < 0)