diff options
author | Baptiste Daroussin <bapt@FreeBSD.org> | 2021-02-25 17:22:00 +0000 |
---|---|---|
committer | Baptiste Daroussin <bapt@FreeBSD.org> | 2021-02-25 17:22:00 +0000 |
commit | bf0ab54638a5ef969749f6ceae30e864f9556ea8 (patch) | |
tree | 11690c2184e55d37bcd3c7fd13f3d0d9d20dbcb0 /test/picsmap.c | |
parent | 72c3fc31f590566e93496732d6fa769cd353e270 (diff) | |
download | src-bf0ab54638a5ef969749f6ceae30e864f9556ea8.tar.gz src-bf0ab54638a5ef969749f6ceae30e864f9556ea8.zip |
Vendor import ncurses 6.2-20210220vendor/ncurses/6.2-20210220vendor/ncurses
Diffstat (limited to 'test/picsmap.c')
-rw-r--r-- | test/picsmap.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/test/picsmap.c b/test/picsmap.c index 432fbf7a5790..a2e4c430e03c 100644 --- a/test/picsmap.c +++ b/test/picsmap.c @@ -27,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: picsmap.c,v 1.132 2020/02/02 23:34:34 tom Exp $ + * $Id: picsmap.c,v 1.135 2020/12/26 18:04:03 tom Exp $ * * Author: Thomas E. Dickey * @@ -955,6 +955,20 @@ parse_rgb(char **data) return result; } +#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c)) + +static int +CaselessCmp(const char *a, const char *b) +{ /* strcasecmp isn't portable */ + while (*a && *b) { + int cmp = LOWERCASE(*a) - LOWERCASE(*b); + if (cmp != 0) + break; + a++, b++; + } + return LOWERCASE(*a) - LOWERCASE(*b); +} + static RGB_NAME * lookup_rgb(const char *name) { @@ -962,7 +976,7 @@ lookup_rgb(const char *name) if (rgb_table != 0) { int n; for (n = 0; rgb_table[n].name != 0; ++n) { - if (!strcasecmp(name, rgb_table[n].name)) { + if (!CaselessCmp(name, rgb_table[n].name)) { result = &rgb_table[n]; break; } @@ -1598,7 +1612,7 @@ report_colors(PICS_HEAD * pics) for (k = 0; k < wide; ++k) { int n = j + (k * high); size_t want = (sizeof(buffer) - (size_t) (s - buffer)); - if (want < 100) + if (want < 100 || want >= sizeof(buffer)) break; if (n >= pics->colors) break; |