1 /*
2  * This file is part of the TINICONV Library.
3  *
4  * The TINICONV Library is free software; you can redistribute it
5  * and/or modify it under the terms of the GNU Library General Public
6  * License version 2 as published by the Free Software Foundation.
7  */
8 // ----------------------------------------------------------------------------
9 // Copyright (C) 2014
10 //              David Freese, W1HKJ
11 //
12 // This file is part of fldigi
13 //
14 // fldigi is distributed in the hope that it will be useful,
15 // but WITHOUT ANY WARRANTY; without even the implied warranty of
16 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 // GNU General Public License for more details.
18 //
19 // You should have received a copy of the GNU General Public License
20 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
21 // ----------------------------------------------------------------------------
22 
23 #include "tiniconv_int.h"
24 
25 #include <assert.h>
26 
27 #define abort() assert(0)
28 #define NULL 0
29 
30 #include "encdec/ascii.h"
31 
32 #include "encdec/cp1250.h"
33 #include "encdec/cp1251.h"
34 #include "encdec/cp1252.h"
35 #include "encdec/cp1253.h"
36 #include "encdec/cp1254.h"
37 #include "encdec/cp1255.h"
38 #include "encdec/cp1256.h"
39 #include "encdec/cp1257.h"
40 #include "encdec/cp1258.h"
41 
42 #include "encdec/iso8859_1.h"
43 #include "encdec/iso8859_2.h"
44 #include "encdec/iso8859_3.h"
45 #include "encdec/iso8859_4.h"
46 #include "encdec/iso8859_5.h"
47 #include "encdec/iso8859_6.h"
48 #include "encdec/iso8859_7.h"
49 #include "encdec/iso8859_8.h"
50 #include "encdec/iso8859_9.h"
51 #include "encdec/iso8859_10.h"
52 #include "encdec/iso8859_11.h"
53 #include "encdec/iso8859_13.h"
54 #include "encdec/iso8859_14.h"
55 #include "encdec/iso8859_15.h"
56 #include "encdec/iso8859_16.h"
57 
58 #include "encdec/cp866.h"
59 #include "encdec/koi8_r.h"
60 #include "encdec/koi8_ru.h"
61 #include "encdec/koi8_u.h"
62 #include "encdec/mac_cyrillic.h"
63 
64 #include "encdec/ucs2.h"
65 #include "encdec/utf7.h"
66 #include "encdec/utf8.h"
67 
68 #include "encdec/gb2312.h" /* is needed for euc_cn.h */
69 #include "encdec/euc_cn.h"
70 #include "encdec/gbk.h"
71 #include "encdec/ces_gbk.h"
72 #include "encdec/big5.h" /* is needed for ces_big5.h */
73 #include "encdec/ces_big5.h"
74 #include "encdec/jisx0208.h"
75 #include "encdec/jisx0201.h"
76 
77 #include "encdec/cp936.h"
78 #include "encdec/iso2022_jp.h"
79 
80 const struct tiniconv_charset_map_entry_s tiniconv_charset_map[] =
81 {
82   {ascii_mbtowc,        NULL,           ascii_wctomb,        NULL            }, /* 0 */
83   {cp1250_mbtowc,       NULL,           cp1250_wctomb,       NULL            }, /* 1 */
84   {cp1251_mbtowc,       NULL,           cp1251_wctomb,       NULL            }, /* 2 */
85   {cp1252_mbtowc,       NULL,           cp1252_wctomb,       NULL            }, /* 3 */
86   {cp1253_mbtowc,       NULL,           cp1253_wctomb,       NULL            }, /* 4 */
87   {cp1254_mbtowc,       NULL,           cp1254_wctomb,       NULL            }, /* 5 */
88   {cp1255_mbtowc,       cp1255_flushwc, cp1255_wctomb,       NULL            }, /* 6 */
89   {cp1256_mbtowc,       NULL,           cp1256_wctomb,       NULL            }, /* 7 */
90   {cp1257_mbtowc,       NULL,           cp1257_wctomb,       NULL            }, /* 8 */
91   {cp1258_mbtowc,       cp1258_flushwc, cp1258_wctomb,       NULL            }, /* 9 */
92   {cp936_mbtowc,        NULL,           cp936_wctomb,        NULL            }, /* 10 */
93   {euc_cn_mbtowc,       NULL,           euc_cn_wctomb,       NULL            }, /* 11 */
94   {gbk_mbtowc,          NULL,           gbk_wctomb,          NULL            }, /* 12 */
95   {iso2022_jp_mbtowc,   NULL,           iso2022_jp_wctomb,   iso2022_jp_reset}, /* 13 */
96   {iso8859_1_mbtowc,    NULL,           iso8859_1_wctomb,    NULL            }, /* 14 */
97   {iso8859_2_mbtowc,    NULL,           iso8859_2_wctomb,    NULL            }, /* 15 */
98   {iso8859_3_mbtowc,    NULL,           iso8859_3_wctomb,    NULL            }, /* 16 */
99   {iso8859_4_mbtowc,    NULL,           iso8859_4_wctomb,    NULL            }, /* 17 */
100   {iso8859_5_mbtowc,    NULL,           iso8859_5_wctomb,    NULL            }, /* 18 */
101   {iso8859_6_mbtowc,    NULL,           iso8859_6_wctomb,    NULL            }, /* 19 */
102   {iso8859_7_mbtowc,    NULL,           iso8859_7_wctomb,    NULL            }, /* 20 */
103   {iso8859_8_mbtowc,    NULL,           iso8859_8_wctomb,    NULL            }, /* 21 */
104   {iso8859_9_mbtowc,    NULL,           iso8859_9_wctomb,    NULL            }, /* 22 */
105   {iso8859_10_mbtowc,   NULL,           iso8859_10_wctomb,   NULL            }, /* 23 */
106   {iso8859_11_mbtowc,   NULL,           iso8859_11_wctomb,   NULL            }, /* 24 */
107   {iso8859_13_mbtowc,   NULL,           iso8859_13_wctomb,   NULL            }, /* 25 */
108   {iso8859_14_mbtowc,   NULL,           iso8859_14_wctomb,   NULL            }, /* 26 */
109   {iso8859_15_mbtowc,   NULL,           iso8859_15_wctomb,   NULL            }, /* 27 */
110   {iso8859_16_mbtowc,   NULL,           iso8859_16_wctomb,   NULL            }, /* 28 */
111   {cp866_mbtowc,        NULL,           cp866_wctomb,        NULL            }, /* 29 */
112   {koi8_r_mbtowc,       NULL,           koi8_r_wctomb,       NULL            }, /* 30 */
113   {koi8_ru_mbtowc,      NULL,           koi8_ru_wctomb,      NULL            }, /* 31 */
114   {koi8_u_mbtowc,       NULL,           koi8_u_wctomb,       NULL            }, /* 32 */
115   {mac_cyrillic_mbtowc, NULL,           mac_cyrillic_wctomb, NULL            }, /* 33 */
116   {ucs2_mbtowc,         NULL,           ucs2_wctomb,         NULL            }, /* 34 */
117   {utf7_mbtowc,         NULL,           utf7_wctomb,         utf7_reset      }, /* 35 */
118   {utf8_mbtowc,         NULL,           utf8_wctomb,         NULL            }, /* 36 */
119   {gb2312_mbtowc,       NULL,           gb2312_wctomb,       NULL            }, /* 37, CHINESE */
120   {ces_big5_mbtowc,     NULL,           ces_big5_wctomb,     NULL            }, /* 38 */
121   {NULL,                NULL,           NULL,                NULL            }
122 };
123