filename | test/bin2c.c |
changeset | 561:533f6b478071 |
prev | 185:6755a04c447f |
author | nkeynes |
date | Fri Feb 08 00:06:56 2008 +0000 (16 years ago) |
permissions | -rw-r--r-- |
last change | Fix LDS/STS to FPUL/FPSCR to check the FPU disabled bit. Fixes the linux 2.4.0-test8 kernel boot (this wasn't exactly very well documented in the original manual) |
file | annotate | diff | log | raw |
nkeynes@185 | 1 | /* Converts a binary file into a C integer array (for inclusion in |
nkeynes@185 | 2 | a source file) |
nkeynes@185 | 3 | |
nkeynes@185 | 4 | (c)2000 Dan Potter |
nkeynes@185 | 5 | |
nkeynes@561 | 6 | $Id$ |
nkeynes@185 | 7 | Note: Licensed under the new BSD license, see README.KOS -NK |
nkeynes@185 | 8 | */ |
nkeynes@185 | 9 | |
nkeynes@185 | 10 | #include <stdio.h> |
nkeynes@185 | 11 | |
nkeynes@185 | 12 | void convert(char *ifn, char *ofn, char *prefix) { |
nkeynes@185 | 13 | FILE *i, *o; |
nkeynes@185 | 14 | unsigned char buffer[2048]; |
nkeynes@185 | 15 | int red, left, lc, q; |
nkeynes@185 | 16 | char buf[BUFSIZ]; |
nkeynes@185 | 17 | |
nkeynes@185 | 18 | i = fopen(ifn, "rb"); |
nkeynes@185 | 19 | o = fopen(ofn, "w"); |
nkeynes@185 | 20 | if (!i || !o) { |
nkeynes@185 | 21 | printf("error: can't open input or output file\n"); |
nkeynes@185 | 22 | return; |
nkeynes@185 | 23 | } |
nkeynes@185 | 24 | |
nkeynes@185 | 25 | fseek(i, 0, SEEK_END); left = ftell(i); fseek(i, 0, SEEK_SET); |
nkeynes@185 | 26 | setbuf(o, buf); |
nkeynes@185 | 27 | |
nkeynes@185 | 28 | fprintf(o, "const int %s_size = %d;\n", prefix, left); |
nkeynes@185 | 29 | fprintf(o, "const unsigned char %s_data[%d] =", prefix, left); |
nkeynes@185 | 30 | fprintf(o, "{\n\t"); |
nkeynes@185 | 31 | |
nkeynes@185 | 32 | lc = 0; |
nkeynes@185 | 33 | while(left > 0) { |
nkeynes@185 | 34 | red = fread(buffer, 1, 2048, i); |
nkeynes@185 | 35 | left -= red; |
nkeynes@185 | 36 | for (q=0; q<red; q++) { |
nkeynes@185 | 37 | fprintf(o, "0x%02x, ", buffer[q]); |
nkeynes@185 | 38 | if ((++lc) >= 8) { |
nkeynes@185 | 39 | lc = 0; |
nkeynes@185 | 40 | fprintf(o, "\n\t"); |
nkeynes@185 | 41 | } |
nkeynes@185 | 42 | } |
nkeynes@185 | 43 | } |
nkeynes@185 | 44 | |
nkeynes@185 | 45 | fprintf(o, "\n};\n"); |
nkeynes@185 | 46 | fclose(i); fclose(o); |
nkeynes@185 | 47 | } |
nkeynes@185 | 48 | |
nkeynes@185 | 49 | int main(int argc, char **argv) { |
nkeynes@185 | 50 | |
nkeynes@185 | 51 | char *prefix; |
nkeynes@185 | 52 | |
nkeynes@185 | 53 | argc--; |
nkeynes@185 | 54 | if (argc != 2 && argc != 3) { |
nkeynes@185 | 55 | printf("usage: bin2c <input> <output> [prefix]\n"); |
nkeynes@185 | 56 | return 0; |
nkeynes@185 | 57 | } |
nkeynes@185 | 58 | |
nkeynes@185 | 59 | prefix = (argc == 3) ? argv[3] : "file"; |
nkeynes@185 | 60 | convert(argv[1], argv[2], prefix); |
nkeynes@185 | 61 | return 0; |
nkeynes@185 | 62 | } |
nkeynes@185 | 63 |
.