/* BIN2C Converts binary data to be included in C source codes */


#include <sys\stat.h>
#include <stdio.h>
#include <io.h>

main(int argc, char **argv)
{
FILE* binfile;
FILE* cfile;
struct stat statbuf;
long len;
int cntr;
unsigned char inbyte;
char varname[80],cfilename[80];

       if(argc > 1)
       {
               if( (binfile = fopen(argv[1],"rb")) != NULL)
               {
                       stat(argv[1],&statbuf);
                       len = statbuf.st_size;

                       if(argc>2)
                               strcpy(cfilename,argv[2]);
                       else
                               strcpy(cfilename,"bin2c.c");
                       cfile = fopen(cfilename,"wt");

                       cntr = 0;

                       if(argc>3)
                               strcpy(varname,argv[3]);
                       else
                               strcpy(varname,"varname");

                       fprintf(cfile,"unsigned char far %s[%ld] = {\n",varname,len);

                       fread(&inbyte,1,1,binfile);
                       while(1){
                               fprintf(cfile,"0X%02X",inbyte);

                               fread(&inbyte,1,1,binfile);
                               if(feof(binfile)) break;
                               fprintf(cfile,",");
                               if(++cntr > 30)
                               {
                                       fprintf(cfile,"\n");
                                       cntr = 0;
                               }
                       }
                       fprintf(cfile,"};\n");
                       fclose(binfile);
                       fclose(cfile);
               }
               else
                       printf("Error opening %s!\n",argv[1]);
       }
       else
       {
               printf("BIN2C Binary to C converter\n");
               printf("usage: BIN2C <binfile> <cfile> <varname>\n");
       }
}