]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Avoid dependency on backend's multibyte module as possible.
authorTatsuo Ishii <ishii@postgresql.org>
Mon, 30 Oct 2000 10:31:46 +0000 (10:31 +0000)
committerTatsuo Ishii <ishii@postgresql.org>
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