diff options
author | Edward Thomson <ethomson@github.com> | 2016-04-25 12:40:19 -0400 |
---|---|---|
committer | Edward Thomson <ethomson@github.com> | 2016-05-26 13:01:09 -0500 |
commit | 728274904f69fef48752d77c8cf75fc3aaf7808c (patch) | |
tree | 555080de1f33ec4c5afecb71e6a81a0c060e8ca5 | |
parent | 7166bb16659790ae2b398e1e95c752f784f6f1d3 (diff) | |
download | libgit2-728274904f69fef48752d77c8cf75fc3aaf7808c.tar.gz |
Introduce `git_diff_to_buf`
Like `git_patch_to_buf`, provide a simple helper method that can
print an entire diff directory to a `git_buf`.
-rw-r--r-- | include/git2/diff.h | 15 | ||||
-rw-r--r-- | src/diff_print.c | 9 |
2 files changed, 24 insertions, 0 deletions
diff --git a/include/git2/diff.h b/include/git2/diff.h index 880292a1f..005b33965 100644 --- a/include/git2/diff.h +++ b/include/git2/diff.h @@ -1054,6 +1054,21 @@ GIT_EXTERN(int) git_diff_print( git_diff_line_cb print_cb, void *payload); +/** + * Produce the complete formatted text output from a diff into a + * buffer. + * + * @param out A pointer to a user-allocated git_buf that will + * contain the diff text + * @param diff A git_diff generated by one of the above functions. + * @param format A git_diff_format_t value to pick the text format. + * @return 0 on success or error code + */ +GIT_EXTERN(int) git_diff_to_buf( + git_buf *out, + git_diff *diff, + git_diff_format_t format); + /**@}*/ diff --git a/src/diff_print.c b/src/diff_print.c index 5bcb5d016..5a5a70b6f 100644 --- a/src/diff_print.c +++ b/src/diff_print.c @@ -714,6 +714,15 @@ int git_diff_print_callback__to_file_handle( return 0; } +/* print a git_diff to a git_buf */ +int git_diff_to_buf(git_buf *out, git_diff *diff, git_diff_format_t format) +{ + assert(out && diff); + git_buf_sanitize(out); + return git_diff_print( + diff, format, git_diff_print_callback__to_buf, out); +} + /* print a git_patch to an output callback */ int git_patch_print( git_patch *patch, |