diff options
author | Doug Zongker <dougz@google.com> | 2012-08-21 00:50:19 +0200 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-08-21 00:50:19 +0200 |
commit | 13a29ea9688fd6169d69f506d5028a49038c5434 (patch) | |
tree | 5f2a722ebb6f9c7d58da206c04e077a7685c646c /applypatch/main.c | |
parent | am 55850258: am 3733d218: Merge changes I664f8dc7,I4154db06,I5e1df90f (diff) | |
parent | add bonus data feature to imgdiff/imgpatch/applypatch (diff) | |
download | android_bootable_recovery-13a29ea9688fd6169d69f506d5028a49038c5434.tar android_bootable_recovery-13a29ea9688fd6169d69f506d5028a49038c5434.tar.gz android_bootable_recovery-13a29ea9688fd6169d69f506d5028a49038c5434.tar.bz2 android_bootable_recovery-13a29ea9688fd6169d69f506d5028a49038c5434.tar.lz android_bootable_recovery-13a29ea9688fd6169d69f506d5028a49038c5434.tar.xz android_bootable_recovery-13a29ea9688fd6169d69f506d5028a49038c5434.tar.zst android_bootable_recovery-13a29ea9688fd6169d69f506d5028a49038c5434.zip |
Diffstat (limited to 'applypatch/main.c')
-rw-r--r-- | applypatch/main.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/applypatch/main.c b/applypatch/main.c index 7025a2e2e..f61db5d9e 100644 --- a/applypatch/main.c +++ b/applypatch/main.c @@ -100,6 +100,21 @@ static int ParsePatchArgs(int argc, char** argv, } int PatchMode(int argc, char** argv) { + Value* bonus = NULL; + if (argc >= 3 && strcmp(argv[1], "-b") == 0) { + FileContents fc; + if (LoadFileContents(argv[2], &fc, RETOUCH_DONT_MASK) != 0) { + printf("failed to load bonus file %s\n", argv[2]); + return 1; + } + bonus = malloc(sizeof(Value)); + bonus->type = VAL_BLOB; + bonus->size = fc.size; + bonus->data = (char*)fc.data; + argc -= 2; + argv += 2; + } + if (argc < 6) { return 2; } @@ -120,7 +135,7 @@ int PatchMode(int argc, char** argv) { } int result = applypatch(argv[1], argv[2], argv[3], target_size, - num_patches, sha1s, patches); + num_patches, sha1s, patches, bonus); int i; for (i = 0; i < num_patches; ++i) { @@ -130,6 +145,10 @@ int PatchMode(int argc, char** argv) { free(p); } } + if (bonus) { + free(bonus->data); + free(bonus); + } free(sha1s); free(patches); @@ -163,7 +182,7 @@ int main(int argc, char** argv) { if (argc < 2) { usage: printf( - "usage: %s <src-file> <tgt-file> <tgt-sha1> <tgt-size> " + "usage: %s [-b <bonus-file>] <src-file> <tgt-file> <tgt-sha1> <tgt-size> " "[<src-sha1>:<patch> ...]\n" " or %s -c <file> [<sha1> ...]\n" " or %s -s <bytes>\n" |