Skip to content

Commit

Permalink
update the functions for checking the names of encodings
Browse files Browse the repository at this point in the history
  • Loading branch information
masakielastic committed Feb 27, 2015
1 parent 1ce5f91 commit e756c9f
Showing 1 changed file with 51 additions and 30 deletions.
81 changes: 51 additions & 30 deletions ext/mbstring/mbstring.c
Expand Up @@ -2996,45 +2996,66 @@ PHP_FUNCTION(mb_strimwidth)
}
/* }}} */

static inline int php_mb_check_unicode_encoding(enum mbfl_no_encoding no_enc)
static const enum mbfl_no_encoding php_mb_no_encoding_unicode_list[] = {
mbfl_no_encoding_utf8,
mbfl_no_encoding_utf8_docomo,
mbfl_no_encoding_utf8_kddi_a,
mbfl_no_encoding_utf8_kddi_b,
mbfl_no_encoding_utf8_sb,
mbfl_no_encoding_ucs4,
mbfl_no_encoding_ucs4be,
mbfl_no_encoding_ucs4le,
mbfl_no_encoding_utf32,
mbfl_no_encoding_utf32be,
mbfl_no_encoding_utf32le,
mbfl_no_encoding_ucs2,
mbfl_no_encoding_ucs2be,
mbfl_no_encoding_ucs2le,
mbfl_no_encoding_utf16,
mbfl_no_encoding_utf16be,
mbfl_no_encoding_utf16le
};

static inline int php_mb_is_no_encoding_unicode(enum mbfl_no_encoding no_enc)
{
if (no_enc == mbfl_no_encoding_utf8
|| no_enc == mbfl_no_encoding_utf8_docomo
|| no_enc == mbfl_no_encoding_utf8_kddi_a
|| no_enc == mbfl_no_encoding_utf8_kddi_b
|| no_enc == mbfl_no_encoding_utf8_sb
|| no_enc == mbfl_no_encoding_ucs4
|| no_enc == mbfl_no_encoding_ucs4be
|| no_enc == mbfl_no_encoding_ucs4le
|| no_enc == mbfl_no_encoding_utf32
|| no_enc == mbfl_no_encoding_utf32be
|| no_enc == mbfl_no_encoding_utf32le
|| no_enc == mbfl_no_encoding_ucs2
|| no_enc == mbfl_no_encoding_ucs2be
|| no_enc == mbfl_no_encoding_ucs2le
|| no_enc == mbfl_no_encoding_utf16
|| no_enc == mbfl_no_encoding_utf16be
|| no_enc == mbfl_no_encoding_utf16le
) {
return 1;
int i;
int size = sizeof(php_mb_no_encoding_unicode_list)/sizeof(php_mb_no_encoding_unicode_list[0]);

for (i = 0; i < size; i++) {

if (no_enc == php_mb_no_encoding_unicode_list[i]) {
return 1;
}

}

return 0;
}

static inline int php_mb_check_utf8_encoding(enum mbfl_no_encoding no_enc)
static const enum mbfl_no_encoding php_mb_no_encoding_utf8_list[] = {
mbfl_no_encoding_utf8,
mbfl_no_encoding_utf8_docomo,
mbfl_no_encoding_utf8_kddi_a,
mbfl_no_encoding_utf8_kddi_b,
mbfl_no_encoding_utf8_sb
};

static inline int php_mb_is_no_encoding_utf8(enum mbfl_no_encoding no_enc)
{
if (no_enc == mbfl_no_encoding_utf8
|| no_enc == mbfl_no_encoding_utf8_docomo
|| no_enc == mbfl_no_encoding_utf8_kddi_a
|| no_enc == mbfl_no_encoding_utf8_kddi_b
|| no_enc == mbfl_no_encoding_utf8_sb
) {
return 1;
int i;
int size = sizeof(php_mb_no_encoding_utf8_list)/sizeof(php_mb_no_encoding_utf8_list[0]);

for (i = 0; i < size; i++) {

if (no_enc == php_mb_no_encoding_utf8_list[i]) {
return 1;
}

}

return 0;
}

/* {{{ MBSTRING_API char *php_mb_convert_encoding() */
MBSTRING_API char * php_mb_convert_encoding(const char *input, size_t length, const char *_to_encoding, const char *_from_encodings, size_t *output_len)
{
Expand Down Expand Up @@ -3108,9 +3129,9 @@ MBSTRING_API char * php_mb_convert_encoding(const char *input, size_t length, co

if (string.no_encoding == MBSTRG(current_internal_encoding)->no_encoding) {
mbfl_buffer_converter_illegal_substchar(convd, MBSTRG(current_filter_illegal_substchar));
} else if (php_mb_check_unicode_encoding(string.no_encoding) && php_mb_check_unicode_encoding(MBSTRG(current_internal_encoding)->no_encoding)) {
} else if (php_mb_is_no_encoding_unicode(string.no_encoding) && php_mb_is_no_encoding_unicode(MBSTRG(current_internal_encoding)->no_encoding)) {

if (php_mb_check_utf8_encoding(string.no_encoding)) {
if (php_mb_is_no_encoding_utf8(string.no_encoding)) {

if (MBSTRG(current_filter_illegal_substchar) > 0xd7ff &&
0xe000 > MBSTRG(current_filter_illegal_substchar)
Expand Down

0 comments on commit e756c9f

Please sign in to comment.