xref: /openbmc/u-boot/scripts/bin2c.c (revision f1cc9776)
1*6fb631ecSMasahiro Yamada /*
2*6fb631ecSMasahiro Yamada  * Unloved program to convert a binary on stdin to a C include on stdout
3*6fb631ecSMasahiro Yamada  *
4*6fb631ecSMasahiro Yamada  * Jan 1999 Matt Mackall <mpm@selenic.com>
5*6fb631ecSMasahiro Yamada  *
6*6fb631ecSMasahiro Yamada  * This software may be used and distributed according to the terms
7*6fb631ecSMasahiro Yamada  * of the GNU General Public License, incorporated herein by reference.
8*6fb631ecSMasahiro Yamada  */
9*6fb631ecSMasahiro Yamada 
10*6fb631ecSMasahiro Yamada #include <stdio.h>
11*6fb631ecSMasahiro Yamada 
main(int argc,char * argv[])12*6fb631ecSMasahiro Yamada int main(int argc, char *argv[])
13*6fb631ecSMasahiro Yamada {
14*6fb631ecSMasahiro Yamada 	int ch, total = 0;
15*6fb631ecSMasahiro Yamada 
16*6fb631ecSMasahiro Yamada 	if (argc > 1)
17*6fb631ecSMasahiro Yamada 		printf("const char %s[] %s=\n",
18*6fb631ecSMasahiro Yamada 			argv[1], argc > 2 ? argv[2] : "");
19*6fb631ecSMasahiro Yamada 
20*6fb631ecSMasahiro Yamada 	do {
21*6fb631ecSMasahiro Yamada 		printf("\t\"");
22*6fb631ecSMasahiro Yamada 		while ((ch = getchar()) != EOF) {
23*6fb631ecSMasahiro Yamada 			total++;
24*6fb631ecSMasahiro Yamada 			printf("\\x%02x", ch);
25*6fb631ecSMasahiro Yamada 			if (total % 16 == 0)
26*6fb631ecSMasahiro Yamada 				break;
27*6fb631ecSMasahiro Yamada 		}
28*6fb631ecSMasahiro Yamada 		printf("\"\n");
29*6fb631ecSMasahiro Yamada 	} while (ch != EOF);
30*6fb631ecSMasahiro Yamada 
31*6fb631ecSMasahiro Yamada 	if (argc > 1)
32*6fb631ecSMasahiro Yamada 		printf("\t;\n\n#include <linux/types.h>\n\nconst size_t %s_size = %d;\n",
33*6fb631ecSMasahiro Yamada 		       argv[1], total);
34*6fb631ecSMasahiro Yamada 
35*6fb631ecSMasahiro Yamada 	return 0;
36*6fb631ecSMasahiro Yamada }
37