summaryrefslogtreecommitdiff
path: root/Zend/zend_operators.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2000-01-24 19:00:30 +0000
committerZeev Suraski <zeev@php.net>2000-01-24 19:00:30 +0000
commitfafbf6d8da6aaf71be95047b64e30efc299f1919 (patch)
tree5b6cfd328b500f19078d6dd9b3e58408a14c87f4 /Zend/zend_operators.c
parentadec56938e407fd2b3f380c4ccd4fa89d0ea564b (diff)
downloadphp-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.c33
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;