11/*
22 * conversion functions between pg_wchar and multibyte streams.
33 * Tatsuo Ishii
4- * $PostgreSQL: pgsql/src/backend/utils/mb/wchar.c,v 1.64 2007/09/18 17:41:17 adunstan Exp $
4+ * $PostgreSQL: pgsql/src/backend/utils/mb/wchar.c,v 1.65 2007/10/15 22:46:27 tgl Exp $
55 *
66 */
77/* can be used in either frontend or backend */
3838 * SQL/ASCII
3939 */
4040static int
41- pg_ascii2wchar_with_len
42- (const unsignedchar * from ,pg_wchar * to ,int len )
41+ pg_ascii2wchar_with_len (const unsignedchar * from ,pg_wchar * to ,int len )
4342{
4443int cnt = 0 ;
4544
@@ -73,8 +72,8 @@ pg_ascii_dsplen(const unsigned char *s)
7372/*
7473 * EUC
7574 */
76- static int pg_euc2wchar_with_len
77- (const unsignedchar * from ,pg_wchar * to ,int len )
75+ static int
76+ pg_euc2wchar_with_len (const unsignedchar * from ,pg_wchar * to ,int len )
7877{
7978int cnt = 0 ;
8079
@@ -148,8 +147,8 @@ pg_euc_dsplen(const unsigned char *s)
148147/*
149148 * EUC_JP
150149 */
151- static int pg_eucjp2wchar_with_len
152- (const unsignedchar * from ,pg_wchar * to ,int len )
150+ static int
151+ pg_eucjp2wchar_with_len (const unsignedchar * from ,pg_wchar * to ,int len )
153152{
154153return pg_euc2wchar_with_len (from ,to ,len );
155154}
@@ -179,8 +178,8 @@ pg_eucjp_dsplen(const unsigned char *s)
179178/*
180179 * EUC_KR
181180 */
182- static int pg_euckr2wchar_with_len
183- (const unsignedchar * from ,pg_wchar * to ,int len )
181+ static int
182+ pg_euckr2wchar_with_len (const unsignedchar * from ,pg_wchar * to ,int len )
184183{
185184return pg_euc2wchar_with_len (from ,to ,len );
186185}
@@ -201,8 +200,8 @@ pg_euckr_dsplen(const unsigned char *s)
201200 * EUC_CN
202201 *
203202 */
204- static int pg_euccn2wchar_with_len
205- (const unsignedchar * from ,pg_wchar * to ,int len )
203+ static int
204+ pg_euccn2wchar_with_len (const unsignedchar * from ,pg_wchar * to ,int len )
206205{
207206int cnt = 0 ;
208207
@@ -268,8 +267,8 @@ pg_euccn_dsplen(const unsigned char *s)
268267 * EUC_TW
269268 *
270269 */
271- static int pg_euctw2wchar_with_len
272- (const unsignedchar * from ,pg_wchar * to ,int len )
270+ static int
271+ pg_euctw2wchar_with_len (const unsignedchar * from ,pg_wchar * to ,int len )
273272{
274273int cnt = 0 ;
275274
@@ -343,12 +342,6 @@ pg_euctw_dsplen(const unsigned char *s)
343342/*
344343 * JOHAB
345344 */
346- static int
347- pg_johab2wchar_with_len (const unsignedchar * from ,pg_wchar * to ,int len )
348- {
349- return pg_euc2wchar_with_len (from ,to ,len );
350- }
351-
352345static int
353346pg_johab_mblen (const unsignedchar * s )
354347{
@@ -1307,6 +1300,7 @@ pg_utf8_islegal(const unsigned char *source, int length)
13071300/*
13081301 *-------------------------------------------------------------------
13091302 * encoding info table
1303+ * XXX must be sorted by the same order as enum pg_enc (in mb/pg_wchar.h)
13101304 *-------------------------------------------------------------------
13111305 */
13121306pg_wchar_tbl pg_wchar_table []= {
@@ -1315,41 +1309,41 @@ pg_wchar_tbl pg_wchar_table[] = {
13151309{pg_euccn2wchar_with_len ,pg_euccn_mblen ,pg_euccn_dsplen ,pg_euccn_verifier ,2 },/* 2; PG_EUC_CN */
13161310{pg_euckr2wchar_with_len ,pg_euckr_mblen ,pg_euckr_dsplen ,pg_euckr_verifier ,3 },/* 3; PG_EUC_KR */
13171311{pg_euctw2wchar_with_len ,pg_euctw_mblen ,pg_euctw_dsplen ,pg_euctw_verifier ,4 },/* 4; PG_EUC_TW */
1318- {pg_utf2wchar_with_len ,pg_utf_mblen ,pg_utf_dsplen ,pg_utf8_verifier ,4 },/* 5; PG_UTF8 */
1319- {pg_mule2wchar_with_len ,pg_mule_mblen ,pg_mule_dsplen ,pg_mule_verifier ,4 },/* 6; PG_MULE_INTERNAL */
1320- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 7; PG_LATIN1 */
1321- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 8; PG_LATIN2 */
1322- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 9; PG_LATIN3 */
1323- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 10; PG_LATIN4 */
1324- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 11; PG_LATIN5 */
1325- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 12; PG_LATIN6 */
1326- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 13; PG_LATIN7 */
1327- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 14; PG_LATIN8 */
1328- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 15; PG_LATIN9 */
1329- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 16; PG_LATIN10 */
1330- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 17; PG_WIN1256 */
1331- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 18; PG_WIN1258 */
1332- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 19; PG_WIN874 */
1333- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 21; PG_KOI8 */
1334- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 22; PG_WIN1251 */
1335- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 23; PG_WIN1252 */
1336- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 24; PG_WIN866 */
1312+ {pg_eucjp2wchar_with_len ,pg_eucjp_mblen ,pg_eucjp_dsplen ,pg_eucjp_verifier ,3 },/* 5; PG_EUC_JIS_2004 */
1313+ {pg_utf2wchar_with_len ,pg_utf_mblen ,pg_utf_dsplen ,pg_utf8_verifier ,4 },/* 6; PG_UTF8 */
1314+ {pg_mule2wchar_with_len ,pg_mule_mblen ,pg_mule_dsplen ,pg_mule_verifier ,4 },/* 7; PG_MULE_INTERNAL */
1315+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 8; PG_LATIN1 */
1316+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 9; PG_LATIN2 */
1317+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 10; PG_LATIN3 */
1318+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 11; PG_LATIN4 */
1319+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 12; PG_LATIN5 */
1320+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 13; PG_LATIN6 */
1321+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 14; PG_LATIN7 */
1322+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 15; PG_LATIN8 */
1323+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 16; PG_LATIN9 */
1324+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 17; PG_LATIN10 */
1325+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 18; PG_WIN1256 */
1326+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 19; PG_WIN1258 */
1327+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 20; PG_WIN866 */
1328+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 21; PG_WIN874 */
1329+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 22; PG_KOI8R */
1330+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 23; PG_WIN1251 */
1331+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 24; PG_WIN1252 */
13371332{pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 25; ISO-8859-5 */
1338- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 25; ISO-8859-6 */
1339- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 26; ISO-8859-7 */
1340- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 27; ISO-8859-8 */
1341- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 28; PG_WIN1250 */
1342- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 29; PG_WIN1253 */
1343- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 30; PG_WIN1254 */
1344- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 31; PG_WIN1255 */
1345- {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 32; PG_WIN1257 */
1346- {pg_eucjp2wchar_with_len ,pg_eucjp_mblen ,pg_eucjp_dsplen ,pg_eucjp_verifier ,3 },/* 33; PG_EUC_JIS_2004 */
1333+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 26; ISO-8859-6 */
1334+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 27; ISO-8859-7 */
1335+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 28; ISO-8859-8 */
1336+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 29; PG_WIN1250 */
1337+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 30; PG_WIN1253 */
1338+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 31; PG_WIN1254 */
1339+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 32; PG_WIN1255 */
1340+ {pg_latin12wchar_with_len ,pg_latin1_mblen ,pg_latin1_dsplen ,pg_latin1_verifier ,1 },/* 33; PG_WIN1257 */
13471341{0 ,pg_sjis_mblen ,pg_sjis_dsplen ,pg_sjis_verifier ,2 },/* 34; PG_SJIS */
13481342{0 ,pg_big5_mblen ,pg_big5_dsplen ,pg_big5_verifier ,2 },/* 35; PG_BIG5 */
13491343{0 ,pg_gbk_mblen ,pg_gbk_dsplen ,pg_gbk_verifier ,2 },/* 36; PG_GBK */
13501344{0 ,pg_uhc_mblen ,pg_uhc_dsplen ,pg_uhc_verifier ,2 },/* 37; PG_UHC */
1351- {pg_johab2wchar_with_len , pg_johab_mblen , pg_johab_dsplen , pg_johab_verifier , 3 },/* 38;PG_JOHAB */
1352- {0 ,pg_gb18030_mblen , pg_gb18030_dsplen , pg_gb18030_verifier , 4 },/* 39;PG_GB18030 */
1345+ {0 , pg_gb18030_mblen , pg_gb18030_dsplen , pg_gb18030_verifier , 4 },/* 38;PG_GB18030 */
1346+ {0 ,pg_johab_mblen , pg_johab_dsplen , pg_johab_verifier , 3 },/* 39;PG_JOHAB */
13531347{0 ,pg_sjis_mblen ,pg_sjis_dsplen ,pg_sjis_verifier ,2 }/* 40; PG_SHIFT_JIS_2004 */
13541348};
13551349
@@ -1440,7 +1434,6 @@ pg_verifymbstr(const char *mbstr, int len, bool noError)
14401434/*
14411435 * Verify mbstr to make sure that it is validly encoded in the specified
14421436 * encoding.
1443- *
14441437 */
14451438bool
14461439pg_verify_mbstr (int encoding ,const char * mbstr ,int len ,bool noError )