putty/putty-0.62-glibc-2.16.patch

127 lines
4.3 KiB
Diff

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 <assert.h>
+#include <errno.h>
+#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>
@@ -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)