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