g_strcasecmp and g_strncasecmp are deprecated in glib-2.32. --- unix/gtkfont.c | 57 +++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 37 insertions(+), 20 deletions(-) Index: putty-0.62/unix/gtkfont.c =================================================================== --- putty-0.62.orig/unix/gtkfont.c +++ putty-0.62/unix/gtkfont.c @@ -10,6 +10,8 @@ */ #include +#include +#include #include #include #include @@ -524,21 +526,21 @@ static void x11font_enum_fonts(GtkWidget style = p; p += sprintf(p, "%s", components[2][0] ? components[2] : "regular"); - if (!g_strcasecmp(components[3], "i")) + if (!g_ascii_strcasecmp(components[3], "i")) p += sprintf(p, " italic"); - else if (!g_strcasecmp(components[3], "o")) + else if (!g_ascii_strcasecmp(components[3], "o")) p += sprintf(p, " oblique"); - else if (!g_strcasecmp(components[3], "ri")) + else if (!g_ascii_strcasecmp(components[3], "ri")) p += sprintf(p, " reverse italic"); - else if (!g_strcasecmp(components[3], "ro")) + else if (!g_ascii_strcasecmp(components[3], "ro")) p += sprintf(p, " reverse oblique"); - else if (!g_strcasecmp(components[3], "ot")) + else if (!g_ascii_strcasecmp(components[3], "ot")) p += sprintf(p, " other-slant"); - if (components[4][0] && g_strcasecmp(components[4], "normal")) + if (components[4][0] && g_ascii_strcasecmp(components[4], "normal")) p += sprintf(p, " %s", components[4]); - if (!g_strcasecmp(components[10], "m")) + if (!g_ascii_strcasecmp(components[10], "m")) p += sprintf(p, " [M]"); - if (!g_strcasecmp(components[10], "c")) + if (!g_ascii_strcasecmp(components[10], "c")) p += sprintf(p, " [C]"); if (components[5][0]) p += sprintf(p, " %s", components[5]); @@ -550,23 +552,23 @@ static void x11font_enum_fonts(GtkWidget */ p++; stylekey = p; - if (!g_strcasecmp(components[2], "medium") || - !g_strcasecmp(components[2], "regular") || - !g_strcasecmp(components[2], "normal") || - !g_strcasecmp(components[2], "book")) + if (!g_ascii_strcasecmp(components[2], "medium") || + !g_ascii_strcasecmp(components[2], "regular") || + !g_ascii_strcasecmp(components[2], "normal") || + !g_ascii_strcasecmp(components[2], "book")) weightkey = 0; - else if (!g_strncasecmp(components[2], "demi", 4) || - !g_strncasecmp(components[2], "semi", 4)) + else if (!g_ascii_strncasecmp(components[2], "demi", 4) || + !g_ascii_strncasecmp(components[2], "semi", 4)) weightkey = 1; else weightkey = 2; - if (!g_strcasecmp(components[3], "r")) + if (!g_ascii_strcasecmp(components[3], "r")) slantkey = 0; - else if (!g_strncasecmp(components[3], "r", 1)) + else if (!g_ascii_strncasecmp(components[3], "r", 1)) slantkey = 2; else slantkey = 1; - if (!g_strcasecmp(components[4], "normal")) + if (!g_ascii_strcasecmp(components[4], "normal")) setwidthkey = 0; else setwidthkey = 1; @@ -774,11 +776,16 @@ static int pangofont_check_desc_makes_se matched = FALSE; for (i = 0; i < nfamilies; i++) { - if (!g_strcasecmp(pango_font_family_get_name(families[i]), - pango_font_description_get_family(desc))) { + gchar *a = g_utf8_strdown(pango_font_family_get_name(families[i]), -1); + gchar *b = g_utf8_strdown(pango_font_description_get_family(desc), -1); + if (a != NULL && b != NULL && strcmp(a, b) == 0) { + g_free(a); + g_free(b); matched = TRUE; break; } + g_free(a); + g_free(b); } g_free(families); @@ -1375,6 +1382,7 @@ struct fontinfo_realname_find { static int strnullcasecmp(const char *a, const char *b) { + gchar *p, *q; int i; /* @@ -1393,7 +1401,16 @@ static int strnullcasecmp(const char *a, /* * Otherwise, ordinary strcasecmp. */ - return g_strcasecmp(a, b); + p = g_utf8_strdown(a, -1); + q = g_utf8_strdown(b, -1); + if (p == NULL || q == NULL) { + fprintf(stderr, "%s\n", strerror(errno)); + abort(); + } + i = strcmp(p, q); + g_free(p); + g_free(q); + return i; } static int fontinfo_realname_compare(void *av, void *bv)