X-Git-Url: http://www.dolda2000.com/gitweb/?p=ashd.git;a=blobdiff_plain;f=lib%2Futils.c;fp=lib%2Futils.c;h=27344100f3aa8a1d1a7c2c516dcc1a6db20c19de;hp=e0dc22cf8d8dd200242254183f2a19e03fcde6fa;hb=d422fdfd62d851b345562ad4d093465d2bec604b;hpb=54cefabaa47acc0536805ee5ff2e6dda3df4b043 diff --git a/lib/utils.c b/lib/utils.c index e0dc22c..2734410 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -175,3 +175,29 @@ int calen(char **a) for(i = 0; *a; a++, i++); return(i); } + +void bvprintf(struct charbuf *buf, char *format, va_list al) +{ + va_list al2; + int ret; + + while(1) { + va_copy(al2, al); + ret = vsnprintf(buf->b + buf->d, buf->s - buf->d, format, al2); + va_end(al2); + if(ret < buf->s - buf->d) { + buf->d += ret; + return; + } + sizebuf(*buf, buf->d + ret + 1); + } +} + +void bprintf(struct charbuf *buf, char *format, ...) +{ + va_list args; + + va_start(args, format); + bvprintf(buf, format, args); + va_end(args); +}