From 9bb28ab3be23aa486cff6ce024a88e7b3e343fa4 Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Sat, 14 Sep 2024 14:05:46 -0400 Subject: dstring: New dstrepeat() function --- src/dstring.c | 17 +++++++++++++++++ src/dstring.h | 5 +++++ 2 files changed, 22 insertions(+) (limited to 'src') diff --git a/src/dstring.c b/src/dstring.c index 36ed2c7..af499fd 100644 --- a/src/dstring.c +++ b/src/dstring.c @@ -278,3 +278,20 @@ void dstrfree(dchar *dstr) { free(dstrheader(dstr)); } } + +dchar *dstrepeat(const char *str, size_t n) { + size_t len = strlen(str); + dchar *ret = dstralloc(n * len); + if (!ret) { + return NULL; + } + + for (size_t i = 0; i < n; ++i) { + if (dstrxcat(&ret, str, len) < 0) { + dstrfree(ret); + return NULL; + } + } + + return ret; +} diff --git a/src/dstring.h b/src/dstring.h index 6d50bc8..79458e4 100644 --- a/src/dstring.h +++ b/src/dstring.h @@ -320,4 +320,9 @@ int dstrescat(dchar **dest, const char *str, enum wesc_flags flags); */ int dstrnescat(dchar **dest, const char *str, size_t n, enum wesc_flags flags); +/** + * Repeat a string n times. + */ +dchar *dstrepeat(const char *str, size_t n); + #endif // BFS_DSTRING_H -- cgit v1.2.3