aboutsummaryrefslogtreecommitdiff
path: root/test/picsmap.c
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2021-02-25 17:22:00 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2021-02-25 17:22:00 +0000
commitbf0ab54638a5ef969749f6ceae30e864f9556ea8 (patch)
tree11690c2184e55d37bcd3c7fd13f3d0d9d20dbcb0 /test/picsmap.c
parent72c3fc31f590566e93496732d6fa769cd353e270 (diff)
downloadsrc-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.c20
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;