diff options
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r-- | Zend/zend_operators.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index 6b51218827..e1e7cd2d36 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1473,6 +1473,25 @@ ZEND_API int zend_binary_strcasecmp(char *s1, uint len1, char *s2, uint len2) } +ZEND_API int zend_binary_strncasecmp(char *s1, uint len1, char *s2, uint len2, uint length) +{ + int len; + int c1,c2; + + len = MIN(length, MIN(len1, len2)); + + while (len--) { + c1 = tolower(*s1++); + c2 = tolower(*s2++); + if (c1 != c2) { + return c1 - c2; + } + } + + return len1 - len2; +} + + ZEND_API int zend_binary_zval_strcmp(zval *s1, zval *s2) { return zend_binary_strcmp(s1->value.str.val, s1->value.str.len, s2->value.str.val, s2->value.str.len); @@ -1490,6 +1509,12 @@ ZEND_API int zend_binary_zval_strcasecmp(zval *s1, zval *s2) } +ZEND_API int zend_binary_zval_strncasecmp(zval *s1, zval *s2, zval *s3) +{ + return zend_binary_strncasecmp(s1->value.str.val, s1->value.str.len, s2->value.str.val, s2->value.str.len, s3->value.lval); +} + + ZEND_API void zendi_smart_strcmp(zval *result, zval *s1, zval *s2) { int ret1,ret2; |