mirror of
https://github.com/postgres/postgres.git
synced 2025-11-24 00:23:06 +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:
@@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (c) 1994, Regents of the University of California
|
||||
#
|
||||
# $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.56 2001/08/28 14:20:28 petere Exp $
|
||||
# $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.57 2001/09/06 04:57:30 ishii Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@@ -24,7 +24,7 @@ OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \
|
||||
$(INET_ATON) $(SNPRINTF) $(STRERROR)
|
||||
|
||||
ifdef MULTIBYTE
|
||||
OBJS+= wchar.o
|
||||
OBJS+= wchar.o encnames.o
|
||||
endif
|
||||
|
||||
# Add libraries that libpq depends (or might depend) on into the
|
||||
@@ -67,6 +67,8 @@ strerror.c: $(backend_src)/port/strerror.c
|
||||
ifdef MULTIBYTE
|
||||
wchar.c : % : $(backend_src)/utils/mb/%
|
||||
rm -f $@ && $(LN_S) $< .
|
||||
encnames.c : % : $(backend_src)/utils/mb/%
|
||||
rm -f $@ && $(LN_S) $< .
|
||||
endif
|
||||
|
||||
|
||||
@@ -82,5 +84,5 @@ uninstall: uninstall-lib
|
||||
rm -f $(DESTDIR)$(includedir)/libpq-fe.h $(DESTDIR)$(includedir_internal)/libpq-int.h $(includedir_internal)/pqexpbuffer.h
|
||||
|
||||
clean distclean maintainer-clean: clean-lib
|
||||
rm -f $(OBJS) dllist.c md5.c md5.h wchar.c
|
||||
rm -f $(OBJS) dllist.c md5.c md5.h wchar.c encnames.c
|
||||
rm -f $(OBJS) inet_aton.c snprintf.c strerror.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
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.55 2001/09/06 02:52:00 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-misc.c,v 1.56 2001/09/06 04:57:30 ishii Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -809,7 +809,7 @@ int
|
||||
PQenv2encoding(void)
|
||||
{
|
||||
char *str;
|
||||
int encoding = SQL_ASCII;
|
||||
int encoding = PG_SQL_ASCII;
|
||||
|
||||
str = getenv("PGCLIENTENCODING");
|
||||
if (str && *str != '\0')
|
||||
|
||||
@@ -70,12 +70,18 @@ multibyte_init(void)
|
||||
unsigned char *
|
||||
check_client_encoding(unsigned char *str)
|
||||
{
|
||||
if (strstr(str, "%27SJIS%27") || strstr(str, "'SJIS'") || strstr(str, "'sjis'"))
|
||||
if (strstr(str, "%27SJIS%27") ||
|
||||
strstr(str, "'SJIS'") ||
|
||||
strstr(str, "'sjis'") ||
|
||||
strstr(str, "'Shift_JIS'"))
|
||||
{
|
||||
multibyte_client_encoding = SJIS;
|
||||
return ("SJIS");
|
||||
}
|
||||
if (strstr(str, "%27BIG5%27") || strstr(str, "'BIG5'") || strstr(str, "'big5'"))
|
||||
if (strstr(str, "%27BIG5%27") ||
|
||||
strstr(str, "'BIG5'") ||
|
||||
strstr(str, "'big5'")
|
||||
strstr(str, "'Big5'"))
|
||||
{
|
||||
multibyte_client_encoding = BIG5;
|
||||
return ("BIG5");
|
||||
|
||||
Reference in New Issue
Block a user