diff --git a/src/strbuf.c b/src/strbuf.c index 0e9b397..483744b 100644 --- a/src/strbuf.c +++ b/src/strbuf.c @@ -102,6 +102,14 @@ void strbuf_append_ch(strbuf_t *s, char ch) { s->buf[s->len] = '\0'; } +void strbuf_append_repeat(strbuf_t *s, char ch, size_t len) { + + strbuf_expand(s, len); + memset(s->buf + s->len, ch, len); + s->len += len; + s->buf[s->len] = '\0'; +} + void strbuf_rchop(strbuf_t *s, char ch) { int i; diff --git a/src/strbuf.h b/src/strbuf.h index 534f976..46dcb8c 100644 --- a/src/strbuf.h +++ b/src/strbuf.h @@ -41,6 +41,8 @@ void strbuf_append_str(strbuf_t *s, const char *str); void strbuf_append_ch(strbuf_t *s, char ch); +void strbuf_append_repeat(strbuf_t *s, char ch, size_t len); + void strbuf_rchop(strbuf_t *s, char ch); void strbuf_term(strbuf_t *s, char ch); diff --git a/test/t_strbuf.c b/test/t_strbuf.c index 6a82866..cc46481 100644 --- a/test/t_strbuf.c +++ b/test/t_strbuf.c @@ -105,14 +105,14 @@ void test_trim() { print_strbuf(&b); - strbuf_append(&b, " ", 4); + strbuf_append_repeat(&b, ' ', 4); strbuf_append(&b, "abcdef", 6); print_strbuf(&b); strbuf_append(&b, "012345678901234567890123456789", 30); strbuf_append_ch(&b, 'a'); - strbuf_append_str(&b, " "); + strbuf_append_repeat(&b, ' ', 6); print_strbuf(&b);