To make XBoard better resistant to the presence of disbanded or future
options in its settings file, encountering those is no longer a fatal error.
But the error recovery only consisted of skipping the rest of the line.
This fails badly on string options with a multi-line value, which is
enclosed by {braces}. We now detect that case, to skip to } instead.
for (ad = argDescriptors; ad->argName != NULL; ad++)
if (strcmp(ad->argName, argName + 1) == 0) break;
if (ad->argName == NULL) {
+ char endChar = (ch && ch != '\n' && (ch = get(cl)) == '{' ? '}' : '\n');
ExitArgError(_("Unrecognized argument %s"), argName, get != &FileGet); // [HGM] make unknown argument non-fatal
- while (ch != '\n' && ch != NULLCHAR) ch = get(cl); // but skip rest of line it is on
+ while (ch != endChar && ch != NULLCHAR) ch = get(cl); // but skip rest of line it is on (or until closing '}' )
continue; // so that when it is in a settings file, it is the only setting that will be purged from it
}
} else if (ch == '@') {