Imported from ../lua-3.1.tar.gz.
[lua.git] / etc / bin2c.c
blob349b7eee3ce763f734a31d8e5e6d9671da1135aa
1 /*
2 * bin2c.c
3 * convert binary files to byte arrays
4 * Luiz Henrique de Figueiredo (lhf@tecgraf.puc-rio.br)
5 * 25 Jun 98 10:55:12
6 */
8 #include <ctype.h>
9 #include <stdio.h>
11 void dump(FILE* f, int n)
13 printf("static unsigned char B%d[]={\n");
14 for (n=1;;n++)
16 int c=getc(f);
17 if (c==EOF) break;
18 #if 0
19 printf("0x%02x,",c);
20 #else
21 printf("%3u,",c);
22 #endif
23 if (n==20) { putchar('\n'); n=0; }
25 printf("\n};\n\n");
28 void fdump(char* fn, int n)
30 FILE* f= (fn==NULL) ? stdin : fopen(fn,"rb"); /* must open in binary mode */
31 if (f==NULL)
33 fprintf(stderr,"bin2c: cannot open ");
34 perror(fn);
35 exit(1);
37 else
39 if (fn!=NULL) printf("/* %s */\n",fn);
40 dump(f,n);
41 fclose(f);
45 void emit(char* fn, int n)
47 printf(" lua_dobuffer(B%d,sizeof(B%d),\"%s\");\n",n,n,fn);
50 int main(int argc, char* argv[])
52 printf("{\n");
53 if (argc<2)
55 dump(stdin,0);
56 emit("(stdin)",0);
58 else
60 int i;
61 for (i=1; i<argc; i++) fdump(argv[i],i);
62 for (i=1; i<argc; i++) emit(argv[i],i);
64 printf("}\n");
65 return 0;