]> granicus.if.org Git - php/commitdiff
* added zend_binary_strcasecmp()
authorStig S. Bakken <stig@php.net>
Tue, 15 Jun 1999 22:32:51 +0000 (22:32 +0000)
committerStig S. Bakken <stig@php.net>
Tue, 15 Jun 1999 22:32:51 +0000 (22:32 +0000)
Zend/zend_operators.c
Zend/zend_operators.h

index a5848d6dd748e63aecdef4eb06e196f9c5a8f998..9496edd5d234c343b509f7fa8ac11adf6bc8c880 100644 (file)
@@ -1140,6 +1140,30 @@ ZEND_API int zend_binary_strcmp(zval *s1, zval *s2)
 }
 
 
+ZEND_API int zend_binary_strcasecmp(zval *s1, zval *s2)
+{
+       const unsigned char *p1 = (const unsigned char *)s1->value.str.val;
+       const unsigned char *p2 = (const unsigned char *)s2->value.str.val;
+       unsigned char c1 = 0, c2 = 0;
+       int len1, len2;
+
+       len1 = s1->value.str.len;
+       len2 = s2->value.str.len;
+       if (len1 != len2 || !len1) {
+               return len1 - len2;
+       }
+
+       while (len1--) {
+               c1 = tolower(*p1++);
+               c2 = tolower(*p2++);
+               if (c1 != c2) {
+                       break;
+               }
+       }
+
+       return c1 - c2;
+}
+
 ZEND_API void zendi_smart_strcmp(zval *result, zval *s1, zval *s2)
 {
        int ret1,ret2;
index ee0eb96b3d9b14d967668b64f747802f18cfa8fc..5eff1b10dc506791b2a62f6cebca5b919a0310c1 100644 (file)
@@ -63,6 +63,7 @@ ZEND_API int compare_function(zval *result, zval *op1, zval *op2);
 
 ZEND_API void zend_str_tolower(char *str, unsigned int length);
 ZEND_API int zend_binary_strcmp(zval *s1, zval *s2);
+ZEND_API int zend_binary_strcasecmp(zval *s1, zval *s2);
 ZEND_API void zendi_smart_strcmp(zval *result, zval *s1, zval *s2);
 
 #endif