[libgit2-glib] Implemented diff_format_email



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]