dovecot-2.1: doveadm fetch: Added support for hdr.*.utf8 fields.

dovecot at dovecot.org dovecot at dovecot.org
Thu Feb 2 16:47:05 EET 2012


details:   http://hg.dovecot.org/dovecot-2.1/rev/ceadfe9009aa
changeset: 14058:ceadfe9009aa
user:      Timo Sirainen <tss at iki.fi>
date:      Thu Feb 02 16:46:46 2012 +0200
description:
doveadm fetch: Added support for hdr.*.utf8 fields.

diffstat:

 src/doveadm/doveadm-mail-fetch.c |  19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diffs (52 lines):

diff -r ba48de993c8e -r ceadfe9009aa src/doveadm/doveadm-mail-fetch.c
--- a/src/doveadm/doveadm-mail-fetch.c	Thu Feb 02 16:26:33 2012 +0200
+++ b/src/doveadm/doveadm-mail-fetch.c	Thu Feb 02 16:46:46 2012 +0200
@@ -8,6 +8,7 @@
 #include "message-address.h"
 #include "message-size.h"
 #include "message-parser.h"
+#include "message-header-decode.h"
 #include "message-decoder.h"
 #include "imap-util.h"
 #include "mail-user.h"
@@ -133,6 +134,7 @@
 {
 	const char *const *value, *filter, *name = ctx->cur_field->name;
 	string_t *str = t_str_new(256);
+	unsigned int pos;
 	bool add_lf = FALSE;
 
 	filter = strchr(name, '.');
@@ -151,8 +153,14 @@
 
 	if (filter == NULL) {
 		/* print the header as-is */
+	} else if (strcmp(filter, "utf8") == 0) {
+		pos = str_len(str);
+		message_header_decode_utf8(str_data(str), str_len(str),
+					   str, FALSE);
+		str_delete(str, 0, pos);
 	} else if (strcmp(filter, "address") == 0 ||
-		   strcmp(filter, "address_name") == 0) {
+		   strcmp(filter, "address_name") == 0 ||
+		   strcmp(filter, "address_name.utf8") == 0) {
 		struct message_address *addr;
 
 		addr = message_address_parse(pool_datastack_create(),
@@ -170,9 +178,14 @@
 					str_append_c(str, '@');
 					str_append(str, addr->domain);
 				}
-			} else {
-				if (addr->name != NULL)
+			} else if (addr->name != NULL) {
+				if (strcmp(filter, "address_name") == 0)
 					str_append(str, addr->name);
+				else {
+					message_header_decode_utf8(
+						(const void *)addr->name,
+						strlen(addr->name), str, FALSE);
+				}
 			}
 			add_lf = TRUE;
 		}


More information about the dovecot-cvs mailing list