diff options
author | René Scharfe <rene.scharfe@lsrfire.ath.cx> | 2009-11-22 17:15:29 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-11-22 16:22:02 -0800 |
commit | 37bb5d744309df6ff05ea5f34112082cdc301d69 (patch) | |
tree | 5962f15b720baccff5a2110b0d64081641e19f0f /utf8.c | |
parent | b48275998399561780af85d429da3caceeecd2fe (diff) | |
download | git-37bb5d744309df6ff05ea5f34112082cdc301d69.tar.gz |
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 <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'utf8.c')
-rw-r--r-- | utf8.c | 26 |
1 files changed, 17 insertions, 9 deletions
@@ -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; } |