diff options
author | Zeev Suraski <zeev@php.net> | 2000-01-24 19:00:30 +0000 |
---|---|---|
committer | Zeev Suraski <zeev@php.net> | 2000-01-24 19:00:30 +0000 |
commit | fafbf6d8da6aaf71be95047b64e30efc299f1919 (patch) | |
tree | 5b6cfd328b500f19078d6dd9b3e58408a14c87f4 /Zend/zend_operators.c | |
parent | adec56938e407fd2b3f380c4ccd4fa89d0ea564b (diff) | |
download | php-git-fafbf6d8da6aaf71be95047b64e30efc299f1919.tar.gz |
- Implement declare() with declarables framework
- Implement ticks - Germany&Norway - 5 points!
Diffstat (limited to 'Zend/zend_operators.c')
-rw-r--r-- | Zend/zend_operators.c | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/Zend/zend_operators.c b/Zend/zend_operators.c index e8c7f2c801..7bbf4ccc3f 100644 --- a/Zend/zend_operators.c +++ b/Zend/zend_operators.c @@ -1218,35 +1218,30 @@ 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_strcmp(char *s1, uint len1, char *s2, uint len2) { int retval; - retval = memcmp(s1->value.str.val, s2->value.str.val, MIN(s1->value.str.len,s2->value.str.len)); + retval = memcmp(s1, s2, MIN(len1, len2)); if (!retval) { - return (s1->value.str.len - s2->value.str.len); + return (len1 - len2); } else { return retval; } } -ZEND_API int zend_binary_strcasecmp(zval *s1, zval *s2) +ZEND_API int zend_binary_strcasecmp(char *s1, uint len1, char *s2, uint len2) { - 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++); + c1 = tolower(*s1++); + c2 = tolower(*s2++); if (c1 != c2) { break; } @@ -1255,6 +1250,20 @@ ZEND_API int zend_binary_strcasecmp(zval *s1, zval *s2) return c1 - c2; } + +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); +} + + +ZEND_API int zend_binary_zval_strcasecmp(zval *s1, zval *s2) +{ + return zend_binary_strcasecmp(s1->value.str.val, s1->value.str.len, s2->value.str.val, s2->value.str.len); +} + + + ZEND_API void zendi_smart_strcmp(zval *result, zval *s1, zval *s2) { int ret1,ret2; @@ -1291,7 +1300,7 @@ ZEND_API void zendi_smart_strcmp(zval *result, zval *s1, zval *s2) result->type = IS_LONG; } } else { - result->value.lval = zend_binary_strcmp(s1,s2); + result->value.lval = zend_binary_zval_strcmp(s1, s2); result->type = IS_LONG; } return; |