// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_ZUCCHINI_ZUCCHINI_INTEGRATION_H_ #define COMPONENTS_ZUCCHINI_ZUCCHINI_INTEGRATION_H_ #include "base/files/file.h" #include "base/files/file_path.h" #include "components/zucchini/zucchini.h" namespace zucchini { // Applies the patch in |patch_file| to the bytes in |old_file| and writes the // result to |new_file|. Since this uses memory mapped files, crashes are // expected in case of I/O errors. On Windows, |new_file| is kept iff returned // code is kStatusSuccess or if |force_keep == true|, and is deleted otherwise. // For UNIX systems the caller needs to do cleanup since it has ownership of the // base::File params and Zucchini has no knowledge of which base::FilePath to // delete. status::Code Apply(base::File&& old_file, base::File&& patch_file, base::File&& new_file, bool force_keep = false); // Applies the patch in |patch_path| to the bytes in |old_path| and writes the // result to |new_path|. Since this uses memory mapped files, crashes are // expected in case of I/O errors. |new_path| is kept iff returned code is // kStatusSuccess or if |force_keep == true|, and is deleted otherwise. status::Code Apply(const base::FilePath& old_path, const base::FilePath& patch_path, const base::FilePath& new_path, bool force_keep = false); } // namespace zucchini #endif // COMPONENTS_ZUCCHINI_ZUCCHINI_INTEGRATION_H_