Mercurial > dovecot > original-hg > dovecot-1.2
changeset 9603:5efba9f9f0a7 HEAD
Added a global utf8_replacement_char variable.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 20 Aug 2010 20:37:31 +0100 |
parents | cc7aa7a4dd6d |
children | cf0da2cd31fb |
files | src/lib/unichar.c src/lib/unichar.h |
diffstat | 2 files changed, 10 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib/unichar.c Thu Aug 19 18:06:22 2010 +0100 +++ b/src/lib/unichar.c Fri Aug 20 20:37:31 2010 +0100 @@ -10,6 +10,9 @@ #define HANGUL_FIRST 0xac00 #define HANGUL_LAST 0xd7a3 +const unsigned char utf8_replacement_char[UTF8_REPLACEMENT_CHAR_LEN] = + { 0xef, 0xbf, 0xbd }; /* 0xfffd */ + static const uint8_t utf8_non1_bytes[256 - 192 - 2] = { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1 @@ -262,18 +265,14 @@ static void output_add_replacement_char(buffer_t *output) { - /* 0xfffd */ - static const unsigned char replacement_utf8[] = { 0xef, 0xbf, 0xbd }; -#define REPLACEMENT_UTF8_LEN 3 - - if (output->used >= REPLACEMENT_UTF8_LEN && + if (output->used >= UTF8_REPLACEMENT_CHAR_LEN && memcmp(CONST_PTR_OFFSET(output->data, - output->used - REPLACEMENT_UTF8_LEN), - replacement_utf8, REPLACEMENT_UTF8_LEN) == 0) { + output->used - UTF8_REPLACEMENT_CHAR_LEN), + utf8_replacement_char, UTF8_REPLACEMENT_CHAR_LEN) == 0) { /* don't add the replacement char multiple times */ return; } - buffer_append(output, replacement_utf8, REPLACEMENT_UTF8_LEN); + buffer_append(output, utf8_replacement_char, UTF8_REPLACEMENT_CHAR_LEN); } int uni_utf8_to_decomposed_titlecase(const void *_input, size_t max_len,
--- a/src/lib/unichar.h Thu Aug 19 18:06:22 2010 +0100 +++ b/src/lib/unichar.h Fri Aug 20 20:37:31 2010 +0100 @@ -22,9 +22,12 @@ (UTF16_SURROGATE_LOW_FIRST + \ (((chr) - UTF16_SURROGATE_BASE) & UTF16_SURROGATE_MASK)) +#define UTF8_REPLACEMENT_CHAR_LEN 3 + typedef uint32_t unichar_t; ARRAY_DEFINE_TYPE(unichars, unichar_t); +extern const unsigned char utf8_replacement_char[UTF8_REPLACEMENT_CHAR_LEN]; extern const uint8_t *const uni_utf8_non1_bytes; /* Returns number of characters in a NUL-terminated unicode string */