# HG changeset patch # User Timo Sirainen # Date 1198788985 -7200 # Node ID dcbf6afdf931c8a93ebfaf1990edcc2490922a32 # Parent cc70ab74f4f32d1a1471a963367fbaa90a9a1795 Define unichars array type and use it for uni_utf8_to_ucs4() output. diff -r cc70ab74f4f3 -r dcbf6afdf931 src/lib/unichar.c --- a/src/lib/unichar.c Thu Dec 27 22:51:28 2007 +0200 +++ b/src/lib/unichar.c Thu Dec 27 22:56:25 2007 +0200 @@ -1,7 +1,7 @@ /* Copyright (c) 2005-2007 Dovecot authors, see the included COPYING file */ #include "lib.h" -#include "buffer.h" +#include "array.h" #include "bsearch-insert-pos.h" #include "unichar.h" @@ -93,7 +93,7 @@ return ret; } -int uni_utf8_to_ucs4(const char *input, buffer_t *output) +int uni_utf8_to_ucs4(const char *input, ARRAY_TYPE(unichars) *output) { unichar_t chr; @@ -104,7 +104,7 @@ } input += uni_utf8_char_bytes(*input); - buffer_append(output, &chr, sizeof(chr)); + array_append(output, &chr, 1); } return 0; } diff -r cc70ab74f4f3 -r dcbf6afdf931 src/lib/unichar.h --- a/src/lib/unichar.h Thu Dec 27 22:51:28 2007 +0200 +++ b/src/lib/unichar.h Thu Dec 27 22:56:25 2007 +0200 @@ -2,6 +2,7 @@ #define UNICHAR_H typedef uint32_t unichar_t; +ARRAY_DEFINE_TYPE(unichars, unichar_t); extern const uint8_t *const uni_utf8_non1_bytes; @@ -9,7 +10,7 @@ unsigned int uni_strlen(const unichar_t *str); /* Translates UTF-8 input to UCS-4 output. Returns 0 if ok, -1 if input was invalid */ -int uni_utf8_to_ucs4(const char *input, buffer_t *output); +int uni_utf8_to_ucs4(const char *input, ARRAY_TYPE(unichars) *output); /* Translates UCS-4 input to UTF-8 output. */ void uni_ucs4_to_utf8(const unichar_t *input, size_t len, buffer_t *output); void uni_ucs4_to_utf8_c(unichar_t chr, buffer_t *output);