summaryrefslogtreecommitdiff
path: root/src/commit.c
diff options
context:
space:
mode:
authorVicent Martí <tanoku@gmail.com>2011-06-08 08:09:54 -0700
committerVicent Martí <tanoku@gmail.com>2011-06-08 08:09:54 -0700
commit4e1543ff6e838d6bbf8e36ff6b75f6bb251182b2 (patch)
tree99b243d28cd576a808e3ceaddb41fc237d68d6b0 /src/commit.c
parentae496955d23d8c323259c0e090911d6fa3e2c3dc (diff)
parent858ef372a4378652796d63c8d9af579608950f0a (diff)
downloadlibgit2-4e1543ff6e838d6bbf8e36ff6b75f6bb251182b2.tar.gz
Merge pull request #250 from pegonma/commit_short_message
Commit short message should be the same as git's
Diffstat (limited to 'src/commit.c')
-rw-r--r--src/commit.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/commit.c b/src/commit.c
index bfae0592e..6857eddab 100644
--- a/src/commit.c
+++ b/src/commit.c
@@ -292,6 +292,7 @@ int commit_parse_buffer(git_commit *commit, const void *data, size_t len)
if (buffer < buffer_end) {
const char *line_end;
+ unsigned int i;
size_t message_len;
/* Long message */
@@ -301,12 +302,18 @@ int commit_parse_buffer(git_commit *commit, const void *data, size_t len)
commit->message[message_len] = 0;
/* Short message */
- if((line_end = memchr(buffer, '\n', buffer_end - buffer)) == NULL)
- line_end = buffer_end;
+ if((line_end = strstr(buffer, "\n\n")) == NULL) {
+ /* Cut the last '\n' if there is one */
+ if (message_len && buffer[message_len - 1] == '\n')
+ line_end = buffer_end - 1;
+ else
+ line_end = buffer_end;
+ }
message_len = line_end - buffer;
-
commit->message_short = git__malloc(message_len + 1);
- memcpy(commit->message_short, buffer, message_len);
+ for (i = 0; i < message_len; ++i) {
+ commit->message_short[i] = (buffer[i] == '\n') ? ' ' : buffer[i];
+ }
commit->message_short[message_len] = 0;
}