summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/tgsi/tgsi_text.c
diff options
context:
space:
mode:
authorMichal Krol <[email protected]>2009-12-15 13:54:05 +0100
committerMichal Krol <[email protected]>2009-12-15 13:54:05 +0100
commitc1efa45e04124eff66c48493be50d2b66d248506 (patch)
treebec9211bd62dc1d7fa67497827b913fcd6e72d78 /src/gallium/auxiliary/tgsi/tgsi_text.c
parentf8135d545b5542ef33fabc92bcede2848e3e6b29 (diff)
tgsi/text: Don't use strncasecmp(), it breaks windows build.
Also, break out of the for-loop when a matching property is found.
Diffstat (limited to 'src/gallium/auxiliary/tgsi/tgsi_text.c')
-rw-r--r--src/gallium/auxiliary/tgsi/tgsi_text.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/tgsi/tgsi_text.c b/src/gallium/auxiliary/tgsi/tgsi_text.c
index 5a17b9d5d4e..f000958bfc0 100644
--- a/src/gallium/auxiliary/tgsi/tgsi_text.c
+++ b/src/gallium/auxiliary/tgsi/tgsi_text.c
@@ -60,6 +60,21 @@ static boolean uprcase( char c )
return c;
}
+/*
+ * Ignore case of str1 and assume str2 is already uppercase.
+ * Return TRUE iff str1 and str2 are equal.
+ */
+static int
+streq_nocase_uprcase(const char *str1,
+ const char *str2)
+{
+ while (*str1 && uprcase(*str1) == *str2) {
+ str1++;
+ str2++;
+ }
+ return *str1 == *str2;
+}
+
static boolean str_match_no_case( const char **pcur, const char *str )
{
const char *cur = *pcur;
@@ -1012,8 +1027,7 @@ static boolean parse_property( struct translate_ctx *ctx )
}
for (property_name = 0; property_name < TGSI_PROPERTY_COUNT;
++property_name) {
- if (strncasecmp(id, property_names[property_name],
- strlen(property_names[property_name]))) {
+ if (streq_nocase_uprcase(id, property_names[property_name])) {
break;
}
}