Use the proper type checking function to check for text types.
authorNot Zed <NotZed@HelixCode.com>
Thu, 31 Aug 2000 02:24:49 +0000 (02:24 +0000)
committerMichael Zucci <zucchi@src.gnome.org>
Thu, 31 Aug 2000 02:24:49 +0000 (02:24 +0000)
2000-08-31  Not Zed  <NotZed@HelixCode.com>

        * camel-mime-part.c (write_to_stream): Use the proper type
        checking function to check for text types.
        (write_to_stream): If we have a charset on a text type that
        isn't us-ascii or utf-8, then we need to reencode it, so add a
        filter to do that too.

camel/ChangeLog
camel/camel-mime-part.c

index 6c587fe..90672ff 100644 (file)
@@ -1,5 +1,11 @@
 2000-08-31  Not Zed  <NotZed@HelixCode.com>
 
+       * camel-mime-part.c (write_to_stream): Use the proper type
+       checking function to check for text types.
+       (write_to_stream): If we have a charset on a text type that
+       isn't us-ascii or utf-8, then we need to reencode it, so add a
+       filter to do that too.
+
        * camel-mime-utils.c (append_latin1): New function - even though
        its broken, we'll assume mailers send latin1 headers instead of
        us-ascii.  We just have to encode high chars into utf-8.
index f9519df..ae33f5c 100644 (file)
@@ -517,11 +517,23 @@ write_to_stream (CamelDataWrapper *data_wrapper, CamelStream *stream)
                }
                if (filter) {
                        filter_stream = camel_stream_filter_new_with_stream(stream);
-                       if (!strcasecmp(mp->content_type->type, "text")) {
+                       if (gmime_content_field_is_type(mp->content_type, "text", "*")) {
                                CamelMimeFilter *crlf = camel_mime_filter_crlf_new(CAMEL_MIME_FILTER_CRLF_ENCODE,
                                                                                   CAMEL_MIME_FILTER_CRLF_MODE_CRLF_ONLY);
+                               char *charset;
+
                                camel_stream_filter_add(filter_stream, crlf);
                                camel_object_unref((CamelObject *)crlf);
+
+                               charset = gmime_content_field_get_parameter(mp->content_type, "charset");
+                               if (!(charset == NULL || !strcasecmp(charset, "us-ascii") || !strcasecmp(charset, "utf-8"))) {
+                                       CamelMimeFilter *charenc;
+                                       charenc = camel_mime_filter_charset_new("utf-8", charset);
+                                       camel_stream_filter_add(filter_stream, charenc);
+                                       /* well some idiot changed the _add function to do its own ref'ing for
+                                          no decent purpose whatsoever ... */
+                                       camel_object_unref((CamelObject *)charenc);
+                               } 
                        }
                        camel_stream_filter_add(filter_stream, filter);
                        camel_object_unref((CamelObject *)filter);