diff --git a/src/include/port.h b/src/include/port.h
index cfe8b9b6a628c1581ec5853fab904a3810f69617..01fd9cf61dc2a84b3d37929bfe9c015be2d84cd9 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -156,11 +156,12 @@ extern unsigned char pg_tolower(unsigned char ch);
 extern unsigned char pg_ascii_toupper(unsigned char ch);
 extern unsigned char pg_ascii_tolower(unsigned char ch);
 
+#ifdef USE_REPL_SNPRINTF
+
 /*
- * Capture macro-compatible calls to printf() and friends, and redirect them
- * to wrappers that throw errors in lieu of reporting failure in a return
- * value.  Versions of libintl >= 0.13 similarly redirect to versions that
- * understand the %$ format, so disable libintl macros first.
+ * Versions of libintl >= 0.13 try to replace printf() and friends with
+ * macros to their own versions that understand the %$ format.  We do the
+ * same, so disable their macros, if they exist.
  */
 #ifdef vsnprintf
 #undef vsnprintf
@@ -168,9 +169,6 @@ extern unsigned char pg_ascii_tolower(unsigned char ch);
 #ifdef snprintf
 #undef snprintf
 #endif
-#ifdef vsprintf
-#undef vsprintf
-#endif
 #ifdef sprintf
 #undef sprintf
 #endif
@@ -184,61 +182,11 @@ extern unsigned char pg_ascii_tolower(unsigned char ch);
 #undef printf
 #endif
 
-extern int
-vsnprintf_throw_on_fail(char *str, size_t count, const char *fmt, va_list args)
-__attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 0)));
-extern int
-snprintf_throw_on_fail(char *str, size_t count, const char *fmt,...)
-__attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 4)));
-extern int
-vsprintf_throw_on_fail(char *str, const char *fmt, va_list args)
-__attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 0)));
-extern int
-sprintf_throw_on_fail(char *str, const char *fmt,...)
-__attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 3)));
-extern int
-vfprintf_throw_on_fail(FILE *stream, const char *fmt, va_list args)
-__attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 0)));
-extern int
-fprintf_throw_on_fail(FILE *stream, const char *fmt,...)
-__attribute__((format(PG_PRINTF_ATTRIBUTE, 2, 3)));
-extern int
-printf_throw_on_fail(const char *fmt,...)
-__attribute__((format(PG_PRINTF_ATTRIBUTE, 1, 2)));
-
-/*
- *	The GCC-specific code below prevents the __attribute__(... 'printf')
- *	above from being replaced, and this is required because gcc doesn't
- *	know anything about printf_throw_on_fail.
- */
-#ifdef __GNUC__
-#define vsnprintf(...)	vsnprintf_throw_on_fail(__VA_ARGS__)
-#define snprintf(...)	snprintf_throw_on_fail(__VA_ARGS__)
-#define vsprintf(...)	vsprintf_throw_on_fail(__VA_ARGS__)
-#define sprintf(...)	sprintf_throw_on_fail(__VA_ARGS__)
-#define vfprintf(...)	vfprintf_throw_on_fail(__VA_ARGS__)
-#define fprintf(...)	fprintf_throw_on_fail(__VA_ARGS__)
-#define printf(...)		printf_throw_on_fail(__VA_ARGS__)
-#else
-#define vsnprintf		vsnprintf_throw_on_fail
-#define snprintf		snprintf_throw_on_fail
-#define vsprintf		vsprintf_throw_on_fail
-#define sprintf			sprintf_throw_on_fail
-#define vfprintf		vfprintf_throw_on_fail
-#define fprintf			fprintf_throw_on_fail
-#define printf			printf_throw_on_fail
-#endif
-
-#ifdef USE_REPL_SNPRINTF
-
-/* Code outside syswrap.c should not call these. */
-
 extern int	pg_vsnprintf(char *str, size_t count, const char *fmt, va_list args);
 extern int
 pg_snprintf(char *str, size_t count, const char *fmt,...)
 /* This extension allows gcc to check the format string */
 __attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 4)));
-extern int	pg_vsprintf(char *str, const char *fmt, va_list args);
 extern int
 pg_sprintf(char *str, const char *fmt,...)
 /* This extension allows gcc to check the format string */
@@ -253,6 +201,26 @@ pg_printf(const char *fmt,...)
 /* This extension allows gcc to check the format string */
 __attribute__((format(PG_PRINTF_ATTRIBUTE, 1, 2)));
 
+/*
+ *	The GCC-specific code below prevents the __attribute__(... 'printf')
+ *	above from being replaced, and this is required because gcc doesn't
+ *	know anything about pg_printf.
+ */
+#ifdef __GNUC__
+#define vsnprintf(...)	pg_vsnprintf(__VA_ARGS__)
+#define snprintf(...)	pg_snprintf(__VA_ARGS__)
+#define sprintf(...)	pg_sprintf(__VA_ARGS__)
+#define vfprintf(...)	pg_vfprintf(__VA_ARGS__)
+#define fprintf(...)	pg_fprintf(__VA_ARGS__)
+#define printf(...)		pg_printf(__VA_ARGS__)
+#else
+#define vsnprintf		pg_vsnprintf
+#define snprintf		pg_snprintf
+#define sprintf			pg_sprintf
+#define vfprintf		pg_vfprintf
+#define fprintf			pg_fprintf
+#define printf			pg_printf
+#endif
 #endif   /* USE_REPL_SNPRINTF */
 
 #if defined(WIN32)
diff --git a/src/interfaces/ecpg/compatlib/Makefile b/src/interfaces/ecpg/compatlib/Makefile
index 97c67e9c17620f2567e0fd443ee3bd3a09d079ba..350ee3d7c84a3fc1343b606870daa411235947b1 100644
--- a/src/interfaces/ecpg/compatlib/Makefile
+++ b/src/interfaces/ecpg/compatlib/Makefile
@@ -45,7 +45,6 @@ submake-pgtypeslib:
 # Shared library stuff
 include $(top_srcdir)/src/Makefile.shlib
 
-# XXX This library uses no symbols from snprintf.c.
 snprintf.c: % : $(top_srcdir)/src/port/%
 	rm -f $@ && $(LN_S) $< .
 
diff --git a/src/interfaces/ecpg/ecpglib/.gitignore b/src/interfaces/ecpg/ecpglib/.gitignore
index 9d994c160d407d6664857733fa6cdaeb1000433d..351f43775e88f429366baa689272aa6144d3bae6 100644
--- a/src/interfaces/ecpg/ecpglib/.gitignore
+++ b/src/interfaces/ecpg/ecpglib/.gitignore
@@ -5,5 +5,4 @@
 /path.c
 /pgstrcasecmp.c
 /strlcpy.c
-/syswrap.c
 /thread.c
diff --git a/src/interfaces/ecpg/ecpglib/Makefile b/src/interfaces/ecpg/ecpglib/Makefile
index 51f4f5900c80fd5959136b3ff6714c3e342e160b..27d1c635f75c7dc549915309490719da00c3c6ab 100644
--- a/src/interfaces/ecpg/ecpglib/Makefile
+++ b/src/interfaces/ecpg/ecpglib/Makefile
@@ -25,7 +25,7 @@ override CFLAGS += $(PTHREAD_CFLAGS)
 LIBS := $(filter-out -lpgport, $(LIBS))
 
 OBJS= execute.o typename.o descriptor.o sqlda.o data.o error.o prepare.o memory.o \
-	connect.o misc.o path.o pgstrcasecmp.o syswrap.o \
+	connect.o misc.o path.o pgstrcasecmp.o \
 	$(filter snprintf.o strlcpy.o win32setlocale.o isinf.o, $(LIBOBJS))
 
 # thread.c is needed only for non-WIN32 implementation of path.c
@@ -57,7 +57,7 @@ include $(top_srcdir)/src/Makefile.shlib
 # necessarily use the same object files as the backend uses. Instead,
 # symlink the source files in here and build our own object file.
 
-path.c pgstrcasecmp.c snprintf.c strlcpy.c syswrap.c thread.c win32setlocale.c isinf.c: % : $(top_srcdir)/src/port/%
+path.c pgstrcasecmp.c snprintf.c strlcpy.c thread.c win32setlocale.c isinf.c: % : $(top_srcdir)/src/port/%
 	rm -f $@ && $(LN_S) $< .
 
 misc.o: misc.c $(top_builddir)/src/port/pg_config_paths.h
@@ -74,6 +74,6 @@ uninstall: uninstall-lib
 
 clean distclean: clean-lib
 	rm -f $(OBJS)
-	rm -f path.c pgstrcasecmp.c snprintf.c strlcpy.c syswrap.c thread.c win32setlocale.c
+	rm -f path.c pgstrcasecmp.c snprintf.c strlcpy.c thread.c win32setlocale.c
 
 maintainer-clean: distclean maintainer-clean-lib
diff --git a/src/interfaces/ecpg/pgtypeslib/.gitignore b/src/interfaces/ecpg/pgtypeslib/.gitignore
index 4f97502100e7d5c144128caf65d66fe9082908f4..4ee58ea957eed2d6b40c2b57ae2fca40f8509284 100644
--- a/src/interfaces/ecpg/pgtypeslib/.gitignore
+++ b/src/interfaces/ecpg/pgtypeslib/.gitignore
@@ -3,4 +3,3 @@
 /exports.list
 
 /pgstrcasecmp.c
-/syswrap.c
diff --git a/src/interfaces/ecpg/pgtypeslib/Makefile b/src/interfaces/ecpg/pgtypeslib/Makefile
index 3363ee9525527b24cfc363e392a2cdffc6380442..4158b2b666f951e7e5e824114640fec69a0de68c 100644
--- a/src/interfaces/ecpg/pgtypeslib/Makefile
+++ b/src/interfaces/ecpg/pgtypeslib/Makefile
@@ -29,7 +29,7 @@ SHLIB_LINK += -lm
 SHLIB_EXPORTS = exports.txt
 
 OBJS= numeric.o datetime.o common.o dt_common.o timestamp.o interval.o \
-	pgstrcasecmp.o syswrap.o \
+	pgstrcasecmp.o \
 	$(filter rint.o snprintf.o, $(LIBOBJS))
 
 all: all-lib
@@ -42,7 +42,7 @@ include $(top_srcdir)/src/Makefile.shlib
 # necessarily use the same object files as the backend uses. Instead,
 # symlink the source files in here and build our own object file.
 
-pgstrcasecmp.c rint.c snprintf.c syswrap.c: % : $(top_srcdir)/src/port/%
+pgstrcasecmp.c rint.c snprintf.c: % : $(top_srcdir)/src/port/%
 	rm -f $@ && $(LN_S) $< .
 
 install: all installdirs install-lib
@@ -52,6 +52,6 @@ installdirs: installdirs-lib
 uninstall: uninstall-lib
 
 clean distclean: clean-lib
-	rm -f $(OBJS) pgstrcasecmp.c rint.c snprintf.c syswrap.c
+	rm -f $(OBJS) pgstrcasecmp.c rint.c snprintf.c
 
 maintainer-clean: distclean maintainer-clean-lib
diff --git a/src/interfaces/libpq/.gitignore b/src/interfaces/libpq/.gitignore
index a514b908d0f8a4523f9b290d909f67912d1e7915..1784ce11af1ca99dbd442c3b410f9f3147195ae2 100644
--- a/src/interfaces/libpq/.gitignore
+++ b/src/interfaces/libpq/.gitignore
@@ -11,7 +11,6 @@
 /snprintf.c
 /strerror.c
 /strlcpy.c
-/syswrap.c
 /thread.c
 /win32error.c
 /win32setlocale.c
diff --git a/src/interfaces/libpq/Makefile b/src/interfaces/libpq/Makefile
index 2df4bc4f6343a49418877e1f21d048cbb57adb8c..0d2854946c93195262bdd12e0b5d95e818a60c10 100644
--- a/src/interfaces/libpq/Makefile
+++ b/src/interfaces/libpq/Makefile
@@ -35,7 +35,7 @@ OBJS=	fe-auth.o fe-connect.o fe-exec.o fe-misc.o fe-print.o fe-lobj.o \
 	fe-protocol2.o fe-protocol3.o pqexpbuffer.o pqsignal.o fe-secure.o \
 	libpq-events.o
 # libpgport C files we always use
-OBJS += chklocale.o inet_net_ntop.o noblock.o pgstrcasecmp.o syswrap.o thread.o
+OBJS += chklocale.o inet_net_ntop.o noblock.o pgstrcasecmp.o thread.o
 # libpgport C files that are needed if identified by configure
 OBJS += $(filter crypt.o getaddrinfo.o getpeereid.o inet_aton.o open.o snprintf.o strerror.o strlcpy.o win32error.o win32setlocale.o, $(LIBOBJS))
 # backend/libpq
@@ -88,7 +88,7 @@ backend_src = $(top_srcdir)/src/backend
 # For some libpgport modules, this only happens if configure decides
 # the module is needed (see filter hack in OBJS, above).
 
-chklocale.c crypt.c getaddrinfo.c getpeereid.c inet_aton.c inet_net_ntop.c noblock.c open.c pgsleep.c pgstrcasecmp.c snprintf.c strerror.c strlcpy.c syswrap.c thread.c win32error.c win32setlocale.c: % : $(top_srcdir)/src/port/%
+chklocale.c crypt.c getaddrinfo.c getpeereid.c inet_aton.c inet_net_ntop.c noblock.c open.c pgsleep.c pgstrcasecmp.c snprintf.c strerror.c strlcpy.c thread.c win32error.c win32setlocale.c: % : $(top_srcdir)/src/port/%
 	rm -f $@ && $(LN_S) $< .
 
 ip.c md5.c: % : $(backend_src)/libpq/%
@@ -149,7 +149,7 @@ clean distclean: clean-lib
 # Might be left over from a Win32 client-only build
 	rm -f pg_config_paths.h
 	rm -f inet_net_ntop.c noblock.c pgstrcasecmp.c thread.c
-	rm -f chklocale.c crypt.c getaddrinfo.c getpeereid.c inet_aton.c open.c snprintf.c strerror.c strlcpy.c syswrap.c win32error.c win32setlocale.c
+	rm -f chklocale.c crypt.c getaddrinfo.c getpeereid.c inet_aton.c open.c snprintf.c strerror.c strlcpy.c win32error.c win32setlocale.c
 	rm -f pgsleep.c
 	rm -f md5.c ip.c
 	rm -f encnames.c wchar.c
diff --git a/src/interfaces/libpq/bcc32.mak b/src/interfaces/libpq/bcc32.mak
index 25c04f36557e678dfe4e8e6d9033f01e22b561ae..fbef737ecda72e31e793ee6098adecbc18656299 100644
--- a/src/interfaces/libpq/bcc32.mak
+++ b/src/interfaces/libpq/bcc32.mak
@@ -106,7 +106,6 @@ CLEAN :
 	-@erase "$(INTDIR)\dirmod.obj"
 	-@erase "$(INTDIR)\pgsleep.obj"
 	-@erase "$(INTDIR)\open.obj"
-	-@erase "$(INTDIR)\syswrap.obj"
 	-@erase "$(INTDIR)\win32error.obj"
 	-@erase "$(OUTDIR)\$(OUTFILENAME).lib"
 	-@erase "$(OUTDIR)\$(OUTFILENAME)dll.lib"
@@ -150,7 +149,6 @@ LIB32_OBJS= \
 	"$(INTDIR)\dirmod.obj" \
 	"$(INTDIR)\pgsleep.obj" \
 	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\syswrap.obj" \
 	"$(INTDIR)\win32error.obj" \
 	"$(INTDIR)\pthread-win32.obj"
 
@@ -289,11 +287,6 @@ LINK32_FLAGS = -Gn -L$(BCB)\lib;$(INTDIR); -x -Tpd -v
 	$(CPP_PROJ) /I"." ..\..\port\open.c
 <<
 
-"$(INTDIR)\syswrap.obj" : ..\..\port\syswrap.c
-	$(CPP) @<<
-	$(CPP_PROJ) ..\..\port\syswrap.c
-<<
-
 "$(INTDIR)\win32error.obj" : ..\..\port\win32error.c
 	$(CPP) @<<
 	$(CPP_PROJ) /I"." ..\..\port\win32error.c
diff --git a/src/interfaces/libpq/win32.mak b/src/interfaces/libpq/win32.mak
index 9740f394ea69cbd72443fd9b22b94a2c4913ad0d..70a741a5f410e2d6b13b588401b358d8538322e7 100644
--- a/src/interfaces/libpq/win32.mak
+++ b/src/interfaces/libpq/win32.mak
@@ -113,7 +113,6 @@ CLEAN :
 	-@erase "$(INTDIR)\dirmod.obj"
 	-@erase "$(INTDIR)\pgsleep.obj"
 	-@erase "$(INTDIR)\open.obj"
-	-@erase "$(INTDIR)\syswrap.obj"
 	-@erase "$(INTDIR)\win32error.obj"
 	-@erase "$(INTDIR)\win32setlocale.obj"
 	-@erase "$(OUTDIR)\$(OUTFILENAME).lib"
@@ -160,7 +159,6 @@ LIB32_OBJS= \
 	"$(INTDIR)\dirmod.obj" \
 	"$(INTDIR)\pgsleep.obj" \
 	"$(INTDIR)\open.obj" \
-	"$(INTDIR)\syswrap.obj" \
 	"$(INTDIR)\win32error.obj" \
 	"$(INTDIR)\win32setlocale.obj" \
 	"$(INTDIR)\pthread-win32.obj"
@@ -329,11 +327,6 @@ LINK32_OBJS= \
 	$(CPP_PROJ) /I"." ..\..\port\open.c
 <<
 
-"$(INTDIR)\syswrap.obj" : ..\..\port\syswrap.c
-	$(CPP) @<<
-	$(CPP_PROJ) ..\..\port\syswrap.c
-<<
-
 "$(INTDIR)\win32error.obj" : ..\..\port\win32error.c
 	$(CPP) @<<
 	$(CPP_PROJ) /I"." ..\..\port\win32error.c
diff --git a/src/pl/plperl/plperl.h b/src/pl/plperl/plperl.h
index 2e80ca71c5d2feeaaf0930cc6762253db3258488..85e68263056327f89e0976f91124d068086157dc 100644
--- a/src/pl/plperl/plperl.h
+++ b/src/pl/plperl/plperl.h
@@ -39,8 +39,10 @@
  * So we undefine them here and redefine them after it's done its dirty deed.
  */
 
+#ifdef USE_REPL_SNPRINTF
 #undef snprintf
 #undef vsnprintf
+#endif
 
 
 /* required for perl API */
@@ -49,6 +51,7 @@
 #include "XSUB.h"
 
 /* put back our snprintf and vsnprintf */
+#ifdef USE_REPL_SNPRINTF
 #ifdef snprintf
 #undef snprintf
 #endif
@@ -56,12 +59,13 @@
 #undef vsnprintf
 #endif
 #ifdef __GNUC__
-#define vsnprintf(...)	vsnprintf_throw_on_fail(__VA_ARGS__)
-#define snprintf(...)	snprintf_throw_on_fail(__VA_ARGS__)
+#define vsnprintf(...)	pg_vsnprintf(__VA_ARGS__)
+#define snprintf(...)	pg_snprintf(__VA_ARGS__)
 #else
-#define vsnprintf		vsnprintf_throw_on_fail
-#define snprintf		snprintf_throw_on_fail
+#define vsnprintf		pg_vsnprintf
+#define snprintf		pg_snprintf
 #endif   /* __GNUC__ */
+#endif   /* USE_REPL_SNPRINTF */
 
 /* perl version and platform portability */
 #define NEED_eval_pv
diff --git a/src/pl/plpython/plpython.h b/src/pl/plpython/plpython.h
index c5df8f8baa2b453fdc94c3f157229664a52d0413..e788cd9a897f11bd0185250ff2ca51ea583b8c1a 100644
--- a/src/pl/plpython/plpython.h
+++ b/src/pl/plpython/plpython.h
@@ -35,8 +35,10 @@
  * So we undefine them here and redefine them after it's done its dirty deed.
  */
 
+#ifdef USE_REPL_SNPRINTF
 #undef snprintf
 #undef vsnprintf
+#endif
 
 #if defined(_MSC_VER) && defined(_DEBUG)
 /* Python uses #pragma to bring in a non-default libpython on VC++ if
@@ -122,6 +124,7 @@ typedef int Py_ssize_t;
 #include <eval.h>
 
 /* put back our snprintf and vsnprintf */
+#ifdef USE_REPL_SNPRINTF
 #ifdef snprintf
 #undef snprintf
 #endif
@@ -129,12 +132,13 @@ typedef int Py_ssize_t;
 #undef vsnprintf
 #endif
 #ifdef __GNUC__
-#define vsnprintf(...)	vsnprintf_throw_on_fail(__VA_ARGS__)
-#define snprintf(...)	snprintf_throw_on_fail(__VA_ARGS__)
+#define vsnprintf(...)	pg_vsnprintf(__VA_ARGS__)
+#define snprintf(...)	pg_snprintf(__VA_ARGS__)
 #else
-#define vsnprintf		vsnprintf_throw_on_fail
-#define snprintf		snprintf_throw_on_fail
+#define vsnprintf				pg_vsnprintf
+#define snprintf				pg_snprintf
 #endif   /* __GNUC__ */
+#endif   /* USE_REPL_SNPRINTF */
 
 /*
  * Used throughout, and also by the Python 2/3 porting layer, so it's easier to
diff --git a/src/port/Makefile b/src/port/Makefile
index 9703cf98dc554ac8c02da88a26ead7519ce57ad3..67677ae8937c5ccd28633b402c6ec7d8435c2a6e 100644
--- a/src/port/Makefile
+++ b/src/port/Makefile
@@ -32,7 +32,7 @@ LIBS += $(PTHREAD_LIBS)
 
 OBJS = $(LIBOBJS) chklocale.o dirmod.o erand48.o exec.o fls.o inet_net_ntop.o \
 	noblock.o path.o pgcheckdir.o pg_crc.o pgmkdirp.o pgsleep.o \
-	pgstrcasecmp.o qsort.o qsort_arg.o sprompt.o syswrap.o thread.o
+	pgstrcasecmp.o qsort.o qsort_arg.o sprompt.o thread.o
 
 # foo_srv.o and foo.o are both built from foo.c, but only foo.o has -DFRONTEND
 OBJS_SRV = $(OBJS:%.o=%_srv.o)
diff --git a/src/port/snprintf.c b/src/port/snprintf.c
index 9dfb57599eeaf1827b570429bd72b9d844c90eaa..ed48bcf44a85b8cb7c5a1faf1c4dd99b068592cf 100644
--- a/src/port/snprintf.c
+++ b/src/port/snprintf.c
@@ -99,7 +99,6 @@
 /* Prevent recursion */
 #undef	vsnprintf
 #undef	snprintf
-#undef	vsprintf
 #undef	sprintf
 #undef	vfprintf
 #undef	fprintf
@@ -176,7 +175,7 @@ pg_snprintf(char *str, size_t count, const char *fmt,...)
 	return len;
 }
 
-int
+static int
 pg_vsprintf(char *str, const char *fmt, va_list args)
 {
 	PrintfTarget target;
diff --git a/src/port/syswrap.c b/src/port/syswrap.c
deleted file mode 100644
index 8415a336303699eed799bf34ec44c18f0633a9be..0000000000000000000000000000000000000000
--- a/src/port/syswrap.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*-------------------------------------------------------------------------
- *
- * syswrap.c
- *	  error-throwing wrappers around POSIX functions that rarely fail
- *
- * Portions Copyright (c) 1996-2015, PostgreSQL Global Development Group
- *
- *
- * IDENTIFICATION
- *	  src/port/syswrap.c
- *
- *-------------------------------------------------------------------------
- */
-
-#ifndef FRONTEND
-#include "postgres.h"
-#else
-#include "postgres_fe.h"
-#endif
-
-/* Prevent recursion */
-#undef	vsnprintf
-#undef	snprintf
-#undef	vsprintf
-#undef	sprintf
-#undef	vfprintf
-#undef	fprintf
-#undef	printf
-
-/* When the libc primitives are lacking, use our own. */
-#ifdef USE_REPL_SNPRINTF
-#ifdef __GNUC__
-#define vsnprintf(...)	pg_vsnprintf(__VA_ARGS__)
-#define snprintf(...)	pg_snprintf(__VA_ARGS__)
-#define vsprintf(...)	pg_vsprintf(__VA_ARGS__)
-#define sprintf(...)	pg_sprintf(__VA_ARGS__)
-#define vfprintf(...)	pg_vfprintf(__VA_ARGS__)
-#define fprintf(...)	pg_fprintf(__VA_ARGS__)
-#define printf(...)		pg_printf(__VA_ARGS__)
-#else
-#define vsnprintf		pg_vsnprintf
-#define snprintf		pg_snprintf
-#define vsprintf		pg_vsprintf
-#define sprintf			pg_sprintf
-#define vfprintf		pg_vfprintf
-#define fprintf			pg_fprintf
-#define printf			pg_printf
-#endif
-#endif   /* USE_REPL_SNPRINTF */
-
-/*
- * We abort() in the frontend, rather than exit(), because libpq in particular
- * has no business calling exit().  These failures had better be rare.
- */
-#ifdef FRONTEND
-#define LIB_ERR(func) \
-do { \
-	int discard = fprintf(stderr, "%s failed: %s\n", func, strerror(errno)); \
-	(void) discard; \
-	abort(); \
-} while (0)
-#else
-#define LIB_ERR(func) elog(ERROR, "%s failed: %m", func)
-#endif
-
-int
-vsnprintf_throw_on_fail(char *str, size_t count, const char *fmt, va_list args)
-{
-	int			save_errno;
-	int			ret;
-
-	/*
-	 * On HP-UX B.11.31, a call that truncates output returns -1 without
-	 * setting errno.  (SUSv2 allowed this until the approval of Base Working
-	 * Group Resolution BWG98-006.)  We could avoid the save and restore of
-	 * errno on most platforms.
-	 */
-	save_errno = errno;
-	errno = 0;
-	ret = vsnprintf(str, count, fmt, args);
-	if (ret < 0 && errno != 0)
-		LIB_ERR("vsnprintf");
-	errno = save_errno;
-	return ret;
-}
-
-int
-snprintf_throw_on_fail(char *str, size_t count, const char *fmt,...)
-{
-	int			ret;
-	va_list		args;
-
-	va_start(args, fmt);
-	ret = vsnprintf_throw_on_fail(str, count, fmt, args);
-	va_end(args);
-	return ret;
-}
-
-int
-vsprintf_throw_on_fail(char *str, const char *fmt, va_list args)
-{
-	int			ret;
-
-	ret = vsprintf(str, fmt, args);
-	if (ret < 0)
-		LIB_ERR("vsprintf");
-	return ret;
-}
-
-int
-sprintf_throw_on_fail(char *str, const char *fmt,...)
-{
-	int			ret;
-	va_list		args;
-
-	va_start(args, fmt);
-	ret = vsprintf_throw_on_fail(str, fmt, args);
-	va_end(args);
-	return ret;
-}
-
-int
-vfprintf_throw_on_fail(FILE *stream, const char *fmt, va_list args)
-{
-	int			ret;
-
-	ret = vfprintf(stream, fmt, args);
-	if (ret < 0)
-		LIB_ERR("vfprintf");
-	return ret;
-}
-
-int
-fprintf_throw_on_fail(FILE *stream, const char *fmt,...)
-{
-	int			ret;
-	va_list		args;
-
-	va_start(args, fmt);
-	ret = vfprintf_throw_on_fail(stream, fmt, args);
-	va_end(args);
-	return ret;
-}
-
-int
-printf_throw_on_fail(const char *fmt,...)
-{
-	int			ret;
-	va_list		args;
-
-	va_start(args, fmt);
-	ret = vfprintf_throw_on_fail(stdout, fmt, args);
-	va_end(args);
-	return ret;
-}
diff --git a/src/tools/msvc/Mkvcbuild.pm b/src/tools/msvc/Mkvcbuild.pm
index bdfc90164759e78765bb08d117e7204c785a6cbb..2fafec240ccc218689938da8c23d47ab2cfdf7ea 100644
--- a/src/tools/msvc/Mkvcbuild.pm
+++ b/src/tools/msvc/Mkvcbuild.pm
@@ -60,7 +60,7 @@ sub mkvcbuild
 	  srandom.c getaddrinfo.c gettimeofday.c inet_net_ntop.c kill.c open.c
 	  erand48.c snprintf.c strlcat.c strlcpy.c dirmod.c exec.c noblock.c path.c
 	  pgcheckdir.c pg_crc.c pgmkdirp.c pgsleep.c pgstrcasecmp.c qsort.c qsort_arg.c
-	  sprompt.c syswrap.c thread.c getopt.c getopt_long.c dirent.c rint.c win32env.c
+	  sprompt.c thread.c getopt.c getopt_long.c dirent.c rint.c win32env.c
 	  win32error.c win32setlocale.c mkdtemp.c);
 
 	$libpgport = $solution->AddProject('libpgport', 'lib', 'misc');