/* * 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_patch_parse_h__ #define INCLUDE_patch_parse_h__ typedef struct { git_refcount rc; /* Original content buffer */ const char *content; size_t content_len; git_patch_options opts; /* The remaining (unparsed) buffer */ const char *remain; size_t remain_len; const char *line; size_t line_len; size_t line_num; } git_patch_parse_ctx; extern git_patch_parse_ctx *git_patch_parse_ctx_init( const char *content, size_t content_len, const git_patch_options *opts); extern void git_patch_parse_ctx_free(git_patch_parse_ctx *ctx); /** * Create a patch for a single file from the contents of a patch buffer. * * @param out The patch to be created * @param contents The contents of a patch file * @param contents_len The length of the patch file * @param opts The git_patch_options * @return 0 on success, <0 on failure. */ extern int git_patch_from_buffer( git_patch **out, const char *contents, size_t contents_len, const git_patch_options *opts); extern int git_patch_parse( git_patch **out, git_patch_parse_ctx *ctx); extern int git_patch_parsed_from_diff(git_patch **, git_diff *, size_t); #endif