From 37bb5d744309df6ff05ea5f34112082cdc301d69 Mon Sep 17 00:00:00 2001 From: René Scharfe Date: Sun, 22 Nov 2009 17:15:29 +0100 Subject: strbuf_add_wrapped_text(): factor out strbuf_add_indented_text() Add a new helper function, strbuf_add_indented_text(), to indent text without a width limit, and call it from strbuf_add_wrapped_text(). It respects both indent (applied to the first line) and indent2 (applied to the rest of the lines); indent2 was ignored by the indent-only path of strbuf_add_wrapped_text() before the patch. Two simple test cases are added, one exercising strbuf_add_wrapped_text() and the other strbuf_add_indented_text(). Signed-off-by: Rene Scharfe Signed-off-by: Junio C Hamano --- utf8.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'utf8.c') diff --git a/utf8.c b/utf8.c index 5c18f0c281..01d1869fa3 100644 --- a/utf8.c +++ b/utf8.c @@ -298,6 +298,22 @@ static void print_spaces(struct strbuf *buf, int count) strbuf_write(buf, s, count); } +static void strbuf_add_indented_text(struct strbuf *buf, const char *text, + int indent, int indent2) +{ + if (indent < 0) + indent = 0; + while (*text) { + const char *eol = strchrnul(text, '\n'); + if (*eol == '\n') + eol++; + print_spaces(buf, indent); + strbuf_write(buf, text, eol - text); + text = eol; + indent = indent2; + } +} + /* * Wrap the text, if necessary. The variable indent is the indent for the * first line, indent2 is the indent for all other lines. @@ -311,15 +327,7 @@ int strbuf_add_wrapped_text(struct strbuf *buf, const char *bol = text, *space = NULL; if (width <= 0) { - /* just indent */ - while (*text) { - const char *eol = strchrnul(text, '\n'); - if (*eol == '\n') - eol++; - print_spaces(buf, indent); - strbuf_write(buf, text, eol-text); - text = eol; - } + strbuf_add_indented_text(buf, text, indent, indent2); return 1; } -- cgit v1.2.3