aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--calendar/gui/dialogs/comp-editor.c6
-rw-r--r--composer/e-composer-private.c3
-rw-r--r--composer/e-msg-composer.c167
-rw-r--r--composer/e-msg-composer.h14
-rw-r--r--e-util/e-activity.c6
-rw-r--r--e-util/e-signature-utils.c5
-rw-r--r--em-format/em-format-quote.c38
-rw-r--r--em-format/em-format.c117
-rw-r--r--em-format/em-format.h12
-rw-r--r--mail/e-mail-backend.c4
-rw-r--r--mail/e-mail-local.c2
-rw-r--r--mail/e-mail-migrate.c8
-rw-r--r--mail/e-mail-store.c8
-rw-r--r--mail/em-composer-utils.c22
-rw-r--r--mail/em-folder-tree.c22
-rw-r--r--mail/em-folder-utils.c28
-rw-r--r--mail/em-format-html-display.c53
-rw-r--r--mail/em-format-html.c253
-rw-r--r--mail/em-format-html.h3
-rw-r--r--mail/em-html-stream.c2
-rw-r--r--mail/em-inline-filter.c6
-rw-r--r--mail/em-subscribe-editor.c6
-rw-r--r--mail/em-sync-stream.c3
-rw-r--r--mail/em-utils.c44
-rw-r--r--mail/importers/evolution-mbox-importer.c4
-rw-r--r--mail/importers/mail-importer.c35
-rw-r--r--mail/mail-folder-cache.c14
-rw-r--r--mail/mail-mt.c16
-rw-r--r--mail/mail-ops.c172
-rw-r--r--mail/mail-ops.h3
-rw-r--r--mail/mail-send-recv.c5
-rw-r--r--mail/mail-session.c8
-rw-r--r--mail/mail-tools.c11
-rw-r--r--mail/mail-vfolder.c10
-rw-r--r--modules/calendar/e-cal-attachment-handler.c2
-rw-r--r--modules/composer-autosave/e-autosave-utils.c13
-rw-r--r--modules/mail/e-mail-attachment-handler.c9
-rw-r--r--modules/mail/e-mail-shell-view.c2
-rw-r--r--plugins/audio-inline/audio-inline.c5
-rw-r--r--plugins/bogo-junk-plugin/bf-junk-filter.c31
-rw-r--r--plugins/dbx-import/dbx-importer.c29
-rw-r--r--plugins/groupwise-features/install-shared.c7
-rw-r--r--plugins/groupwise-features/proxy.c2
-rw-r--r--plugins/groupwise-features/share-folder-common.c4
-rw-r--r--plugins/groupwise-features/status-track.c2
-rw-r--r--plugins/image-inline/image-inline.c3
-rw-r--r--plugins/itip-formatter/itip-formatter.c4
-rw-r--r--plugins/mail-to-task/mail-to-task.c4
-rw-r--r--plugins/mark-all-read/mark-all-read.c4
-rw-r--r--plugins/prefer-plain/prefer-plain.c2
-rw-r--r--plugins/pst-import/pst-importer.c34
-rw-r--r--plugins/sa-junk-plugin/em-junk-filter.c59
-rw-r--r--plugins/templates/templates.c15
-rw-r--r--plugins/tnef-attachments/tnef-plugin.c7
-rw-r--r--plugins/vcard-inline/vcard-inline.c3
-rw-r--r--widgets/misc/e-attachment.c11
56 files changed, 725 insertions, 637 deletions
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c
index 6c3179cf2c..2213d478bc 100644
--- a/calendar/gui/dialogs/comp-editor.c
+++ b/calendar/gui/dialogs/comp-editor.c
@@ -3040,14 +3040,16 @@ comp_editor_get_mime_attach_list (CompEditor *editor)
byte_array = g_byte_array_new ();
stream = camel_stream_mem_new_with_byte_array (byte_array);
- camel_data_wrapper_decode_to_stream (wrapper, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ wrapper, stream, NULL, NULL);
buffer = g_memdup (byte_array->data, byte_array->len);
camel_mime_part_set_content_id (mime_part, NULL);
cal_mime_attach->encoded_data = (gchar *)buffer;
cal_mime_attach->length = byte_array->len;
- cal_mime_attach->filename = g_strdup (camel_mime_part_get_filename (mime_part));
+ cal_mime_attach->filename =
+ g_strdup (camel_mime_part_get_filename (mime_part));
desc = camel_mime_part_get_description (mime_part);
if (!desc || *desc == '\0')
desc = _("attachment");
diff --git a/composer/e-composer-private.c b/composer/e-composer-private.c
index d4dcb46126..01ffda6501 100644
--- a/composer/e-composer-private.c
+++ b/composer/e-composer-private.c
@@ -110,7 +110,8 @@ msg_composer_url_requested_cb (GtkHTML *html,
array = g_byte_array_new ();
camel_stream = camel_stream_mem_new_with_byte_array (array);
wrapper = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
- camel_data_wrapper_decode_to_stream (wrapper, camel_stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ wrapper, camel_stream, NULL, NULL);
gtk_html_write (html, stream, (gchar *) array->data, array->len);
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 5ef78d5daa..f5f47782f5 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -105,19 +105,19 @@ static void add_attachments_from_multipart (EMsgComposer *composer,
/* used by e_msg_composer_new_with_message () */
static void handle_multipart (EMsgComposer *composer,
CamelMultipart *multipart,
- CamelOperation *operation,
+ GCancellable *cancellable,
gint depth);
static void handle_multipart_alternative (EMsgComposer *composer,
CamelMultipart *multipart,
- CamelOperation *operation,
+ GCancellable *cancellable,
gint depth);
static void handle_multipart_encrypted (EMsgComposer *composer,
CamelMimePart *multipart,
- CamelOperation *operation,
+ GCancellable *cancellable,
gint depth);
static void handle_multipart_signed (EMsgComposer *composer,
CamelMultipart *multipart,
- CamelOperation *operation,
+ GCancellable *cancellable,
gint depth);
G_DEFINE_TYPE_WITH_CODE (
@@ -141,7 +141,7 @@ static gchar *
emcu_part_to_html (CamelMimePart *part,
gssize *len,
EMFormat *source,
- CamelOperation *operation)
+ GCancellable *cancellable)
{
EMFormatQuote *emfq;
CamelStreamMem *mem;
@@ -165,11 +165,10 @@ emcu_part_to_html (CamelMimePart *part,
(EMFormat *) emfq, source->charset);
}
em_format_part (
- EM_FORMAT (emfq), CAMEL_STREAM (mem),
- part, G_CANCELLABLE (operation));
+ EM_FORMAT (emfq), CAMEL_STREAM (mem), part, cancellable);
g_object_unref (emfq);
- camel_stream_write((CamelStream *) mem, "", 1, NULL);
+ camel_stream_write((CamelStream *) mem, "", 1, cancellable, NULL);
g_object_unref (mem);
text = (gchar *)buf->data;
@@ -610,6 +609,7 @@ static CamelMimeMessage *
build_message (EMsgComposer *composer,
gboolean html_content,
gboolean save_html_object_data,
+ GCancellable *cancellable,
GError **error)
{
GtkhtmlEditor *editor;
@@ -623,7 +623,6 @@ build_message (EMsgComposer *composer,
CamelTransferEncoding plain_encoding;
const gchar *iconv_charset = NULL;
GPtrArray *recipients = NULL;
- CamelOperation *operation;
CamelMultipart *body = NULL;
CamelContentType *type;
CamelMimeMessage *new;
@@ -656,8 +655,6 @@ build_message (EMsgComposer *composer,
return p->redirect;
}
- operation = camel_operation_registered ();
-
new = camel_mime_message_new ();
build_message_headers (composer, new, FALSE);
for (i = 0; i < p->extra_hdr_names->len; i++) {
@@ -761,7 +758,8 @@ build_message (EMsgComposer *composer,
/* construct the content object */
plain = camel_data_wrapper_new ();
- camel_data_wrapper_construct_from_stream (plain, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ plain, stream, NULL, NULL);
g_object_unref (stream);
if (plain_encoding == CAMEL_TRANSFER_ENCODING_QUOTEDPRINTABLE) {
@@ -818,7 +816,8 @@ build_message (EMsgComposer *composer,
g_object_unref (mf);
}
- camel_data_wrapper_construct_from_stream (html, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ html, stream, NULL, NULL);
g_object_unref (stream);
camel_data_wrapper_set_mime_type (html, "text/html; charset=utf-8");
@@ -973,15 +972,11 @@ build_message (EMsgComposer *composer,
CAMEL_GPG_CONTEXT (cipher),
account->pgp_always_trust);
- camel_operation_start (
- operation, _("Signing message"));
- camel_cipher_sign (
+ camel_cipher_context_sign_sync (
cipher, pgp_userid,
account_hash_algo_to_camel_hash (
account ? e_account_get_string (account, E_ACCOUNT_PGP_HASH_ALGORITHM) : NULL),
- part, npart, G_CANCELLABLE (operation),
- &local_error);
- camel_operation_end (operation);
+ part, npart, cancellable, &local_error);
g_object_unref (cipher);
@@ -1008,13 +1003,9 @@ build_message (EMsgComposer *composer,
CAMEL_GPG_CONTEXT (cipher),
account->pgp_always_trust);
- camel_operation_start (
- operation, _("Encrypting mesage"));
- camel_cipher_encrypt (
+ camel_cipher_context_encrypt_sync (
cipher, pgp_userid, recipients,
- part, npart, G_CANCELLABLE (operation),
- &local_error);
- camel_operation_end (operation);
+ part, npart, cancellable, &local_error);
g_object_unref (cipher);
@@ -1094,17 +1085,13 @@ build_message (EMsgComposer *composer,
TRUE, account->smime_encrypt_key);
}
- camel_operation_start (
- operation, _("Signing message"));
- camel_cipher_sign (
+ camel_cipher_context_sign_sync (
cipher, account->smime_sign_key,
account_hash_algo_to_camel_hash (
(account != NULL) ?
e_account_get_string (account,
E_ACCOUNT_SMIME_HASH_ALGORITHM) : NULL),
- part, npart, G_CANCELLABLE (operation),
- &local_error);
- camel_operation_end (operation);
+ part, npart, cancellable, &local_error);
g_object_unref (cipher);
@@ -1130,14 +1117,10 @@ build_message (EMsgComposer *composer,
(CamelSMIMEContext *) cipher, TRUE,
account->smime_encrypt_key);
- camel_operation_start (
- operation, _("Encrypting message"));
- camel_cipher_encrypt (
+ camel_cipher_context_encrypt_sync (
cipher, NULL, recipients, part,
- (CamelMimePart *) new,
- G_CANCELLABLE (operation),
+ (CamelMimePart *) new, cancellable,
&local_error);
- camel_operation_end (operation);
g_object_unref (cipher);
@@ -1182,9 +1165,6 @@ skip_content:
CAMEL_MEDIUM (new), "X-Evolution-Format",
html_content ? "text/html" : "text/plain");
- if (operation != NULL)
- g_object_unref (operation);
-
return new;
exception:
@@ -2483,7 +2463,7 @@ e_msg_composer_add_message_attachments (EMsgComposer *composer,
static void
handle_multipart_signed (EMsgComposer *composer,
CamelMultipart *multipart,
- CamelOperation *operation,
+ GCancellable *cancellable,
gint depth)
{
CamelContentType *content_type;
@@ -2527,31 +2507,31 @@ handle_multipart_signed (EMsgComposer *composer,
/* Handle the signed content and configure
* the composer to sign outgoing messages. */
handle_multipart_signed (
- composer, multipart, operation, depth);
+ composer, multipart, cancellable, depth);
} else if (CAMEL_IS_MULTIPART_ENCRYPTED (content)) {
/* Decrypt the encrypted content and configure
* the composer to encrypt outgoing messages. */
handle_multipart_encrypted (
- composer, mime_part, operation, depth);
+ composer, mime_part, cancellable, depth);
} else if (camel_content_type_is (content_type, "multipart", "alternative")) {
/* This contains the text/plain and text/html
* versions of the message body. */
handle_multipart_alternative (
- composer, multipart, operation, depth);
+ composer, multipart, cancellable, depth);
} else {
/* There must be attachments... */
handle_multipart (
- composer, multipart, operation, depth);
+ composer, multipart, cancellable, depth);
}
} else if (camel_content_type_is (content_type, "text", "*")) {
gchar *html;
gssize length;
- html = emcu_part_to_html (mime_part, &length, NULL, operation);
+ html = emcu_part_to_html (mime_part, &length, NULL, cancellable);
e_msg_composer_set_pending_body (composer, html, length);
} else {
e_msg_composer_attach (composer, mime_part);
@@ -2561,7 +2541,7 @@ handle_multipart_signed (EMsgComposer *composer,
static void
handle_multipart_encrypted (EMsgComposer *composer,
CamelMimePart *multipart,
- CamelOperation *operation,
+ GCancellable *cancellable,
gint depth)
{
CamelContentType *content_type;
@@ -2589,11 +2569,8 @@ handle_multipart_encrypted (EMsgComposer *composer,
session = e_msg_composer_get_session (composer);
cipher = camel_gpg_context_new (session);
mime_part = camel_mime_part_new ();
- camel_operation_start (operation, _("Decrypting message"));
- valid = camel_cipher_decrypt (
- cipher, multipart, mime_part,
- G_CANCELLABLE (operation), NULL);
- camel_operation_end (operation);
+ valid = camel_cipher_context_decrypt_sync (
+ cipher, multipart, mime_part, cancellable, NULL);
g_object_unref (cipher);
if (valid == NULL)
@@ -2617,31 +2594,31 @@ handle_multipart_encrypted (EMsgComposer *composer,
/* Handle the signed content and configure the
* composer to sign outgoing messages. */
handle_multipart_signed (
- composer, content_multipart, operation, depth);
+ composer, content_multipart, cancellable, depth);
} else if (CAMEL_IS_MULTIPART_ENCRYPTED (content)) {
/* Decrypt the encrypted content and configure the
* composer to encrypt outgoing messages. */
handle_multipart_encrypted (
- composer, mime_part, operation, depth);
+ composer, mime_part, cancellable, depth);
} else if (camel_content_type_is (content_type, "multipart", "alternative")) {
/* This contains the text/plain and text/html
* versions of the message body. */
handle_multipart_alternative (
- composer, content_multipart, operation, depth);
+ composer, content_multipart, cancellable, depth);
} else {
/* There must be attachments... */
handle_multipart (
- composer, content_multipart, operation, depth);
+ composer, content_multipart, cancellable, depth);
}
} else if (camel_content_type_is (content_type, "text", "*")) {
gchar *html;
gssize length;
- html = emcu_part_to_html (mime_part, &length, NULL, operation);
+ html = emcu_part_to_html (mime_part, &length, NULL, cancellable);
e_msg_composer_set_pending_body (composer, html, length);
} else {
e_msg_composer_attach (composer, mime_part);
@@ -2653,7 +2630,7 @@ handle_multipart_encrypted (EMsgComposer *composer,
static void
handle_multipart_alternative (EMsgComposer *composer,
CamelMultipart *multipart,
- CamelOperation *operation,
+ GCancellable *cancellable,
gint depth)
{
/* Find the text/html part and set the composer body to it's contents */
@@ -2684,20 +2661,20 @@ handle_multipart_alternative (EMsgComposer *composer,
/* Handle the signed content and configure
* the composer to sign outgoing messages. */
handle_multipart_signed (
- composer, mp, operation, depth + 1);
+ composer, mp, cancellable, depth + 1);
} else if (CAMEL_IS_MULTIPART_ENCRYPTED (content)) {
/* Decrypt the encrypted content and configure
* the composer to encrypt outgoing messages. */
handle_multipart_encrypted (
composer, mime_part,
- operation, depth + 1);
+ cancellable, depth + 1);
} else {
/* Depth doesn't matter so long as we
* don't pass 0. */
handle_multipart (
- composer, mp, operation, depth + 1);
+ composer, mp, cancellable, depth + 1);
}
} else if (camel_content_type_is (content_type, "text", "html")) {
@@ -2718,7 +2695,7 @@ handle_multipart_alternative (EMsgComposer *composer,
gchar *html;
gssize length;
- html = emcu_part_to_html (text_part, &length, NULL, operation);
+ html = emcu_part_to_html (text_part, &length, NULL, cancellable);
e_msg_composer_set_pending_body (composer, html, length);
}
}
@@ -2726,7 +2703,7 @@ handle_multipart_alternative (EMsgComposer *composer,
static void
handle_multipart (EMsgComposer *composer,
CamelMultipart *multipart,
- CamelOperation *operation,
+ GCancellable *cancellable,
gint depth)
{
gint i, nparts;
@@ -2755,24 +2732,24 @@ handle_multipart (EMsgComposer *composer,
/* Handle the signed content and configure
* the composer to sign outgoing messages. */
handle_multipart_signed (
- composer, mp, operation, depth + 1);
+ composer, mp, cancellable, depth + 1);
} else if (CAMEL_IS_MULTIPART_ENCRYPTED (content)) {
/* Decrypt the encrypted content and configure
* the composer to encrypt outgoing messages. */
handle_multipart_encrypted (
composer, mime_part,
- operation, depth + 1);
+ cancellable, depth + 1);
} else if (camel_content_type_is (content_type, "multipart", "alternative")) {
handle_multipart_alternative (
- composer, mp, operation, depth + 1);
+ composer, mp, cancellable, depth + 1);
} else {
/* Depth doesn't matter so long as we
* don't pass 0. */
handle_multipart (
- composer, mp, operation, depth + 1);
+ composer, mp, cancellable, depth + 1);
}
} else if (depth == 0 && i == 0) {
@@ -2782,7 +2759,7 @@ handle_multipart (EMsgComposer *composer,
/* Since the first part is not multipart/alternative,
* this must be the body. */
html = emcu_part_to_html (
- mime_part, &length, NULL, operation);
+ mime_part, &length, NULL, cancellable);
e_msg_composer_set_pending_body (composer, html, length);
} else if (camel_mime_part_get_content_id (mime_part) ||
camel_mime_part_get_content_location (mime_part)) {
@@ -2837,7 +2814,8 @@ set_signature_gui (EMsgComposer *composer)
**/
EMsgComposer *
e_msg_composer_new_with_message (EShell *shell,
- CamelMimeMessage *message)
+ CamelMimeMessage *message,
+ GCancellable *cancellable)
{
CamelInternetAddress *to, *cc, *bcc;
GList *To = NULL, *Cc = NULL, *Bcc = NULL, *postto = NULL;
@@ -2845,7 +2823,6 @@ e_msg_composer_new_with_message (EShell *shell,
EDestination **Tov, **Ccv, **Bccv;
GHashTable *auto_cc, *auto_bcc;
CamelContentType *content_type;
- CamelOperation *operation = NULL; /* FIXME Pass this in. */
struct _camel_header_raw *headers;
CamelDataWrapper *content;
EAccount *account = NULL;
@@ -3093,25 +3070,25 @@ e_msg_composer_new_with_message (EShell *shell,
/* Handle the signed content and configure the
* composer to sign outgoing messages. */
handle_multipart_signed (
- composer, multipart, operation, 0);
+ composer, multipart, cancellable, 0);
} else if (CAMEL_IS_MULTIPART_ENCRYPTED (content)) {
/* Decrypt the encrypted content and configure the
* composer to encrypt outgoing messages. */
handle_multipart_encrypted (
composer, CAMEL_MIME_PART (message),
- operation, 0);
+ cancellable, 0);
} else if (camel_content_type_is (content_type, "multipart", "alternative")) {
/* This contains the text/plain and text/html
* versions of the message body. */
handle_multipart_alternative (
- composer, multipart, operation, 0);
+ composer, multipart, cancellable, 0);
} else {
/* There must be attachments... */
handle_multipart (
- composer, multipart, operation, 0);
+ composer, multipart, cancellable, 0);
}
} else {
gchar *html;
@@ -3125,7 +3102,7 @@ e_msg_composer_new_with_message (EShell *shell,
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (ACTION (SMIME_ENCRYPT)), TRUE);
html = emcu_part_to_html (
- CAMEL_MIME_PART (message), &length, NULL, operation);
+ CAMEL_MIME_PART (message), &length, NULL, cancellable);
e_msg_composer_set_pending_body (composer, html, length);
}
@@ -3138,9 +3115,6 @@ e_msg_composer_new_with_message (EShell *shell,
set_signature_gui (composer);
- if (operation != NULL)
- g_object_unref (operation);
-
return composer;
}
@@ -3180,7 +3154,8 @@ disable_editor (EMsgComposer *composer)
EMsgComposer *
e_msg_composer_new_redirect (EShell *shell,
CamelMimeMessage *message,
- const gchar *resent_from)
+ const gchar *resent_from,
+ GCancellable *cancellable)
{
EMsgComposer *composer;
EComposerHeaderTable *table;
@@ -3189,7 +3164,8 @@ e_msg_composer_new_redirect (EShell *shell,
g_return_val_if_fail (E_IS_SHELL (shell), NULL);
g_return_val_if_fail (CAMEL_IS_MIME_MESSAGE (message), NULL);
- composer = e_msg_composer_new_with_message (shell, message);
+ composer = e_msg_composer_new_with_message (
+ shell, message, cancellable);
table = e_msg_composer_get_header_table (composer);
subject = camel_mime_message_get_subject (message);
@@ -3713,7 +3689,8 @@ e_msg_composer_add_inline_image_from_file (EMsgComposer *composer,
return NULL;
wrapper = camel_data_wrapper_new ();
- camel_data_wrapper_construct_from_stream (wrapper, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ wrapper, stream, NULL, NULL);
g_object_unref (CAMEL_OBJECT (stream));
mime_type = e_util_guess_mime_type (dec_file_name, TRUE);
@@ -3791,6 +3768,7 @@ e_msg_composer_add_inline_image_from_mime_part (EMsgComposer *composer,
CamelMimeMessage *
e_msg_composer_get_message (EMsgComposer *composer,
gboolean save_html_object_data,
+ GCancellable *cancellable,
GError **error)
{
EAttachmentView *view;
@@ -3815,7 +3793,7 @@ e_msg_composer_get_message (EMsgComposer *composer,
return build_message (
composer, html_content,
- save_html_object_data, error);
+ save_html_object_data, cancellable, error);
}
static gchar *
@@ -3857,7 +3835,8 @@ msg_composer_get_message_print_helper (EMsgComposer *composer,
CamelMimeMessage *
e_msg_composer_get_message_print (EMsgComposer *composer,
- gboolean save_html_object_data)
+ gboolean save_html_object_data,
+ GCancellable *cancellable)
{
EShell *shell;
GtkhtmlEditor *editor;
@@ -3872,12 +3851,14 @@ e_msg_composer_get_message_print (EMsgComposer *composer,
html_content = gtkhtml_editor_get_html_mode (editor);
msg = build_message (
- composer, html_content, save_html_object_data, NULL);
+ composer, html_content, save_html_object_data,
+ cancellable, NULL);
if (msg == NULL)
return NULL;
shell = e_msg_composer_get_shell (composer);
- temp_composer = e_msg_composer_new_with_message (shell, msg);
+ temp_composer = e_msg_composer_new_with_message (
+ shell, msg, cancellable);
g_object_unref (msg);
/* Override composer flags. */
@@ -3885,7 +3866,8 @@ e_msg_composer_get_message_print (EMsgComposer *composer,
temp_composer, html_content);
msg = build_message (
- temp_composer, TRUE, save_html_object_data, NULL);
+ temp_composer, TRUE, save_html_object_data,
+ cancellable, NULL);
if (msg != NULL)
camel_medium_set_header (
CAMEL_MEDIUM (msg), "X-Evolution-Format", flags);
@@ -3898,6 +3880,7 @@ e_msg_composer_get_message_print (EMsgComposer *composer,
CamelMimeMessage *
e_msg_composer_get_message_draft (EMsgComposer *composer,
+ GCancellable *cancellable,
GError **error)
{
GtkhtmlEditor *editor;
@@ -3932,7 +3915,7 @@ e_msg_composer_get_message_draft (EMsgComposer *composer,
smime_encrypt = gtk_toggle_action_get_active (action);
gtk_toggle_action_set_active (action, FALSE);
- msg = build_message (composer, TRUE, TRUE, error);
+ msg = build_message (composer, TRUE, TRUE, cancellable, error);
if (msg == NULL)
return NULL;
@@ -4182,7 +4165,8 @@ e_msg_composer_can_close (EMsgComposer *composer,
EMsgComposer *
e_msg_composer_load_from_file (EShell *shell,
- const gchar *filename)
+ const gchar *filename,
+ GCancellable *cancellable)
{
CamelStream *stream;
CamelMimeMessage *message;
@@ -4197,11 +4181,12 @@ e_msg_composer_load_from_file (EShell *shell,
return NULL;
message = camel_mime_message_new ();
- camel_data_wrapper_construct_from_stream (
- CAMEL_DATA_WRAPPER (message), stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ CAMEL_DATA_WRAPPER (message), stream, NULL, NULL);
g_object_unref (stream);
- composer = e_msg_composer_new_with_message (shell, message);
+ composer = e_msg_composer_new_with_message (
+ shell, message, cancellable);
if (composer != NULL)
gtk_widget_show (GTK_WIDGET (composer));
diff --git a/composer/e-msg-composer.h b/composer/e-msg-composer.h
index 5cb439512c..866774ed9c 100644
--- a/composer/e-msg-composer.h
+++ b/composer/e-msg-composer.h
@@ -71,12 +71,14 @@ struct _EMsgComposerClass {
GType e_msg_composer_get_type (void);
EMsgComposer * e_msg_composer_new (EShell *shell);
EMsgComposer * e_msg_composer_new_with_message (EShell *shell,
- CamelMimeMessage *msg);
+ CamelMimeMessage *msg,
+ GCancellable *cancellable);
EMsgComposer * e_msg_composer_new_from_url (EShell *shell,
const gchar *url);
EMsgComposer * e_msg_composer_new_redirect (EShell *shell,
CamelMimeMessage *message,
- const gchar *resent_from);
+ const gchar *resent_from,
+ GCancellable *cancellable);
EFocusTracker * e_msg_composer_get_focus_tracker
(EMsgComposer *composer);
CamelSession * e_msg_composer_get_session (EMsgComposer *composer);
@@ -115,14 +117,17 @@ void e_msg_composer_add_inline_image_from_mime_part
CamelMimeMessage *
e_msg_composer_get_message (EMsgComposer *composer,
gboolean save_html_object_data,
+ GCancellable *cancellable,
GError **error);
CamelMimeMessage *
e_msg_composer_get_message_print
(EMsgComposer *composer,
- gboolean save_html_object_data);
+ gboolean save_html_object_data,
+ GCancellable *cancellable);
CamelMimeMessage *
e_msg_composer_get_message_draft
(EMsgComposer *composer,
+ GCancellable *cancellable,
GError **error);
void e_msg_composer_show_sig_file (EMsgComposer *composer);
@@ -143,7 +148,8 @@ gboolean e_msg_composer_can_close (EMsgComposer *composer,
gboolean can_save_draft);
EMsgComposer * e_msg_composer_load_from_file (EShell *shell,
- const gchar *filename);
+ const gchar *filename,
+ GCancellable *cancellable);
void e_msg_composer_reply_indent (EMsgComposer *composer);
diff --git a/e-util/e-activity.c b/e-util/e-activity.c
index f90361d7f2..38196e8484 100644
--- a/e-util/e-activity.c
+++ b/e-util/e-activity.c
@@ -266,10 +266,8 @@ activity_describe (EActivity *activity)
} else if (e_activity_is_completed (activity)) {
/* Translators: This is a completed activity. */
g_string_printf (string, _("%s (completed)"), text);
- } else if (percent < 0.0) {
- /* Translators: This is an activity whose percent
- * complete is unknown. */
- g_string_printf (string, _("%s..."), text);
+ } else if (percent <= 0.0) {
+ g_string_printf (string, _("%s"), text);
} else {
/* Translators: This is an activity whose percent
* complete is known. */
diff --git a/e-util/e-signature-utils.c b/e-util/e-signature-utils.c
index cf55c73864..d42d6f325d 100644
--- a/e-util/e-signature-utils.c
+++ b/e-util/e-signature-utils.c
@@ -196,7 +196,7 @@ e_read_signature_file (ESignature *signature,
output_stream = camel_stream_mem_new ();
camel_stream_mem_set_byte_array (
CAMEL_STREAM_MEM (output_stream), buffer);
- camel_stream_write_to_stream (input_stream, output_stream, NULL);
+ camel_stream_write_to_stream (input_stream, output_stream, NULL, NULL);
g_object_unref (output_stream);
g_object_unref (input_stream);
@@ -290,7 +290,8 @@ e_run_signature_script (const gchar *filename)
CAMEL_STREAM_MEM (output_stream), buffer);
input_stream = camel_stream_fs_new_with_fd (in_fds[0]);
- camel_stream_write_to_stream (input_stream, output_stream, NULL);
+ camel_stream_write_to_stream (
+ input_stream, output_stream, NULL, NULL);
g_object_unref (input_stream);
g_object_unref (output_stream);
diff --git a/em-format/em-format-quote.c b/em-format/em-format-quote.c
index 3313f2a861..569c46f9c4 100644
--- a/em-format/em-format-quote.c
+++ b/em-format/em-format-quote.c
@@ -88,7 +88,7 @@ emfq_format_clone (EMFormat *emf,
CAMEL_MIME_PART (msg),
handle, cancellable, FALSE);
- camel_stream_flush (emfq->stream, NULL);
+ camel_stream_flush (emfq->stream, cancellable, NULL);
g_signal_emit_by_name(emf, "complete");
}
@@ -104,7 +104,8 @@ emfq_format_error (EMFormat *emf,
static void
emfq_format_source (EMFormat *emf,
CamelStream *stream,
- CamelMimePart *part)
+ CamelMimePart *part,
+ GCancellable *cancellable)
{
CamelStream *filtered_stream;
CamelMimeFilter *html_filter;
@@ -119,7 +120,8 @@ emfq_format_source (EMFormat *emf,
g_object_unref (html_filter);
em_format_format_text (
- emf, filtered_stream, CAMEL_DATA_WRAPPER (part));
+ emf, filtered_stream,
+ CAMEL_DATA_WRAPPER (part), cancellable);
g_object_unref (filtered_stream);
}
@@ -140,18 +142,19 @@ emfq_format_attachment (EMFormat *emf,
camel_stream_write_string (
stream, "<table border=1 cellspacing=0 cellpadding=0>"
- "<tr><td><font size=-1>\n", NULL);
+ "<tr><td><font size=-1>\n", cancellable, NULL);
/* output some info about it */
text = em_format_describe_part (part, mime_type);
html = camel_text_to_html (
text, emfq->text_html_flags &
CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0);
- camel_stream_write_string (stream, html, NULL);
+ camel_stream_write_string (stream, html, cancellable, NULL);
g_free (html);
g_free (text);
- camel_stream_write_string (stream, "</font></td></tr></table>", NULL);
+ camel_stream_write_string (
+ stream, "</font></td></tr></table>", cancellable, NULL);
handle->handler (emf, stream, part, handle, cancellable, FALSE);
}
@@ -518,7 +521,8 @@ emfq_format_message (EMFormat *emf,
if (emfq->flags & EM_FORMAT_QUOTE_CITE)
camel_stream_write_string (
stream, "</blockquote><!--+GtkHTML:"
- "<DATA class=\"ClueFlow\" clear=\"orig\">-->", NULL);
+ "<DATA class=\"ClueFlow\" clear=\"orig\">-->",
+ cancellable, NULL);
}
static void
@@ -565,9 +569,9 @@ emfq_text_plain (EMFormat *emf,
em_format_format_text (
EM_FORMAT (emfq), filtered_stream,
- CAMEL_DATA_WRAPPER (part));
+ CAMEL_DATA_WRAPPER (part), cancellable);
- camel_stream_flush (filtered_stream, NULL);
+ camel_stream_flush (filtered_stream, cancellable, NULL);
g_object_unref (filtered_stream);
}
@@ -586,10 +590,12 @@ emfq_text_enriched (EMFormat *emf,
if (g_strcmp0 (info->mime_type, "text/richtext") == 0) {
flags = CAMEL_MIME_FILTER_ENRICHED_IS_RICHTEXT;
camel_stream_write_string (
- stream, "\n<!-- text/richtext -->\n", NULL);
+ stream, "\n<!-- text/richtext -->\n",
+ cancellable, NULL);
} else {
camel_stream_write_string (
- stream, "\n<!-- text/enriched -->\n", NULL);
+ stream, "\n<!-- text/enriched -->\n",
+ cancellable, NULL);
}
enriched = camel_mime_filter_enriched_new (flags);
@@ -598,9 +604,9 @@ emfq_text_enriched (EMFormat *emf,
CAMEL_STREAM_FILTER (filtered_stream), enriched);
g_object_unref (enriched);
- camel_stream_write_string (stream, "<br><hr><br>", NULL);
+ camel_stream_write_string (stream, "<br><hr><br>", cancellable, NULL);
em_format_format_text (
- emf, filtered_stream, CAMEL_DATA_WRAPPER (part));
+ emf, filtered_stream, CAMEL_DATA_WRAPPER (part), cancellable);
g_object_unref (filtered_stream);
}
@@ -612,8 +618,10 @@ emfq_text_html (EMFormat *emf,
GCancellable *cancellable,
gboolean is_fallback)
{
- camel_stream_write_string(stream, "\n<!-- text/html -->\n", NULL);
- em_format_format_text (emf, stream, (CamelDataWrapper *)part);
+ camel_stream_write_string (
+ stream, "\n<!-- text/html -->\n", cancellable, NULL);
+ em_format_format_text (
+ emf, stream, (CamelDataWrapper *)part, cancellable);
}
static void
diff --git a/em-format/em-format.c b/em-format/em-format.c
index f2efac909b..9574530109 100644
--- a/em-format/em-format.c
+++ b/em-format/em-format.c
@@ -1281,7 +1281,8 @@ em_format_format_secure (EMFormat *emf,
void
em_format_format_source (EMFormat *emf,
CamelStream *stream,
- CamelMimePart *mime_part)
+ CamelMimePart *mime_part,
+ GCancellable *cancellable)
{
EMFormatClass *class;
@@ -1292,7 +1293,7 @@ em_format_format_source (EMFormat *emf,
class = EM_FORMAT_GET_CLASS (emf);
g_return_if_fail (class->format_source != NULL);
- class->format_source (emf, stream, mime_part);
+ class->format_source (emf, stream, mime_part, cancellable);
}
gboolean
@@ -1318,9 +1319,11 @@ em_format_format_content (EMFormat *emf,
CamelDataWrapper *dw = camel_medium_get_content ((CamelMedium *)part);
if (camel_content_type_is (dw->mime_type, "text", "*"))
- em_format_format_text (emf, stream, (CamelDataWrapper *)part);
+ em_format_format_text (
+ emf, stream, (CamelDataWrapper *)part, cancellable);
else
- camel_data_wrapper_decode_to_stream (dw, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ dw, stream, cancellable, NULL);
}
/**
@@ -1328,13 +1331,15 @@ em_format_format_content (EMFormat *emf,
* @emf:
* @stream: Where to write the converted text
* @part: Part whose container is to be formatted
+ * @cancellable: optional #GCancellable object, or %NULL
*
* Decode/output a part's content to @stream.
**/
void
em_format_format_text (EMFormat *emf,
CamelStream *stream,
- CamelDataWrapper *dw)
+ CamelDataWrapper *dw,
+ GCancellable *cancellable)
{
CamelStream *filter_stream;
CamelMimeFilter *filter;
@@ -1367,9 +1372,9 @@ em_format_format_text (EMFormat *emf,
CAMEL_STREAM_FILTER (filter_stream),
CAMEL_MIME_FILTER (windows));
- camel_data_wrapper_decode_to_stream (
- dw, (CamelStream *)filter_stream, NULL);
- camel_stream_flush ((CamelStream *)filter_stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ dw, (CamelStream *)filter_stream, cancellable, NULL);
+ camel_stream_flush ((CamelStream *)filter_stream, cancellable, NULL);
g_object_unref (filter_stream);
charset = camel_mime_filter_windows_real_charset (windows);
@@ -1399,21 +1404,22 @@ em_format_format_text (EMFormat *emf,
}
g_object_unref (gconf);
- size = camel_data_wrapper_decode_to_stream (
+ size = camel_data_wrapper_decode_to_stream_sync (
emf->mode == EM_FORMAT_MODE_SOURCE ?
(CamelDataWrapper *) dw :
camel_medium_get_content ((CamelMedium *)dw),
- (CamelStream *)filter_stream, NULL);
- camel_stream_flush ((CamelStream *)filter_stream, NULL);
+ (CamelStream *)filter_stream, cancellable, NULL);
+ camel_stream_flush ((CamelStream *)filter_stream, cancellable, NULL);
g_object_unref (filter_stream);
camel_stream_reset (mem_stream, NULL);
if (max == -1 || size == -1 || size < (max * 1024) || emf->composer) {
- camel_stream_write_to_stream (mem_stream, (CamelStream *)stream, NULL);
- camel_stream_flush ((CamelStream *)stream, NULL);
+ camel_stream_write_to_stream (mem_stream, (CamelStream *)stream, cancellable, NULL);
+ camel_stream_flush ((CamelStream *)stream, cancellable, NULL);
} else {
EM_FORMAT_GET_CLASS (emf)->format_optional (
- emf, stream, (CamelMimePart *)dw, mem_stream);
+ emf, stream, (CamelMimePart *)dw,
+ mem_stream, cancellable);
}
if (windows)
@@ -1513,7 +1519,7 @@ emf_application_xpkcs7mime (EMFormat *emf,
EM_FORMAT_VALIDITY_FOUND_SMIME;
opart = camel_mime_part_new ();
- valid = camel_cipher_decrypt (
+ valid = camel_cipher_context_decrypt_sync (
context, part, opart, cancellable, &local_error);
if (valid == NULL) {
em_format_format_error (
@@ -1554,7 +1560,7 @@ emf_multipart_appledouble (EMFormat *emf,
gint len;
if (!CAMEL_IS_MULTIPART (mp)) {
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
return;
}
@@ -1566,7 +1572,7 @@ emf_multipart_appledouble (EMFormat *emf,
em_format_part (emf, stream, mime_part, cancellable);
g_string_truncate (emf->part_id, len);
} else
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
}
@@ -1583,7 +1589,7 @@ emf_multipart_mixed (EMFormat *emf,
gint i, nparts, len;
if (!CAMEL_IS_MULTIPART (mp)) {
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
return;
}
@@ -1611,20 +1617,36 @@ emf_multipart_alternative (EMFormat *emf,
CamelMimePart *best = NULL;
if (!CAMEL_IS_MULTIPART (mp)) {
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
return;
}
/* as per rfc, find the last part we know how to display */
nparts = camel_multipart_get_number (mp);
for (i = 0; i < nparts; i++) {
+ CamelDataWrapper *data_wrapper;
CamelContentType *type;
+ CamelStream *null_stream;
gchar *mime_type;
+ gsize content_size;
/* is it correct to use the passed in *part here? */
part = camel_multipart_get_part (mp, i);
- if (!part || !camel_mime_part_get_content_size (part))
+ if (part == NULL)
+ continue;
+
+ /* This may block even though the stream does not.
+ * XXX Pretty inefficient way to test if the MIME part
+ * is empty. Surely there's a quicker way? */
+ null_stream = camel_stream_null_new ();
+ data_wrapper = camel_medium_get_content (CAMEL_MEDIUM (part));
+ camel_data_wrapper_decode_to_stream_sync (
+ data_wrapper, null_stream, cancellable, NULL);
+ content_size = CAMEL_STREAM_NULL (null_stream)->written;
+ g_object_unref (null_stream);
+
+ if (content_size == 0)
continue;
type = camel_mime_part_get_content_type (part);
@@ -1687,7 +1709,7 @@ emf_multipart_encrypted (EMFormat *emf,
em_format_format_error (
emf, stream, _("Could not parse MIME message. "
"Displaying as source."));
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
return;
}
@@ -1709,7 +1731,7 @@ emf_multipart_encrypted (EMFormat *emf,
context = camel_gpg_context_new (emf->session);
opart = camel_mime_part_new ();
- valid = camel_cipher_decrypt (
+ valid = camel_cipher_context_decrypt_sync (
context, part, opart, cancellable, &local_error);
if (valid == NULL) {
em_format_format_error (
@@ -1748,7 +1770,7 @@ emf_write_related (EMFormat *emf,
GCancellable *cancellable)
{
em_format_format_content (emf, stream, puri->part, cancellable);
- camel_stream_close (stream, NULL);
+ camel_stream_close (stream, cancellable, NULL);
}
/* RFC 2387 */
@@ -1769,7 +1791,7 @@ emf_multipart_related (EMFormat *emf,
GList *link;
if (!CAMEL_IS_MULTIPART (mp)) {
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
return;
}
@@ -1829,7 +1851,7 @@ emf_multipart_related (EMFormat *emf,
g_string_append_printf(emf->part_id, ".related.%d", displayid);
em_format_part (emf, stream, display_part, cancellable);
g_string_truncate (emf->part_id, partidlen);
- camel_stream_flush (stream, NULL);
+ camel_stream_flush (stream, NULL, NULL);
link = g_queue_peek_head_link (emf->pending_uri_level->data);
@@ -1883,7 +1905,7 @@ emf_multipart_signed (EMFormat *emf,
em_format_format_error (
emf, stream, _("Could not parse MIME message. "
"Displaying as source."));
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
return;
}
@@ -1914,7 +1936,7 @@ emf_multipart_signed (EMFormat *emf,
CamelCipherValidity *valid;
GError *local_error = NULL;
- valid = camel_cipher_verify (
+ valid = camel_cipher_context_verify_sync (
cipher, part, cancellable, &local_error);
if (valid == NULL) {
em_format_format_error (
@@ -1981,9 +2003,9 @@ emf_application_mbox (EMFormat *emf,
camel_mime_parser_scan_from (parser, TRUE);
mem_stream = camel_stream_mem_new ();
- camel_data_wrapper_decode_to_stream (
+ camel_data_wrapper_decode_to_stream_sync (
camel_medium_get_content (CAMEL_MEDIUM (mime_part)),
- mem_stream, NULL);
+ mem_stream, NULL, NULL);
camel_seekable_stream_seek (
CAMEL_SEEKABLE_STREAM (mem_stream), 0, CAMEL_STREAM_SET, NULL);
camel_mime_parser_init_with_stream (parser, mem_stream, NULL);
@@ -1997,7 +2019,7 @@ emf_application_mbox (EMFormat *emf,
message = camel_mime_message_new ();
mime_part = CAMEL_MIME_PART (message);
- if (camel_mime_part_construct_from_parser (mime_part, parser, NULL) == -1) {
+ if (!camel_mime_part_construct_from_parser_sync (mime_part, parser, NULL, NULL)) {
g_object_unref (message);
break;
}
@@ -2031,7 +2053,7 @@ emf_message_rfc822 (EMFormat *emf,
gint len;
if (!CAMEL_IS_MIME_MESSAGE (dw)) {
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
return;
}
@@ -2055,7 +2077,8 @@ emf_message_deliverystatus (EMFormat *emf,
GCancellable *cancellable,
gboolean is_fallback)
{
- em_format_format_text (emf, stream, (CamelDataWrapper *)part);
+ em_format_format_text (
+ emf, stream, (CamelDataWrapper *)part, cancellable);
}
static void
@@ -2086,7 +2109,8 @@ emf_inlinepgp_signed (EMFormat *emf,
cipher = camel_gpg_context_new (emf->session);
/* Verify the signature of the message */
- valid = camel_cipher_verify (cipher, ipart, cancellable, &local_error);
+ valid = camel_cipher_context_verify_sync (
+ cipher, ipart, cancellable, &local_error);
if (!valid) {
em_format_format_error (
emf, stream, local_error->message ?
@@ -2095,7 +2119,7 @@ emf_inlinepgp_signed (EMFormat *emf,
if (local_error->message)
em_format_format_error (
emf, stream, "%s", local_error->message);
- em_format_format_source (emf, stream, ipart);
+ em_format_format_source (emf, stream, ipart, cancellable);
/* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */
g_clear_error (&local_error);
g_object_unref (cipher);
@@ -2115,9 +2139,9 @@ emf_inlinepgp_signed (EMFormat *emf,
/* Pass through the filters that have been setup */
dw = camel_medium_get_content ((CamelMedium *)ipart);
- camel_data_wrapper_decode_to_stream (
- dw, (CamelStream *)filtered_stream, NULL);
- camel_stream_flush ((CamelStream *)filtered_stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ dw, (CamelStream *)filtered_stream, NULL, NULL);
+ camel_stream_flush ((CamelStream *)filtered_stream, NULL, NULL);
g_object_unref (filtered_stream);
/* Create a new text/plain MIME part containing the signed
@@ -2135,7 +2159,7 @@ emf_inlinepgp_signed (EMFormat *emf,
camel_content_type_unref (content_type);
dw = camel_data_wrapper_new ();
- camel_data_wrapper_construct_from_stream (dw, ostream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (dw, ostream, NULL, NULL);
camel_data_wrapper_set_mime_type (dw, type);
g_free (type);
@@ -2166,7 +2190,6 @@ emf_inlinepgp_encrypted (EMFormat *emf,
CamelCipherValidity *valid;
CamelMimePart *opart;
CamelDataWrapper *dw;
- CamelOperation *operation;
gchar *mime_type;
GError *local_error = NULL;
@@ -2178,16 +2201,8 @@ emf_inlinepgp_encrypted (EMFormat *emf,
opart = camel_mime_part_new ();
/* Decrypt the message */
- operation = camel_operation_registered ();
- if (operation != NULL)
- camel_operation_start (operation, _("Decrypting message"));
- valid = camel_cipher_decrypt (
- cipher, ipart, opart,
- G_CANCELLABLE (operation), &local_error);
- if (operation != NULL) {
- camel_operation_end (operation);
- g_object_unref (operation);
- }
+ valid = camel_cipher_context_decrypt_sync (
+ cipher, ipart, opart, cancellable, &local_error);
if (!valid) {
em_format_format_error (
@@ -2198,7 +2213,7 @@ emf_inlinepgp_encrypted (EMFormat *emf,
else
em_format_format_error (
emf, stream, _("Unknown error"));
- em_format_format_source (emf, stream, ipart);
+ em_format_format_source (emf, stream, ipart, cancellable);
/* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */
g_clear_error (&local_error);
@@ -2302,7 +2317,7 @@ em_format_snoop_type (CamelMimePart *part)
byte_array = g_byte_array_new ();
stream = camel_stream_mem_new_with_byte_array (byte_array);
- if (camel_data_wrapper_decode_to_stream (dw, stream, NULL) > 0) {
+ if (camel_data_wrapper_decode_to_stream_sync (dw, stream, NULL, NULL) > 0) {
gchar *content_type;
content_type = g_content_type_guess (
diff --git a/em-format/em-format.h b/em-format/em-format.h
index 64f1d5fbea..64336a9aa8 100644
--- a/em-format/em-format.h
+++ b/em-format/em-format.h
@@ -273,7 +273,8 @@ struct _EMFormatClass {
/* use for unparsable content */
void (*format_source) (EMFormat *emf,
CamelStream *stream,
- CamelMimePart *mime_part);
+ CamelMimePart *mime_part,
+ GCancellable *cancellable);
/* for outputing secure(d) content */
void (*format_secure) (EMFormat *emf,
CamelStream *stream,
@@ -288,7 +289,8 @@ struct _EMFormatClass {
void (*format_optional) (EMFormat *emf,
CamelStream *filter_stream,
CamelMimePart *mime_part,
- CamelStream *mem_stream);
+ CamelStream *mem_stream,
+ GCancellable *cancellable);
gboolean (*is_inline) (EMFormat *emf,
const gchar *part_id,
@@ -392,7 +394,8 @@ void em_format_format_secure (EMFormat *emf,
GCancellable *cancellable);
void em_format_format_source (EMFormat *emf,
CamelStream *stream,
- CamelMimePart *mime_part);
+ CamelMimePart *mime_part,
+ GCancellable *cancellable);
gboolean em_format_busy (EMFormat *emf);
@@ -405,7 +408,8 @@ void em_format_format_content (EMFormat *emf,
/* raw content text parts - should this just be checked/done by above? */
void em_format_format_text (EMFormat *emf,
CamelStream *stream,
- CamelDataWrapper *part);
+ CamelDataWrapper *part,
+ GCancellable *cancellable);
void em_format_part_as (EMFormat *emf,
CamelStream *stream,
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c
index 690181d87b..8012cc79af 100644
--- a/mail/e-mail-backend.c
+++ b/mail/e-mail-backend.c
@@ -153,8 +153,8 @@ mail_backend_delete_junk (CamelStore *store,
guint32 mask;
guint ii;
- /* FIXME camel_store_get_junk() may block. */
- folder = camel_store_get_junk (store, NULL, NULL);
+ /* FIXME camel_store_get_junk_folder_sync() may block. */
+ folder = camel_store_get_junk_folder_sync (store, NULL, NULL);
if (folder == NULL)
return;
diff --git a/mail/e-mail-local.c b/mail/e-mail-local.c
index f0ad740f92..861ac8fe35 100644
--- a/mail/e-mail-local.c
+++ b/mail/e-mail-local.c
@@ -83,7 +83,7 @@ e_mail_local_init (const gchar *data_dir)
/* FIXME camel_store_get_folder() may block. */
default_local_folders[ii].folder_uri = folder_uri;
- default_local_folders[ii].folder = camel_store_get_folder (
+ default_local_folders[ii].folder = camel_store_get_folder_sync (
CAMEL_STORE (service), display_name,
CAMEL_STORE_FOLDER_CREATE, NULL, NULL);
}
diff --git a/mail/e-mail-migrate.c b/mail/e-mail-migrate.c
index 360d3f6c69..f5481bc68a 100644
--- a/mail/e-mail-migrate.c
+++ b/mail/e-mail-migrate.c
@@ -556,11 +556,11 @@ migrate_folders (CamelStore *store,
g_idle_add ((GSourceFunc) update_states_in_main_thread, info);
if (is_local)
- folder = camel_store_get_folder (
+ folder = camel_store_get_folder_sync (
store, fi->full_name,
CAMEL_STORE_IS_MIGRATING, NULL, NULL);
else
- folder = camel_store_get_folder (
+ folder = camel_store_get_folder_sync (
store, fi->full_name, 0, NULL, NULL);
if (folder != NULL)
@@ -656,7 +656,7 @@ migrate_to_db (EShellBackend *shell_backend)
em_migrate_set_progress ( (double)i/(len+1));
store = setup_local_store (shell_backend, session);
- info = camel_store_get_folder_info (
+ info = camel_store_get_folder_info_sync (
store, NULL,
CAMEL_STORE_FOLDER_INFO_RECURSIVE |
CAMEL_STORE_FOLDER_INFO_FAST |
@@ -697,7 +697,7 @@ migrate_to_db (EShellBackend *shell_backend)
e_mail_store_add_by_uri (service->url, name);
store = (CamelStore *) camel_session_get_service (CAMEL_SESSION (session), service->url, CAMEL_PROVIDER_STORE, NULL);
- info = camel_store_get_folder_info (
+ info = camel_store_get_folder_info_sync (
store, NULL,
CAMEL_STORE_FOLDER_INFO_RECURSIVE |
CAMEL_STORE_FOLDER_INFO_FAST |
diff --git a/mail/e-mail-store.c b/mail/e-mail-store.c
index ea524ad5e2..d27c01a298 100644
--- a/mail/e-mail-store.c
+++ b/mail/e-mail-store.c
@@ -86,9 +86,11 @@ store_info_new (CamelStore *store,
/* If these are vfolders then they need to be opened now,
* otherwise they won't keep track of all folders. */
if (store->flags & CAMEL_STORE_VTRASH)
- store_info->vtrash = camel_store_get_trash (store, NULL, NULL);
+ store_info->vtrash =
+ camel_store_get_trash_folder_sync (store, NULL, NULL);
if (store->flags & CAMEL_STORE_VJUNK)
- store_info->vjunk = camel_store_get_junk (store, NULL, NULL);
+ store_info->vjunk =
+ camel_store_get_junk_folder_sync (store, NULL, NULL);
return store_info;
}
@@ -343,7 +345,7 @@ fail:
static void
mail_store_remove_cb (CamelStore *store)
{
- camel_service_disconnect (CAMEL_SERVICE (store), TRUE, NULL);
+ camel_service_disconnect_sync (CAMEL_SERVICE (store), TRUE, NULL);
g_object_unref (store);
}
diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c
index 01964d5fcd..b65237b288 100644
--- a/mail/em-composer-utils.c
+++ b/mail/em-composer-utils.c
@@ -473,7 +473,7 @@ composer_get_message (EMsgComposer *composer, gboolean save_html_object_data)
/* actually get the message now, this will sign/encrypt etc */
message = e_msg_composer_get_message (
- composer, save_html_object_data, &error);
+ composer, save_html_object_data, NULL, &error);
/* Ignore cancellations. */
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
@@ -670,7 +670,7 @@ em_utils_composer_save_draft_cb (EMsgComposer *composer)
local_drafts_folder_uri =
e_mail_local_get_folder_uri (E_MAIL_FOLDER_DRAFTS);
- msg = e_msg_composer_get_message_draft (composer, &error);
+ msg = e_msg_composer_get_message_draft (composer, NULL, &error);
/* Ignore cancellations. */
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
@@ -742,7 +742,7 @@ em_utils_composer_print_cb (EMsgComposer *composer,
CamelMimeMessage *message;
EMFormatHTMLPrint *efhp;
- message = e_msg_composer_get_message_print (composer, 1);
+ message = e_msg_composer_get_message_print (composer, 1, NULL);
efhp = em_format_html_print_new (NULL, action);
em_format_html_print_raw_message (efhp, message);
@@ -966,7 +966,8 @@ traverse_parts (GSList *clues, CamelMimeMessage *message, CamelDataWrapper *cont
byte_array = g_byte_array_new ();
stream = camel_stream_mem_new_with_byte_array (byte_array);
- camel_data_wrapper_decode_to_stream (content, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ content, stream, NULL, NULL);
str = g_strndup ((gchar *) byte_array->data, byte_array->len);
g_object_unref (stream);
@@ -974,7 +975,8 @@ traverse_parts (GSList *clues, CamelMimeMessage *message, CamelDataWrapper *cont
if (replace_variables (clues, message, &str)) {
stream = camel_stream_mem_new_with_buffer (str, strlen (str));
camel_stream_reset (stream, NULL);
- camel_data_wrapper_construct_from_stream (content, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ content, stream, NULL, NULL);
g_object_unref (stream);
}
@@ -1008,7 +1010,7 @@ edit_message (EShell *shell,
g_slist_free (clue_list);
}
- composer = e_msg_composer_new_with_message (shell, message);
+ composer = e_msg_composer_new_with_message (shell, message, NULL);
if (em_utils_folder_is_drafts (drafts, NULL)) {
struct emcs_t *emcs;
@@ -1548,7 +1550,7 @@ redirect_get_composer (EShell *shell,
account = em_utils_guess_account_with_recipients (message, NULL);
composer = e_msg_composer_new_redirect (
- shell, message, account ? account->name : NULL);
+ shell, message, account ? account->name : NULL, NULL);
return composer;
}
@@ -1741,7 +1743,8 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message)
/* Translators: First %s is an email address, second %s is the subject of the email, third %s is the date */
_("Your message to %s about \"%s\" on %s has been read."),
self_address, message_subject, message_date);
- camel_data_wrapper_construct_from_stream (receipt_text, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ receipt_text, stream, NULL, NULL);
g_object_unref (stream);
part = camel_mime_part_new ();
@@ -1769,7 +1772,8 @@ em_utils_send_receipt (CamelFolder *folder, CamelMimeMessage *message)
"Original-Message-ID: %s\n"
"Disposition: manual-action/MDN-sent-manually; displayed\n",
ua, recipient, message_id);
- camel_data_wrapper_construct_from_stream (receipt_data, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ receipt_data, stream, NULL, NULL);
g_object_unref (stream);
g_free (ua);
diff --git a/mail/em-folder-tree.c b/mail/em-folder-tree.c
index 3d1bb68265..512aa9b026 100644
--- a/mail/em-folder-tree.c
+++ b/mail/em-folder-tree.c
@@ -200,7 +200,7 @@ folder_tree_get_folder_info__exec (struct _EMFolderTreeGetFolderInfo *m)
{
guint32 flags = m->flags | CAMEL_STORE_FOLDER_INFO_SUBSCRIBED;
- m->fi = camel_store_get_folder_info (
+ m->fi = camel_store_get_folder_info_sync (
m->store, m->top, flags,
m->base.cancellable, &m->base.error);
@@ -625,7 +625,7 @@ folder_tree_cell_edited_cb (EMFolderTree *folder_tree,
/* Check for duplicate folder name. */
/* FIXME camel_store_get_folder_info() may block. */
- folder_info = camel_store_get_folder_info (
+ folder_info = camel_store_get_folder_info_sync (
store, new_full_name,
CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
if (folder_info != NULL) {
@@ -636,8 +636,8 @@ folder_tree_cell_edited_cb (EMFolderTree *folder_tree,
goto exit;
}
- /* FIXME camel_store_rename_folder() may block. */
- if (!camel_store_rename_folder (
+ /* FIXME camel_store_rename_folder_sync() may block. */
+ if (!camel_store_rename_folder_sync (
store, old_full_name, new_full_name, NULL, &local_error)) {
e_alert_run_dialog_for_args (
parent, "mail:no-rename-folder",
@@ -1531,8 +1531,8 @@ tree_drag_data_delete (GtkWidget *widget,
if (is_store)
goto fail;
- /* FIXME camel_store_delete_folder() may block. */
- camel_store_delete_folder (store, full_name, NULL, NULL);
+ /* FIXME camel_store_delete_folder_sync() may block. */
+ camel_store_delete_folder_sync (store, full_name, NULL, NULL);
fail:
gtk_tree_path_free (src_path);
@@ -1582,8 +1582,8 @@ tree_drag_data_get (GtkWidget *widget,
break;
case DND_DRAG_TYPE_TEXT_URI_LIST:
/* dragging to nautilus or something, probably */
- /* FIXME camel_store_get_folder() may block. */
- if ((folder = camel_store_get_folder (
+ /* FIXME camel_store_get_folder_sync() may block. */
+ if ((folder = camel_store_get_folder_sync (
store, full_name, 0, NULL, NULL))) {
GPtrArray *uids = camel_folder_get_uids (folder);
@@ -1698,7 +1698,7 @@ folder_tree_drop_async__exec (struct _DragDataReceivedAsync *m)
g_set_error (
&m->base.error, CAMEL_ERROR, CAMEL_ERROR_GENERIC,
_("Cannot drop message(s) into toplevel store"));
- } else if ((folder = camel_store_get_folder (
+ } else if ((folder = camel_store_get_folder_sync (
m->store, m->full_name, 0,
m->base.cancellable, &m->base.error))) {
@@ -2810,9 +2810,9 @@ em_folder_tree_get_selected_folder (EMFolderTree *folder_tree)
gtk_tree_model_get (model, &iter, COL_POINTER_CAMEL_STORE, &store,
COL_STRING_FULL_NAME, &full_name, -1);
- /* FIXME camel_store_get_folder() may block. */
+ /* FIXME camel_store_get_folder_sync() may block. */
if (store && full_name)
- folder = camel_store_get_folder (
+ folder = camel_store_get_folder_sync (
store, full_name,
CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c
index 201a0b9fb0..dbd673c4cb 100644
--- a/mail/em-folder-utils.c
+++ b/mail/em-folder-utils.c
@@ -104,7 +104,7 @@ emft_copy_folders__exec (struct _EMCopyFolders *m)
const gchar *tmp;
gint fromlen;
- fi = camel_store_get_folder_info (
+ fi = camel_store_get_folder_info_sync (
m->fromstore, m->frombase, flags,
m->base.cancellable, &m->base.error);
if (fi == NULL)
@@ -147,7 +147,7 @@ emft_copy_folders__exec (struct _EMCopyFolders *m)
if ((info->flags & CAMEL_FOLDER_NOSELECT) == 0) {
d(printf ("this folder is selectable\n"));
if (m->tostore == m->fromstore && m->delete) {
- camel_store_rename_folder (
+ camel_store_rename_folder_sync (
m->fromstore, info->full_name, toname->str,
m->base.cancellable, &m->base.error);
if (m->base.error != NULL)
@@ -155,18 +155,18 @@ emft_copy_folders__exec (struct _EMCopyFolders *m)
/* this folder no longer exists, unsubscribe it */
if (camel_store_supports_subscriptions (m->fromstore))
- camel_store_unsubscribe_folder (
+ camel_store_unsubscribe_folder_sync (
m->fromstore, info->full_name, NULL, NULL);
deleted = 1;
} else {
- fromfolder = camel_store_get_folder (
+ fromfolder = camel_store_get_folder_sync (
m->fromstore, info->full_name, 0,
m->base.cancellable, &m->base.error);
if (fromfolder == NULL)
goto exception;
- tofolder = camel_store_get_folder (
+ tofolder = camel_store_get_folder_sync (
m->tostore, toname->str,
CAMEL_STORE_FOLDER_CREATE,
m->base.cancellable,
@@ -177,15 +177,15 @@ emft_copy_folders__exec (struct _EMCopyFolders *m)
}
uids = camel_folder_get_uids (fromfolder);
- camel_folder_transfer_messages_to (
+ camel_folder_transfer_messages_to_sync (
fromfolder, uids, tofolder,
- NULL, m->delete,
+ m->delete, NULL,
m->base.cancellable,
&m->base.error);
camel_folder_free_uids (fromfolder, uids);
if (m->delete && m->base.error == NULL)
- camel_folder_sync (
+ camel_folder_synchronize_sync (
fromfolder, TRUE,
NULL, NULL);
@@ -202,7 +202,7 @@ emft_copy_folders__exec (struct _EMCopyFolders *m)
/* subscribe to the new folder if appropriate */
if (camel_store_supports_subscriptions (m->tostore)
&& !camel_store_folder_is_subscribed (m->tostore, toname->str))
- camel_store_subscribe_folder (
+ camel_store_subscribe_folder_sync (
m->tostore, toname->str, NULL, NULL);
info = info->next;
@@ -220,10 +220,10 @@ emft_copy_folders__exec (struct _EMCopyFolders *m)
since otherwise the users sees a failed operation
with no error message or even any warnings */
if (camel_store_supports_subscriptions (m->fromstore))
- camel_store_unsubscribe_folder (
+ camel_store_unsubscribe_folder_sync (
m->fromstore, info->full_name, NULL, NULL);
- camel_store_delete_folder (
+ camel_store_delete_folder_sync (
m->fromstore, info->full_name, NULL, NULL);
l = l->next;
}
@@ -548,12 +548,12 @@ emfu_create_folder__exec (struct _EMCreateFolder *m)
{
d(printf ("creating folder parent='%s' name='%s' full_name='%s'\n", m->parent, m->name, m->full_name));
- if ((m->fi = camel_store_create_folder (
+ if ((m->fi = camel_store_create_folder_sync (
m->store, m->parent, m->name,
m->base.cancellable, &m->base.error))) {
if (camel_store_supports_subscriptions (m->store))
- camel_store_subscribe_folder (
+ camel_store_subscribe_folder_sync (
m->store, m->full_name,
m->base.cancellable, &m->base.error);
}
@@ -751,7 +751,7 @@ emfu_unsubscribe_folder__exec (struct _folder_unsub_t *msg)
path = url->path + 1;
if (path != NULL)
- camel_store_unsubscribe_folder (
+ camel_store_unsubscribe_folder_sync (
store, path, msg->base.cancellable,
&msg->base.error);
diff --git a/mail/em-format-html-display.c b/mail/em-format-html-display.c
index d68b1f2508..3776d944ad 100644
--- a/mail/em-format-html-display.c
+++ b/mail/em-format-html-display.c
@@ -146,7 +146,12 @@ struct _attach_puri {
camel_cipher_validity_encrypt_t encrypt;
};
-static void efhd_message_prefix (EMFormat *emf, CamelStream *stream, CamelMimePart *part, EMFormatHandler *info);
+static void efhd_message_prefix (EMFormat *emf,
+ CamelStream *stream,
+ CamelMimePart *part,
+ const EMFormatHandler *info,
+ GCancellable *cancellable,
+ gboolean is_fallback);
static void efhd_builtin_init (EMFormatHTMLDisplayClass *efhc);
@@ -428,14 +433,16 @@ efhd_format_attachment (EMFormat *emf,
stream, EM_FORMAT_HTML_VPAD
"<table cellspacing=0 cellpadding=0><tr><td>"
"<table width=10 cellspacing=0 cellpadding=0>"
- "<tr><td></td></tr></table></td>", NULL);
+ "<tr><td></td></tr></table></td>",
+ cancellable, NULL);
camel_stream_printf (
stream, "<td><object classid=\"%s\"></object></td>", classid);
camel_stream_write_string (
stream, "<td><table width=3 cellspacing=0 cellpadding=0>"
- "<tr><td></td></tr></table></td><td><font size=-1>", NULL);
+ "<tr><td></td></tr></table></td><td><font size=-1>",
+ cancellable, NULL);
/* output some info about it */
/* FIXME: should we look up mime_type from object again? */
@@ -443,13 +450,13 @@ efhd_format_attachment (EMFormat *emf,
html = camel_text_to_html (
text, EM_FORMAT_HTML (emf)->text_html_flags &
CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0);
- camel_stream_write_string (stream, html, NULL);
+ camel_stream_write_string (stream, html, cancellable, NULL);
g_free (html);
g_free (text);
camel_stream_write_string (
stream, "</font></td></tr><tr></table>\n"
- EM_FORMAT_HTML_VPAD, NULL);
+ EM_FORMAT_HTML_VPAD, cancellable, NULL);
if (handle && info->shown)
handle->handler (
@@ -462,7 +469,8 @@ static void
efhd_format_optional (EMFormat *emf,
CamelStream *fstream,
CamelMimePart *part,
- CamelStream *mstream)
+ CamelStream *mstream,
+ GCancellable *cancellable)
{
gchar *classid, *html;
struct _attach_puri *info;
@@ -494,7 +502,7 @@ efhd_format_optional (EMFormat *emf,
camel_stream_write_string (
stream, EM_FORMAT_HTML_VPAD
"<table cellspacing=0 cellpadding=0><tr><td>"
- "<h3><font size=-1 color=red>", NULL);
+ "<h3><font size=-1 color=red>", cancellable, NULL);
html = camel_text_to_html (
_("Evolution cannot render this email as it is too "
@@ -502,18 +510,21 @@ efhd_format_optional (EMFormat *emf,
"with an external text editor."),
EM_FORMAT_HTML (emf)->text_html_flags &
CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0);
- camel_stream_write_string (stream, html, NULL);
+ camel_stream_write_string (stream, html, cancellable, NULL);
camel_stream_write_string (
- stream, "</font></h3></td></tr></table>\n", NULL);
+ stream, "</font></h3></td></tr></table>\n",
+ cancellable, NULL);
camel_stream_write_string (
- stream, "<table cellspacing=0 cellpadding=0><tr>", NULL);
+ stream, "<table cellspacing=0 cellpadding=0><tr>",
+ cancellable, NULL);
camel_stream_printf (
stream, "<td><object classid=\"%s\"></object>"
"</td></tr></table>", classid);
g_free (html);
- camel_stream_write_string (stream, EM_FORMAT_HTML_VPAD, NULL);
+ camel_stream_write_string (
+ stream, EM_FORMAT_HTML_VPAD, cancellable, NULL);
g_free (classid);
}
@@ -664,7 +675,7 @@ em_format_html_display_new (void)
/* ********************************************************************** */
static EMFormatHandler type_builtin_table[] = {
- { (gchar *) "x-evolution/message/prefix", (EMFormatFunc)efhd_message_prefix },
+ { (gchar *) "x-evolution/message/prefix", efhd_message_prefix },
{ (gchar *) "x-evolution/message/post-header", (EMFormatFunc)efhd_message_add_bar }
};
@@ -687,12 +698,18 @@ efhd_write_image (EMFormat *emf,
/* TODO: identical to efh_write_image */
d(printf("writing image '%s'\n", puri->cid));
- camel_data_wrapper_decode_to_stream (dw, stream, NULL);
- camel_stream_close (stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ dw, stream, cancellable, NULL);
+ camel_stream_close (stream, cancellable, NULL);
}
static void
-efhd_message_prefix (EMFormat *emf, CamelStream *stream, CamelMimePart *part, EMFormatHandler *info)
+efhd_message_prefix (EMFormat *emf,
+ CamelStream *stream,
+ CamelMimePart *part,
+ const EMFormatHandler *info,
+ GCancellable *cancellable,
+ gboolean is_fallback)
{
const gchar *flag, *comp, *due;
time_t date;
@@ -711,7 +728,9 @@ efhd_message_prefix (EMFormat *emf, CamelStream *stream, CamelMimePart *part, EM
if (iconpath) {
CamelMimePart *iconpart;
- iconpart = em_format_html_file_part((EMFormatHTML *)emf, "image/png", iconpath);
+ iconpart = em_format_html_file_part (
+ (EMFormatHTML *)emf, "image/png",
+ iconpath, cancellable);
g_free (iconpath);
if (iconpart) {
gchar *classid;
@@ -874,7 +893,7 @@ efhd_attachment_frame (EMFormat *emf,
emf, stream, info->puri.part,
info->handle, cancellable, FALSE);
- camel_stream_close (stream, NULL);
+ camel_stream_close (stream, cancellable, NULL);
}
static void
diff --git a/mail/em-format-html.c b/mail/em-format-html.c
index 49a203b2eb..42edac30d4 100644
--- a/mail/em-format-html.c
+++ b/mail/em-format-html.c
@@ -126,7 +126,8 @@ static void efh_format_message (EMFormat *emf,
CamelStream *stream,
CamelMimePart *part,
const EMFormatHandler *info,
- GCancellable *cancellable);
+ GCancellable *cancellable,
+ gboolean is_fallback);
static void efh_format_secure (EMFormat *emf,
CamelStream *stream,
@@ -194,7 +195,7 @@ efh_format_exec (struct _format_msg *m)
if (format->mode == EM_FORMAT_MODE_SOURCE) {
em_format_format_source (
format, (CamelStream *) m->estream,
- (CamelMimePart *) m->message);
+ (CamelMimePart *) m->message, m->base.cancellable);
} else {
const EMFormatHandler *handle;
const gchar *mime_type;
@@ -218,7 +219,7 @@ efh_format_exec (struct _format_msg *m)
m->base.cancellable, FALSE);
}
- camel_stream_flush ((CamelStream *)m->estream, NULL);
+ camel_stream_flush ((CamelStream *)m->estream, m->base.cancellable, NULL);
puri_level = format->pending_uri_level;
base = format->base;
@@ -256,8 +257,8 @@ efh_format_exec (struct _format_msg *m)
d(printf("out of jobs, closing root stream\n"));
camel_stream_write_string (
(CamelStream *) m->estream,
- "</body>\n</html>\n", NULL);
- camel_stream_close ((CamelStream *)m->estream, NULL);
+ "</body>\n</html>\n", m->base.cancellable, NULL);
+ camel_stream_close ((CamelStream *)m->estream, m->base.cancellable, NULL);
g_object_unref (m->estream);
m->estream = NULL;
}
@@ -286,7 +287,7 @@ efh_format_free (struct _format_msg *m)
d(printf("formatter freed\n"));
g_object_unref (m->format);
if (m->estream) {
- camel_stream_close ((CamelStream *)m->estream, NULL);
+ camel_stream_close ((CamelStream *)m->estream, m->base.cancellable, NULL);
g_object_unref (m->estream);
}
if (m->folder)
@@ -696,7 +697,8 @@ efh_format_error (EMFormat *emf,
static void
efh_format_source (EMFormat *emf,
CamelStream *stream,
- CamelMimePart *part)
+ CamelMimePart *part,
+ GCancellable *cancellable)
{
CamelStream *filtered_stream;
CamelMimeFilter *filter;
@@ -712,11 +714,11 @@ efh_format_source (EMFormat *emf,
CAMEL_STREAM_FILTER (filtered_stream), filter);
g_object_unref (filter);
- camel_stream_write_string (stream, "<table><tr><td><tt>", NULL);
- em_format_format_text (emf, (CamelStream *) filtered_stream, dw);
+ camel_stream_write_string (stream, "<table><tr><td><tt>", cancellable, NULL);
+ em_format_format_text (emf, (CamelStream *) filtered_stream, dw, cancellable);
g_object_unref (filtered_stream);
- camel_stream_write_string(stream, "</tt></td></tr></table>", NULL);
+ camel_stream_write_string(stream, "</tt></td></tr></table>", cancellable, NULL);
}
static void
@@ -739,19 +741,19 @@ efh_format_attachment (EMFormat *emf,
"<tr><td></td></tr></table></td>"
"<td><table width=3 cellspacing=0 cellpadding=0>"
"<tr><td></td></tr></table></td><td><font size=-1>\n",
- NULL);
+ cancellable, NULL);
/* output some info about it */
text = em_format_describe_part (part, mime_type);
html = camel_text_to_html (
text, ((EMFormatHTML *)emf)->text_html_flags &
CAMEL_MIME_FILTER_TOHTML_CONVERT_URLS, 0);
- camel_stream_write_string (stream, html, NULL);
+ camel_stream_write_string (stream, html, cancellable, NULL);
g_free (html);
g_free (text);
camel_stream_write_string (
- stream, "</font></td></tr><tr></table>", NULL);
+ stream, "</font></td></tr><tr></table>", cancellable, NULL);
if (handle && em_format_is_inline (emf, emf->part_id->str, part, handle))
handle->handler (emf, stream, part, handle, cancellable, FALSE);
@@ -1226,7 +1228,10 @@ em_format_html_set_show_real_date (EMFormatHTML *efh,
}
CamelMimePart *
-em_format_html_file_part (EMFormatHTML *efh, const gchar *mime_type, const gchar *filename)
+em_format_html_file_part (EMFormatHTML *efh,
+ const gchar *mime_type,
+ const gchar *filename,
+ GCancellable *cancellable)
{
CamelMimePart *part;
CamelStream *stream;
@@ -1238,7 +1243,8 @@ em_format_html_file_part (EMFormatHTML *efh, const gchar *mime_type, const gchar
return NULL;
dw = camel_data_wrapper_new ();
- camel_data_wrapper_construct_from_stream (dw, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ dw, stream, cancellable, NULL);
g_object_unref (stream);
if (mime_type)
camel_data_wrapper_set_mime_type (dw, mime_type);
@@ -1437,7 +1443,8 @@ emfh_gethttp (struct _EMFormatHTMLJob *job,
camel_http_stream_set_proxy ((CamelHttpStream *)instream, proxy);
g_free (proxy);
}
- camel_operation_start (cancellable, _("Retrieving '%s'"), job->u.uri);
+ camel_operation_push_message (
+ cancellable, _("Retrieving '%s'"), job->u.uri);
tmp_stream = (CamelHttpStream *)instream;
content_type = camel_http_stream_get_content_type (tmp_stream);
length = camel_header_raw_find(&tmp_stream->headers, "Content-Length", NULL);
@@ -1446,7 +1453,8 @@ emfh_gethttp (struct _EMFormatHTMLJob *job,
total = atoi (length);
camel_content_type_unref (content_type);
} else
- camel_operation_start_transient (cancellable, _("Retrieving '%s'"), job->u.uri);
+ camel_operation_push_message (
+ cancellable, _("Retrieving '%s'"), job->u.uri);
camel_url_free (url);
@@ -1462,7 +1470,7 @@ emfh_gethttp (struct _EMFormatHTMLJob *job,
break;
}
/* FIXME: progress reporting in percentage, can we get the length always? do we care? */
- n = camel_stream_read (instream, buffer, sizeof (buffer), NULL);
+ n = camel_stream_read (instream, buffer, sizeof (buffer), cancellable, NULL);
if (n > 0) {
nread += n;
/* If we didn't get a valid Content-Length header, do not try to calculate percentage */
@@ -1471,18 +1479,18 @@ emfh_gethttp (struct _EMFormatHTMLJob *job,
camel_operation_progress (cancellable, pc_complete);
}
d(printf(" read %d bytes\n", n));
- if (costream && camel_stream_write (costream, buffer, n, NULL) == -1) {
+ if (costream && camel_stream_write (costream, buffer, n, cancellable, NULL) == -1) {
n = -1;
break;
}
- camel_stream_write (job->stream, buffer, n, NULL);
+ camel_stream_write (job->stream, buffer, n, cancellable, NULL);
}
} while (n>0);
/* indicates success */
if (n == 0)
- camel_stream_close (job->stream, NULL);
+ camel_stream_close (job->stream, cancellable, NULL);
if (costream) {
/* do not store broken files in a cache */
@@ -1493,7 +1501,7 @@ emfh_gethttp (struct _EMFormatHTMLJob *job,
g_object_unref (instream);
done:
- camel_operation_end (cancellable);
+ camel_operation_pop_message (cancellable);
badurl:
g_free (job->u.uri);
}
@@ -1649,7 +1657,7 @@ efh_format_secure (EMFormat *emf,
else
icon = smime_encrypt_table[valid->encrypt.status].icon;
iconpath = e_icon_factory_get_icon_filename (icon, GTK_ICON_SIZE_DIALOG);
- iconpart = em_format_html_file_part((EMFormatHTML *)emf, "image/png", iconpath);
+ iconpart = em_format_html_file_part((EMFormatHTML *)emf, "image/png", iconpath, cancellable);
if (iconpart) {
(void)em_format_add_puri (emf, sizeof (EMFormatPURI), classid, iconpart, efh_write_image);
g_object_unref (iconpart);
@@ -1682,13 +1690,14 @@ efh_format_secure (EMFormat *emf,
}
static void
-efh_text_plain (EMFormatHTML *efh,
+efh_text_plain (EMFormat *emf,
CamelStream *stream,
CamelMimePart *part,
const EMFormatHandler *info,
GCancellable *cancellable,
gboolean is_fallback)
{
+ EMFormatHTML *efh = EM_FORMAT_HTML (emf);
CamelStream *filtered_stream;
CamelMimeFilter *html_filter;
CamelMultipart *mp;
@@ -1721,7 +1730,10 @@ efh_text_plain (EMFormatHTML *efh,
filters a bit. Perhaps the superclass should just deal with
html anyway and be done with it ... */
- efhc = g_hash_table_lookup (efh->priv->text_inline_parts, ((EMFormat *)efh)->part_id->str);
+ efhc = g_hash_table_lookup (
+ efh->priv->text_inline_parts,
+ emf->part_id->str);
+
if (efhc == NULL || (mp = efhc->textmp) == NULL) {
EMInlineFilter *inline_filter;
CamelStream *null;
@@ -1729,8 +1741,8 @@ efh_text_plain (EMFormatHTML *efh,
/* if we had to snoop the part type to get here, then
* use that as the base type, yuck */
- if (((EMFormat *)efh)->snoop_mime_type == NULL
- || (ct = camel_content_type_decode (((EMFormat *)efh)->snoop_mime_type)) == NULL) {
+ if (emf->snoop_mime_type == NULL
+ || (ct = camel_content_type_decode (emf->snoop_mime_type)) == NULL) {
ct = dw->mime_type;
camel_content_type_ref (ct);
}
@@ -1742,14 +1754,14 @@ efh_text_plain (EMFormatHTML *efh,
camel_stream_filter_add (
CAMEL_STREAM_FILTER (filtered_stream),
CAMEL_MIME_FILTER (inline_filter));
- camel_data_wrapper_decode_to_stream (
- dw, (CamelStream *)filtered_stream, NULL);
- camel_stream_close ((CamelStream *)filtered_stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ dw, (CamelStream *)filtered_stream, cancellable, NULL);
+ camel_stream_close ((CamelStream *)filtered_stream, cancellable, NULL);
g_object_unref (filtered_stream);
mp = em_inline_filter_get_multipart (inline_filter);
if (efhc == NULL)
- efhc = efh_insert_cache (efh, ((EMFormat *)efh)->part_id->str);
+ efhc = efh_insert_cache (efh, emf->part_id->str);
efhc->textmp = mp;
g_object_unref (inline_filter);
@@ -1766,7 +1778,7 @@ efh_text_plain (EMFormatHTML *efh,
/* We handle our made-up multipart here, so we don't recursively call ourselves */
- len = ((EMFormat *)efh)->part_id->len;
+ len = emf->part_id->len;
count = camel_multipart_get_number (mp);
for (i=0;i<count;i++) {
CamelMimePart *newpart = camel_multipart_get_part (mp, i);
@@ -1788,16 +1800,19 @@ efh_text_plain (EMFormatHTML *efh,
&efh->priv->colors[
EM_FORMAT_HTML_COLOR_TEXT]));
camel_stream_write_string (
- stream, "<tt>\n" EFH_MESSAGE_START, NULL);
- em_format_format_text ((EMFormat *)efh, (CamelStream *)filtered_stream, (CamelDataWrapper *)newpart);
- camel_stream_flush ((CamelStream *)filtered_stream, NULL);
- camel_stream_write_string (stream, "</tt>\n", NULL);
- camel_stream_write_string (stream, "</div>\n", NULL);
+ stream, "<tt>\n" EFH_MESSAGE_START, cancellable, NULL);
+ em_format_format_text (
+ emf, filtered_stream,
+ (CamelDataWrapper *) newpart,
+ cancellable);
+ camel_stream_flush ((CamelStream *)filtered_stream, cancellable, NULL);
+ camel_stream_write_string (stream, "</tt>\n", cancellable, NULL);
+ camel_stream_write_string (stream, "</div>\n", cancellable, NULL);
} else {
- g_string_append_printf(((EMFormat *)efh)->part_id, ".inline.%d", i);
+ g_string_append_printf (emf->part_id, ".inline.%d", i);
em_format_part (
- EM_FORMAT (efh), stream, newpart, cancellable);
- g_string_truncate (((EMFormat *)efh)->part_id, len);
+ emf, stream, newpart, cancellable);
+ g_string_truncate (emf->part_id, len);
}
}
@@ -1805,8 +1820,14 @@ efh_text_plain (EMFormatHTML *efh,
}
static void
-efh_text_enriched (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFormatHandler *info)
+efh_text_enriched (EMFormat *emf,
+ CamelStream *stream,
+ CamelMimePart *part,
+ const EMFormatHandler *info,
+ GCancellable *cancellable,
+ gboolean is_fallback)
{
+ EMFormatHTML *efh = EM_FORMAT_HTML (emf);
CamelStream *filtered_stream;
CamelMimeFilter *enriched;
guint32 flags = 0;
@@ -1814,10 +1835,12 @@ efh_text_enriched (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part,
if (!strcmp(info->mime_type, "text/richtext")) {
flags = CAMEL_MIME_FILTER_ENRICHED_IS_RICHTEXT;
camel_stream_write_string (
- stream, "\n<!-- text/richtext -->\n", NULL);
+ stream, "\n<!-- text/richtext -->\n",
+ cancellable, NULL);
} else {
camel_stream_write_string (
- stream, "\n<!-- text/enriched -->\n", NULL);
+ stream, "\n<!-- text/enriched -->\n",
+ cancellable, NULL);
}
enriched = camel_mime_filter_enriched_new (flags);
@@ -1838,10 +1861,12 @@ efh_text_enriched (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part,
&efh->priv->colors[
EM_FORMAT_HTML_COLOR_TEXT]));
- em_format_format_text ((EMFormat *)efh, (CamelStream *)filtered_stream, (CamelDataWrapper *)part);
+ em_format_format_text (
+ emf, (CamelStream *) filtered_stream,
+ (CamelDataWrapper *)part, cancellable);
g_object_unref (filtered_stream);
- camel_stream_write_string (stream, "</div>", NULL);
+ camel_stream_write_string (stream, "</div>", cancellable, NULL);
}
static void
@@ -1863,12 +1888,19 @@ efh_write_text_html (EMFormat *emf,
camel_data_wrapper_write_to_stream (dw, out);
g_object_unref (out);
#endif
- em_format_format_text (emf, stream, (CamelDataWrapper *)puri->part);
+ em_format_format_text (
+ emf, stream, (CamelDataWrapper *)puri->part, cancellable);
}
static void
-efh_text_html (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFormatHandler *info)
+efh_text_html (EMFormat *emf,
+ CamelStream *stream,
+ CamelMimePart *part,
+ const EMFormatHandler *info,
+ GCancellable *cancellable,
+ gboolean is_fallback)
{
+ EMFormatHTML *efh = EM_FORMAT_HTML (emf);
const gchar *location;
gchar *cid = NULL;
@@ -1892,15 +1924,15 @@ efh_text_html (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFo
shouldn't blindly inherit the container's location. */
location = camel_mime_part_get_content_location (part);
if (location == NULL) {
- if (((EMFormat *)efh)->base)
- cid = camel_url_to_string (((EMFormat *)efh)->base, 0);
+ if (emf->base)
+ cid = camel_url_to_string (emf->base, 0);
else
- cid = g_strdup (((EMFormat *)efh)->part_id->str);
+ cid = g_strdup (emf->part_id->str);
} else {
- if (strchr (location, ':') == NULL && ((EMFormat *)efh)->base != NULL) {
+ if (strchr (location, ':') == NULL && emf->base != NULL) {
CamelURL *uri;
- uri = camel_url_new_with_base (((EMFormat *)efh)->base, location);
+ uri = camel_url_new_with_base (emf->base, location);
cid = camel_url_to_string (uri, 0);
camel_url_free (uri);
} else {
@@ -1908,7 +1940,9 @@ efh_text_html (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFo
}
}
- em_format_add_puri ((EMFormat *)efh, sizeof (EMFormatPURI), cid, part, efh_write_text_html);
+ em_format_add_puri (
+ emf, sizeof (EMFormatPURI), cid,
+ part, efh_write_text_html);
d(printf("adding iframe, location %s\n", cid));
camel_stream_printf (stream,
"<iframe src=\"%s\" frameborder=0 scrolling=no>could not get %s</iframe>\n"
@@ -1919,7 +1953,12 @@ efh_text_html (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFo
/* This is a lot of code for something useless ... */
static void
-efh_message_external (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFormatHandler *info)
+efh_message_external (EMFormat *emf,
+ CamelStream *stream,
+ CamelMimePart *part,
+ const EMFormatHandler *info,
+ GCancellable *cancellable,
+ gboolean is_fallback)
{
CamelContentType *type;
const gchar *access_type;
@@ -2013,8 +2052,14 @@ fail:
}
static void
-efh_message_deliverystatus (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFormatHandler *info)
+efh_message_deliverystatus (EMFormat *emf,
+ CamelStream *stream,
+ CamelMimePart *part,
+ const EMFormatHandler *info,
+ GCancellable *cancellable,
+ gboolean is_fallback)
{
+ EMFormatHTML *efh = EM_FORMAT_HTML (emf);
CamelStream *filtered_stream;
CamelMimeFilter *html_filter;
guint32 rgb = 0x737373;
@@ -2038,12 +2083,14 @@ efh_message_deliverystatus (EMFormatHTML *efh, CamelStream *stream, CamelMimePar
CAMEL_STREAM_FILTER (filtered_stream), html_filter);
g_object_unref (html_filter);
- camel_stream_write_string (stream, "<tt>\n" EFH_MESSAGE_START, NULL);
- em_format_format_text ((EMFormat *)efh, (CamelStream *)filtered_stream, (CamelDataWrapper *)part);
- camel_stream_flush ((CamelStream *)filtered_stream, NULL);
- camel_stream_write_string (stream, "</tt>\n", NULL);
+ camel_stream_write_string (stream, "<tt>\n" EFH_MESSAGE_START, cancellable, NULL);
+ em_format_format_text (
+ emf, filtered_stream,
+ (CamelDataWrapper *)part, cancellable);
+ camel_stream_flush (filtered_stream, cancellable, NULL);
+ camel_stream_write_string (stream, "</tt>\n", cancellable, NULL);
- camel_stream_write_string (stream, "</div>", NULL);
+ camel_stream_write_string (stream, "</div>", cancellable, NULL);
}
static void
@@ -2054,7 +2101,7 @@ emfh_write_related (EMFormat *emf,
{
em_format_format_content (emf, stream, puri->part, cancellable);
- camel_stream_close (stream, NULL);
+ camel_stream_close (stream, cancellable, NULL);
}
static void
@@ -2109,7 +2156,8 @@ efh_multipart_related (EMFormat *emf,
CamelStream *stream,
CamelMimePart *part,
const EMFormatHandler *info,
- GCancellable *cancellable)
+ GCancellable *cancellable,
+ gboolean is_fallback)
{
CamelMultipart *mp = (CamelMultipart *)camel_medium_get_content ((CamelMedium *)part);
CamelMimePart *body_part, *display_part = NULL;
@@ -2121,7 +2169,7 @@ efh_multipart_related (EMFormat *emf,
struct _EMFormatHTMLJob *job;
if (!CAMEL_IS_MULTIPART (mp)) {
- em_format_format_source (emf, stream, part);
+ em_format_format_source (emf, stream, part, cancellable);
return;
}
@@ -2175,7 +2223,7 @@ efh_multipart_related (EMFormat *emf,
g_string_append_printf(emf->part_id, "related.%d", displayid);
em_format_part (emf, stream, display_part, cancellable);
g_string_truncate (emf->part_id, partidlen);
- camel_stream_flush (stream, NULL);
+ camel_stream_flush (stream, cancellable, NULL);
/* queue a job to check for un-referenced parts to add as attachments */
job = em_format_html_job_new (
@@ -2196,55 +2244,62 @@ efh_write_image (EMFormat *emf,
CamelDataWrapper *dw = camel_medium_get_content ((CamelMedium *)puri->part);
d(printf("writing image '%s'\n", puri->cid));
- camel_data_wrapper_decode_to_stream (dw, stream, NULL);
- camel_stream_close (stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ dw, stream, cancellable, NULL);
+ camel_stream_close (stream, cancellable, NULL);
}
static void
-efh_image (EMFormatHTML *efh, CamelStream *stream, CamelMimePart *part, EMFormatHandler *info)
+efh_image (EMFormat *emf,
+ CamelStream *stream,
+ CamelMimePart *part,
+ const EMFormatHandler *info,
+ GCancellable *cancellable,
+ gboolean is_fallback)
{
EMFormatPURI *puri;
- puri = em_format_add_puri ((EMFormat *)efh, sizeof (EMFormatPURI), NULL, part, efh_write_image);
- d(printf("adding image '%s'\n", puri->cid));
- camel_stream_printf(stream, "<img hspace=10 vspace=10 src=\"%s\">", puri->cid);
+ puri = em_format_add_puri (
+ emf, sizeof (EMFormatPURI), NULL, part, efh_write_image);
+ camel_stream_printf (
+ stream, "<img hspace=10 vspace=10 src=\"%s\">", puri->cid);
}
static EMFormatHandler type_builtin_table[] = {
- { (gchar *) "image/gif", (EMFormatFunc)efh_image },
- { (gchar *) "image/jpeg", (EMFormatFunc)efh_image },
- { (gchar *) "image/png", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-png", (EMFormatFunc)efh_image },
- { (gchar *) "image/tiff", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-bmp", (EMFormatFunc)efh_image },
- { (gchar *) "image/bmp", (EMFormatFunc)efh_image },
- { (gchar *) "image/svg", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-cmu-raster", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-ico", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-portable-anymap", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-portable-bitmap", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-portable-graymap", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-portable-pixmap", (EMFormatFunc)efh_image },
- { (gchar *) "image/x-xpixmap", (EMFormatFunc)efh_image },
- { (gchar *) "text/enriched", (EMFormatFunc)efh_text_enriched },
- { (gchar *) "text/plain", (EMFormatFunc)efh_text_plain },
- { (gchar *) "text/html", (EMFormatFunc)efh_text_html },
- { (gchar *) "text/richtext", (EMFormatFunc)efh_text_enriched },
- { (gchar *) "text/*", (EMFormatFunc)efh_text_plain },
- { (gchar *) "message/external-body", (EMFormatFunc)efh_message_external },
- { (gchar *) "message/delivery-status", (EMFormatFunc)efh_message_deliverystatus },
- { (gchar *) "multipart/related", (EMFormatFunc)efh_multipart_related },
+ { (gchar *) "image/gif", efh_image },
+ { (gchar *) "image/jpeg", efh_image },
+ { (gchar *) "image/png", efh_image },
+ { (gchar *) "image/x-png", efh_image },
+ { (gchar *) "image/tiff", efh_image },
+ { (gchar *) "image/x-bmp", efh_image },
+ { (gchar *) "image/bmp", efh_image },
+ { (gchar *) "image/svg", efh_image },
+ { (gchar *) "image/x-cmu-raster", efh_image },
+ { (gchar *) "image/x-ico", efh_image },
+ { (gchar *) "image/x-portable-anymap", efh_image },
+ { (gchar *) "image/x-portable-bitmap", efh_image },
+ { (gchar *) "image/x-portable-graymap", efh_image },
+ { (gchar *) "image/x-portable-pixmap", efh_image },
+ { (gchar *) "image/x-xpixmap", efh_image },
+ { (gchar *) "text/enriched", efh_text_enriched },
+ { (gchar *) "text/plain", efh_text_plain },
+ { (gchar *) "text/html", efh_text_html },
+ { (gchar *) "text/richtext", efh_text_enriched },
+ { (gchar *) "text/*", efh_text_plain },
+ { (gchar *) "message/external-body", efh_message_external },
+ { (gchar *) "message/delivery-status", efh_message_deliverystatus },
+ { (gchar *) "multipart/related", efh_multipart_related },
/* This is where one adds those busted, non-registered types,
that some idiot mailer writers out there decide to pull out
of their proverbials at random. */
- { (gchar *) "image/jpg", (EMFormatFunc)efh_image },
- { (gchar *) "image/pjpeg", (EMFormatFunc)efh_image },
+ { (gchar *) "image/jpg", efh_image },
+ { (gchar *) "image/pjpeg", efh_image },
/* special internal types */
- { (gchar *) "x-evolution/message/rfc822", (EMFormatFunc)efh_format_message }
+ { (gchar *) "x-evolution/message/rfc822", efh_format_message }
};
static void
@@ -2840,7 +2895,8 @@ efh_format_headers (EMFormatHTML *efh,
if (icon_info != NULL) {
iconpart = em_format_html_file_part (
(EMFormatHTML *) emf, "image/png",
- gtk_icon_info_get_filename (icon_info));
+ gtk_icon_info_get_filename (icon_info),
+ cancellable);
gtk_icon_info_free (icon_info);
}
@@ -2861,7 +2917,8 @@ efh_format_message (EMFormat *emf,
CamelStream *stream,
CamelMimePart *part,
const EMFormatHandler *info,
- GCancellable *cancellable)
+ GCancellable *cancellable,
+ gboolean is_fallback)
{
const EMFormatHandler *handle;
diff --git a/mail/em-format-html.h b/mail/em-format-html.h
index 81f2fee5ca..bdfa62dfb9 100644
--- a/mail/em-format-html.h
+++ b/mail/em-format-html.h
@@ -248,7 +248,8 @@ void em_format_html_set_show_sender_photo
/* retrieves a pseudo-part icon wrapper for a file */
CamelMimePart * em_format_html_file_part (EMFormatHTML *efh,
const gchar *mime_type,
- const gchar *filename);
+ const gchar *filename,
+ GCancellable *cancellable);
/* for implementers */
EMFormatHTMLPObject *
diff --git a/mail/em-html-stream.c b/mail/em-html-stream.c
index f74ba8d98b..87e2296c03 100644
--- a/mail/em-html-stream.c
+++ b/mail/em-html-stream.c
@@ -64,7 +64,7 @@ html_stream_dispose (GObject *object)
if (emhs->html_stream) {
/* set 'in finalise' flag */
- camel_stream_close (CAMEL_STREAM (emhs), NULL);
+ camel_stream_close (CAMEL_STREAM (emhs), NULL, NULL);
}
}
diff --git a/mail/em-inline-filter.c b/mail/em-inline-filter.c
index 11a4b32764..c1376fc18f 100644
--- a/mail/em-inline-filter.c
+++ b/mail/em-inline-filter.c
@@ -92,12 +92,14 @@ inline_filter_add_part (EMInlineFilter *emif, const gchar *data, gint len)
camel_stream_filter_add (CAMEL_STREAM_FILTER (filter_stream), enc_filter);
/* properly encode content */
- camel_data_wrapper_construct_from_stream (dw, filter_stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ dw, filter_stream, NULL, NULL);
g_object_unref (enc_filter);
g_object_unref (filter_stream);
} else {
- camel_data_wrapper_construct_from_stream (dw, mem, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ dw, mem, NULL, NULL);
}
g_object_unref (mem);
diff --git a/mail/em-subscribe-editor.c b/mail/em-subscribe-editor.c
index c0d1120a3e..b942e35a4b 100644
--- a/mail/em-subscribe-editor.c
+++ b/mail/em-subscribe-editor.c
@@ -266,11 +266,11 @@ static void
sub_folder_exec (struct _zsubscribe_msg *m)
{
if (m->subscribe)
- camel_store_subscribe_folder (
+ camel_store_subscribe_folder_sync (
m->sub->store, m->node->info->full_name,
m->base.cancellable, &m->base.error);
else
- camel_store_unsubscribe_folder (
+ camel_store_unsubscribe_folder_sync (
m->sub->store, m->node->info->full_name,
m->base.cancellable, &m->base.error);
}
@@ -454,7 +454,7 @@ sub_folderinfo_exec (struct _emse_folderinfo_msg *m)
{
if (m->seq == m->sub->seq) {
/* get the full folder tree for search ability */
- m->info = camel_store_get_folder_info (
+ m->info = camel_store_get_folder_info_sync (
m->sub->store, NULL,
CAMEL_STORE_FOLDER_INFO_NO_VIRTUAL |
CAMEL_STORE_FOLDER_INFO_SUBSCRIPTION_LIST |
diff --git a/mail/em-sync-stream.c b/mail/em-sync-stream.c
index bb5a21808e..9c52cd703b 100644
--- a/mail/em-sync-stream.c
+++ b/mail/em-sync-stream.c
@@ -141,6 +141,7 @@ static gssize
sync_stream_write (CamelStream *stream,
const gchar *string,
gsize len,
+ GCancellable *cancellable,
GError **error)
{
EMSyncStream *emss = EM_SYNC_STREAM (stream);
@@ -168,6 +169,7 @@ sync_stream_write (CamelStream *stream,
static gint
sync_stream_flush (CamelStream *stream,
+ GCancellable *cancellable,
GError **error)
{
EMSyncStream *emss = EM_SYNC_STREAM (stream);
@@ -189,6 +191,7 @@ sync_stream_flush (CamelStream *stream,
static gint
sync_stream_close (CamelStream *stream,
+ GCancellable *cancellable,
GError **error)
{
EMSyncStream *emss = EM_SYNC_STREAM (stream);
diff --git a/mail/em-utils.c b/mail/em-utils.c
index 922050212d..cf00c73a28 100644
--- a/mail/em-utils.c
+++ b/mail/em-utils.c
@@ -560,8 +560,8 @@ em_utils_write_messages_to_stream (CamelFolder *folder, GPtrArray *uids, CamelSt
CamelMimeMessage *message;
gchar *from;
- /* FIXME camel_folder_get_message() may block. */
- message = camel_folder_get_message (
+ /* FIXME camel_folder_get_message_sync() may block. */
+ message = camel_folder_get_message_sync (
folder, uids->pdata[i], NULL, NULL);
if (message == NULL) {
res = -1;
@@ -571,10 +571,10 @@ em_utils_write_messages_to_stream (CamelFolder *folder, GPtrArray *uids, CamelSt
/* we need to flush after each stream write since we are writing to the same stream */
from = camel_mime_message_build_mbox_from (message);
- if (camel_stream_write_string (stream, from, NULL) == -1
- || camel_stream_flush (stream, NULL) == -1
- || camel_data_wrapper_write_to_stream ((CamelDataWrapper *)message, (CamelStream *)filtered_stream, NULL) == -1
- || camel_stream_flush ((CamelStream *)filtered_stream, NULL) == -1)
+ if (camel_stream_write_string (stream, from, NULL, NULL) == -1
+ || camel_stream_flush (stream, NULL, NULL) == -1
+ || camel_data_wrapper_write_to_stream_sync ((CamelDataWrapper *)message, (CamelStream *)filtered_stream, NULL, NULL) == -1
+ || camel_stream_flush ((CamelStream *)filtered_stream, NULL, NULL) == -1)
res = -1;
g_free (from);
@@ -606,13 +606,14 @@ em_utils_read_messages_from_stream (CamelFolder *folder, CamelStream *stream)
/* NB: de-from filter, once written */
msg = camel_mime_message_new ();
- if (camel_mime_part_construct_from_parser ((CamelMimePart *)msg, mp, NULL) == -1) {
+ if (!camel_mime_part_construct_from_parser_sync (
+ (CamelMimePart *)msg, mp, NULL, NULL)) {
g_object_unref (msg);
break;
}
- /* FIXME camel_folder_append_message() may block. */
- success = camel_folder_append_message (
+ /* FIXME camel_folder_append_message_sync() may block. */
+ success = camel_folder_append_message_sync (
folder, msg, NULL, NULL, NULL, NULL);
g_object_unref (msg);
@@ -716,9 +717,10 @@ em_utils_selection_get_message (GtkSelectionData *selection_data,
stream = (CamelStream *)
camel_stream_mem_new_with_buffer ((gchar *)data, length);
msg = camel_mime_message_new ();
- if (camel_data_wrapper_construct_from_stream ((CamelDataWrapper *)msg, stream, NULL) == 0)
- /* FIXME camel_folder_append_message() may block. */
- camel_folder_append_message (
+ if (camel_data_wrapper_construct_from_stream_sync (
+ (CamelDataWrapper *)msg, stream, NULL, NULL))
+ /* FIXME camel_folder_append_message_sync() may block. */
+ camel_folder_append_message_sync (
folder, msg, NULL, NULL, NULL, NULL);
g_object_unref (msg);
g_object_unref (stream);
@@ -812,9 +814,9 @@ em_utils_selection_get_uidlist (GtkSelectionData *selection_data,
folder = mail_tool_uri_to_folder (
(gchar *) data, 0, cancellable, error);
if (folder) {
- /* FIXME camel_folder_transfer_messages_to() may block. */
- camel_folder_transfer_messages_to (
- folder, uids, dest, NULL, move, cancellable, error);
+ /* FIXME camel_folder_transfer_messages_to_sync() may block. */
+ camel_folder_transfer_messages_to_sync (
+ folder, uids, dest, move, NULL, cancellable, error);
g_object_unref (folder);
}
@@ -1264,15 +1266,15 @@ em_utils_message_to_html (CamelMimeMessage *message,
guint32 *validity_found)
{
EMFormatQuote *emfq;
- CamelStreamMem *mem;
+ CamelStream *mem;
GByteArray *buf;
gchar *text;
buf = g_byte_array_new ();
- mem = (CamelStreamMem *) camel_stream_mem_new ();
- camel_stream_mem_set_byte_array (mem, buf);
+ mem = camel_stream_mem_new ();
+ camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (mem), buf);
- emfq = em_format_quote_new (credits, (CamelStream *)mem, flags);
+ emfq = em_format_quote_new (credits, mem, flags);
((EMFormat *) emfq)->composer = TRUE;
if (!source) {
@@ -1295,9 +1297,9 @@ em_utils_message_to_html (CamelMimeMessage *message,
g_object_unref (emfq);
if (append && *append)
- camel_stream_write ((CamelStream*)mem, append, strlen (append), NULL);
+ camel_stream_write_string (mem, append, NULL, NULL);
- camel_stream_write((CamelStream *)mem, "", 1, NULL);
+ camel_stream_write(mem, "", 1, NULL, NULL);
g_object_unref (mem);
text = (gchar *)buf->data;
diff --git a/mail/importers/evolution-mbox-importer.c b/mail/importers/evolution-mbox-importer.c
index 51d8796648..a929b6b06d 100644
--- a/mail/importers/evolution-mbox-importer.c
+++ b/mail/importers/evolution-mbox-importer.c
@@ -332,8 +332,8 @@ mbox_get_preview (EImport *ei, EImportTarget *target, EImportImporter *im)
gchar *from;
msg = camel_mime_message_new ();
- if (camel_mime_part_construct_from_parser (
- (CamelMimePart *)msg, mp, NULL) == -1) {
+ if (!camel_mime_part_construct_from_parser_sync (
+ (CamelMimePart *)msg, mp, NULL, NULL)) {
g_object_unref (msg);
break;
}
diff --git a/mail/importers/mail-importer.c b/mail/importers/mail-importer.c
index 3dac78744c..b70b6b0c0c 100644
--- a/mail/importers/mail-importer.c
+++ b/mail/importers/mail-importer.c
@@ -130,8 +130,6 @@ import_mbox_exec (struct _import_mbox_msg *m)
return;
if (S_ISREG (st.st_mode)) {
- CamelOperation *oldcancel = NULL;
-
fd = g_open (m->path, O_RDONLY|O_BINARY, 0);
if (fd == -1) {
g_warning("cannot find source file to import '%s': %s", m->path, g_strerror(errno));
@@ -144,11 +142,8 @@ import_mbox_exec (struct _import_mbox_msg *m)
goto fail2;
}
- if (m->cancel)
- oldcancel = camel_operation_register (m->cancel);
-
- camel_operation_start (
- NULL, _("Importing '%s'"),
+ camel_operation_push_message (
+ m->base.cancellable, _("Importing '%s'"),
camel_folder_get_full_name (folder));
camel_folder_freeze (folder);
while (camel_mime_parser_step (mp, NULL, NULL) == CAMEL_MIME_PARSER_STATE_FROM) {
@@ -159,10 +154,11 @@ import_mbox_exec (struct _import_mbox_msg *m)
if (st.st_size > 0)
pc = (gint)(100.0 * ((double)camel_mime_parser_tell (mp) / (double)st.st_size));
- camel_operation_progress (NULL, pc);
+ camel_operation_progress (m->base.cancellable, pc);
msg = camel_mime_message_new ();
- if (camel_mime_part_construct_from_parser ((CamelMimePart *)msg, mp, NULL) == -1) {
+ if (!camel_mime_part_construct_from_parser_sync (
+ (CamelMimePart *)msg, mp, NULL, NULL)) {
/* set exception? */
g_object_unref (msg);
break;
@@ -181,7 +177,7 @@ import_mbox_exec (struct _import_mbox_msg *m)
flags |= decode_status (tmp);
camel_message_info_set_flags (info, flags, ~0);
- camel_folder_append_message (
+ camel_folder_append_message_sync (
folder, msg, info, NULL,
m->base.cancellable, &m->base.error);
camel_message_info_free (info);
@@ -193,18 +189,16 @@ import_mbox_exec (struct _import_mbox_msg *m)
camel_mime_parser_step (mp, NULL, NULL);
}
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_sync (folder, FALSE, NULL, NULL);
+ camel_folder_synchronize_sync (folder, FALSE, NULL, NULL);
camel_folder_thaw (folder);
- camel_operation_end (NULL);
+ camel_operation_pop_message (m->base.cancellable);
/* TODO: these api's are a bit weird, registering the old is the same as deregistering */
- if (m->cancel)
- camel_operation_register (oldcancel);
fail2:
g_object_unref (mp);
}
fail1:
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_sync (folder, FALSE, NULL, NULL);
+ camel_folder_synchronize_sync (folder, FALSE, NULL, NULL);
g_object_unref (folder);
}
@@ -292,7 +286,7 @@ import_folders_rec (struct _import_folders_data *m, const gchar *filepath, const
data_dir = mail_session_get_data_dir ();
utf8_filename = g_filename_to_utf8 (filepath, -1, NULL, NULL, NULL);
- camel_operation_start(NULL, _("Scanning %s"), utf8_filename);
+ camel_operation_push_message (NULL, _("Scanning %s"), utf8_filename);
g_free (utf8_filename);
while ( (d=g_dir_read_name (dir))) {
@@ -350,7 +344,7 @@ import_folders_rec (struct _import_folders_data *m, const gchar *filepath, const
}
g_dir_close (dir);
- camel_operation_end (NULL);
+ camel_operation_pop_message (NULL);
}
/**
@@ -372,17 +366,10 @@ void
mail_importer_import_folders_sync (const gchar *filepath, MailImporterSpecial special_folders[], gint flags, CamelOperation *cancel)
{
struct _import_folders_data m;
- CamelOperation *oldcancel = NULL;
m.special_folders = special_folders;
m.elmfmt = (flags & MAIL_IMPORTER_MOZFMT) == 0;
m.cancel = cancel;
- if (cancel)
- oldcancel = camel_operation_register (cancel);
-
import_folders_rec (&m, filepath, NULL);
-
- if (cancel)
- camel_operation_register (oldcancel);
}
diff --git a/mail/mail-folder-cache.c b/mail/mail-folder-cache.c
index 00818a1ef5..78cd647283 100644
--- a/mail/mail-folder-cache.c
+++ b/mail/mail-folder-cache.c
@@ -195,8 +195,8 @@ real_flush_updates (gpointer o, gpointer event_data, gpointer data)
* ensure their changes will be tracked correctly. */
CamelFolder *folder;
- /* FIXME camel_store_get_folder() may block. */
- folder = camel_store_get_folder (
+ /* FIXME camel_store_get_folder_sync() may block. */
+ folder = camel_store_get_folder_sync (
up->store, up->full_name, 0, NULL, NULL);
if (folder) {
@@ -802,12 +802,12 @@ ping_store_exec (struct _ping_store_msg *m)
CAMEL_DISCO_STORE (m->store)) !=CAMEL_DISCO_STORE_OFFLINE)
online = TRUE;
else if (CAMEL_IS_OFFLINE_STORE (m->store) &&
- CAMEL_OFFLINE_STORE (m->store)->state !=
- CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL)
+ camel_offline_store_get_online (
+ CAMEL_OFFLINE_STORE (m->store)))
online = TRUE;
}
if (online)
- camel_store_noop (
+ camel_store_noop_sync (
m->store, m->base.cancellable, &m->base.error);
}
@@ -1140,8 +1140,8 @@ mail_folder_cache_note_store (MailFolderCache *self,
}
} else if (CAMEL_IS_OFFLINE_STORE (store)) {
if (camel_session_get_online (session) &&
- CAMEL_OFFLINE_STORE (store)->state ==
- CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL) {
+ !camel_offline_store_get_online (
+ CAMEL_OFFLINE_STORE (store))) {
/* Note: we use the 'id' here, even though its not the right id, its still ok */
ud->id = mail_store_set_offline (store, FALSE, store_online_cb, ud);
} else {
diff --git a/mail/mail-mt.c b/mail/mail-mt.c
index 694a8f5abe..87f6b251bf 100644
--- a/mail/mail-mt.c
+++ b/mail/mail-mt.c
@@ -298,16 +298,24 @@ void
mail_msg_cancel (guint msgid)
{
MailMsg *msg;
+ GCancellable *cancellable = NULL;
g_mutex_lock (mail_msg_lock);
msg = g_hash_table_lookup (
mail_msg_active_table, GINT_TO_POINTER (msgid));
- if (msg != NULL && msg->cancellable != NULL)
- camel_operation_cancel (CAMEL_OPERATION (msg->cancellable));
+ /* Hold a reference to the GCancellable so it doesn't finalize
+ * itself on us between unlocking the mutex and cancelling. */
+ if (msg != NULL && !g_cancellable_is_cancelled (msg->cancellable))
+ cancellable = g_object_ref (msg->cancellable);
g_mutex_unlock (mail_msg_lock);
+
+ if (cancellable != NULL) {
+ camel_operation_cancel (CAMEL_OPERATION (cancellable));
+ g_object_unref (cancellable);
+ }
}
/* waits for a message to be finished processing (freed)
@@ -474,7 +482,7 @@ mail_msg_proxy (MailMsg *msg)
{
if (msg->info->desc != NULL) {
gchar *text = msg->info->desc (msg);
- camel_operation_start (msg->cancellable, "%s", text);
+ camel_operation_push_message (msg->cancellable, "%s", text);
g_free (text);
}
@@ -488,7 +496,7 @@ mail_msg_proxy (MailMsg *msg)
msg->info->exec (msg);
if (msg->info->desc != NULL)
- camel_operation_end (msg->cancellable);
+ camel_operation_pop_message (msg->cancellable);
g_async_queue_push (msg_reply_queue, msg);
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 5699199666..89b83ec426 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -59,7 +59,6 @@ struct _filter_mail_msg {
CamelFolder *source_folder; /* where they come from */
GPtrArray *source_uids; /* uids to copy, or NULL == copy all */
CamelUIDCache *cache; /* UID cache if we are to cache the uids, NULL otherwise */
- CamelOperation *cancel;
CamelFilterDriver *driver;
gint delete; /* delete messages after filtering them? */
CamelFolder *destination; /* default destination for any messages, NULL for none */
@@ -93,16 +92,10 @@ em_filter_folder_element_exec (struct _filter_mail_msg *m)
CamelFolder *folder;
GPtrArray *uids, *folder_uids = NULL;
- if (m->cancel)
- camel_operation_register (m->cancel);
-
folder = m->source_folder;
- if (folder == NULL || camel_folder_get_message_count (folder) == 0) {
- if (m->cancel)
- camel_operation_unregister ();
+ if (folder == NULL || camel_folder_get_message_count (folder) == 0)
return;
- }
if (m->destination) {
camel_folder_freeze (m->destination);
@@ -126,7 +119,7 @@ em_filter_folder_element_exec (struct _filter_mail_msg *m)
/* sync our source folder */
if (!m->cache)
- camel_folder_sync (
+ camel_folder_synchronize_sync (
folder, FALSE, m->base.cancellable, &m->base.error);
camel_folder_thaw (folder);
@@ -137,9 +130,6 @@ em_filter_folder_element_exec (struct _filter_mail_msg *m)
see also fetch_mail_fetch () below */
g_object_unref (m->driver);
m->driver = NULL;
-
- if (m->cancel)
- camel_operation_unregister ();
}
static void
@@ -156,9 +146,6 @@ em_filter_folder_element_free (struct _filter_mail_msg *m)
if (m->source_uids)
em_utils_uids_free (m->source_uids);
- if (m->cancel)
- g_object_unref (m->cancel);
-
if (m->destination)
g_object_unref (m->destination);
@@ -178,8 +165,7 @@ static MailMsgInfo em_filter_folder_element_info = {
void
mail_filter_folder (CamelFolder *source_folder, GPtrArray *uids,
- const gchar *type, gboolean notify,
- CamelOperation *cancel)
+ const gchar *type, gboolean notify)
{
struct _filter_mail_msg *m;
@@ -189,8 +175,6 @@ mail_filter_folder (CamelFolder *source_folder, GPtrArray *uids,
m->source_uids = uids;
m->cache = NULL;
m->delete = FALSE;
- if (cancel)
- m->cancel = g_object_ref (cancel);
m->driver = camel_session_get_filter_driver (session, type, NULL);
@@ -207,13 +191,13 @@ mail_filter_folder (CamelFolder *source_folder, GPtrArray *uids,
void
mail_filter_on_demand (CamelFolder *folder, GPtrArray *uids)
{
- mail_filter_folder (folder, uids, E_FILTER_SOURCE_DEMAND, FALSE, NULL);
+ mail_filter_folder (folder, uids, E_FILTER_SOURCE_DEMAND, FALSE);
}
void
mail_filter_junk (CamelFolder *folder, GPtrArray *uids)
{
- mail_filter_folder (folder, uids, E_FILTER_SOURCE_JUNKTEST, FALSE, NULL);
+ mail_filter_folder (folder, uids, E_FILTER_SOURCE_JUNKTEST, FALSE);
}
/* ********************************************************************** */
@@ -251,9 +235,6 @@ fetch_mail_exec (struct _fetch_mail_msg *m)
struct _filter_mail_msg *fm = (struct _filter_mail_msg *)m;
gint i;
- if (m->cancellable)
- camel_operation_register (CAMEL_OPERATION (m->cancellable));
-
fm->destination = e_mail_local_get_folder (E_MAIL_FOLDER_LOCAL_INBOX);
if (fm->destination == NULL)
goto fail;
@@ -315,8 +296,8 @@ fetch_mail_exec (struct _fetch_mail_msg *m)
em_filter_folder_element_exec (fm);
/* need to uncancel so writes/etc. don't fail */
- if (g_error_matches (fm->base.error, G_IO_ERROR, G_IO_ERROR_CANCELLED))
- camel_operation_uncancel (NULL);
+ if (g_cancellable_is_cancelled (m->cancellable))
+ g_cancellable_reset (m->cancellable);
/* save the cache of uids that we've just downloaded */
camel_uid_cache_save (cache);
@@ -333,7 +314,8 @@ fetch_mail_exec (struct _fetch_mail_msg *m)
if ((fm->delete || cache_uids) && fm->base.error == NULL) {
/* expunge messages (downloaded so far) */
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_sync (folder, fm->delete, NULL, NULL);
+ camel_folder_synchronize_sync (
+ folder, fm->delete, NULL, NULL);
}
camel_uid_cache_destroy (cache);
@@ -350,9 +332,6 @@ fetch_mail_exec (struct _fetch_mail_msg *m)
}
}
fail:
- if (m->cancellable)
- camel_operation_unregister ();
-
/* we unref this here as it may have more work to do (syncing
folders and whatnot) before we are really done */
/* should this be cancellable too? (i.e. above unregister above) */
@@ -488,7 +467,8 @@ mail_send_message (struct _send_queue_msg *m,
gint i;
GError *local_error = NULL;
- message = camel_folder_get_message (queue, uid, cancellable, error);
+ message = camel_folder_get_message_sync (
+ queue, uid, cancellable, error);
if (!message)
return;
@@ -559,7 +539,7 @@ mail_send_message (struct _send_queue_msg *m,
if (xport == NULL)
goto exit;
- if (!camel_transport_send_to (
+ if (!camel_transport_send_to_sync (
xport, message, from, recipients, cancellable, error))
goto exit;
}
@@ -581,7 +561,7 @@ mail_send_message (struct _send_queue_msg *m,
folder = mail_tool_uri_to_folder (uri, 0, NULL, NULL);
if (folder) {
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_append_message (
+ camel_folder_append_message_sync (
folder, message, info, NULL, NULL, NULL);
g_object_unref (folder);
folder = NULL;
@@ -631,7 +611,7 @@ mail_send_message (struct _send_queue_msg *m,
g_object_ref (folder);
}
- if (!camel_folder_append_message (
+ if (!camel_folder_append_message_sync (
folder, message, info,
NULL, cancellable, &local_error)) {
@@ -657,7 +637,7 @@ mail_send_message (struct _send_queue_msg *m,
folder = sent_folder;
g_clear_error (&local_error);
- camel_folder_append_message (
+ camel_folder_append_message_sync (
folder, message, info,
NULL, cancellable, &local_error);
}
@@ -682,7 +662,7 @@ mail_send_message (struct _send_queue_msg *m,
/* Sync it to disk, since if it crashes in between,
* we keep sending it again on next start. */
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_sync (queue, FALSE, NULL, NULL);
+ camel_folder_synchronize_sync (queue, FALSE, NULL, NULL);
}
if (err->len) {
@@ -698,7 +678,7 @@ exit:
/* FIXME Not passing a GCancellable or GError here. */
if (folder) {
- camel_folder_sync (folder, FALSE, NULL, NULL);
+ camel_folder_synchronize_sync (folder, FALSE, NULL, NULL);
g_object_unref (folder);
}
if (info)
@@ -785,13 +765,7 @@ send_queue_exec (struct _send_queue_msg *m)
return;
}
- if (m->cancellable)
- camel_operation_register (CAMEL_OPERATION (m->cancellable));
- else
- camel_operation_register (CAMEL_OPERATION (m->base.cancellable));
-
- if (!m->cancellable)
- camel_operation_start (NULL, _("Sending message"));
+ camel_operation_push_message (m->cancellable, _("Sending message"));
/* NB: This code somewhat abuses the 'exception' stuff. Apart from
* fatal problems, it is also used as a mechanism to accumualte
@@ -807,7 +781,7 @@ send_queue_exec (struct _send_queue_msg *m)
if (!m->cancellable)
camel_operation_progress (
- NULL, (i+1) * 100 / send_uids->len);
+ m->cancellable, (i+1) * 100 / send_uids->len);
mail_send_message (
m, m->queue, send_uids->pdata[i], m->destination,
@@ -865,17 +839,13 @@ send_queue_exec (struct _send_queue_msg *m)
/* FIXME Not passing a GCancellable or GError here. */
if (j <= 0 && m->base.error == NULL)
- camel_folder_sync (m->queue, TRUE, NULL, NULL);
+ camel_folder_synchronize_sync (m->queue, TRUE, NULL, NULL);
/* FIXME Not passing a GCancellable or GError here. */
if (sent_folder)
- camel_folder_sync (sent_folder, FALSE, NULL, NULL);
-
- if (!m->cancellable)
- camel_operation_end (NULL);
-
- camel_operation_unregister ();
+ camel_folder_synchronize_sync (sent_folder, FALSE, NULL, NULL);
+ camel_operation_pop_message (m->cancellable);
}
static void
@@ -971,7 +941,7 @@ append_mail_exec (struct _append_msg *m)
camel_mime_message_set_date (
m->message, CAMEL_MESSAGE_DATE_CURRENT, 0);
- camel_folder_append_message (
+ camel_folder_append_message_sync (
m->folder, m->message,
m->info, &m->appended_uid,
m->base.cancellable, &m->base.error);
@@ -1072,8 +1042,8 @@ transfer_messages_exec (struct _transfer_msg *m)
camel_folder_freeze (m->source);
camel_folder_freeze (dest);
- camel_folder_transfer_messages_to (
- m->source, m->uids, dest, NULL, m->delete,
+ camel_folder_transfer_messages_to_sync (
+ m->source, m->uids, dest, m->delete, NULL,
m->base.cancellable, &m->base.error);
/* make sure all deleted messages are marked as seen */
@@ -1091,7 +1061,7 @@ transfer_messages_exec (struct _transfer_msg *m)
camel_folder_thaw (dest);
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_sync (dest, FALSE, NULL, NULL);
+ camel_folder_synchronize_sync (dest, FALSE, NULL, NULL);
g_object_unref (dest);
}
@@ -1173,7 +1143,7 @@ get_folderinfo_exec (struct _get_folderinfo_msg *m)
{
guint32 flags = CAMEL_STORE_FOLDER_INFO_RECURSIVE|CAMEL_STORE_FOLDER_INFO_FAST | CAMEL_STORE_FOLDER_INFO_SUBSCRIBED;
- m->info = camel_store_get_folder_info (
+ m->info = camel_store_get_folder_info_sync (
m->store, NULL, flags,
m->base.cancellable, &m->base.error);
}
@@ -1548,7 +1518,7 @@ remove_folder_rec (CamelStore *store,
d(printf ("deleting folder '%s'\n", fi->full_name));
- folder = camel_store_get_folder (
+ folder = camel_store_get_folder_sync (
store, fi->full_name, 0, cancellable, error);
if (folder == NULL)
return FALSE;
@@ -1566,7 +1536,7 @@ remove_folder_rec (CamelStore *store,
camel_folder_free_uids (folder, uids);
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_sync (folder, TRUE, NULL, NULL);
+ camel_folder_synchronize_sync (folder, TRUE, NULL, NULL);
camel_folder_thaw (folder);
}
@@ -1574,11 +1544,11 @@ remove_folder_rec (CamelStore *store,
* from this folder.
* FIXME Not passing a GCancellable or GError here. */
if (camel_store_supports_subscriptions (store))
- camel_store_unsubscribe_folder (
+ camel_store_unsubscribe_folder_sync (
store, fi->full_name, NULL, NULL);
/* Then delete the folder from the store */
- if (!camel_store_delete_folder (
+ if (!camel_store_delete_folder_sync (
store, fi->full_name, cancellable, error))
return FALSE;
@@ -1600,7 +1570,7 @@ remove_folder_exec (struct _remove_folder_msg *m)
full_name = camel_folder_get_full_name (m->folder);
parent_store = camel_folder_get_parent_store (m->folder);
- fi = camel_store_get_folder_info (
+ fi = camel_store_get_folder_info_sync (
parent_store, full_name,
CAMEL_STORE_FOLDER_INFO_RECURSIVE |
CAMEL_STORE_FOLDER_INFO_FAST |
@@ -1672,7 +1642,7 @@ sync_folder_desc (struct _sync_folder_msg *m)
static void
sync_folder_exec (struct _sync_folder_msg *m)
{
- camel_folder_sync (
+ camel_folder_synchronize_sync (
m->folder, FALSE, m->base.cancellable, &m->base.error);
}
@@ -1740,7 +1710,7 @@ sync_store_desc (struct _sync_store_msg *m)
static void
sync_store_exec (struct _sync_store_msg *m)
{
- camel_store_sync (
+ camel_store_synchronize_sync (
m->store, m->expunge,
m->base.cancellable, &m->base.error);
}
@@ -1792,7 +1762,7 @@ refresh_folder_desc (struct _sync_folder_msg *m)
static void
refresh_folder_exec (struct _sync_folder_msg *m)
{
- camel_folder_refresh_info (
+ camel_folder_refresh_info_sync (
m->folder, m->base.cancellable, &m->base.error);
}
@@ -1830,7 +1800,7 @@ expunge_folder_desc (struct _sync_folder_msg *m)
static void
expunge_folder_exec (struct _sync_folder_msg *m)
{
- camel_folder_expunge (
+ camel_folder_expunge_sync (
m->folder, m->base.cancellable, &m->base.error);
}
@@ -1894,7 +1864,7 @@ empty_trash_exec (struct _empty_trash_msg *m)
}
if (trash) {
- camel_folder_expunge (
+ camel_folder_expunge_sync (
trash, m->base.cancellable, &m->base.error);
g_object_unref (trash);
}
@@ -1962,7 +1932,7 @@ get_message_exec (struct _get_message_msg *m)
if (g_cancellable_is_cancelled (m->base.cancellable))
m->message = NULL;
else
- m->message = camel_folder_get_message (
+ m->message = camel_folder_get_message_sync (
m->folder, m->uid,
m->base.cancellable, &m->base.error);
}
@@ -2094,7 +2064,7 @@ get_messages_exec (struct _get_messages_msg *m)
for (i=0; i<m->uids->len; i++) {
gint pc = ((i+1) * 100) / m->uids->len;
- message = camel_folder_get_message (
+ message = camel_folder_get_message_sync (
m->folder, m->uids->pdata[i],
m->base.cancellable, &m->base.error);
camel_operation_progress (
@@ -2237,7 +2207,7 @@ save_messages_exec (struct _save_messages_msg *m)
CamelMimeMessage *message;
gint pc = ((i+1) * 100) / m->uids->len;
- message = camel_folder_get_message (
+ message = camel_folder_get_message_sync (
m->folder, m->uids->pdata[i],
m->base.cancellable, &m->base.error);
camel_operation_progress (
@@ -2250,16 +2220,22 @@ save_messages_exec (struct _save_messages_msg *m)
/* we need to flush after each stream write since we are writing to the same fd */
from = camel_mime_message_build_mbox_from (message);
if (camel_stream_write_string (
- stream, from, &m->base.error) == -1
- || camel_stream_flush (stream, &m->base.error) == -1
- || camel_data_wrapper_write_to_stream (
+ stream, from,
+ m->base.cancellable, &m->base.error) == -1
+ || camel_stream_flush (
+ stream, m->base.cancellable, &m->base.error) == -1
+ || camel_data_wrapper_write_to_stream_sync (
(CamelDataWrapper *) message,
- (CamelStream *)filtered_stream, &m->base.error) == -1
+ (CamelStream *)filtered_stream,
+ m->base.cancellable, &m->base.error) == -1
|| camel_stream_flush (
- (CamelStream *)filtered_stream, &m->base.error) == -1
+ (CamelStream *)filtered_stream,
+ m->base.cancellable, &m->base.error) == -1
|| camel_stream_write_string (
- stream, "\n", &m->base.error) == -1
- || camel_stream_flush (stream, &m->base.error) == -1) {
+ stream, "\n",
+ m->base.cancellable, &m->base.error) == -1
+ || camel_stream_flush (stream,
+ m->base.cancellable, &m->base.error) == -1) {
g_prefix_error (
&m->base.error,
_("Error saving messages to: %s:\n"),
@@ -2377,9 +2353,9 @@ save_part_exec (struct _save_part_msg *m)
content = camel_medium_get_content (CAMEL_MEDIUM (m->part));
- if (camel_data_wrapper_decode_to_stream (
- content, stream, &m->base.error) == -1
- || camel_stream_flush (stream, &m->base.error) == -1)
+ if (camel_data_wrapper_decode_to_stream_sync (
+ content, stream, m->base.cancellable, &m->base.error) == -1
+ || camel_stream_flush (stream, m->base.cancellable, &m->base.error) == -1)
g_prefix_error (&m->base.error, _("Could not write data: "));
g_object_unref (stream);
@@ -2451,14 +2427,14 @@ prep_offline_exec (struct _prep_offline_msg *m)
CAMEL_DISCO_FOLDER (folder),
"(match-all)", m->cancel, &m->base.error);
} else if (CAMEL_IS_OFFLINE_FOLDER (folder)) {
- camel_offline_folder_downsync (
+ camel_offline_folder_downsync_sync (
CAMEL_OFFLINE_FOLDER (folder),
"(match-all)", m->cancel, &m->base.error);
}
/* prepare_for_offline should do this? */
/* of course it should all be atomic, but ... */
/* FIXME Not passing a GCancellable here. */
- camel_folder_sync (folder, FALSE, NULL, NULL);
+ camel_folder_synchronize_sync (folder, FALSE, NULL, NULL);
g_object_unref (folder);
}
}
@@ -2547,26 +2523,16 @@ set_offline_exec (struct _set_offline_msg *m)
return;
}
} else if (CAMEL_IS_OFFLINE_STORE (m->store)) {
- if (!m->offline) {
- camel_offline_store_set_network_state (
- CAMEL_OFFLINE_STORE (m->store),
- CAMEL_OFFLINE_STORE_NETWORK_AVAIL,
- m->base.cancellable,
- &m->base.error);
- return;
- } else {
- camel_offline_store_set_network_state (
- CAMEL_OFFLINE_STORE (m->store),
- CAMEL_OFFLINE_STORE_NETWORK_UNAVAIL,
- m->base.cancellable,
- &m->base.error);
- return;
- }
+ camel_offline_store_set_online_sync (
+ CAMEL_OFFLINE_STORE (m->store),
+ !m->offline, m->base.cancellable,
+ &m->base.error);
+ return;
}
if (m->offline)
- camel_service_disconnect (CAMEL_SERVICE (m->store),
- TRUE, &m->base.error);
+ camel_service_disconnect_sync (
+ CAMEL_SERVICE (m->store), TRUE, &m->base.error);
}
static void
@@ -2639,7 +2605,7 @@ prepare_offline_exec (struct _set_offline_msg *m)
CAMEL_DISCO_STORE (m->store),
m->base.cancellable, &m->base.error);
} else if (CAMEL_IS_OFFLINE_STORE (m->store)) {
- camel_offline_store_prepare_for_offline (
+ camel_offline_store_prepare_for_offline_sync (
CAMEL_OFFLINE_STORE (m->store),
m->base.cancellable, &m->base.error);
}
@@ -2722,12 +2688,10 @@ check_service_exec (struct _check_msg *m)
CamelService *service;
service = camel_session_get_service (session, m->url, m->type, &m->base.error);
- if (!service) {
- camel_operation_unregister ();
+ if (!service)
return;
- }
- m->authtypes = camel_service_query_auth_types (
+ m->authtypes = camel_service_query_auth_types_sync (
service, m->base.cancellable, &m->base.error);
g_object_unref (service);
}
diff --git a/mail/mail-ops.h b/mail/mail-ops.h
index 06b838849b..a0af5ff097 100644
--- a/mail/mail-ops.h
+++ b/mail/mail-ops.h
@@ -150,8 +150,7 @@ void mail_fetch_mail (const gchar *source,
void mail_filter_folder (CamelFolder *source_folder,
GPtrArray *uids,
const gchar *type,
- gboolean notify,
- CamelOperation *cancel);
+ gboolean notify);
/* convenience functions for above */
void mail_filter_on_demand (CamelFolder *folder, GPtrArray *uids);
diff --git a/mail/mail-send-recv.c b/mail/mail-send-recv.c
index 186fc9054f..3dcba97c71 100644
--- a/mail/mail-send-recv.c
+++ b/mail/mail-send-recv.c
@@ -911,8 +911,9 @@ refresh_folders_exec (struct _refresh_folders_msg *m)
m->base.cancellable, &local_error);
if (folder) {
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_sync (folder, FALSE, NULL, NULL);
- camel_folder_refresh_info (folder, NULL, NULL);
+ camel_folder_synchronize_sync (
+ folder, FALSE, NULL, NULL);
+ camel_folder_refresh_info_sync (folder, NULL, NULL);
g_object_unref (folder);
} else if (local_error != NULL) {
g_warning ("Failed to refresh folders: %s", local_error->message);
diff --git a/mail/mail-session.c b/mail/mail-session.c
index dbe886d69a..31b11ea260 100644
--- a/mail/mail-session.c
+++ b/mail/mail-session.c
@@ -636,8 +636,8 @@ static gpointer ms_thread_msg_new (CamelSession *session, CamelSessionThreadOps
MailMsg *m = mail_msg_new (&ms_thread_info_dummy);
msg->data = m;
- g_object_unref (msg->op);
- msg->op = g_object_ref (m->cancellable);
+ g_object_unref (msg->cancellable);
+ msg->cancellable = g_object_ref (m->cancellable);
}
return msg;
@@ -737,9 +737,9 @@ ms_forward_to (CamelSession *session,
/* make copy of the message, because we are going to modify it */
mem = camel_stream_mem_new ();
- camel_data_wrapper_write_to_stream ((CamelDataWrapper *)message, mem, NULL);
+ camel_data_wrapper_write_to_stream_sync ((CamelDataWrapper *)message, mem, NULL, NULL);
camel_seekable_stream_seek (CAMEL_SEEKABLE_STREAM (mem), 0, CAMEL_STREAM_SET, NULL);
- camel_data_wrapper_construct_from_stream ((CamelDataWrapper *)forward, mem, NULL);
+ camel_data_wrapper_construct_from_stream_sync ((CamelDataWrapper *)forward, mem, NULL, NULL);
g_object_unref (mem);
/* clear previous recipients */
diff --git a/mail/mail-tools.c b/mail/mail-tools.c
index 66ffdd207a..3804321740 100644
--- a/mail/mail-tools.c
+++ b/mail/mail-tools.c
@@ -55,7 +55,7 @@ mail_tool_get_inbox (const gchar *url,
if (!store)
return NULL;
- folder = camel_store_get_inbox (store, cancellable, error);
+ folder = camel_store_get_inbox_folder_sync (store, cancellable, error);
g_object_unref (store);
return folder;
@@ -96,7 +96,8 @@ mail_tool_get_trash (const gchar *url,
if (connect ||
(CAMEL_SERVICE (store)->status == CAMEL_SERVICE_CONNECTED ||
is_local_provider (store)))
- trash = camel_store_get_trash (store, cancellable, error);
+ trash = camel_store_get_trash_folder_sync (
+ store, cancellable, error);
else
trash = NULL;
@@ -351,13 +352,13 @@ mail_tool_uri_to_folder (const gchar *uri,
if (offset) {
if (offset == 7)
- folder = camel_store_get_trash (
+ folder = camel_store_get_trash_folder_sync (
store, cancellable, error);
else if (offset == 6)
- folder = camel_store_get_junk (
+ folder = camel_store_get_junk_folder_sync (
store, cancellable, error);
} else
- folder = camel_store_get_folder (
+ folder = camel_store_get_folder_sync (
store, name, flags, cancellable, error);
g_object_unref (store);
}
diff --git a/mail/mail-vfolder.c b/mail/mail-vfolder.c
index 221151c5ea..cb47af8efb 100644
--- a/mail/mail-vfolder.c
+++ b/mail/mail-vfolder.c
@@ -263,8 +263,7 @@ vfolder_adduri_exec (struct _adduri_msg *m)
while (l && !vfolder_shutdown) {
if (m->remove)
camel_vee_folder_remove_folder (
- CAMEL_VEE_FOLDER (l->data),
- folder, m->base.cancellable);
+ CAMEL_VEE_FOLDER (l->data), folder);
else
camel_vee_folder_add_folder ((CamelVeeFolder *)l->data, folder);
l = l->next;
@@ -834,7 +833,7 @@ rule_changed (EFilterRule *rule, CamelFolder *folder)
oldname = g_strdup (full_name);
/* FIXME Not passing a GCancellable or GError. */
- camel_store_rename_folder (
+ camel_store_rename_folder_sync (
vfolder_store, oldname, rule->name, NULL, NULL);
g_free (oldname);
}
@@ -869,7 +868,7 @@ context_rule_added (ERuleContext *ctx,
/* this always runs quickly */
/* FIXME Not passing a GCancellable or GError. */
- folder = camel_store_get_folder (
+ folder = camel_store_get_folder_sync (
vfolder_store, rule->name, 0, NULL, NULL);
if (folder) {
g_signal_connect(rule, "changed", G_CALLBACK(rule_changed), folder);
@@ -900,7 +899,8 @@ context_rule_removed (ERuleContext *ctx,
G_UNLOCK (vfolder);
/* FIXME Not passing a GCancellable or GError. */
- camel_store_delete_folder (vfolder_store, rule->name, NULL, NULL);
+ camel_store_delete_folder_sync (
+ vfolder_store, rule->name, NULL, NULL);
/* this must be unref'd after its deleted */
if (folder)
g_object_unref ((CamelFolder *) folder);
diff --git a/modules/calendar/e-cal-attachment-handler.c b/modules/calendar/e-cal-attachment-handler.c
index 26717d79b6..8fd2080769 100644
--- a/modules/calendar/e-cal-attachment-handler.c
+++ b/modules/calendar/e-cal-attachment-handler.c
@@ -80,7 +80,7 @@ attachment_handler_get_component (EAttachment *attachment)
stream = camel_stream_mem_new ();
camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (stream), buffer);
wrapper = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
- camel_data_wrapper_decode_to_stream (wrapper, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (wrapper, stream, NULL, NULL);
g_object_unref (stream);
component = e_cal_util_parse_ics_string ((gchar *) buffer->data);
diff --git a/modules/composer-autosave/e-autosave-utils.c b/modules/composer-autosave/e-autosave-utils.c
index ec0e322322..8dc9285884 100644
--- a/modules/composer-autosave/e-autosave-utils.c
+++ b/modules/composer-autosave/e-autosave-utils.c
@@ -140,8 +140,8 @@ load_snapshot_loaded_cb (GFile *snapshot_file,
* and feeding the parser a direct file stream would block. */
message = camel_mime_message_new ();
camel_stream = camel_stream_mem_new_with_buffer (contents, length);
- camel_data_wrapper_construct_from_stream (
- CAMEL_DATA_WRAPPER (message), camel_stream, &error);
+ camel_data_wrapper_construct_from_stream_sync (
+ CAMEL_DATA_WRAPPER (message), camel_stream, NULL, &error);
g_object_unref (camel_stream);
g_free (contents);
@@ -161,7 +161,7 @@ load_snapshot_loaded_cb (GFile *snapshot_file,
* the same file. */
shell = E_SHELL (object);
g_object_ref (snapshot_file);
- composer = e_msg_composer_new_with_message (shell, message);
+ composer = e_msg_composer_new_with_message (shell, message, NULL);
g_object_set_data_full (
G_OBJECT (composer),
SNAPSHOT_FILE_KEY, snapshot_file,
@@ -228,7 +228,8 @@ save_snapshot_replace_cb (GFile *snapshot_file,
/* Extract a MIME message from the composer. */
composer = E_MSG_COMPOSER (object);
- message = e_msg_composer_get_message_draft (composer, &error);
+ message = e_msg_composer_get_message_draft (
+ composer, context->cancellable, &error);
g_object_unref (object);
@@ -251,8 +252,8 @@ save_snapshot_replace_cb (GFile *snapshot_file,
camel_stream = camel_stream_mem_new ();
camel_stream_mem_set_byte_array (
CAMEL_STREAM_MEM (camel_stream), buffer);
- camel_data_wrapper_decode_to_stream (
- CAMEL_DATA_WRAPPER (message), camel_stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ CAMEL_DATA_WRAPPER (message), camel_stream, NULL, NULL);
g_object_unref (camel_stream);
g_object_unref (message);
diff --git a/modules/mail/e-mail-attachment-handler.c b/modules/mail/e-mail-attachment-handler.c
index 99d16e9a34..55ffc808fd 100644
--- a/modules/mail/e-mail-attachment-handler.c
+++ b/modules/mail/e-mail-attachment-handler.c
@@ -193,13 +193,14 @@ mail_attachment_handler_message_rfc822 (EAttachmentView *view,
length = gtk_selection_data_get_length (selection_data);
stream = camel_stream_mem_new ();
- camel_stream_write (stream, data, length, NULL);
+ camel_stream_write (stream, data, length, NULL, NULL);
camel_stream_reset (stream, NULL);
message = camel_mime_message_new ();
wrapper = CAMEL_DATA_WRAPPER (message);
- if (camel_data_wrapper_construct_from_stream (wrapper, stream, NULL) == -1)
+ if (!camel_data_wrapper_construct_from_stream_sync (
+ wrapper, stream, NULL, NULL))
goto exit;
store = e_attachment_view_get_store (view);
@@ -296,7 +297,7 @@ mail_attachment_handler_x_uid_list (EAttachmentView *view,
/* Handle one message. */
if (uids->len == 1) {
/* FIXME Not passing a GCancellable here. */
- message = camel_folder_get_message (
+ message = camel_folder_get_message_sync (
folder, uids->pdata[0], NULL, &local_error);
if (message == NULL)
goto exit;
@@ -321,7 +322,7 @@ mail_attachment_handler_x_uid_list (EAttachmentView *view,
for (ii = 0; ii < uids->len; ii++) {
/* FIXME Not passing a GCancellable here. */
- message = camel_folder_get_message (
+ message = camel_folder_get_message_sync (
folder, uids->pdata[ii], NULL, &local_error);
if (message == NULL) {
g_object_unref (multipart);
diff --git a/modules/mail/e-mail-shell-view.c b/modules/mail/e-mail-shell-view.c
index f6603446ea..b95153ed42 100644
--- a/modules/mail/e-mail-shell-view.c
+++ b/modules/mail/e-mail-shell-view.c
@@ -59,8 +59,6 @@ search_results_exec (SearchResultsMsg *msg)
{
GList *copied_list;
- camel_operation_register (msg->cancel);
-
copied_list = g_list_copy (msg->folder_list);
g_list_foreach (copied_list, (GFunc) g_object_ref, NULL);
diff --git a/plugins/audio-inline/audio-inline.c b/plugins/audio-inline/audio-inline.c
index 994e25b267..3aebff938e 100644
--- a/plugins/audio-inline/audio-inline.c
+++ b/plugins/audio-inline/audio-inline.c
@@ -210,8 +210,9 @@ org_gnome_audio_inline_play_clicked (GtkWidget *button, EMFormatHTMLPObject *pob
stream = camel_stream_fs_new_with_name (po->filename, O_RDWR | O_CREAT | O_TRUNC, 0600, NULL);
data = camel_medium_get_content (CAMEL_MEDIUM (po->part));
- camel_data_wrapper_decode_to_stream (data, stream, NULL);
- camel_stream_flush (stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ data, stream, NULL, NULL);
+ camel_stream_flush (stream, NULL, NULL);
g_object_unref (stream);
d(printf ("audio inline formatter: init gst playbin\n"));
diff --git a/plugins/bogo-junk-plugin/bf-junk-filter.c b/plugins/bogo-junk-plugin/bf-junk-filter.c
index c335f6d46f..ddaf200af2 100644
--- a/plugins/bogo-junk-plugin/bf-junk-filter.c
+++ b/plugins/bogo-junk-plugin/bf-junk-filter.c
@@ -71,7 +71,12 @@ gpointer em_junk_bf_validate_binary (EPlugin *ep, EMJunkTarget *target);
void em_junk_bf_report_junk (EPlugin *ep, EMJunkTarget *target);
void em_junk_bf_report_non_junk (EPlugin *ep, EMJunkTarget *target);
void em_junk_bf_commit_reports (EPlugin *ep, EMJunkTarget *target);
-static gint pipe_to_bogofilter (CamelMimeMessage *msg, const gchar **argv, GError **error);
+
+static gint
+pipe_to_bogofilter (CamelMimeMessage *msg,
+ const gchar **argv,
+ GCancellable *cancellable,
+ GError **error);
/* eplugin stuff */
gint e_plugin_lib_enable (EPlugin *ep, gint enable);
@@ -97,7 +102,8 @@ init_db (void)
camel_mime_parser_scan_from (parser, FALSE);
g_object_unref (stream);
- camel_mime_part_construct_from_parser ((CamelMimePart *) msg, parser, NULL);
+ camel_mime_part_construct_from_parser_sync (
+ (CamelMimePart *) msg, parser, NULL, NULL);
g_object_unref (parser);
d(fprintf (stderr, "Initing the bogofilter DB with Welcome message\n"));
@@ -106,13 +112,16 @@ init_db (void)
argv[2] = "--unicode=yes";
}
- pipe_to_bogofilter (msg, argv, NULL);
+ pipe_to_bogofilter (msg, argv, NULL, NULL);
g_object_unref (msg);
}
static gint
-pipe_to_bogofilter (CamelMimeMessage *msg, const gchar **argv, GError **error)
+pipe_to_bogofilter (CamelMimeMessage *msg,
+ const gchar **argv,
+ GCancellable *cancellable,
+ GError **error)
{
GPid child_pid;
gint bf_in;
@@ -164,10 +173,10 @@ retry:
}
stream = camel_stream_fs_new_with_fd (bf_in);
- camel_data_wrapper_write_to_stream (
- CAMEL_DATA_WRAPPER (msg), stream, NULL);
- camel_stream_flush (stream, NULL);
- camel_stream_close (stream, NULL);
+ camel_data_wrapper_write_to_stream_sync (
+ CAMEL_DATA_WRAPPER (msg), stream, cancellable, NULL);
+ camel_stream_flush (stream, cancellable, NULL);
+ camel_stream_close (stream, cancellable, NULL);
g_object_unref (stream);
#ifndef G_OS_WIN32
@@ -265,7 +274,7 @@ em_junk_bf_check_junk (EPlugin *ep, EMJunkTarget *target)
argv[1] = "--unicode=yes";
}
- rv = pipe_to_bogofilter (msg, argv, &target->error);
+ rv = pipe_to_bogofilter (msg, argv, NULL, &target->error);
d(fprintf (stderr, "em_junk_bf_check_junk rv = %d\n", rv));
@@ -293,7 +302,7 @@ em_junk_bf_report_junk (EPlugin *ep, EMJunkTarget *target)
argv[2] = "--unicode=yes";
}
- pipe_to_bogofilter (msg, argv, &target->error);
+ pipe_to_bogofilter (msg, argv, NULL, &target->error);
}
void
@@ -317,7 +326,7 @@ em_junk_bf_report_non_junk (EPlugin *ep, EMJunkTarget *target)
argv[2] = "--unicode=yes";
}
- pipe_to_bogofilter (msg, argv, &target->error);
+ pipe_to_bogofilter (msg, argv, NULL, &target->error);
}
void
diff --git a/plugins/dbx-import/dbx-importer.c b/plugins/dbx-import/dbx-importer.c
index fd3825762c..72b4e04c99 100644
--- a/plugins/dbx-import/dbx-importer.c
+++ b/plugins/dbx-import/dbx-importer.c
@@ -104,7 +104,7 @@ typedef struct {
gchar *status_what;
gint status_pc;
gint status_timeout_id;
- CamelOperation *status;
+ GCancellable *cancellable;
guint32 *indices;
guint32 index_count;
@@ -551,7 +551,7 @@ dbx_import_file (DbxImporter *m)
filename = g_filename_from_uri (((EImportTargetURI *)m->target)->uri_src, NULL, NULL);
m->parent_uri = g_strdup (((EImportTargetURI *)m->target)->uri_dest); /* Destination folder, was set in our widget */
- camel_operation_start (NULL, _("Importing '%s'"), filename);
+ camel_operation_push_message (NULL, _("Importing '%s'"), filename);
folder = mail_tool_uri_to_folder (
m->parent_uri, CAMEL_STORE_FOLDER_CREATE,
m->base.cancellable, &m->base.error);
@@ -592,7 +592,7 @@ dbx_import_file (DbxImporter *m)
gboolean success;
camel_operation_progress (NULL, 100 * i / m->index_count);
- camel_operation_progress (m->status, 100 * i / m->index_count);
+ camel_operation_progress (m->cancellable, 100 * i / m->index_count);
if (!dbx_read_email (m, m->indices[i], tmpfile, &dbx_flags)) {
d(printf("Cannot read email index %d at %x\n",
@@ -615,7 +615,8 @@ dbx_import_file (DbxImporter *m)
camel_mime_parser_init_with_fd (mp, tmpfile);
msg = camel_mime_message_new ();
- if (camel_mime_part_construct_from_parser ((CamelMimePart *)msg, mp, NULL) == -1) {
+ if (!camel_mime_part_construct_from_parser_sync (
+ (CamelMimePart *)msg, mp, NULL, NULL)) {
/* set exception? */
g_object_unref (msg);
g_object_unref (mp);
@@ -624,7 +625,7 @@ dbx_import_file (DbxImporter *m)
info = camel_message_info_new (NULL);
camel_message_info_set_flags (info, flags, ~0);
- success = camel_folder_append_message (
+ success = camel_folder_append_message_sync (
folder, msg, info, NULL,
m->base.cancellable, &m->base.error);
camel_message_info_free (info);
@@ -641,7 +642,7 @@ dbx_import_file (DbxImporter *m)
if (m->indices)
g_free (m->indices);
/* FIXME Not passing GCancellable or GError here. */
- camel_folder_sync (folder, FALSE, NULL, NULL);
+ camel_folder_synchronize_sync (folder, FALSE, NULL, NULL);
camel_folder_thaw (folder);
g_object_unref (folder);
if (missing && m->base.error == NULL) {
@@ -651,19 +652,13 @@ dbx_import_file (DbxImporter *m)
"bodies were not present in the DBX file",
m->index_count - missing, missing);
}
- camel_operation_end (NULL);
+ camel_operation_pop_message (NULL);
}
static void
dbx_import_import (DbxImporter *m)
{
- CamelOperation *oldcancel = NULL;
-
- oldcancel = camel_operation_register (m->status);
-
dbx_import_file (m);
-
- camel_operation_register (oldcancel);
}
static void
@@ -675,8 +670,6 @@ dbx_import_imported (DbxImporter *m)
static void
dbx_import_free (DbxImporter *m)
{
- g_object_unref (m->status);
-
g_free (m->status_what);
g_mutex_free (m->status_lock);
@@ -750,10 +743,10 @@ org_gnome_evolution_readdbx_import (EImport *ei, EImportTarget *target, EImportI
m->status_timeout_id = g_timeout_add (100, dbx_status_timeout, m);
/*m->status_timeout_id = NULL;*/
m->status_lock = g_mutex_new ();
- m->status = camel_operation_new ();
+ m->cancellable = (GCancellable *) camel_operation_new ();
g_signal_connect (
- m->status, "status",
+ m->cancellable, "status",
G_CALLBACK (dbx_status), m);
id = m->base.seq;
@@ -767,7 +760,7 @@ org_gnome_evolution_readdbx_cancel (EImport *ei, EImportTarget *target, EImportI
DbxImporter *m = g_datalist_get_data (&target->data, "dbx-msg");
if (m) {
- camel_operation_cancel (m->status);
+ g_cancellable_cancel (m->cancellable);
}
}
diff --git a/plugins/groupwise-features/install-shared.c b/plugins/groupwise-features/install-shared.c
index b753653229..92d5ae6aab 100644
--- a/plugins/groupwise-features/install-shared.c
+++ b/plugins/groupwise-features/install-shared.c
@@ -104,7 +104,8 @@ install_folder_response (EMFolderSelector *emfs, gint response, gpointer *data)
if (e_gw_connection_accept_shared_folder (cnc, folder_name, container_id, (gchar *)item_id, NULL) == E_GW_CONNECTION_STATUS_OK) {
/* FIXME Not passing a GCancellable or GError here. */
- folder = camel_store_get_folder (store, "Mailbox", 0, NULL, NULL);
+ folder = camel_store_get_folder_sync (
+ store, "Mailbox", 0, NULL, NULL);
/*changes = camel_folder_change_info_new ();
camel_folder_change_info_remove_uid (changes, (gchar *) item_id);
camel_folder_summary_remove_uid (folder->summary, item_id);*/
@@ -210,8 +211,8 @@ org_gnome_popup_wizard (EPlugin *ep, EMEventTargetMessage *target)
byte_array = g_byte_array_new ();
stream = camel_stream_mem_new_with_byte_array (byte_array);
- camel_data_wrapper_write_to_stream (dw, stream, NULL);
- camel_stream_write (stream, "", 1, NULL);
+ camel_data_wrapper_write_to_stream_sync (dw, stream, NULL, NULL);
+ camel_stream_write (stream, "", 1, NULL, NULL);
from_addr = camel_mime_message_get_from ((CamelMimeMessage *)target->message);
if (from_addr && camel_internet_address_get (from_addr, 0, &name, &email)) {
diff --git a/plugins/groupwise-features/proxy.c b/plugins/groupwise-features/proxy.c
index 5a01a6c281..beb1c94b30 100644
--- a/plugins/groupwise-features/proxy.c
+++ b/plugins/groupwise-features/proxy.c
@@ -664,7 +664,7 @@ org_gnome_proxy (EPlugin *epl, EConfigHookItemFactoryData *data)
priv->builder_tab = gtk_builder_new ();
e_load_ui_builder_definition (priv->builder_tab, "proxy-listing.ui");
- if (account->enabled && (store->state == CAMEL_OFFLINE_STORE_NETWORK_AVAIL)) {
+ if (account->enabled && camel_offline_store_get_online (store)) {
priv->tab_dialog = GTK_WIDGET (e_builder_get_widget (priv->builder_tab, "proxy_vbox"));
priv->tree = GTK_TREE_VIEW (e_builder_get_widget (priv->builder_tab, "proxy_access_list"));
priv->store = gtk_tree_store_new (2,
diff --git a/plugins/groupwise-features/share-folder-common.c b/plugins/groupwise-features/share-folder-common.c
index 9a345f1ba6..e4d8dc30c7 100644
--- a/plugins/groupwise-features/share-folder-common.c
+++ b/plugins/groupwise-features/share-folder-common.c
@@ -142,12 +142,12 @@ create_folder_exec (struct _EMCreateFolder *m)
{
d(printf ("creating folder parent='%s' name='%s' full_name='%s'\n", m->parent, m->name, m->full_name));
- if ((m->fi = camel_store_create_folder (
+ if ((m->fi = camel_store_create_folder_sync (
m->store, m->parent, m->name,
m->base.cancellable, &m->base.error))) {
if (camel_store_supports_subscriptions (m->store))
- camel_store_subscribe_folder (
+ camel_store_subscribe_folder_sync (
m->store, m->full_name,
m->base.cancellable, &m->base.error);
}
diff --git a/plugins/groupwise-features/status-track.c b/plugins/groupwise-features/status-track.c
index 61c1ac25f0..f964c643ee 100644
--- a/plugins/groupwise-features/status-track.c
+++ b/plugins/groupwise-features/status-track.c
@@ -74,7 +74,7 @@ get_selected_message (EShellView *shell_view,
*selected_uid = g_strdup (g_ptr_array_index (uids, 0));
/* FIXME Not passing a GCancellable or GError here. */
- msg = camel_folder_get_message (
+ msg = camel_folder_get_message_sync (
*folder, *selected_uid, NULL, NULL);
}
diff --git a/plugins/image-inline/image-inline.c b/plugins/image-inline/image-inline.c
index 41b4a898dd..994726d47b 100644
--- a/plugins/image-inline/image-inline.c
+++ b/plugins/image-inline/image-inline.c
@@ -361,7 +361,8 @@ org_gnome_image_inline_decode (ImageInlinePObject *image_object)
/* Stream takes ownership of the byte array. */
stream = camel_stream_mem_new_with_byte_array (array);
data_wrapper = camel_medium_get_content (medium);
- camel_data_wrapper_decode_to_stream (data_wrapper, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ data_wrapper, stream, NULL, NULL);
/* Don't trust the content type in the MIME part. It could
* be lying or it could be "application/octet-stream". Let
diff --git a/plugins/itip-formatter/itip-formatter.c b/plugins/itip-formatter/itip-formatter.c
index 15fdf6f9e1..db2b5d0c85 100644
--- a/plugins/itip-formatter/itip-formatter.c
+++ b/plugins/itip-formatter/itip-formatter.c
@@ -2574,7 +2574,7 @@ format_itip (EPlugin *ep, EMFormatHookTarget *target)
byte_array = g_byte_array_new ();
stream = camel_stream_mem_new_with_byte_array (byte_array);
- camel_data_wrapper_decode_to_stream (content, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (content, stream, NULL, NULL);
if (byte_array->len == 0)
puri->vcalendar = NULL;
@@ -2761,6 +2761,6 @@ itip_attachment_frame (EMFormat *emf,
emf, stream, info->puri.part,
info->handle, cancellable, FALSE);
- camel_stream_close (stream, NULL);
+ camel_stream_close (stream, cancellable, NULL);
}
diff --git a/plugins/mail-to-task/mail-to-task.c b/plugins/mail-to-task/mail-to-task.c
index 88d9d09e3a..38c49c895d 100644
--- a/plugins/mail-to-task/mail-to-task.c
+++ b/plugins/mail-to-task/mail-to-task.c
@@ -203,7 +203,7 @@ set_description (ECalComponent *comp, CamelMimeMessage *message)
byte_array = g_byte_array_new ();
stream = camel_stream_mem_new_with_byte_array (byte_array);
- camel_data_wrapper_decode_to_stream (content, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (content, stream, NULL, NULL);
str = g_strndup ((gchar *) byte_array->data, byte_array->len);
g_object_unref (stream);
@@ -781,7 +781,7 @@ do_mail_to_event (AsyncData *data)
/* retrieve the message from the CamelFolder */
/* FIXME Not passing a GCancellable or GError. */
- message = camel_folder_get_message (
+ message = camel_folder_get_message_sync (
folder, g_ptr_array_index (uids, i),
NULL, NULL);
if (!message) {
diff --git a/plugins/mark-all-read/mark-all-read.c b/plugins/mark-all-read/mark-all-read.c
index 10d0eae5e9..ffbbbccb2e 100644
--- a/plugins/mark-all-read/mark-all-read.c
+++ b/plugins/mark-all-read/mark-all-read.c
@@ -360,7 +360,7 @@ mar_all_sub_folders (CamelStore *store,
return FALSE;
}
- folder = camel_store_get_folder (
+ folder = camel_store_get_folder_sync (
store, fi->full_name, 0, cancellable, error);
if (folder == NULL)
return FALSE;
@@ -392,7 +392,7 @@ mar_got_folder (gchar *folder_uri,
parent_store = camel_folder_get_parent_store (folder);
/* FIXME Not passing a GCancellable or GError here. */
- folder_info = camel_store_get_folder_info (
+ folder_info = camel_store_get_folder_info_sync (
parent_store, full_name,
CAMEL_STORE_FOLDER_INFO_RECURSIVE |
CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
diff --git a/plugins/prefer-plain/prefer-plain.c b/plugins/prefer-plain/prefer-plain.c
index f82a217f9a..9fce56d65c 100644
--- a/plugins/prefer-plain/prefer-plain.c
+++ b/plugins/prefer-plain/prefer-plain.c
@@ -175,7 +175,7 @@ org_gnome_prefer_plain_multipart_alternative (gpointer ep, EMFormatHookTarget *t
}
return;
} else if (!CAMEL_IS_MULTIPART (mp)) {
- em_format_format_source (t->format, t->stream, t->part);
+ em_format_format_source (t->format, t->stream, t->part, NULL);
return;
}
diff --git a/plugins/pst-import/pst-importer.c b/plugins/pst-import/pst-importer.c
index 7bd0138618..e320445130 100644
--- a/plugins/pst-import/pst-importer.c
+++ b/plugins/pst-import/pst-importer.c
@@ -115,11 +115,11 @@ struct _PstImporter {
gchar *status_what;
gint status_pc;
gint status_timeout_id;
- CamelOperation *status;
+ GCancellable *status;
pst_file pst;
- CamelOperation *cancel;
+ GCancellable *cancellable;
CamelFolder *folder;
gchar *parent_uri;
gchar *folder_name;
@@ -381,10 +381,6 @@ open_ecal (ECalSourceType type, const gchar *name)
static void
pst_import_import (PstImporter *m)
{
- CamelOperation *oldcancel = NULL;
-
- oldcancel = camel_operation_register (m->status);
-
if (GPOINTER_TO_INT (g_datalist_get_data (&m->target->data, "pst-do-addr"))) {
/* Hack - grab the first address book we can find
TODO - add a selection mechanism in get_widget */
@@ -437,7 +433,6 @@ pst_import_import (PstImporter *m)
g_object_unref (m->journal);
}
*/
- camel_operation_register (oldcancel);
}
static void
@@ -451,7 +446,7 @@ pst_import_file (PstImporter *m)
filename = g_filename_from_uri (((EImportTargetURI *)m->target)->uri_src, NULL, NULL);
m->parent_uri = g_strdup (((EImportTargetURI *)m->target)->uri_dest); /* Destination folder, was set in our widget */
- camel_operation_start (NULL, _("Importing '%s'"), filename);
+ camel_operation_push_message (NULL, _("Importing '%s'"), filename);
if (GPOINTER_TO_INT (g_datalist_get_data (&m->target->data, "pst-do-mail"))) {
mail_tool_uri_to_folder (
@@ -463,7 +458,7 @@ pst_import_file (PstImporter *m)
if (ret < 0) {
g_free (filename);
- camel_operation_end (NULL);
+ camel_operation_pop_message (NULL);
return;
}
@@ -488,7 +483,7 @@ pst_import_file (PstImporter *m)
camel_operation_progress (NULL, 4);
- camel_operation_end (NULL);
+ camel_operation_pop_message (NULL);
pst_freeItem (item);
@@ -559,7 +554,8 @@ pst_process_item (PstImporter *m, pst_desc_tree *d_ptr)
if (item->folder != NULL) {
pst_process_folder (m, item);
- camel_operation_start (NULL, _("Importing '%s'"), item->file_as.str);
+ camel_operation_push_message (
+ NULL, _("Importing '%s'"), item->file_as.str);
} else {
if (m->folder_count && (m->current_item < m->folder_count)) {
camel_operation_progress (NULL, (m->current_item * 100) / m->folder_count);
@@ -605,7 +601,7 @@ pst_process_item (PstImporter *m, pst_desc_tree *d_ptr)
pst_freeItem (item);
if (d_ptr->next == NULL) {
- camel_operation_end (NULL);
+ camel_operation_pop_message (NULL);
}
}
@@ -829,7 +825,7 @@ pst_process_email (PstImporter *m, pst_item *item)
/*g_message (" Email headers... %s...", item->email->header);*/
stream = camel_stream_mem_new_with_buffer (item->email->header.str, strlen (item->email->header.str));
- if (camel_data_wrapper_construct_from_stream ((CamelDataWrapper *)msg, stream, NULL) == -1)
+ if (!camel_data_wrapper_construct_from_stream_sync ((CamelDataWrapper *)msg, stream, NULL, NULL))
g_warning ("Error reading headers, skipped");
} else {
@@ -924,13 +920,13 @@ pst_process_email (PstImporter *m, pst_item *item)
camel_message_info_set_flags (info, CAMEL_MESSAGE_DRAFT, ~0);
/* FIXME Not passing a GCancellable or GError here. */
- success = camel_folder_append_message (
+ success = camel_folder_append_message_sync (
m->folder, msg, info, NULL, NULL, NULL);
camel_message_info_free (info);
g_object_unref (msg);
/* FIXME Not passing a GCancellable or GError here. */
- camel_folder_sync (m->folder, FALSE, NULL, NULL);
+ camel_folder_synchronize_sync (m->folder, FALSE, NULL, NULL);
camel_folder_thaw (m->folder);
if (!success) {
@@ -1249,8 +1245,8 @@ set_cal_attachments (ECal *cal, ECalComponent *ec, PstImporter *m, pst_item_atta
content = camel_medium_get_content (CAMEL_MEDIUM (part));
- if (camel_data_wrapper_decode_to_stream (content, stream, NULL) == -1
- || camel_stream_flush (stream, NULL) == -1)
+ if (camel_data_wrapper_decode_to_stream_sync (content, stream, NULL, NULL) == -1
+ || camel_stream_flush (stream, NULL, NULL) == -1)
{
g_warning ("Could not write attachment to %s: %s", path, g_strerror (errno));
g_object_unref (stream);
@@ -1628,7 +1624,7 @@ pst_import (EImport *ei, EImportTarget *target)
m->status_timeout_id = g_timeout_add (100, pst_status_timeout, m);
/*m->status_timeout_id = NULL;*/
m->status_lock = g_mutex_new ();
- m->status = camel_operation_new ();
+ m->status = (GCancellable *) camel_operation_new ();
g_signal_connect (
m->status, "status",
@@ -1662,7 +1658,7 @@ org_credativ_evolution_readpst_cancel (EImport *ei, EImportTarget *target, EImpo
PstImporter *m = g_datalist_get_data (&target->data, "pst-msg");
if (m) {
- camel_operation_cancel (m->status);
+ g_cancellable_cancel (m->status);
}
}
diff --git a/plugins/sa-junk-plugin/em-junk-filter.c b/plugins/sa-junk-plugin/em-junk-filter.c
index 277350e5de..260fe935a6 100644
--- a/plugins/sa-junk-plugin/em-junk-filter.c
+++ b/plugins/sa-junk-plugin/em-junk-filter.c
@@ -98,7 +98,14 @@ gchar *em_junk_sa_spamc_gconf_binary = NULL;
gchar *em_junk_sa_spamd_gconf_binary = NULL;
static gint
-pipe_to_sa_full (CamelMimeMessage *msg, const gchar *in, const gchar **argv, gint rv_err, gint wait_for_termination, GByteArray *output_buffer, GError **error)
+pipe_to_sa_full (CamelMimeMessage *msg,
+ const gchar *in,
+ const gchar **argv,
+ gint rv_err,
+ gint wait_for_termination,
+ GByteArray *output_buffer,
+ GCancellable *cancellable,
+ GError **error)
{
gint result, status, errnosav, fds[2], out_fds[2];
CamelStream *stream;
@@ -186,25 +193,27 @@ pipe_to_sa_full (CamelMimeMessage *msg, const gchar *in, const gchar **argv, gin
if (msg) {
stream = camel_stream_fs_new_with_fd (fds[1]);
- camel_data_wrapper_write_to_stream (
- CAMEL_DATA_WRAPPER (msg), stream, NULL);
- camel_stream_flush (stream, NULL);
- camel_stream_close (stream, NULL);
+ camel_data_wrapper_write_to_stream_sync (
+ CAMEL_DATA_WRAPPER (msg), stream, cancellable, NULL);
+ camel_stream_flush (stream, cancellable, NULL);
+ camel_stream_close (stream, cancellable, NULL);
g_object_unref (stream);
} else if (in) {
- camel_write (fds[1], in, strlen (in), NULL);
+ camel_write (fds[1], in, strlen (in), cancellable, NULL);
close (fds[1]);
}
if (output_buffer) {
- CamelStreamMem *memstream;
+ CamelStream *memstream;
stream = camel_stream_fs_new_with_fd (out_fds[0]);
- memstream = (CamelStreamMem *) camel_stream_mem_new ();
- camel_stream_mem_set_byte_array (memstream, output_buffer);
+ memstream = camel_stream_mem_new ();
+ camel_stream_mem_set_byte_array (
+ CAMEL_STREAM_MEM (memstream), output_buffer);
- camel_stream_write_to_stream (stream, (CamelStream *) memstream, NULL);
+ camel_stream_write_to_stream (
+ stream, memstream, cancellable, NULL);
g_object_unref (stream);
g_byte_array_append (output_buffer, (guchar *)"", 1);
@@ -248,9 +257,13 @@ pipe_to_sa_full (CamelMimeMessage *msg, const gchar *in, const gchar **argv, gin
}
static gint
-pipe_to_sa (CamelMimeMessage *msg, const gchar *in, const gchar **argv, GError **error)
+pipe_to_sa (CamelMimeMessage *msg,
+ const gchar *in,
+ const gchar **argv,
+ GCancellable *cancellable,
+ GError **error)
{
- return pipe_to_sa_full (msg, in, argv, -1, 1, NULL, error);
+ return pipe_to_sa_full (msg, in, argv, -1, 1, NULL, cancellable, error);
}
static gchar *
@@ -283,7 +296,7 @@ em_junk_sa_test_spamd_running (const gchar *binary, gboolean system)
argv[i] = NULL;
- rv = pipe_to_sa (NULL, "From test@127.0.0.1", argv, NULL) == 0;
+ rv = pipe_to_sa (NULL, "From test@127.0.0.1", argv, NULL, NULL) == 0;
d(fprintf (stderr, "result: %d (%s)\n", rv, rv ? "success" : "failed"));
@@ -307,7 +320,7 @@ em_junk_sa_test_allow_tell (void)
NULL
};
- no_allow_tell = pipe_to_sa (NULL, "\n" , argv, NULL);
+ no_allow_tell = pipe_to_sa (NULL, "\n" , argv, NULL, NULL);
em_junk_sa_allow_tell_tested = TRUE;
}
@@ -320,7 +333,7 @@ em_junk_sa_test_spamassassin (void)
NULL,
};
- if (pipe_to_sa (NULL, NULL, argv, NULL) != 0)
+ if (pipe_to_sa (NULL, NULL, argv, NULL, NULL) != 0)
em_junk_sa_available = FALSE;
else
em_junk_sa_available = TRUE;
@@ -358,7 +371,7 @@ em_junk_sa_run_spamd (const gchar *binary)
d(fprintf (stderr, "trying to run %s with socket path %s\n", binary, em_junk_sa_get_socket_path ()));
- if (!pipe_to_sa_full (NULL, NULL, argv, -1, 0, NULL, NULL)) {
+ if (!pipe_to_sa_full (NULL, NULL, argv, -1, 0, NULL, NULL, NULL)) {
struct timespec time_req;
struct stat stat_buf;
@@ -448,7 +461,7 @@ em_junk_sa_test_spamd (void)
argv [i++] = "ps ax|grep -v grep|grep -E 'spamd.*(\\-L|\\-\\-local)'|grep -E -v '\\ \\-p\\ |\\ \\-\\-port\\ '";
argv[i] = NULL;
- if (pipe_to_sa (NULL, NULL, argv, NULL) != 0) {
+ if (pipe_to_sa (NULL, NULL, argv, NULL, NULL) != 0) {
try_system_spamd = FALSE;
d(fprintf (stderr, "there's no system spamd with -L/--local parameter running\n"));
}
@@ -612,7 +625,7 @@ em_junk_sa_check_junk (EPlugin *ep, EMJunkTarget *target)
argv[i] = NULL;
- rv = pipe_to_sa_full (msg, NULL, argv, 0, 1, out, &target->error) != 0;
+ rv = pipe_to_sa_full (msg, NULL, argv, 0, 1, out, NULL, &target->error) != 0;
if (!rv && out && out->data && !strcmp ((const gchar *)out->data, "0/0\n")) {
/* an error occurred */
@@ -624,7 +637,7 @@ em_junk_sa_check_junk (EPlugin *ep, EMJunkTarget *target)
argv[socket_i] = to_free = g_strdup (em_junk_sa_get_socket_path ());
G_UNLOCK (socket_path);
- rv = pipe_to_sa_full (msg, NULL, argv, 0, 1, out, &target->error) != 0;
+ rv = pipe_to_sa_full (msg, NULL, argv, 0, 1, out, NULL, &target->error) != 0;
} else if (!em_junk_sa_use_spamc)
/* in case respawning were too fast we fallback to spamassassin */
rv = em_junk_sa_check_junk (ep, target);
@@ -655,7 +668,7 @@ get_spamassassin_version ()
if (!em_junk_sa_checked_spamassassin_version) {
out = g_byte_array_new ();
- if (pipe_to_sa_full (NULL, NULL, argv, -1, 1, out, NULL) != 0) {
+ if (pipe_to_sa_full (NULL, NULL, argv, -1, 1, out, NULL, NULL) != 0) {
if (out)
g_byte_array_free (out, TRUE);
return em_junk_sa_spamassassin_version;
@@ -716,7 +729,7 @@ em_junk_sa_report_junk (EPlugin *ep, EMJunkTarget *target)
G_LOCK (report);
pipe_to_sa (msg, NULL,
(no_allow_tell ? argv : argv2),
- &target->error);
+ NULL, &target->error);
G_UNLOCK (report);
}
}
@@ -756,7 +769,7 @@ em_junk_sa_report_non_junk (EPlugin *ep, EMJunkTarget *target)
G_LOCK (report);
pipe_to_sa (msg, NULL,
(no_allow_tell ? argv : argv2),
- &target->error);
+ NULL, &target->error);
G_UNLOCK (report);
}
}
@@ -784,7 +797,7 @@ em_junk_sa_commit_reports (EPlugin *ep)
argv[2] = "--local";
G_LOCK (report);
- pipe_to_sa (NULL, NULL, argv, NULL);
+ pipe_to_sa (NULL, NULL, argv, NULL, NULL);
G_UNLOCK (report);
}
}
diff --git a/plugins/templates/templates.c b/plugins/templates/templates.c
index 83dd985402..7f62240370 100644
--- a/plugins/templates/templates.c
+++ b/plugins/templates/templates.c
@@ -488,10 +488,11 @@ create_new_message (CamelFolder *folder, const gchar *uid, CamelMimeMessage *mes
/* make the exact copy of the template message, with all
its attachments and message structure */
mem = camel_stream_mem_new ();
- camel_data_wrapper_write_to_stream (
- CAMEL_DATA_WRAPPER (template), mem, NULL);
+ camel_data_wrapper_write_to_stream_sync (
+ CAMEL_DATA_WRAPPER (template), mem, NULL, NULL);
camel_stream_reset (mem, NULL);
- camel_data_wrapper_construct_from_stream (CAMEL_DATA_WRAPPER (new), mem, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ CAMEL_DATA_WRAPPER (new), mem, NULL, NULL);
g_object_unref (mem);
/* Add the headers from the message we are replying to, so CC and that
@@ -566,7 +567,7 @@ build_template_menus_recurse (GtkUIManager *ui_manager,
guint ii;
/* FIXME Not passing a GCancellable or GError here. */
- folder = camel_store_get_folder (
+ folder = camel_store_get_folder_sync (
store, folder_info->full_name, 0, NULL, NULL);
folder_name = camel_folder_get_name (folder);
@@ -614,7 +615,7 @@ build_template_menus_recurse (GtkUIManager *ui_manager,
continue;
/* FIXME Not passing a GCancellable or GError here. */
- template = camel_folder_get_message (
+ template = camel_folder_get_message_sync (
folder, uid, NULL, NULL);
g_object_ref (template);
@@ -679,7 +680,7 @@ action_template_cb (GtkAction *action,
/* Get the templates folder and all UIDs of the messages there. */
folder = e_mail_local_get_folder (E_MAIL_FOLDER_TEMPLATES);
- msg = e_msg_composer_get_message_draft (composer, &error);
+ msg = e_msg_composer_get_message_draft (composer, NULL, &error);
/* Ignore cancellations. */
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
@@ -768,7 +769,7 @@ update_actions_cb (EShellView *shell_view)
full_name = camel_folder_get_full_name (templates_folder);
/* FIXME Not passing a GCancellable or GError here. */
- folder_info = camel_store_get_folder_info (
+ folder_info = camel_store_get_folder_info_sync (
store, full_name,
CAMEL_STORE_FOLDER_INFO_RECURSIVE |
CAMEL_STORE_FOLDER_INFO_FAST, NULL, NULL);
diff --git a/plugins/tnef-attachments/tnef-plugin.c b/plugins/tnef-attachments/tnef-plugin.c
index 648c48a856..9828b60e7d 100644
--- a/plugins/tnef-attachments/tnef-plugin.c
+++ b/plugins/tnef-attachments/tnef-plugin.c
@@ -92,8 +92,8 @@ org_gnome_format_tnef (gpointer ep, EMFormatHookTarget *t)
content = camel_medium_get_content ((CamelMedium *)t->part);
if (content == NULL)
goto fail;
- if (camel_data_wrapper_decode_to_stream (content, out, NULL) == -1
- || camel_stream_close (out, NULL) == -1) {
+ if (camel_data_wrapper_decode_to_stream_sync (content, out, NULL, NULL) == -1
+ || camel_stream_close (out, NULL, NULL) == -1) {
g_object_unref (out);
goto fail;
}
@@ -138,7 +138,8 @@ org_gnome_format_tnef (gpointer ep, EMFormatHookTarget *t)
stream = camel_stream_fs_new_with_name (path, O_RDONLY, 0, NULL);
content = camel_data_wrapper_new ();
- camel_data_wrapper_construct_from_stream (content, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ content, stream, NULL, NULL);
g_object_unref (stream);
part = camel_mime_part_new ();
diff --git a/plugins/vcard-inline/vcard-inline.c b/plugins/vcard-inline/vcard-inline.c
index bf27e641c7..5891344d22 100644
--- a/plugins/vcard-inline/vcard-inline.c
+++ b/plugins/vcard-inline/vcard-inline.c
@@ -105,7 +105,8 @@ org_gnome_vcard_inline_decode (VCardInlinePObject *vcard_object,
/* Stream takes ownership of the byte array. */
stream = camel_stream_mem_new_with_byte_array (array);
data_wrapper = camel_medium_get_content (medium);
- camel_data_wrapper_decode_to_stream (data_wrapper, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ data_wrapper, stream, NULL, NULL);
/* because the result is not NULL-terminated */
g_byte_array_append (array, padding, 2);
diff --git a/widgets/misc/e-attachment.c b/widgets/misc/e-attachment.c
index 468e164418..0a3bfabb05 100644
--- a/widgets/misc/e-attachment.c
+++ b/widgets/misc/e-attachment.c
@@ -1055,8 +1055,8 @@ e_attachment_add_to_multipart (EAttachment *attachment,
camel_stream_filter_add (
CAMEL_STREAM_FILTER (filtered_stream),
CAMEL_MIME_FILTER (filter));
- camel_data_wrapper_decode_to_stream (
- wrapper, filtered_stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (
+ wrapper, filtered_stream, NULL, NULL);
g_object_unref (filtered_stream);
g_object_unref (stream);
@@ -1539,9 +1539,10 @@ attachment_load_finish (LoadContext *load_context)
size = g_memory_output_stream_get_data_size (output_stream);
stream = camel_stream_mem_new_with_buffer (data, size);
- camel_data_wrapper_construct_from_stream (wrapper, stream, NULL);
+ camel_data_wrapper_construct_from_stream_sync (
+ wrapper, stream, NULL, NULL);
camel_data_wrapper_set_mime_type (wrapper, mime_type);
- camel_stream_close (stream, NULL);
+ camel_stream_close (stream, NULL, NULL);
g_object_unref (stream);
mime_part = camel_mime_part_new ();
@@ -2477,7 +2478,7 @@ attachment_save_got_output_stream (SaveContext *save_context)
stream = camel_stream_mem_new ();
camel_stream_mem_set_byte_array (CAMEL_STREAM_MEM (stream), buffer);
wrapper = camel_medium_get_content (CAMEL_MEDIUM (mime_part));
- camel_data_wrapper_decode_to_stream (wrapper, stream, NULL);
+ camel_data_wrapper_decode_to_stream_sync (wrapper, stream, NULL, NULL);
g_object_unref (stream);
/* Load the buffer into a GMemoryInputStream.