From cfe1dcb6e941a4f1cea1981febc753567e304156 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 23 Aug 2005 06:51:11 +0000 Subject: [PATCH] Unicode support for strncasecmp() --- Zend/zend_builtin_functions.c | 19 ++++++++++++------- unicode-progress.txt | 4 ++-- 2 files changed, 14 insertions(+), 9 deletions(-) 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() -- 2.50.1