Changeset 3453

Show
Ignore:
Timestamp:
03/03/08 18:24:05
Author:
pvanhoof
Message:

2008-03-03 Philip Van Hoof <pvanhoof@gnome.org>

        • Smaller bug fixes in the build
        • filename= encoding fixes
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ChangeLog

    r3452 r3453  
     12008-03-03  Philip Van Hoof <pvanhoof@gnome.org> 
     2 
     3        * Smaller bug fixes in the build 
     4        * filename= encoding fixes 
     5 
    162008-03-03  Alberto Garcia Gonzalez <agarcia@igalia.com> 
    27 
  • trunk/libtinymail-camel/camel-lite/camel/camel-mime-part.c

    r3246 r3453  
    370370set_disposition (CamelMimePart *mime_part, const char *disposition) 
    371371{ 
     372 
    372373        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 
    376396                mime_part->disposition = NULL; 
    377397} 
     
    440460 
    441461        if (mime_part->disposition == NULL) 
    442                 mime_part->disposition = camel_content_disposition_decode("attachment"); 
     462                mime_part->disposition = camel_content_disposition_decode("attachment", NULL); 
    443463 
    444464        camel_header_set_param(&mime_part->disposition->params, "filename", filename); 
  • trunk/libtinymail-camel/camel-lite/camel/camel-mime-utils.c

    r3364 r3453  
    31593159/* NB: Steals name and value */ 
    31603160static struct _camel_header_param * 
    3161 header_append_param(struct _camel_header_param *last, char *name, char *value
     3161header_append_param(struct _camel_header_param *last, char *name, char *value, const char *default_charset
    31623162{ 
    31633163        struct _camel_header_param *node; 
     
    31753175                g_free(value); 
    31763176        } 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(); 
    31783178 
    31793179                if ((node->value = header_convert("UTF-8", charset?charset:"ISO-8859-1", value, strlen(value)))) { 
     
    31923192 
    31933193static struct _camel_header_param * 
    3194 header_decode_param_list (const char **in
     3194header_decode_param_list (const char **in, const char *default_charset
    31953195{ 
    31963196        struct _camel_header_param *head = NULL, *last = (struct _camel_header_param *)&head; 
     
    32263226                                                value = tmp; 
    32273227                                        } 
    3228                                         last = header_append_param(last, name, value); 
     3228                                        last = header_append_param(last, name, value, default_charset); 
    32293229                                } else { 
    32303230                                        /* VAL*1="foo", save for later */ 
     
    32393239                                } 
    32403240                        } else { 
    3241                                 last = header_append_param(last, name, value); 
     3241                                last = header_append_param(last, name, value, default_charset); 
    32423242                        } 
    32433243                } else { 
     
    32673267                                        tmp = g_strdup(value->str); 
    32683268 
    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); 
    32703270                                g_string_truncate(value, 0); 
    32713271                                first = work; 
     
    32903290 
    32913291struct _camel_header_param * 
    3292 camel_header_param_list_decode(const char *in
     3292camel_header_param_list_decode(const char *in, const char *default_charset
    32933293{ 
    32943294        if (in == NULL) 
    32953295                return NULL; 
    32963296 
    3297         return header_decode_param_list(&in); 
     3297        return header_decode_param_list(&in, default_charset); 
    32983298} 
    32993299 
     
    34833483 
    34843484                t = camel_content_type_new(type, subtype); 
    3485                 t->params = header_decode_param_list(&inptr); 
     3485                t->params = header_decode_param_list(&inptr, NULL); 
    34863486                g_free(type); 
    34873487                g_free(subtype); 
     
    35703570 
    35713571CamelContentDisposition * 
    3572 camel_content_disposition_decode(const char *in
     3572camel_content_disposition_decode(const char *in, const char *default_encoding
    35733573{ 
    35743574        CamelContentDisposition *d = NULL; 
     
    35833583        if (d->disposition == NULL) 
    35843584                w(g_warning("Empty disposition type")); 
    3585         d->params = header_decode_param_list(&inptr); 
     3585        d->params = header_decode_param_list(&inptr, default_encoding); 
    35863586        return d; 
    35873587} 
  • trunk/libtinymail-camel/camel-lite/camel/camel-mime-utils.h

    r2823 r3453  
    132132 
    133133/* structured header prameters */ 
    134 struct _camel_header_param *camel_header_param_list_decode (const char *in); 
     134struct _camel_header_param *camel_header_param_list_decode (const char *in, const char *default_encoding); 
    135135char *camel_header_param (struct _camel_header_param *params, const char *name); 
    136136struct _camel_header_param *camel_header_set_param (struct _camel_header_param **paramsp, const char *name, const char *value); 
     
    154154 
    155155/* Content-Disposition header */ 
    156 CamelContentDisposition *camel_content_disposition_decode (const char *in); 
     156CamelContentDisposition *camel_content_disposition_decode (const char *in, const char *default_encoding); 
    157157void camel_content_disposition_ref (CamelContentDisposition *disposition); 
    158158void camel_content_disposition_unref (CamelContentDisposition *disposition); 
  • trunk/libtinymail-camel/camel-lite/camel/providers/local/camel-local-summary.c

    r3280 r3453  
    577577        header = strchr(xev, ';'); 
    578578        if (header) { 
    579                 params = camel_header_param_list_decode(header+1); 
     579                params = camel_header_param_list_decode(header+1, NULL); 
    580580                scan = params; 
    581581                while (scan) { 
  • trunk/libtinymail-camel/tny-camel-mime-part.c

    r3451 r3453  
    10681068 
    10691069                if (str) { 
    1070                         if (!g_utf8_validate (str, strlen (str), NULL)) 
     1070                        if (!g_utf8_validate (str, -1, NULL)) 
    10711071                                priv->cached_filename = decode_it_2 (priv->part, str, FALSE); 
    10721072                        else