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