From: Jonathan Nieder Date: Mon, 28 Jan 2013 02:21:48 GMT Subject: Re: [PATCH v3 05/11] sequencer.c: recognize "(cherry picked from ..." as part of s-o-b footer Message-ID: <20130128022148.GG8206@elie.Belkin> In-Reply-To: <1359335515-13818-6-git-send-email-drafnel@gmail.com> Brandon Casey wrote: > Let's detect "(cherry picked from...)" as part of the footer so that we > will produce this: > > Signed-off-by: A U Thor > (cherry picked from da39a3ee5e6b4b0d3255bfef95601890afd80709) > Signed-off-by: C O Mmitter > > instead of this: > > Signed-off-by: A U Thor > (cherry picked from da39a3ee5e6b4b0d3255bfef95601890afd80709) > > Signed-off-by: C O Mmitter Here's the tweak I suggested last time. I think its behavior is slightly better in the "ends with incomplete line" case because it limits the characters examined by is_rfc2822_line() and is_cherry_picked_from_line() not to include buf[len] (which would presumably sometimes be '\0'). diff --git i/sequencer.c w/sequencer.c index 0b5cd18c..fa29c7c5 100644 --- i/sequencer.c +++ w/sequencer.c @@ -1043,9 +1043,7 @@ static int is_cherry_picked_from_line(const char *buf, int len) /* * We only care that it looks roughly like (cherry picked from ...) */ - return !prefixcmp(buf, cherry_picked_prefix) && - (buf[len - 1] == ')' || - (buf[len - 1] == '\n' && buf[len - 2] == ')')); + return !prefixcmp(buf, cherry_picked_prefix) && buf[len - 1] == ')'; } static int has_conforming_footer(struct strbuf *sb, int ignore_footer) @@ -1072,8 +1070,8 @@ static int has_conforming_footer(struct strbuf *sb, int ignore_footer) ; /* do nothing */ k++; - if (!(is_rfc2822_line(buf + i, k - i) || - is_cherry_picked_from_line(buf + i, k - i))) + if (!is_rfc2822_line(buf + i, k - i - 1) && + !is_cherry_picked_from_line(buf + i, k - i - 1)) return 0; } return 1;