Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/message.c')
-rw-r--r--src/message.c31
1 files changed, 28 insertions, 3 deletions
diff --git a/src/message.c b/src/message.c
index aa0220fd0..0eff426f2 100644
--- a/src/message.c
+++ b/src/message.c
@@ -1,12 +1,11 @@
/*
- * Copyright (C) 2009-2012 the libgit2 contributors
+ * 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.
*/
#include "message.h"
-#include <ctype.h>
static size_t line_length_without_trailing_spaces(const char *line, size_t len)
{
@@ -22,7 +21,7 @@ static size_t line_length_without_trailing_spaces(const char *line, size_t len)
/* Greatly inspired from git.git "stripspace" */
/* see https://github.com/git/git/blob/497215d8811ac7b8955693ceaad0899ecd894ed2/builtin/stripspace.c#L4-67 */
-int git_message_prettify(git_buf *message_out, const char *message, int strip_comments)
+int git_message__prettify(git_buf *message_out, const char *message, int strip_comments)
{
const size_t message_len = strlen(message);
@@ -59,3 +58,29 @@ int git_message_prettify(git_buf *message_out, const char *message, int strip_co
return git_buf_oom(message_out) ? -1 : 0;
}
+
+int git_message_prettify(char *message_out, size_t buffer_size, const char *message, int strip_comments)
+{
+ git_buf buf = GIT_BUF_INIT;
+ ssize_t out_size = -1;
+
+ if (message_out && buffer_size)
+ *message_out = '\0';
+
+ if (git_message__prettify(&buf, message, strip_comments) < 0)
+ goto done;
+
+ if (message_out && buf.size + 1 > buffer_size) { /* +1 for NUL byte */
+ giterr_set(GITERR_INVALID, "Buffer too short to hold the cleaned message");
+ goto done;
+ }
+
+ if (message_out)
+ git_buf_copy_cstr(message_out, buffer_size, &buf);
+
+ out_size = buf.size + 1;
+
+done:
+ git_buf_free(&buf);
+ return (int)out_size;
+}