A subsequent patch will require the ability to add different prefixes to different lines (depending on their contents), so make this functionality available from outside strbuf.c. The function name is chosen to avoid a conflict with the existing function named strbuf_add_lines(). Signed-off-by: Jonathan Tan <jonathantanmy@xxxxxxxxxx> --- strbuf.c | 22 +++++++++++----------- strbuf.h | 4 ++++ 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/strbuf.c b/strbuf.c index 2088f7800a..d5ee8874f8 100644 --- a/strbuf.c +++ b/strbuf.c @@ -340,24 +340,24 @@ void strbuf_addf(struct strbuf *sb, const char *fmt, ...) va_end(ap); } -static void add_lines(struct strbuf *out, - const char *prefix1, - const char *prefix2, - const char *buf, size_t size) +void strbuf_add_lines_varied_prefix(struct strbuf *sb, + const char *default_prefix, + const char *tab_nl_prefix, + const char *buf, size_t size) { while (size) { const char *prefix; const char *next = memchr(buf, '\n', size); next = next ? (next + 1) : (buf + size); - prefix = ((prefix2 && (buf[0] == '\n' || buf[0] == '\t')) - ? prefix2 : prefix1); - strbuf_addstr(out, prefix); - strbuf_add(out, buf, next - buf); + prefix = (buf[0] == '\n' || buf[0] == '\t') + ? tab_nl_prefix : default_prefix; + strbuf_addstr(sb, prefix); + strbuf_add(sb, buf, next - buf); size -= next - buf; buf = next; } - strbuf_complete_line(out); + strbuf_complete_line(sb); } void strbuf_add_commented_lines(struct strbuf *out, @@ -370,7 +370,7 @@ void strbuf_add_commented_lines(struct strbuf *out, xsnprintf(prefix1, sizeof(prefix1), "%c ", comment_line_char); xsnprintf(prefix2, sizeof(prefix2), "%c", comment_line_char); } - add_lines(out, prefix1, prefix2, buf, size); + strbuf_add_lines_varied_prefix(out, prefix1, prefix2, buf, size); } void strbuf_commented_addf(struct strbuf *sb, @@ -751,7 +751,7 @@ ssize_t strbuf_read_file(struct strbuf *sb, const char *path, size_t hint) void strbuf_add_lines(struct strbuf *out, const char *prefix, const char *buf, size_t size) { - add_lines(out, prefix, NULL, buf, size); + strbuf_add_lines_varied_prefix(out, prefix, prefix, buf, size); } void strbuf_addstr_xml_quoted(struct strbuf *buf, const char *s) diff --git a/strbuf.h b/strbuf.h index 4547efa62e..a9333ac1ad 100644 --- a/strbuf.h +++ b/strbuf.h @@ -601,6 +601,10 @@ void strbuf_add_lines(struct strbuf *sb, const char *prefix, const char *buf, size_t size); +void strbuf_add_lines_varied_prefix(struct strbuf *sb, + const char *default_prefix, + const char *tab_nl_prefix, + const char *buf, size_t size); /** * Append s to sb, with the characters '<', '>', '&' and '"' converted -- 2.42.0.820.g83a721a137-goog