aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Casey <drafnel@gmail.com>2013-02-12 02:33:42 -0800
committerJunio C Hamano <gitster@pobox.com>2013-02-12 11:19:34 -0800
commit33f2f9ab4e5c343b21a9e602456e7facabd609a0 (patch)
tree015a402d2713f963552bb2fd284a0c6bacfae62c
parentbab4d1097c8be7d688a53b992232063dbf300fd4 (diff)
downloadgit-33f2f9ab4e5c343b21a9e602456e7facabd609a0.tar.gz
git-33f2f9ab4e5c343b21a9e602456e7facabd609a0.tar.xz
sequencer.c: teach append_signoff to avoid adding a duplicate newline
Teach append_signoff to detect whether a blank line exists at the position that the signed-off-by line will be added, and refrain from adding an additional one if one already exists. Or, add an additional line if one is needed to make sure the new footer is separated from the message body by a blank line. Signed-off-by: Brandon Casey <bcasey@nvidia.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--sequencer.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/sequencer.c b/sequencer.c
index 965b954ba..53ee49a9b 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -1123,8 +1123,19 @@ void append_signoff(struct strbuf *msgbuf, int ignore_footer, unsigned flag)
else
has_footer = has_conforming_footer(msgbuf, &sob, ignore_footer);
- if (!has_footer)
- strbuf_splice(msgbuf, msgbuf->len - ignore_footer, 0, "\n", 1);
+ if (!has_footer) {
+ const char *append_newlines = NULL;
+ size_t len = msgbuf->len - ignore_footer;
+
+ if (len && msgbuf->buf[len - 1] != '\n')
+ append_newlines = "\n\n";
+ else if (len > 1 && msgbuf->buf[len - 2] != '\n')
+ append_newlines = "\n";
+
+ if (append_newlines)
+ strbuf_splice(msgbuf, msgbuf->len - ignore_footer, 0,
+ append_newlines, strlen(append_newlines));
+ }
if (has_footer != 3 && (!no_dup_sob || has_footer != 2))
strbuf_splice(msgbuf, msgbuf->len - ignore_footer, 0,