andrei Wed Nov 22 19:13:19 2006 UTC Modified files: /php-src unicode-progress.txt /php-src/ext/standard basic_functions.c Log: - Unicode support for tick functions. - Update unicode-progress.txt http://cvs.php.net/viewvc.cgi/php-src/unicode-progress.txt?r1=1.62&r2=1.63&diff_format=u Index: php-src/unicode-progress.txt diff -u php-src/unicode-progress.txt:1.62 php-src/unicode-progress.txt:1.63 --- php-src/unicode-progress.txt:1.62 Mon Nov 20 20:58:56 2006 +++ php-src/unicode-progress.txt Wed Nov 22 19:13:19 2006 @@ -29,11 +29,10 @@ parse_ini_file() Params API, unicode filename support, depends on INI mechaniem - highlight_string() - IS_UNICODE support (may be very easy, since scanner handles Unicode - getopt() - Use ASCII for options? + Will use ASCII for options. $_SERVER['argv'] should not be converted + to Unicode and should stay binary, since we can't be sure of the + encoding on CLI. Console_Getopt may be changed to support encodings. array.c ------- http://cvs.php.net/viewvc.cgi/php-src/ext/standard/basic_functions.c?r1=1.825&r2=1.826&diff_format=u Index: php-src/ext/standard/basic_functions.c diff -u php-src/ext/standard/basic_functions.c:1.825 php-src/ext/standard/basic_functions.c:1.826 --- php-src/ext/standard/basic_functions.c:1.825 Tue Nov 21 22:21:38 2006 +++ php-src/ext/standard/basic_functions.c Wed Nov 22 19:13:19 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: basic_functions.c,v 1.825 2006/11/21 22:21:38 andrei Exp $ */ +/* $Id: basic_functions.c,v 1.826 2006/11/22 19:13:19 andrei Exp $ */ #include "php.h" #include "php_streams.h" @@ -5259,13 +5259,13 @@ } else { zval **obj, **method; - if (Z_TYPE_P(function) == IS_STRING) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %s() - function does not exist", Z_STRVAL_P(function)); + if (Z_TYPE_P(function) == IS_STRING || Z_TYPE_P(function) == IS_UNICODE) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %R() - function does not exist", Z_TYPE_P(function), Z_UNIVAL_P(function)); } else if ( Z_TYPE_P(function) == IS_ARRAY && zend_hash_index_find(Z_ARRVAL_P(function), 0, (void **) &obj) == SUCCESS && zend_hash_index_find(Z_ARRVAL_P(function), 1, (void **) &method) == SUCCESS && Z_TYPE_PP(obj) == IS_OBJECT - && Z_TYPE_PP(method) == IS_STRING ) { + && (Z_TYPE_PP(method) == IS_STRING || Z_TYPE_PP(method) == IS_UNICODE) ) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call %v::%R() - function does not exist", Z_OBJCE_PP(obj)->name, Z_TYPE_PP(method), Z_UNIVAL_PP(method)); } else { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unable to call tick function"); @@ -5291,6 +5291,8 @@ if (Z_TYPE_P(func1) == IS_STRING && Z_TYPE_P(func2) == IS_STRING) { return (zend_binary_zval_strcmp(func1, func2) == 0); + } else if (Z_TYPE_P(func1) == IS_UNICODE && Z_TYPE_P(func2) == IS_UNICODE) { + return (zend_u_binary_zval_strcmp(func1, func2) == 0); } else if (Z_TYPE_P(func1) == IS_ARRAY && Z_TYPE_P(func2) == IS_ARRAY) { zval result; zend_compare_arrays(&result, func1, func2 TSRMLS_CC); @@ -5914,7 +5916,7 @@ /* }}} */ #endif -/* {{{ proto bool register_tick_function(string function_name [, mixed arg [, mixed ... ]]) +/* {{{ proto bool register_tick_function(string function_name [, mixed arg [, mixed ... ]]) U Registers a tick callback function */ PHP_FUNCTION(register_tick_function) { @@ -5935,8 +5937,9 @@ RETURN_FALSE; } - if (Z_TYPE_P(tick_fe.arguments[0]) != IS_ARRAY) - convert_to_string_ex(&tick_fe.arguments[0]); + if (Z_TYPE_P(tick_fe.arguments[0]) != IS_ARRAY) { + convert_to_text_ex(&tick_fe.arguments[0]); + } if (!BG(user_tick_functions)) { BG(user_tick_functions) = (zend_llist *) emalloc(sizeof(zend_llist)); @@ -5956,27 +5959,27 @@ } /* }}} */ -/* {{{ proto void unregister_tick_function(string function_name) +/* {{{ proto void unregister_tick_function(string function_name) U Unregisters a tick callback function */ PHP_FUNCTION(unregister_tick_function) { - zval **function; + zval *function; user_tick_function_entry tick_fe; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &function)) { - WRONG_PARAM_COUNT; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z/", &function) == FAILURE) { + return; } if (!BG(user_tick_functions)) { return; } - if (Z_TYPE_PP(function) != IS_ARRAY) { - convert_to_string_ex(function); + if (Z_TYPE_P(function) != IS_ARRAY) { + convert_to_text(function); } tick_fe.arguments = (zval **) emalloc(sizeof(zval *)); - tick_fe.arguments[0] = *function; + tick_fe.arguments[0] = function; tick_fe.arg_count = 1; zend_llist_del_element(BG(user_tick_functions), &tick_fe, (int (*)(void *, void *)) user_tick_function_compare); efree(tick_fe.arguments);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php