aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-filter-driver.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/camel-filter-driver.c')
-rw-r--r--camel/camel-filter-driver.c33
1 files changed, 24 insertions, 9 deletions
diff --git a/camel/camel-filter-driver.c b/camel/camel-filter-driver.c
index 261f727610..3fa703848b 100644
--- a/camel/camel-filter-driver.c
+++ b/camel/camel-filter-driver.c
@@ -371,9 +371,14 @@ do_copy (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriv
break;
p->copied = TRUE;
- if (p->uid && p->source && camel_folder_has_summary_capability (p->source))
- camel_folder_copy_message_to (p->source, p->uid, outbox, p->ex);
- else
+ if (p->uid && p->source && camel_folder_has_summary_capability (p->source)) {
+ GPtrArray *uids;
+
+ uids = g_ptr_array_new ();
+ g_ptr_array_add (uids, (char *) p->uid);
+ camel_folder_copy_messages_to (p->source, uids, outbox, p->ex);
+ g_ptr_array_free (uids, TRUE);
+ } else
camel_folder_append_message (outbox, p->message, p->info, p->ex);
service_url = camel_service_get_url (CAMEL_SERVICE (camel_folder_get_parent_store (outbox)));
@@ -408,9 +413,14 @@ do_move (struct _ESExp *f, int argc, struct _ESExpResult **argv, CamelFilterDriv
p->copied = TRUE;
p->deleted = TRUE; /* a 'move' is a copy & delete */
- if (p->uid && p->source && camel_folder_has_summary_capability (p->source))
- camel_folder_copy_message_to (p->source, p->uid, outbox, p->ex);
- else
+ if (p->uid && p->source && camel_folder_has_summary_capability (p->source)) {
+ GPtrArray *uids;
+
+ uids = g_ptr_array_new ();
+ g_ptr_array_add (uids, (char *) p->uid);
+ camel_folder_copy_messages_to (p->source, uids, outbox, p->ex);
+ g_ptr_array_free (uids, TRUE);
+ } else
camel_folder_append_message (outbox, p->message, p->info, p->ex);
service_url = camel_service_get_url (CAMEL_SERVICE (camel_folder_get_parent_store (outbox)));
@@ -871,9 +881,14 @@ camel_filter_driver_filter_message (CamelFilterDriver *driver, CamelMimeMessage
/* copy it to the default inbox */
filtered = TRUE;
camel_filter_driver_log (driver, FILTER_LOG_ACTION, "Copy to default folder");
- if (p->uid && p->source && camel_folder_has_summary_capability (p->source))
- camel_folder_copy_message_to (p->source, p->uid, p->defaultfolder, p->ex);
- else
+ if (p->uid && p->source && camel_folder_has_summary_capability (p->source)) {
+ GPtrArray *uids;
+
+ uids = g_ptr_array_new ();
+ g_ptr_array_add (uids, (char *) p->uid);
+ camel_folder_copy_messages_to (p->source, uids, p->defaultfolder, p->ex);
+ g_ptr_array_free (uids, TRUE);
+ } else
camel_folder_append_message (p->defaultfolder, p->message, p->info, p->ex);
}