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 #endif
/* B:nm, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, boolptr */ /* B:nm, ln, opt_*, setwhere?, on?, negat?, val?, dup?, hndlr? Alias, boolptr */
/* C:nm, 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?, on?, negat?, val?, dup?, hndlr? Alias, descr */ /* P:pfx, ln, opt_*, setwhere?, negateok?, valok?, dupok?, hndlr? Alias, desc*/
NHOPTB(acoustics, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias, NHOPTB(acoustics, 0, opt_out, set_in_game, On, Yes, No, No, NoAlias,
&flags.acoustics) &flags.acoustics)
@@ -518,10 +518,10 @@ pfx_##a,
"video height") "video height")
#endif #endif
#ifdef TTY_TILES_ESCCODES #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) &iflags.vt_tiledata)
#else #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) (boolean *) 0)
#endif #endif
NHOPTC(warnings, 10, opt_in, set_in_config, No, Yes, No, No, NoAlias, 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 #endif
static char empty_optstr[] = { '\0' }; static char empty_optstr[] = { '\0' };
boolean duplicate; boolean duplicate, using_alias;
static const char def_inv_order[MAXOCLASSES] = { static const char def_inv_order[MAXOCLASSES] = {
COIN_CLASS, AMULET_CLASS, WEAPON_CLASS, ARMOR_CLASS, FOOD_CLASS, COIN_CLASS, AMULET_CLASS, WEAPON_CLASS, ARMOR_CLASS, FOOD_CLASS,
@@ -311,6 +311,7 @@ boolean tinitial, tfrom_file;
boolean retval = TRUE; boolean retval = TRUE;
duplicate = FALSE; duplicate = FALSE;
using_alias = FALSE;
g.opt_initial = tinitial; g.opt_initial = tinitial;
g.opt_from_file = tfrom_file; g.opt_from_file = tfrom_file;
if ((op = index(opts, ',')) != 0) { if ((op = index(opts, ',')) != 0) {
@@ -405,6 +406,7 @@ boolean tinitial, tfrom_file;
allopt[i].valok); allopt[i].valok);
if (got_match) { if (got_match) {
matchidx = i; matchidx = i;
using_alias = TRUE;
break; break;
} }
} }
@@ -4518,10 +4520,6 @@ char *op;
if (!g.opt_initial && (allopt[optidx].setwhere == set_in_config)) if (!g.opt_initial && (allopt[optidx].setwhere == set_in_config))
return optn_err; return optn_err;
/* 0 means boolean opts */
if (duplicate_opt_detection(optidx))
complain_about_duplicate(optidx);
op = string_for_opt(opts, TRUE); op = string_for_opt(opts, TRUE);
if (op != empty_optstr) { if (op != empty_optstr) {
if (negated) { if (negated) {
@@ -5801,7 +5799,7 @@ duplicate_opt_detection(optidx)
int optidx; int optidx;
{ {
if (g.opt_initial && g.opt_from_file) if (g.opt_initial && g.opt_from_file)
return allopt[optidx].dupdetected; return allopt[optidx].dupdetected++;
return FALSE; return FALSE;
} }
@@ -5809,15 +5807,20 @@ static void
complain_about_duplicate(optidx) complain_about_duplicate(optidx)
int optidx; int optidx;
{ {
char buf[BUFSZ];
#ifdef MAC #ifdef MAC
/* the Mac has trouble dealing with the output of messages while /* the Mac has trouble dealing with the output of messages while
* processing the config file. That should get fixed one day. * processing the config file. That should get fixed one day.
* For now just return. * For now just return.
*/ */
#else /* !MAC */ #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].opttyp == CompOpt) ? "compound" : "boolean",
allopt[optidx].name); allopt[optidx].name, buf);
#endif /* ?MAC */ #endif /* ?MAC */
return; return;
} }
@@ -7076,7 +7079,7 @@ char **opp;
return FALSE; return FALSE;
} }
} else { } else {
if (duplicate_opt_detection(optidx)) if (duplicate && !allopt[optidx].dupeok)
complain_about_duplicate(optidx); complain_about_duplicate(optidx);
*opp = op; *opp = op;
return TRUE; return TRUE;