dovecot-1.2: Added missing Content-Language: support for BODYSTR...

dovecot at dovecot.org dovecot at dovecot.org
Tue Jun 24 13:38:04 EEST 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/e787f6cae97c
changeset: 7949:e787f6cae97c
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Jun 24 13:37:55 2008 +0300
description:
Added missing Content-Language: support for BODYSTRUCTURE.

diffstat:

1 file changed, 25 insertions(+), 7 deletions(-)
src/lib-imap/imap-bodystructure.c |   32 +++++++++++++++++++++++++-------

diffs (91 lines):

diff -r e29ddf600a09 -r e787f6cae97c src/lib-imap/imap-bodystructure.c
--- a/src/lib-imap/imap-bodystructure.c	Tue Jun 24 13:37:26 2008 +0300
+++ b/src/lib-imap/imap-bodystructure.c	Tue Jun 24 13:37:55 2008 +0300
@@ -28,6 +28,7 @@ struct message_part_body_data {
 	const char *content_disposition_params;
 	const char *content_md5;
 	const char *content_language;
+	const char *content_location;
 
 	struct message_part_envelope_data *envelope;
 };
@@ -196,8 +197,8 @@ static void parse_content_header(struct 
 	case 'T':
 		if (strcasecmp(name, "Type") == 0 && d->content_type == NULL)
 			parse_content_type(d, hdr);
-		if (strcasecmp(name, "Transfer-Encoding") == 0 &&
-		    d->content_transfer_encoding == NULL)
+		else if (strcasecmp(name, "Transfer-Encoding") == 0 &&
+			 d->content_transfer_encoding == NULL)
 			parse_content_transfer_encoding(d, hdr);
 		break;
 
@@ -206,6 +207,11 @@ static void parse_content_header(struct 
 		if (strcasecmp(name, "Language") == 0 &&
 		    d->content_language == NULL)
 			parse_content_language(value, value_len, d);
+		else if (strcasecmp(name, "Location") == 0 &&
+			 d->content_location == NULL) {
+			d->content_location =
+				imap_quote(pool, value, value_len);
+		}
 		break;
 
 	case 'd':
@@ -214,9 +220,8 @@ static void parse_content_header(struct 
 		    d->content_description == NULL) {
 			d->content_description =
 				imap_quote(pool, value, value_len);
-		}
-		if (strcasecmp(name, "Disposition") == 0 &&
-		    d->content_disposition_params == NULL) {
+		} else if (strcasecmp(name, "Disposition") == 0 &&
+			   d->content_disposition_params == NULL) {
 			parse_content_disposition(d, hdr);
 		}
 		break;
@@ -337,6 +342,12 @@ static void part_write_body_multipart(co
 		str_append(str, data->content_language);
 		str_append_c(str, ')');
 	}
+
+	str_append_c(str, ' ');
+	if (data->content_location == NULL)
+		str_append(str, "NIL");
+	else
+		str_append(str, data->content_location);
 }
 
 static void part_write_body(const struct message_part *part,
@@ -413,7 +424,7 @@ static void part_write_body(const struct
 	/* BODYSTRUCTURE data */
 
 	/* "md5" ("content disposition" ("disposition" "params"))
-	   ("body" "language" "params") */
+	   ("body" "language" "params") "location" */
 	str_append_c(str, ' ');
 	str_append(str, NVL(data->content_md5, "NIL"));
 
@@ -444,6 +455,12 @@ static void part_write_body(const struct
 		str_append(str, data->content_language);
 		str_append_c(str, ')');
 	}
+
+	str_append_c(str, ' ');
+	if (data->content_location == NULL)
+		str_append(str, "NIL");
+	else
+		str_append(str, data->content_location);
 }
 
 bool imap_bodystructure_is_plain_7bit(const struct message_part *part)
@@ -480,7 +497,8 @@ bool imap_bodystructure_is_plain_7bit(co
 	/* BODYSTRUCTURE checks: */
 	if (data->content_md5 != NULL ||
 	    data->content_disposition != NULL ||
-	    data->content_language != NULL)
+	    data->content_language != NULL ||
+	    data->content_location != NULL)
 		return FALSE;
 
 	return TRUE;


More information about the dovecot-cvs mailing list