[PATCH v4 06/12] sequencer.c: require a conforming footer to be preceded by a blank line
- From
Brandon Casey <drafnel@gmail.com>
- Date
- Feb 12, 2013, 10:17 UTC
- Message-ID
- <1360664260-11803-7-git-send-email-drafnel@gmail.com>
- In-Reply-To
- <1360664260-11803-1-git-send-email-drafnel@gmail.com>
Currently, append_signoff() performs a search for the last line of the commit buffer by searching back from the end until it hits a newline. If it reaches the beginning of the buffer without finding a newline, that means either the commit message was empty, or there was only one line in it. In this case, append_signoff will skip the call to has_conforming_footer since it already knows that it is necessary to append a newline before appending the sob.
Let's perform this function inside of has_conforming_footer where it appropriately belongs and generalize it so that we require that the footer paragraph be an actual distinct paragraph separated by a blank line.
Signed-off-by: Brandon Casey <drafnel@gmail.com> --- sequencer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/sequencer.c b/sequencer.c index 93495b0..178e84b 100644 --- a/sequencer.c +++ b/sequencer.c @@ -1065,6 +1065,10 @@ static int has_conforming_footer(struct strbuf *sb, int ignore_footer) prev = ch; } + /* require at least one blank line */ + if (prev != '\n' || buf[i] != '\n') + return 0; + /* advance to start of last paragraph */ while (i < len - 1 && buf[i] == '\n') i++; @@ -1093,7 +1097,7 @@ void append_signoff(struct strbuf *msgbuf, int ignore_footer) for (i = msgbuf->len - 1 - ignore_footer; i > 0 && msgbuf->buf[i - 1] != '\n'; i--) ; /* do nothing */ if (prefixcmp(msgbuf->buf + i, sob.buf)) { - if (!i || !has_conforming_footer(msgbuf, ignore_footer)) + if (!has_conforming_footer(msgbuf, ignore_footer)) strbuf_splice(msgbuf, msgbuf->len - ignore_footer, 0, "\n", 1); strbuf_splice(msgbuf, msgbuf->len - ignore_footer, 0, sob.buf, sob.len); }
-- 1.8.1.3.579.gd9af3b6