diff options
author | João Valverde <j@v6e.pt> | 2022-12-14 19:50:30 +0000 |
---|---|---|
committer | João Valverde <j@v6e.pt> | 2022-12-15 11:08:41 +0000 |
commit | ea8b5fb024d4a8b77648c367b8c8593e6bd65fca (patch) | |
tree | 1bf793ace55cef021a2d8a7610d82ddad6270e91 /wsutil | |
parent | 1f3452983937d3cb557741cf7f236000be34c41c (diff) |
wmem: Add wmem_strbuf_append_c_count()
Diffstat (limited to 'wsutil')
-rw-r--r-- | wsutil/wmem/wmem_strbuf.c | 11 | ||||
-rw-r--r-- | wsutil/wmem/wmem_strbuf.h | 4 | ||||
-rw-r--r-- | wsutil/wmem/wmem_test.c | 4 |
3 files changed, 19 insertions, 0 deletions
diff --git a/wsutil/wmem/wmem_strbuf.c b/wsutil/wmem/wmem_strbuf.c index 8111f01d00..f04ecb7058 100644 --- a/wsutil/wmem/wmem_strbuf.c +++ b/wsutil/wmem/wmem_strbuf.c @@ -218,6 +218,17 @@ wmem_strbuf_append_c(wmem_strbuf_t *strbuf, const gchar c) } void +wmem_strbuf_append_c_count(wmem_strbuf_t *strbuf, const gchar c, size_t count) +{ + wmem_strbuf_grow(strbuf, count); + + while (count-- > 0) { + strbuf->str[strbuf->len++] = c; + } + strbuf->str[strbuf->len] = '\0'; +} + +void wmem_strbuf_append_unichar(wmem_strbuf_t *strbuf, const gunichar c) { gchar buf[6]; diff --git a/wsutil/wmem/wmem_strbuf.h b/wsutil/wmem/wmem_strbuf.h index 68c6cefe4c..68bb62f584 100644 --- a/wsutil/wmem/wmem_strbuf.h +++ b/wsutil/wmem/wmem_strbuf.h @@ -100,6 +100,10 @@ wmem_strbuf_append_c(wmem_strbuf_t *strbuf, const gchar c); WS_DLL_PUBLIC void +wmem_strbuf_append_c_count(wmem_strbuf_t *strbuf, const gchar c, size_t count); + +WS_DLL_PUBLIC +void wmem_strbuf_append_unichar(wmem_strbuf_t *strbuf, const gunichar c); #define wmem_strbuf_append_unichar_repl(buf) \ diff --git a/wsutil/wmem/wmem_test.c b/wsutil/wmem/wmem_test.c index dfa6895260..c887db9e3d 100644 --- a/wsutil/wmem/wmem_test.c +++ b/wsutil/wmem/wmem_test.c @@ -1112,6 +1112,10 @@ wmem_test_strbuf(void) g_assert_cmpstr(wmem_strbuf_get_str(strbuf), ==, "TESTFUZZ3aq\xC2\xA9"); g_assert_cmpuint(wmem_strbuf_get_len(strbuf), ==, 13); + wmem_strbuf_append_c_count(strbuf, '+', 8); + g_assert_cmpstr(wmem_strbuf_get_str(strbuf), ==, "TESTFUZZ3aq\xC2\xA9++++++++"); + g_assert_cmpuint(wmem_strbuf_get_len(strbuf), ==, 21); + wmem_strbuf_truncate(strbuf, 32); wmem_strbuf_truncate(strbuf, 24); wmem_strbuf_truncate(strbuf, 16); |