diff options
Diffstat (limited to 'vendor/librune/lib/utf8/u8set.c')
-rw-r--r-- | vendor/librune/lib/utf8/u8set.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/vendor/librune/lib/utf8/u8set.c b/vendor/librune/lib/utf8/u8set.c new file mode 100644 index 0000000..0dfba2c --- /dev/null +++ b/vendor/librune/lib/utf8/u8set.c @@ -0,0 +1,24 @@ +#include <string.h> + +#include "utf8.h" + +#include "internal/common.h" + +size_t +u8set(const char8_t *s, rune ch, size_t n) +{ + int m; + char8_t buf[U8_LEN_MAX]; + + if (n == 0) + return 0; + if (ch <= _1B_MAX) { + memset((char *)s, ch, n); + return n; + } + m = rtou8(buf, ch, sizeof(buf)); + for (size_t i = 0; i < n; i += m) + memcpy((char *)s + i, buf, m); + + return n - n % m; +} |