aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--buffer.c9
-rw-r--r--buffer.h2
2 files changed, 8 insertions, 3 deletions
diff --git a/buffer.c b/buffer.c
index c90ff9f..498861e 100644
--- a/buffer.c
+++ b/buffer.c
@@ -182,9 +182,10 @@ buf_sub (struct buffer *buf, int size, bool prepend)
/*
* printf append to a buffer with overflow check
*/
-void
+bool
buf_printf (struct buffer *buf, const char *format, ...)
{
+ int ret = false;
if (buf_defined (buf))
{
va_list arglist;
@@ -193,13 +194,17 @@ buf_printf (struct buffer *buf, const char *format, ...)
if (cap > 0)
{
+ int stat;
va_start (arglist, format);
- vsnprintf ((char *)ptr, cap, format, arglist);
+ stat = vsnprintf ((char *)ptr, cap, format, arglist);
va_end (arglist);
*(buf->data + buf->capacity - 1) = 0; /* windows vsnprintf needs this */
buf->len += (int) strlen ((char *)ptr);
+ if (stat >= 0 && stat < cap)
+ ret = true;
}
}
+ return ret;
}
/*
diff --git a/buffer.h b/buffer.h
index 8888869..7de3363 100644
--- a/buffer.h
+++ b/buffer.h
@@ -206,7 +206,7 @@ has_digit (const unsigned char* src)
/*
* printf append to a buffer with overflow check
*/
-void buf_printf (struct buffer *buf, const char *format, ...)
+bool buf_printf (struct buffer *buf, const char *format, ...)
#ifdef __GNUC__
__attribute__ ((format (printf, 2, 3)))
#endif