diff options
| author | Tatsuo Ishii <ishii@postgresql.org> | 2001-09-06 04:57:30 +0000 |
|---|---|---|
| committer | Tatsuo Ishii <ishii@postgresql.org> | 2001-09-06 04:57:30 +0000 |
| commit | 227767112c3d3a6562b27e0a0da064d8b8ca1ebf (patch) | |
| tree | 83793014a004ba5098dba7f6c31ec6992049c80d /src/backend/utils/mb/wchar.c | |
| parent | 50aa3020ac925d3f537fe580e218f8d9cec9fc5b (diff) | |
| download | postgresql-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.c | 70 |
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))); } |
