summaryrefslogtreecommitdiffstats
path: root/rbutil/tools/bin2c.c
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/tools/bin2c.c')
-rw-r--r--rbutil/tools/bin2c.c34
1 files changed, 28 insertions, 6 deletions
diff --git a/rbutil/tools/bin2c.c b/rbutil/tools/bin2c.c
index 36e245133e..4600746d52 100644
--- a/rbutil/tools/bin2c.c
+++ b/rbutil/tools/bin2c.c
@@ -5,7 +5,6 @@
* Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
* Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
* \/ \/ \/ \/ \/
- * $Id$
*
* Copyright (C) 2007 Dave Chapman
*
@@ -40,6 +39,13 @@
#define O_BINARY 0
#endif
+static void usage(void)
+{
+ fprintf(stderr, "bin2c [options] infile cfile\n");
+ fprintf(stderr, " -i ipod mode\n");
+}
+
+
static off_t filesize(int fd)
{
struct stat buf;
@@ -116,14 +122,25 @@ int main (int argc, char* argv[])
unsigned char* buf;
int len;
int n;
+ int skip = 0;
+ int opts = 0;
+
- if (argc != 3) {
- fprintf(stderr,"Usage: bin2c file cname\n");
+ if(argc < 2) {
+ usage();
+ return 0;
+ }
+ if(strcmp(argv[1], "-i") == 0) {
+ skip = 8;
+ opts++;
+ }
+ if (argc < opts + 3) {
+ usage();
return 0;
}
- infile=argv[1];
- cname=argv[2];
+ infile=argv[opts + 1];
+ cname=argv[opts + 2];
fd = open(infile,O_RDONLY|O_BINARY);
if (fd < 0) {
@@ -131,7 +148,12 @@ int main (int argc, char* argv[])
return 0;
}
- len = filesize(fd);
+ len = filesize(fd) - skip;
+ n = lseek(fd, skip, SEEK_SET);
+ if (n != skip) {
+ fprintf(stderr,"Seek failed\n");
+ return 0;
+ }
buf = malloc(len);
n = read(fd,buf,len);