From 939d836be60dc2a0c52c8b4a9eb871d77846e8d7 Mon Sep 17 00:00:00 2001
From: Martin Nilsson <nilsson@opera.com>
Date: Wed, 3 Sep 2014 23:15:47 +0200
Subject: [PATCH] vsnprintf is C89

---
 src/configure.in |  1 -
 src/port.c       | 76 ++----------------------------------------------
 src/port.h       |  7 ++---
 3 files changed, 4 insertions(+), 80 deletions(-)

diff --git a/src/configure.in b/src/configure.in
index 4bfd0f47a5..24a12286f0 100644
--- a/src/configure.in
+++ b/src/configure.in
@@ -4557,7 +4557,6 @@ AC_CHECK_FUNCS( \
  strerror \
  times \
  tzset \
- vsprintf \
  _snprintf \
  snprintf \
  vsnprintf \
diff --git a/src/port.c b/src/port.c
index 16308899fd..02cd4129ba 100644
--- a/src/port.c
+++ b/src/port.c
@@ -262,78 +262,6 @@ PMOD_EXPORT int STRCASECMP(const char *a,const char *b)
 }
 #endif
 
-#ifndef HAVE_VSPRINTF
-PMOD_EXPORT int VSPRINTF(char *buf,const char *fmt,va_list args)
-{
-  char *b=buf;
-  char *s;
-
-  int tmpA;
-  char fmt2[120];
-  char *fmt2p;
-
-  fmt2[0]='%';
-  for(;(s=strchr(fmt,'%'));fmt=s)
-  {
-    memcpy(buf,fmt,s-fmt);
-    buf+=s-fmt;
-    fmt=s;
-    fmt2p=fmt2+1;
-    s++;
-  unknown_character:
-    switch((*(fmt2p++)=*(s++)))
-    {
-    default:
-      goto unknown_character;
-
-    case '*':
-      fmt2p--;
-      sprintf(fmt2p,"%d",va_arg(args,int));
-      fmt2p+=strlen(fmt2p);
-      goto unknown_character;
-
-    case 0:
-      Pike_fatal("Error in vsprintf format.\n");
-      return 0;
-
-    case '%':
-      *(buf++)='%';
-      break;
-
-    case 'p':
-    case 's':
-      *fmt2p=0;
-      sprintf(buf,fmt2,va_arg(args,char *));
-      buf+=strlen(buf);
-      break;
-
-    case 'd':
-    case 'c':
-    case 'x':
-    case 'X':
-      *fmt2p=0;
-      sprintf(buf,fmt2,va_arg(args,int));
-      buf+=strlen(buf);
-      break;
-
-    case 'f':
-    case 'e':
-    case 'E':
-    case 'g':
-      *fmt2p=0;
-      sprintf(buf,fmt2,va_arg(args,double));
-      buf+=strlen(buf);
-      break;
-    }
-  }
-  tmpA=strlen(fmt);
-  memcpy(buf,fmt,tmpA);
-  buf+=tmpA;
-  *buf=0;
-  return buf-b;
-}
-#endif
-
 #ifndef HAVE_VSNPRINTF
 /* Warning: It's possible to trick this with something like
  * snprintf("...%c...", 0). */
@@ -344,8 +272,8 @@ PMOD_EXPORT int VSNPRINTF(char *buf, size_t size, const char *fmt, va_list args)
     buf = alloca(size=1000);
   }
   buf[size - 1] = 0;
-  res = VSPRINTF (buf, fmt, args);
-  if (buf[size - 1]) Pike_fatal ("Buffer overflow in VSPRINTF.\n");
+  res = vsprintf (buf, fmt, args);
+  if (buf[size - 1]) Pike_fatal ("Buffer overflow in vsprintf.\n");
   return res;
 }
 #endif
diff --git a/src/port.h b/src/port.h
index 3f286a4f68..1029e03e4a 100644
--- a/src/port.h
+++ b/src/port.h
@@ -194,11 +194,8 @@ char *strchr(const char *s,int c);
 #define HAVE_VFPRINTF 1
 #define VFPRINTF vfprintf
 
-#ifndef HAVE_VSPRINTF
-PMOD_EXPORT int VSPRINTF(char *buf,const char *fmt,va_list args);
-#else
-#  define VSPRINTF vsprintf
-#endif
+#define HAVE_VSPRINTF 1
+#define VSPRINTF vsprintf
 
 #ifndef HAVE_VSNPRINTF
 PMOD_EXPORT int VSNPRINTF(char *buf, size_t size, const char *fmt, va_list args);
-- 
GitLab