aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/libpq/Makefile8
-rw-r--r--src/interfaces/libpq/fe-connect.c69
2 files changed, 71 insertions, 6 deletions
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
index 7f651fa8854..01d68aa83cb 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 bdc49165f4b..63be5279fae 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