static void multipart_signed_set_mime_type_field (CamelDataWrapper *data_wrapper, CamelContentType *mime_type) { CamelDataWrapperClass *data_wrapper_class; CamelMultipartSigned *mps = (CamelMultipartSigned *) data_wrapper; /* we snoop the mime type to get boundary and hash info */ /* Chain up to parent's set_mime_type_field() method. */ data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (camel_multipart_signed_parent_class); data_wrapper_class->set_mime_type_field (data_wrapper, mime_type); if (mime_type) { const gchar *micalg, *protocol; protocol = camel_content_type_param (mime_type, "protocol"); g_free (mps->protocol); mps->protocol = g_strdup (protocol); micalg = camel_content_type_param (mime_type, "micalg"); g_free (mps->micalg); mps->micalg = g_strdup (micalg); } }
static gssize mime_message_write_to_stream_sync (CamelDataWrapper *data_wrapper, CamelStream *stream, GCancellable *cancellable, GError **error) { CamelDataWrapperClass *data_wrapper_class; CamelMimeMessage *mm = CAMEL_MIME_MESSAGE (data_wrapper); /* force mandatory headers ... */ if (mm->from == NULL) { /* FIXME: should we just abort? Should we make one up? */ g_warning ("No from set for message"); camel_medium_set_header ((CamelMedium *) mm, "From", ""); } if (!camel_medium_get_header ((CamelMedium *) mm, "Date")) camel_mime_message_set_date (mm, CAMEL_MESSAGE_DATE_CURRENT, 0); if (mm->subject == NULL) camel_mime_message_set_subject (mm, "No Subject"); if (mm->message_id == NULL) camel_mime_message_set_message_id (mm, NULL); /* FIXME: "To" header needs to be set explicitly as well ... */ if (!camel_medium_get_header ((CamelMedium *) mm, "Mime-Version")) camel_medium_set_header ((CamelMedium *) mm, "Mime-Version", "1.0"); /* Chain up to parent's write_to_stream_sync() method. */ data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS ( camel_mime_message_parent_class); return data_wrapper_class->write_to_stream_sync ( data_wrapper, stream, cancellable, error); }
static void camel_multipart_encrypted_class_init (CamelMultipartEncryptedClass *klass) { CamelDataWrapperClass *camel_data_wrapper_class = CAMEL_DATA_WRAPPER_CLASS (klass); parent_class = (CamelMultipartClass *) camel_multipart_get_type (); /* virtual method overload */ camel_data_wrapper_class->set_mime_type_field = set_mime_type_field; }
static gssize mime_message_write_to_output_stream_sync (CamelDataWrapper *data_wrapper, GOutputStream *output_stream, GCancellable *cancellable, GError **error) { CamelMimeMessage *message; message = CAMEL_MIME_MESSAGE (data_wrapper); mime_message_ensure_required_headers (message); /* Chain up to parent's write_to_output_stream_sync() method. */ return CAMEL_DATA_WRAPPER_CLASS (camel_mime_message_parent_class)-> write_to_output_stream_sync ( data_wrapper, output_stream, cancellable, error); }
static gboolean multipart_is_offline (CamelDataWrapper *data_wrapper) { CamelMultipart *multipart = CAMEL_MULTIPART (data_wrapper); GList *node; CamelDataWrapper *part; if (CAMEL_DATA_WRAPPER_CLASS (camel_multipart_parent_class)->is_offline (data_wrapper)) return TRUE; for (node = multipart->parts; node; node = node->next) { part = node->data; if (camel_data_wrapper_is_offline (part)) return TRUE; } return FALSE; }
static gboolean multipart_signed_construct_from_stream_sync (CamelDataWrapper *data_wrapper, CamelStream *stream, GCancellable *cancellable, GError **error) { CamelDataWrapperClass *parent_class; CamelMultipartSigned *mps; gboolean success; mps = CAMEL_MULTIPART_SIGNED (data_wrapper); /* Chain up to parent's construct_from_stream_sync() method. */ parent_class = CAMEL_DATA_WRAPPER_CLASS ( camel_multipart_signed_parent_class); success = parent_class->construct_from_stream_sync ( data_wrapper, stream, cancellable, error); if (success) { mps->start1 = -1; if (mps->content != NULL) { g_object_unref (mps->content); mps->content = NULL; } if (mps->contentraw != NULL) { g_object_unref (mps->contentraw); mps->contentraw = NULL; } if (mps->signature != NULL) { g_object_unref (mps->signature); mps->signature = NULL; } } return success; }