dovecot-1.1: Added missing Content-Language: support for BODYSTR...
dovecot at dovecot.org
dovecot at dovecot.org
Tue Jun 24 19:27:59 EEST 2008
details: http://hg.dovecot.org/dovecot-1.1/rev/3c06e14c4731
changeset: 7712:3c06e14c4731
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 611a544b7df9 -r 3c06e14c4731 src/lib-imap/imap-bodystructure.c
--- a/src/lib-imap/imap-bodystructure.c Tue Jun 24 13:37:05 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(struct message_part *part)
@@ -480,7 +497,8 @@ bool imap_bodystructure_is_plain_7bit(st
/* 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