diff --git a/src/auto/configure b/src/auto/configure
index 8dfecaf..967a568 100755
--- a/src/auto/configure
+++ b/src/auto/configure
@@ -10064,7 +10064,7 @@
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
 
-for ac_header in stdarg.h stdint.h stdlib.h string.h \
+for ac_header in stdint.h stdlib.h string.h \
 	sys/select.h sys/utsname.h termcap.h fcntl.h \
 	sgtty.h sys/ioctl.h sys/time.h sys/types.h \
 	termio.h iconv.h inttypes.h langinfo.h math.h \
diff --git a/src/eval.c b/src/eval.c
index fc512ab..90fa53a 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -15217,13 +15217,11 @@
     rettv->vval.v_number = lnum;
 }
 
-#ifdef HAVE_STDARG_H
 /* This dummy va_list is here because:
  * - passing a NULL pointer doesn't work when va_list isn't a pointer
  * - locally in the function results in a "used before set" warning
  * - using va_start() to initialize it gives "function with fixed args" error */
 static va_list	ap;
-#endif
 
 /*
  * "printf()" function
@@ -15231,32 +15229,29 @@
     static void
 f_printf(typval_T *argvars, typval_T *rettv)
 {
+    char_u	buf[NUMBUFLEN];
+    int		len;
+    char_u	*s;
+    int		saved_did_emsg = did_emsg;
+    char	*fmt;
+
     rettv->v_type = VAR_STRING;
     rettv->vval.v_string = NULL;
-#ifdef HAVE_STDARG_H	    /* only very old compilers can't do this */
-    {
-	char_u	buf[NUMBUFLEN];
-	int	len;
-	char_u	*s;
-	int	saved_did_emsg = did_emsg;
-	char	*fmt;
 
-	/* Get the required length, allocate the buffer and do it for real. */
-	did_emsg = FALSE;
-	fmt = (char *)get_tv_string_buf(&argvars[0], buf);
-	len = vim_vsnprintf(NULL, 0, fmt, ap, argvars + 1);
-	if (!did_emsg)
+    /* Get the required length, allocate the buffer and do it for real. */
+    did_emsg = FALSE;
+    fmt = (char *)get_tv_string_buf(&argvars[0], buf);
+    len = vim_vsnprintf(NULL, 0, fmt, ap, argvars + 1);
+    if (!did_emsg)
+    {
+	s = alloc(len + 1);
+	if (s != NULL)
 	{
-	    s = alloc(len + 1);
-	    if (s != NULL)
-	    {
-		rettv->vval.v_string = s;
-		(void)vim_vsnprintf((char *)s, len + 1, fmt, ap, argvars + 1);
-	    }
+	    rettv->vval.v_string = s;
+	    (void)vim_vsnprintf((char *)s, len + 1, fmt, ap, argvars + 1);
 	}
-	did_emsg |= saved_did_emsg;
     }
-#endif
+    did_emsg |= saved_did_emsg;
 }
 
 /*
diff --git a/src/misc2.c b/src/misc2.c
index 03cb4b1..05f779f 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -6023,11 +6023,7 @@
 {
     if (emsg_not_now())
 	return TRUE;		/* no error messages at the moment */
-#ifdef HAVE_STDARG_H
     vim_snprintf((char *)IObuff, IOSIZE, (char *)s, a1, a2);
-#else
-    vim_snprintf((char *)IObuff, IOSIZE, (char *)s, (long_u)a1, (long_u)a2);
-#endif
     return emsg(IObuff);
 }
 
diff --git a/src/os_amiga.h b/src/os_amiga.h
index bcdba32..c179b6f 100644
--- a/src/os_amiga.h
+++ b/src/os_amiga.h
@@ -20,9 +20,6 @@
 # if defined(AZTEC_C) || defined(__amigaos4__)
 #  define HAVE_STAT_H
 # endif
-# ifdef __amigaos4__
-#  define HAVE_STDARG_H
-# endif
 # define HAVE_STDLIB_H
 # define HAVE_STRING_H
 # define HAVE_FCNTL_H
diff --git a/src/os_msdos.h b/src/os_msdos.h
index 735410f..245f478 100644
--- a/src/os_msdos.h
+++ b/src/os_msdos.h
@@ -21,7 +21,6 @@
 # define USE_LONG_FNAME _USE_LFN    /* decide at run time */
 # define USE_FNAME_CASE
 # define HAVE_PUTENV
-# define HAVE_STDARG_H
 #else
 # define SHORT_FNAME		/* always 8.3 file name */
 #endif
diff --git a/src/os_vms_conf.h b/src/os_vms_conf.h
index 41728ef..6da074b 100644
--- a/src/os_vms_conf.h
+++ b/src/os_vms_conf.h
@@ -109,7 +109,6 @@
 #define HAVE_FSYNC
 #define HAVE_GETPWUID
 #define HAVE_GETPWNAM
-#define HAVE_STDARG_H
 #define	HAVE_STDLIB_H
 #define	HAVE_STRING_H
 #define	HAVE_ERRNO_H
diff --git a/src/os_win32.h b/src/os_win32.h
index a6ac891..129117a 100644
--- a/src/os_win32.h
+++ b/src/os_win32.h
@@ -49,9 +49,6 @@
 #ifndef HAVE_FCNTL_H
 # define HAVE_FCNTL_H
 #endif
-#ifndef HAVE_STDARG_H
-# define HAVE_STDARG_H
-#endif
 #define HAVE_QSORT
 #define HAVE_ST_MODE		/* have stat.st_mode */
 
diff --git a/src/proto.h b/src/proto.h
index 63e1249..1f68b21 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -104,9 +104,7 @@
 #  include "menu.pro"
 # endif
 
-# if !defined MESSAGE_FILE || defined(HAVE_STDARG_H)
-    /* These prototypes cannot be produced automatically and conflict with
-     * the old-style prototypes in message.c. */
+/* These prototypes cannot be produced automatically. */
 int
 #  ifdef __BORLANDC__
 _RTLENTRYF
@@ -131,10 +129,7 @@
 #  endif
 vim_snprintf(char *, size_t, char *, ...);
 
-#  if defined(HAVE_STDARG_H)
 int vim_vsnprintf(char *str, size_t str_m, char *fmt, va_list ap, typval_T *tvs);
-#  endif
-# endif
 
 # include "message.pro"
 # include "misc1.pro"
diff --git a/src/version.c b/src/version.c
index 5c21b6a..6207575 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1216,
+/**/
     1215,
 /**/
     1214,
diff --git a/src/vim.h b/src/vim.h
index 1cab32d..18610f5 100644
--- a/src/vim.h
+++ b/src/vim.h
@@ -508,9 +508,7 @@
 #ifdef HAVE_WCTYPE_H
 # include <wctype.h>
 #endif
-#ifdef HAVE_STDARG_H
-# include <stdarg.h>
-#endif
+#include <stdarg.h>
 
 #if defined(HAVE_SYS_SELECT_H) && \
 	(!defined(HAVE_SYS_TIME_H) || defined(SYS_SELECT_WITH_SYS_TIME))
