dovecot: Added charset_to_utf8_str()

dovecot at dovecot.org dovecot at dovecot.org
Mon Dec 3 14:23:49 EET 2007


details:   http://hg.dovecot.org/dovecot/rev/a340d3379b90
changeset: 6908:a340d3379b90
user:      Timo Sirainen <tss at iki.fi>
date:      Mon Dec 03 14:21:21 2007 +0200
description:
Added charset_to_utf8_str()

diffstat:

2 files changed, 22 insertions(+), 1 deletion(-)
src/lib-charset/charset-utf8.c |   18 +++++++++++++++++-
src/lib-charset/charset-utf8.h |    5 +++++

diffs (48 lines):

diff -r 25ca7c443357 -r a340d3379b90 src/lib-charset/charset-utf8.c
--- a/src/lib-charset/charset-utf8.c	Mon Dec 03 12:13:49 2007 +0200
+++ b/src/lib-charset/charset-utf8.c	Mon Dec 03 14:21:21 2007 +0200
@@ -1,7 +1,7 @@
 /* Copyright (c) 2002-2007 Dovecot authors, see the included COPYING file */
 
 #include "lib.h"
-#include "buffer.h"
+#include "str.h"
 #include "unichar.h"
 #include "charset-utf8.h"
 
@@ -13,6 +13,22 @@ bool charset_is_utf8(const char *charset
 		strcasecmp(charset, "ascii") == 0 ||
 		strcasecmp(charset, "UTF-8") == 0 ||
 		strcasecmp(charset, "UTF8") == 0;
+}
+
+int charset_to_utf8_str(const char *charset, enum charset_flags flags,
+			const char *input, string_t *output,
+			enum charset_result *result_r)
+{
+	struct charset_translation *t;
+	size_t len = strlen(input);
+
+	if (charset_to_utf8_begin(charset, flags, &t) < 0)
+		return -1;
+
+	*result_r = charset_to_utf8(t, (const unsigned char *)input,
+				    &len, output);
+	charset_to_utf8_end(&t);
+	return 0;
 }
 
 #ifndef HAVE_ICONV
diff -r 25ca7c443357 -r a340d3379b90 src/lib-charset/charset-utf8.h
--- a/src/lib-charset/charset-utf8.h	Mon Dec 03 12:13:49 2007 +0200
+++ b/src/lib-charset/charset-utf8.h	Mon Dec 03 14:21:21 2007 +0200
@@ -29,4 +29,9 @@ charset_to_utf8(struct charset_translati
 charset_to_utf8(struct charset_translation *t,
 		const unsigned char *src, size_t *src_size, buffer_t *dest);
 
+/* Translate a single string to UTF8. */
+int charset_to_utf8_str(const char *charset, enum charset_flags flags,
+			const char *input, string_t *output,
+			enum charset_result *result_r);
+
 #endif


More information about the dovecot-cvs mailing list