summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNoah Misch2015-05-18 14:02:31 +0000
committerNoah Misch2015-05-18 14:02:38 +0000
commitb544dcdad219cbd14837b149f63e3703952c992f (patch)
treefe66f9589df05231dfcb50179580016f4434b3df
parent6675ab595ade396c43ff6c0ee7c99ccb5f0bc6f4 (diff)
Permit use of vsprintf() in PostgreSQL code.
The next commit needs it. Back-patch to 9.0 (all supported versions).
-rw-r--r--src/include/port.h6
-rw-r--r--src/port/snprintf.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/src/include/port.h b/src/include/port.h
index 1540771db9a..80c3230e446 100644
--- a/src/include/port.h
+++ b/src/include/port.h
@@ -168,6 +168,9 @@ extern unsigned char pg_ascii_tolower(unsigned char ch);
#ifdef snprintf
#undef snprintf
#endif
+#ifdef vsprintf
+#undef vsprintf
+#endif
#ifdef sprintf
#undef sprintf
#endif
@@ -186,6 +189,7 @@ extern int
pg_snprintf(char *str, size_t count, const char *fmt,...)
/* This extension allows gcc to check the format string */
__attribute__((format(PG_PRINTF_ATTRIBUTE, 3, 4)));
+extern int pg_vsprintf(char *str, const char *fmt, va_list args);
extern int
pg_sprintf(char *str, const char *fmt,...)
/* This extension allows gcc to check the format string */
@@ -208,6 +212,7 @@ __attribute__((format(PG_PRINTF_ATTRIBUTE, 1, 2)));
#ifdef __GNUC__
#define vsnprintf(...) pg_vsnprintf(__VA_ARGS__)
#define snprintf(...) pg_snprintf(__VA_ARGS__)
+#define vsprintf(...) pg_vsprintf(__VA_ARGS__)
#define sprintf(...) pg_sprintf(__VA_ARGS__)
#define vfprintf(...) pg_vfprintf(__VA_ARGS__)
#define fprintf(...) pg_fprintf(__VA_ARGS__)
@@ -215,6 +220,7 @@ __attribute__((format(PG_PRINTF_ATTRIBUTE, 1, 2)));
#else
#define vsnprintf pg_vsnprintf
#define snprintf pg_snprintf
+#define vsprintf pg_vsprintf
#define sprintf pg_sprintf
#define vfprintf pg_vfprintf
#define fprintf pg_fprintf
diff --git a/src/port/snprintf.c b/src/port/snprintf.c
index c10a82a2884..e53356ff383 100644
--- a/src/port/snprintf.c
+++ b/src/port/snprintf.c
@@ -99,6 +99,7 @@
/* Prevent recursion */
#undef vsnprintf
#undef snprintf
+#undef vsprintf
#undef sprintf
#undef vfprintf
#undef fprintf
@@ -178,7 +179,7 @@ pg_snprintf(char *str, size_t count, const char *fmt,...)
return len;
}
-static int
+int
pg_vsprintf(char *str, const char *fmt, va_list args)
{
PrintfTarget target;