1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-29 10:41:53 +03:00

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
This commit is contained in:
Tatsuo Ishii
2001-09-06 04:57:30 +00:00
parent 50aa3020ac
commit 227767112c
21 changed files with 479 additions and 402 deletions

View File

@ -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