summaryrefslogtreecommitdiff
path: root/ext/mbstring/mbstring.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mbstring/mbstring.c')
-rw-r--r--ext/mbstring/mbstring.c65
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;