masugata Thu May 11 14:47:34 2006 UTC Modified files: (Branch: PHP_5_1) /php-src/ext/mbstring mbstring.c Log: fixed all mbstring setting information doesn't return in mb_get_info( ). http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.c?r1=1.224.2.22&r2=1.224.2.23&diff_format=u Index: php-src/ext/mbstring/mbstring.c diff -u php-src/ext/mbstring/mbstring.c:1.224.2.22 php-src/ext/mbstring/mbstring.c:1.224.2.23 --- php-src/ext/mbstring/mbstring.c:1.224.2.22 Sun Mar 26 02:19:50 2006 +++ php-src/ext/mbstring/mbstring.c Thu May 11 14:47:34 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.c,v 1.224.2.22 2006/03/26 02:19:50 masugata Exp $ */ +/* $Id: mbstring.c,v 1.224.2.23 2006/05/11 14:47:34 masugata Exp $ */ /* * PHP 4 Multibyte String module "mbstring" @@ -694,14 +694,18 @@ if (new_value != NULL) { if (strcasecmp("none", new_value) == 0) { MBSTRG(filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE; + MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE; } else if (strcasecmp("long", new_value) == 0) { MBSTRG(filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG; + MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG; } else { MBSTRG(filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR; + MBSTRG(current_filter_illegal_mode) = MBFL_OUTPUTFILTER_ILLEGAL_MODE_CHAR; if (new_value_length >0) { c = strtol(new_value, &endptr, 0); if (*endptr == '\0') { MBSTRG(filter_illegal_substchar) = c; + MBSTRG(current_filter_illegal_substchar) = c; } } } @@ -3347,11 +3351,15 @@ PHP_FUNCTION(mb_get_info) { char *typ = NULL; - int typ_len; + int typ_len, n; char *name; const struct mb_overload_def *over_func; - zval *row; + zval *row1, *row2; const mbfl_language *lang = mbfl_no2language(MBSTRG(current_language)); + enum mbfl_no_encoding *entry; +#ifdef ZEND_MULTIBYTE + zval *row3; +#endif /* ZEND_MULTIBYTE */ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &typ, &typ_len) == FAILURE) { RETURN_FALSE; @@ -3370,15 +3378,15 @@ } if (MBSTRG(func_overload)){ over_func = &(mb_ovld[0]); - MAKE_STD_ZVAL(row); - array_init(row); + MAKE_STD_ZVAL(row1); + array_init(row1); while (over_func->type > 0) { if ((MBSTRG(func_overload) & over_func->type) == over_func->type ) { - add_assoc_string(row, over_func->orig_func, over_func->ovld_func, 1); + add_assoc_string(row1, over_func->orig_func, over_func->ovld_func, 1); } over_func++; } - add_assoc_zval(return_value, "func_overload", row); + add_assoc_zval(return_value, "func_overload", row1); } else { add_assoc_string(return_value, "func_overload", "no overload", 1); } @@ -3393,6 +3401,57 @@ add_assoc_string(return_value, "mail_body_encoding", name, 1); } } + add_assoc_long(return_value, "illegal_chars", MBSTRG(illegalchars)); + if (MBSTRG(encoding_translation)) { + add_assoc_string(return_value, "encoding_translation", "On", 1); + } else { + add_assoc_string(return_value, "encoding_translation", "Off", 1); + } + if ((name = (char *)mbfl_no_language2name(MBSTRG(current_language))) != NULL) { + add_assoc_string(return_value, "language", name, 1); + } + n = MBSTRG(current_detect_order_list_size); + entry = MBSTRG(current_detect_order_list); + if(n > 0) { + MAKE_STD_ZVAL(row2); + array_init(row2); + while (n > 0) { + if ((name = (char *)mbfl_no_encoding2name(*entry)) != NULL) { + add_next_index_string(row2, name, 1); + } + entry++; + n--; + } + add_assoc_zval(return_value, "detect_order", row2); + } + if (MBSTRG(current_filter_illegal_mode) == MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { + add_assoc_string(return_value, "substitute_character", "none", 1); + } else if (MBSTRG(current_filter_illegal_mode) == MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) { + add_assoc_string(return_value, "substitute_character", "long", 1); + } else { + add_assoc_long(return_value, "substitute_character", MBSTRG(current_filter_illegal_substchar)); + } + if (MBSTRG(strict_detection)) { + add_assoc_string(return_value, "strict_detection", "On", 1); + } else { + add_assoc_string(return_value, "strict_detection", "Off", 1); + } +#ifdef ZEND_MULTIBYTE + entry = MBSTRG(script_encoding_list); + n = MBSTRG(script_encoding_list_size); + if(n > 0) { + MAKE_STD_ZVAL(row3); + array_init(row3); + while (n > 0) { + if ((name = (char *)mbfl_no_encoding2name(*entry)) != NULL) { + add_next_index_string(row3, name, 1); + } + entry++; + n--; + } + add_assoc_zval(return_value, "script_encoding", row3); + } +#endif /* ZEND_MULTIBYTE */ } else if (!strcasecmp("internal_encoding", typ)) { if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_internal_encoding))) != NULL) { RETVAL_STRING(name, 1); @@ -3432,7 +3491,63 @@ } } else if (!strcasecmp("illegal_chars", typ)) { RETVAL_LONG(MBSTRG(illegalchars)); + } else if (!strcasecmp("encoding_translation", typ)) { + if (MBSTRG(encoding_translation)) { + RETVAL_STRING("On", 1); + } else { + RETVAL_STRING("Off", 1); + } + } else if (!strcasecmp("language", typ)) { + if ((name = (char *)mbfl_no_language2name(MBSTRG(current_language))) != NULL) { + RETVAL_STRING(name, 1); + } + } else if (!strcasecmp("detect_order", typ)) { + n = MBSTRG(current_detect_order_list_size); + entry = MBSTRG(current_detect_order_list); + if(n > 0) { + array_init(return_value); + while (n > 0) { + name = (char *)mbfl_no_encoding2name(*entry); + if (name) { + add_next_index_string(return_value, name, 1); + } + entry++; + n--; + } + } + } else if (!strcasecmp("substitute_character", typ)) { + if (MBSTRG(current_filter_illegal_mode) == MBFL_OUTPUTFILTER_ILLEGAL_MODE_NONE) { + RETVAL_STRING("none", 1); + } else if (MBSTRG(current_filter_illegal_mode) == MBFL_OUTPUTFILTER_ILLEGAL_MODE_LONG) { + RETVAL_STRING("long", 1); + } else { + RETVAL_LONG(MBSTRG(current_filter_illegal_substchar)); + } + } else if (!strcasecmp("strict_detection", typ)) { + if (MBSTRG(strict_detection)) { + RETVAL_STRING("On", 1); + } else { + RETVAL_STRING("Off", 1); + } } else { +#ifdef ZEND_MULTIBYTE + if (!strcasecmp("script_encoding", typ)) { + entry = MBSTRG(script_encoding_list); + n = MBSTRG(script_encoding_list_size); + if(n > 0) { + array_init(return_value); + while (n > 0) { + name = (char *)mbfl_no_encoding2name(*entry); + if (name) { + add_next_index_string(return_value, name, 1); + } + entry++; + n--; + } + } + return; + } +#endif /* ZEND_MULTIBYTE */ RETURN_FALSE; } }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php