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