From: Dmitry Stogov Date: Tue, 23 Aug 2005 06:51:11 +0000 (+0000) Subject: Unicode support for strncasecmp() X-Git-Tag: PRE_NEW_OCI8_EXTENSION~120 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cfe1dcb6e941a4f1cea1981febc753567e304156;p=php Unicode support for strncasecmp() --- diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index f5164868bb..a54da0ee4f 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -368,15 +368,20 @@ ZEND_FUNCTION(strcasecmp) Binary safe string comparison */ ZEND_FUNCTION(strncasecmp) { - zval **s1, **s2, **s3; + void *s1, *s2; + int s1_len, s2_len; + zend_uchar s1_type, s2_type; + long len; - if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &s1, &s2, &s3) == FAILURE) { - ZEND_WRONG_PARAM_COUNT(); + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "TTl", &s1, &s1_len, + &s1_type, &s2, &s2_len, &s2_type, &len) == FAILURE) { + return; + } + if (s1_type == IS_UNICODE) { + RETURN_LONG(zend_u_binary_strcasecmp(s1, MIN(s1_len, len), s2, MIN(s2_len, len))); + } else { + RETURN_LONG(zend_binary_strcasecmp(s1, MIN(s1_len, len), s2, MIN(s2_len, len))); } - convert_to_string_ex(s1); - convert_to_string_ex(s2); - convert_to_long_ex(s3); - RETURN_LONG(zend_binary_zval_strncasecmp(*s1, *s2, *s3)); } /* }}} */ diff --git a/unicode-progress.txt b/unicode-progress.txt index 62fa9ab321..a85649fd7d 100644 --- a/unicode-progress.txt +++ b/unicode-progress.txt @@ -25,8 +25,6 @@ ZE extension_loaded() get_extension_funcs() get_included_files() - strcasecmp() - strncasecmp() Completed: class_exists() create_function() @@ -60,8 +58,10 @@ ZE restore_exception_handler() set_error_handler() set_exception_handler() + strcasecmp() strcmp() strlen() + strncasecmp() strncmp() trigger_error() zend_thread_id()