diff options
Diffstat (limited to 'source/lib/snprintf.c')
-rw-r--r-- | source/lib/snprintf.c | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/source/lib/snprintf.c b/source/lib/snprintf.c index cd1e63ce59f..ebb8bf74c77 100644 --- a/source/lib/snprintf.c +++ b/source/lib/snprintf.c @@ -170,9 +170,9 @@ static size_t dopr(char *buffer, size_t maxlen, const char *format, va_list args int cflags; size_t currlen; va_list args; - - VA_COPY(args, args_in); + VA_COPY(args, args_in); + state = DP_S_DEFAULT; currlen = flags = cflags = min = 0; max = -1; @@ -805,17 +805,14 @@ static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c) { int ret; va_list ap2; - - VA_COPY(ap2, ap); + VA_COPY(ap2, ap); ret = vsnprintf(NULL, 0, format, ap2); if (ret <= 0) return ret; (*ptr) = (char *)malloc(ret+1); if (!*ptr) return -1; - VA_COPY(ap2, ap); - ret = vsnprintf(*ptr, ret+1, format, ap2); return ret; @@ -838,6 +835,20 @@ static void dopr_outch(char *buffer, size_t *currlen, size_t maxlen, char c) } #endif +#ifndef HAVE_VSYSLOG +#ifdef HAVE_SYSLOG + void vsyslog (int facility_priority, char *format, va_list arglist) +{ + char *msg = NULL; + vasprintf(&msg, format, arglist); + if (!msg) + return; + syslog(facility_priority, "%s", msg); + SAFE_FREE(msg); +} +#endif /* HAVE_SYSLOG */ +#endif /* HAVE_VSYSLOG */ + #ifdef TEST_SNPRINTF int sprintf(char *str,const char *fmt,...); |