1 #include <u.h>
2 #include <libc.h>
3 #include <stdio.h>
4 
5 void
test(char * fmt,...)6 test(char *fmt, ...)
7 {
8 	va_list arg;
9 	char fmtbuf[100], stdbuf[100];
10 
11 	va_start(arg, fmt);
12 	vsnprint(fmtbuf, sizeof fmtbuf, fmt, arg);
13 	va_end(arg);
14 
15 	va_start(arg, fmt);
16 	vsnprint(stdbuf, sizeof stdbuf, fmt, arg);
17 	va_end(arg);
18 
19 	if(strcmp(fmtbuf, stdbuf) != 0)
20 		print("fmt %s: fmt=\"%s\" std=\"%s\"\n", fmt, fmtbuf, stdbuf);
21 
22 	print("fmt %s: %s\n", fmt, fmtbuf);
23 }
24 
25 
26 int
main(int argc,char * argv[])27 main(int argc, char *argv[])
28 {
29 	test("%f", 3.14159);
30 	test("%f", 3.14159e10);
31 	test("%f", 3.14159e-10);
32 
33 	test("%e", 3.14159);
34 	test("%e", 3.14159e10);
35 	test("%e", 3.14159e-10);
36 
37 	test("%g", 3.14159);
38 	test("%g", 3.14159e10);
39 	test("%g", 3.14159e-10);
40 
41 	test("%g", 2e25);
42 	test("%.18g", 2e25);
43 
44 	test("%2.18g", 1.0);
45 	test("%2.18f", 1.0);
46 	test("%f", 3.1415927/4);
47 
48 	test("%20.10d", 12345);
49 	test("%0.10d", 12345);
50 
51 	return 0;
52 }
53