1*10465441SEvalZero #include <stdio.h>
2*10465441SEvalZero #include <stdlib.h>
3*10465441SEvalZero #include <sys/fcntl.h>
4*10465441SEvalZero
5*10465441SEvalZero #include <finsh.h>
6*10465441SEvalZero
7*10465441SEvalZero char * format[] = {
8*10465441SEvalZero "%",
9*10465441SEvalZero "%0.",
10*10465441SEvalZero "%.0",
11*10465441SEvalZero "%+0.",
12*10465441SEvalZero "%+.0",
13*10465441SEvalZero "%.5",
14*10465441SEvalZero "%+.5",
15*10465441SEvalZero "%2.5",
16*10465441SEvalZero "%22.5",
17*10465441SEvalZero "%022.5",
18*10465441SEvalZero "%#022.5",
19*10465441SEvalZero "%-#022.5",
20*10465441SEvalZero "%+#022.5",
21*10465441SEvalZero "%-22.5",
22*10465441SEvalZero "%+22.5",
23*10465441SEvalZero "%--22.5",
24*10465441SEvalZero "%++22.5",
25*10465441SEvalZero "%+-22.5",
26*10465441SEvalZero "%-+22.5",
27*10465441SEvalZero "%-#022.5",
28*10465441SEvalZero "%-#22.5",
29*10465441SEvalZero "%-2.22",
30*10465441SEvalZero "%+2.22",
31*10465441SEvalZero "%-#02.22",
32*10465441SEvalZero "%-#2.22",
33*10465441SEvalZero "%-1.5",
34*10465441SEvalZero "%1.5",
35*10465441SEvalZero "%-#01.5",
36*10465441SEvalZero "%-#1.5",
37*10465441SEvalZero "%-#.5",
38*10465441SEvalZero "%-#1.",
39*10465441SEvalZero "%-#.",
40*10465441SEvalZero NULL
41*10465441SEvalZero };
42*10465441SEvalZero
43*10465441SEvalZero
44*10465441SEvalZero static void
intchk(const char * fmt)45*10465441SEvalZero intchk (const char *fmt)
46*10465441SEvalZero {
47*10465441SEvalZero (void) printf("%15s :, \"", fmt);
48*10465441SEvalZero (void) printf(fmt, 0);
49*10465441SEvalZero (void) printf("\", \"");
50*10465441SEvalZero (void) printf(fmt, 123);
51*10465441SEvalZero (void) printf("\", \"");
52*10465441SEvalZero (void) printf(fmt, -18);
53*10465441SEvalZero (void) printf("\"\n");
54*10465441SEvalZero }
55*10465441SEvalZero
56*10465441SEvalZero static void
fltchk(const char * fmt)57*10465441SEvalZero fltchk (const char *fmt)
58*10465441SEvalZero {
59*10465441SEvalZero (void) printf("%15s :, \"", fmt);
60*10465441SEvalZero (void) printf(fmt, 0.0);
61*10465441SEvalZero (void) printf("\", \"");
62*10465441SEvalZero (void) printf(fmt, 123.0001);
63*10465441SEvalZero (void) printf("\", \"");
64*10465441SEvalZero (void) printf(fmt, -18.0002301);
65*10465441SEvalZero (void) printf("\"\n");
66*10465441SEvalZero }
67*10465441SEvalZero
68*10465441SEvalZero
printf_test()69*10465441SEvalZero int printf_test()
70*10465441SEvalZero {
71*10465441SEvalZero char buf[256];
72*10465441SEvalZero int i;
73*10465441SEvalZero
74*10465441SEvalZero printf("%s\n\n", "# vim:syntax=off:");
75*10465441SEvalZero
76*10465441SEvalZero /* integers */
77*10465441SEvalZero for(i=0;format[i];i++) {
78*10465441SEvalZero strcpy(buf, format[i]);
79*10465441SEvalZero strcat(buf, "d");
80*10465441SEvalZero intchk(buf);
81*10465441SEvalZero }
82*10465441SEvalZero
83*10465441SEvalZero /* floats */
84*10465441SEvalZero for(i=0;format[i];i++) {
85*10465441SEvalZero strcpy(buf, format[i]);
86*10465441SEvalZero strcat(buf, "f");
87*10465441SEvalZero fltchk(buf);
88*10465441SEvalZero }
89*10465441SEvalZero /* hexa */
90*10465441SEvalZero for(i=0;format[i];i++) {
91*10465441SEvalZero strcpy(buf, format[i]);
92*10465441SEvalZero strcat(buf, "x");
93*10465441SEvalZero intchk(buf);
94*10465441SEvalZero }
95*10465441SEvalZero
96*10465441SEvalZero printf("#%.4x %4x#\n", 4, 88);
97*10465441SEvalZero printf("#%4x#\n",4);
98*10465441SEvalZero printf("#%#22.8x#\n",1234567);
99*10465441SEvalZero
100*10465441SEvalZero printf("#%+2i#\n",18);
101*10465441SEvalZero printf("#%i#\n",18);
102*10465441SEvalZero printf("#%llu#\n",4294967297ULL);
103*10465441SEvalZero printf("#%#x#\n",44444);
104*10465441SEvalZero printf("#%-8i#\n",33);
105*10465441SEvalZero printf("#%i#\n",18);
106*10465441SEvalZero printf("#%d#\n",18);
107*10465441SEvalZero printf("#%u#\n",18);
108*10465441SEvalZero printf("#%lu#\n",18);
109*10465441SEvalZero printf("#%li#\n",18);
110*10465441SEvalZero printf("#%-+#06d#\n", -123);
111*10465441SEvalZero printf("#%-+#6d#\n", -123);
112*10465441SEvalZero printf("#%+#06d#\n", -123);
113*10465441SEvalZero printf("#%06d#\n", -123);
114*10465441SEvalZero printf("#%+15s#\n","ABCDEF");
115*10465441SEvalZero /* from ncurses make_keys */
116*10465441SEvalZero printf("{ %4d, %-*.*s },\t/* %s */\n", 139, 16, 16, "KEY_A1", "key_a1");
117*10465441SEvalZero printf("{ %4d, %-*.*s },\t/* %s */\n", 139, 16, 2, "KEY_A1", "key_a1");
118*10465441SEvalZero printf("{ %4d, %-*.*s },\t/* %s */\n", 139, 2, 16, "KEY_A1", "key_a1");
119*10465441SEvalZero printf("{ %4d, %-*.*s },\t/* %s */\n", 139, 16, 0, "KEY_A1", "key_a1");
120*10465441SEvalZero printf("{ %4d, %-*.*s },\t/* %s */\n", 139, 0, 16, "KEY_A1", "key_a1");
121*10465441SEvalZero printf("{ %4d, %-*.*s },\t/* %s */\n", 139, 0, 0, "KEY_A1", "key_a1");
122*10465441SEvalZero printf("{ %4d, %*.*s },\t/* %s */\n", 139, 16, 16, "KEY_A1", "key_a1");
123*10465441SEvalZero printf("{ %4d, %*.*s },\t/* %s */\n", 139, 16, 2, "KEY_A1", "key_a1");
124*10465441SEvalZero printf("{ %4d, %*.*s },\t/* %s */\n", 139, 2, 16, "KEY_A1", "key_a1");
125*10465441SEvalZero printf("{ %4d, %*.*s },\t/* %s */\n", 139, 16, 0, "KEY_A1", "key_a1");
126*10465441SEvalZero printf("{ %4d, %*.*s },\t/* %s */\n", 139, 0, 16, "KEY_A1", "key_a1");
127*10465441SEvalZero printf("{ %4d, %*.*s },\t/* %s */\n", 139, 0, 0, "KEY_A1", "key_a1");
128*10465441SEvalZero printf("%*.*f\n", 0, 16, 0.0);
129*10465441SEvalZero printf("%*.*f\n", 16, 16, 0.0);
130*10465441SEvalZero printf("%*.*f\n", 2, 2, -0.0);
131*10465441SEvalZero printf("%*.*f\n", 20, 0, -123.123);
132*10465441SEvalZero printf("%*.*f\n", 10, 0, +123.123);
133*10465441SEvalZero
134*10465441SEvalZero
135*10465441SEvalZero i = printf("\"%s\"\n","A");
136*10465441SEvalZero printf("%i\n", i);
137*10465441SEvalZero /* from glibc's tst-printf.c */
138*10465441SEvalZero
139*10465441SEvalZero {
140*10465441SEvalZero char buf[20];
141*10465441SEvalZero char buf2[512];
142*10465441SEvalZero int i;
143*10465441SEvalZero
144*10465441SEvalZero printf ("snprintf (\"%%30s\", \"foo\") == %d, \"%.*s\"\n",
145*10465441SEvalZero snprintf (buf, sizeof (buf), "%30s", "foo"), (int) sizeof (buf),
146*10465441SEvalZero buf);
147*10465441SEvalZero memset(buf2,0,sizeof(buf));
148*10465441SEvalZero i=snprintf(buf2, 256, "%.9999u", 10);
149*10465441SEvalZero printf("%i %i\n",i,strlen(buf2));
150*10465441SEvalZero
151*10465441SEvalZero printf ("snprintf (\"%%.999999u\", 10) == %d\n",
152*10465441SEvalZero snprintf(buf2, sizeof(buf2), "%.999999u", 10));
153*10465441SEvalZero }
154*10465441SEvalZero return 0;
155*10465441SEvalZero }
156*10465441SEvalZero
libc_printf()157*10465441SEvalZero void libc_printf()
158*10465441SEvalZero {
159*10465441SEvalZero printf("stdout test!!\n");
160*10465441SEvalZero fprintf(stdout, "fprintf test!!\n");
161*10465441SEvalZero fprintf(stderr, "fprintf test!!\n");
162*10465441SEvalZero puts("puts test!!\n");
163*10465441SEvalZero
164*10465441SEvalZero putc('1', stderr);
165*10465441SEvalZero putc('2', stderr);
166*10465441SEvalZero putc('\n', stderr);
167*10465441SEvalZero
168*10465441SEvalZero printf_test();
169*10465441SEvalZero }
170*10465441SEvalZero FINSH_FUNCTION_EXPORT(libc_printf, printf test in libc);
171*10465441SEvalZero
172*10465441SEvalZero
libc_dprintf()173*10465441SEvalZero void libc_dprintf()
174*10465441SEvalZero {
175*10465441SEvalZero int fd;
176*10465441SEvalZero
177*10465441SEvalZero fd = open("/dev/console", O_WRONLY, 0);
178*10465441SEvalZero if (fd >0)
179*10465441SEvalZero {
180*10465441SEvalZero dprintf(fd, "fd:%d printf test!!\n", fd);
181*10465441SEvalZero close(fd);
182*10465441SEvalZero }
183*10465441SEvalZero }
184*10465441SEvalZero FINSH_FUNCTION_EXPORT(libc_dprintf, dprintf test);
185*10465441SEvalZero
186*10465441SEvalZero
libc_fdopen()187*10465441SEvalZero void libc_fdopen()
188*10465441SEvalZero {
189*10465441SEvalZero int fd;
190*10465441SEvalZero FILE* fp;
191*10465441SEvalZero
192*10465441SEvalZero fd = open("/dev/console", O_WRONLY, 0);
193*10465441SEvalZero if (fd >0)
194*10465441SEvalZero {
195*10465441SEvalZero fp = fdopen(fd, "w");
196*10465441SEvalZero fprintf(fp, "fdopen test, fd %d!!\n", fileno(fp));
197*10465441SEvalZero fclose(fp);
198*10465441SEvalZero }
199*10465441SEvalZero }
200*10465441SEvalZero FINSH_FUNCTION_EXPORT(libc_fdopen, fdopen test);
201