summaryrefslogtreecommitdiff
path: root/cfile8.c
diff options
context:
space:
mode:
authorIan C <ianc@noddybox.co.uk>2010-11-08 16:16:00 +0000
committerIan C <ianc@noddybox.co.uk>2010-11-08 16:16:00 +0000
commit8c47b8879a1623d11509b18296a7ba285c01417f (patch)
tree1f29d21772e9a8b2523dbef18c117ebbb048d7e0 /cfile8.c
parent5f7fdc1a37689968a3856f86e8388e3cda6c2ebd (diff)
Tidied up cfile tools
Diffstat (limited to 'cfile8.c')
-rw-r--r--cfile8.c46
1 files changed, 40 insertions, 6 deletions
diff --git a/cfile8.c b/cfile8.c
index 702da6f..647e1d5 100644
--- a/cfile8.c
+++ b/cfile8.c
@@ -1,54 +1,88 @@
/*
Convert a binary file to a C unsigned char array
*/
+#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[])
{
- char *name="bfile";
+ const char *name="bfile";
FILE *in,*out;
unsigned char num;
int col;
+ int first;
+ int len;
in=stdin;
out=stdout;
if (argc>1)
+ {
if (!(in=fopen(argv[1],"rb")))
+ {
perror(argv[0]);
+ }
+ }
if (argc>2)
+ {
if (!(out=fopen(argv[2],"w")))
+ {
perror(argv[0]);
+ }
+ }
if (argc>3)
+ {
name=argv[3];
+ }
if (argc>1)
+ {
fprintf(out,"/* Auto-generated binary of %s */\n\n",argv[1]);
+ }
else
+ {
fprintf(out,"/* Auto-generated binary */\n\n");
+ }
- fprintf(out,"unsigned long %s[]=\n{",name);
+ fprintf(out,"unsigned char %s[]=\n{",name);
col=0;
num=0;
+ first=1;
+ len=0;
while(!feof(in))
{
fread(&num,sizeof num,1,in);
if (col==0)
- fprintf(out,"\n");
+ {
+ if (first)
+ {
+ fprintf(out,"\n\t");
+ first = 0;
+ }
+ else
+ {
+ fprintf(out,",\n\t");
+ }
+ }
+ else
+ {
+ fprintf(out,",");
+ }
- fprintf(out,"0x%.2x,",num);
+ fprintf(out,"0x%.2x",(unsigned)num);
- col=(col+1)%16;
+ col=(col+1)%8;
num=0;
+ len++;
}
- fprintf(out,"\n};\n");
+ fprintf(out,"\n\t};\n#define %s_LEN %d\n", name, len);
fclose(in);
fclose(out);