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

Avoid dependency on backend's multibyte module as possible.

Now frontend/libpq has its own version of pg_encoding_to_char
and pg_char_to_encoding.
This commit is contained in:
Tatsuo Ishii
2000-10-30 10:31:46 +00:00
parent e5b6b0ebb9
commit 0b10d35e2b
2 changed files with 71 additions and 6 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.142 2000/10/23 14:50:44 momjian Exp $
* $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v 1.143 2000/10/30 10:31:46 ishii Exp $
*
*-------------------------------------------------------------------------
*/
@ -2694,3 +2694,70 @@ 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"},
{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