From: Pasi Kallinen Date: Wed, 13 Jan 2016 18:24:40 +0000 (+0200) Subject: Make status hilites use same color string matching as menucolors X-Git-Tag: NetHack-3.6.1_RC01~1027 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1dd37b7fca1c2e582a281b76348d068d292a6d72;p=nethack Make status hilites use same color string matching as menucolors --- diff --git a/doc/fixes36.1 b/doc/fixes36.1 index eb93efc73..4f2e0807f 100644 --- a/doc/fixes36.1 +++ b/doc/fixes36.1 @@ -111,6 +111,7 @@ do allow globs with same curse/bless state to merge even when that state is fix pile mark after killing a monster carrying a potion which is destroyed only list known blank scrolls and known blank spellbooks as likely candidates when choosing an item to write on for applied magic marker +make status hilites use same color names as menucolors Platform- and/or Interface-Specific Fixes diff --git a/include/extern.h b/include/extern.h index f45ca4b30..d0789f205 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1659,6 +1659,7 @@ E struct symparse *FDECL(match_sym, (char *)); E void NDECL(set_playmode); E int FDECL(sym_val, (char *)); E const char *FDECL(clr2colorname, (int)); +E int FDECL(match_str2clr, (char *)); E boolean FDECL(add_menu_coloring, (char *)); E boolean FDECL(get_menu_coloring, (char *, int *, int *)); E void NDECL(free_menu_coloring); diff --git a/src/botl.c b/src/botl.c index 261686a87..29aaf3839 100644 --- a/src/botl.c +++ b/src/botl.c @@ -1214,21 +1214,10 @@ boolean from_configfile; } else if (strcmpi(how, "normal") == 0) { normal[i] = TRUE; } else { - int k; - char colorname[BUFSZ]; - for (k = 0; k < CLR_MAX; ++k) { - /* we have to make a copy to change space to dash */ - (void) strcpy(colorname, c_obj_colors[k]); - for (tmp = index(colorname, ' '); tmp; - tmp = index(colorname, ' ')) - *tmp = '-'; - if (strcmpi(how, colorname) == 0) { - coloridx[i] = k; - break; - } - } + int k = match_str2clr(how); if (k >= CLR_MAX) return FALSE; + coloridx[i] = k; } } diff --git a/src/options.c b/src/options.c index 7d6ddc357..d1869576f 100644 --- a/src/options.c +++ b/src/options.c @@ -1274,6 +1274,26 @@ int clr; return (char *) 0; } +int +match_str2clr(str) +char *str; +{ + int i, c = NO_COLOR; + + /* allow "lightblue", "light blue", and "light-blue" to match "light blue" + (also junk like "_l i-gh_t---b l u e" but we won't worry about that); + also copes with trailing space; mungspaces removed any leading space */ + for (i = 0; i < SIZE(colornames); i++) + if (colornames[i].name + && fuzzymatch(str, colornames[i].name, " -_", TRUE)) { + c = colornames[i].color; + break; + } + if (i == SIZE(colornames) && (*str >= '0' && *str <= '9')) + c = atoi(str); + return c; +} + const char * attr2attrname(attr) int attr; @@ -1563,19 +1583,8 @@ char *str; if ((amp = index(tmps, '&')) != 0) *amp = '\0'; - /* allow "lightblue", "light blue", and "light-blue" to match "light blue" - (also junk like "_l i-gh_t---b l u e" but we won't worry about that); - also copes with trailing space; mungspaces removed any leading space */ - for (i = 0; i < SIZE(colornames); i++) - if (colornames[i].name - && fuzzymatch(tmps, colornames[i].name, " -_", TRUE)) { - c = colornames[i].color; - break; - } - if (i == SIZE(colornames) && (*tmps >= '0' && *tmps <= '9')) - c = atoi(tmps); - - if (c > 15) + c = match_str2clr(tmps); + if (c >= CLR_MAX) return FALSE; if (amp) {