From: Stephan Bosch Date: Fri, 21 Mar 2025 04:48:48 +0000 (+0100) Subject: lib: unichar - Move uni_ucs4_decompose_one_utf8() to unicode-transform.c X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cb02d59a25b8536854f96b39cf679db85a8ac3dc;p=thirdparty%2Fdovecot%2Fcore.git lib: unichar - Move uni_ucs4_decompose_one_utf8() to unicode-transform.c --- diff --git a/src/lib/unichar.c b/src/lib/unichar.c index 43da11443e..e1aec6371e 100644 --- a/src/lib/unichar.c +++ b/src/lib/unichar.c @@ -239,28 +239,6 @@ unichar_t uni_ucs4_to_titlecase(unichar_t chr) #include "unicode-transform.c" -static void -uni_ucs4_decompose_one_utf8(unichar_t chr, bool canonical, buffer_t *output) -{ - const unichar_t *decomp; - size_t len, i; - - if (chr >= HANGUL_FIRST && chr <= HANGUL_LAST) { - uni_ucs4_decompose_hangul_utf8(chr, output); - return; - } - - len = unicode_code_point_get_full_decomposition(chr, canonical, - &decomp); - if (len == 0) { - uni_ucs4_to_utf8_c(chr, output); - return; - } - - for (i = 0; i < len; i++) - uni_ucs4_to_utf8_c(decomp[i], output); -} - static void output_add_replacement_char(buffer_t *output) { if (output->used >= UTF8_REPLACEMENT_CHAR_LEN && diff --git a/src/lib/unicode-transform.c b/src/lib/unicode-transform.c index 5bc2bff00a..6bdcd39a28 100644 --- a/src/lib/unicode-transform.c +++ b/src/lib/unicode-transform.c @@ -52,3 +52,25 @@ static void uni_ucs4_decompose_hangul_utf8(unichar_t chr, buffer_t *output) for (i = 0; i < len; i++) uni_ucs4_to_utf8_c(buf[i], output); } + +static void +uni_ucs4_decompose_one_utf8(unichar_t chr, bool canonical, buffer_t *output) +{ + const unichar_t *decomp; + size_t len, i; + + if (chr >= HANGUL_FIRST && chr <= HANGUL_LAST) { + uni_ucs4_decompose_hangul_utf8(chr, output); + return; + } + + len = unicode_code_point_get_full_decomposition(chr, canonical, + &decomp); + if (len == 0) { + uni_ucs4_to_utf8_c(chr, output); + return; + } + + for (i = 0; i < len; i++) + uni_ucs4_to_utf8_c(decomp[i], output); +}