Index: src/platform/update_engine/delta_diff_generator.h |
diff --git a/src/platform/update_engine/delta_diff_generator.h b/src/platform/update_engine/delta_diff_generator.h |
index 2c355a42c5f941fb0822729fbbf7a15f15852113..5d422c34f424523d0e712624f2c86963303ef22a 100644 |
--- a/src/platform/update_engine/delta_diff_generator.h |
+++ b/src/platform/update_engine/delta_diff_generator.h |
@@ -7,6 +7,7 @@ |
#include <sys/types.h> |
#include <sys/stat.h> |
+#include <set> |
#include <string> |
#include <vector> |
#include "base/basictypes.h" |
@@ -32,14 +33,19 @@ class DeltaDiffGenerator { |
// Takes a DeltaArchiveManifest as given from EncodeMetadataToProtoBuffer(), |
// fill in the missing fields (DeltaArchiveManifest_File_data_*), and |
// write the full delta out to the output file. |
+ // Any paths in nondiff_paths will be included in full, rather than |
+ // as a diff. This is useful for files that change during postinstall, since |
+ // future updates can't depend on them having remaining unchanged. |
// Returns true on success. |
// If non-empty, the device at force_compress_dev_path will be compressed. |
- static bool EncodeDataToDeltaFile(DeltaArchiveManifest* archive, |
- const std::string& old_path, |
- const std::string& new_path, |
- const std::string& out_file, |
- const std::string& force_compress_dev_path); |
- |
+ static bool EncodeDataToDeltaFile( |
+ DeltaArchiveManifest* archive, |
+ const std::string& old_path, |
+ const std::string& new_path, |
+ const std::string& out_file, |
+ const std::set<std::string>& nondiff_paths, |
+ const std::string& force_compress_dev_path); |
+ |
private: |
// These functions encode all the data about a file that's not already |
// stored in the DeltaArchiveManifest message into the vector 'out'. |
@@ -58,9 +64,15 @@ class DeltaDiffGenerator { |
static bool EncodeFile(const std::string& old_dir, |
const std::string& new_dir, |
const std::string& file_name, |
+ const bool avoid_diff, |
DeltaArchiveManifest_File_DataFormat* out_data_format, |
- std::vector<char>* out); |
+ std::vector<char>* out, |
+ bool* no_change); |
+ // nondiff_paths is passed in to EncodeDataToDeltaFile() with |
+ // paths relative to the installed system (e.g. /etc/fstab), but |
+ // WriteFileDiffsToDeltaFile requires always_full_target_paths to be |
+ // the entire path of the new file. |
// If non-empty, the device at force_compress_dev_path will be compressed. |
static bool WriteFileDiffsToDeltaFile( |
DeltaArchiveManifest* archive, |
@@ -70,6 +82,7 @@ class DeltaDiffGenerator { |
const std::string& new_path, |
FileWriter* out_file_writer, |
int* out_file_length, |
+ std::set<std::string> always_full_target_paths, |
const std::string& force_compress_dev_path); |
// This should never be constructed |