summaryrefslogtreecommitdiffstats
path: root/source/lib/snprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/lib/snprintf.c')
-rw-r--r--source/lib/snprintf.c23
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,...);