diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile index 7f651fa8854d58f9bd9bf57c93fbc458d8f33bf9..01d68aa83cbb549dde5ae37d900ecd8d8501b59d 100644 --- a/src/interfaces/libpq/Makefile +++ b/src/interfaces/libpq/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1994, Regents of the University of California # -# $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.46 2000/10/25 16:13:52 petere Exp $ +# $Header: /cvsroot/pgsql/src/interfaces/libpq/Makefile,v 1.47 2000/10/30 10:31:45 ishii Exp $ # #------------------------------------------------------------------------- @@ -23,7 +23,7 @@ OBJS= fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \ pqexpbuffer.o dllist.o pqsignal.o $(SNPRINTF) $(INET_ATON) ifdef MULTIBYTE -OBJS+= common.o wchar.o conv.o big5.o mbutils.o +OBJS+= common.o wchar.o endif # Add libraries that libpq depends (or might depend) on into the @@ -57,9 +57,7 @@ inet_aton.c: $(backend_src)/port/inet_aton.c rm -f $@ && $(LN_S) $< . ifdef MULTIBYTE -maps = iso8859.map UTF_to_EUC_JP.map EUC_JP_to_UTF.map sjis.map -conv.c: $(maps) -common.c wchar.c conv.c big5.c mbutils.c $(maps) : % : $(backend_src)/utils/mb/% +common.c wchar.c : % : $(backend_src)/utils/mb/% rm -f $@ && $(LN_S) $< . endif diff --git a/src/interfaces/libpq/fe-connect.c b/src/interfaces/libpq/fe-connect.c index bdc49165f4b68c3f82bd2106915a24cbfa705f5a..63be5279fae516ce4c86afd2e3b25bc0e48889df 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.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