tgsi/text: Don't use strncasecmp(), it breaks windows build.
authorMichal Krol <michal@vmware.com>
Tue, 15 Dec 2009 12:54:05 +0000 (13:54 +0100)
committerMichal Krol <michal@vmware.com>
Tue, 15 Dec 2009 12:54:05 +0000 (13:54 +0100)
Also, break out of the for-loop when a matching property is found.

src/gallium/auxiliary/tgsi/tgsi_text.c

index 5a17b9d5d4e314ac4fb5cf9688c5676056b94a62..f000958bfc0ecd059a11067902b0ffc53071b270 100644 (file)
@@ -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;
       }
    }