Files
bsdiff/patch_writer_factory.cc
Tianjie Xu 77833b6477 Allow bsdiff to accept multiple compressors
We modified the patch writer to have the capability to produce the smallest
patch if multiple compressors are given. This type is supported for bsdf2
format only.

Example usage:
bsdiff --format=bsdf2 --type=bz2:brotli <src_file> <tgt_file> <patch_file>

Test: diff & patch an apk file

Change-Id: Icd4322f21975b82c5ee09f8feb9321f52c9813a4
2018-03-13 19:10:13 -07:00

49 lines
1.5 KiB
C++

// Copyright 2017 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "bsdiff/patch_writer_factory.h"
#include "bsdiff/endsley_patch_writer.h"
#include "bsdiff/patch_writer.h"
namespace bsdiff {
std::unique_ptr<PatchWriterInterface> CreateBsdiffPatchWriter(
const std::string& patch_filename) {
return std::unique_ptr<PatchWriterInterface>(
new BsdiffPatchWriter(patch_filename));
}
std::unique_ptr<PatchWriterInterface> CreateBSDF2PatchWriter(
const std::string& patch_filename,
CompressorType type,
int brotli_quality) {
return CreateBSDF2PatchWriter(
patch_filename, std::vector<CompressorType>{type}, brotli_quality);
}
std::unique_ptr<PatchWriterInterface> CreateBSDF2PatchWriter(
const std::string& patch_filename,
const std::vector<CompressorType>& types,
int brotli_quality) {
return std::unique_ptr<PatchWriterInterface>(
new BsdiffPatchWriter(patch_filename, types, brotli_quality));
}
std::unique_ptr<PatchWriterInterface> CreateEndsleyPatchWriter(
std::vector<uint8_t>* patch,
CompressorType type,
int brotli_quality) {
return std::unique_ptr<PatchWriterInterface>(
new EndsleyPatchWriter(patch, type, brotli_quality));
}
std::unique_ptr<PatchWriterInterface> CreateEndsleyPatchWriter(
std::vector<uint8_t>* patch) {
return std::unique_ptr<PatchWriterInterface>(
new EndsleyPatchWriter(patch, CompressorType::kNoCompression, 0));
}
} // namespace bsdiff