more duplicate detect; also copy-and-paste for vt_tiledata entry left it enabled by default

This commit is contained in:
nhmall
2020-03-01 10:48:46 -05:00
parent 99035e72ee
commit 058fbc1cd5
2 changed files with 16 additions and 13 deletions

View File

@@ -70,8 +70,8 @@ pfx_##a,
#endif
/* B:nm, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, boolptr */
/* C:nm, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, descr */
/* P:pfx, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, descr */
/* C:nm, ln, opt_*, setwhere?, negateok?, valok?, dupok?, hndlr? Alias, desc */
/* P:pfx, ln, opt_*, setwhere?, negateok?, valok?, dupok?, hndlr? Alias, desc*/
NHOPTB(acoustics, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.acoustics)
@@ -518,10 +518,10 @@ pfx_##a,
"video height")
#endif
#ifdef TTY_TILES_ESCCODES
NHOPTB(vt_tiledata, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
NHOPTB(vt_tiledata, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
&iflags.vt_tiledata)
#else
NHOPTB(vt_tiledata, 0, opt_out, set_in_config, On, Yes, No, No, NoAlias,
NHOPTB(vt_tiledata, 0, opt_in, set_in_config, Off, Yes, No, No, NoAlias,
(boolean *) 0)
#endif
NHOPTC(warnings, 10, opt_in, set_in_config, No, Yes, No, No, NoAlias,

View File

@@ -107,7 +107,7 @@ extern char ttycolors[CLR_MAX]; /* in sys/msdos/video.c */
#endif
static char empty_optstr[] = { '\0' };
boolean duplicate;
boolean duplicate, using_alias;
static const char def_inv_order[MAXOCLASSES] = {
COIN_CLASS, AMULET_CLASS, WEAPON_CLASS, ARMOR_CLASS, FOOD_CLASS,
@@ -311,6 +311,7 @@ boolean tinitial, tfrom_file;
boolean retval = TRUE;
duplicate = FALSE;
using_alias = FALSE;
g.opt_initial = tinitial;
g.opt_from_file = tfrom_file;
if ((op = index(opts, ',')) != 0) {
@@ -405,6 +406,7 @@ boolean tinitial, tfrom_file;
allopt[i].valok);
if (got_match) {
matchidx = i;
using_alias = TRUE;
break;
}
}
@@ -4518,10 +4520,6 @@ char *op;
if (!g.opt_initial && (allopt[optidx].setwhere == set_in_config))
return optn_err;
/* 0 means boolean opts */
if (duplicate_opt_detection(optidx))
complain_about_duplicate(optidx);
op = string_for_opt(opts, TRUE);
if (op != empty_optstr) {
if (negated) {
@@ -5801,7 +5799,7 @@ duplicate_opt_detection(optidx)
int optidx;
{
if (g.opt_initial && g.opt_from_file)
return allopt[optidx].dupdetected;
return allopt[optidx].dupdetected++;
return FALSE;
}
@@ -5809,15 +5807,20 @@ static void
complain_about_duplicate(optidx)
int optidx;
{
char buf[BUFSZ];
#ifdef MAC
/* the Mac has trouble dealing with the output of messages while
* processing the config file. That should get fixed one day.
* For now just return.
*/
#else /* !MAC */
config_error_add("%s option specified multiple times: %s",
buf[0] = '\0';
if (using_alias)
Sprintf(buf, " (via alias: %s)", allopt[optidx].alias);
config_error_add("%s option specified multiple times: %s%s",
(allopt[optidx].opttyp == CompOpt) ? "compound" : "boolean",
allopt[optidx].name);
allopt[optidx].name, buf);
#endif /* ?MAC */
return;
}
@@ -7076,7 +7079,7 @@ char **opp;
return FALSE;
}
} else {
if (duplicate_opt_detection(optidx))
if (duplicate && !allopt[optidx].dupeok)
complain_about_duplicate(optidx);
*opp = op;
return TRUE;