cvs: php-src /main/streams streams.c
| From: | Dmitry Stogov | Date: | Mon, 22 Aug 2005 14:48:27 +0000 |
| Subject: | cvs: php-src /main/streams streams.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-33581@lists.php.net to get a copy of this message | ||
dmitry Mon Aug 22 10:48:27 2005 EDT
Modified files:
/php-src/main/streams streams.c
Log:
Don't apply "unicode" filters in non-unicode mode
http://cvs.php.net/diff.php/php-src/main/streams/streams.c?r1=1.86&r2=1.87&ty=u
Index: php-src/main/streams/streams.c
diff -u php-src/main/streams/streams.c:1.86 php-src/main/streams/streams.c:1.87
--- php-src/main/streams/streams.c:1.86 Sun Aug 14 09:48:29 2005
+++ php-src/main/streams/streams.c Mon Aug 22 10:48:25 2005
@@ -19,7 +19,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streams.c,v 1.86 2005/08/14 13:48:29 wez Exp $ */
+/* $Id: streams.c,v 1.87 2005/08/22 14:48:25 dmitry Exp $ */
#define _GNU_SOURCE
#include "php.h"
@@ -2441,42 +2441,44 @@
}
/* Output encoding on text mode streams defaults to utf8 unless specified in context parameter */
- if (stream && strchr(implicit_mode, 't') && (strchr(implicit_mode,
'w') || strchr(implicit_mode, 'a') || strchr(implicit_mode, '+'))) {
- php_stream_filter *filter;
- char *encoding = (context && context->output_encoding) ? context->output_encoding :
"utf8";
- char *filtername;
- int encoding_len = strlen(encoding);
-
- filtername = emalloc(encoding_len + sizeof("unicode.to."));
- memcpy(filtername, "unicode.to.", sizeof("unicode.to.") - 1);
- memcpy(filtername + sizeof("unicode.to.") - 1, encoding, encoding_len + 1);
-
- filter = php_stream_filter_create(filtername, NULL, persistent TSRMLS_CC);
- if (!filter) {
- php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "Failed applying output
encoding");
- } else {
- php_stream_filter_append(&stream->writefilters, filter);
+ if (stream && strchr(implicit_mode, 't') && UG(unicode)) {
+ if (strchr(implicit_mode, 'w') || strchr(implicit_mode, 'a') ||
strchr(implicit_mode, '+')) {
+ php_stream_filter *filter;
+ char *encoding = (context && context->output_encoding) ? context->output_encoding
: "utf8";
+ char *filtername;
+ int encoding_len = strlen(encoding);
+
+ filtername = emalloc(encoding_len + sizeof("unicode.to."));
+ memcpy(filtername, "unicode.to.", sizeof("unicode.to.") - 1);
+ memcpy(filtername + sizeof("unicode.to.") - 1, encoding, encoding_len + 1);
+
+ filter = php_stream_filter_create(filtername, NULL, persistent TSRMLS_CC);
+ if (!filter) {
+ php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "Failed applying output
encoding");
+ } else {
+ php_stream_filter_append(&stream->writefilters, filter);
+ }
+ efree(filtername);
}
- efree(filtername);
- }
-
- if (stream && strchr(implicit_mode, 't') && (strchr(implicit_mode,
'r') || strchr(implicit_mode, '+'))) {
- php_stream_filter *filter;
- char *filtername;
- char *encoding = (context && context->input_encoding) ? context->input_encoding :
"utf8";
- int input_encoding_len = strlen(encoding);
- filtername = emalloc(input_encoding_len + sizeof("unicode.from."));
- memcpy(filtername, "unicode.from.", sizeof("unicode.from.") - 1);
- memcpy(filtername + sizeof("unicode.from.") - 1, encoding, input_encoding_len + 1);
-
- filter = php_stream_filter_create(filtername, NULL, persistent TSRMLS_CC);
- if (!filter) {
- php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "Failed applying input
encoding");
- } else {
- php_stream_filter_append(&stream->readfilters, filter);
+ if (strchr(implicit_mode, 'r') || strchr(implicit_mode, '+')) {
+ php_stream_filter *filter;
+ char *filtername;
+ char *encoding = (context && context->input_encoding) ? context->input_encoding :
"utf8";
+ int input_encoding_len = strlen(encoding);
+
+ filtername = emalloc(input_encoding_len + sizeof("unicode.from."));
+ memcpy(filtername, "unicode.from.", sizeof("unicode.from.") - 1);
+ memcpy(filtername + sizeof("unicode.from.") - 1, encoding, input_encoding_len + 1);
+
+ filter = php_stream_filter_create(filtername, NULL, persistent TSRMLS_CC);
+ if (!filter) {
+ php_stream_wrapper_log_error(wrapper, options TSRMLS_CC, "Failed applying input
encoding");
+ } else {
+ php_stream_filter_append(&stream->readfilters, filter);
+ }
+ efree(filtername);
}
- efree(filtername);
}
if (stream == NULL && (options & REPORT_ERRORS)) {