diff --git a/src/configure.in b/src/configure.in
index 6f9b7bf6a6f06b69bd4f634fb86e40a65782d9b9..0c580304333ccd9f81ef81a271cf5674f5aba1cc 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -4587,7 +4587,6 @@ AC_CHECK_FUNCS( \
  time \
  times \
  tzset \
- vfprintf \
  vsprintf \
  _snprintf \
  snprintf \
@@ -4644,6 +4643,7 @@ AC_CHECK_FUNCS( \
  thread_info \
  host_get_clock_service \
  posix_memalign \
+ _dosmaperr \
 )
 
 # SunOS 4 realloc() returns NULL when reallocing NULL.
diff --git a/src/error.c b/src/error.c
index 9f4925d538ee1b62b7f86c197e85fe6980b2f7b7..c939993f9133e09cf6df6f3c75ff217962e81abb 100644
--- a/src/error.c
+++ b/src/error.c
@@ -480,7 +480,7 @@ PMOD_EXPORT DECLSPEC(noreturn) void debug_va_fatal(const char *fmt, va_list args
   /* Prevent double fatal. */
   if (in_fatal)
   {
-    if (fmt) (void)VFPRINTF(stderr, fmt, args);
+    if (fmt) (void)vfprintf(stderr, fmt, args);
     do_abort();
   }
 
@@ -491,7 +491,7 @@ PMOD_EXPORT DECLSPEC(noreturn) void debug_va_fatal(const char *fmt, va_list args
     if (fmt) {
       va_list a;
       va_copy (a, args);
-      (void)VFPRINTF(stderr, fmt, a);
+      (void)vfprintf(stderr, fmt, a);
       va_end (a);
     }
 #endif
@@ -499,7 +499,7 @@ PMOD_EXPORT DECLSPEC(noreturn) void debug_va_fatal(const char *fmt, va_list args
   }
 #endif
 
-  if (fmt) (void)VFPRINTF(stderr, fmt, args);
+  if (fmt) (void)vfprintf(stderr, fmt, args);
 
   if(Pike_in_gc)
     fprintf(stderr,"Pike was in GC stage %d when this fatal occurred.\n",Pike_in_gc);
diff --git a/src/gc.c b/src/gc.c
index aeb9a5128d814b9eae3c5d58e4d67268da75e8c8..7e6f2bf8ce0db2f0acbd0b3d6627d9e5c9e1ccc3 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -1027,7 +1027,7 @@ static void debug_gc_fatal_va (void *DEBUGUSED(a), int DEBUGUSED(type), int DEBU
 {
   int orig_gc_pass = Pike_in_gc;
 
-  (void) VFPRINTF(stderr, fmt, args);
+  (void) vfprintf(stderr, fmt, args);
 
 #ifdef PIKE_DEBUG
   if (a) {
@@ -1092,7 +1092,7 @@ static void rec_stack_fatal (struct gc_rec_frame *DEBUGUSED(err),
   va_list args;
   va_start (args, fmt);
   fprintf (stderr, msg_fatal_error, file, line);
-  (void) VFPRINTF (stderr, fmt, args);
+  (void) vfprintf (stderr, fmt, args);
 #if defined (PIKE_DEBUG) || defined (GC_CYCLE_DEBUG)
   fputs ("Recursion stack:\n", stderr);
   describe_rec_stack (err, err_name, p1, p1n, p2, p2n);
diff --git a/src/multiset.c b/src/multiset.c
index 6cd15d3d939084c4fc92e4732d7abe721b41ff48..46b97c9607e5cd1599dd06460d4695cefbd62d12 100644
--- a/src/multiset.c
+++ b/src/multiset.c
@@ -4457,7 +4457,7 @@ static void debug_multiset_fatal (struct multiset *l, const char *fmt, ...)
   struct multiset_data *msd = l->msd;
   va_list args;
   va_start (args, fmt);
-  (void) VFPRINTF (stderr, fmt, args);
+  (void) vfprintf (stderr, fmt, args);
   fprintf (stderr, "Dumping multiset @ %p: ", l);
   debug_dump_multiset (l);
   debug_fatal ("\r");
@@ -4539,7 +4539,7 @@ static void debug_merge_fatal (struct multiset *a, struct multiset *b,
 {
   va_list args;
   va_start (args, fmt);
-  (void) VFPRINTF (stderr, fmt, args);
+  (void) vfprintf (stderr, fmt, args);
   fputs ("Dumping a: ", stderr);
   debug_dump_multiset (a);
   fputs ("Dumping b: ", stderr);
diff --git a/src/port.c b/src/port.c
index 9a0a3c14cd98459716f12f7f29e72366e25ffbb5..8374d8419f23373c340f38c467d28b09cad2455c 100644
--- a/src/port.c
+++ b/src/port.c
@@ -700,15 +700,6 @@ PMOD_EXPORT int SNPRINTF(char *buf, size_t size, const char *fmt, ...)
 }
 #endif
 
-#ifndef HAVE_VFPRINTF
-PMOD_EXPORT int VFPRINTF(FILE *f,const char *s,va_list args)
-{
-  char buffer[10000];
-  int i=VSNPRINTF(buffer,sizeof(buffer),s,args);
-  return fwrite(buffer,i,1,f);
-}
-#endif
-
 #if defined(PIKE_DEBUG) && !defined(HANDLES_UNALIGNED_MEMORY_ACCESS)
 
 PMOD_EXPORT unsigned INT16 EXTRACT_UWORD_(unsigned char *p)
diff --git a/src/port.h b/src/port.h
index 6a87a77ee4ebd6ce584990fc3dda5e0ad26de996..cf8b5875e28c9a173ab80d074ed3afb4e4a19518 100644
--- a/src/port.h
+++ b/src/port.h
@@ -95,10 +95,9 @@
 /* Now for some functions */
 #define Emulate_GetLongPathName GetLongPathNameA
 
-
-
 #endif /* __MINGW32__ */
 
+
 #ifndef STRUCT_TIMEVAL_DECLARED
 #define STRUCT_TIMEVAL_DECLARED
 struct timeval;
@@ -186,6 +185,7 @@ PMOD_EXPORT size_t STRNLEN(const char *a,size_t len);
 #  define STRNLEN strnlen
 #endif
 
+#define HAVE_STRNCMP 1
 #define STRNCMP strncmp
 
 #ifndef HAVE_MEMSET
@@ -237,11 +237,8 @@ char *STRCHR(char *s,int c);
 #  endif
 #endif
 
-#ifndef HAVE_VFPRINTF
-PMOD_EXPORT int VFPRINTF(FILE *f,const char *s,va_list args);
-#else
-#  define VFPRINTF vfprintf
-#endif
+#define HAVE_VFPRINTF 1
+#define VFPRINTF vfprintf
 
 #ifndef HAVE_VSPRINTF
 PMOD_EXPORT int VSPRINTF(char *buf,const char *fmt,va_list args);
@@ -421,15 +418,17 @@ long long gethrtime(void);
 double FREXP(double x, int *exp);
 #endif
 
-#if HAVE_LDEXP
+#ifdef HAVE_LDEXP
 #define LDEXP ldexp
 #else
 double LDEXP(double x, int exp);
 #endif
 
 #ifdef __MINGW32__
+#ifndef HAVE__DOSMAPERR
 void _dosmaperr(int x);
 #endif
+#endif
 
 #ifdef __clang__
 #define PIKE_CLANG_FEATURE(x)   __has_feature(x)
diff --git a/src/rbtree.c b/src/rbtree.c
index dba33065971bb311b63fa9a877cbe40ff1705495..7d09b128c35d3724a305ea01111b928834b080b8 100644
--- a/src/rbtree.c
+++ b/src/rbtree.c
@@ -1788,7 +1788,7 @@ static void debug_rb_fatal (struct rb_node_hdr *tree, const char *fmt, ...)
 {
   va_list args;
   va_start (args, fmt);
-  (void) VFPRINTF (stderr, fmt, args);
+  (void) vfprintf (stderr, fmt, args);
   fputs ("Dumping tree:\n", stderr);
   debug_dump_rb_tree (tree, NULL, NULL);
   debug_fatal ("\r");
@@ -1799,7 +1799,7 @@ static void debug_custom_rb_fatal (struct rb_node_hdr *tree, dump_data_fn *dump_
 {
   va_list args;
   va_start (args, fmt);
-  (void) VFPRINTF (stderr, fmt, args);
+  (void) vfprintf (stderr, fmt, args);
   fputs ("Dumping tree:\n", stderr);
   debug_dump_rb_tree (tree, dump_data, extra);
   debug_fatal ("\r");
diff --git a/src/test_dynamic_loading.in b/src/test_dynamic_loading.in
index 1a89199c6e0050d96435b758a436762ce2cae4ab..cf4a728119ace358aa7c5a8341ae7deb4ca9aafb 100644
--- a/src/test_dynamic_loading.in
+++ b/src/test_dynamic_loading.in
@@ -165,7 +165,7 @@ DECLSPEC(noreturn) void debug_fatal(const char *fmt, ...) ATTRIBUTE((noreturn,fo
 {
   va_list args;
   va_start(args,fmt);
-  (void)VFPRINTF(stderr, fmt, args);
+  (void)vfprintf(stderr, fmt, args);
   fflush(stderr);
   abort();
 }