#ifdef UNSAFE_BUFFERS_BUILD
#pragma allow_unsafe_buffers
#endif
#include "components/zucchini/zucchini_integration.h"
#include <stdint.h>
#include <utility>
#include "base/containers/span.h"
#include "base/logging.h"
#include "build/build_config.h"
#include "components/zucchini/buffer_view.h"
#include "components/zucchini/mapped_file.h"
#include "components/zucchini/patch_reader.h"
#if BUILDFLAG(IS_WIN)
#include <ntstatus.h>
#include "components/zucchini/exception_filter_helper_win.h"
#endif
namespace zucchini {
namespace {
struct FileNames { … };
status::Code GenerateCommon(base::File old_file,
base::File new_file,
base::File patch_file,
const FileNames& names,
bool force_keep,
bool is_raw,
std::string imposed_matches) { … }
status::Code ApplyCommon(base::File old_file,
base::File patch_file,
base::File new_file,
const FileNames& names,
bool force_keep) { … }
status::Code VerifyPatchCommon(base::File patch_file,
base::FilePath patch_name) { … }
}
status::Code Generate(base::File old_file,
base::File new_file,
base::File patch_file,
bool force_keep,
bool is_raw,
std::string imposed_matches) { … }
status::Code Generate(const base::FilePath& old_path,
const base::FilePath& new_path,
const base::FilePath& patch_path,
bool force_keep,
bool is_raw,
std::string imposed_matches) { … }
status::Code Apply(base::File old_file,
base::File patch_file,
base::File new_file,
bool force_keep) { … }
status::Code Apply(const base::FilePath& old_path,
const base::FilePath& patch_path,
const base::FilePath& new_path,
bool force_keep) { … }
status::Code VerifyPatch(base::File patch_file) { … }
status::Code VerifyPatch(const base::FilePath& patch_path) { … }
}