summaryrefslogtreecommitdiff
path: root/lib/varbuf.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/varbuf.c')
-rw-r--r--lib/varbuf.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/varbuf.c b/lib/varbuf.c
index a8d6c87a6..dabdbd00c 100644
--- a/lib/varbuf.c
+++ b/lib/varbuf.c
@@ -49,6 +49,22 @@ void varbufprintf(struct varbuf *v, const char *fmt, ...) {
} while (r >= v->size-ou-1);
}
+void varbufvprintf(struct varbuf *v, char *fmt, va_list va) {
+ int ou, r;
+ va_list al;
+
+ ou= v->used;
+ v->used+= strlen(fmt);
+
+ do {
+ varbufextend(v);
+ al= va;
+ r= vsnprintf(v->buf+ou,v->size-ou,fmt,al);
+ if (r < 0) r= (v->size-ou+1) * 2;
+ v->used= ou+r;
+ } while (r >= v->size-ou-1);
+}
+
void varbufaddstr(struct varbuf *v, const char *s) {
int l, ou;
l= strlen(s);