| // Copyright 2015 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. |
| |
| #ifndef _BSDIFF_BSDIFF_H_ |
| #define _BSDIFF_BSDIFF_H_ |
| |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include "bsdiff/common.h" |
| #include "bsdiff/patch_writer_interface.h" |
| #include "bsdiff/suffix_array_index_interface.h" |
| |
| namespace bsdiff { |
| |
| // Generate bsdiff patch from |old_buf| to |new_buf|, save the patch file to |
| // |patch_filename|. Returns 0 on success. |
| // |sai_cache| can be used to cache the suffix array if the same |old_buf| is |
| // used repeatedly, pass nullptr if not needed. |
| BSDIFF_EXPORT |
| int bsdiff(const uint8_t* old_buf, |
| size_t oldsize, |
| const uint8_t* new_buf, |
| size_t newsize, |
| const char* patch_filename, |
| SuffixArrayIndexInterface** sai_cache); |
| |
| BSDIFF_EXPORT |
| int bsdiff(const uint8_t* old_buf, |
| size_t oldsize, |
| const uint8_t* new_buf, |
| size_t newsize, |
| PatchWriterInterface* patch, |
| SuffixArrayIndexInterface** sai_cache); |
| |
| // The |min_length| parameter determines the required minimum length of a match |
| // to be considered instead of emitting mismatches. The minimum value is 9, |
| // since smaller matches are always ignored. If a smaller value is passed, the |
| // minimum value of 9 will be used instead. A very large value (past 30) will |
| // give increasingly bad results as you increase the minimum length since legit |
| // matches between the old and new data will be ignored. The exact best value |
| // depends on the data, but the sweet spot should be between 9 and 20 for the |
| // examples tested. |
| BSDIFF_EXPORT |
| int bsdiff(const uint8_t* old_buf, |
| size_t oldsize, |
| const uint8_t* new_buf, |
| size_t newsize, |
| size_t min_length, |
| PatchWriterInterface* patch, |
| SuffixArrayIndexInterface** sai_cache); |
| |
| } // namespace bsdiff |
| |
| #endif // _BSDIFF_BSDIFF_H_ |