[libgit2-glib] Implemented diff_format_email
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgit2-glib] Implemented diff_format_email
- Date: Mon, 21 Jul 2014 08:06:14 +0000 (UTC)
commit c2f34a73d81a0cacd59ea4a6aa778e737174d978
Author: Jesse van den Kieboom <jessevdk gnome org>
Date: Mon Jul 21 10:18:56 2014 +0300
Implemented diff_format_email
libgit2-glib/ggit-diff.c | 42 ++++++++++++++++++++++++++++++++++++++++++
libgit2-glib/ggit-diff.h | 4 ++++
2 files changed, 46 insertions(+), 0 deletions(-)
---
diff --git a/libgit2-glib/ggit-diff.c b/libgit2-glib/ggit-diff.c
index 9de2502..4ae9edf 100644
--- a/libgit2-glib/ggit-diff.c
+++ b/libgit2-glib/ggit-diff.c
@@ -30,6 +30,7 @@
#include "ggit-repository.h"
#include "ggit-diff-file.h"
#include "ggit-diff-find-options.h"
+#include "ggit-diff-format-email-options.h"
#define GGIT_DIFF_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE((object), GGIT_TYPE_DIFF, GgitDiffPrivate))
@@ -594,6 +595,47 @@ ggit_diff_print (GgitDiff *diff,
}
/**
+ * ggit_diff_format_email:
+ * @diff: a #GgitDiff.
+ * @options: a #GgitDiffFormatEmailOptions.
+ * @error: a #GError for error reporting, or %NULL.
+ *
+ * Create an e-mail ready patch from a diff.
+ *
+ * Returns: (transfer full): the patch or %NULL if an error occurred.
+ *
+ **/
+gchar *
+ggit_diff_format_email (GgitDiff *diff,
+ GgitDiffFormatEmailOptions *options,
+ GError **error)
+{
+ gint ret;
+ gchar *retval;
+ git_buf buf = {0,};
+
+ g_return_val_if_fail (GGIT_IS_DIFF (diff), NULL);
+ g_return_val_if_fail (options == NULL || GGIT_IS_DIFF_FORMAT_EMAIL_OPTIONS (options), NULL);
+ g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+ ret = git_diff_format_email (&buf,
+ _ggit_native_get (diff),
+ options ? _ggit_diff_format_email_options_get_diff_format_email_options
(options) : NULL);
+
+ if (ret != GIT_OK)
+ {
+ git_buf_free (&buf);
+ _ggit_error_set (error, ret);
+ return NULL;
+ }
+
+ retval = g_strndup (buf.ptr, buf.size);
+ git_buf_free (&buf);
+
+ return retval;
+}
+
+/**
* ggit_diff_get_num_deltas:
* @diff: a #GgitDiff.
*
diff --git a/libgit2-glib/ggit-diff.h b/libgit2-glib/ggit-diff.h
index 42970cb..fac5e44 100644
--- a/libgit2-glib/ggit-diff.h
+++ b/libgit2-glib/ggit-diff.h
@@ -94,6 +94,10 @@ void ggit_diff_print (GgitDiff *diff,
gpointer *user_data,
GError **error);
+gchar *ggit_diff_format_email (GgitDiff *diff,
+ GgitDiffFormatEmailOptions *options,
+ GError **error);
+
gint ggit_diff_get_num_deltas (GgitDiff *diff);
void ggit_diff_blobs (GgitBlob *old_blob,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]