summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Adler <madler@alumni.caltech.edu>2013-03-22 18:32:37 -0700
committerMark Adler <madler@alumni.caltech.edu>2013-03-22 18:32:37 -0700
commitb06dee43696b5057ee8e1b9700655ad9e7d89669 (patch)
tree2c2faf2573f390a54dce9cdbda5e5e9747af087f
parentdd5d0940e93f2196a7791b1bf052d68309a7d45f (diff)
downloadzlib-b06dee43696b5057ee8e1b9700655ad9e7d89669.tar.gz
Add gzvprintf() as an undocumented function in zlib.
The function is only available if stdarg.h is available.
-rw-r--r--gzwrite.c19
-rw-r--r--zconf.h6
-rw-r--r--zconf.h.cmakein6
-rw-r--r--zconf.h.in6
-rw-r--r--zlib.h6
5 files changed, 36 insertions, 7 deletions
diff --git a/gzwrite.c b/gzwrite.c
index 1b06cdd..039225b 100644
--- a/gzwrite.c
+++ b/gzwrite.c
@@ -307,12 +307,11 @@ int ZEXPORT gzputs(file, str)
#include <stdarg.h>
/* -- see zlib.h -- */
-int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
+int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
{
int size, len;
gz_statep state;
z_streamp strm;
- va_list va;
/* get internal structure */
if (file == NULL)
@@ -342,25 +341,20 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
/* do the printf() into the input buffer, put length in len */
size = (int)(state->size);
state->in[size - 1] = 0;
- va_start(va, format);
#ifdef NO_vsnprintf
# ifdef HAS_vsprintf_void
(void)vsprintf((char *)(state->in), format, va);
- va_end(va);
for (len = 0; len < size; len++)
if (state->in[len] == 0) break;
# else
len = vsprintf((char *)(state->in), format, va);
- va_end(va);
# endif
#else
# ifdef HAS_vsnprintf_void
(void)vsnprintf((char *)(state->in), size, format, va);
- va_end(va);
len = strlen((char *)(state->in));
# else
len = vsnprintf((char *)(state->in), size, format, va);
- va_end(va);
# endif
#endif
@@ -375,6 +369,17 @@ int ZEXPORTVA gzprintf (gzFile file, const char *format, ...)
return len;
}
+int ZEXPORTVA gzprintf(gzFile file, const char *format, ...)
+{
+ va_list va;
+ int ret;
+
+ va_start(va, format);
+ ret = gzvprintf(file, format, va);
+ va_end(va);
+ return ret;
+}
+
#else /* !STDC && !Z_HAVE_STDARG_H */
/* -- see zlib.h -- */
diff --git a/zconf.h b/zconf.h
index 76aba96..95c9ef6 100644
--- a/zconf.h
+++ b/zconf.h
@@ -427,6 +427,12 @@ typedef uLong FAR uLongf;
# endif
#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+# ifndef Z_SOLO
+# include <stdarg.h> /* for va_list */
+# endif
+#endif
+
#ifdef _WIN32
# ifndef Z_SOLO
# include <stddef.h> /* for wchar_t */
diff --git a/zconf.h.cmakein b/zconf.h.cmakein
index 8f1956c..028be15 100644
--- a/zconf.h.cmakein
+++ b/zconf.h.cmakein
@@ -429,6 +429,12 @@ typedef uLong FAR uLongf;
# endif
#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+# ifndef Z_SOLO
+# include <stdarg.h> /* for va_list */
+# endif
+#endif
+
#ifdef _WIN32
# ifndef Z_SOLO
# include <stddef.h> /* for wchar_t */
diff --git a/zconf.h.in b/zconf.h.in
index 76aba96..95c9ef6 100644
--- a/zconf.h.in
+++ b/zconf.h.in
@@ -427,6 +427,12 @@ typedef uLong FAR uLongf;
# endif
#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+# ifndef Z_SOLO
+# include <stdarg.h> /* for va_list */
+# endif
+#endif
+
#ifdef _WIN32
# ifndef Z_SOLO
# include <stddef.h> /* for wchar_t */
diff --git a/zlib.h b/zlib.h
index ee38237..e3f11eb 100644
--- a/zlib.h
+++ b/zlib.h
@@ -1753,6 +1753,12 @@ ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
const char *mode));
#endif
+#if defined(STDC) || defined(Z_HAVE_STDARG_H)
+# ifndef Z_SOLO
+ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, const char *format,
+ va_list va));
+# endif
+#endif
#ifdef __cplusplus
}