]> granicus.if.org Git - php/commitdiff
Refactor mbfl_ident.c, mbfl_encoding.c, mbfl_memory_device.c, mbfl_string.c
authorAlex Dowad <alexinbeijing@gmail.com>
Thu, 16 Jul 2020 08:59:39 +0000 (10:59 +0200)
committerAlex Dowad <alexinbeijing@gmail.com>
Tue, 13 Oct 2020 04:12:38 +0000 (06:12 +0200)
- Make everything less gratuitously verbose
- Don't litter the code with lots of unneeded NULL checks (for things which
  will never be NULL)
- Don't return success/failure code from functions which can never fail
- For encoding structs, don't use pointers to pointers to pointers for the
  list of alias strings. Pointers to pointers (2 levels of indirection)
  is what actually makes sense. This gets rid of some extraneous
  dereference operations.

63 files changed:
ext/mbstring/libmbfl/filters/mbfilter_armscii8.c
ext/mbstring/libmbfl/filters/mbfilter_ascii.c
ext/mbstring/libmbfl/filters/mbfilter_big5.c
ext/mbstring/libmbfl/filters/mbfilter_cp1251.c
ext/mbstring/libmbfl/filters/mbfilter_cp1252.c
ext/mbstring/libmbfl/filters/mbfilter_cp1254.c
ext/mbstring/libmbfl/filters/mbfilter_cp5022x.c
ext/mbstring/libmbfl/filters/mbfilter_cp51932.c
ext/mbstring/libmbfl/filters/mbfilter_cp850.c
ext/mbstring/libmbfl/filters/mbfilter_cp866.c
ext/mbstring/libmbfl/filters/mbfilter_cp932.c
ext/mbstring/libmbfl/filters/mbfilter_cp936.c
ext/mbstring/libmbfl/filters/mbfilter_euc_cn.c
ext/mbstring/libmbfl/filters/mbfilter_euc_jp.c
ext/mbstring/libmbfl/filters/mbfilter_euc_jp_2004.c
ext/mbstring/libmbfl/filters/mbfilter_euc_jp_win.c
ext/mbstring/libmbfl/filters/mbfilter_euc_kr.c
ext/mbstring/libmbfl/filters/mbfilter_euc_tw.c
ext/mbstring/libmbfl/filters/mbfilter_gb18030.c
ext/mbstring/libmbfl/filters/mbfilter_htmlent.c
ext/mbstring/libmbfl/filters/mbfilter_iso2022_jp_ms.c
ext/mbstring/libmbfl/filters/mbfilter_iso2022jp_mobile.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_1.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_10.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_13.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_14.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_15.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_16.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_2.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_3.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_4.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_5.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_6.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_7.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_8.c
ext/mbstring/libmbfl/filters/mbfilter_iso8859_9.c
ext/mbstring/libmbfl/filters/mbfilter_koi8r.c
ext/mbstring/libmbfl/filters/mbfilter_koi8u.c
ext/mbstring/libmbfl/filters/mbfilter_qprint.c
ext/mbstring/libmbfl/filters/mbfilter_sjis.c
ext/mbstring/libmbfl/filters/mbfilter_sjis_2004.c
ext/mbstring/libmbfl/filters/mbfilter_sjis_mac.c
ext/mbstring/libmbfl/filters/mbfilter_sjis_mobile.c
ext/mbstring/libmbfl/filters/mbfilter_sjis_open.c
ext/mbstring/libmbfl/filters/mbfilter_ucs2.c
ext/mbstring/libmbfl/filters/mbfilter_ucs4.c
ext/mbstring/libmbfl/filters/mbfilter_uhc.c
ext/mbstring/libmbfl/filters/mbfilter_utf16.c
ext/mbstring/libmbfl/filters/mbfilter_utf32.c
ext/mbstring/libmbfl/filters/mbfilter_utf7.c
ext/mbstring/libmbfl/filters/mbfilter_utf8.c
ext/mbstring/libmbfl/filters/mbfilter_utf8_mobile.c
ext/mbstring/libmbfl/mbfl/mbfilter.c
ext/mbstring/libmbfl/mbfl/mbfilter_8bit.c
ext/mbstring/libmbfl/mbfl/mbfilter_pass.c
ext/mbstring/libmbfl/mbfl/mbfl_encoding.c
ext/mbstring/libmbfl/mbfl/mbfl_encoding.h
ext/mbstring/libmbfl/mbfl/mbfl_ident.c
ext/mbstring/libmbfl/mbfl/mbfl_ident.h
ext/mbstring/libmbfl/mbfl/mbfl_memory_device.c
ext/mbstring/libmbfl/mbfl/mbfl_memory_device.h
ext/mbstring/libmbfl/mbfl/mbfl_string.c
ext/mbstring/mbstring.c

index 38c8f98bd18aec397a8c54bb8df01cb20430b0ba..e2fa8d86eab772043568915ddfea654b507bfd4a 100644 (file)
@@ -38,7 +38,7 @@ const mbfl_encoding mbfl_encoding_armscii8 = {
        mbfl_no_encoding_armscii8,
        "ArmSCII-8",
        "ArmSCII-8",
-       (const char *(*)[])&mbfl_encoding_armscii8_aliases,
+       mbfl_encoding_armscii8_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_armscii8_wchar,
index 43d659a46c899337cec1c54f7970caf9b8b6acf0..4e02c26aac89dfb40d74fcc6a550ffa97b420b81 100644 (file)
@@ -39,7 +39,7 @@ const mbfl_encoding mbfl_encoding_ascii = {
        mbfl_no_encoding_ascii,
        "ASCII",
        "US-ASCII", /* preferred MIME name */
-       (const char *(*)[])&mbfl_encoding_ascii_aliases,
+       mbfl_encoding_ascii_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_ascii_wchar,
index 1e59924092ac29a566c9b251577b0c52cb132447..95c75a37e34c19adfa0bed43594f2db00dd13d83 100644 (file)
@@ -59,7 +59,7 @@ const mbfl_encoding mbfl_encoding_big5 = {
        mbfl_no_encoding_big5,
        "BIG-5",
        "BIG5",
-       (const char *(*)[])&mbfl_encoding_big5_aliases,
+       mbfl_encoding_big5_aliases,
        mblen_table_big5,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_big5_wchar,
index 470adf1a084916689ce64706ba35289c36529166..af05b5ec6d9868811cf7bfd4d1d06dd05390e1fd 100644 (file)
@@ -39,7 +39,7 @@ const mbfl_encoding mbfl_encoding_cp1251 = {
        mbfl_no_encoding_cp1251,
        "Windows-1251",
        "Windows-1251",
-       (const char *(*)[])&mbfl_encoding_cp1251_aliases,
+       mbfl_encoding_cp1251_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_cp1251_wchar,
index a274e4b796c57b4ca316987e1a9fa5991c3ed9c1..1f6717d2ac6610b82e43bc4adfc21dda49304bbd 100644 (file)
@@ -39,7 +39,7 @@ const mbfl_encoding mbfl_encoding_cp1252 = {
        mbfl_no_encoding_cp1252,
        "Windows-1252",
        "Windows-1252",
-       (const char *(*)[])&mbfl_encoding_cp1252_aliases,
+       mbfl_encoding_cp1252_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_cp1252_wchar,
index 7e4bb4b148e96577d2299854d48cade9817d2fa4..eebd5b322acb9ff09177f194f71ffa1c33b4694e 100644 (file)
@@ -39,7 +39,7 @@ const mbfl_encoding mbfl_encoding_cp1254 = {
        mbfl_no_encoding_cp1254,
        "Windows-1254",
        "Windows-1254",
-       (const char *(*)[])&mbfl_encoding_cp1254_aliases,
+       mbfl_encoding_cp1254_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_cp1254_wchar,
index c58f0a6c4f7f6cfff82348521fabb9fdc3ebfb1e..798487d34284fb4c3e6443470f6b3b481288d45a 100644 (file)
@@ -59,7 +59,7 @@ const mbfl_encoding mbfl_encoding_cp50220 = {
        mbfl_no_encoding_cp50220,
        "CP50220",
        "ISO-2022-JP",
-       (const char *(*)[])NULL,
+       NULL,
        NULL,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_cp50220_wchar,
@@ -70,7 +70,7 @@ const mbfl_encoding mbfl_encoding_cp50220raw = {
        mbfl_no_encoding_cp50220raw,
        "CP50220raw",
        "ISO-2022-JP",
-       (const char *(*)[])NULL,
+       NULL,
        NULL,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_cp50220raw_wchar,
index da046c86b7609ed39fe46b7e5ea6764032e5f1b0..9b893bc6388d7ea23e876bd5cc7fa5bd59e0eba6 100644 (file)
@@ -68,7 +68,7 @@ const mbfl_encoding mbfl_encoding_cp51932 = {
        mbfl_no_encoding_cp51932,
        "CP51932",
        "CP51932",
-       (const char *(*)[])&mbfl_encoding_cp51932_aliases,
+       mbfl_encoding_cp51932_aliases,
        mblen_table_eucjp,
        MBFL_ENCTYPE_MBCS,
        &vtbl_cp51932_wchar,
index 5d6b265fc15e9314d18c3d415df5655e3f8f85b1..d9d705f70f99ad0039e7e8a3f52d64be688ac764 100644 (file)
@@ -35,7 +35,7 @@ const mbfl_encoding mbfl_encoding_cp850 = {
        mbfl_no_encoding_cp850,
        "CP850",
        "CP850",
-       (const char *(*)[])&mbfl_encoding_cp850_aliases,
+       mbfl_encoding_cp850_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_cp850_wchar,
index 504903bef0c06f8ecb62a3517ab127e2b5d3d419..9c548627b048205ea6f400aa3787b973a4605d68 100644 (file)
@@ -39,7 +39,7 @@ const mbfl_encoding mbfl_encoding_cp866 = {
        mbfl_no_encoding_cp866,
        "CP866",
        "CP866",
-       (const char *(*)[])&mbfl_encoding_cp866_aliases,
+       mbfl_encoding_cp866_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_cp866_wchar,
index 3cbca1cb6451ba7978cce59a0d8c73a6b78f667e..511d8644651a0370c60a10b09ffe367c0a04d10d 100644 (file)
@@ -60,7 +60,7 @@ const mbfl_encoding mbfl_encoding_cp932 = {
        mbfl_no_encoding_cp932,
        "CP932",
        "Shift_JIS",
-       (const char *(*)[])&mbfl_encoding_cp932_aliases,
+       mbfl_encoding_cp932_aliases,
        mblen_table_sjis,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_cp932_wchar,
index df6d77907fc3f18f062266bec18dc17d51cd8774..d73954267fe7274e629dc35af99da38b721f3ce7 100644 (file)
@@ -59,7 +59,7 @@ const mbfl_encoding mbfl_encoding_cp936 = {
        mbfl_no_encoding_cp936,
        "CP936",
        "CP936",
-       (const char *(*)[])&mbfl_encoding_cp936_aliases,
+       mbfl_encoding_cp936_aliases,
        mblen_table_cp936,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_cp936_wchar,
index 53a8aac2a64c0d7833ae4bdc9c780cf116471b04..0a7edaa927196f728b4e4edb6914c1149f18bfe9 100644 (file)
@@ -59,7 +59,7 @@ const mbfl_encoding mbfl_encoding_euc_cn = {
        mbfl_no_encoding_euc_cn,
        "EUC-CN",
        "CN-GB",
-       (const char *(*)[])&mbfl_encoding_euc_cn_aliases,
+       mbfl_encoding_euc_cn_aliases,
        mblen_table_euccn,
        MBFL_ENCTYPE_MBCS,
        &vtbl_euccn_wchar,
index 252a10a58dcfbfd3c5b918f9928c281b0af6706e..61da27f04388a7f3ef1e5e24ee4d84b8f1608fc6 100644 (file)
@@ -60,7 +60,7 @@ const mbfl_encoding mbfl_encoding_euc_jp = {
        mbfl_no_encoding_euc_jp,
        "EUC-JP",
        "EUC-JP",
-       (const char *(*)[])&mbfl_encoding_euc_jp_aliases,
+       mbfl_encoding_euc_jp_aliases,
        mblen_table_eucjp,
        MBFL_ENCTYPE_MBCS,
        &vtbl_eucjp_wchar,
index 30d869cea5b6f8a67758634f92a9b314a749cb66..c6c708b3378a4725c8a78f41ac3f79c1b1f7147e 100644 (file)
@@ -40,7 +40,7 @@ const mbfl_encoding mbfl_encoding_eucjp2004 = {
        mbfl_no_encoding_eucjp2004,
        "EUC-JP-2004",
        "EUC-JP",
-       (const char *(*)[])&mbfl_encoding_eucjp2004_aliases,
+       mbfl_encoding_eucjp2004_aliases,
        mblen_table_eucjp,
        MBFL_ENCTYPE_MBCS,
        &vtbl_eucjp2004_wchar,
index dd426cae2382210de6509cb626779b059f7b639d..7c1aebdea5bcb631515d68383c5796d72e67d082 100644 (file)
@@ -69,7 +69,7 @@ const mbfl_encoding mbfl_encoding_eucjp_win = {
        mbfl_no_encoding_eucjp_win,
        "eucJP-win",
        "EUC-JP",
-       (const char *(*)[])&mbfl_encoding_eucjp_win_aliases,
+       mbfl_encoding_eucjp_win_aliases,
        mblen_table_eucjp,
        MBFL_ENCTYPE_MBCS,
        &vtbl_eucjpwin_wchar,
index e9b08e08c1f7233f547e21642643032cbe18141b..0c44a99860131cc165796bf87f85e600a0340e37 100644 (file)
@@ -58,7 +58,7 @@ const mbfl_encoding mbfl_encoding_euc_kr = {
        mbfl_no_encoding_euc_kr,
        "EUC-KR",
        "EUC-KR",
-       (const char *(*)[])&mbfl_encoding_euc_kr_aliases,
+       mbfl_encoding_euc_kr_aliases,
        mblen_table_euckr,
        MBFL_ENCTYPE_MBCS,
        &vtbl_euckr_wchar,
index c76eeb36bfdfea4c61a628664f66e40b64db793a..74bca29d47e8b63d9a46a42390c9926b46ae7cbb 100644 (file)
@@ -60,7 +60,7 @@ const mbfl_encoding mbfl_encoding_euc_tw = {
        mbfl_no_encoding_euc_tw,
        "EUC-TW",
        "EUC-TW",
-       (const char *(*)[])&mbfl_encoding_euc_tw_aliases,
+       mbfl_encoding_euc_tw_aliases,
        mblen_table_euctw,
        MBFL_ENCTYPE_MBCS,
        &vtbl_euctw_wchar,
index b94d664f401d7c54dceb7ca87dde193c917d6047..ec6e3973a53d5a97c98ab1f7710386a9793ef07b 100644 (file)
@@ -41,7 +41,7 @@ const mbfl_encoding mbfl_encoding_gb18030 = {
        mbfl_no_encoding_gb18030,
        "GB18030",
        "GB18030",
-       (const char *(*)[])&mbfl_encoding_gb18030_aliases,
+       mbfl_encoding_gb18030_aliases,
        NULL,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_gb18030_wchar,
index 7176fd4717ade340aa0254a3fecd2d68984fc2c5..95a08171036998252e0cd83133413da33459cf2e 100644 (file)
@@ -57,7 +57,7 @@ const mbfl_encoding mbfl_encoding_html_ent = {
        mbfl_no_encoding_html_ent,
        "HTML-ENTITIES",
        "HTML-ENTITIES",
-       (const char *(*)[])&mbfl_encoding_html_ent_aliases,
+       mbfl_encoding_html_ent_aliases,
        NULL,
        MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_html_wchar,
index 1e9757eae62e557d65d4013a312b7a30061c014b..32f4072ce2deab120744e1fcfc78be733a741f3d 100644 (file)
@@ -42,7 +42,7 @@ const mbfl_encoding mbfl_encoding_2022jpms = {
        mbfl_no_encoding_2022jpms,
        "ISO-2022-JP-MS",
        "ISO-2022-JP",
-       (const char *(*)[])&mbfl_encoding_2022jpms_aliases,
+       mbfl_encoding_2022jpms_aliases,
        NULL,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_2022jpms_wchar,
index 32ea47712e1657c6259c40977619c7b551528536..00f0ddeda84e5cc35e50257f8f1f244592eaecc7 100644 (file)
@@ -44,7 +44,7 @@ const mbfl_encoding mbfl_encoding_2022jp_kddi = {
        mbfl_no_encoding_2022jp_kddi,
        "ISO-2022-JP-MOBILE#KDDI",
        "ISO-2022-JP",
-       (const char *(*)[])&mbfl_encoding_2022jp_kddi_aliases,
+       mbfl_encoding_2022jp_kddi_aliases,
        NULL,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_2022jp_kddi_wchar,
index 1549ba81bfb95c766cd5e8fbd203b2de0f117aab..899234f3b05bf56b98a5c1a976f139b8cab56fa6 100644 (file)
@@ -36,7 +36,7 @@ const mbfl_encoding mbfl_encoding_8859_1 = {
        mbfl_no_encoding_8859_1,
        "ISO-8859-1",
        "ISO-8859-1",
-       (const char *(*)[])&mbfl_encoding_8859_1_aliases,
+       mbfl_encoding_8859_1_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_1_wchar,
index 12cd960a8802e798649d0c5cf61fba6214efee5d..e82c52f4b6a2740181ddd46af0aa0db37517a996 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_10 = {
        mbfl_no_encoding_8859_10,
        "ISO-8859-10",
        "ISO-8859-10",
-       (const char *(*)[])&mbfl_encoding_8859_10_aliases,
+       mbfl_encoding_8859_10_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_10_wchar,
index 25526263b86c9c9fe5fadd7eaba69da68879b609..ec5d5348a3f239b9008292aec3767a3662804d75 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_13 = {
        mbfl_no_encoding_8859_13,
        "ISO-8859-13",
        "ISO-8859-13",
-       (const char *(*)[])&mbfl_encoding_8859_13_aliases,
+       mbfl_encoding_8859_13_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_13_wchar,
index 06a2e4cd984c0dcb675faedf35770a1e4a68bb1e..ac5b9a40d91e4b21633b2d06aad6493133d562f7 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_14 = {
        mbfl_no_encoding_8859_14,
        "ISO-8859-14",
        "ISO-8859-14",
-       (const char *(*)[])&mbfl_encoding_8859_14_aliases,
+       mbfl_encoding_8859_14_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_14_wchar,
index 82b40796b8f7a87591e379e6b826a4f0ac062764..7d9e21e5c36687c80ac77d6001c46328b72bfecf 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_15 = {
        mbfl_no_encoding_8859_15,
        "ISO-8859-15",
        "ISO-8859-15",
-       (const char *(*)[])&mbfl_encoding_8859_15_aliases,
+       mbfl_encoding_8859_15_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_15_wchar,
index 80f1461364a3e49ed61f47570d907d97f1cbc30c..5c8ae964be85440aa42e636ce3b031a6c0795e61 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_16 = {
        mbfl_no_encoding_8859_16,
        "ISO-8859-16",
        "ISO-8859-16",
-       (const char *(*)[])&mbfl_encoding_8859_16_aliases,
+       mbfl_encoding_8859_16_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_16_wchar,
index 86044e15d3a02b9bc54c29daa97bdb3de766904a..deacf0c0f4dadd4e7c5e938abe68bc7492a4d186 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_2 = {
        mbfl_no_encoding_8859_2,
        "ISO-8859-2",
        "ISO-8859-2",
-       (const char *(*)[])&mbfl_encoding_8859_2_aliases,
+       mbfl_encoding_8859_2_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_2_wchar,
index 64eb9b5cf9283583eb556c4d1a92e87a723f1a3f..3b1c0847ea656c52da43c57a79fb16932fe9e46f 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_3 = {
        mbfl_no_encoding_8859_3,
        "ISO-8859-3",
        "ISO-8859-3",
-       (const char *(*)[])&mbfl_encoding_8859_3_aliases,
+       mbfl_encoding_8859_3_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_3_wchar,
index 12a9f7cb1063a7890396602e22b6167237f18bae..263036f27b4251b948a9dd47c29ca2f5a734502b 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_4 = {
        mbfl_no_encoding_8859_4,
        "ISO-8859-4",
        "ISO-8859-4",
-       (const char *(*)[])&mbfl_encoding_8859_4_aliases,
+       mbfl_encoding_8859_4_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_4_wchar,
index 70496d07e7a4dfa5aecf1550ffca1506d2640ea2..b9a6132029f774ca97dea8bfec25ae06bf3eb0b2 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_5 = {
        mbfl_no_encoding_8859_5,
        "ISO-8859-5",
        "ISO-8859-5",
-       (const char *(*)[])&mbfl_encoding_8859_5_aliases,
+       mbfl_encoding_8859_5_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_5_wchar,
index 59d981e9c2c79dfae8523c2eba34e878776f5405..c010908689ee4355b492c9e3c3a083eeac1d4da8 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_6 = {
        mbfl_no_encoding_8859_6,
        "ISO-8859-6",
        "ISO-8859-6",
-       (const char *(*)[])&mbfl_encoding_8859_6_aliases,
+       mbfl_encoding_8859_6_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_6_wchar,
index 73ead533ea7715060099e69b3bc303c405251a9e..64763dbcfed5159f0ce0aade625d619c754d35e8 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_7 = {
        mbfl_no_encoding_8859_7,
        "ISO-8859-7",
        "ISO-8859-7",
-       (const char *(*)[])&mbfl_encoding_8859_7_aliases,
+       mbfl_encoding_8859_7_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_7_wchar,
index 05ca13f330d5707a3bf67de88932cf9772bc39b2..6e4a7f322ba8e3a3f8cb8583b44e5de5d4dabb41 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_8 = {
        mbfl_no_encoding_8859_8,
        "ISO-8859-8",
        "ISO-8859-8",
-       (const char *(*)[])&mbfl_encoding_8859_8_aliases,
+       mbfl_encoding_8859_8_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_8_wchar,
index 074f90bef24047573f862458f6dd1901d25a4903..a2b87d1174b161f5be98eb81532b2df395467c3d 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_8859_9 = {
        mbfl_no_encoding_8859_9,
        "ISO-8859-9",
        "ISO-8859-9",
-       (const char *(*)[])&mbfl_encoding_8859_9_aliases,
+       mbfl_encoding_8859_9_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8859_9_wchar,
index 7790be65bb937e6b998ec7346515b39c20f1dd81..db00a73c4f604f6eac25bf8bdd80443073ca619f 100644 (file)
@@ -39,7 +39,7 @@ const mbfl_encoding mbfl_encoding_koi8r = {
        mbfl_no_encoding_koi8r,
        "KOI8-R",
        "KOI8-R",
-       (const char *(*)[])&mbfl_encoding_koi8r_aliases,
+       mbfl_encoding_koi8r_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_koi8r_wchar,
index a62a1c596b87f70b18abd28e91f0bbe8e99479d7..54c06d26636193341eb41c107a6096a738ede37d 100644 (file)
@@ -36,7 +36,7 @@ const mbfl_encoding mbfl_encoding_koi8u = {
        mbfl_no_encoding_koi8u,
        "KOI8-U",
        "KOI8-U",
-       (const char *(*)[])&mbfl_encoding_koi8u_aliases,
+       mbfl_encoding_koi8u_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_koi8u_wchar,
index 64097769b78fdcb9f553d172d88cb9940d741c47..8f806def2586e0fe46b064e8a97a57fea6dad7ac 100644 (file)
@@ -37,7 +37,7 @@ const mbfl_encoding mbfl_encoding_qprint = {
        mbfl_no_encoding_qprint,
        "Quoted-Printable",
        "Quoted-Printable",
-       (const char *(*)[])&mbfl_encoding_qprint_aliases,
+       mbfl_encoding_qprint_aliases,
        NULL,
        MBFL_ENCTYPE_GL_UNSAFE,
        NULL,
index dc5c2e4882739bcc03731591f330c969daaf998d..d993c89d7f06b7e1be100d448e9f0b7671e19261 100644 (file)
@@ -63,7 +63,7 @@ const mbfl_encoding mbfl_encoding_sjis = {
        mbfl_no_encoding_sjis,
        "SJIS",
        "Shift_JIS",
-       (const char *(*)[])&mbfl_encoding_sjis_aliases,
+       mbfl_encoding_sjis_aliases,
        mblen_table_sjis,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_sjis_wchar,
index 04e1d3af17af38b9149e1c999bdc7d1f12359aa7..e611f3f8468cbf5426278aae8de3fc5ee0dc006a 100644 (file)
@@ -45,7 +45,7 @@ const mbfl_encoding mbfl_encoding_sjis2004 = {
        mbfl_no_encoding_sjis2004,
        "SJIS-2004",
        "Shift_JIS",
-       (const char *(*)[])&mbfl_encoding_sjis2004_aliases,
+       mbfl_encoding_sjis2004_aliases,
        mblen_table_sjis,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_sjis2004_wchar,
index dc3d3692f4e672804c822431beed9bc2ead96dec..ff8d01937f5ce33295ec6ba57342365d0808a5eb 100644 (file)
@@ -46,7 +46,7 @@ const mbfl_encoding mbfl_encoding_sjis_mac = {
        mbfl_no_encoding_sjis_mac,
        "SJIS-mac",
        "Shift_JIS",
-       (const char *(*)[])&mbfl_encoding_sjis_mac_aliases,
+       mbfl_encoding_sjis_mac_aliases,
        mblen_table_sjis,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_sjis_mac_wchar,
index 68084a0e0a39c0d78e6448904ddbbb73188cbac8..d5015a92a8f52060ed94ec80eba926e8bc6c6469 100644 (file)
@@ -47,7 +47,7 @@ const mbfl_encoding mbfl_encoding_sjis_docomo = {
        mbfl_no_encoding_sjis_docomo,
        "SJIS-Mobile#DOCOMO",
        "Shift_JIS",
-       (const char *(*)[])&mbfl_encoding_sjis_docomo_aliases,
+       mbfl_encoding_sjis_docomo_aliases,
        mblen_table_sjis,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_sjis_docomo_wchar,
@@ -58,7 +58,7 @@ const mbfl_encoding mbfl_encoding_sjis_kddi = {
        mbfl_no_encoding_sjis_kddi,
        "SJIS-Mobile#KDDI",
        "Shift_JIS",
-       (const char *(*)[])&mbfl_encoding_sjis_kddi_aliases,
+       mbfl_encoding_sjis_kddi_aliases,
        mblen_table_sjis,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_sjis_kddi_wchar,
@@ -69,7 +69,7 @@ const mbfl_encoding mbfl_encoding_sjis_sb = {
        mbfl_no_encoding_sjis_sb,
        "SJIS-Mobile#SOFTBANK",
        "Shift_JIS",
-       (const char *(*)[])&mbfl_encoding_sjis_sb_aliases,
+       mbfl_encoding_sjis_sb_aliases,
        mblen_table_sjis,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_sjis_sb_wchar,
index 2535036e23a1a1da6e645fdb2fdd5a7c96b6fede..b3ec28740bbc035246370429f629369deced5dcf 100644 (file)
@@ -60,7 +60,7 @@ const mbfl_encoding mbfl_encoding_sjis_open = {
        mbfl_no_encoding_sjis_open,
        "SJIS-win",
        "Shift_JIS",
-       (const char *(*)[])&mbfl_encoding_sjis_open_aliases,
+       mbfl_encoding_sjis_open_aliases,
        mblen_table_sjis,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_sjis_open_wchar,
index 68172efbe610c7c794462a0e893b2dfb3974df57..9df11cb1d029b953c3a970e0c1514f5cc69c595a 100644 (file)
@@ -36,7 +36,7 @@ const mbfl_encoding mbfl_encoding_ucs2 = {
        mbfl_no_encoding_ucs2,
        "UCS-2",
        "UCS-2",
-       (const char *(*)[])&mbfl_encoding_ucs2_aliases,
+       mbfl_encoding_ucs2_aliases,
        NULL,
        MBFL_ENCTYPE_WCS2BE,
        &vtbl_ucs2_wchar,
index fcdd20d6158d6dea15b703db9ee462ad9c257c25..396bae91c538742585ad7c125c13271f29157a9a 100644 (file)
@@ -36,7 +36,7 @@ const mbfl_encoding mbfl_encoding_ucs4 = {
        mbfl_no_encoding_ucs4,
        "UCS-4",
        "UCS-4",
-       (const char *(*)[])&mbfl_encoding_ucs4_aliases,
+       mbfl_encoding_ucs4_aliases,
        NULL,
        MBFL_ENCTYPE_WCS4BE,
        &vtbl_ucs4_wchar,
index 5dc4aa81a98a225883d5547d923ab7065b7aa364..c86612bac2d51837d8777947ca891aafcf5a425f 100644 (file)
@@ -59,7 +59,7 @@ const mbfl_encoding mbfl_encoding_uhc = {
        mbfl_no_encoding_uhc,
        "UHC",
        "UHC",
-       (const char *(*)[])&mbfl_encoding_uhc_aliases,
+       mbfl_encoding_uhc_aliases,
        mblen_table_uhc,
        MBFL_ENCTYPE_MBCS,
        &vtbl_uhc_wchar,
index 7a9c70377e3ac067d97664eb90684330c4ff0b5d..54236769a23e8af69139e9f29f181867d0ac75ee 100644 (file)
@@ -36,7 +36,7 @@ const mbfl_encoding mbfl_encoding_utf16 = {
        mbfl_no_encoding_utf16,
        "UTF-16",
        "UTF-16",
-       (const char *(*)[])&mbfl_encoding_utf16_aliases,
+       mbfl_encoding_utf16_aliases,
        NULL,
        MBFL_ENCTYPE_MWC2BE,
        &vtbl_utf16_wchar,
index b936ab410241adcbb6cafb3da1061ee753dad15e..2566ff54764ba2ac72bbc1cb81d595609eee7138 100644 (file)
@@ -36,7 +36,7 @@ const mbfl_encoding mbfl_encoding_utf32 = {
        mbfl_no_encoding_utf32,
        "UTF-32",
        "UTF-32",
-       (const char *(*)[])&mbfl_encoding_utf32_aliases,
+       mbfl_encoding_utf32_aliases,
        NULL,
        MBFL_ENCTYPE_WCS4BE,
        &vtbl_utf32_wchar,
index b54bcf2b9ca1f706ec904ba61456dae74668d990..ed931a8b1f4f9589083835fdf682cc257d62664b 100644 (file)
@@ -51,7 +51,7 @@ const mbfl_encoding mbfl_encoding_utf7 = {
        mbfl_no_encoding_utf7,
        "UTF-7",
        "UTF-7",
-       (const char *(*)[])&mbfl_encoding_utf7_aliases,
+       mbfl_encoding_utf7_aliases,
        NULL,
        MBFL_ENCTYPE_MBCS | MBFL_ENCTYPE_GL_UNSAFE,
        &vtbl_utf7_wchar,
index 9e97d5b0699c8d75faeb762452ca7ff338a9d596..3b7a76de475e75bb65693a6fe759424ac99ab8ef 100644 (file)
@@ -57,7 +57,7 @@ const mbfl_encoding mbfl_encoding_utf8 = {
        mbfl_no_encoding_utf8,
        "UTF-8",
        "UTF-8",
-       (const char *(*)[])&mbfl_encoding_utf8_aliases,
+       mbfl_encoding_utf8_aliases,
        mblen_table_utf8,
        MBFL_ENCTYPE_MBCS,
        &vtbl_utf8_wchar,
index ef8d4cc0759a22fd98e2da16ad623f38ad4a6f39..8f50d227817b94765654e36a862940e65fab8dd2 100644 (file)
@@ -46,7 +46,7 @@ const mbfl_encoding mbfl_encoding_utf8_docomo = {
        mbfl_no_encoding_utf8_docomo,
        "UTF-8-Mobile#DOCOMO",
        "UTF-8",
-       (const char *(*)[])&mbfl_encoding_utf8_docomo_aliases,
+       mbfl_encoding_utf8_docomo_aliases,
        mblen_table_utf8,
        MBFL_ENCTYPE_MBCS,
        &vtbl_utf8_docomo_wchar,
@@ -57,7 +57,7 @@ const mbfl_encoding mbfl_encoding_utf8_kddi_a = {
        mbfl_no_encoding_utf8_kddi_a,
        "UTF-8-Mobile#KDDI-A",
        "UTF-8",
-       (const char *(*)[])&mbfl_encoding_utf8_kddi_a_aliases,
+       mbfl_encoding_utf8_kddi_a_aliases,
        mblen_table_utf8,
        MBFL_ENCTYPE_MBCS,
        &vtbl_utf8_kddi_a_wchar,
@@ -68,7 +68,7 @@ const mbfl_encoding mbfl_encoding_utf8_kddi_b = {
        mbfl_no_encoding_utf8_kddi_b,
        "UTF-8-Mobile#KDDI-B",
        "UTF-8",
-       (const char *(*)[])&mbfl_encoding_utf8_kddi_b_aliases,
+       mbfl_encoding_utf8_kddi_b_aliases,
        mblen_table_utf8,
        MBFL_ENCTYPE_MBCS,
        &vtbl_utf8_kddi_b_wchar,
@@ -79,7 +79,7 @@ const mbfl_encoding mbfl_encoding_utf8_sb = {
        mbfl_no_encoding_utf8_sb,
        "UTF-8-Mobile#SOFTBANK",
        "UTF-8",
-       (const char *(*)[])&mbfl_encoding_utf8_sb_aliases,
+       mbfl_encoding_utf8_sb_aliases,
        mblen_table_utf8,
        MBFL_ENCTYPE_MBCS,
        &vtbl_utf8_sb_wchar,
index 793dd8e0781940bdc664460a92920b1ea8d09391..4bcaa7069480175c17045435c18bf74f9d65d9c3 100644 (file)
@@ -486,7 +486,7 @@ mbfl_convert_encoding(
 const mbfl_encoding *
 mbfl_identify_encoding(mbfl_string *string, const mbfl_encoding **elist, int elistsz, int strict)
 {
-       int i, num, bad;
+       int i, bad;
        size_t n;
        unsigned char *p;
        mbfl_identify_filter *flist, *filter;
@@ -495,12 +495,9 @@ mbfl_identify_encoding(mbfl_string *string, const mbfl_encoding **elist, int eli
        /* flist is an array of mbfl_identify_filter instances */
        flist = ecalloc(elistsz, sizeof(mbfl_identify_filter));
 
-       num = 0;
        if (elist != NULL) {
                for (i = 0; i < elistsz; i++) {
-                       if (!mbfl_identify_filter_init2(&flist[num], elist[i])) {
-                               num++;
-                       }
+                       mbfl_identify_filter_init2(&flist[i], elist[i]);
                }
        }
 
@@ -511,7 +508,7 @@ mbfl_identify_encoding(mbfl_string *string, const mbfl_encoding **elist, int eli
        if (p != NULL) {
                bad = 0;
                while (n > 0) {
-                       for (i = 0; i < num; i++) {
+                       for (i = 0; i < elistsz; i++) {
                                filter = &flist[i];
                                if (!filter->flag) {
                                        (*filter->filter_function)(*p, filter);
@@ -520,7 +517,7 @@ mbfl_identify_encoding(mbfl_string *string, const mbfl_encoding **elist, int eli
                                        }
                                }
                        }
-                       if ((num - 1) <= bad && !strict) {
+                       if ((elistsz - 1) <= bad && !strict) {
                                break;
                        }
                        p++;
@@ -531,7 +528,7 @@ mbfl_identify_encoding(mbfl_string *string, const mbfl_encoding **elist, int eli
        /* judge */
        encoding = NULL;
 
-       for (i = 0; i < num; i++) {
+       for (i = 0; i < elistsz; i++) {
                filter = &flist[i];
                if (!filter->flag) {
                        if (strict && filter->status) {
@@ -544,7 +541,7 @@ mbfl_identify_encoding(mbfl_string *string, const mbfl_encoding **elist, int eli
 
        /* fall-back judge */
        if (!encoding) {
-               for (i = 0; i < num; i++) {
+               for (i = 0; i < elistsz; i++) {
                        filter = &flist[i];
                        if (!filter->flag && (!strict || !filter->status)) {
                                encoding = filter->encoding;
index f4c74946c11b8a36fd902341286e97fcd9084eca..4017829cf807b1031c26029fa86e11ea3358904e 100644 (file)
@@ -43,7 +43,7 @@ const mbfl_encoding mbfl_encoding_8bit = {
        mbfl_no_encoding_8bit,
        "8bit",
        "8bit",
-       (const char *(*)[])&mbfl_encoding_8bit_aliases,
+       mbfl_encoding_8bit_aliases,
        NULL,
        MBFL_ENCTYPE_SBCS,
        &vtbl_8bit_wchar,
index 3d7cffe9c14f79fa616f7558aa753d0f5ec5508a..e43f746ecca45007f6dc0aaede116d8f26abed13 100644 (file)
@@ -38,7 +38,7 @@ const mbfl_encoding mbfl_encoding_pass = {
        mbfl_no_encoding_pass,
        "pass",
        NULL,
-       (const char *(*)[])&mbfl_encoding_pass_aliases,
+       mbfl_encoding_pass_aliases,
        NULL,
        0,
        NULL,
index 3ecb06553d2b6de37d5252bff473d02ef61cfb3c..f740f7aec117da24d7fecca19f64aa4041735318 100644 (file)
@@ -199,44 +199,32 @@ static const mbfl_encoding *mbfl_encoding_ptr_list[] = {
        NULL
 };
 
-/* encoding resolver */
-const mbfl_encoding *
-mbfl_name2encoding(const char *name)
+const mbfl_encoding *mbfl_name2encoding(const char *name)
 {
-       const mbfl_encoding *encoding;
-       int i, j;
+       const mbfl_encoding **encoding;
 
-       if (name == NULL) {
-               return NULL;
-       }
-
-       i = 0;
-       while ((encoding = mbfl_encoding_ptr_list[i++]) != NULL){
-               if (strcasecmp(encoding->name, name) == 0) {
-                       return encoding;
+       for (encoding = mbfl_encoding_ptr_list; *encoding; encoding++) {
+               if (strcasecmp((*encoding)->name, name) == 0) {
+                       return *encoding;
                }
        }
 
-       /* serch MIME charset name */
-       i = 0;
-       while ((encoding = mbfl_encoding_ptr_list[i++]) != NULL) {
-               if (encoding->mime_name != NULL) {
-                       if (strcasecmp(encoding->mime_name, name) == 0) {
-                               return encoding;
+       /* search MIME charset name */
+       for (encoding = mbfl_encoding_ptr_list; *encoding; encoding++) {
+               if ((*encoding)->mime_name) {
+                       if (strcasecmp((*encoding)->mime_name, name) == 0) {
+                               return *encoding;
                        }
                }
        }
 
-       /* serch aliases */
-       i = 0;
-       while ((encoding = mbfl_encoding_ptr_list[i++]) != NULL) {
-               if (encoding->aliases != NULL) {
-                       j = 0;
-                       while ((*encoding->aliases)[j] != NULL) {
-                               if (strcasecmp((*encoding->aliases)[j], name) == 0) {
-                                       return encoding;
+       /* search aliases */
+       for (encoding = mbfl_encoding_ptr_list; *encoding; encoding++) {
+               if ((*encoding)->aliases) {
+                       for (const char **alias = (*encoding)->aliases; *alias; alias++) {
+                               if (strcasecmp(*alias, name) == 0) {
+                                       return *encoding;
                                }
-                               j++;
                        }
                }
        }
@@ -244,63 +232,45 @@ mbfl_name2encoding(const char *name)
        return NULL;
 }
 
-const mbfl_encoding *
-mbfl_no2encoding(enum mbfl_no_encoding no_encoding)
+const mbfl_encoding *mbfl_no2encoding(enum mbfl_no_encoding no_encoding)
 {
-       const mbfl_encoding *encoding;
-       int i;
+       const mbfl_encoding **encoding;
 
-       i = 0;
-       while ((encoding = mbfl_encoding_ptr_list[i++]) != NULL){
-               if (encoding->no_encoding == no_encoding) {
-                       return encoding;
+       for (encoding = mbfl_encoding_ptr_list; *encoding; encoding++) {
+               if ((*encoding)->no_encoding == no_encoding) {
+                       return *encoding;
                }
        }
 
        return NULL;
 }
 
-enum mbfl_no_encoding
-mbfl_name2no_encoding(const char *name)
+enum mbfl_no_encoding mbfl_name2no_encoding(const char *name)
 {
-       const mbfl_encoding *encoding;
-
-       encoding = mbfl_name2encoding(name);
-       if (encoding == NULL) {
-               return mbfl_no_encoding_invalid;
-       } else {
-               return encoding->no_encoding;
-       }
+       const mbfl_encoding *encoding = mbfl_name2encoding(name);
+       return encoding ? encoding->no_encoding : mbfl_no_encoding_invalid;
 }
 
-const char *
-mbfl_no_encoding2name(enum mbfl_no_encoding no_encoding)
+const char *mbfl_no_encoding2name(enum mbfl_no_encoding no_encoding)
 {
-       const mbfl_encoding *encoding;
-
-       encoding = mbfl_no2encoding(no_encoding);
-       if (encoding == NULL) {
-               return "";
-       } else {
-               return encoding->name;
-       }
+       const mbfl_encoding *encoding = mbfl_no2encoding(no_encoding);
+       return encoding ? encoding->name : "";
 }
 
-const mbfl_encoding **
-mbfl_get_supported_encodings(void)
+const mbfl_encoding **mbfl_get_supported_encodings(void)
 {
        return mbfl_encoding_ptr_list;
 }
 
-const char *
-mbfl_no2preferred_mime_name(enum mbfl_no_encoding no_encoding)
+const char *mbfl_no2preferred_mime_name(enum mbfl_no_encoding no_encoding)
 {
-       const mbfl_encoding *encoding;
+       return mbfl_encoding_preferred_mime_name(mbfl_no2encoding(no_encoding));
+}
 
-       encoding = mbfl_no2encoding(no_encoding);
-       if (encoding != NULL && encoding->mime_name != NULL && encoding->mime_name[0] != '\0') {
+const char *mbfl_encoding_preferred_mime_name(const mbfl_encoding *encoding)
+{
+       if (encoding->mime_name && encoding->mime_name[0] != '\0') {
                return encoding->mime_name;
-       } else {
-               return NULL;
        }
+       return NULL;
 }
index 0b39153c9d6454a73d9eeaf94d311c50181949ff..f945b5dd03180d1aa5d6b42a760bab84c97351c8 100644 (file)
@@ -145,19 +145,19 @@ typedef struct _mbfl_encoding {
        enum mbfl_no_encoding no_encoding;
        const char *name;
        const char *mime_name;
-       const char *(*aliases)[];
+       const char **aliases;
        const unsigned char *mblen_table;
        unsigned int flag;
        const struct mbfl_convert_vtbl *input_filter;
        const struct mbfl_convert_vtbl *output_filter;
 } mbfl_encoding;
 
-MBFLAPI extern const mbfl_encoding * mbfl_name2encoding(const char *name);
-MBFLAPI extern const mbfl_encoding * mbfl_no2encoding(enum mbfl_no_encoding no_encoding);
+MBFLAPI extern const mbfl_encoding *mbfl_name2encoding(const char *name);
+MBFLAPI extern const mbfl_encoding *mbfl_no2encoding(enum mbfl_no_encoding no_encoding);
 MBFLAPI extern enum mbfl_no_encoding mbfl_name2no_encoding(const char *name);
-MBFLAPI extern const mbfl_encoding ** mbfl_get_supported_encodings();
-MBFLAPI extern const char * mbfl_no_encoding2name(enum mbfl_no_encoding no_encoding);
-MBFLAPI extern const char * mbfl_no2preferred_mime_name(enum mbfl_no_encoding no_encoding);
-
+MBFLAPI extern const mbfl_encoding **mbfl_get_supported_encodings();
+MBFLAPI extern const char *mbfl_no_encoding2name(enum mbfl_no_encoding no_encoding);
+MBFLAPI extern const char *mbfl_no2preferred_mime_name(enum mbfl_no_encoding no_encoding);
+MBFLAPI extern const char *mbfl_encoding_preferred_mime_name(const mbfl_encoding *encoding);
 
 #endif /* MBFL_ENCODING_H */
index 18144eb030d83bf3f5f8ea56435045a0a2db1531..8e79bde65b9ba67e1d1bc0abff134acb4fe60560 100644 (file)
@@ -163,93 +163,67 @@ static const struct mbfl_identify_vtbl *mbfl_identify_filter_list[] = {
        NULL
 };
 
-/*
- * identify filter
- */
-const struct mbfl_identify_vtbl * mbfl_identify_filter_get_vtbl(enum mbfl_no_encoding encoding)
+const struct mbfl_identify_vtbl* mbfl_identify_filter_get_vtbl(enum mbfl_no_encoding encoding)
 {
-       const struct mbfl_identify_vtbl * vtbl;
-       int i;
+       const struct mbfl_identify_vtbl** vtbl;
 
-       i = 0;
-       while ((vtbl = mbfl_identify_filter_list[i++]) != NULL) {
-               if (vtbl->encoding == encoding) {
-                       break;
+       for (vtbl = mbfl_identify_filter_list; *vtbl; vtbl++) {
+               if ((*vtbl)->encoding == encoding) {
+                       return *vtbl;
                }
        }
 
-       return vtbl;
+       return NULL;
 }
 
 mbfl_identify_filter *mbfl_identify_filter_new(enum mbfl_no_encoding encoding)
 {
        mbfl_identify_filter *filter = emalloc(sizeof(mbfl_identify_filter));
-       if (mbfl_identify_filter_init(filter, encoding)) {
-               efree(filter);
-               return NULL;
-       }
-
+       mbfl_identify_filter_init(filter, encoding);
        return filter;
 }
 
 mbfl_identify_filter *mbfl_identify_filter_new2(const mbfl_encoding *encoding)
 {
        mbfl_identify_filter *filter = emalloc(sizeof(mbfl_identify_filter));
-       if (mbfl_identify_filter_init2(filter, encoding)) {
-               efree(filter);
-               return NULL;
-       }
-
+       mbfl_identify_filter_init2(filter, encoding);
        return filter;
 }
 
-
-int mbfl_identify_filter_init(mbfl_identify_filter *filter, enum mbfl_no_encoding encoding)
+void mbfl_identify_filter_init(mbfl_identify_filter *filter, enum mbfl_no_encoding encoding)
 {
        const mbfl_encoding *enc = mbfl_no2encoding(encoding);
-       return mbfl_identify_filter_init2(filter, enc ? enc: &mbfl_encoding_pass);
+       mbfl_identify_filter_init2(filter, enc ? enc : &mbfl_encoding_pass);
 }
 
-int mbfl_identify_filter_init2(mbfl_identify_filter *filter, const mbfl_encoding *encoding)
+void mbfl_identify_filter_init2(mbfl_identify_filter *filter, const mbfl_encoding *encoding)
 {
-       const struct mbfl_identify_vtbl *vtbl;
-
-       /* encoding structure */
        filter->encoding = encoding;
-
-       filter->status = 0;
-       filter->flag = 0;
-       filter->score = 0;
+       filter->status = filter->flag = filter->score = 0;
 
        /* setup the function table */
-       vtbl = mbfl_identify_filter_get_vtbl(filter->encoding->no_encoding);
+       const struct mbfl_identify_vtbl *vtbl = mbfl_identify_filter_get_vtbl(filter->encoding->no_encoding);
        if (vtbl == NULL) {
                vtbl = &vtbl_identify_false;
        }
        filter->filter_ctor = vtbl->filter_ctor;
        filter->filter_function = vtbl->filter_function;
 
-       /* constructor */
        (*filter->filter_ctor)(filter);
-
-       return 0;
 }
 
 void mbfl_identify_filter_delete(mbfl_identify_filter *filter)
 {
-       if (filter == NULL) {
-               return;
-       }
-
-       efree((void*)filter);
+       efree(filter);
 }
 
 void mbfl_filt_ident_common_ctor(mbfl_identify_filter *filter)
 {
-       filter->status = 0;
-       filter->flag = 0;
+       filter->status = filter->flag = 0;
 }
 
+/* A (useless) filter which says that _every_ string is invalid in a certain encoding.
+ * Obviously, that cannot be true. Remove after all encodings have proper identify filters */
 int mbfl_filt_ident_false(int c, mbfl_identify_filter *filter)
 {
        filter->flag = 1;       /* bad */
@@ -262,6 +236,7 @@ void mbfl_filt_ident_false_ctor(mbfl_identify_filter *filter)
        filter->flag = 1;
 }
 
+/* For encodings in which _every_ possible input string is valid */
 int mbfl_filt_ident_true(int c, mbfl_identify_filter *filter)
 {
        return c;
index c9afd03fb4d980fdd80f1273f74371494933b5bc..39be183ef3f4db61cc2a0af765066f3642f56b35 100644 (file)
@@ -58,8 +58,8 @@ MBFLAPI extern const struct mbfl_identify_vtbl * mbfl_identify_filter_get_vtbl(e
 MBFLAPI extern mbfl_identify_filter * mbfl_identify_filter_new(enum mbfl_no_encoding encoding);
 MBFLAPI extern mbfl_identify_filter * mbfl_identify_filter_new2(const mbfl_encoding *encoding);
 MBFLAPI extern void mbfl_identify_filter_delete(mbfl_identify_filter *filter);
-MBFLAPI extern int mbfl_identify_filter_init(mbfl_identify_filter *filter, enum mbfl_no_encoding encoding);
-MBFLAPI extern int mbfl_identify_filter_init2(mbfl_identify_filter *filter, const mbfl_encoding *encoding);
+MBFLAPI extern void mbfl_identify_filter_init(mbfl_identify_filter *filter, enum mbfl_no_encoding encoding);
+MBFLAPI extern void mbfl_identify_filter_init2(mbfl_identify_filter *filter, const mbfl_encoding *encoding);
 
 MBFLAPI extern void mbfl_filt_ident_common_ctor(mbfl_identify_filter *filter);
 MBFLAPI extern void mbfl_filt_ident_false_ctor(mbfl_identify_filter *filter);
index 09746efcd071ebe5f4b287ff58e18fca2c329e09..cd064e5ee8faa41b1ba7d7034c34bd567c20cf28 100644 (file)
 /*
  * memory device output functions
  */
-void
-mbfl_memory_device_init(mbfl_memory_device *device, size_t initsz, size_t allocsz)
+void mbfl_memory_device_init(mbfl_memory_device *device, size_t initsz, size_t allocsz)
 {
-       if (device) {
-               device->length = 0;
-               device->buffer = NULL;
-               if (initsz > 0) {
-                       device->buffer = emalloc(initsz);
-                       device->length = initsz;
-               }
-               device->pos = 0;
-               if (allocsz > MBFL_MEMORY_DEVICE_ALLOC_SIZE) {
-                       device->allocsz = allocsz;
-               } else {
-                       device->allocsz = MBFL_MEMORY_DEVICE_ALLOC_SIZE;
-               }
-       }
+       device->buffer = (initsz > 0) ? emalloc(initsz) : NULL;
+       device->length = initsz;
+       device->pos = 0;
+       device->allocsz = MAX(allocsz, MBFL_MEMORY_DEVICE_ALLOC_SIZE);
 }
 
-void
-mbfl_memory_device_realloc(mbfl_memory_device *device, size_t initsz, size_t allocsz)
+void mbfl_memory_device_realloc(mbfl_memory_device *device, size_t initsz, size_t allocsz)
 {
-       if (device) {
-               if (initsz > device->length) {
-                       device->buffer = erealloc(device->buffer, initsz);
-                       device->length = initsz;
-               }
-               if (allocsz > MBFL_MEMORY_DEVICE_ALLOC_SIZE) {
-                       device->allocsz = allocsz;
-               } else {
-                       device->allocsz = MBFL_MEMORY_DEVICE_ALLOC_SIZE;
-               }
+       if (initsz > device->length) {
+               device->buffer = erealloc(device->buffer, initsz);
+               device->length = initsz;
        }
+       device->allocsz = MAX(allocsz, MBFL_MEMORY_DEVICE_ALLOC_SIZE);
 }
 
-void
-mbfl_memory_device_clear(mbfl_memory_device *device)
+void mbfl_memory_device_clear(mbfl_memory_device *device)
 {
-       if (device) {
-               if (device->buffer) {
-                       efree(device->buffer);
-               }
-               device->buffer = NULL;
-               device->length = 0;
-               device->pos = 0;
+       if (device->buffer) {
+               efree(device->buffer);
        }
+       device->buffer = NULL;
+       device->length = device->pos = 0;
 }
 
-void
-mbfl_memory_device_reset(mbfl_memory_device *device)
+void mbfl_memory_device_reset(mbfl_memory_device *device)
 {
-       if (device) {
-               device->pos = 0;
-       }
+       device->pos = 0;
 }
 
-void
-mbfl_memory_device_unput(mbfl_memory_device *device)
+void mbfl_memory_device_unput(mbfl_memory_device *device)
 {
        if (device->pos > 0) {
                device->pos--;
        }
 }
 
-mbfl_string *
-mbfl_memory_device_result(mbfl_memory_device *device, mbfl_string *result)
+mbfl_string* mbfl_memory_device_result(mbfl_memory_device *device, mbfl_string *result)
 {
-       if (device && result) {
-               result->len = device->pos;
-               mbfl_memory_device_output('\0', device);
-               result->val = device->buffer;
-               device->buffer = NULL;
-               device->length = 0;
-               device->pos= 0;
-               if (result->val == NULL) {
-                       result->len = 0;
-                       result = NULL;
-               }
-       } else {
-               result = NULL;
-       }
-
+       result->len = device->pos;
+       mbfl_memory_device_output('\0', device);
+       result->val = device->buffer;
+       device->buffer = NULL;
+       device->length = device->pos = 0;
        return result;
 }
 
-int
-mbfl_memory_device_output(int c, void *data)
+int mbfl_memory_device_output(int c, void *data)
 {
        mbfl_memory_device *device = (mbfl_memory_device *)data;
 
        if (device->pos >= device->length) {
                /* reallocate buffer */
-               size_t newlen;
 
                if (device->length > SIZE_MAX - device->allocsz) {
                        /* overflow */
                        return -1;
                }
 
-               newlen = device->length + device->allocsz;
+               size_t newlen = device->length + device->allocsz;
                device->buffer = erealloc(device->buffer, newlen);
                device->length = newlen;
        }
@@ -145,20 +106,15 @@ mbfl_memory_device_output(int c, void *data)
        return c;
 }
 
-int
-mbfl_memory_device_strcat(mbfl_memory_device *device, const char *psrc)
+int mbfl_memory_device_strcat(mbfl_memory_device *device, const char *psrc)
 {
        return mbfl_memory_device_strncat(device, psrc, strlen(psrc));
 }
 
-int
-mbfl_memory_device_strncat(mbfl_memory_device *device, const char *psrc, size_t len)
+int mbfl_memory_device_strncat(mbfl_memory_device *device, const char *psrc, size_t len)
 {
-       unsigned char *w;
-
        if (len > device->length - device->pos) {
                /* reallocate buffer */
-               size_t newlen;
 
                if (len > SIZE_MAX - MBFL_MEMORY_DEVICE_ALLOC_SIZE
                                || device->length > SIZE_MAX - (len + MBFL_MEMORY_DEVICE_ALLOC_SIZE)) {
@@ -166,50 +122,41 @@ mbfl_memory_device_strncat(mbfl_memory_device *device, const char *psrc, size_t
                        return -1;
                }
 
-               newlen = device->length + len + MBFL_MEMORY_DEVICE_ALLOC_SIZE;
+               size_t newlen = device->length + len + MBFL_MEMORY_DEVICE_ALLOC_SIZE;
                device->buffer = erealloc(device->buffer, newlen);
                device->length = newlen;
        }
 
-       w = &device->buffer[device->pos];
+       unsigned char *w = &device->buffer[device->pos];
        memcpy(w, psrc, len);
        device->pos += len;
 
        return 0;
 }
 
-int
-mbfl_memory_device_devcat(mbfl_memory_device *dest, mbfl_memory_device *src)
+int mbfl_memory_device_devcat(mbfl_memory_device *dest, mbfl_memory_device *src)
 {
-       return mbfl_memory_device_strncat(dest, (const char *) src->buffer, src->pos);
+       return mbfl_memory_device_strncat(dest, (const char*)src->buffer, src->pos);
 }
 
-void
-mbfl_wchar_device_init(mbfl_wchar_device *device)
+void mbfl_wchar_device_init(mbfl_wchar_device *device)
 {
-       if (device) {
-               device->buffer = NULL;
-               device->length = 0;
-               device->pos= 0;
-               device->allocsz = MBFL_MEMORY_DEVICE_ALLOC_SIZE;
-       }
+       device->buffer = NULL;
+       device->length = 0;
+       device->pos = 0;
+       device->allocsz = MBFL_MEMORY_DEVICE_ALLOC_SIZE;
 }
 
-void
-mbfl_wchar_device_clear(mbfl_wchar_device *device)
+void mbfl_wchar_device_clear(mbfl_wchar_device *device)
 {
-       if (device) {
-               if (device->buffer) {
-                       efree(device->buffer);
-               }
-               device->buffer = NULL;
-               device->length = 0;
-               device->pos = 0;
+       if (device->buffer) {
+               efree(device->buffer);
        }
+       device->buffer = NULL;
+       device->length = device->pos = 0;
 }
 
-int
-mbfl_wchar_device_output(int c, void *data)
+int mbfl_wchar_device_output(int c, void *data)
 {
        mbfl_wchar_device *device = (mbfl_wchar_device *)data;
 
@@ -228,11 +175,10 @@ mbfl_wchar_device_output(int c, void *data)
                        return -1;
                }
 
-               device->buffer = erealloc(device->buffer, newlen*sizeof(int));
+               device->buffer = erealloc(device->buffer, newlen * sizeof(int));
                device->length = newlen;
        }
 
        device->buffer[device->pos++] = c;
-
        return c;
 }
index 7e86db3e066225e089af0c9b9696244809ad20c1..b8a188ec84e69d5a2c047f43776bd5d52e58d3b5 100644 (file)
@@ -69,6 +69,4 @@ MBFLAPI extern void mbfl_wchar_device_init(mbfl_wchar_device *device);
 MBFLAPI extern int mbfl_wchar_device_output(int c, void *data);
 MBFLAPI extern void mbfl_wchar_device_clear(mbfl_wchar_device *device);
 
-
-
 #endif /* MBFL_MEMORY_DEVICE_H */
index a036356dd2ce16963b9ffc5b7734e6c5c47f1f6b..760634e65d06d4db5adba296aee5cec7633a7da7 100644 (file)
 #include "mbfl_string.h"
 #include "mbfilter_pass.h"
 
-/*
- * string object
- */
-void
-mbfl_string_init(mbfl_string *string)
+void mbfl_string_init_set(mbfl_string *string, const mbfl_encoding *encoding)
 {
-       string->encoding = &mbfl_encoding_pass;
-       string->val = (unsigned char*)NULL;
+       string->encoding = encoding;
+       string->val = NULL;
        string->len = 0;
 }
 
-void
-mbfl_string_init_set(mbfl_string *string, const mbfl_encoding *encoding)
+void mbfl_string_init(mbfl_string *string)
 {
-       string->encoding = encoding;
-       string->val = (unsigned char*)NULL;
-       string->len = 0;
+       mbfl_string_init_set(string, &mbfl_encoding_pass);
 }
 
-void
-mbfl_string_clear(mbfl_string *string)
+void mbfl_string_clear(mbfl_string *string)
 {
-       if (string->val != (unsigned char*)NULL) {
+       if (string->val) {
                efree(string->val);
        }
-       string->val = (unsigned char*)NULL;
-       string->len = 0;
+       mbfl_string_init_set(string, NULL); /* Poison it so any attempt to reuse will fail hard */
 }
index ba992af930be68374d8797bba9981045c938bfa9..066a168fd1c2a5b4ea4f1d8209928bcc84d56fc4 100644 (file)
@@ -2764,8 +2764,7 @@ PHP_FUNCTION(mb_encoding_aliases)
 
        array_init(return_value);
        if (encoding->aliases != NULL) {
-               const char **alias;
-               for (alias = *encoding->aliases; *alias; ++alias) {
+               for (const char **alias = encoding->aliases; *alias; ++alias) {
                        add_next_index_string(return_value, (char *)*alias);
                }
        }
@@ -3649,7 +3648,7 @@ PHP_FUNCTION(mb_send_mail)
        if (!suppressed_hdrs.cnt_type) {
                mbfl_memory_device_strncat(&device, PHP_MBSTR_MAIL_MIME_HEADER2, sizeof(PHP_MBSTR_MAIL_MIME_HEADER2) - 1);
 
-               p = (char *)mbfl_no2preferred_mime_name(tran_cs->no_encoding);
+               p = (char *)mbfl_encoding_preferred_mime_name(tran_cs);
                if (p != NULL) {
                        mbfl_memory_device_strncat(&device, PHP_MBSTR_MAIL_MIME_HEADER3, sizeof(PHP_MBSTR_MAIL_MIME_HEADER3) - 1);
                        mbfl_memory_device_strcat(&device, p);
@@ -3658,7 +3657,7 @@ PHP_FUNCTION(mb_send_mail)
        }
        if (!suppressed_hdrs.cnt_trans_enc) {
                mbfl_memory_device_strncat(&device, PHP_MBSTR_MAIL_MIME_HEADER4, sizeof(PHP_MBSTR_MAIL_MIME_HEADER4) - 1);
-               p = (char *)mbfl_no2preferred_mime_name(body_enc->no_encoding);
+               p = (char *)mbfl_encoding_preferred_mime_name(body_enc);
                if (p == NULL) {
                        p = "7bit";
                }