diff options
Diffstat (limited to 'rbutil/tools/bin2c.c')
-rw-r--r-- | rbutil/tools/bin2c.c | 34 |
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 @@ | |||
5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < | 5 | * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < |
6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ | 6 | * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ |
7 | * \/ \/ \/ \/ \/ | 7 | * \/ \/ \/ \/ \/ |
8 | * $Id$ | ||
9 | * | 8 | * |
10 | * Copyright (C) 2007 Dave Chapman | 9 | * Copyright (C) 2007 Dave Chapman |
11 | * | 10 | * |
@@ -40,6 +39,13 @@ | |||
40 | #define O_BINARY 0 | 39 | #define O_BINARY 0 |
41 | #endif | 40 | #endif |
42 | 41 | ||
42 | static void usage(void) | ||
43 | { | ||
44 | fprintf(stderr, "bin2c [options] infile cfile\n"); | ||
45 | fprintf(stderr, " -i ipod mode\n"); | ||
46 | } | ||
47 | |||
48 | |||
43 | static off_t filesize(int fd) | 49 | static off_t filesize(int fd) |
44 | { | 50 | { |
45 | struct stat buf; | 51 | struct stat buf; |
@@ -116,14 +122,25 @@ int main (int argc, char* argv[]) | |||
116 | unsigned char* buf; | 122 | unsigned char* buf; |
117 | int len; | 123 | int len; |
118 | int n; | 124 | int n; |
125 | int skip = 0; | ||
126 | int opts = 0; | ||
127 | |||
119 | 128 | ||
120 | if (argc != 3) { | 129 | if(argc < 2) { |
121 | fprintf(stderr,"Usage: bin2c file cname\n"); | 130 | usage(); |
131 | return 0; | ||
132 | } | ||
133 | if(strcmp(argv[1], "-i") == 0) { | ||
134 | skip = 8; | ||
135 | opts++; | ||
136 | } | ||
137 | if (argc < opts + 3) { | ||
138 | usage(); | ||
122 | return 0; | 139 | return 0; |
123 | } | 140 | } |
124 | 141 | ||
125 | infile=argv[1]; | 142 | infile=argv[opts + 1]; |
126 | cname=argv[2]; | 143 | cname=argv[opts + 2]; |
127 | 144 | ||
128 | fd = open(infile,O_RDONLY|O_BINARY); | 145 | fd = open(infile,O_RDONLY|O_BINARY); |
129 | if (fd < 0) { | 146 | if (fd < 0) { |
@@ -131,7 +148,12 @@ int main (int argc, char* argv[]) | |||
131 | return 0; | 148 | return 0; |
132 | } | 149 | } |
133 | 150 | ||
134 | len = filesize(fd); | 151 | len = filesize(fd) - skip; |
152 | n = lseek(fd, skip, SEEK_SET); | ||
153 | if (n != skip) { | ||
154 | fprintf(stderr,"Seek failed\n"); | ||
155 | return 0; | ||
156 | } | ||
135 | 157 | ||
136 | buf = malloc(len); | 158 | buf = malloc(len); |
137 | n = read(fd,buf,len); | 159 | n = read(fd,buf,len); |