Skip to content

Commit db7f930

Browse files
peffgitster
authored andcommitted
strbuf: simplify comment-handling in add_lines() helper
In strbuf_add_commented_lines(), we prepare two strings with potential prefixes: one with just the comment char, and one with an additional space. In the add_lines() helper, we use the one without the extra space for blank lines or lines starting with a tab. While passing in two separate prefixes to the helper is very flexible, it's more flexibility than we actually use (or are likely to use, since the rules inside add_lines() only make sense if "prefix2" is a variant of "prefix1" without the extra space). And setting up the two strings makes refactoring in strbuf_add_commented_lines() awkward. Instead, let's pass in a single string, and just let add_lines() add the extra space to the result as appropriate. We do still need to pass in a flag to trigger this behavior. The helper is shared by strbuf_add_lines(), which passes in a NULL "prefix2" to inhibit this extra handling. Signed-off-by: Jeff King <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 727565e commit db7f930

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

strbuf.c

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -340,18 +340,17 @@ void strbuf_addf(struct strbuf *sb, const char *fmt, ...)
340340
}
341341

342342
static void add_lines(struct strbuf *out,
343-
const char *prefix1,
344-
const char *prefix2,
345-
const char *buf, size_t size)
343+
const char *prefix,
344+
const char *buf, size_t size,
345+
int space_after_prefix)
346346
{
347347
while (size) {
348-
const char *prefix;
349348
const char *next = memchr(buf, '\n', size);
350349
next = next ? (next + 1) : (buf + size);
351350

352-
prefix = ((prefix2 && (buf[0] == '\n' || buf[0] == '\t'))
353-
? prefix2 : prefix1);
354351
strbuf_addstr(out, prefix);
352+
if (space_after_prefix && buf[0] != '\n' && buf[0] != '\t')
353+
strbuf_addch(out, ' ');
355354
strbuf_add(out, buf, next - buf);
356355
size -= next - buf;
357356
buf = next;
@@ -362,14 +361,11 @@ static void add_lines(struct strbuf *out,
362361
void strbuf_add_commented_lines(struct strbuf *out, const char *buf,
363362
size_t size, char comment_line_char)
364363
{
365-
static char prefix1[3];
366-
static char prefix2[2];
364+
static char prefix[2];
367365

368-
if (prefix1[0] != comment_line_char) {
369-
xsnprintf(prefix1, sizeof(prefix1), "%c ", comment_line_char);
370-
xsnprintf(prefix2, sizeof(prefix2), "%c", comment_line_char);
371-
}
372-
add_lines(out, prefix1, prefix2, buf, size);
366+
if (prefix[0] != comment_line_char)
367+
xsnprintf(prefix, sizeof(prefix), "%c", comment_line_char);
368+
add_lines(out, prefix, buf, size, 1);
373369
}
374370

375371
void strbuf_commented_addf(struct strbuf *sb, char comment_line_char,
@@ -750,7 +746,7 @@ ssize_t strbuf_read_file(struct strbuf *sb, const char *path, size_t hint)
750746
void strbuf_add_lines(struct strbuf *out, const char *prefix,
751747
const char *buf, size_t size)
752748
{
753-
add_lines(out, prefix, NULL, buf, size);
749+
add_lines(out, prefix, buf, size, 0);
754750
}
755751

756752
void strbuf_addstr_xml_quoted(struct strbuf *buf, const char *s)

0 commit comments

Comments
 (0)