From: Thomas Rast Date: Mon, 16 Jan 2012 10:53:01 +0000 (+0100) Subject: mailinfo: with -b, keep space after [foo] X-Git-Tag: v1.7.10-rc0~143^2 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/ee2d1cb402a7ccda0028b221f2252801b3cb7eef?hp=f7e5ea171b693bf5fc88e059d9d4af3753c09143 mailinfo: with -b, keep space after [foo] The logic for the -b mode, where [PATCH] is dropped but [foo] is not, silently ate all spaces after the ]. Fix this by keeping the next isspace() character, if there is any. Being more thorough is pointless, as the later cleanup_space() call will normalize any sequence of whitespace to a single ' '. Signed-off-by: Thomas Rast Signed-off-by: Junio C Hamano --- diff --git a/builtin/mailinfo.c b/builtin/mailinfo.c index bfb32b7233..eaf9e157a3 100644 --- a/builtin/mailinfo.c +++ b/builtin/mailinfo.c @@ -250,8 +250,17 @@ static void cleanup_subject(struct strbuf *subject) (7 <= remove && memmem(subject->buf + at, remove, "PATCH", 5))) strbuf_remove(subject, at, remove); - else + else { at += remove; + /* + * If the input had a space after the ], keep + * it. We don't bother with finding the end of + * the space, since we later normalize it + * anyway. + */ + if (isspace(subject->buf[at])) + at += 1; + } continue; } break; diff --git a/t/t4150-am.sh b/t/t4150-am.sh index efcff3c51d..a087254f64 100755 --- a/t/t4150-am.sh +++ b/t/t4150-am.sh @@ -244,7 +244,7 @@ test_expect_success 'am --keep really keeps the subject' ' grep "Re: Re: Re: \[PATCH 1/5 v2\] \[foo\] third" actual ' -test_expect_failure 'am --keep-non-patch really keeps the non-patch part' ' +test_expect_success 'am --keep-non-patch really keeps the non-patch part' ' rm -fr .git/rebase-apply && git reset --hard && git checkout HEAD^ &&