diff options
author | Rui Hirokawa <hirokawa@php.net> | 2002-08-02 06:53:48 +0000 |
---|---|---|
committer | Rui Hirokawa <hirokawa@php.net> | 2002-08-02 06:53:48 +0000 |
commit | 7527bf0c587f5bec04c47d7d21e2cc533e7f87f4 (patch) | |
tree | 5b135911d0fef140bb4963e47e237f82d35c603a /ext | |
parent | 82b5dc103f205ae51eb4de7662035eb50265f558 (diff) | |
download | php-git-7527bf0c587f5bec04c47d7d21e2cc533e7f87f4.tar.gz |
made sapi_register_treat_data() to support multibyte input encoding translation without MBSTR_ENC_TRANS and changed php_treat_data to php_default_treat_data.
Diffstat (limited to 'ext')
-rw-r--r-- | ext/mbstring/mbstring.c | 46 | ||||
-rw-r--r-- | ext/mbstring/mbstring.h | 6 | ||||
-rw-r--r-- | ext/standard/string.c | 4 |
3 files changed, 35 insertions, 21 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 34d60adcdc..90a0807547 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -137,15 +137,12 @@ static unsigned char second_args_force_ref[] = { 2, BYREF_NONE, BYREF_FORCE }; #if HAVE_MBREGEX static unsigned char third_argument_force_ref[] = { 3, BYREF_NONE, BYREF_NONE, BYREF_FORCE }; #endif -#if defined(MBSTR_ENC_TRANS) -SAPI_POST_HANDLER_FUNC(php_mbstr_post_handler); static sapi_post_entry mbstr_post_entries[] = { { DEFAULT_POST_CONTENT_TYPE, sizeof(DEFAULT_POST_CONTENT_TYPE)-1, sapi_read_standard_form_data, php_mbstr_post_handler }, { MULTIPART_CONTENT_TYPE, sizeof(MULTIPART_CONTENT_TYPE)-1, NULL, rfc1867_post_handler }, { NULL, 0, NULL, NULL } }; -#endif static struct mb_overload_def mb_ovld[] = { {MB_OVERLOAD_MAIL, "mail", "mb_send_mail", "mb_orig_mail"}, @@ -646,6 +643,9 @@ PHP_INI_BEGIN() #endif /* ZEND_MULTIBYTE */ PHP_INI_ENTRY("mbstring.substitute_character", NULL, PHP_INI_ALL, OnUpdate_mbstring_substitute_character) STD_PHP_INI_ENTRY("mbstring.func_overload", "0", PHP_INI_SYSTEM, OnUpdateInt, func_overload, zend_mbstring_globals, mbstring_globals) +#if !defined(COMPILE_DL_MBSTRING) + STD_PHP_INI_BOOLEAN("mbstring.encoding_translation", "0", PHP_INI_SYSTEM, OnUpdateBool, encoding_translation, zend_mbstring_globals, mbstring_globals) +#endif /* !defined(COMPILE_DL_MBSTRING) */ PHP_INI_END() @@ -704,6 +704,7 @@ php_mbstring_init_globals(zend_mbstring_globals *pglobals TSRMLS_DC) MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR; MBSTRG(current_filter_illegal_substchar) = 0x3f; /* '?' */ MBSTRG(func_overload) = 0; + MBSTRG(encoding_translation) = 0; pglobals->outconv = NULL; #if HAVE_MBREGEX MBSTRG(default_mbctype) = MBCTYPE_EUC; @@ -727,10 +728,12 @@ PHP_MINIT_FUNCTION(mbstring) REGISTER_INI_ENTRIES(); -#if defined(MBSTR_ENC_TRANS) - sapi_unregister_post_entry(mbstr_post_entries); - sapi_register_post_entries(mbstr_post_entries); -#endif + + if(MBSTRG(encoding_translation)) { + sapi_unregister_post_entry(mbstr_post_entries); + sapi_register_post_entries(mbstr_post_entries); + sapi_register_treat_data(mbstr_treat_data); + } REGISTER_LONG_CONSTANT("MB_OVERLOAD_MAIL", MB_OVERLOAD_MAIL, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("MB_OVERLOAD_STRING", MB_OVERLOAD_STRING, CONST_CS | CONST_PERSISTENT); @@ -756,6 +759,10 @@ PHP_MSHUTDOWN_FUNCTION(mbstring) free(MBSTRG(detect_order_list)); } + if(MBSTRG(encoding_translation)) { + sapi_register_treat_data(php_default_treat_data); + } + #if HAVE_MBREGEX zend_hash_destroy(&MBSTRG(ht_rc)); #endif @@ -899,9 +906,9 @@ PHP_MINFO_FUNCTION(mbstring) #if defined(HAVE_MBSTR_KR) php_info_print_table_row(2, "korean support", "enabled"); #endif -#if defined(MBSTR_ENC_TRANS) - php_info_print_table_row(2, "http input encoding translation", "enabled"); -#endif + if(MBSTRG(encoding_translation)) { + php_info_print_table_row(2, "http input encoding translation", "enabled"); + } #if defined(HAVE_MBREGEX) php_info_print_table_row(2, "multibyte (japanese) regex support", "enabled"); #endif @@ -1227,7 +1234,6 @@ PHP_FUNCTION(mb_preferred_mime_name) } /* }}} */ -#if defined(MBSTR_ENC_TRANS) static void php_mbstr_encoding_handler(zval *arg, char *res, char *separator TSRMLS_DC) { @@ -1412,7 +1418,7 @@ int mbstr_is_mb_leadbyte(const char *s TSRMLS_DC){ } /* http input processing */ -void mbstr_treat_data(int arg, char *str, zval* destArray TSRMLS_DC) +SAPI_API SAPI_TREAT_DATA_FUNC(mbstr_treat_data) { char *res = NULL, *separator=NULL; const char *c_var; @@ -1526,7 +1532,6 @@ void mbstr_treat_data(int arg, char *str, zval* destArray TSRMLS_DC) efree(res); } } -#endif /* {{{ proto bool mb_parse_str(string encoded_string [, array result]) Parses GET/POST/COOKIE data and sets global variables */ @@ -3335,6 +3340,9 @@ PHP_FUNCTION(mb_get_info) } /* }}} */ +PHPAPI int mbstr_encoding_translation(TSRMLS_DC) { + return MBSTRG(encoding_translation); +} #ifdef ZEND_MULTIBYTE PHPAPI int php_mbstring_set_zend_encoding(TSRMLS_D) @@ -3380,13 +3388,13 @@ PHPAPI int php_mbstring_set_zend_encoding(TSRMLS_D) encoding_converter = NULL; multibyte_oddlen = php_mbstring_oddlen; -#if defined(MBSTR_ENC_TRANS) - /* notify internal encoding to Zend Engine */ - name = (char*)mbfl_no_encoding2name(MBSTRG(current_internal_encoding)); - zend_multibyte_set_internal_encoding(name, strlen(name) TSRMLS_CC); + if(MBSTRG(encoding_translation)) { + /* notify internal encoding to Zend Engine */ + name = (char*)mbfl_no_encoding2name(MBSTRG(current_internal_encoding)); + zend_multibyte_set_internal_encoding(name, strlen(name) TSRMLS_CC); - encoding_converter = php_mbstring_encoding_converter; -#endif /* defined(MBSTR_ENC_TRANS) */ + encoding_converter = php_mbstring_encoding_converter; + } zend_multibyte_set_functions(encoding_detector, encoding_converter, multibyte_oddlen TSRMLS_CC); diff --git a/ext/mbstring/mbstring.h b/ext/mbstring/mbstring.h index 19fe884ac2..1532562393 100644 --- a/ext/mbstring/mbstring.h +++ b/ext/mbstring/mbstring.h @@ -56,6 +56,7 @@ #if HAVE_MBSTRING #include "mbfilter.h" +#include "SAPI.h" #define PHP_MBSTRING_API 20020405 @@ -126,6 +127,7 @@ int php_mbregex_name2mbctype(const char *pname); char *mbstr_strrchr(const char *s, char c TSRMLS_DC); int mbstr_is_mb_leadbyte(const char *s TSRMLS_DC); +int mbstr_encoding_translation(TSRMLS_DC) ; ZEND_BEGIN_MODULE_GLOBALS(mbstring) int language; @@ -154,6 +156,7 @@ ZEND_BEGIN_MODULE_GLOBALS(mbstring) int current_filter_illegal_mode; int current_filter_illegal_substchar; long func_overload; + int encoding_translation; mbfl_buffer_converter *outconv; #if HAVE_MBREGEX int default_mbctype; @@ -194,6 +197,9 @@ int php_mbstring_encoding_converter(char **to, int *to_length, char *from, int php_mbstring_oddlen(char *string, int length, const char *encoding TSRMLS_DC); #endif /* ZEND_MULTIBYTE */ +SAPI_POST_HANDLER_FUNC(php_mbstr_post_handler); +SAPI_API SAPI_TREAT_DATA_FUNC(mbstr_treat_data); + #else /* HAVE_MBSTRING */ #define mbstring_module_ptr NULL diff --git a/ext/standard/string.c b/ext/standard/string.c index cab59b1b42..499eed7ee4 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -3223,14 +3223,14 @@ PHP_FUNCTION(parse_str) old_rg = PG(register_globals); if(argCount == 1) { PG(register_globals) = 1; - php_treat_data(PARSE_STRING, res, NULL TSRMLS_CC); + sapi_module.treat_data(PARSE_STRING, res, NULL TSRMLS_CC); } else { PG(register_globals) = 0; /* Clear out the array that was passed in. */ zval_dtor(*arrayArg); array_init(*arrayArg); - php_treat_data(PARSE_STRING, res, *arrayArg TSRMLS_CC); + sapi_module.treat_data(PARSE_STRING, res, *arrayArg TSRMLS_CC); } PG(register_globals) = old_rg; } |