]> granicus.if.org Git - php/commitdiff
Unicode support for strncasecmp()
authorDmitry Stogov <dmitry@php.net>
Tue, 23 Aug 2005 06:51:11 +0000 (06:51 +0000)
committerDmitry Stogov <dmitry@php.net>
Tue, 23 Aug 2005 06:51:11 +0000 (06:51 +0000)
Zend/zend_builtin_functions.c
unicode-progress.txt

index f5164868bb6d98c84b213fe98fcaaaaa84c34a33..a54da0ee4faaebed2a725a555d651796af731467 100644 (file)
@@ -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));
 }
 /* }}} */
 
index 62fa9ab3211cd74cb8b51e9232fef25f7dc3d77e..a85649fd7dae2f8793550b00e12d50ae0015ea18 100644 (file)
@@ -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()