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