Index: configure.in
===================================================================
RCS file: /home/src/pgsql/repo/pgsql/configure.in,v
retrieving revision 1.142
diff -u -r1.142 configure.in
--- configure.in	2001/09/22 22:54:32	1.142
+++ configure.in	2001/09/23 19:44:25
@@ -397,21 +397,6 @@
 
 
 #
-# If Tcl is enabled (above) then check for pltcl_utf
-#
-AC_MSG_CHECKING([whether to build with PL/Tcl with UTF support])
-if test "$with_tcl" = yes; then
-  PGAC_ARG_BOOL(enable, pltcl-utf, no,
-                [  --enable-pltcl-utf      build PL/Tcl UTF support (if Tcl is enabled)],
-                [AC_DEFINE([ENABLE_PLTCL_UTF])])
-else
-  enable_pltcl_utf=no
-fi
-AC_MSG_RESULT([$enable_pltcl_utf])
-AC_SUBST([enable_pltcl_utf])
-
-
-#
 # Optionally build Perl modules (Pg.pm and PL/Perl)
 #
 AC_MSG_CHECKING([whether to build Perl modules])
Index: src/include/pg_config.h.in
===================================================================
RCS file: /home/src/pgsql/repo/pgsql/src/include/pg_config.h.in,v
retrieving revision 1.7
diff -u -r1.7 pg_config.h.in
--- src/include/pg_config.h.in	2001/09/22 22:54:32	1.7
+++ src/include/pg_config.h.in	2001/09/23 19:44:47
@@ -89,9 +89,6 @@
 /* --enable-pltcl-unknown */
 #undef ENABLE_PLTCL_UNKNOWN
 
-/* --enable-pltcl-utf */
-#undef ENABLE_PLTCL_UTF
-
 /* --enable-nls */
 #undef ENABLE_NLS
 
Index: src/pl/tcl/pltcl.c
===================================================================
RCS file: /home/src/pgsql/repo/pgsql/src/pl/tcl/pltcl.c,v
retrieving revision 1.39
diff -u -r1.39 pltcl.c
--- src/pl/tcl/pltcl.c	2001/09/06 02:56:32	1.39
+++ src/pl/tcl/pltcl.c	2001/09/23 19:35:35
@@ -59,18 +59,39 @@
 #include "catalog/pg_language.h"
 #include "catalog/pg_type.h"
 
-#if defined(ENABLE_PLTCL_UTF) && TCL_MAJOR_VERSION == 8 \
+#if defined(UNICODE_CONVERSION) && TCL_MAJOR_VERSION == 8 \
 	&& TCL_MINOR_VERSION > 0
-#	define UTF_BEGIN	do { Tcl_DString _pltcl_ds_tmp
-#       define UTF_END		Tcl_DStringFree(&_pltcl_ds_tmp); } while (0)
-#       define UTF_U2E(x)	(Tcl_UtfToExternalDString(NULL,(x),-1,&_pltcl_ds_tmp))
-#	define UTF_E2U(x)	(Tcl_ExternalToUtfDString(NULL,(x),-1,&_pltcl_ds_tmp))
-#else /* ENABLE_PLTCL_UTF */
+
+#include "mb/pg_wchar.h"
+
+static pg_enconv *tcl_enconv;
+
+static unsigned char *
+utf_u2e(unsigned char *src) {
+	return pg_do_encoding_conversion(src,strlen(src),
+		NULL,tcl_enconv->from_unicode);
+}
+
+static unsigned char *
+utf_e2u(unsigned char *src) {
+	return pg_do_encoding_conversion(src,strlen(src),
+		tcl_enconv->to_unicode,NULL);
+}
+
+#	define PLTCL_UTF
+#	define UTF_BEGIN	do { \
+					unsigned char *_pltcl_utf_src; \
+					unsigned char *_pltcl_utf_dst
+#       define UTF_END		if (_pltcl_utf_src!=_pltcl_utf_dst) \
+					pfree(_pltcl_utf_dst); } while (0)
+#       define UTF_U2E(x)	(_pltcl_utf_dst=utf_u2e(_pltcl_utf_src=(x)))
+#       define UTF_E2U(x)	(_pltcl_utf_dst=utf_e2u(_pltcl_utf_src=(x)))
+#else /* PLTCL_UTF */
 #	define	UTF_BEGIN
 #	define	UTF_END
 #	define	UTF_U2E(x)	(x)
 #	define	UTF_E2U(x)	(x)
-#endif /* ENABLE_PLTCL_UTF */
+#endif /* PLTCL_UTF */
 
 /**********************************************************************
  * The information we cache about loaded procedures
@@ -196,6 +217,14 @@
 	 ************************************************************/
 	if (!pltcl_firstcall)
 		return;
+
+#ifdef PLTCL_UTF
+	/************************************************************
+	 * Do unicode conversion initialization
+	 ************************************************************/
+
+	tcl_enconv=pg_get_enconv_by_encoding(GetDatabaseEncoding());
+#endif
 
 	/************************************************************
 	 * Create the dummy hold interpreter to prevent close of
