diff options
author | Sen Jiang <senj@google.com> | 2017-02-16 21:19:05 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-02-16 21:19:05 +0000 |
commit | 9e29277587ccc2384c2fe36db7cb93b4be1917ea (patch) | |
tree | 15cf0bcb6eab21a76302345d79d80e5c8caf4c09 | |
parent | 27910bec2944294cbe40094a76656c85a1bfaec7 (diff) | |
parent | 62d5e48122519abcc89837d99fc60a09fc8ba405 (diff) | |
download | bsdiff-9e29277587ccc2384c2fe36db7cb93b4be1917ea.tar.gz |
Add another overload of bspatch().
am: 62d5e48122
Change-Id: Iffb7b6f79107367f9288b0cb0ac2e479e7cd3efb
-rw-r--r-- | bspatch.cc | 18 | ||||
-rw-r--r-- | bspatch.h | 7 |
2 files changed, 23 insertions, 2 deletions
@@ -201,6 +201,20 @@ int bspatch(const char* old_filename, } patch_file.reset(); + return bspatch(old_filename, new_filename, patch.data(), patch_size, + old_extents, new_extents); +} + +// Patch |old_filename| with |patch_data| and save it to |new_filename|. +// |old_extents| and |new_extents| are comma-separated lists of "offset:length" +// extents of |old_filename| and |new_filename|. +// Returns 0 on success, 1 on I/O error and 2 on data error. +int bspatch(const char* old_filename, + const char* new_filename, + const uint8_t* patch_data, + size_t patch_size, + const char* old_extents, + const char* new_extents) { int using_extents = (old_extents != NULL || new_extents != NULL); // Open input file for reading. @@ -242,11 +256,11 @@ int bspatch(const char* old_filename, parsed_new_extents)) { // New and old file is overlapping, we can not stream output to new file, // cache it in a buffer and write to the file at the end. - uint64_t newsize = ParseInt64(patch.data() + 24); + uint64_t newsize = ParseInt64(patch_data + 24); new_file.reset(new BufferFile(std::move(new_file), newsize)); } - return bspatch(old_file, new_file, patch.data(), patch_size); + return bspatch(old_file, new_file, patch_data, patch_size); } // Patch |old_data| with |patch_data| and save it by calling sink function. @@ -19,6 +19,13 @@ int bspatch(const char* old_filename, const char* old_extents, const char* new_extents); +int bspatch(const char* old_filename, + const char* new_filename, + const uint8_t* patch_data, + size_t patch_size, + const char* old_extents, + const char* new_extents); + int bspatch(const uint8_t* old_data, size_t old_size, const uint8_t* patch_data, |