xref: /plan9/sys/src/libc/fmt/fmtvprint.c (revision 53ff6c4dddeb19bd84c918cdd2542d7c51263329)
19a747e4fSDavid du Colombier #include <u.h>
29a747e4fSDavid du Colombier #include <libc.h>
39a747e4fSDavid du Colombier #include "fmtdef.h"
49a747e4fSDavid du Colombier 
59a747e4fSDavid du Colombier 
69a747e4fSDavid du Colombier /*
79a747e4fSDavid du Colombier  * format a string into the output buffer
8*53ff6c4dSDavid du Colombier  * designed for formats which themselves call fmt
99a747e4fSDavid du Colombier  */
109a747e4fSDavid du Colombier int
fmtvprint(Fmt * f,char * fmt,va_list args)119a747e4fSDavid du Colombier fmtvprint(Fmt *f, char *fmt, va_list args)
129a747e4fSDavid du Colombier {
139a747e4fSDavid du Colombier 	va_list va;
149a747e4fSDavid du Colombier 	int n;
159a747e4fSDavid du Colombier 
169a747e4fSDavid du Colombier 	va = f->args;
179a747e4fSDavid du Colombier 	f->args = args;
189a747e4fSDavid du Colombier 	n = dofmt(f, fmt);
199a747e4fSDavid du Colombier 	f->args = va;
209a747e4fSDavid du Colombier 	if(n >= 0)
219a747e4fSDavid du Colombier 		return 0;
229a747e4fSDavid du Colombier 	return n;
239a747e4fSDavid du Colombier }
249a747e4fSDavid du Colombier 
25