changeset 7949:e787f6cae97c HEAD

Added missing Content-Language: support for BODYSTRUCTURE.
author Timo Sirainen <tss@iki.fi>
date Tue, 24 Jun 2008 13:37:55 +0300
parents e29ddf600a09
children 3412c43d6707
files src/lib-imap/imap-bodystructure.c
diffstat 1 files changed, 25 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- 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 @@
 	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 @@
 	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 @@
 		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 @@
 		    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 @@
 		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 @@
 	/* 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 @@
 		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 @@
 	/* 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;