felipe Mon Aug 18 00:37:16 2008 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/mbstring mbstring.c Log: - New parameter parsing API (for mb_convert_variables()) http://cvs.php.net/viewvc.cgi/php-src/ext/mbstring/mbstring.c?r1=1.224.2.22.2.25.2.30&r2=1.224.2.22.2.25.2.31&diff_format=u Index: php-src/ext/mbstring/mbstring.c diff -u php-src/ext/mbstring/mbstring.c:1.224.2.22.2.25.2.30 php-src/ext/mbstring/mbstring.c:1.224.2.22.2.25.2.31 --- php-src/ext/mbstring/mbstring.c:1.224.2.22.2.25.2.30 Mon Aug 11 15:42:35 2008 +++ php-src/ext/mbstring/mbstring.c Mon Aug 18 00:37:16 2008 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.c,v 1.224.2.22.2.25.2.30 2008/08/11 15:42:35 nlopess Exp $ */ +/* $Id: mbstring.c,v 1.224.2.22.2.25.2.31 2008/08/18 00:37:16 felipe Exp $ */ /* * PHP 4 Multibyte String module "mbstring" @@ -3600,37 +3600,30 @@ #define PHP_MBSTR_STACK_BLOCK_SIZE 32 -/* {{{ proto string mb_convert_variables(string to-encoding, mixed from-encoding [, mixed ...]) +/* {{{ proto string mb_convert_variables(string to-encoding, mixed from-encoding, mixed vars [, ...]) Converts the string resource in variables to desired encoding */ PHP_FUNCTION(mb_convert_variables) { - zval ***args, ***stack, **var, **hash_entry; + zval ***args, ***stack, **var, **hash_entry, **zfrom_enc; HashTable *target_hash; mbfl_string string, result, *ret; enum mbfl_no_encoding from_encoding, to_encoding; mbfl_encoding_detector *identd; mbfl_buffer_converter *convd; - int n, argc, stack_level, stack_max, elistsz; + int n, to_enc_len, argc, stack_level, stack_max, elistsz; enum mbfl_no_encoding *elist; - char *name; - void *ptmp; - - argc = ZEND_NUM_ARGS(); - if (argc < 3) { - WRONG_PARAM_COUNT; - } - args = (zval ***)ecalloc(argc, sizeof(zval **)); - if (zend_get_parameters_array_ex(argc, args) == FAILURE) { - efree((void *)args); - WRONG_PARAM_COUNT; + char *name, *to_enc; + void *ptmp; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "sZ+", &to_enc, &to_enc_len, &zfrom_enc, &args, &argc) == FAILURE) { + return; } /* new encoding */ - convert_to_string_ex(args[0]); - to_encoding = mbfl_name2no_encoding(Z_STRVAL_PP(args[0])); + to_encoding = mbfl_name2no_encoding(to_enc); if (to_encoding == mbfl_no_encoding_invalid) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", Z_STRVAL_PP(args[0])); - efree((void *)args); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", to_enc); + efree(args); RETURN_FALSE; } @@ -3644,13 +3637,13 @@ /* pre-conversion encoding */ elist = NULL; elistsz = 0; - switch (Z_TYPE_PP(args[1])) { + switch (Z_TYPE_PP(zfrom_enc)) { case IS_ARRAY: - php_mb_parse_encoding_array(*args[1], &elist, &elistsz, 0 TSRMLS_CC); + php_mb_parse_encoding_array(*zfrom_enc, &elist, &elistsz, 0 TSRMLS_CC); break; default: - convert_to_string_ex(args[1]); - php_mb_parse_encoding_list(Z_STRVAL_PP(args[1]), Z_STRLEN_PP(args[1]), &elist, &elistsz, 0 TSRMLS_CC); + convert_to_string_ex(zfrom_enc); + php_mb_parse_encoding_list(Z_STRVAL_PP(zfrom_enc), Z_STRLEN_PP(zfrom_enc), &elist, &elistsz, 0 TSRMLS_CC); break; } if (elistsz <= 0) { @@ -3665,7 +3658,7 @@ stack_level = 0; identd = mbfl_encoding_detector_new(elist, elistsz, MBSTRG(strict_detection)); if (identd != NULL) { - n = 2; + n = 0; while (n < argc || stack_level > 0) { if (stack_level <= 0) { var = args[n++]; @@ -3746,7 +3739,7 @@ stack_max = PHP_MBSTR_STACK_BLOCK_SIZE; stack = (zval ***)safe_emalloc(stack_max, sizeof(zval **), 0); stack_level = 0; - n = 2; + n = 0; while (n < argc || stack_level > 0) { if (stack_level <= 0) { var = args[n++]; @@ -3812,7 +3805,7 @@ mbfl_buffer_converter_delete(convd); } - efree((void *)args); + efree(args); name = (char *)mbfl_no_encoding2name(from_encoding); if (name != NULL) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php