diff options
Diffstat (limited to 'ext/mbstring/mbstring.c')
-rw-r--r-- | ext/mbstring/mbstring.c | 65 |
1 files changed, 21 insertions, 44 deletions
diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index 5127780cf5..a5ad99bcec 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -361,12 +361,6 @@ static mbfl_allocators _php_mb_allocators = { * Even if any illegal encoding is detected the result may contain a list * of parsed encodings. */ - -/* {{{ static int php_mb_parse_encoding_list() - * Return 0 if input contains any illegal encoding, otherwise 1. - * Even if any illegal encoding is detected the result may contain a list - * of parsed encodings. - */ static int php_mb_parse_encoding_list(const char *value, int value_length, enum mbfl_no_encoding **return_list, int *return_size, int persistent TSRMLS_DC) { @@ -3737,10 +3731,9 @@ MBSTRING_API size_t php_mb_gpc_mbchar_bytes(const char *s TSRMLS_DC) /* }}} */ /* {{{ MBSTRING_API int php_mb_gpc_encoding_converter() */ -MBSTRING_API int php_mb_gpc_encoding_converter(char **str, int *len, int num, const char *encoding_to, const char *encoding_from +MBSTRING_API int php_mb_gpc_encoding_converter(char **str, int *len, const char *encoding_to, const char *encoding_from TSRMLS_DC) { - int i; mbfl_string string, result, *ret; enum mbfl_no_encoding from_encoding, to_encoding; mbfl_buffer_converter *convd; @@ -3774,38 +3767,35 @@ MBSTRING_API int php_mb_gpc_encoding_converter(char **str, int *len, int num, co string.no_encoding = from_encoding; string.no_language = MBSTRG(current_language); - for (i=0; i<num; i++) { - string.val = (char*)str[i]; - string.len = len[i]; + string.val = (char*)(*str); + string.len = *len; - /* initialize converter */ - convd = mbfl_buffer_converter_new(from_encoding, to_encoding, string.len); - if (convd == NULL) { - return -1; - } - mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode)); - mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar)); + /* initialize converter */ + convd = mbfl_buffer_converter_new(from_encoding, to_encoding, string.len); + if (convd == NULL) { + return -1; + } + mbfl_buffer_converter_illegal_mode(convd, MBSTRG(current_filter_illegal_mode)); + mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar)); - /* do it */ - ret = mbfl_buffer_converter_feed_result(convd, &string, &result); - if (ret != NULL) { - efree(str[i]); - str[i] = ret->val; - len[i] = ret->len; - } - mbfl_buffer_converter_delete(convd); + /* do it */ + ret = mbfl_buffer_converter_feed_result(convd, &string, &result); + if (ret != NULL) { + efree(*str); + *str = ret->val; + *len = ret->len; } + mbfl_buffer_converter_delete(convd); return ret ? 0 : -1; } /* {{{ MBSTRING_API int php_mb_gpc_encoding_detector() */ -MBSTRING_API int php_mb_gpc_encoding_detector(char **arg_string, int *arg_length, int num, char *arg_list TSRMLS_DC) +MBSTRING_API int php_mb_gpc_encoding_detector(const char *arg_string, int arg_length, char *arg_list TSRMLS_DC) { mbfl_string string; enum mbfl_no_encoding *elist; enum mbfl_no_encoding encoding; - mbfl_encoding_detector *identd = NULL; int size, *list; @@ -3849,22 +3839,9 @@ MBSTRING_API int php_mb_gpc_encoding_detector(char **arg_string, int *arg_length mbfl_string_init(&string); string.no_language = MBSTRG(current_language); - - identd = mbfl_encoding_detector_new(elist, size); - - if (identd) { - int n = 0; - while (n < num) { - string.val = (unsigned char*)arg_string[n]; - string.len = arg_length[n]; - if (mbfl_encoding_detector_feed(identd, &string)) { - break; - } - n++; - } - encoding = mbfl_encoding_detector_judge(identd); - mbfl_encoding_detector_delete(identd); - } + string.val = (char*)arg_string; + string.len = arg_length; + encoding = mbfl_identify_encoding_no(&string, elist, size TSRMLS_CC); if (encoding != mbfl_no_encoding_invalid) { MBSTRG(http_input_identify) = encoding; |