18ccd4a63SDavid du Colombier #include <u.h> 28ccd4a63SDavid du Colombier #include <libc.h> 3*0d601874SDavid du Colombier #include "fmtdef.h" 48ccd4a63SDavid du Colombier 58ccd4a63SDavid du Colombier int vsnprint(char * buf,int len,char * fmt,va_list args)68ccd4a63SDavid du Colombiervsnprint(char *buf, int len, char *fmt, va_list args) 78ccd4a63SDavid du Colombier { 88ccd4a63SDavid du Colombier Fmt f; 98ccd4a63SDavid du Colombier 108ccd4a63SDavid du Colombier if(len <= 0) 118ccd4a63SDavid du Colombier return -1; 128ccd4a63SDavid du Colombier f.runes = 0; 138ccd4a63SDavid du Colombier f.start = buf; 148ccd4a63SDavid du Colombier f.to = buf; 158ccd4a63SDavid du Colombier f.stop = buf + len - 1; 16*0d601874SDavid du Colombier f.flush = 0; 178ccd4a63SDavid du Colombier f.farg = nil; 188ccd4a63SDavid du Colombier f.nfmt = 0; 19*0d601874SDavid du Colombier VA_COPY(f.args,args); 208ccd4a63SDavid du Colombier dofmt(&f, fmt); 21*0d601874SDavid du Colombier VA_END(f.args); 228ccd4a63SDavid du Colombier *(char*)f.to = '\0'; 238ccd4a63SDavid du Colombier return (char*)f.to - buf; 248ccd4a63SDavid du Colombier } 25