TODO: should only be enabled explicitly to avoid unexpected trimming Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- And I did not remember I was in interactive rebase mode when I made the series. This patch is for discussion only. My screen seems to flash (I think) printing trailing spaces. pretty.c | 1 + strbuf.c | 29 +++++++++++++++++++++++++++++ strbuf.h | 1 + t/t9010-svn-fe.sh | 2 +- 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/pretty.c b/pretty.c index 6662f52..70f776b 100644 --- a/pretty.c +++ b/pretty.c @@ -1327,6 +1327,7 @@ void format_commit_message(const struct commit *commit, strbuf_expand(sb, format, format_commit_item, &context); rewrap_message_tail(sb, &context, 0, 0, 0); + delete_trailing_whitespace(sb); if (context.message != commit->buffer) free(context.message); diff --git a/strbuf.c b/strbuf.c index 0510f76..e001175 100644 --- a/strbuf.c +++ b/strbuf.c @@ -488,3 +488,32 @@ int fprintf_ln(FILE *fp, const char *fmt, ...) return -1; return ret + 1; } + +void delete_trailing_whitespace(struct strbuf *sb) +{ + char *src = sb->buf, *dst = sb->buf; + char *end = src + sb->len, *anchor = NULL; + while (src < end) { + if (*src == ' ') { + if (anchor) + src++; + else + anchor = src++; + } else if (*src == '\n') { + if (anchor) { + *dst++ = *src++; + anchor = NULL; + } else + *dst++ = *src++; + } else { + if (anchor) { + memcpy(dst, anchor, src - anchor); + dst += src - anchor; + anchor = NULL; + } + *dst++ = *src++; + } + } + sb->len = dst - sb->buf; + sb->buf[sb->len] = '\0'; +} diff --git a/strbuf.h b/strbuf.h index be941ee..75a8908 100644 --- a/strbuf.h +++ b/strbuf.h @@ -42,6 +42,7 @@ static inline void strbuf_setlen(struct strbuf *sb, size_t len) { extern void strbuf_trim(struct strbuf *); extern void strbuf_rtrim(struct strbuf *); extern void strbuf_ltrim(struct strbuf *); +extern void delete_trailing_whitespace(struct strbuf *); extern int strbuf_cmp(const struct strbuf *, const struct strbuf *); extern struct strbuf **strbuf_split_buf(const char *, size_t, diff --git a/t/t9010-svn-fe.sh b/t/t9010-svn-fe.sh index b7eed24..b603e70 100755 --- a/t/t9010-svn-fe.sh +++ b/t/t9010-svn-fe.sh @@ -96,7 +96,7 @@ test_expect_failure PIPE 'empty revision' ' test_expect_success PIPE 'empty properties' ' reinit_git && - printf "rev <nobody, nobody@local>: %s\n" "" "" >expect && + printf "rev <nobody, nobody@local>: %s\n" "" "" | sed "s/ *$//" >expect && cat >emptyprop.dump <<-\EOF && SVN-fs-dump-format-version: 3 -- 1.7.12.1.384.g7b808e7 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html