/* Converts a binary file into a C integer array (for inclusion in a source file) (c)2000 Dan Potter $Id$ Note: Licensed under the new BSD license, see README.KOS -NK */ #include void convert(char *ifn, char *ofn, char *prefix) { FILE *i, *o; unsigned char buffer[2048]; int red, left, lc, q; char buf[BUFSIZ]; i = fopen(ifn, "rb"); o = fopen(ofn, "w"); if (!i || !o) { printf("error: can't open input or output file\n"); return; } fseek(i, 0, SEEK_END); left = ftell(i); fseek(i, 0, SEEK_SET); setbuf(o, buf); fprintf(o, "const int %s_size = %d;\n", prefix, left); fprintf(o, "const unsigned char %s_data[%d] =", prefix, left); fprintf(o, "{\n\t"); lc = 0; while(left > 0) { red = fread(buffer, 1, 2048, i); left -= red; for (q=0; q= 8) { lc = 0; fprintf(o, "\n\t"); } } } fprintf(o, "\n};\n"); fclose(i); fclose(o); } int main(int argc, char **argv) { char *prefix; argc--; if (argc != 2 && argc != 3) { printf("usage: bin2c [prefix]\n"); return 0; } prefix = (argc == 3) ? argv[3] : "file"; convert(argv[1], argv[2], prefix); return 0; }