Blob


1 /* Copyright (c) 2002-2006 Lucent Technologies; see LICENSE */
2 #include <stdlib.h>
3 #include <stdarg.h>
4 #include "plan9.h"
5 #include "fmt.h"
6 #include "fmtdef.h"
8 int
9 vsnprint(char *buf, int len, char *fmt, va_list args)
10 {
11 Fmt f;
13 if(len <= 0)
14 return -1;
15 f.runes = 0;
16 f.start = buf;
17 f.to = buf;
18 f.stop = buf + len - 1;
19 f.flush = 0;
20 f.farg = nil;
21 f.nfmt = 0;
22 VA_COPY(f.args,args);
23 fmtlocaleinit(&f, nil, nil, nil);
24 dofmt(&f, fmt);
25 VA_END(f.args);
26 *(char*)f.to = '\0';
27 return (char*)f.to - buf;
28 }