aboutsummaryrefslogtreecommitdiffstats
path: root/wsutil
diff options
context:
space:
mode:
authorJoão Valverde <j@v6e.pt>2022-12-14 19:50:30 +0000
committerJoão Valverde <j@v6e.pt>2022-12-15 11:08:41 +0000
commitea8b5fb024d4a8b77648c367b8c8593e6bd65fca (patch)
tree1bf793ace55cef021a2d8a7610d82ddad6270e91 /wsutil
parent1f3452983937d3cb557741cf7f236000be34c41c (diff)
wmem: Add wmem_strbuf_append_c_count()
Diffstat (limited to 'wsutil')
-rw-r--r--wsutil/wmem/wmem_strbuf.c11
-rw-r--r--wsutil/wmem/wmem_strbuf.h4
-rw-r--r--wsutil/wmem/wmem_test.c4
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);