Datum win_to_utf8(PG_FUNCTION_ARGS) { int encoding = PG_GETARG_INT32(0); unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); int i; CHECK_ENCODING_CONVERSION_ARGS(-1, PG_UTF8); for (i = 0; i < lengthof(maps); i++) { if (encoding == maps[i].encoding) { LocalToUtf(src, len, dest, maps[i].map1, NULL, 0, NULL, encoding); PG_RETURN_VOID(); } } ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("unexpected encoding ID %d for WIN character sets", encoding))); PG_RETURN_VOID(); }
Datum win_to_utf8(PG_FUNCTION_ARGS) { int encoding = PG_GETARG_INT32(0); unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); int i; Assert(PG_GETARG_INT32(1) == PG_UTF8); Assert(len >= 0); for (i = 0; i < sizeof(maps) / sizeof(pg_conv_map); i++) { if (encoding == maps[i].encoding) { LocalToUtf(src, dest, maps[i].map1, maps[i].size1, encoding, len); PG_RETURN_VOID(); } } ereport(ERROR, (errcode(ERRCODE_INTERNAL_ERROR), errmsg("unexpected encoding ID %d for WIN character sets", encoding))); PG_RETURN_VOID(); }
/* ---------- * conv_proc( * INTEGER, -- source encoding id * INTEGER, -- destination encoding id * CSTRING, -- source string (null terminated C string) * CSTRING, -- destination string (null terminated C string) * INTEGER -- source string length * ) returns VOID; * ---------- */ Datum uhc_to_utf8(PG_FUNCTION_ARGS) { unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); CHECK_ENCODING_CONVERSION_ARGS(PG_UHC, PG_UTF8); LocalToUtf(src, dest, LUmapUHC, NULL, sizeof(LUmapUHC) / sizeof(pg_local_to_utf), 0, PG_UHC, len); PG_RETURN_VOID(); }
Datum iso8859_to_utf8(PG_FUNCTION_ARGS) { int encoding = PG_GETARG_INT32(0); unsigned char *src = PG_GETARG_CSTRING(2); unsigned char *dest = PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); Assert(PG_GETARG_INT32(1) == PG_UTF8); Assert(len >= 0); LocalToUtf(src, dest, maps[encoding].map1, maps[encoding].size1, encoding, len); PG_RETURN_VOID(); }
Datum win1256_to_utf(PG_FUNCTION_ARGS) { unsigned char *src = PG_GETARG_CSTRING(2); unsigned char *dest = PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); Assert(PG_GETARG_INT32(0) == PG_WIN1256); Assert(PG_GETARG_INT32(1) == PG_UTF8); Assert(len >= 0); LocalToUtf(src, dest, LUmapWIN1256, sizeof(LUmapWIN1256) / sizeof(pg_local_to_utf), PG_WIN1256, len); PG_RETURN_VOID(); }
/* ---------- * conv_proc( * INTEGER, -- source encoding id * INTEGER, -- destination encoding id * CSTRING, -- source string (null terminated C string) * CSTRING, -- destination string (null terminated C string) * INTEGER -- source string length * ) returns VOID; * ---------- */ Datum big5_to_utf8(PG_FUNCTION_ARGS) { unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); Assert(PG_GETARG_INT32(0) == PG_BIG5); Assert(PG_GETARG_INT32(1) == PG_UTF8); Assert(len >= 0); LocalToUtf(src, dest, LUmapBIG5, sizeof(LUmapBIG5) / sizeof(pg_local_to_utf), PG_BIG5, len); PG_RETURN_VOID(); }
/* ---------- * conv_proc( * INTEGER, -- source encoding id * INTEGER, -- destination encoding id * CSTRING, -- source string (null terminated C string) * CSTRING, -- destination string (null terminated C string) * INTEGER -- source string length * ) returns VOID; * ---------- */ Datum euc_jp_to_utf8(PG_FUNCTION_ARGS) { unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); Assert(PG_GETARG_INT32(0) == PG_EUC_JP); Assert(PG_GETARG_INT32(1) == PG_UTF8); Assert(len >= 0); LocalToUtf(src, dest, LUmapEUC_JP, NULL, sizeof(LUmapEUC_JP) / sizeof(pg_local_to_utf), 0, PG_EUC_JP, len); PG_RETURN_VOID(); }
/* ---------- * conv_proc( * INTEGER, -- source encoding id * INTEGER, -- destination encoding id * CSTRING, -- source string (null terminated C string) * CSTRING, -- destination string (null terminated C string) * INTEGER -- source string length * ) returns VOID; * ---------- */ Datum johab_to_utf8(PG_FUNCTION_ARGS) { unsigned char *src = PG_GETARG_CSTRING(2); unsigned char *dest = PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); Assert(PG_GETARG_INT32(0) == PG_JOHAB); Assert(PG_GETARG_INT32(1) == PG_UTF8); Assert(len >= 0); LocalToUtf(src, dest, LUmapJOHAB, sizeof(LUmapJOHAB) / sizeof(pg_local_to_utf), PG_JOHAB, len); PG_RETURN_VOID(); }
/* ---------- * conv_proc( * INTEGER, -- source encoding id * INTEGER, -- destination encoding id * CSTRING, -- source string (null terminated C string) * CSTRING, -- destination string (null terminated C string) * INTEGER -- source string length * ) returns VOID; * ---------- */ Datum shift_jis_2004_to_utf8(PG_FUNCTION_ARGS) { unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); CHECK_ENCODING_CONVERSION_ARGS(PG_SHIFT_JIS_2004, PG_UTF8); LocalToUtf(src, dest, LUmapSHIFT_JIS_2004, LUmapSHIFT_JIS_2004_combined, sizeof(LUmapSHIFT_JIS_2004) / sizeof(pg_local_to_utf), sizeof(LUmapSHIFT_JIS_2004_combined) / sizeof(pg_local_to_utf_combined), PG_SHIFT_JIS_2004, len); PG_RETURN_VOID(); }
/* ---------- * conv_proc( * INTEGER, -- source encoding id * INTEGER, -- destination encoding id * CSTRING, -- source string (null terminated C string) * CSTRING, -- destination string (null terminated C string) * INTEGER -- source string length * ) returns VOID; * ---------- */ Datum euc_cn_to_utf8(PG_FUNCTION_ARGS) { unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); CHECK_ENCODING_CONVERSION_ARGS(PG_EUC_CN, PG_UTF8); LocalToUtf(src, len, dest, &euc_cn_to_unicode_tree, NULL, 0, NULL, PG_EUC_CN); PG_RETURN_VOID(); }
/* ---------- * conv_proc( * INTEGER, -- source encoding id * INTEGER, -- destination encoding id * CSTRING, -- source string (null terminated C string) * CSTRING, -- destination string (null terminated C string) * INTEGER -- source string length * ) returns VOID; * ---------- */ Datum big5_to_utf8(PG_FUNCTION_ARGS) { unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); CHECK_ENCODING_CONVERSION_ARGS(PG_BIG5, PG_UTF8); LocalToUtf(src, len, dest, LUmapBIG5, lengthof(LUmapBIG5), NULL, 0, NULL, PG_BIG5); PG_RETURN_VOID(); }
/* ---------- * conv_proc( * INTEGER, -- source encoding id * INTEGER, -- destination encoding id * CSTRING, -- source string (null terminated C string) * CSTRING, -- destination string (null terminated C string) * INTEGER -- source string length * ) returns VOID; * ---------- */ Datum euc_jis_2004_to_utf8(PG_FUNCTION_ARGS) { unsigned char *src = (unsigned char *) PG_GETARG_CSTRING(2); unsigned char *dest = (unsigned char *) PG_GETARG_CSTRING(3); int len = PG_GETARG_INT32(4); CHECK_ENCODING_CONVERSION_ARGS(PG_EUC_JIS_2004, PG_UTF8); LocalToUtf(src, len, dest, LUmapEUC_JIS_2004, lengthof(LUmapEUC_JIS_2004), LUmapEUC_JIS_2004_combined, lengthof(LUmapEUC_JIS_2004_combined), NULL, PG_EUC_JIS_2004); PG_RETURN_VOID(); }