* NP points to the country to use for coordinate translation and
* access control (null for none), and CTXO is the context object.
* See struct valstr for details.
+ * Because virtual selectors don't have a setter method, xundump must
+ * be made to ignore them, e.g. by setting NSC_EXTRA.
* If flag NSC_DEITY is set, only to deities can use this selector.
- * If flag NSC_EXTRA is set, xdump ignores this selector.
+ * If flag NSC_EXTRA is set, xdump and xundump ignore this selector.
* If flag NSC_CONST is set, the datum can't be changed from its
* initial value (xundump obeys that).
* If ca_table is not EF_BAD, the datum refers to that Empire table;
* - Check each partial table supplies the same rows
* - Check EFF_CFG tables are dense
* - Symbolic array indexes
+ * - Option to treat missing and unknown fields as warning, not error
* TODO, but hardly worth the effort:
* - Permit reordering of array elements
*/
if (res < 0)
return gripe("Header %s of field %d is %s", name, fldno + 1,
res == M_NOTUNIQUE ? "ambiguous" : "unknown");
- if (ca[res].ca_flags == NSC_EXTRA)
+ if (ca[res].ca_flags == NSC_EXTRA || CANT_HAPPEN(ca[res].ca_get))
return gripe("Extraneous header %s in field %d", name, fldno + 1);
if (ca[res].ca_type != NSC_STRINGY && ca[res].ca_len != 0) {
if (idx < 0)