From: Stephan Bosch Date: Fri, 21 Mar 2025 03:49:57 +0000 (+0100) Subject: lib: unichar - Split off uni_ucs4_decompose_hangul() X-Git-Tag: 2.4.2~624 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=19e516ff9ad21726ae055b9901f36a94577581fa;p=thirdparty%2Fdovecot%2Fcore.git lib: unichar - Split off uni_ucs4_decompose_hangul() --- diff --git a/src/lib/unichar.c b/src/lib/unichar.c index d29a632fef..62402a48c8 100644 --- a/src/lib/unichar.c +++ b/src/lib/unichar.c @@ -289,7 +289,7 @@ static bool uni_ucs4_decompose_uni(unichar_t *chr) return TRUE; } -static void uni_ucs4_decompose_hangul_utf8(unichar_t chr, buffer_t *output) +static size_t uni_ucs4_decompose_hangul(unichar_t chr, unichar_t buf[3]) { /* The Unicode Standard, Section 3.12.2: Hangul Syllable Decomposition @@ -311,16 +311,28 @@ static void uni_ucs4_decompose_hangul_utf8(unichar_t chr, buffer_t *output) uint32_t v_part = v_base + v_index; if (t_index == 0) { - uni_ucs4_to_utf8_c(l_part, output); - uni_ucs4_to_utf8_c(v_part, output); - return; + buf[0] = l_part; + buf[1] = v_part; + return 2; } uint32_t t_part = t_base + t_index; - uni_ucs4_to_utf8_c(l_part, output); - uni_ucs4_to_utf8_c(v_part, output); - uni_ucs4_to_utf8_c(t_part, output); + buf[0] = l_part; + buf[1] = v_part; + buf[2] = t_part; + return 3; +} + +static void uni_ucs4_decompose_hangul_utf8(unichar_t chr, buffer_t *output) +{ + unichar_t buf[3]; + size_t len, i; + + len = uni_ucs4_decompose_hangul(chr, buf); + + for (i = 0; i < len; i++) + uni_ucs4_to_utf8_c(buf[i], output); } static bool uni_ucs4_decompose_multi_utf8(unichar_t chr, buffer_t *output)