From b8f461e6261c85b2b1180e5c9d50a4fc854e2bf1 Mon Sep 17 00:00:00 2001 From: Owen Taylor Date: Wed, 30 Apr 2003 20:55:27 +0000 Subject: Hash case insensitively (#106942, Morten Welinder) Wed Apr 30 16:46:52 2003 Owen Taylor * pango/fonts.c (pango_font_description_hash): Hash case insensitively (#106942, Morten Welinder) --- ChangeLog | 5 +++++ ChangeLog.pre-1-10 | 5 +++++ ChangeLog.pre-1-4 | 5 +++++ ChangeLog.pre-1-6 | 5 +++++ ChangeLog.pre-1-8 | 5 +++++ pango/fonts.c | 20 +++++++++++++++++++- 6 files changed, 44 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index ea07134d..9e6f4889 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Wed Apr 30 16:46:52 2003 Owen Taylor + + * pango/fonts.c (pango_font_description_hash): Hash + case insensitively (#106942, Morten Welinder) + Tue Apr 29 18:02:31 2003 Owen Taylor * configure.in: Add the fonconfig cflags/libs to diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10 index ea07134d..9e6f4889 100644 --- a/ChangeLog.pre-1-10 +++ b/ChangeLog.pre-1-10 @@ -1,3 +1,8 @@ +Wed Apr 30 16:46:52 2003 Owen Taylor + + * pango/fonts.c (pango_font_description_hash): Hash + case insensitively (#106942, Morten Welinder) + Tue Apr 29 18:02:31 2003 Owen Taylor * configure.in: Add the fonconfig cflags/libs to diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4 index ea07134d..9e6f4889 100644 --- a/ChangeLog.pre-1-4 +++ b/ChangeLog.pre-1-4 @@ -1,3 +1,8 @@ +Wed Apr 30 16:46:52 2003 Owen Taylor + + * pango/fonts.c (pango_font_description_hash): Hash + case insensitively (#106942, Morten Welinder) + Tue Apr 29 18:02:31 2003 Owen Taylor * configure.in: Add the fonconfig cflags/libs to diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6 index ea07134d..9e6f4889 100644 --- a/ChangeLog.pre-1-6 +++ b/ChangeLog.pre-1-6 @@ -1,3 +1,8 @@ +Wed Apr 30 16:46:52 2003 Owen Taylor + + * pango/fonts.c (pango_font_description_hash): Hash + case insensitively (#106942, Morten Welinder) + Tue Apr 29 18:02:31 2003 Owen Taylor * configure.in: Add the fonconfig cflags/libs to diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8 index ea07134d..9e6f4889 100644 --- a/ChangeLog.pre-1-8 +++ b/ChangeLog.pre-1-8 @@ -1,3 +1,8 @@ +Wed Apr 30 16:46:52 2003 Owen Taylor + + * pango/fonts.c (pango_font_description_hash): Hash + case insensitively (#106942, Morten Welinder) + Tue Apr 29 18:02:31 2003 Owen Taylor * configure.in: Add the fonconfig cflags/libs to diff --git a/pango/fonts.c b/pango/fonts.c index 4e67e17c..89e65573 100644 --- a/pango/fonts.c +++ b/pango/fonts.c @@ -618,6 +618,24 @@ pango_font_description_equal (const PangoFontDescription *desc1, (desc1->family_name && desc2->family_name && g_ascii_strcasecmp (desc1->family_name, desc2->family_name) == 0))); } +#define TOLOWER(c) \ + (((c) >= 'A' && (c) <= 'Z') ? (c) - 'A' + 'a' : (c)) + +static guint +case_insensitive_hash (const char *key) +{ + const char *p = key; + guint h = TOLOWER (*p); + + if (h) + { + for (p += 1; *p != '\0'; p++) + h = (h << 5) - h + TOLOWER (*p); + } + + return h; +} + /** * pango_font_description_hash: * @desc: a #PangoFontDescription @@ -635,7 +653,7 @@ pango_font_description_hash (const PangoFontDescription *desc) hash = desc->mask; if (desc->mask & PANGO_FONT_MASK_FAMILY) - hash = g_str_hash (desc->family_name); + hash = case_insensitive_hash (desc->family_name); if (desc->mask & PANGO_FONT_MASK_SIZE) hash ^= desc->size; if (desc->mask & PANGO_FONT_MASK_STYLE) -- cgit v1.2.1