pollita Tue Sep 19 20:36:49 2006 UTC Modified files: /ZendEngine2 zend.c zend_globals.h /php-src/ext/standard streamsfuncs.c /php-src/main/streams streams.c Log: Add INI controlled default stream encoding (unicode.stream_encoding). Add convenience function stream_defualt_encoding() for setting it. http://cvs.php.net/viewvc.cgi/ZendEngine2/zend.c?r1=1.370&r2=1.371&diff_format=u Index: ZendEngine2/zend.c diff -u ZendEngine2/zend.c:1.370 ZendEngine2/zend.c:1.371 --- ZendEngine2/zend.c:1.370 Mon Sep 11 14:28:19 2006 +++ ZendEngine2/zend.c Tue Sep 19 20:36:48 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend.c,v 1.370 2006/09/11 14:28:19 tony2001 Exp $ */ +/* $Id: zend.c,v 1.371 2006/09/19 20:36:48 pollita Exp $ */ #include "zend.h" #include "zend_extensions.h" @@ -181,6 +181,7 @@ STD_ZEND_INI_ENTRY("unicode.script_encoding", NULL, ZEND_INI_ALL, OnUpdateEncoding, script_encoding_conv, zend_unicode_globals, unicode_globals) STD_ZEND_INI_ENTRY("unicode.http_input_encoding", NULL, ZEND_INI_ALL, OnUpdateEncoding, http_input_encoding_conv, zend_unicode_globals, unicode_globals) STD_ZEND_INI_ENTRY("unicode.filesystem_encoding", NULL, ZEND_INI_ALL, OnUpdateEncoding, filesystem_encoding_conv, zend_unicode_globals, unicode_globals) + STD_ZEND_INI_ENTRY("unicode.stream_encoding", "utf8", ZEND_INI_ALL, OnUpdateStringUnempty, stream_encoding, zend_unicode_globals, unicode_globals) ZEND_INI_END() http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_globals.h?r1=1.162&r2=1.163&diff_format=u Index: ZendEngine2/zend_globals.h diff -u ZendEngine2/zend_globals.h:1.162 ZendEngine2/zend_globals.h:1.163 --- ZendEngine2/zend_globals.h:1.162 Mon Sep 11 14:28:19 2006 +++ ZendEngine2/zend_globals.h Tue Sep 19 20:36:48 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: zend_globals.h,v 1.162 2006/09/11 14:28:19 tony2001 Exp $ */ +/* $Id: zend_globals.h,v 1.163 2006/09/19 20:36:48 pollita Exp $ */ #ifndef ZEND_GLOBALS_H #define ZEND_GLOBALS_H @@ -276,6 +276,10 @@ UConverter *utf8_conv; /* all-purpose UTF-8 converter */ UConverter *ascii_conv; /* all-purpose ASCII converter */ + char *stream_encoding; /* default stream encoding (contents, not FS entries) + Uses name of encoding rather than a real converter + because each stream needs its own instance */ + uint16_t from_error_mode; UChar from_subst_char[3]; uint16_t to_error_mode; http://cvs.php.net/viewvc.cgi/php-src/ext/standard/streamsfuncs.c?r1=1.85&r2=1.86&diff_format=u Index: php-src/ext/standard/streamsfuncs.c diff -u php-src/ext/standard/streamsfuncs.c:1.85 php-src/ext/standard/streamsfuncs.c:1.86 --- php-src/ext/standard/streamsfuncs.c:1.85 Tue Sep 19 10:38:31 2006 +++ php-src/ext/standard/streamsfuncs.c Tue Sep 19 20:36:48 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streamsfuncs.c,v 1.85 2006/09/19 10:38:31 dmitry Exp $ */ +/* $Id: streamsfuncs.c,v 1.86 2006/09/19 20:36:48 pollita Exp $ */ #include "php.h" #include "php_globals.h" @@ -1458,6 +1458,24 @@ } /* }}} */ + +/* {{{ proto bool stream_default_encoding(string encoding) U +Convenience wrapper for ini_set('unicode.stream_encoding', $encoding) */ +PHP_FUNCTION(stream_default_encoding) +{ + char *encoding; + int encoding_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &encoding, &encoding_len) == FAILURE) { + return; + } + + RETURN_BOOL(SUCCESS == zend_alter_ini_entry("unicode.stream_encoding", sizeof("unicode.stream_encoding"), + encoding, encoding_len, PHP_INI_ALL, PHP_INI_STAGE_RUNTIME)); +} +/* }}} */ + + /* {{{ proto void stream_encoding(resource stream[, string encoding]) Set character set for stream encoding UTODO: Return current encoding charset http://cvs.php.net/viewvc.cgi/php-src/main/streams/streams.c?r1=1.134&r2=1.135&diff_format=u Index: php-src/main/streams/streams.c diff -u php-src/main/streams/streams.c:1.134 php-src/main/streams/streams.c:1.135 --- php-src/main/streams/streams.c:1.134 Tue Sep 19 10:38:31 2006 +++ php-src/main/streams/streams.c Tue Sep 19 20:36:48 2006 @@ -19,7 +19,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: streams.c,v 1.134 2006/09/19 10:38:31 dmitry Exp $ */ +/* $Id: streams.c,v 1.135 2006/09/19 20:36:48 pollita Exp $ */ #define _GNU_SOURCE #include "php.h" @@ -2306,7 +2306,7 @@ /* Only apply implicit unicode.to. filter if the wrapper didn't do it for us */ if ((php_stream_filter_product(&stream->writefilters, IS_UNICODE) == IS_UNICODE) && (strchr(implicit_mode, 'w') || strchr(implicit_mode, 'a') || strchr(implicit_mode, '+'))) { - char *encoding = (context && context->output_encoding) ? context->output_encoding : "utf8"; + char *encoding = (context && context->output_encoding) ? context->output_encoding : UG(stream_encoding); /* UTODO: (Maybe?) Allow overriding the default error handlers on a per-stream basis via context params */ php_stream_encoding_apply(stream, 1, encoding, UG(from_error_mode), UG(from_subst_char)); @@ -2314,7 +2314,7 @@ /* Only apply implicit unicode.from. filter if the wrapper didn't do it for us */ if ((stream->readbuf_type == IS_STRING) && (strchr(implicit_mode, 'r') || strchr(implicit_mode, '+'))) { - char *encoding = (context && context->input_encoding) ? context->input_encoding : "utf8"; + char *encoding = (context && context->input_encoding) ? context->input_encoding : UG(stream_encoding); /* UTODO: (Maybe?) Allow overriding the default error handlers on a per-stream basis via context params */ php_stream_encoding_apply(stream, 0, encoding, UG(to_error_mode), NULL);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php