2005-09-18 [colin] 1.9.14cvs39
[claws.git] / src / procmime.c
index 6e00efe2e83f1ebb23cfe470de0c18bdf31e9a37..a9f1a4d4887f9ec8002c1f06f33fc531b803ea79 100644 (file)
@@ -736,7 +736,7 @@ FILE *procmime_get_text_content(MimeInfo *mimeinfo)
                oldout = dup(1);
                
                dup2(fileno(outfp), 1);
-               
+
                p = popen(renderer->renderer, "w");
                if (p != NULL) {
                        size_t count;
@@ -1571,7 +1571,8 @@ static void parse_parameters(const gchar *parameters, GHashTable *table)
                gchar *charset, *lang, *oldvalue, *newvalue;
 
                attribute = (gchar *) cur->data;
-               if (!g_hash_table_lookup_extended(table, attribute, (gpointer *) &key, (gpointer *) &value))
+               if (!g_hash_table_lookup_extended(
+                       table, attribute, (gpointer *)(gchar *) &key, (gpointer *)(gchar *) &value))
                        continue;
 
                charset = value;
@@ -1611,10 +1612,16 @@ static void procmime_parse_content_type(const gchar *content_type, MimeInfo *mim
                mimeinfo->type = MIMETYPE_TEXT;
                mimeinfo->subtype = g_strdup("plain");
                if (g_hash_table_lookup(mimeinfo->typeparameters,
-                                      "charset") == NULL)
-                       g_hash_table_insert(mimeinfo->typeparameters,
+                                      "charset") == NULL) {
+                       if (strcmp(conv_get_locale_charset_str(), CS_UTF_8))
+                               g_hash_table_insert(mimeinfo->typeparameters,
+                                           g_strdup("charset"),
+                                           g_strdup(conv_get_locale_charset_str()));
+                       else
+                               g_hash_table_insert(mimeinfo->typeparameters,
                                            g_strdup("charset"),
-                                           g_strdup("us-ascii"));
+                                           g_strdup(CS_ISO_8859_1));
+               }
        } else {
                gchar *type, *subtype, *params;
 
@@ -1715,8 +1722,16 @@ int procmime_parse_mimepart(MimeInfo *parent,
                mimeinfo->type = MIMETYPE_TEXT;
                mimeinfo->subtype = g_strdup("plain");
                if (g_hash_table_lookup(mimeinfo->typeparameters,
-                                      "charset") == NULL)
-                       g_hash_table_insert(mimeinfo->typeparameters, g_strdup("charset"), g_strdup("us-ascii"));
+                                      "charset") == NULL) {
+                       if (strcmp(conv_get_locale_charset_str(), CS_UTF_8))
+                               g_hash_table_insert(mimeinfo->typeparameters,
+                                           g_strdup("charset"),
+                                           g_strdup(conv_get_locale_charset_str()));
+                       else
+                               g_hash_table_insert(mimeinfo->typeparameters,
+                                           g_strdup("charset"),
+                                           g_strdup(CS_ISO_8859_1));
+               }
        }
 
        if (content_encoding != NULL) {
@@ -2141,10 +2156,6 @@ gint procmime_write_mimeinfo(MimeInfo *mimeinfo, FILE *fp)
 
        debug_print("procmime_write_mimeinfo\n");
 
-       if (mimeinfo->encoding_type == ENC_UNKNOWN
-       &&  mimeinfo->content != MIMECONTENT_EMPTY)
-               procmime_encode_content(mimeinfo, ENC_BINARY);
-
        if (G_NODE_IS_LEAF(mimeinfo->node)) {
                switch (mimeinfo->content) {
                case MIMECONTENT_FILE:
@@ -2170,8 +2181,9 @@ gint procmime_write_mimeinfo(MimeInfo *mimeinfo, FILE *fp)
                /* Call writer for mime type */
                switch (mimeinfo->type) {
                case MIMETYPE_MESSAGE:
-                       if (g_ascii_strcasecmp(mimeinfo->subtype, "rfc822") == 0)
+                       if (g_ascii_strcasecmp(mimeinfo->subtype, "rfc822") == 0) {
                                return procmime_write_message_rfc822(mimeinfo, fp);
+                       }
                        break;
                        
                case MIMETYPE_MULTIPART: