From 6a1ed052f6434d1c7f3e2bc2956fc59a08b05de9 Mon Sep 17 00:00:00 2001
From: Martin Nilsson <nilsson@opera.com>
Date: Wed, 3 Sep 2014 15:55:01 +0200
Subject: [PATCH] Building without vfprintf has not worked since 2003.

---
 src/configure.in            |  2 +-
 src/error.c                 |  6 +++---
 src/gc.c                    |  4 ++--
 src/multiset.c              |  4 ++--
 src/port.c                  |  9 ---------
 src/port.h                  | 15 +++++++--------
 src/rbtree.c                |  4 ++--
 src/test_dynamic_loading.in |  2 +-
 8 files changed, 18 insertions(+), 28 deletions(-)

diff --git a/src/configure.in b/src/configure.in
index 6f9b7bf6a6..0c58030433 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 9f4925d538..c939993f91 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 aeb9a5128d..7e6f2bf8ce 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 6cd15d3d93..46b97c9607 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 9a0a3c14cd..8374d8419f 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 6a87a77ee4..cf8b5875e2 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 dba3306597..7d09b128c3 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 1a89199c6e..cf4a728119 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();
 }
-- 
GitLab