summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/git2/patch.h10
-rw-r--r--src/diff_print.c12
2 files changed, 20 insertions, 2 deletions
diff --git a/include/git2/patch.h b/include/git2/patch.h
index e09f625c0..e5dd5d8d4 100644
--- a/include/git2/patch.h
+++ b/include/git2/patch.h
@@ -242,6 +242,16 @@ GIT_EXTERN(int) git_patch_to_str(
char **string,
git_patch *patch);
+/**
+ * Get the content of a patch as a single diff text.
+ *
+ * @param out The git_buf to be filled in
+ * @param patch A git_patch representing changes to one file
+ * @return 0 on success, <0 on failure.
+ */
+GIT_EXTERN(int) git_patch_to_buf(
+ git_buf *out,
+ git_patch *patch);
GIT_END_DECL
diff --git a/src/diff_print.c b/src/diff_print.c
index 7a70e2b18..0ab21d033 100644
--- a/src/diff_print.c
+++ b/src/diff_print.c
@@ -452,7 +452,15 @@ static int diff_print_to_buffer_cb(
return git_buf_put(output, line->content, line->content_len);
}
-/* print a git_patch to a string buffer */
+/* print a git_patch to a git_buf */
+int git_patch_to_buf(
+ git_buf *out,
+ git_patch *patch)
+{
+ return git_patch_print(patch, diff_print_to_buffer_cb, out);
+}
+
+/* print a git_patch to a char* */
int git_patch_to_str(
char **string,
git_patch *patch)
@@ -460,7 +468,7 @@ int git_patch_to_str(
int error;
git_buf output = GIT_BUF_INIT;
- if (!(error = git_patch_print(patch, diff_print_to_buffer_cb, &output)))
+ if (!(error = git_patch_to_buf(&output, patch)))
*string = git_buf_detach(&output);
else {
git_buf_free(&output);