1 #include <u.h> 2 #include <libc.h> 3 #include "fmtdef.h" 4 5 int vsnprint(char * buf,int len,char * fmt,va_list args)6vsnprint(char *buf, int len, char *fmt, va_list args) 7 { 8 Fmt f; 9 10 if(len <= 0) 11 return -1; 12 f.runes = 0; 13 f.start = buf; 14 f.to = buf; 15 f.stop = buf + len - 1; 16 f.flush = 0; 17 f.farg = nil; 18 f.nfmt = 0; 19 VA_COPY(f.args,args); 20 dofmt(&f, fmt); 21 VA_END(f.args); 22 *(char*)f.to = '\0'; 23 return (char*)f.to - buf; 24 } 25