| /* |
| * Copyright (C) the libgit2 contributors. All rights reserved. |
| * |
| * This file is part of libgit2, distributed under the GNU GPL v2 with |
| * a Linking Exception. For full terms see the included COPYING file. |
| */ |
| #ifndef INCLUDE_delta_apply_h__ |
| #define INCLUDE_delta_apply_h__ |
| |
| #include "odb.h" |
| #include "pack.h" |
| |
| /** |
| * Apply a git binary delta to recover the original content. |
| * |
| * @param out the output buffer to receive the original data. |
| * Only out->data and out->len are populated, as this is |
| * the only information available in the delta. |
| * @param base the base to copy from during copy instructions. |
| * @param base_len number of bytes available at base. |
| * @param delta the delta to execute copy/insert instructions from. |
| * @param delta_len total number of bytes in the delta. |
| * @return |
| * - 0 on a successful delta unpack. |
| * - GIT_ERROR if the delta is corrupt or doesn't match the base. |
| */ |
| extern int git__delta_apply( |
| git_rawobj *out, |
| const unsigned char *base, |
| size_t base_len, |
| const unsigned char *delta, |
| size_t delta_len); |
| |
| /** |
| * Read the header of a git binary delta. |
| * |
| * @param delta the delta to execute copy/insert instructions from. |
| * @param delta_len total number of bytes in the delta. |
| * @param base_sz pointer to store the base size field. |
| * @param res_sz pointer to store the result size field. |
| * @return |
| * - 0 on a successful decoding the header. |
| * - GIT_ERROR if the delta is corrupt. |
| */ |
| extern int git__delta_read_header( |
| const unsigned char *delta, |
| size_t delta_len, |
| size_t *base_sz, |
| size_t *res_sz); |
| |
| /** |
| * Read the header of a git binary delta |
| * |
| * This variant reads just enough from the packfile stream to read the |
| * delta header. |
| */ |
| extern int git__delta_read_header_fromstream( |
| size_t *base_sz, |
| size_t *res_sz, |
| git_packfile_stream *stream); |
| |
| #endif |