Changeset 3453
- Timestamp:
- 03/03/08 18:24:05
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/libtinymail-camel/camel-lite/camel/camel-mime-part.c (modified) (2 diffs)
- trunk/libtinymail-camel/camel-lite/camel/camel-mime-utils.c (modified) (10 diffs)
- trunk/libtinymail-camel/camel-lite/camel/camel-mime-utils.h (modified) (2 diffs)
- trunk/libtinymail-camel/camel-lite/camel/providers/local/camel-local-summary.c (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-mime-part.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r3452 r3453 1 2008-03-03 Philip Van Hoof <pvanhoof@gnome.org> 2 3 * Smaller bug fixes in the build 4 * filename= encoding fixes 5 1 6 2008-03-03 Alberto Garcia Gonzalez <agarcia@igalia.com> 2 7 trunk/libtinymail-camel/camel-lite/camel/camel-mime-part.c
r3246 r3453 370 370 set_disposition (CamelMimePart *mime_part, const char *disposition) 371 371 { 372 372 373 camel_content_disposition_unref(mime_part->disposition); 373 if (disposition) 374 mime_part->disposition = camel_content_disposition_decode(disposition); 375 else 374 if (disposition) { 375 const char *charset = NULL; 376 377 if (!g_utf8_validate (disposition, -1, NULL) && mime_part->headers) { 378 struct _camel_header_raw *h = mime_part->headers; 379 const char *content; 380 CamelContentType *ct = NULL; 381 382 if ((content = camel_header_raw_find(&h, "Content-Type", NULL)) 383 && (ct = camel_content_type_decode(content)) 384 && (charset = camel_content_type_param(ct, "charset")) 385 && (g_ascii_strcasecmp(charset, "us-ascii") == 0)) 386 charset = NULL; 387 388 charset = charset ? e_iconv_charset_name (charset) : NULL; 389 390 if (ct) 391 camel_content_type_unref (ct); 392 } 393 394 mime_part->disposition = camel_content_disposition_decode (disposition, charset); 395 } else 376 396 mime_part->disposition = NULL; 377 397 } … … 440 460 441 461 if (mime_part->disposition == NULL) 442 mime_part->disposition = camel_content_disposition_decode("attachment" );462 mime_part->disposition = camel_content_disposition_decode("attachment", NULL); 443 463 444 464 camel_header_set_param(&mime_part->disposition->params, "filename", filename); trunk/libtinymail-camel/camel-lite/camel/camel-mime-utils.c
r3364 r3453 3159 3159 /* NB: Steals name and value */ 3160 3160 static struct _camel_header_param * 3161 header_append_param(struct _camel_header_param *last, char *name, char *value )3161 header_append_param(struct _camel_header_param *last, char *name, char *value, const char *default_charset) 3162 3162 { 3163 3163 struct _camel_header_param *node; … … 3175 3175 g_free(value); 3176 3176 } else if (g_ascii_strcasecmp (name, "boundary") != 0 && !g_utf8_validate(value, -1, NULL)) { 3177 const char *charset = e_iconv_locale_charset();3177 const char *charset = default_charset?default_charset:e_iconv_locale_charset(); 3178 3178 3179 3179 if ((node->value = header_convert("UTF-8", charset?charset:"ISO-8859-1", value, strlen(value)))) { … … 3192 3192 3193 3193 static struct _camel_header_param * 3194 header_decode_param_list (const char **in )3194 header_decode_param_list (const char **in, const char *default_charset) 3195 3195 { 3196 3196 struct _camel_header_param *head = NULL, *last = (struct _camel_header_param *)&head; … … 3226 3226 value = tmp; 3227 3227 } 3228 last = header_append_param(last, name, value );3228 last = header_append_param(last, name, value, default_charset); 3229 3229 } else { 3230 3230 /* VAL*1="foo", save for later */ … … 3239 3239 } 3240 3240 } else { 3241 last = header_append_param(last, name, value );3241 last = header_append_param(last, name, value, default_charset); 3242 3242 } 3243 3243 } else { … … 3267 3267 tmp = g_strdup(value->str); 3268 3268 3269 last = header_append_param(last, g_strdup(first->param.name), tmp );3269 last = header_append_param(last, g_strdup(first->param.name), tmp, default_charset); 3270 3270 g_string_truncate(value, 0); 3271 3271 first = work; … … 3290 3290 3291 3291 struct _camel_header_param * 3292 camel_header_param_list_decode(const char *in )3292 camel_header_param_list_decode(const char *in, const char *default_charset) 3293 3293 { 3294 3294 if (in == NULL) 3295 3295 return NULL; 3296 3296 3297 return header_decode_param_list(&in );3297 return header_decode_param_list(&in, default_charset); 3298 3298 } 3299 3299 … … 3483 3483 3484 3484 t = camel_content_type_new(type, subtype); 3485 t->params = header_decode_param_list(&inptr );3485 t->params = header_decode_param_list(&inptr, NULL); 3486 3486 g_free(type); 3487 3487 g_free(subtype); … … 3570 3570 3571 3571 CamelContentDisposition * 3572 camel_content_disposition_decode(const char *in )3572 camel_content_disposition_decode(const char *in, const char *default_encoding) 3573 3573 { 3574 3574 CamelContentDisposition *d = NULL; … … 3583 3583 if (d->disposition == NULL) 3584 3584 w(g_warning("Empty disposition type")); 3585 d->params = header_decode_param_list(&inptr );3585 d->params = header_decode_param_list(&inptr, default_encoding); 3586 3586 return d; 3587 3587 } trunk/libtinymail-camel/camel-lite/camel/camel-mime-utils.h
r2823 r3453 132 132 133 133 /* structured header prameters */ 134 struct _camel_header_param *camel_header_param_list_decode (const char *in );134 struct _camel_header_param *camel_header_param_list_decode (const char *in, const char *default_encoding); 135 135 char *camel_header_param (struct _camel_header_param *params, const char *name); 136 136 struct _camel_header_param *camel_header_set_param (struct _camel_header_param **paramsp, const char *name, const char *value); … … 154 154 155 155 /* Content-Disposition header */ 156 CamelContentDisposition *camel_content_disposition_decode (const char *in );156 CamelContentDisposition *camel_content_disposition_decode (const char *in, const char *default_encoding); 157 157 void camel_content_disposition_ref (CamelContentDisposition *disposition); 158 158 void camel_content_disposition_unref (CamelContentDisposition *disposition); trunk/libtinymail-camel/camel-lite/camel/providers/local/camel-local-summary.c
r3280 r3453 577 577 header = strchr(xev, ';'); 578 578 if (header) { 579 params = camel_header_param_list_decode(header+1 );579 params = camel_header_param_list_decode(header+1, NULL); 580 580 scan = params; 581 581 while (scan) { trunk/libtinymail-camel/tny-camel-mime-part.c
r3451 r3453 1068 1068 1069 1069 if (str) { 1070 if (!g_utf8_validate (str, strlen (str), NULL))1070 if (!g_utf8_validate (str, -1, NULL)) 1071 1071 priv->cached_filename = decode_it_2 (priv->part, str, FALSE); 1072 1072 else
