Changeset 3387
- Timestamp:
- 02/09/08 13:09:17
- Files:
-
- trunk/ChangeLog (modified) (1 diff)
- trunk/libtinymail-camel/tny-camel-mime-part.c (modified) (3 diffs)
- trunk/libtinymail-camel/tny-camel-mime-part.h (modified) (1 diff)
- trunk/libtinymail/tny-mime-part.c (modified) (1 diff)
- trunk/libtinymail/tny-mime-part.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/ChangeLog
r3386 r3387 5 5 * Various smaller fixes and code improvements 6 6 * Has-attachment status detection improvement 7 * Added a tny_mime_part_get_decoded_stream API 8 9 * This was a minor API change 7 10 8 11 2008-02-05 Philip Van Hoof <pvanhoof@gnome.org> trunk/libtinymail-camel/tny-camel-mime-part.c
r3360 r3387 63 63 #include <camel/camel-mime-filter-windows.h> 64 64 65 static ssize_t camel_stream_format_text (CamelDataWrapper *dw, CamelStream *stream); 66 65 67 static void 66 68 tny_camel_mime_part_set_header_pair (TnyMimePart *self, const gchar *name, const gchar *value) … … 277 279 TnyIterator *iter; 278 280 const gchar *type = tny_mime_part_get_content_type (orig); 279 TnyStream *in_stream = tny_mime_part_get_ stream (orig);281 TnyStream *in_stream = tny_mime_part_get_decoded_stream (orig); 280 282 /* 281 283 TnyList *header_pairs = tny_simple_list_new (); … … 827 829 return retval; 828 830 } 831 832 833 834 835 static TnyStream* 836 tny_camel_mime_part_get_decoded_stream (TnyMimePart *self) 837 { 838 return TNY_CAMEL_MIME_PART_GET_CLASS (self)->get_decoded_stream(self); 839 } 840 841 static TnyStream* 842 tny_camel_mime_part_get_decoded_stream_default (TnyMimePart *self) 843 { 844 TnyCamelMimePartPriv *priv = TNY_CAMEL_MIME_PART_GET_PRIVATE (self); 845 TnyStream *retval = NULL; 846 CamelDataWrapper *wrapper; 847 CamelMedium *medium; 848 CamelStream *stream = camel_stream_mem_new (); 849 850 g_mutex_lock (priv->part_lock); 851 medium = CAMEL_MEDIUM (priv->part); 852 camel_object_ref (medium); 853 g_mutex_unlock (priv->part_lock); 854 855 wrapper = camel_medium_get_content_object (medium); 856 857 if (!wrapper) { 858 wrapper = camel_data_wrapper_new (); 859 camel_medium_set_content_object (medium, wrapper); 860 camel_object_unref (wrapper); 861 } 862 863 if (wrapper->stream) { 864 camel_stream_reset (wrapper->stream); 865 866 if (camel_content_type_is (wrapper->mime_type, "text", "*")) 867 camel_stream_format_text (wrapper, stream); 868 else 869 camel_data_wrapper_decode_to_stream (wrapper, stream); 870 } 871 872 retval = TNY_STREAM (tny_camel_stream_new (stream)); 873 camel_object_unref (stream); 874 875 tny_stream_reset (retval); 876 camel_object_unref (medium); 877 878 return retval; 879 } 880 829 881 830 882 static const gchar* trunk/libtinymail-camel/tny-camel-mime-part.h
r3359 r3387 53 53 gboolean (*content_type_is) (TnyMimePart *self, const gchar *content_type); 54 54 TnyStream* (*get_stream) (TnyMimePart *self); 55 TnyStream* (*get_decoded_stream) (TnyMimePart *self); 55 56 gssize (*decode_to_stream) (TnyMimePart *self, TnyStream *stream, GError **err); 56 57 gssize (*write_to_stream) (TnyMimePart *self, TnyStream *stream, GError **err); trunk/libtinymail/tny-mime-part.c
r3359 r3387 868 868 } 869 869 870 871 872 /** 873 * tny_mime_part_get_decoded_stream: 874 * @self: a #TnyMimePart 875 * 876 * Inefficiently get a stream for @self. The entire data of the part will be 877 * kept in memory until the returned value is unreferenced. 878 * 879 * returns: an in-memory stream 880 * since: 1.0 881 * audience: application-developer 882 **/ 883 TnyStream* 884 tny_mime_part_get_decoded_stream (TnyMimePart *self) 885 { 886 TnyStream *retval; 887 888 #ifdef DBC /* require */ 889 g_assert (TNY_IS_MIME_PART (self)); 890 g_assert (TNY_MIME_PART_GET_IFACE (self)->get_decoded_stream!= NULL); 891 #endif 892 893 retval = TNY_MIME_PART_GET_IFACE (self)->get_decoded_stream(self); 894 895 #ifdef DBC /* ensure */ 896 g_assert (TNY_IS_STREAM (retval)); 897 #endif 898 899 return retval; 900 } 901 870 902 /** 871 903 * tny_mime_part_get_content_type: trunk/libtinymail/tny-mime-part.h
r3359 r3387 47 47 gboolean (*content_type_is) (TnyMimePart *self, const gchar *content_type); 48 48 TnyStream* (*get_stream) (TnyMimePart *self); 49 TnyStream* (*get_decoded_stream) (TnyMimePart *self); 49 50 gssize (*decode_to_stream) (TnyMimePart *self, TnyStream *stream, GError **err); 50 51 gssize (*write_to_stream) (TnyMimePart *self, TnyStream *stream, GError **err); … … 79 80 gboolean tny_mime_part_content_type_is (TnyMimePart *self, const gchar *type); 80 81 TnyStream* tny_mime_part_get_stream (TnyMimePart *self); 82 TnyStream* tny_mime_part_get_decoded_stream (TnyMimePart *self); 81 83 gssize tny_mime_part_write_to_stream (TnyMimePart *self, TnyStream *stream, GError **err); 82 84 gint tny_mime_part_construct (TnyMimePart *self, TnyStream *stream, const gchar *mime_type, const gchar *transfer_encoding);
