From a0cd51f0e62cef118c17cfc308ff2a67bef49338 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sun, 25 Jan 2026 16:05:05 +0100 Subject: Add turned MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- libcharconv_mirrored.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'libcharconv_mirrored.c') diff --git a/libcharconv_mirrored.c b/libcharconv_mirrored.c index a95f636..75ae5cb 100644 --- a/libcharconv_mirrored.c +++ b/libcharconv_mirrored.c @@ -35,14 +35,21 @@ libcharconv_mirrored(const char *s, size_t slen, size_t *n, uint_least32_t *cp, continue; } - for (i = 0u; i < sizeof(pairs) / sizeof(*pairs); i++) { - if (c == pairs[i].a) { - c = pairs[i].b; - goto conv; - } - if (c == pairs[i].b) { - c = pairs[i].a; - goto conv; + if (UINT32_C(0x1F031) <= c && c <= UINT32_C(0x1F061)) { + c -= UINT32_C(0x1F031); + c = c % 7u * 7u + c / 7u; + c += UINT32_C(0x1F031); + goto conv; + } else { + for (i = 0u; i < sizeof(pairs) / sizeof(*pairs); i++) { + if (c == pairs[i].a) { + c = pairs[i].b; + goto conv; + } + if (c == pairs[i].b) { + c = pairs[i].a; + goto conv; + } } } -- cgit v1.2.3-70-g09d2