masugata Tue May 30 15:40:39 2006 UTC Modified files: (Branch: PHP_5_2) /php-src/ext/mbstring mbstring.c mbstring.h Log: added mb_list_encodings_alias_names( ), mb_list_mime_names( ). http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.c?r1=1.224.2.22.2.2&r2=1.224.2.22.2.3&diff_format=u Index: php-src/ext/mbstring/mbstring.c diff -u php-src/ext/mbstring/mbstring.c:1.224.2.22.2.2 php-src/ext/mbstring/mbstring.c:1.224.2.22.2.3 --- php-src/ext/mbstring/mbstring.c:1.224.2.22.2.2 Tue May 30 15:38:22 2006 +++ php-src/ext/mbstring/mbstring.c Tue May 30 15:40:39 2006 @@ -17,7 +17,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.c,v 1.224.2.22.2.2 2006/05/30 15:38:22 masugata Exp $ */ +/* $Id: mbstring.c,v 1.224.2.22.2.3 2006/05/30 15:40:39 masugata Exp $ */ /* * PHP 4 Multibyte String module "mbstring" @@ -212,6 +212,8 @@ PHP_FE(mb_convert_encoding, NULL) PHP_FE(mb_detect_encoding, NULL) PHP_FE(mb_list_encodings, NULL) + PHP_FE(mb_list_encodings_alias_names, NULL) + PHP_FE(mb_list_mime_names, NULL) PHP_FE(mb_convert_kana, NULL) PHP_FE(mb_encode_mimeheader, NULL) PHP_FE(mb_decode_mimeheader, NULL) @@ -2364,6 +2366,122 @@ } /* }}} */ +/* {{{ proto array mb_list_encodings_alias_names([string encoding]) + Returns an array of all supported alias encodings */ +PHP_FUNCTION(mb_list_encodings_alias_names) +{ + const mbfl_encoding **encodings; + const mbfl_encoding *encoding; + enum mbfl_no_encoding no_encoding; + int i, j; + zval *row; + char *name = NULL; + int name_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &name, &name_len) == FAILURE) { + RETURN_FALSE; + } + + if (name == NULL) { + array_init(return_value); + i = 0; + encodings = mbfl_get_supported_encodings(); + while ((encoding = encodings[i++]) != NULL) { + MAKE_STD_ZVAL(row); + array_init(row); + if (encoding->aliases != NULL) { + j = 0; + while ((*encoding->aliases)[j] != NULL) { + add_next_index_string(row, (char *)(*encoding->aliases)[j], 1); + j++; + } + } + add_assoc_zval(return_value, (char *) encoding->name, row); + } + } else { + no_encoding = mbfl_name2no_encoding(name); + if (no_encoding == mbfl_no_encoding_invalid) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", name); + RETURN_FALSE; + } + + name = (char *)mbfl_no_encoding2name(no_encoding); + if (name != NULL) { + i = 0; + encodings = mbfl_get_supported_encodings(); + while ((encoding = encodings[i++]) != NULL) { + if (strcmp(encoding->name, name) != 0){ continue; } + + array_init(return_value); + if (encoding->aliases != NULL) { + j = 0; + while ((*encoding->aliases)[j] != NULL) { + add_next_index_string(return_value, (char *)(*encoding->aliases)[j], 1); + j++; + } + } + + break; + } + } else { + RETURN_FALSE; + } + } +} +/* }}} */ + +/* {{{ proto mixed mb_list_mime_names([string encoding]) + Returns an array or string of all supported mime names */ +PHP_FUNCTION(mb_list_mime_names) +{ + const mbfl_encoding **encodings; + const mbfl_encoding *encoding; + enum mbfl_no_encoding no_encoding; + int i; + char *name = NULL; + int name_len; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|s", &name, &name_len) == FAILURE) { + RETURN_FALSE; + } + + if (name == NULL) { + array_init(return_value); + i = 0; + encodings = mbfl_get_supported_encodings(); + while ((encoding = encodings[i++]) != NULL) { + if(encoding->mime_name != NULL) { + add_assoc_string(return_value, (char *) encoding->name, (char *) encoding->mime_name, 1); + } else{ + add_assoc_string(return_value, (char *) encoding->name, "", 1); + } + } + } else { + no_encoding = mbfl_name2no_encoding(name); + if (no_encoding == mbfl_no_encoding_invalid) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Unknown encoding \"%s\"", name); + RETURN_FALSE; + } + + name = (char *)mbfl_no_encoding2name(no_encoding); + if (name != NULL) { + i = 0; + encodings = mbfl_get_supported_encodings(); + while ((encoding = encodings[i++]) != NULL) { + if (strcmp(encoding->name, name) != 0){ continue; } + if(encoding->mime_name != NULL) { + RETURN_STRING((char *) encoding->mime_name, 1); + } + break; + } + RETURN_STRING("", 1); + } else { + RETURN_FALSE; + } + } +} +/* }}} */ + /* {{{ proto string mb_encode_mimeheader(string str [, string charset [, string transfer-encoding [, string linefeed [, int indent]]]]) Converts the string to MIME "encoded-word" in the format of =?charset?(B|Q)?encoded_string?= */ PHP_FUNCTION(mb_encode_mimeheader) http://cvs.php.net/viewcvs.cgi/php-src/ext/mbstring/mbstring.h?r1=1.66.2.4&r2=1.66.2.4.2.1&diff_format=u Index: php-src/ext/mbstring/mbstring.h diff -u php-src/ext/mbstring/mbstring.h:1.66.2.4 php-src/ext/mbstring/mbstring.h:1.66.2.4.2.1 --- php-src/ext/mbstring/mbstring.h:1.66.2.4 Tue Mar 21 07:56:28 2006 +++ php-src/ext/mbstring/mbstring.h Tue May 30 15:40:39 2006 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: mbstring.h,v 1.66.2.4 2006/03/21 07:56:28 hirokawa Exp $ */ +/* $Id: mbstring.h,v 1.66.2.4.2.1 2006/05/30 15:40:39 masugata Exp $ */ /* * PHP 4 Multibyte String module "mbstring" (currently only for Japanese) @@ -112,6 +112,8 @@ PHP_FUNCTION(mb_convert_encoding); PHP_FUNCTION(mb_detect_encoding); PHP_FUNCTION(mb_list_encodings); +PHP_FUNCTION(mb_list_encodings_alias_names); +PHP_FUNCTION(mb_list_mime_names); PHP_FUNCTION(mb_convert_kana); PHP_FUNCTION(mb_encode_mimeheader); PHP_FUNCTION(mb_decode_mimeheader);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php