#include <modest-runtime.h>
#include "modest-formatter.h"
#include <tny-camel-stream.h>
+#include <tny-camel-mime-part.h>
+#include <camel/camel-stream-buffer.h>
#include <camel/camel-stream-mem.h>
#include <glib/gprintf.h>
TnyMsg*
modest_tny_msg_new (const gchar* mailto, const gchar* from, const gchar *cc,
const gchar *bcc, const gchar* subject, const gchar *body,
- GSList *attachments)
+ GList *attachments)
{
TnyMsg *new_msg;
TnyHeader *header;
/* Add attachments */
if (attachments)
- add_attachments (new_msg, (GList*) attachments);
+ add_attachments (new_msg, attachments);
return new_msg;
}
modest_tny_msg_new_html_plain (const gchar* mailto, const gchar* from, const gchar *cc,
const gchar *bcc, const gchar* subject,
const gchar *html_body, const gchar *plain_body,
- GSList *attachments)
+ GList *attachments)
{
TnyMsg *new_msg;
TnyHeader *header;
g_free (content_type);
/* Add attachments */
- add_attachments (new_msg, (GList*) attachments);
+ add_attachments (new_msg, attachments);
return new_msg;
}
TnyStream *attachment_stream;
if (TNY_IS_MSG (part)) {
- result = TNY_MIME_PART (tny_platform_factory_new_msg (modest_runtime_get_platform_factory ()));
- attachment_content_type = "message/rfc822";
- tny_mime_part_set_content_type (result, attachment_content_type);
- } else {
- result = tny_platform_factory_new_mime_part (
- modest_runtime_get_platform_factory());
- attachment_content_type = tny_mime_part_get_content_type (part);
+ g_object_ref (part);
+ return part;
}
+ result = tny_platform_factory_new_mime_part (
+ modest_runtime_get_platform_factory());
+
+ attachment_content_type = tny_mime_part_get_content_type (part);
+
/* get mime part headers */
attachment_filename = tny_mime_part_get_filename (part);
attachment_cid = tny_mime_part_get_content_id (part);
/* fill the stream */
- attachment_stream = tny_mime_part_get_stream (part);
+ attachment_stream = tny_mime_part_get_stream (part);
tny_stream_reset (attachment_stream);
tny_mime_part_construct_from_stream (result,
attachment_stream,
iterator = tny_list_create_iterator (parts);
while (!tny_iterator_is_done (iterator)) {
TnyMimePart *subpart = TNY_MIME_PART (tny_iterator_get_current (iterator));
- TnyMimePart *subpart_copy = copy_mime_part (subpart);
- tny_mime_part_add_part (result, subpart_copy);
- g_object_unref (subpart);
+ if (subpart) {
+ TnyMimePart *subpart_copy = copy_mime_part (subpart);
+ tny_mime_part_add_part (result, subpart_copy);
+ g_object_unref (subpart);
+ }
+
tny_iterator_next (iterator);
}
g_object_unref (iterator);
old_attachment = pos->data;
attachment_part = copy_mime_part (old_attachment);
tny_mime_part_add_part (TNY_MIME_PART (msg), attachment_part);
+ g_object_unref (attachment_part);
}
}
{
const gchar *mime_type = want_html ? "text/html" : "text/plain";
TnyMimePart *part = NULL;
- TnyList *parts;
- TnyIterator *iter;
+ TnyList *parts = NULL;
+ TnyIterator *iter = NULL;
if (!msg)
return NULL;
gchar *content_type = NULL;
do {
part = TNY_MIME_PART(tny_iterator_get_current (iter));
+ if (part && TNY_IS_MSG (part)) {
+ g_object_unref (part);
+ tny_iterator_next (iter);
+ continue;
+ }
/* we need to strdown the content type, because
* tny_mime_part_has_content_type does not do it...
*/
- content_type = g_ascii_strdown
- (tny_mime_part_get_content_type (part), -1);
+ if (part) {
+ content_type = g_ascii_strdown
+ (tny_mime_part_get_content_type (part), -1);
+ }
if (g_str_has_prefix (content_type, mime_type) &&
!tny_mime_part_is_attachment (part))
if (part)
break;
}
+
if (part)
g_object_unref (G_OBJECT(part));
part = TNY_MIME_PART (data);
attachments_list = ((GList **) user_data);
- if ((tny_mime_part_is_attachment (part))||(TNY_IS_MSG (part)))
+ if ((tny_mime_part_is_attachment (part))||(TNY_IS_MSG (part))) {
*attachments_list = g_list_prepend (*attachments_list, part);
+ g_object_ref (part);
+ }
}
TnyMsg*