derick          Mon Sep 12 05:53:23 2005 EDT

  Modified files:              
    /ZendEngine2        zend_operators.c 
    /php-src/ext/standard       array.c 
    /php-src/ext/standard/tests/array   locale_sort.phpt 
  Log:
  - Reimplement SORT_LOCALE_STRING with ICU locales.
  
  
http://cvs.php.net/diff.php/ZendEngine2/zend_operators.c?r1=1.219&r2=1.220&ty=u
Index: ZendEngine2/zend_operators.c
diff -u ZendEngine2/zend_operators.c:1.219 ZendEngine2/zend_operators.c:1.220
--- ZendEngine2/zend_operators.c:1.219  Tue Aug 23 18:05:22 2005
+++ ZendEngine2/zend_operators.c        Mon Sep 12 05:53:20 2005
@@ -17,7 +17,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_operators.c,v 1.219 2005/08/23 22:05:22 andrei Exp $ */
+/* $Id: zend_operators.c,v 1.220 2005/09/12 09:53:20 derick Exp $ */
 
 #include <ctype.h>
 
@@ -32,6 +32,7 @@
 #include "zend_strtod.h"
 
 #include "unicode/uchar.h"
+#include "unicode/ucol.h"
 
 #define LONG_SIGN_MASK (1L << (8*sizeof(long)-1))
 
@@ -1508,14 +1509,17 @@
        return SUCCESS;
 }
 
-#if HAVE_STRCOLL
 ZEND_API int string_locale_compare_function(zval *result, zval *op1, zval *op2 
TSRMLS_DC)
 {
        zval op1_copy, op2_copy;
        int use_copy1, use_copy2;
+       UErrorCode status = U_ZERO_ERROR;
+       UCollator *col;
 
-       zend_make_printable_zval(op1, &op1_copy, &use_copy1);
-       zend_make_printable_zval(op2, &op2_copy, &use_copy2);
+       col = ucol_open(UG(default_locale), &status);
+
+       zend_make_unicode_zval(op1, &op1_copy, &use_copy1);
+       zend_make_unicode_zval(op2, &op2_copy, &use_copy2);
 
        if (use_copy1) {
                op1 = &op1_copy;
@@ -1524,7 +1528,7 @@
                op2 = &op2_copy;
        }
 
-       result->value.lval = strcoll(op1->value.str.val, op2->value.str.val);
+       result->value.lval = ucol_strcoll(col, op1->value.str.val, 
op1->value.str.len, op2->value.str.val, op2->value.str.len);
        result->type = IS_LONG;
 
        if (use_copy1) {
@@ -1533,9 +1537,11 @@
        if (use_copy2) {
                zval_dtor(op2);
        }
+
+       ucol_close(col);
+
        return SUCCESS;
 }
-#endif
 
 ZEND_API int numeric_compare_function(zval *result, zval *op1, zval *op2 
TSRMLS_DC)
 {
http://cvs.php.net/diff.php/php-src/ext/standard/array.c?r1=1.323&r2=1.324&ty=u
Index: php-src/ext/standard/array.c
diff -u php-src/ext/standard/array.c:1.323 php-src/ext/standard/array.c:1.324
--- php-src/ext/standard/array.c:1.323  Thu Sep  1 07:58:39 2005
+++ php-src/ext/standard/array.c        Mon Sep 12 05:53:22 2005
@@ -21,7 +21,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: array.c,v 1.323 2005/09/01 11:58:39 dmitry Exp $ */
+/* $Id: array.c,v 1.324 2005/09/12 09:53:22 derick Exp $ */
 
 #include "php.h"
 #include "php_ini.h"
@@ -163,11 +163,9 @@
                        ARRAYG(compare_func) = string_compare_function;
                        break;
 
-#if HAVE_STRCOLL
                case SORT_LOCALE_STRING:
                        ARRAYG(compare_func) = string_locale_compare_function;
                        break;
-#endif
 
                case SORT_REGULAR:
                default:
http://cvs.php.net/diff.php/php-src/ext/standard/tests/array/locale_sort.phpt?r1=1.3&r2=1.4&ty=u
Index: php-src/ext/standard/tests/array/locale_sort.phpt
diff -u php-src/ext/standard/tests/array/locale_sort.phpt:1.3 
php-src/ext/standard/tests/array/locale_sort.phpt:1.4
--- php-src/ext/standard/tests/array/locale_sort.phpt:1.3       Wed Aug 17 
10:01:06 2005
+++ php-src/ext/standard/tests/array/locale_sort.phpt   Mon Sep 12 05:53:23 2005
@@ -7,20 +7,21 @@
 }
 ?>
 --INI--
-unicode.script_encoding=ISO-8859-1
-unicode.output_encoding=ISO-8859-1
+unicode.script_encoding=UTF-8
+unicode.output_encoding=UTF-8
 --FILE--
 <?php
 setlocale(LC_ALL, 'fr_FR');
+i18n_loc_set_default('fr_FR');
 $table = array("AB" => "Alberta",
 "BC" => "Colombie-Britannique",
 "MB" => "Manitoba",
 "NB" => "Nouveau-Brunswick",
 "NL" => "Terre-Neuve-et-Labrador",
-"NS" => "Nouvelle-Écosse",
+"NS" => "Nouvelle-Écosse",
 "ON" => "Ontario",
-"PE" => "Île-du-Prince-Édouard",
-"QC" => "Québec",
+"PE" => "Île-du-Prince-Édouard",
+"QC" => "Québec",
 "SK" => "Saskatchewan",
 "NT" => "Territoires du Nord-Ouest",
 "NU" => "Nunavut",
@@ -35,19 +36,19 @@
   ["BC"]=>
   string(20) "Colombie-Britannique"
   ["PE"]=>
-  string(21) "Île-du-Prince-Édouard"
+  string(21) "Île-du-Prince-Édouard"
   ["MB"]=>
   string(8) "Manitoba"
   ["NB"]=>
   string(17) "Nouveau-Brunswick"
   ["NS"]=>
-  string(15) "Nouvelle-Écosse"
+  string(15) "Nouvelle-Écosse"
   ["NU"]=>
   string(7) "Nunavut"
   ["ON"]=>
   string(7) "Ontario"
   ["QC"]=>
-  string(6) "Québec"
+  string(6) "Québec"
   ["SK"]=>
   string(12) "Saskatchewan"
   ["NL"]=>
@@ -64,19 +65,19 @@
   [u"BC"]=>
   unicode(20) "Colombie-Britannique"
   [u"PE"]=>
-  unicode(21) "Île-du-Prince-Édouard"
+  unicode(21) "Île-du-Prince-Édouard"
   [u"MB"]=>
   unicode(8) "Manitoba"
   [u"NB"]=>
   unicode(17) "Nouveau-Brunswick"
   [u"NS"]=>
-  unicode(15) "Nouvelle-Écosse"
+  unicode(15) "Nouvelle-Écosse"
   [u"NU"]=>
   unicode(7) "Nunavut"
   [u"ON"]=>
   unicode(7) "Ontario"
   [u"QC"]=>
-  unicode(6) "Québec"
+  unicode(6) "Québec"
   [u"SK"]=>
   unicode(12) "Saskatchewan"
   [u"NL"]=>

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to