From a7f7a7f389ba8c017fb9fcdd86c5cf8b18f098be Mon Sep 17 00:00:00 2001 From: Seiji Masugata Date: Fri, 10 Mar 2006 16:36:52 +0000 Subject: [PATCH] fixed different value was returned in mb_get_info. --- ext/mbstring/mbstring.c | 61 +++++++++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 12 deletions(-) diff --git a/ext/mbstring/mbstring.c b/ext/mbstring/mbstring.c index d854dc70aa..00e66ce6a4 100644 --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@ -3321,20 +3321,22 @@ PHP_FUNCTION(mb_send_mail) /* }}} */ -/* {{{ proto string mb_get_info([string type]) +/* {{{ proto mixed mb_get_info([string type]) Returns the current settings of mbstring */ PHP_FUNCTION(mb_get_info) { char *typ = NULL; int typ_len; char *name; + const struct mb_overload_def *over_func; + zval *row; + const mbfl_language *lang = mbfl_no2language(MBSTRG(current_language)); if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &typ, &typ_len) == FAILURE) { RETURN_FALSE; } if (!typ || !strcasecmp("all", typ)) { - const mbfl_language *lang = mbfl_no2language(MBSTRG(current_language)); array_init(return_value); if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_internal_encoding))) != NULL) { add_assoc_string(return_value, "internal_encoding", name, 1); @@ -3345,16 +3347,30 @@ PHP_FUNCTION(mb_get_info) if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_http_output_encoding))) != NULL) { add_assoc_string(return_value, "http_output", name, 1); } - if ((name = (char *)mbfl_no_encoding2name(MBSTRG(func_overload))) != NULL) { - add_assoc_string(return_value, "func_overload", name, 1); - } + if (MBSTRG(func_overload)){ + over_func = &(mb_ovld[0]); + MAKE_STD_ZVAL(row); + array_init(row); + 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); + } + over_func++; + } + add_assoc_zval(return_value, "func_overload", row); + } else { + add_assoc_string(return_value, "func_overload", "no overload", 1); + } if (lang != NULL) { - add_assoc_string(return_value, "mail_charset", - mbfl_no_encoding2name(lang->mail_charset), 1); - add_assoc_string(return_value, "mail_header_encoding", - mbfl_no_encoding2name(lang->mail_header_encoding), 1); - add_assoc_string(return_value, "mail_body_encoding", - mbfl_no_encoding2name(lang->mail_body_encoding), 1); + if ((name = (char *)mbfl_no_encoding2name(lang->mail_charset)) != NULL) { + add_assoc_string(return_value, "mail_charset", name, 1); + } + if ((name = (char *)mbfl_no_encoding2name(lang->mail_header_encoding)) != NULL) { + add_assoc_string(return_value, "mail_header_encoding", name, 1); + } + if ((name = (char *)mbfl_no_encoding2name(lang->mail_body_encoding)) != NULL) { + add_assoc_string(return_value, "mail_body_encoding", name, 1); + } } } else if (!strcasecmp("internal_encoding", typ)) { if ((name = (char *)mbfl_no_encoding2name(MBSTRG(current_internal_encoding))) != NULL) { @@ -3369,7 +3385,28 @@ PHP_FUNCTION(mb_get_info) RETVAL_STRING(name, 1); } } else if (!strcasecmp("func_overload", typ)) { - if ((name = (char *)mbfl_no_encoding2name(MBSTRG(func_overload))) != NULL) { + if (MBSTRG(func_overload)){ + over_func = &(mb_ovld[0]); + array_init(return_value); + while (over_func->type > 0) { + if ((MBSTRG(func_overload) & over_func->type) == over_func->type ) { + add_assoc_string(return_value, over_func->orig_func, over_func->ovld_func, 1); + } + over_func++; + } + } else { + RETVAL_STRING("no overload", 1); + } + } else if (!strcasecmp("mail_charset", typ)) { + if (lang != NULL && (name = (char *)mbfl_no_encoding2name(lang->mail_charset)) != NULL) { + RETVAL_STRING(name, 1); + } + } else if (!strcasecmp("mail_header_encoding", typ)) { + if (lang != NULL && (name = (char *)mbfl_no_encoding2name(lang->mail_header_encoding)) != NULL) { + RETVAL_STRING(name, 1); + } + } else if (!strcasecmp("mail_body_encoding", typ)) { + if (lang != NULL && (name = (char *)mbfl_no_encoding2name(lang->mail_body_encoding)) != NULL) { RETVAL_STRING(name, 1); } } else { -- 2.40.0