com php-src: delete duplicate functions: ext/mbstring/mbstring.c

From: Date: Sat, 13 Aug 2016 21:29:23 +0000
Subject: com php-src: delete duplicate functions: ext/mbstring/mbstring.c
Groups: php.cvs 
Request: Send a blank email to php-cvs+get-96506@lists.php.net to get a copy of this message
Commit: f49a5a67cfde6c318b53ac26c4e011e0c8483647 Author: Masaki Kagaya <masakielastic@gmail.com> Sun, 14 Aug 2016 06:29:23 +0900 Parents: a22d27df4cdabe6cab516c1f967d56cc5a8fb891 84a94ca62f5c2a4451fb6500fc017f313524a758 Branches: master Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=f49a5a67cfde6c318b53ac26c4e011e0c8483647 Log: delete duplicate functions Changed paths: MM ext/mbstring/mbstring.c Diff: diff --cc ext/mbstring/mbstring.c index a646d15,e498c40..a0a1eee --- a/ext/mbstring/mbstring.c +++ b/ext/mbstring/mbstring.c @@@ -1970,176 -1992,6 +1992,73 @@@ PHP_FUNCTION(mb_detect_order } /* }}} */ - static const enum mbfl_no_encoding php_mb_unsupported_no_encoding_list[] = { - mbfl_no_encoding_pass, - mbfl_no_encoding_auto, - mbfl_no_encoding_wchar, - mbfl_no_encoding_byte2be, - mbfl_no_encoding_byte2le, - mbfl_no_encoding_byte4be, - mbfl_no_encoding_byte4le, - mbfl_no_encoding_base64, - mbfl_no_encoding_uuencode, - mbfl_no_encoding_html_ent, - mbfl_no_encoding_qprint, - mbfl_no_encoding_utf7, - mbfl_no_encoding_utf7imap, - mbfl_no_encoding_2022kr, - mbfl_no_encoding_jis, - mbfl_no_encoding_2022jp, - mbfl_no_encoding_2022jpms, - mbfl_no_encoding_jis_ms, - mbfl_no_encoding_2022jp_2004, - mbfl_no_encoding_2022jp_kddi, - mbfl_no_encoding_cp50220, - mbfl_no_encoding_cp50220raw, - mbfl_no_encoding_cp50221, - mbfl_no_encoding_cp50222 - }; - - static inline int php_mb_is_unsupported_no_encoding(enum mbfl_no_encoding no_enc) - { - int i; - int size = sizeof(php_mb_unsupported_no_encoding_list)/sizeof(php_mb_unsupported_no_encoding_list[0]); - - for (i = 0; i < size; i++) { - - if (no_enc == php_mb_unsupported_no_encoding_list[i]) { - return 1; - } - - } - - return 0; - } - - 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) - { - 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 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) - { - 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; - } - +static inline int php_mb_check_code_point(long cp) +{ + enum mbfl_no_encoding no_enc; + char* buf; + char buf_len; + + no_enc = MBSTRG(current_internal_encoding)->no_encoding; + + if (php_mb_is_no_encoding_utf8(no_enc)) { + + if ((cp > 0 && 0xd800 > cp) || (cp > 0xdfff && 0x110000 > cp)) { + return 1; + } + + return 0; + } else if (php_mb_is_no_encoding_unicode(no_enc)) { + + if (0 > cp || cp > 0x10ffff) { + return 0; + } + + return 1; + + // backward compatibility + } else if (php_mb_is_unsupported_no_encoding(no_enc)) { + return cp < 0xffff && cp > 0x0; + } + + if (cp < 0x100) { + buf_len = 1; + buf = (char *) safe_emalloc(buf_len, 1, 1); + buf[0] = cp; + buf[1] = 0; + } else if (cp < 0x10000) { + buf_len = 2; + buf = (char *) safe_emalloc(buf_len, 1, 1); + buf[0] = cp >> 8; + buf[1] = cp & 0xff; + buf[2] = 0; + } else if (cp < 0x1000000) { + buf_len = 3; + buf = (char *) safe_emalloc(buf_len, 1, 1); + buf[0] = cp >> 16; + buf[1] = (cp >> 8) & 0xff; + buf[2] = cp & 0xff; + buf[3] = 0; + } else { + buf_len = 4; + buf = (char *) safe_emalloc(buf_len, 1, 1); - buf[0] = cp >> 24; ++ buf[0] = cp >> 24; + buf[1] = (cp >> 16) & 0xff; + buf[2] = (cp >> 8) & 0xff; + buf[3] = cp & 0xff; + buf[4] = 0; + } + + if (php_mb_check_encoding(buf, buf_len, NULL)) { + efree(buf); + + return 1; + } + + efree(buf); + + return 0; +} + /* {{{ proto mixed mb_substitute_character([mixed substchar]) Sets the current substitute_character or returns the current substitute_character */ PHP_FUNCTION(mb_substitute_character) @@@ -3141,6 -3110,14 +3177,14 @@@ PHP_FUNCTION(mb_strimwidth string.val = (unsigned char *)str; string.len = str_len; + if ((from < 0) || (width < 0)) { + swidth = mbfl_strwidth(&string); + } + + if (from < 0) { + from += swidth; + } - ++ if (from < 0 || (size_t)from > str_len) { php_error_docref(NULL, E_WARNING, "Start position is out of range"); RETURN_FALSE;

« previous php.cvs (#96506) next »