summaryrefslogtreecommitdiff
path: root/src/backend/utils/mb/wchar.c
diff options
context:
space:
mode:
authorTatsuo Ishii <ishii@postgresql.org>2001-09-06 04:57:30 +0000
committerTatsuo Ishii <ishii@postgresql.org>2001-09-06 04:57:30 +0000
commit227767112c3d3a6562b27e0a0da064d8b8ca1ebf (patch)
tree83793014a004ba5098dba7f6c31ec6992049c80d /src/backend/utils/mb/wchar.c
parent50aa3020ac925d3f537fe580e218f8d9cec9fc5b (diff)
downloadpostgresql-227767112c3d3a6562b27e0a0da064d8b8ca1ebf.tar.gz
Commit Karel's patch.
------------------------------------------------------------------- Subject: Re: [PATCHES] encoding names From: Karel Zak <zakkr@zf.jcu.cz> To: Peter Eisentraut <peter_e@gmx.net> Cc: pgsql-patches <pgsql-patches@postgresql.org> Date: Fri, 31 Aug 2001 17:24:38 +0200 On Thu, Aug 30, 2001 at 01:30:40AM +0200, Peter Eisentraut wrote: > > - convert encoding 'name' to 'id' > > I thought we decided not to add functions returning "new" names until we > know exactly what the new names should be, and pending schema Ok, the patch not to add functions. > better > > ...(): encoding name too long Fixed. I found new bug in command/variable.c in parse_client_encoding(), nobody probably never see this error: if (pg_set_client_encoding(encoding)) { elog(ERROR, "Conversion between %s and %s is not supported", value, GetDatabaseEncodingName()); } because pg_set_client_encoding() returns -1 for error and 0 as true. It's fixed too. IMHO it can be apply. Karel PS: * following files are renamed: src/utils/mb/Unicode/KOI8_to_utf8.map --> src/utils/mb/Unicode/koi8r_to_utf8.map src/utils/mb/Unicode/WIN_to_utf8.map --> src/utils/mb/Unicode/win1251_to_utf8.map src/utils/mb/Unicode/utf8_to_KOI8.map --> src/utils/mb/Unicode/utf8_to_koi8r.map src/utils/mb/Unicode/utf8_to_WIN.map --> src/utils/mb/Unicode/utf8_to_win1251.map * new file: src/utils/mb/encname.c * removed file: src/utils/mb/common.c -- Karel Zak <zakkr@zf.jcu.cz> http://home.zf.jcu.cz/~zakkr/ C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Diffstat (limited to 'src/backend/utils/mb/wchar.c')
-rw-r--r--src/backend/utils/mb/wchar.c70
1 files changed, 32 insertions, 38 deletions
diff --git a/src/backend/utils/mb/wchar.c b/src/backend/utils/mb/wchar.c
index 43371f9477..a7e97cc186 100644
--- a/src/backend/utils/mb/wchar.c
+++ b/src/backend/utils/mb/wchar.c
@@ -1,16 +1,22 @@
/*
* conversion functions between pg_wchar and multi-byte streams.
* Tatsuo Ishii
- * $Id: wchar.c,v 1.18 2001/04/19 02:34:35 ishii Exp $
+ * $Id: wchar.c,v 1.19 2001/09/06 04:57:29 ishii Exp $
*
* WIN1250 client encoding updated by Pavel Behal
*
*/
/* can be used in either frontend or backend */
#include "postgres_fe.h"
-
#include "mb/pg_wchar.h"
+#ifdef FRONTEND
+ #define Assert(condition)
+#else
+ #include "postgres.h"
+#endif
+
+
/*
* conversion to pg_wchar is done by "table driven."
* to add an encoding support, define mb2wchar_with_len(), mblen()
@@ -452,41 +458,24 @@ pg_big5_mblen(const unsigned char *s)
}
pg_wchar_tbl pg_wchar_table[] = {
- {pg_ascii2wchar_with_len, pg_ascii_mblen}, /* 0 */
- {pg_eucjp2wchar_with_len, pg_eucjp_mblen}, /* 1 */
- {pg_euccn2wchar_with_len, pg_euccn_mblen}, /* 2 */
- {pg_euckr2wchar_with_len, pg_euckr_mblen}, /* 3 */
- {pg_euctw2wchar_with_len, pg_euctw_mblen}, /* 4 */
- {pg_utf2wchar_with_len, pg_utf_mblen}, /* 5 */
- {pg_mule2wchar_with_len, pg_mule_mblen}, /* 6 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 7 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 8 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 9 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 10 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 11 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 12 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 13 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 14 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 15 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 16 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 17 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 18 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 19 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 20 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 21 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 22 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 23 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 24 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 25 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 26 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 27 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 28 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 29 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 30 */
- {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 31 */
- {0, pg_sjis_mblen}, /* 32 */
- {0, pg_big5_mblen}, /* 33 */
- {pg_latin12wchar_with_len, pg_latin1_mblen} /* 34 */
+ {pg_ascii2wchar_with_len, pg_ascii_mblen}, /* 0; PG_SQL_ASCII */
+ {pg_eucjp2wchar_with_len, pg_eucjp_mblen}, /* 1; PG_EUC_JP */
+ {pg_euccn2wchar_with_len, pg_euccn_mblen}, /* 2; PG_EUC_CN */
+ {pg_euckr2wchar_with_len, pg_euckr_mblen}, /* 3; PG_EUC_KR */
+ {pg_euctw2wchar_with_len, pg_euctw_mblen}, /* 4; PG_EUC_TW */
+ {pg_utf2wchar_with_len, pg_utf_mblen}, /* 5; PG_UNICODE */
+ {pg_mule2wchar_with_len, pg_mule_mblen}, /* 6; PG_MULE_INTERNAL */
+ {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 7; PG_LATIN1 */
+ {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 8; PG_LATIN2 */
+ {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 9; PG_LATIN3 */
+ {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 10; PG_LATIN4 */
+ {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 11; PG_LATIN5 */
+ {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 12; PG_KOI8 */
+ {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 13; PG_WIN1251 */
+ {pg_latin12wchar_with_len, pg_latin1_mblen}, /* 14; PG_ALT */
+ {0, pg_sjis_mblen}, /* 15; PG_SJIS */
+ {0, pg_big5_mblen}, /* 17; PG_BIG5 */
+ {pg_latin12wchar_with_len, pg_latin1_mblen} /* 18; PG_WIN1250 */
};
/* returns the byte length of a word for mule internal code */
@@ -502,5 +491,10 @@ pg_mic_mblen(const unsigned char *mbstr)
int
pg_encoding_mblen(int encoding, const unsigned char *mbstr)
{
- return( (encoding >= 0 && encoding < sizeof(pg_wchar_table)/sizeof(pg_wchar_tbl))? ((*pg_wchar_table[encoding].mblen) (mbstr)) : ((*pg_wchar_table[SQL_ASCII].mblen) (mbstr)));
+ Assert(PG_VALID_ENCODING(encoding));
+
+ return( (encoding >= 0 &&
+ encoding < sizeof(pg_wchar_table)/sizeof(pg_wchar_tbl)) ?
+ ((*pg_wchar_table[encoding].mblen) (mbstr)) :
+ ((*pg_wchar_table[PG_SQL_ASCII].mblen) (mbstr)));
}