diff options
-rw-r--r-- | bootloader/gigabeat-s.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/bootloader/gigabeat-s.c b/bootloader/gigabeat-s.c index bb0d70e04a..e884e06219 100644 --- a/bootloader/gigabeat-s.c +++ b/bootloader/gigabeat-s.c | |||
@@ -141,10 +141,11 @@ void main(void) | |||
141 | { | 141 | { |
142 | char buf[MAX_PATH]; | 142 | char buf[MAX_PATH]; |
143 | char tarstring[6]; | 143 | char tarstring[6]; |
144 | char model[5]; | ||
144 | 145 | ||
145 | lcd_clear_display(); | 146 | lcd_clear_display(); |
146 | printf("Hello world!"); | 147 | printf("Hello world!"); |
147 | printf("Gigabeat S Rockbox Bootloader v.00000004"); | 148 | printf("Gigabeat S Rockbox Bootloader v.00000005"); |
148 | system_init(); | 149 | system_init(); |
149 | kernel_init(); | 150 | kernel_init(); |
150 | printf("kernel init done"); | 151 | printf("kernel init done"); |
@@ -182,6 +183,25 @@ void main(void) | |||
182 | fd = open(buf, O_RDONLY); | 183 | fd = open(buf, O_RDONLY); |
183 | if (fd >= 0) | 184 | if (fd >= 0) |
184 | { | 185 | { |
186 | /* Check whether the file is a rockbox binary. */ | ||
187 | lseek(fd, 4, SEEK_SET); | ||
188 | rc = read(fd, model, 4); | ||
189 | if (rc == 4) | ||
190 | { | ||
191 | model[4] = 0; | ||
192 | if (strcmp(model, "gigs") == 0) | ||
193 | { | ||
194 | printf("Found rockbox binary. Moving..."); | ||
195 | close(fd); | ||
196 | remove("/.rockbox/rockbox.gigabeat"); | ||
197 | int ret = rename(buf, "/.rockbox/rockbox.gigabeat"); | ||
198 | printf("returned %d", ret); | ||
199 | sleep(100); | ||
200 | break; | ||
201 | } | ||
202 | } | ||
203 | |||
204 | /* Check whether the file is a tar file. */ | ||
185 | lseek(fd, 257, SEEK_SET); | 205 | lseek(fd, 257, SEEK_SET); |
186 | rc = read(fd, tarstring, 5); | 206 | rc = read(fd, tarstring, 5); |
187 | if (rc == 5) | 207 | if (rc == 5) |