aboutsummaryrefslogtreecommitdiff
path: root/zucchini_integration.cc
diff options
context:
space:
mode:
authorKelvin Zhang <zhangkelvin@google.com>2021-11-02 21:28:18 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2021-11-02 21:28:18 +0000
commit58b4d19a6b6c8a6790c31bb3d6fcd13a8892239b (patch)
tree0a310ca653ef73c547d80da63c87fcb2c0636bcb /zucchini_integration.cc
parent919a460e14c48a672288254f67db3e0c28166e82 (diff)
parentd9eed84a58f90af50d84b02ca6a38d805b425a95 (diff)
downloadzucchini-58b4d19a6b6c8a6790c31bb3d6fcd13a8892239b.tar.gz
Merge remote-tracking branch 'aosp/upstream-main' into dev am: a90c04389f am: ddc43dc959 am: d9eed84a58
Original change: https://android-review.googlesource.com/c/platform/external/zucchini/+/1877854 Change-Id: I7de3d8374e868066777abb326d3e20c1e4b44803
Diffstat (limited to 'zucchini_integration.cc')
-rw-r--r--zucchini_integration.cc27
1 files changed, 27 insertions, 0 deletions
diff --git a/zucchini_integration.cc b/zucchini_integration.cc
index ff7e792..bf28b3c 100644
--- a/zucchini_integration.cc
+++ b/zucchini_integration.cc
@@ -146,6 +146,22 @@ status::Code ApplyCommon(base::File old_file,
return status::kStatusSuccess;
}
+status::Code VerifyPatchCommon(base::File patch_file,
+ base::FilePath patch_name) {
+ MappedFileReader mapped_patch(std::move(patch_file));
+ if (mapped_patch.HasError()) {
+ LOG(ERROR) << "Error with file " << patch_name.value() << ": "
+ << mapped_patch.error();
+ return status::kStatusFileReadError;
+ }
+ auto patch_reader = EnsemblePatchReader::Create(mapped_patch.region());
+ if (!patch_reader.has_value()) {
+ LOG(ERROR) << "Error reading patch header.";
+ return status::kStatusPatchReadError;
+ }
+ return status::kStatusSuccess;
+}
+
} // namespace
status::Code Generate(base::File old_file,
@@ -206,4 +222,15 @@ status::Code Apply(const base::FilePath& old_path,
std::move(new_file), file_names, force_keep);
}
+status::Code VerifyPatch(base::File patch_file) {
+ return VerifyPatchCommon(std::move(patch_file), base::FilePath());
+}
+
+status::Code VerifyPatch(const base::FilePath& patch_path) {
+ using base::File;
+ File patch_file(patch_path, File::FLAG_OPEN | File::FLAG_READ |
+ base::File::FLAG_SHARE_DELETE);
+ return VerifyPatchCommon(std::move(patch_file), patch_path);
+}
+
} // namespace zucchini