Avoid dependency on backend's multibyte module as possible.
authorTatsuo Ishii
Mon, 30 Oct 2000 10:31:46 +0000 (10:31 +0000)
committerTatsuo Ishii
Mon, 30 Oct 2000 10:31:46 +0000 (10:31 +0000)
Now frontend/libpq has its own version of pg_encoding_to_char
and pg_char_to_encoding.

src/interfaces/libpq/Makefile
src/interfaces/libpq/fe-connect.c

index 7f651fa8854d58f9bd9bf57c93fbc458d8f33bf9..01d68aa83cbb549dde5ae37d900ecd8d8501b59d 100644 (file)
@@ -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
 
index bdc49165f4b68c3f82bd2106915a24cbfa705f5a..63be5279fae516ce4c86afd2e3b25bc0e48889df 100644 (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