summaryrefslogtreecommitdiff
path: root/rbutil/sansapatcher/main.c
diff options
context:
space:
mode:
authorBarry Wardell <rockbox@barrywardell.net>2007-08-02 11:39:43 +0000
committerBarry Wardell <rockbox@barrywardell.net>2007-08-02 11:39:43 +0000
commit6a0ec8bfa86e7fcf02a9179dc8adbf2f0e25e6e7 (patch)
tree6a166b874002517a623556b5fc396ac6cb967a44 /rbutil/sansapatcher/main.c
parent744f07f55439bc4b5d99d4fe0082ab640aad476c (diff)
downloadrockbox-6a0ec8bfa86e7fcf02a9179dc8adbf2f0e25e6e7.tar.gz
rockbox-6a0ec8bfa86e7fcf02a9179dc8adbf2f0e25e6e7.zip
Add --update-original-firmware (or -of) option to sansapatcher. This allows for changing the original firmware version when the rockbox bootloader is also present.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14138 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil/sansapatcher/main.c')
-rw-r--r--rbutil/sansapatcher/main.c25
1 files changed, 22 insertions, 3 deletions
diff --git a/rbutil/sansapatcher/main.c b/rbutil/sansapatcher/main.c
index 4f2a5fe226..a675cd80b6 100644
--- a/rbutil/sansapatcher/main.c
+++ b/rbutil/sansapatcher/main.c
@@ -47,7 +47,8 @@ enum {
47 READ_FIRMWARE, 47 READ_FIRMWARE,
48 WRITE_FIRMWARE, 48 WRITE_FIRMWARE,
49 READ_PARTITION, 49 READ_PARTITION,
50 WRITE_PARTITION 50 WRITE_PARTITION,
51 UPDATE_OF
51}; 52};
52 53
53void print_usage(void) 54void print_usage(void)
@@ -62,9 +63,10 @@ void print_usage(void)
62 fprintf(stderr,"Where [action] is one of the following options:\n"); 63 fprintf(stderr,"Where [action] is one of the following options:\n");
63 fprintf(stderr," --install\n"); 64 fprintf(stderr," --install\n");
64 fprintf(stderr," -l, --list\n"); 65 fprintf(stderr," -l, --list\n");
65 fprintf(stderr," -rf, --read-firmware filename.mi4\n"); 66 fprintf(stderr," -rf, --read-firmware filename.mi4\n");
66 fprintf(stderr," -a, --add-bootloader filename.mi4\n"); 67 fprintf(stderr," -a, --add-bootloader filename.mi4\n");
67 fprintf(stderr," -d, --delete-bootloader\n"); 68 fprintf(stderr," -d, --delete-bootloader\n");
69 fprintf(stderr," -of --update-original-firmware filename.mi4\n");
68 fprintf(stderr,"\n"); 70 fprintf(stderr,"\n");
69 71
70#ifdef __WIN32__ 72#ifdef __WIN32__
@@ -216,6 +218,13 @@ int main(int argc, char* argv[])
216 if (i == argc) { print_usage(); return 1; } 218 if (i == argc) { print_usage(); return 1; }
217 filename=argv[i]; 219 filename=argv[i];
218 i++; 220 i++;
221 } else if ((strcmp(argv[i],"-of")==0) ||
222 (strcmp(argv[i],"--update-original-firmware")==0)) {
223 action = UPDATE_OF;
224 i++;
225 if (i == argc) { print_usage(); return 1; }
226 filename=argv[i];
227 i++;
219 } else if ((strcmp(argv[i],"-rf")==0) || 228 } else if ((strcmp(argv[i],"-rf")==0) ||
220 (strcmp(argv[i],"--read-firmware")==0)) { 229 (strcmp(argv[i],"--read-firmware")==0)) {
221 action = READ_FIRMWARE; 230 action = READ_FIRMWARE;
@@ -326,6 +335,16 @@ int main(int argc, char* argv[])
326 } else { 335 } else {
327 fprintf(stderr,"[ERR] --delete-bootloader failed.\n"); 336 fprintf(stderr,"[ERR] --delete-bootloader failed.\n");
328 } 337 }
338 } else if (action==UPDATE_OF) {
339 if (sansa_reopen_rw(&sansa) < 0) {
340 return 5;
341 }
342
343 if (sansa_update_of(&sansa, filename)==0) {
344 fprintf(stderr,"[INFO] OF updated successfully.\n");
345 } else {
346 fprintf(stderr,"[ERR] --update-original-firmware failed.\n");
347 }
329 } 348 }
330 } 349 }
331 350