diff options
author | Tatsuo Ishii | 2001-09-06 04:57:30 +0000 |
---|---|---|
committer | Tatsuo Ishii | 2001-09-06 04:57:30 +0000 |
commit | 227767112c3d3a6562b27e0a0da064d8b8ca1ebf (patch) | |
tree | 83793014a004ba5098dba7f6c31ec6992049c80d /src/interfaces/libpq/fe-connect.c | |
parent | 50aa3020ac925d3f537fe580e218f8d9cec9fc5b (diff) |
Commit Karel's patch.
-------------------------------------------------------------------
Subject: Re: [PATCHES] encoding names
From: Karel Zak <[email protected]>
To: Peter Eisentraut <[email protected]>
Cc: pgsql-patches <[email protected]>
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 <[email protected]>
http://home.zf.jcu.cz/~zakkr/
C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz
Diffstat (limited to 'src/interfaces/libpq/fe-connect.c')
-rw-r--r-- | src/interfaces/libpq/fe-connect.c | 77 |
1 files changed, 4 insertions, 73 deletions
diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index 9301d1b1cfb..8829c69e32b 100644 --- a/src/interfaces/libpq/fe-connect.c +++ b/src/interfaces/libpq/fe-connect.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.176 2001/08/21 20:39:52 momjian Exp $ + * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.177 2001/09/06 04:57:30 ishii Exp $ * *------------------------------------------------------------------------- */ @@ -1659,7 +1659,7 @@ keep_going: /* We will come back to here until there /* set client encoding in pg_conn struct */ encoding = PQgetvalue(res, 0, 0); if (!encoding) /* this should not happen */ - conn->client_encoding = SQL_ASCII; + conn->client_encoding = PG_SQL_ASCII; else conn->client_encoding = pg_char_to_encoding(encoding); PQclear(res); @@ -2758,7 +2758,8 @@ PQsetClientEncoding(PGconn *conn, const char *encoding) return (status); } -#else +#else /* without multibytle support */ + int PQsetClientEncoding(PGconn *conn, const char *encoding) { @@ -2832,73 +2833,3 @@ defaultNoticeProcessor(void *arg, const char *message) /* Note: we expect the supplied string to end with a newline already. */ fprintf(stderr, "%s", message); } - -#ifdef MULTIBYTE -/* - * convert an encoding string to encoding symbol value. - * case is ignored. - * if there's no valid encoding, returns -1 - */ - -typedef struct -{ - int encoding; /* encoding symbol value */ - char *name; /* encoding string */ -} PQ_encoding_conv_tbl; - -static PQ_encoding_conv_tbl pq_conv_tbl[] = { - {SQL_ASCII, "SQL_ASCII"}, - {EUC_JP, "EUC_JP"}, - {EUC_CN, "EUC_CN"}, - {EUC_KR, "EUC_KR"}, - {EUC_TW, "EUC_TW"}, - {UNICODE, "UNICODE"}, - {MULE_INTERNAL, "MULE_INTERNAL"}, - {LATIN1, "LATIN1"}, - {LATIN2, "LATIN2"}, - {LATIN3, "LATIN3"}, - {LATIN4, "LATIN4"}, - {LATIN5, "LATIN5"}, - {KOI8, "KOI8"}, - {WIN, "WIN"}, - {ALT, "ALT"}, - {SJIS, "SJIS"}, - {BIG5, "BIG5"}, - {WIN1250, "WIN1250"}, - {-1, ""} -}; - -int -pg_char_to_encoding(const char *s) -{ - PQ_encoding_conv_tbl *p = pq_conv_tbl; - - if (!s) - return (-1); - - for (; p->encoding >= 0; p++) - { - if (!strcasecmp(s, p->name)) - break; - } - return (p->encoding); -} - -/* - * convert encoding symbol to encoding char. - * if there's no valid encoding symbol, returns "" - */ -const char * -pg_encoding_to_char(int encoding) -{ - PQ_encoding_conv_tbl *p = pq_conv_tbl; - - for (; p->encoding >= 0; p++) - { - if (p->encoding == encoding) - return (p->name); - } - return (""); -} - -#endif |