diff --git a/src/backend/utils/adt/varchar.c b/src/backend/utils/adt/varchar.c
index 8d2352358a069ed5f67078f8cd9205eaa0bd460f..6413f488eb883314e60a2a497cf380ff700c0ff0 100644
--- a/src/backend/utils/adt/varchar.c
+++ b/src/backend/utils/adt/varchar.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.41 1998/09/25 15:51:02 momjian Exp $
+ *	  $Header: /cvsroot/pgsql/src/backend/utils/adt/varchar.c,v 1.42 1998/10/06 03:02:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -163,7 +163,11 @@ bpchar(char *s, int32 len)
 #ifdef MULTIBYTE
 	/* truncate multi-byte string in a way not to break
 	   multi-byte boundary */
-	slen = pg_mbcliplen(VARDATA(s), rlen, rlen);
+	if (VARSIZE(s) > len) {
+		slen = pg_mbcliplen(VARDATA(s), VARSIZE(s)-VARHDRSZ, rlen);
+        } else {
+		slen = VARSIZE(s) - VARHDRSZ;
+        }
 #else
 	slen = VARSIZE(s) - VARHDRSZ;
 #endif
diff --git a/src/backend/utils/mb/common.c b/src/backend/utils/mb/common.c
index dc71122ed38d8496e6ef9f385a023b11cdedb872..b6bcae3b15686e92f816acc2655efbe429799da3 100644
--- a/src/backend/utils/mb/common.c
+++ b/src/backend/utils/mb/common.c
@@ -2,9 +2,18 @@
  * This file contains some public functions
  * usable for both the backend and the frontend.
  * Tatsuo Ishii
- * $Id: common.c,v 1.2 1998/09/01 04:33:19 momjian Exp $ */
+ * $Id: common.c,v 1.3 1998/10/06 03:02:21 momjian Exp $ */
+
+#include <stdlib.h>
+
+#ifdef WIN32
+#include "win32.h"
+#else
+#if !defined(NO_UNISTD_H)
+#include <unistd.h>
+#endif
+#endif
 
-#include <stdio.h>
 #include <string.h>
 
 #include "mb/pg_wchar.h"
diff --git a/src/bin/psql/win32.mak b/src/bin/psql/win32.mak
index f414594e18b2f98f934cd057253162f4b9eacc9c..65d7e1921366076b00d12f713ff2f7de64917bc7 100644
--- a/src/bin/psql/win32.mak
+++ b/src/bin/psql/win32.mak
@@ -29,6 +29,14 @@ CLEAN :
 CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D\
  "_MBCS" /Fp"$(INTDIR)\psql.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c \
  /I ..\..\include /I ..\..\interfaces\libpq
+
+!IFDEF        MULTIBYTE
+!IFNDEF MBFLAGS
+MBFLAGS="-DMULTIBYTE=$(MULTIBYTE)"
+!ENDIF
+CPP_PROJ=$(MBFLAGS) $(CPP_PROJ)
+!ENDIF
+
 CPP_OBJS=.\Release/
 CPP_SBRS=.
 
diff --git a/src/interfaces/libpq/fe-print.c b/src/interfaces/libpq/fe-print.c
index fc998d9458bd66e3eda930f2f044eb45e77b7ca7..a987f2039bf1e2813e973973fcb0de500ae7433c 100644
--- a/src/interfaces/libpq/fe-print.c
+++ b/src/interfaces/libpq/fe-print.c
@@ -9,7 +9,7 @@
  * didn't really belong there.
  *
  * IDENTIFICATION
- *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v 1.13 1998/10/04 20:46:39 tgl Exp $
+ *	  $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-print.c,v 1.14 1998/10/06 03:02:25 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -513,7 +513,17 @@ PQmblen(unsigned char *s)
 	return (pg_encoding_mblen(encoding, s));
 }
 
-#endif
+#else
+
+#ifdef WIN32
+int
+PQmblen(unsigned char *s)
+{
+}
+#endif	/* WIN32 */
+
+
+#endif	/* MULTIBYTE */
 
 static void
 do_field(PQprintOpt *po, PGresult *res,
diff --git a/src/interfaces/libpq/libpqdll.def b/src/interfaces/libpq/libpqdll.def
index a7c9b28ef80abbab0fa505655cd6b20b6a1a5a32..ee8b63849285d975343b6e5ef9df5fdf13c0aaad 100644
--- a/src/interfaces/libpq/libpqdll.def
+++ b/src/interfaces/libpq/libpqdll.def
@@ -63,4 +63,5 @@ EXPORTS
 	lo_unlink		@ 60
 	lo_import		@ 61
 	lo_export		@ 62
-	PQresultErrorMessage	@ 63
+	pgresStatus		@ 63
+	PQmblen			@ 64
diff --git a/src/interfaces/libpq/win32.mak b/src/interfaces/libpq/win32.mak
index 71d57dc4643d225d29c62670b962bb25e129a722..7260f977ab886a960480f71e060818827d7f369c 100644
--- a/src/interfaces/libpq/win32.mak
+++ b/src/interfaces/libpq/win32.mak
@@ -33,7 +33,7 @@ CLEAN :
 	-@erase "$(OUTDIR)\libpq.lib"
 	-@erase "$(OUTDIR)\libpq.dll"
 	-@erase "$(OUTDIR)\libpq.res"
-	-@erase "$(OUTDIR)\vc*.*"
+	-@erase "vc50.pch"
 	-@erase "$(OUTDIR)\libpq.pch"
 	-@erase "$(OUTDIR)\libpqdll.exp"
 	-@erase "$(OUTDIR)\libpqdll.lib"
@@ -44,6 +44,14 @@ CLEAN :
 CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D\
  "WIN32" /D "_WINDOWS" /Fp"$(INTDIR)\libpq.pch" /YX\
  /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c 
+
+!IFDEF MULTIBYTE
+!IFNDEF	MBFLAGS
+MBFLAGS="-DMULTIBYTE=$(MULTIBYTE)"
+!ENDIF
+CPP_PROJ = $(CPP_PROJ) $(MBFLAGS)
+!ENDIF
+
 CPP_OBJS=.\Release/
 CPP_SBRS=.
 	
@@ -58,6 +66,10 @@ LIB32_OBJS= \
 	"$(INTDIR)\fe-misc.obj" \
 	"$(INTDIR)\fe-print.obj"
 
+!IFDEF MULTIBYTE
+LIB32_OBJS = $(LIB32_OBJS) $(INTDIR)\common.obj $(INTDIR)\wchar.obj $(INTDIR)\conv.obj
+!ENDIF
+
 RSC_PROJ=/l 0x409 /fo"$(INTDIR)\libpq.res"
 
 LINK32=link.exe
diff --git a/src/win32.mak b/src/win32.mak
index 48edd8e33d541b3a15fa3942334d31765ce3fcdf..a7264acf543ad3b9133db7d6008bd866c7f0dabe 100644
--- a/src/win32.mak
+++ b/src/win32.mak
@@ -10,10 +10,14 @@ NULL=
 NULL=nul
 !ENDIF 
 
+!IFDEF	MULTIBYTE
+MAKEMACRO = "MULTIBYTE=$(MULTIBYTE)"
+!ENDIF
+
 ALL: 
    cd interfaces\libpq
-   nmake /f win32.mak
+   nmake /f win32.mak $(MAKEMACRO)
    cd ..\..\bin\psql
-   nmake /f win32.mak
+   nmake /f win32.mak $(MAKEMACRO)
    cd ..\..
    echo All Win32 parts have been built!