From 47ea7148e3c11deee92e6eda336ca483bd6a858c Mon Sep 17 00:00:00 2001 From: Bruce Momjian <bruce@momjian.us> Date: Wed, 2 Mar 2005 03:21:52 +0000 Subject: [PATCH] Fix snprintf on Win32: * If vsnprintf() is not before snprintf() in this file, snprintf() * will call the system vsnprintf() on MinGW. --- src/port/snprintf.c | 49 ++++++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 23 deletions(-) diff --git a/src/port/snprintf.c b/src/port/snprintf.c index d945304b26a..f52e1f4fe1d 100644 --- a/src/port/snprintf.c +++ b/src/port/snprintf.c @@ -66,28 +66,27 @@ * causing nasty effects. **************************************************************/ -/*static char _id[] = "$PostgreSQL: pgsql/src/port/snprintf.c,v 1.10 2005/03/02 00:02:13 momjian Exp $";*/ +/*static char _id[] = "$PostgreSQL: pgsql/src/port/snprintf.c,v 1.11 2005/03/02 03:21:52 momjian Exp $";*/ int snprintf(char *str, size_t count, const char *fmt,...); int vsnprintf(char *str, size_t count, const char *fmt, va_list args); int printf(const char *format, ...); static void dopr(char *buffer, const char *format, va_list args, char *end); +/* + * If vsnprintf() is not before snprintf() in this file, snprintf() + * will call the system vsnprintf() on MinGW. + */ int -printf(const char *fmt,...) +vsnprintf(char *str, size_t count, const char *fmt, va_list args) { - int len; - va_list args; - char* buffer[4096]; - char* p; - - va_start(args, fmt); - len = vsnprintf((char*)buffer, (size_t)4096, fmt, args); - va_end(args); - p = (char*)buffer; - for(;*p;p++) - putchar(*p); - return len; + char *end; + str[0] = '\0'; + end = str + count - 1; + dopr(str, fmt, args, end); + if (count > 0) + end[0] = '\0'; + return strlen(str); } int @@ -102,17 +101,21 @@ snprintf(char *str, size_t count, const char *fmt,...) return len; } - int -vsnprintf(char *str, size_t count, const char *fmt, va_list args) +printf(const char *fmt,...) { - char *end; - str[0] = '\0'; - end = str + count - 1; - dopr(str, fmt, args, end); - if (count > 0) - end[0] = '\0'; - return strlen(str); + int len; + va_list args; + char* buffer[4096]; + char* p; + + va_start(args, fmt); + len = vsnprintf((char*)buffer, (size_t)4096, fmt, args); + va_end(args); + p = (char*)buffer; + for(;*p;p++) + putchar(*p); + return len; } /* -- GitLab