diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index 84ae6c1..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-evolution-2.12.1.tar.bz2
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ab70577
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+evolution-2.12.3.tar.bz2
diff --git a/Makefile b/Makefile
deleted file mode 100644
index dd23cb0..0000000
--- a/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Makefile for source rpm: evolution
-# $Id: Makefile,v 1.1 2004/09/09 04:34:33 cvsdist Exp $
-NAME := evolution
-SPECFILE = $(firstword $(wildcard *.spec))
-
-define find-makefile-common
-for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
-endef
-
-MAKEFILE_COMMON := $(shell $(find-makefile-common))
-
-ifeq ($(MAKEFILE_COMMON),)
-# attempt a checkout
-define checkout-makefile-common
-test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
-endef
-
-MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
-endif
-
-include $(MAKEFILE_COMMON)
diff --git a/evolution-2.10.0-e-source-combo-box.patch b/evolution-2.10.0-e-source-combo-box.patch
index 7fb6689..0e8c2da 100644
--- a/evolution-2.10.0-e-source-combo-box.patch
+++ b/evolution-2.10.0-e-source-combo-box.patch
@@ -255,15 +255,6 @@ diff -up evolution-2.12.0/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.12.
int
e_plugin_lib_enable (EPluginLib *ep, int enable)
{
-@@ -266,8 +305,6 @@ bbdb_open_addressbook (int type)
- char *uri;
- EBook *book = NULL;
-
-- gboolean enable;
--
- gboolean status;
- GError *error = NULL;
-
@@ -345,8 +382,23 @@ enable_toggled_cb (GtkWidget *widget, gp
gtk_widget_set_sensitive (stuff->option_menu, active);
diff --git a/evolution-2.10.3-server-message-double-free.patch b/evolution-2.10.3-server-message-double-free.patch
new file mode 100644
index 0000000..8c4316c
--- /dev/null
+++ b/evolution-2.10.3-server-message-double-free.patch
@@ -0,0 +1,15 @@
+diff -up evolution-2.10.3/mail/mail-session.c.server-message-double-free evolution-2.10.3/mail/mail-session.c
+--- evolution-2.10.3/mail/mail-session.c.server-message-double-free 2008-03-25 10:01:13.000000000 -0400
++++ evolution-2.10.3/mail/mail-session.c 2008-03-25 10:01:25.000000000 -0400
+@@ -389,10 +389,8 @@ alert_user(CamelSession *session, CamelS
+ mail_msg_unref (m);
+ }
+
+- if (m->ismain) {
+- user_message_free (m);
++ if (m->ismain)
+ mail_msg_unref (m);
+- }
+
+ return result;
+ }
diff --git a/evolution-2.12.1-source-changed-event.patch b/evolution-2.12.1-source-changed-event.patch
new file mode 100644
index 0000000..57195f7
--- /dev/null
+++ b/evolution-2.12.1-source-changed-event.patch
@@ -0,0 +1,12 @@
+diff -up evolution-2.12.1/calendar/gui/dialogs/task-page.c.source-changed-event evolution-2.12.1/calendar/gui/dialogs/task-page.c
+--- evolution-2.12.1/calendar/gui/dialogs/task-page.c.source-changed-event 2007-11-16 19:07:11.000000000 +0100
++++ evolution-2.12.1/calendar/gui/dialogs/task-page.c 2007-11-16 19:08:06.000000000 +0100
+@@ -1837,7 +1837,7 @@ init_widgets (TaskPage *tpage)
+ G_CALLBACK (categories_clicked_cb), tpage);
+
+ /* Source selector */
+- g_signal_connect((priv->source_selector), "source_changed",
++ g_signal_connect((priv->source_selector), "changed",
+ G_CALLBACK (source_changed_cb), tpage);
+
+ /* Connect the default signal handler to use to make sure the "changed"
diff --git a/evolution-2.12.3-CVE-2008-0072.patch b/evolution-2.12.3-CVE-2008-0072.patch
new file mode 100644
index 0000000..793b977
--- /dev/null
+++ b/evolution-2.12.3-CVE-2008-0072.patch
@@ -0,0 +1,48 @@
+diff -up evolution-2.12.3/mail/em-format.c.CVE-2008-0072 evolution-2.12.3/mail/em-format.c
+--- evolution-2.12.3/mail/em-format.c.CVE-2008-0072 2007-10-12 02:56:01.000000000 -0400
++++ evolution-2.12.3/mail/em-format.c 2008-03-04 15:59:30.000000000 -0500
+@@ -1193,7 +1193,7 @@ emf_application_xpkcs7mime(EMFormat *emf
+ opart = camel_mime_part_new();
+ valid = camel_cipher_decrypt(context, part, opart, ex);
+ if (valid == NULL) {
+- em_format_format_error(emf, stream, ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error"));
++ em_format_format_error(emf, stream, "%s", ex->desc?ex->desc:_("Could not parse S/MIME message: Unknown error"));
+ em_format_part_as(emf, stream, part, NULL);
+ } else {
+ if (emfc == NULL)
+@@ -1350,7 +1350,7 @@ emf_multipart_encrypted(EMFormat *emf, C
+ if (valid == NULL) {
+ em_format_format_error(emf, stream, ex->desc?_("Could not parse PGP/MIME message"):_("Could not parse PGP/MIME message: Unknown error"));
+ if (ex->desc)
+- em_format_format_error(emf, stream, ex->desc);
++ em_format_format_error(emf, stream, "%s", ex->desc);
+ em_format_part_as(emf, stream, part, "multipart/mixed");
+ } else {
+ if (emfc == NULL)
+@@ -1515,7 +1515,7 @@ emf_multipart_signed(EMFormat *emf, Came
+ if (valid == NULL) {
+ em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature"));
+ if (ex->desc)
+- em_format_format_error(emf, stream, ex->desc);
++ em_format_format_error(emf, stream, "%s", ex->desc);
+ em_format_part_as(emf, stream, part, "multipart/mixed");
+ } else {
+ if (emfc == NULL)
+@@ -1586,7 +1586,7 @@ emf_inlinepgp_signed(EMFormat *emf, Came
+ if (!valid) {
+ em_format_format_error(emf, stream, ex->desc?_("Error verifying signature"):_("Unknown error verifying signature"));
+ if (ex->desc)
+- em_format_format_error(emf, stream, ex->desc);
++ em_format_format_error(emf, stream, "%s", ex->desc);
+ em_format_format_source(emf, stream, ipart);
+ /* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */
+ camel_exception_free(ex);
+@@ -1657,7 +1657,7 @@ emf_inlinepgp_encrypted(EMFormat *emf, C
+ if (!valid) {
+ em_format_format_error(emf, stream, ex->desc?_("Could not parse PGP message"):_("Could not parse PGP message: Unknown error"));
+ if (ex->desc)
+- em_format_format_error(emf, stream, ex->desc);
++ em_format_format_error(emf, stream, "%s", ex->desc);
+ em_format_format_source(emf, stream, ipart);
+ /* I think this will loop: em_format_part_as(emf, stream, part, "text/plain"); */
+ camel_exception_free(ex);
diff --git a/evolution-2.12.3-CVE-2008-1108.patch b/evolution-2.12.3-CVE-2008-1108.patch
new file mode 100644
index 0000000..8c01cfb
--- /dev/null
+++ b/evolution-2.12.3-CVE-2008-1108.patch
@@ -0,0 +1,310 @@
+diff -up evolution-2.12.3/calendar/gui/e-itip-control.c.CVE-2008-1108 evolution-2.12.3/calendar/gui/e-itip-control.c
+--- evolution-2.12.3/calendar/gui/e-itip-control.c.CVE-2008-1108 2008-06-03 16:49:05.000000000 -0400
++++ evolution-2.12.3/calendar/gui/e-itip-control.c 2008-06-03 16:51:33.000000000 -0400
+@@ -650,7 +650,7 @@ find_attendee (icalcomponent *ical_comp,
+
+ static void
+ write_label_piece (EItipControl *itip, ECalComponentDateTime *dt,
+- char *buffer, int size,
++ GString *buffer,
+ const char *stext, const char *etext,
+ gboolean just_date)
+ {
+@@ -675,13 +675,13 @@ write_label_piece (EItipControl *itip, E
+ tmp_tm.tm_hour = tmp_tm.tm_min = tmp_tm.tm_sec = 0;
+
+ if (stext != NULL)
+- strcat (buffer, stext);
++ g_string_append (buffer, stext);
+
+ e_time_format_date_and_time (&tmp_tm,
+ calendar_config_get_24_hour_format (),
+ FALSE, FALSE,
+ time_buf, sizeof (time_buf));
+- strcat (buffer, time_buf);
++ g_string_append (buffer, time_buf);
+
+ if (!dt->value->is_utc && dt->tzid) {
+ zone = icalcomponent_get_timezone (priv->top_level, dt->tzid);
+@@ -693,21 +693,21 @@ write_label_piece (EItipControl *itip, E
+ UTF-8. But it probably is not translated. */
+ display_name = icaltimezone_get_display_name (zone);
+ if (display_name && *display_name) {
+- strcat (buffer, " [");
++ g_string_append_len (buffer, " [", 16);
+
+ /* We check if it is one of our builtin timezone names,
+ in which case we call gettext to translate it. */
+ if (icaltimezone_get_builtin_timezone (display_name)) {
+- strcat (buffer, _(display_name));
++ g_string_append_printf (buffer, "%s", _(display_name));
+ } else {
+- strcat (buffer, display_name);
++ g_string_append_printf (buffer, "%s", display_name);
+ }
+- strcat (buffer, "]");
++ g_string_append_len (buffer, "]", 8);
+ }
+ }
+
+ if (etext != NULL)
+- strcat (buffer, etext);
++ g_string_append (buffer, etext);
+ }
+
+ static const char *
+@@ -744,19 +744,17 @@ get_dayname (struct icalrecurrencetype *
+
+ static void
+ write_recurrence_piece (EItipControl *itip, ECalComponent *comp,
+- char *buffer, int size)
++ GString *buffer)
+ {
+ GSList *rrules;
+ struct icalrecurrencetype *r;
+- int len, i;
++ int i;
+
+- strcpy (buffer, "Recurring: ");
+- len = strlen (buffer);
+- buffer += len;
+- size -= len;
++ g_string_append_len (buffer, "Recurring: ", 18);
+
+ if (!e_cal_component_has_simple_recurrence (comp)) {
+- strcpy (buffer, _("Yes. (Complex Recurrence)"));
++ g_string_append_printf (
++ buffer, "%s", _("Yes. (Complex Recurrence)"));
+ return;
+ }
+
+@@ -772,7 +770,10 @@ write_recurrence_piece (EItipControl *it
+ Every %d day/days" */
+ /* For Translators : 'Every day' is event Recurring every day */
+ /* For Translators : 'Every %d days' is event Recurring every %d days. %d is a digit */
+- sprintf (buffer, ngettext("Every day", "Every %d days", r->interval), r->interval);
++ g_string_append_printf (
++ buffer, ngettext ("Every day",
++ "Every %d days", r->interval),
++ r->interval);
+ break;
+
+ case ICAL_WEEKLY_RECURRENCE:
+@@ -782,29 +783,36 @@ write_recurrence_piece (EItipControl *it
+ Every %d week/weeks" */
+ /* For Translators : 'Every week' is event Recurring every week */
+ /* For Translators : 'Every %d weeks' is event Recurring every %d weeks. %d is a digit */
+- sprintf (buffer, ngettext("Every week", "Every %d weeks", r->interval), r->interval);
++ g_string_append_printf (
++ buffer, ngettext ("Every week",
++ "Every %d weeks", r->interval),
++ r->interval);
+ } else {
+ /* For Translators : 'Every week on' is event Recurring every week on (dayname) and (dayname) and (dayname) */
+ /* For Translators : 'Every %d weeks on' is event Recurring: every %d weeks on (dayname) and (dayname). %d is a digit */
+- sprintf (buffer, ngettext("Every week on ", "Every %d weeks on ", r->interval), r->interval);
++ g_string_append_printf (
++ buffer, ngettext ("Every week on ",
++ "Every %d weeks on ", r->interval),
++ r->interval);
+
+ for (i = 1; i < 8 && r->by_day[i] != ICAL_RECURRENCE_ARRAY_MAX; i++) {
+ if (i > 1)
+- strcat (buffer, ", ");
+- strcat (buffer, get_dayname (r, i - 1));
++ g_string_append_len (buffer, ", ", 2);
++ g_string_append (buffer, get_dayname (r, i - 1));
+ }
+ if (i > 1)
+ /* For Translators : 'and' is part of the sentence 'event recurring every week on (dayname) and (dayname)' */
+- strcat (buffer, _(" and "));
+- strcat (buffer, get_dayname (r, i - 1));
++ g_string_append_printf (buffer, "%s", _(" and "));
++ g_string_append (buffer, get_dayname (r, i - 1));
+ }
+ break;
+
+ case ICAL_MONTHLY_RECURRENCE:
+ if (r->by_month_day[0] != ICAL_RECURRENCE_ARRAY_MAX) {
+ /* For Translators : 'The %s day of' is part of the sentence 'event recurring on the (nth) day of every month.' */
+- sprintf (buffer, _("The %s day of "),
+- nth (r->by_month_day[0]));
++ g_string_append_printf (
++ buffer, _("The %s day of "),
++ nth (r->by_month_day[0]));
+ } else {
+ int pos;
+
+@@ -818,20 +826,21 @@ write_recurrence_piece (EItipControl *it
+
+ /* For Translators : 'The %s %s of' is part of the sentence 'event recurring on the (nth) (dayname) of every month.'
+ eg,third monday of every month */
+- sprintf (buffer, _("The %s %s of "),
+- nth (pos), get_dayname (r, 0));
++ g_string_append_printf (
++ buffer, _("The %s %s of "),
++ nth (pos), get_dayname (r, 0));
+ }
+
+- len = strlen (buffer);
+- buffer += len;
+- size -= len;
+ /* For Translators: In this can also be translated as "With the period of %d
+ month/months", where %d is a number. The entire sentence is of the form "Recurring:
+ Every %d month/months" */
+ /* For Translators : 'every month' is part of the sentence 'event recurring on the (nth) day of every month.' */
+ /* For Translators : 'every %d months' is part of the sentence 'event recurring on the (nth) day of every %d months.'
+ %d is a digit */
+- sprintf (buffer, ngettext("every month","every %d months", r->interval), r->interval);
++ g_string_append_printf (
++ buffer, ngettext ("every month",
++ "every %d months", r->interval),
++ r->interval);
+ break;
+
+ case ICAL_YEARLY_RECURRENCE:
+@@ -840,20 +849,22 @@ write_recurrence_piece (EItipControl *it
+ Every %d year/years" */
+ /* For Translators : 'Every year' is event Recurring every year */
+ /* For Translators : 'Every %d years' is event Recurring every %d years. %d is a digit */
+- sprintf (buffer, ngettext("Every year", "Every %d years", r->interval), r->interval);
++ g_string_append_printf (
++ buffer, ngettext ("Every year",
++ "Every %d years", r->interval),
++ r->interval);
+ break;
+
+ default:
+ g_return_if_reached ();
+ }
+
+- len = strlen (buffer);
+- buffer += len;
+- size -= len;
+ if (r->count) {
+ /* For Translators:'a total of %d time' is part of the sentence of the form 'event recurring every day,a total of % time.' %d is a digit*/
+ /* For Translators:'a total of %d times' is part of the sentence of the form 'event recurring every day,a total of % times.' %d is a digit*/
+- sprintf (buffer, ngettext("a total of %d time", " a total of %d times", r->count), r->count);
++ g_string_append_printf (
++ buffer, ngettext ("a total of %d time",
++ " a total of %d times", r->count), r->count);
+ } else if (!icaltime_is_null_time (r->until)) {
+ ECalComponentDateTime dt;
+
+@@ -861,12 +872,12 @@ write_recurrence_piece (EItipControl *it
+ dt.value = &r->until;
+ dt.tzid = icaltimezone_get_tzid ((icaltimezone *)r->until.zone);
+
+- write_label_piece (itip, &dt, buffer, size,
++ write_label_piece (itip, &dt, buffer,
+ /* For Translators : ', ending on' is part of the sentence of the form 'event recurring every day, ending on (date).'*/
+ _(", ending on "), NULL, TRUE);
+ }
+
+- strcat (buffer, "
");
++ g_string_append_len (buffer, "
", 4);
+ }
+
+ static void
+@@ -874,47 +885,51 @@ set_date_label (EItipControl *itip, GtkH
+ ECalComponent *comp)
+ {
+ ECalComponentDateTime datetime;
+- static char buffer[1024];
++ GString *buffer;
+ gchar *str;
+ gboolean wrote = FALSE, task_completed = FALSE;
+ ECalComponentVType type;
+
++ buffer = g_string_sized_new (1024);
+ type = e_cal_component_get_vtype (comp);
+
+- buffer[0] = '\0';
+ e_cal_component_get_dtstart (comp, &datetime);
+ if (datetime.value) {
+ /* For Translators : 'starts' is starts:date implying a task starts on what date */
+ str = g_strdup_printf ("%s:", _("Starts"));
+- write_label_piece (itip, &datetime, buffer, 1024,
+- str,
+- "
", FALSE);
+- gtk_html_write (html, html_stream, buffer, strlen(buffer));
++ write_label_piece (itip, &datetime, buffer, str, "
", FALSE);
++ gtk_html_write (html, html_stream, buffer->str, buffer->len);
+ wrote = TRUE;
+ g_free (str);
+ }
+ e_cal_component_free_datetime (&datetime);
+
+- buffer[0] = '\0';
++ /* Reset the buffer. */
++ g_string_truncate (buffer, 0);
++
+ e_cal_component_get_dtend (comp, &datetime);
+ if (datetime.value){
+ /* For Translators : 'ends' is ends:date implying a task ends on what date */
+ str = g_strdup_printf ("%s:", _("Ends"));
+- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE);
+- gtk_html_write (html, html_stream, buffer, strlen (buffer));
++ write_label_piece (itip, &datetime, buffer, str, "
", FALSE);
++ gtk_html_write (html, html_stream, buffer->str, buffer->len);
+ wrote = TRUE;
+ g_free (str);
+ }
+ e_cal_component_free_datetime (&datetime);
+
+- buffer[0] = '\0';
++ /* Reset the buffer. */
++ g_string_truncate (buffer, 0);
++
+ if (e_cal_component_has_recurrences (comp)) {
+- write_recurrence_piece (itip, comp, buffer, 1024);
+- gtk_html_write (html, html_stream, buffer, strlen (buffer));
++ write_recurrence_piece (itip, comp, buffer);
++ gtk_html_write (html, html_stream, buffer->str, buffer->len);
+ wrote = TRUE;
+ }
+
+- buffer[0] = '\0';
++ /* Reset the buffer. */
++ g_string_truncate (buffer, 0);
++
+ datetime.tzid = NULL;
+ e_cal_component_get_completed (comp, &datetime.value);
+ if (type == E_CAL_COMPONENT_TODO && datetime.value) {
+@@ -922,20 +937,22 @@ set_date_label (EItipControl *itip, GtkH
+ timezone. */
+ str = g_strdup_printf ("%s:", _("Completed"));
+ datetime.value->is_utc = TRUE;
+- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE);
+- gtk_html_write (html, html_stream, buffer, strlen (buffer));
++ write_label_piece (itip, &datetime, buffer, str, "
", FALSE);
++ gtk_html_write (html, html_stream, buffer->str, buffer->len);
+ wrote = TRUE;
+ task_completed = TRUE;
+ g_free (str);
+ }
+ e_cal_component_free_datetime (&datetime);
+
+- buffer[0] = '\0';
++ /* Reset the buffer. */
++ g_string_truncate (buffer, 0);
++
+ e_cal_component_get_due (comp, &datetime);
+ if (type == E_CAL_COMPONENT_TODO && !task_completed && datetime.value) {
+ str = g_strdup_printf ("%s:", _("Due"));
+- write_label_piece (itip, &datetime, buffer, 1024, str, "
", FALSE);
+- gtk_html_write (html, html_stream, buffer, strlen (buffer));
++ write_label_piece (itip, &datetime, buffer, str, "
", FALSE);
++ gtk_html_write (html, html_stream, buffer->str, buffer->len);
+ wrote = TRUE;
+ g_free (str);
+ }
+@@ -944,6 +961,8 @@ set_date_label (EItipControl *itip, GtkH
+
+ if (wrote)
+ gtk_html_stream_printf (html_stream, "
");
++
++ g_string_free (buffer, TRUE);
+ }
+
+ static void
diff --git a/evolution-2.12.3-CVE-2008-1109.patch b/evolution-2.12.3-CVE-2008-1109.patch
new file mode 100644
index 0000000..9a22564
--- /dev/null
+++ b/evolution-2.12.3-CVE-2008-1109.patch
@@ -0,0 +1,61 @@
+diff -up evolution-2.12.3/calendar/gui/itip-utils.c.CVE-2008-1109 evolution-2.12.3/calendar/gui/itip-utils.c
+--- evolution-2.12.3/calendar/gui/itip-utils.c.CVE-2008-1109 2007-10-12 03:04:17.000000000 -0400
++++ evolution-2.12.3/calendar/gui/itip-utils.c 2008-06-03 16:51:42.000000000 -0400
+@@ -176,50 +176,16 @@ get_attendee_if_attendee_sentby_is_user
+ }
+
+ static char *
+-html_new_lines_for (char *string)
++html_new_lines_for (const char *string)
+ {
+- char *html_string = (char *) malloc (sizeof (char)* (3500));
+- int length = strlen (string);
+- int index = 0;
+- char *index_ptr = string;
+- char *temp = string;
++ gchar **lines;
++ gchar *joined;
+
+- /*Find the first occurence*/
+- index_ptr = strstr ((const char *)temp, "\n");
++ lines = g_strsplit_set (string, "\n", -1);
++ joined = g_strjoinv ("
", lines);
++ g_strfreev (lines);
+
+- /*Doesn't occur*/
+- if (index_ptr == NULL) {
+- strcpy (html_string, (const char *)string);
+- html_string[length] = '\0';
+- return html_string;
+- }
+-
+- /*Split into chunks inserting
for \n */
+- do{
+- while (temp != index_ptr){
+- html_string[index++] = *temp;
+- temp++;
+- }
+- temp++;
+-
+- html_string[index++] = '<';
+- html_string[index++] = 'b';
+- html_string[index++] = 'r';
+- html_string[index++] = '>';
+-
+- index_ptr = strstr ((const char *)temp, "\n");
+-
+- } while (index_ptr);
+-
+- /*Don't leave out the last chunk*/
+- while (*temp != '\0'){
+- html_string[index++] = *temp;
+- temp++;
+- }
+-
+- html_string[index] = '\0';
+-
+- return html_string;
++ return joined;
+ }
+
+ char *
diff --git a/evolution-2.12.3-no-drag-finish.patch b/evolution-2.12.3-no-drag-finish.patch
new file mode 100644
index 0000000..28704f4
--- /dev/null
+++ b/evolution-2.12.3-no-drag-finish.patch
@@ -0,0 +1,36 @@
+diff -up evolution-2.12.3/mail/em-folder-tree.c.no-drag-finish evolution-2.12.3/mail/em-folder-tree.c
+--- evolution-2.12.3/mail/em-folder-tree.c.no-drag-finish 2008-03-03 18:34:41.000000000 +0100
++++ evolution-2.12.3/mail/em-folder-tree.c 2008-03-03 18:34:45.000000000 +0100
+@@ -927,23 +927,6 @@ emft_drop_async__exec (struct _DragDataR
+ }
+
+ static void
+-emft_drop_async__done (struct _DragDataReceivedAsync *m)
+-{
+- gboolean success, delete;
+-
+- /* ?? */
+- if (m->aborted) {
+- success = FALSE;
+- delete = FALSE;
+- } else {
+- success = !camel_exception_is_set (&m->base.ex);
+- delete = success && m->move && !m->moved;
+- }
+-
+- gtk_drag_finish (m->context, success, delete, GDK_CURRENT_TIME);
+-}
+-
+-static void
+ emft_drop_async__free (struct _DragDataReceivedAsync *m)
+ {
+ g_object_unref(m->context);
+@@ -958,7 +941,7 @@ static MailMsgInfo emft_drop_async_info
+ sizeof (struct _DragDataReceivedAsync),
+ (MailMsgDescFunc) emft_drop_async__desc,
+ (MailMsgExecFunc) emft_drop_async__exec,
+- (MailMsgDoneFunc) emft_drop_async__done,
++ NULL,
+ (MailMsgFreeFunc) emft_drop_async__free
+ };
+
diff --git a/evolution-2.8.1-kill-ethread.patch b/evolution-2.8.1-kill-ethread.patch
index 4b18c38..81916ec 100644
--- a/evolution-2.8.1-kill-ethread.patch
+++ b/evolution-2.8.1-kill-ethread.patch
@@ -1,6 +1,6 @@
---- evolution-2.11.92/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-09-02 14:56:38.000000000 -0400
-+++ evolution-2.11.92/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-09-04 00:19:08.000000000 -0400
-@@ -44,32 +44,30 @@
+--- evolution-2.12.2/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-10-12 08:55:23.000000000 +0200
++++ evolution-2.12.2/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-11-27 12:06:04.000000000 +0100
+@@ -44,32 +44,30 @@ void org_gnome_mail_folder_unsubscribe (
struct _folder_unsub_t {
@@ -41,7 +41,7 @@
if (((CamelService *) store)->provider->url_flags & CAMEL_URL_FRAGMENT_IS_PATH)
path = url->fragment;
else if (url->path && url->path[0])
-@@ -82,18 +80,17 @@
+@@ -82,18 +80,17 @@ folder_unsubscribe__unsub (struct _mail_
}
static void
@@ -68,7 +68,7 @@
};
-@@ -105,8 +102,8 @@
+@@ -105,8 +102,8 @@ org_gnome_mail_folder_unsubscribe (EPlug
if (target->uri == NULL)
return;
@@ -79,9 +79,9 @@
- e_thread_put (mail_thread_new, (EMsg *) unsub);
+ mail_msg_unordered_push (unsub);
}
---- evolution-2.11.92/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-09-02 14:56:39.000000000 -0400
-+++ evolution-2.11.92/plugins/mark-all-read/mark-all-read.c 2007-09-04 00:19:08.000000000 -0400
-@@ -44,7 +44,7 @@
+--- evolution-2.12.2/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-10-12 08:55:30.000000000 +0200
++++ evolution-2.12.2/plugins/mark-all-read/mark-all-read.c 2007-11-27 12:06:04.000000000 +0100
+@@ -44,7 +44,7 @@ org_gnome_mark_all_read (EPlugin *ep, EM
return;
}
@@ -90,18 +90,18 @@
}
static void
---- evolution-2.11.92/plugins/save-attachments/save-attachments.c.kill-ethread 2007-09-02 14:56:45.000000000 -0400
-+++ evolution-2.11.92/plugins/save-attachments/save-attachments.c 2007-09-04 00:19:08.000000000 -0400
-@@ -403,5 +403,5 @@
+--- evolution-2.12.2/plugins/save-attachments/save-attachments.c.kill-ethread 2007-10-12 08:55:35.000000000 +0200
++++ evolution-2.12.2/plugins/save-attachments/save-attachments.c 2007-11-27 12:06:04.000000000 +0100
+@@ -403,5 +403,5 @@ org_gnome_save_attachments_save(EPlugin
camel_object_ref(data->folder);
data->uid = g_strdup(target->uids->pdata[0]);
- mail_get_message(data->folder, data->uid, save_got_message, data, mail_thread_new);
+ mail_get_message(data->folder, data->uid, save_got_message, data, mail_msg_unordered_push);
}
---- evolution-2.11.92/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-09-02 14:56:38.000000000 -0400
-+++ evolution-2.11.92/plugins/groupwise-features/share-folder-common.c 2007-09-04 00:19:08.000000000 -0400
-@@ -121,7 +121,7 @@
+--- evolution-2.12.2/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-10-12 08:55:25.000000000 +0200
++++ evolution-2.12.2/plugins/groupwise-features/share-folder-common.c 2007-11-27 12:06:04.000000000 +0100
+@@ -121,7 +121,7 @@ shared_folder_abort (EPlugin *ep, EConfi
}
struct _EMCreateFolder {
@@ -110,7 +110,7 @@
/* input data */
CamelStore *store;
-@@ -137,31 +137,26 @@
+@@ -137,31 +137,26 @@ struct _EMCreateFolder {
void *user_data;
};
@@ -148,7 +148,7 @@
struct ShareInfo *ssi = (struct ShareInfo *) m->user_data;
CamelStore *store = CAMEL_STORE (m->store) ;
EGwConnection *ccnc;
-@@ -180,10 +175,8 @@
+@@ -180,10 +175,8 @@ create_folder__created (struct _mail_msg
}
static void
@@ -160,7 +160,7 @@
camel_store_free_folder_info (m->store, m->fi);
camel_object_unref (m->store);
g_free (m->full_name);
-@@ -191,11 +184,12 @@
+@@ -191,11 +184,12 @@ create_folder__free (struct _mail_msg *m
g_free (m->name);
}
@@ -178,7 +178,7 @@
};
static void
-@@ -229,7 +223,7 @@
+@@ -229,7 +223,7 @@ create_folder (CamelStore *store, const
parent = namebuf;
}
@@ -187,7 +187,7 @@
camel_object_ref (store);
m->store = store;
m->full_name = g_strdup (full_name);
-@@ -238,8 +232,8 @@
+@@ -238,8 +232,8 @@ create_folder (CamelStore *store, const
m->user_data = (struct ShareInfo *) user_data;
m->done = done;
g_free (namebuf);
@@ -198,9 +198,9 @@
return id;
}
---- evolution-2.11.92/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-07-05 02:09:24.000000000 -0400
-+++ evolution-2.11.92/plugins/mailing-list-actions/mailing-list-actions.c 2007-09-04 00:19:08.000000000 -0400
-@@ -89,7 +89,7 @@
+--- evolution-2.12.2/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-10-12 08:55:34.000000000 +0200
++++ evolution-2.12.2/plugins/mailing-list-actions/mailing-list-actions.c 2007-11-27 12:06:04.000000000 +0100
+@@ -89,7 +89,7 @@ void emla_list_action (EPlugin *item, EM
data->uri = strdup (sel->uri);
mail_get_message (sel->folder, (const char*) g_ptr_array_index (sel->uids, 0),
@@ -209,9 +209,9 @@
}
void emla_list_action_do (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data)
---- evolution-2.11.92/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-09-02 14:56:39.000000000 -0400
-+++ evolution-2.11.92/plugins/exchange-operations/exchange-folder.c 2007-09-04 00:19:08.000000000 -0400
-@@ -140,7 +140,7 @@
+--- evolution-2.12.2/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-10-12 08:55:27.000000000 +0200
++++ evolution-2.12.2/plugins/exchange-operations/exchange-folder.c 2007-11-27 12:06:04.000000000 +0100
+@@ -140,7 +140,7 @@ org_gnome_exchange_folder_inbox_unsubscr
inbox_physical_uri = e_folder_get_physical_uri (inbox);
/* To get the CamelStore/Folder */
@@ -220,9 +220,9 @@
}
---- evolution-2.11.92/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-09-02 14:57:09.000000000 -0400
-+++ evolution-2.11.92/calendar/gui/alarm-notify/alarm-notify.c 2007-09-04 00:19:08.000000000 -0400
-@@ -45,10 +45,6 @@
+--- evolution-2.12.2/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-10-12 09:04:07.000000000 +0200
++++ evolution-2.12.2/calendar/gui/alarm-notify/alarm-notify.c 2007-11-27 12:06:04.000000000 +0100
+@@ -45,10 +45,6 @@ struct _AlarmNotifyPrivate {
GMutex *mutex;
};
@@ -233,7 +233,7 @@
#define d(x) x
-@@ -286,72 +282,12 @@
+@@ -286,72 +282,12 @@ alarm_notify_finalize (GObject *object)
g_mutex_free (priv->mutex);
g_free (priv);
@@ -306,7 +306,7 @@
/**
* alarm_notify_new:
*
-@@ -363,23 +299,10 @@
+@@ -363,23 +299,10 @@ alarm_msg_received(EThread *e, EMsg *msg
AlarmNotify *
alarm_notify_new (void)
{
@@ -334,9 +334,9 @@
}
static void
---- evolution-2.11.92/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-09-02 14:57:09.000000000 -0400
-+++ evolution-2.11.92/calendar/gui/alarm-notify/alarm-notify.h 2007-09-04 00:19:08.000000000 -0400
-@@ -39,19 +39,6 @@
+--- evolution-2.12.2/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-10-12 09:04:07.000000000 +0200
++++ evolution-2.12.2/calendar/gui/alarm-notify/alarm-notify.h 2007-11-27 12:06:04.000000000 +0100
+@@ -39,19 +39,6 @@ typedef struct _AlarmNotifyClass AlarmNo
typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate;
@@ -356,9 +356,9 @@
struct _AlarmNotify {
BonoboObject object;
---- evolution-2.11.92/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-09-02 14:57:09.000000000 -0400
-+++ evolution-2.11.92/calendar/gui/alarm-notify/alarm-queue.c 2007-09-04 00:19:08.000000000 -0400
-@@ -97,9 +97,6 @@
+--- evolution-2.12.2/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-10-12 09:04:07.000000000 +0200
++++ evolution-2.12.2/calendar/gui/alarm-notify/alarm-queue.c 2007-11-27 12:06:04.000000000 +0100
+@@ -97,9 +97,6 @@ static int tray_blink_id = -1;
static int tray_blink_state = FALSE;
static AlarmNotify *an;
@@ -368,7 +368,7 @@
/* Structure that stores a client we are monitoring */
typedef struct {
/* Monitored client */
-@@ -181,6 +178,40 @@
+@@ -181,6 +178,40 @@ static void on_dialog_objs_removed_cb (E
static void load_alarms_for_today (ClientAlarms *ca);
static void midnight_refresh_cb (gpointer alarm_id, time_t trigger, gpointer data);
@@ -409,7 +409,7 @@
/* Queues an alarm trigger for midnight so that we can load the next day's worth
* of alarms.
*/
-@@ -219,47 +250,41 @@
+@@ -219,47 +250,41 @@ add_client_alarms_cb (gpointer key, gpoi
}
struct _midnight_refresh_msg {
@@ -451,23 +451,23 @@
- /* These two structures will be freed by the msg destroy function*/
- msg = malloc (sizeof (AlarmMsg));
- msg->receive_msg = midnight_refresh_async;
--
-- list = malloc (sizeof (struct _midnight_refresh_msg));
+ struct _midnight_refresh_msg *msg;
-- list->remove = TRUE;
-- msg->data = list;
+- list = malloc (sizeof (struct _midnight_refresh_msg));
+ msg = g_slice_new (struct _midnight_refresh_msg);
+ msg->header.func = (MessageFunc) midnight_refresh_async;
+ msg->remove = TRUE;
+- list->remove = TRUE;
+- msg->data = list;
+-
- d(printf("%s:%d (midnight_refresh_cb) - Invoking task for midnight refresh\n",__FILE__, __LINE__));
- e_thread_put(alarm_operation_thread, (EMsg *)msg);
+ message_push ((Message *) msg);
}
/* Looks up a client in the client alarms hash table */
-@@ -657,6 +682,7 @@
+@@ -657,6 +682,7 @@ remove_comp (ClientAlarms *ca, ECalCompo
* alarms.
*/
struct _query_msg {
@@ -475,7 +475,7 @@
ECal *client;
GList *objects;
gpointer data;
-@@ -690,7 +716,7 @@
+@@ -690,7 +716,7 @@ duplicate_ecal (GList *in_list)
}
static void
@@ -484,7 +484,7 @@
{
ClientAlarms *ca;
time_t from, day_end;
-@@ -699,13 +725,12 @@
+@@ -699,13 +725,12 @@ query_objects_changed_async (EThread *e,
icaltimezone *zone;
CompQueuedAlarms *cqa;
GList *l;
@@ -501,7 +501,7 @@
from = config_data_get_last_notification_time ();
if (from == -1)
-@@ -799,43 +824,38 @@
+@@ -799,43 +824,38 @@ query_objects_changed_async (EThread *e,
comp = NULL;
}
g_list_free (objects);
@@ -514,8 +514,7 @@
{
- AlarmMsg *msg;
- struct _query_msg *list;
-+ struct _query_msg *msg;
-
+-
- /* These two structures will be freed by the msg destroy function*/
- msg = malloc (sizeof (AlarmMsg));
- msg->receive_msg = query_objects_changed_async;
@@ -524,7 +523,8 @@
- list->objects = duplicate_ical (objects);
- list->data = data;
- msg->data = list;
--
++ struct _query_msg *msg;
+
- d(printf("%s:%d (query_objects_changed_cb) - Posting a task\n",__FILE__, __LINE__));
- e_thread_put(alarm_operation_thread, (EMsg *)msg);
+ msg = g_slice_new (struct _query_msg);
@@ -558,7 +558,7 @@
d(printf("%s:%d (query_objects_removed_async) - Removing %d objects\n",__FILE__, __LINE__, g_list_length(objects)));
-@@ -848,27 +868,22 @@
+@@ -848,27 +868,22 @@ query_objects_removed_async (EThread *e,
}
g_list_free (objects);
@@ -595,7 +595,7 @@
}
-@@ -1010,20 +1025,19 @@
+@@ -1010,20 +1025,19 @@ free_tray_icon_data (TrayIconData *tray_
}
static void
@@ -620,7 +620,7 @@
e_cal_component_get_uid (tray_data->comp, &our_uid);
g_return_if_fail (our_uid && *our_uid);
-@@ -1041,37 +1055,33 @@
+@@ -1041,37 +1055,33 @@ on_dialog_objs_removed_async (EThread *e
tray_data = NULL;
}
}
@@ -670,7 +670,7 @@
GList *list = tray_icons_list;
d(printf("%s:%d (tray_list_remove_cqa_async) - Removing CQA %p from tray list\n",__FILE__, __LINE__, cqa));
-@@ -1110,28 +1120,25 @@
+@@ -1110,28 +1120,25 @@ tray_list_remove_cqa_async(EThread *e, A
gtk_tree_selection_select_iter (sel, &iter);
}
}
@@ -708,7 +708,7 @@
{
GList *list = tray_icons_list;
-@@ -1161,55 +1168,50 @@
+@@ -1161,55 +1168,50 @@ tray_list_remove_async(EThread *e, Alarm
} else
list = list->next;
}
@@ -721,16 +721,16 @@
+tray_list_remove_icons (void)
{
- AlarmMsg *msg;
--
++ Message *msg;
+
- /* These two structures will be freed by the msg destroy function*/
- msg = malloc (sizeof (AlarmMsg));
- msg->receive_msg = tray_list_remove_async;
-+ Message *msg;
-
-- msg->data = NULL;
+ msg = g_slice_new (Message);
+ msg->func = tray_list_remove_async;
+- msg->data = NULL;
+-
- d(printf("%s:%d (tray_list_remove_icons) - Posting a task\n",__FILE__, __LINE__));
- e_thread_put(alarm_operation_thread, (EMsg *)msg);
+ message_push (msg);
@@ -771,18 +771,18 @@
- list->data = data;
- msg->data = list;
+ struct _tray_msg *msg;
-+
-+ msg = g_slice_new (struct _tray_msg);
-+ msg->header.func = (MessageFunc) tray_list_remove_data_async;
-+ msg->data = data;
- d(printf("%s:%d (tray_list_remove_data) - Posting a task\n",__FILE__, __LINE__));
- e_thread_put(alarm_operation_thread, (EMsg *)msg);
++ msg = g_slice_new (struct _tray_msg);
++ msg->header.func = (MessageFunc) tray_list_remove_data_async;
++ msg->data = data;
++
+ message_push ((Message *) msg);
}
static void
-@@ -1416,29 +1418,24 @@
+@@ -1416,29 +1418,24 @@ tray_icon_blink_cb (gpointer data)
/* Add a new data to tray list */
static void
@@ -823,7 +823,7 @@
}
/* Performs notification of a display alarm */
-@@ -1835,21 +1832,13 @@
+@@ -1835,21 +1832,13 @@ check_midnight_refresh (gpointer user_da
new_midnight = time_day_end_with_zone (time (NULL), zone);
if (new_midnight > midnight) {
@@ -850,7 +850,7 @@
}
return TRUE;
-@@ -1980,14 +1969,15 @@
+@@ -1980,14 +1969,15 @@ hash_ids (gpointer a)
}
struct _alarm_client_msg {
@@ -869,7 +869,7 @@
g_return_if_fail (alarm_queue_inited);
g_return_if_fail (client != NULL);
-@@ -2018,6 +2008,8 @@
+@@ -2018,6 +2008,8 @@ static void alarm_queue_add_async (EThre
G_CALLBACK (cal_opened_cb),
ca);
}
@@ -878,7 +878,7 @@
}
/**
-@@ -2037,20 +2029,13 @@
+@@ -2037,20 +2029,13 @@ static void alarm_queue_add_async (EThre
void
alarm_queue_add_client (ECal *client)
{
@@ -904,7 +904,7 @@
}
/* Removes a component an its alarms */
-@@ -2102,11 +2087,10 @@
+@@ -2102,11 +2087,10 @@ remove_client_alarms (ClientAlarms *ca)
* Removes a calendar client from the alarm queueing system.
**/
static void
@@ -918,7 +918,7 @@
g_return_if_fail (alarm_queue_inited);
g_return_if_fail (client != NULL);
-@@ -2143,6 +2127,8 @@
+@@ -2143,6 +2127,8 @@ alarm_queue_remove_async (EThread *e, Al
g_free (ca);
g_hash_table_remove (client_alarms_hash, client);
@@ -961,9 +961,9 @@
}
/* Update non-time related variables for various structures on modification of an existing component
---- evolution-2.11.92/mail/em-folder-utils.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-folder-utils.c 2007-09-04 00:19:08.000000000 -0400
-@@ -85,7 +85,7 @@
+--- evolution-2.12.2/mail/em-folder-utils.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-folder-utils.c 2007-11-27 12:06:04.000000000 +0100
+@@ -85,7 +85,7 @@ emfu_is_special_local_folder (const char
}
struct _EMCopyFolders {
@@ -972,7 +972,7 @@
/* input data */
CamelStore *fromstore;
-@@ -97,18 +97,15 @@
+@@ -97,18 +97,15 @@ struct _EMCopyFolders {
int delete;
};
@@ -994,7 +994,7 @@
guint32 flags = CAMEL_STORE_FOLDER_INFO_FAST | CAMEL_STORE_FOLDER_INFO_RECURSIVE | CAMEL_STORE_FOLDER_INFO_SUBSCRIBED;
GList *pending = NULL, *deleting = NULL, *l;
GString *fromname, *toname;
-@@ -116,7 +113,7 @@
+@@ -116,7 +113,7 @@ emft_copy_folders__copy (struct _mail_ms
const char *tmp;
int fromlen;
@@ -1003,7 +1003,7 @@
return;
pending = g_list_append (pending, fi);
-@@ -156,8 +153,8 @@
+@@ -156,8 +153,8 @@ emft_copy_folders__copy (struct _mail_ms
if ((info->flags & CAMEL_FOLDER_NOSELECT) == 0) {
d(printf ("this folder is selectable\n"));
if (m->tostore == m->fromstore && m->delete) {
@@ -1014,7 +1014,7 @@
goto exception;
/* this folder no longer exists, unsubscribe it */
-@@ -166,16 +163,16 @@
+@@ -166,16 +163,16 @@ emft_copy_folders__copy (struct _mail_ms
deleted = 1;
} else {
@@ -1034,7 +1034,7 @@
camel_folder_free_uids (fromfolder, uids);
if (m->delete)
-@@ -186,7 +183,7 @@
+@@ -186,7 +183,7 @@ emft_copy_folders__copy (struct _mail_ms
}
}
@@ -1043,7 +1043,7 @@
goto exception;
else if (m->delete && !deleted)
deleting = g_list_prepend (deleting, info);
-@@ -227,10 +224,8 @@
+@@ -227,10 +224,8 @@ emft_copy_folders__copy (struct _mail_ms
}
static void
@@ -1055,7 +1055,7 @@
camel_object_unref (m->fromstore);
camel_object_unref (m->tostore);
-@@ -238,11 +233,12 @@
+@@ -238,11 +233,12 @@ emft_copy_folders__free (struct _mail_ms
g_free (m->tobase);
}
@@ -1073,7 +1073,7 @@
};
int
-@@ -251,7 +247,7 @@
+@@ -251,7 +247,7 @@ em_folder_utils_copy_folders(CamelStore
struct _EMCopyFolders *m;
int seq;
@@ -1082,7 +1082,7 @@
camel_object_ref (fromstore);
m->fromstore = fromstore;
camel_object_ref (tostore);
-@@ -259,9 +255,9 @@
+@@ -259,9 +255,9 @@ em_folder_utils_copy_folders(CamelStore
m->frombase = g_strdup (frombase);
m->tobase = g_strdup (tobase);
m->delete = delete;
@@ -1094,7 +1094,7 @@
return seq;
}
-@@ -558,7 +554,7 @@
+@@ -558,7 +554,7 @@ em_folder_utils_rename_folder (CamelFold
}
struct _EMCreateFolder {
@@ -1103,7 +1103,7 @@
/* input data */
CamelStore *store;
-@@ -582,41 +578,33 @@
+@@ -582,41 +578,33 @@ struct _EMCreateFolderTempData
char *uri;
};
@@ -1152,7 +1152,7 @@
camel_store_free_folder_info (m->store, m->fi);
camel_object_unref (m->store);
g_free (m->full_name);
-@@ -624,11 +612,12 @@
+@@ -624,11 +612,12 @@ emfu_create_folder__free (struct _mail_m
g_free (m->name);
}
@@ -1170,7 +1170,7 @@
};
-@@ -649,7 +638,7 @@
+@@ -649,7 +638,7 @@ emfu_create_folder_real (CamelStore *sto
parent = namebuf;
}
@@ -1179,7 +1179,7 @@
camel_object_ref (store);
m->store = store;
m->full_name = g_strdup (full_name);
-@@ -660,8 +649,8 @@
+@@ -660,8 +649,8 @@ emfu_create_folder_real (CamelStore *sto
g_free (namebuf);
@@ -1190,8 +1190,8 @@
return id;
}
---- evolution-2.11.92/mail/mail-ops.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-ops.c 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/mail-ops.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/mail-ops.c 2007-11-27 12:06:04.000000000 +0100
@@ -75,7 +75,7 @@
/* used for both just filtering a folder + uid's, and for filtering a whole folder */
/* used both for fetching mail, and for filtering mail */
@@ -1201,7 +1201,7 @@
CamelFolder *source_folder; /* where they come from */
GPtrArray *source_uids; /* uids to copy, or NULL == copy all */
-@@ -99,8 +99,8 @@
+@@ -99,8 +99,8 @@ struct _fetch_mail_msg {
void *data;
};
@@ -1212,7 +1212,7 @@
{
return g_strdup (_("Filtering Selected Messages"));
}
-@@ -108,9 +108,8 @@
+@@ -108,9 +108,8 @@ em_filter_folder_element_describe (struc
/* filter a folder, or a subset thereof, uses source_folder/source_uids */
/* this is shared with fetch_mail */
static void
@@ -1223,7 +1223,7 @@
CamelFolder *folder;
GPtrArray *uids, *folder_uids = NULL;
-@@ -137,15 +136,15 @@
+@@ -137,15 +136,15 @@ em_filter_folder_element_filter (struct
else
folder_uids = uids = camel_folder_get_uids (folder);
@@ -1242,7 +1242,7 @@
camel_folder_thaw (folder);
if (m->destination)
-@@ -161,15 +160,13 @@
+@@ -161,15 +160,13 @@ em_filter_folder_element_filter (struct
}
static void
@@ -1260,7 +1260,7 @@
if (m->source_folder)
camel_object_unref (m->source_folder);
-@@ -188,11 +185,12 @@
+@@ -188,11 +185,12 @@ em_filter_folder_element_free (struct _m
mail_session_flush_filter_log ();
}
@@ -1278,7 +1278,7 @@
};
void
-@@ -202,7 +200,7 @@
+@@ -202,7 +200,7 @@ mail_filter_folder (CamelFolder *source_
{
struct _filter_mail_msg *m;
@@ -1287,7 +1287,7 @@
m->source_folder = source_folder;
camel_object_ref (source_folder);
m->source_uids = uids;
-@@ -221,7 +219,7 @@
+@@ -221,7 +219,7 @@ mail_filter_folder (CamelFolder *source_
camel_filter_driver_remove_rule_by_name (m->driver, "new-mail-notification");
}
@@ -1296,7 +1296,7 @@
}
/* convenience functions for it */
-@@ -260,17 +258,16 @@
+@@ -260,17 +258,16 @@ uid_cachename_hack (CamelStore *store)
return filename;
}
@@ -1318,7 +1318,7 @@
int i;
if (m->cancel)
-@@ -283,20 +280,20 @@
+@@ -283,20 +280,20 @@ fetch_mail_fetch (struct _mail_msg *mm)
/* FIXME: this should support keep_on_server too, which would then perform a spool
access thingy, right? problem is matching raw messages to uid's etc. */
if (!strncmp (m->source_uri, "mbox:", 5)) {
@@ -1344,7 +1344,7 @@
if (folder) {
/* this handles 'keep on server' stuff, if we have any new uid's to copy
-@@ -322,17 +319,17 @@
+@@ -322,17 +319,17 @@ fetch_mail_fetch (struct _mail_msg *mm)
camel_uid_cache_free_uids (cache_uids);
fm->cache = cache;
@@ -1365,7 +1365,7 @@
/* not keep on server - just delete all the actual messages on the server */
for (i=0;ilen;i++) {
d(printf("force delete uid '%s'\n", (char *)folder_uids->pdata[i]));
-@@ -348,7 +345,7 @@
+@@ -348,7 +345,7 @@ fetch_mail_fetch (struct _mail_msg *mm)
camel_uid_cache_destroy (cache);
camel_folder_free_uids (folder, folder_uids);
} else {
@@ -1374,7 +1374,7 @@
}
/* we unref the source folder here since we
-@@ -372,31 +369,28 @@
+@@ -372,31 +369,28 @@ fail:
}
static void
@@ -1415,7 +1415,7 @@
};
/* ouch, a 'do everything' interface ... */
-@@ -409,7 +403,7 @@
+@@ -409,7 +403,7 @@ mail_fetch_mail (const char *source, int
struct _fetch_mail_msg *m;
struct _filter_mail_msg *fm;
@@ -1424,7 +1424,7 @@
fm = (struct _filter_mail_msg *)m;
m->source_uri = g_strdup (source);
fm->delete = !keep;
-@@ -426,7 +420,7 @@
+@@ -426,7 +420,7 @@ mail_fetch_mail (const char *source, int
if (status)
camel_filter_driver_set_status_func (fm->driver, status, status_data);
@@ -1433,7 +1433,7 @@
}
/* ********************************************************************** */
-@@ -657,7 +651,7 @@
+@@ -657,7 +651,7 @@ exit:
/* ** SEND MAIL QUEUE ***************************************************** */
struct _send_queue_msg {
@@ -1442,7 +1442,7 @@
CamelFolder *queue;
char *destination;
-@@ -689,9 +683,8 @@
+@@ -689,9 +683,8 @@ report_status (struct _send_queue_msg *m
}
static void
@@ -1453,7 +1453,7 @@
CamelFolder *sent_folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_SENT);
GPtrArray *uids, *send_uids = NULL;
CamelException ex;
-@@ -739,17 +732,17 @@
+@@ -739,17 +732,17 @@ send_queue_send(struct _mail_msg *mm)
if (camel_exception_is_set (&ex)) {
if (ex.id != CAMEL_EXCEPTION_USER_CANCEL) {
/* merge exceptions into one */
@@ -1475,7 +1475,7 @@
break;
}
}
-@@ -759,7 +752,7 @@
+@@ -759,7 +752,7 @@ send_queue_send(struct _mail_msg *mm)
if (j > 0)
report_status (m, CAMEL_FILTER_STATUS_END, 100, _("Failed to send %d of %d messages"), j, send_uids->len);
@@ -1484,7 +1484,7 @@
report_status (m, CAMEL_FILTER_STATUS_END, 100, _("Canceled."));
else
report_status (m, CAMEL_FILTER_STATUS_END, 100, _("Complete."));
-@@ -785,19 +778,15 @@
+@@ -785,19 +778,15 @@ send_queue_send(struct _mail_msg *mm)
}
static void
@@ -1506,7 +1506,7 @@
if (m->driver)
camel_object_unref(m->driver);
camel_object_unref(m->queue);
-@@ -806,11 +795,12 @@
+@@ -806,11 +795,12 @@ send_queue_free(struct _mail_msg *mm)
camel_operation_unref(m->cancel);
}
@@ -1524,7 +1524,7 @@
};
/* same interface as fetch_mail, just 'cause i'm lazy today (and we need to run it from the same spot?) */
-@@ -823,7 +813,7 @@
+@@ -823,7 +813,7 @@ mail_send_queue(CamelFolder *queue, cons
{
struct _send_queue_msg *m;
@@ -1533,7 +1533,7 @@
m->queue = queue;
camel_object_ref(queue);
m->destination = g_strdup(destination);
-@@ -839,13 +829,13 @@
+@@ -839,13 +829,13 @@ mail_send_queue(CamelFolder *queue, cons
m->driver = camel_session_get_filter_driver (session, type, NULL);
camel_filter_driver_set_folder_func (m->driver, get_folder, get_data);
@@ -1549,7 +1549,7 @@
CamelFolder *folder;
CamelMimeMessage *message;
-@@ -856,45 +846,40 @@
+@@ -856,45 +846,40 @@ struct _append_msg {
void *data;
};
@@ -1608,7 +1608,7 @@
};
void
-@@ -911,7 +896,7 @@
+@@ -911,7 +896,7 @@ mail_append_mail (CamelFolder *folder, C
camel_medium_set_header (CAMEL_MEDIUM (message), "X-Mailer",
"Evolution " VERSION SUB_VERSION " " VERSION_COMMENT);
@@ -1617,7 +1617,7 @@
m->folder = folder;
camel_object_ref(folder);
m->message = message;
-@@ -921,13 +906,13 @@
+@@ -921,13 +906,13 @@ mail_append_mail (CamelFolder *folder, C
m->done = done;
m->data = data;
@@ -1633,7 +1633,7 @@
CamelFolder *source;
GPtrArray *uids;
-@@ -939,24 +924,21 @@
+@@ -939,24 +924,21 @@ struct _transfer_msg {
void *data;
};
@@ -1663,7 +1663,7 @@
return;
if (dest == m->source) {
-@@ -968,7 +950,7 @@
+@@ -968,7 +950,7 @@ transfer_messages_transfer (struct _mail
camel_folder_freeze (m->source);
camel_folder_freeze (dest);
@@ -1672,7 +1672,7 @@
/* make sure all deleted messages are marked as seen */
-@@ -987,29 +969,26 @@
+@@ -987,29 +969,26 @@ transfer_messages_transfer (struct _mail
}
static void
@@ -1711,7 +1711,7 @@
};
void
-@@ -1026,7 +1005,7 @@
+@@ -1026,7 +1005,7 @@ mail_transfer_messages (CamelFolder *sou
g_return_if_fail (uids != NULL);
g_return_if_fail (dest_uri != NULL);
@@ -1720,7 +1720,7 @@
m->source = source;
camel_object_ref (source);
m->uids = uids;
-@@ -1036,13 +1015,13 @@
+@@ -1036,13 +1015,13 @@ mail_transfer_messages (CamelFolder *sou
m->done = done;
m->data = data;
@@ -1736,7 +1736,7 @@
CamelStore *store;
CamelFolderInfo *info;
-@@ -1050,10 +1029,9 @@
+@@ -1050,10 +1029,9 @@ struct _get_folderinfo_msg {
void *data;
};
@@ -1749,7 +1749,7 @@
char *ret, *name;
name = camel_service_get_name((CamelService *)m->store, TRUE);
-@@ -1063,25 +1041,22 @@
+@@ -1063,25 +1041,22 @@ get_folderinfo_desc (struct _mail_msg *m
}
static void
@@ -1780,7 +1780,7 @@
g_free (url);
}
-@@ -1090,20 +1065,19 @@
+@@ -1090,20 +1065,19 @@ get_folderinfo_got (struct _mail_msg *mm
}
static void
@@ -1808,7 +1808,7 @@
};
int
-@@ -1112,19 +1086,19 @@
+@@ -1112,19 +1086,19 @@ mail_get_folderinfo (CamelStore *store,
struct _get_folderinfo_msg *m;
int id;
@@ -1833,7 +1833,7 @@
return id;
}
-@@ -1196,7 +1170,7 @@
+@@ -1196,7 +1170,7 @@ mail_build_attachment(CamelFolder *folde
presumably create a folder ... */
struct _get_folder_msg {
@@ -1842,7 +1842,7 @@
char *uri;
guint32 flags;
-@@ -1205,71 +1179,64 @@
+@@ -1205,71 +1179,64 @@ struct _get_folder_msg {
void *data;
};
@@ -1931,7 +1931,7 @@
char *uri;
CamelStore *store;
-@@ -1277,50 +1244,43 @@
+@@ -1277,50 +1244,43 @@ struct _get_store_msg {
void *data;
};
@@ -1994,7 +1994,7 @@
};
int
-@@ -1329,25 +1289,25 @@
+@@ -1329,25 +1289,25 @@ mail_get_store (const char *uri, CamelOp
struct _get_store_msg *m;
int id;
@@ -2026,7 +2026,7 @@
char *uri;
gboolean removed;
-@@ -1355,18 +1315,15 @@
+@@ -1355,18 +1315,15 @@ struct _remove_folder_msg {
void *data;
};
@@ -2048,7 +2048,7 @@
CamelStore *store;
CamelFolder *folder;
GPtrArray *uids;
-@@ -1374,7 +1331,7 @@
+@@ -1374,7 +1331,7 @@ remove_folder_get (struct _mail_msg *mm)
m->removed = FALSE;
@@ -2057,7 +2057,7 @@
if (!folder)
return;
-@@ -1394,16 +1351,14 @@
+@@ -1394,16 +1351,14 @@ remove_folder_get (struct _mail_msg *mm)
camel_store_unsubscribe_folder (store, folder->full_name, NULL);
/* Then delete the folder from the store */
@@ -2077,7 +2077,7 @@
if (m->removed) {
/* FIXME: Remove this folder from the folder cache ??? */
}
-@@ -1413,18 +1368,17 @@
+@@ -1413,18 +1368,17 @@ remove_folder_got (struct _mail_msg *mm)
}
static void
@@ -2103,7 +2103,7 @@
};
void
-@@ -1432,59 +1386,56 @@
+@@ -1432,59 +1386,56 @@ mail_remove_folder (const char *uri, voi
{
struct _remove_folder_msg *m;
@@ -2181,7 +2181,7 @@
};
void
-@@ -1492,19 +1443,19 @@
+@@ -1492,19 +1443,19 @@ mail_sync_folder(CamelFolder *folder, vo
{
struct _sync_folder_msg *m;
@@ -2204,7 +2204,7 @@
CamelStore *store;
int expunge;
-@@ -1512,9 +1463,9 @@
+@@ -1512,9 +1463,9 @@ struct _sync_store_msg {
void *data;
};
@@ -2216,7 +2216,7 @@
char *uri, *res;
uri = camel_url_to_string(((CamelService *)m->store)->url, CAMEL_URL_HIDE_ALL);
-@@ -1527,33 +1478,31 @@
+@@ -1527,33 +1478,31 @@ static char *sync_store_desc(struct _mai
return res;
}
@@ -2263,7 +2263,7 @@
};
void
-@@ -1561,36 +1510,37 @@
+@@ -1561,36 +1510,37 @@ mail_sync_store(CamelStore *store, int e
{
struct _sync_store_msg *m;
@@ -2313,7 +2313,7 @@
};
void
-@@ -1598,35 +1548,36 @@
+@@ -1598,35 +1548,36 @@ mail_refresh_folder(CamelFolder *folder,
{
struct _sync_folder_msg *m;
@@ -2362,7 +2362,7 @@
};
void
-@@ -1634,31 +1585,30 @@
+@@ -1634,31 +1585,30 @@ mail_expunge_folder(CamelFolder *folder,
{
struct _sync_folder_msg *m;
@@ -2399,7 +2399,7 @@
return g_strdup_printf (_("Emptying trash in \'%s\'"),
m->account ? m->account->name : _("Local Folders"));
#else
-@@ -1666,49 +1616,48 @@
+@@ -1666,49 +1616,48 @@ static char *empty_trash_desc(struct _ma
#endif
}
@@ -2464,7 +2464,7 @@
};
void
-@@ -1716,20 +1665,20 @@
+@@ -1716,20 +1665,20 @@ mail_empty_trash(EAccount *account, void
{
struct _empty_trash_msg *m;
@@ -2488,7 +2488,7 @@
CamelFolder *folder;
char *uid;
-@@ -1739,32 +1688,28 @@
+@@ -1739,32 +1688,28 @@ struct _get_message_msg {
CamelOperation *cancel;
};
@@ -2530,7 +2530,7 @@
g_free (m->uid);
camel_object_unref (m->folder);
camel_operation_unref (m->cancel);
-@@ -1773,21 +1718,22 @@
+@@ -1773,21 +1718,22 @@ static void get_message_free(struct _mai
camel_object_unref (m->message);
}
@@ -2560,7 +2560,7 @@
m->folder = folder;
camel_object_ref(folder);
m->uid = g_strdup(uid);
-@@ -1795,37 +1741,37 @@
+@@ -1795,37 +1741,37 @@ mail_get_message(CamelFolder *folder, co
m->done = (void (*) (CamelFolder *, const char *, CamelMimeMessage *, void *)) done;
m->cancel = camel_operation_new(NULL, NULL);
@@ -2610,7 +2610,7 @@
m->folder = folder;
camel_object_ref(folder);
m->uid = g_strdup(uid);
-@@ -1833,13 +1779,13 @@
+@@ -1833,13 +1779,13 @@ mail_get_messagex(CamelFolder *folder, c
m->done = (void (*) (CamelFolder *, const char *, CamelMimeMessage *, void *)) done;
m->cancel = camel_operation_new(NULL, NULL);
@@ -2626,7 +2626,7 @@
CamelFolder *folder;
GPtrArray *uids;
-@@ -1849,26 +1795,25 @@
+@@ -1849,26 +1795,25 @@ struct _get_messages_msg {
void *data;
};
@@ -2659,7 +2659,7 @@
if (message == NULL)
break;
-@@ -1876,17 +1821,16 @@
+@@ -1876,17 +1821,16 @@ static void get_messages_get(struct _mai
}
}
@@ -2681,7 +2681,7 @@
int i;
em_utils_uids_free (m->uids);
-@@ -1898,11 +1842,12 @@
+@@ -1898,11 +1842,12 @@ static void get_messages_free(struct _ma
camel_object_unref(m->folder);
}
@@ -2699,7 +2699,7 @@
};
void
-@@ -1912,7 +1857,7 @@
+@@ -1912,7 +1857,7 @@ mail_get_messages(CamelFolder *folder, G
{
struct _get_messages_msg *m;
@@ -2708,7 +2708,7 @@
m->folder = folder;
camel_object_ref(folder);
m->uids = uids;
-@@ -1920,13 +1865,13 @@
+@@ -1920,13 +1865,13 @@ mail_get_messages(CamelFolder *folder, G
m->data = data;
m->done = done;
@@ -2724,7 +2724,7 @@
CamelFolder *folder;
GPtrArray *uids;
-@@ -1935,10 +1880,9 @@
+@@ -1935,10 +1880,9 @@ struct _save_messages_msg {
void *data;
};
@@ -2737,7 +2737,7 @@
return g_strdup_printf(ngettext("Saving %d message",
"Saving %d messsages", m->uids->len),
m->uids->len);
-@@ -1977,9 +1921,8 @@
+@@ -1977,9 +1921,8 @@ save_prepare_part (CamelMimePart *mime_p
}
static void
@@ -2748,7 +2748,7 @@
CamelStreamFilter *filtered_stream;
CamelMimeFilterFrom *from_filter;
CamelStream *stream;
-@@ -1996,8 +1939,8 @@
+@@ -1996,8 +1939,8 @@ save_messages_save (struct _mail_msg *mm
CamelMimeMessage *message;
int pc = ((i+1) * 100) / m->uids->len;
@@ -2759,7 +2759,7 @@
if (message == NULL)
break;
-@@ -2009,7 +1952,7 @@
+@@ -2009,7 +1952,7 @@ save_messages_save (struct _mail_msg *mm
|| camel_stream_flush(stream) == -1
|| camel_data_wrapper_write_to_stream((CamelDataWrapper *)message, (CamelStream *)filtered_stream) == -1
|| camel_stream_flush((CamelStream *)filtered_stream) == -1) {
@@ -2768,7 +2768,7 @@
_("Error saving messages to: %s:\n %s"), m->path, strerror(errno));
g_free(from);
camel_object_unref((CamelObject *)message);
-@@ -2023,28 +1966,27 @@
+@@ -2023,28 +1966,27 @@ save_messages_save (struct _mail_msg *mm
camel_object_unref(stream);
}
@@ -2807,7 +2807,7 @@
};
int
-@@ -2054,7 +1996,7 @@
+@@ -2054,7 +1996,7 @@ mail_save_messages(CamelFolder *folder,
struct _save_messages_msg *m;
int id;
@@ -2816,7 +2816,7 @@
m->folder = folder;
camel_object_ref(folder);
m->uids = uids;
-@@ -2062,8 +2004,8 @@
+@@ -2062,8 +2004,8 @@ mail_save_messages(CamelFolder *folder,
m->data = data;
m->done = done;
@@ -2827,7 +2827,7 @@
return id;
}
-@@ -2071,7 +2013,7 @@
+@@ -2071,7 +2013,7 @@ mail_save_messages(CamelFolder *folder,
/* ** SAVE PART ******************************************************* */
struct _save_part_msg {
@@ -2836,7 +2836,7 @@
CamelMimePart *part;
char *path;
-@@ -2080,27 +2022,27 @@
+@@ -2080,27 +2022,27 @@ struct _save_part_msg {
gboolean readonly;
};
@@ -2869,7 +2869,7 @@
_("Cannot create output file: %s:\n %s"),
m->path, g_strerror (errno));
return;
-@@ -2110,7 +2052,7 @@
+@@ -2110,7 +2052,7 @@ save_part_save (struct _mail_msg *mm)
if (camel_data_wrapper_decode_to_stream (content, stream) == -1
|| camel_stream_flush (stream) == -1)
@@ -2878,7 +2878,7 @@
_("Could not write data: %s"),
g_strerror (errno));
-@@ -2118,27 +2060,25 @@
+@@ -2118,27 +2060,25 @@ save_part_save (struct _mail_msg *mm)
}
static void
@@ -2915,7 +2915,7 @@
};
int
-@@ -2147,7 +2087,7 @@
+@@ -2147,7 +2087,7 @@ mail_save_part (CamelMimePart *part, con
{
struct _save_part_msg *m;
int id;
@@ -2924,7 +2924,7 @@
m->part = part;
camel_object_ref (part);
m->path = g_strdup (path);
-@@ -2155,8 +2095,8 @@
+@@ -2155,8 +2095,8 @@ mail_save_part (CamelMimePart *part, con
m->done = done;
m->readonly = readonly;
@@ -2935,7 +2935,7 @@
return id;
}
-@@ -2165,7 +2105,7 @@
+@@ -2165,7 +2105,7 @@ mail_save_part (CamelMimePart *part, con
/* ** PREPARE OFFLINE ***************************************************** */
struct _prep_offline_msg {
@@ -2944,7 +2944,7 @@
CamelOperation *cancel;
char *uri;
-@@ -2173,22 +2113,22 @@
+@@ -2173,22 +2113,22 @@ struct _prep_offline_msg {
void *data;
};
@@ -2972,7 +2972,7 @@
}
/* prepare_for_offline should do this? */
/* of course it should all be atomic, but ... */
-@@ -2200,28 +2140,27 @@
+@@ -2200,28 +2140,27 @@ static void prep_offline_do(struct _mail
camel_operation_unregister(m->cancel);
}
@@ -3011,7 +3011,7 @@
};
void
-@@ -2232,7 +2171,7 @@
+@@ -2232,7 +2171,7 @@ mail_prep_offline(const char *uri,
{
struct _prep_offline_msg *m;
@@ -3020,7 +3020,7 @@
m->cancel = cancel;
if (cancel)
camel_operation_ref(cancel);
-@@ -2240,13 +2179,13 @@
+@@ -2240,13 +2179,13 @@ mail_prep_offline(const char *uri,
m->data = data;
m->done = done;
@@ -3036,7 +3036,7 @@
CamelStore *store;
gboolean offline;
-@@ -2254,9 +2193,9 @@
+@@ -2254,9 +2193,9 @@ struct _set_offline_msg {
void *data;
};
@@ -3048,7 +3048,7 @@
char *service_name = camel_service_get_name (CAMEL_SERVICE (m->store), TRUE);
char *msg;
-@@ -2266,61 +2205,59 @@
+@@ -2266,61 +2205,59 @@ static char *set_offline_desc(struct _ma
return msg;
}
@@ -3127,7 +3127,7 @@
};
int
-@@ -2337,61 +2274,59 @@
+@@ -2337,61 +2274,59 @@ mail_store_set_offline (CamelStore *stor
if (offline)
camel_service_cancel_connect (CAMEL_SERVICE (store));
@@ -3210,7 +3210,7 @@
};
int
-@@ -2404,14 +2339,14 @@
+@@ -2404,14 +2339,14 @@ mail_store_prepare_offline (CamelStore *
* thread won't get queued behind a hung connect op.
*/
@@ -3228,7 +3228,7 @@
return id;
}
-@@ -2428,7 +2363,7 @@
+@@ -2428,7 +2363,7 @@ mail_execute_shell_command (CamelFilterD
/* Async service-checking/authtype-lookup code. */
struct _check_msg {
@@ -3237,7 +3237,7 @@
char *url;
CamelProviderType type;
-@@ -2438,51 +2373,47 @@
+@@ -2438,51 +2373,47 @@ struct _check_msg {
void *data;
};
@@ -3303,7 +3303,7 @@
};
int
-@@ -2491,14 +2422,14 @@
+@@ -2491,14 +2422,14 @@ mail_check_service(const char *url, Came
struct _check_msg *m;
int id;
@@ -3321,8 +3321,8 @@
return id;
}
---- evolution-2.11.92/mail/mail-mt.h.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-mt.h 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/mail-mt.h.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/mail-mt.h 2007-11-27 12:06:04.000000000 +0100
@@ -23,47 +23,64 @@
#ifndef _MAIL_MT
#define _MAIL_MT
@@ -3409,7 +3409,7 @@
/* request a string/password */
char *mail_get_password (CamelService *service, const char *prompt,
-@@ -112,24 +129,6 @@
+@@ -112,24 +129,6 @@ void *mail_call_main(mail_call_t type, M
void mail_enable_stop(void);
void mail_disable_stop(void);
@@ -3434,9 +3434,9 @@
/* A generic proxy event for anything that can be proxied during the life of the mailer (almost nothing) */
/* Note that almost all objects care about the lifecycle of their events, so this cannot be used */
extern MailAsyncEvent *mail_async_event;
---- evolution-2.11.92/mail/mail-component.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-component.c 2007-09-04 00:19:08.000000000 -0400
-@@ -1005,7 +1005,7 @@
+--- evolution-2.12.2/mail/mail-component.c.kill-ethread 2007-11-26 03:30:12.000000000 +0100
++++ evolution-2.12.2/mail/mail-component.c 2007-11-27 12:06:04.000000000 +0100
+@@ -1001,7 +1001,7 @@ impl_handleURI (PortableServer_Servant s
if (camel_url_get_param(url, "uid") != NULL) {
char *curi = em_uri_to_camel(uri);
@@ -3445,8 +3445,8 @@
g_free(curi);
} else {
g_warning("email uri's must include a uid parameter");
---- evolution-2.11.92/mail/mail-vfolder.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-vfolder.c 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/mail-vfolder.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/mail-vfolder.c 2007-11-27 12:06:04.000000000 +0100
@@ -21,7 +21,7 @@
*/
@@ -3456,7 +3456,7 @@
#include
#include
-@@ -75,7 +75,7 @@
+@@ -75,7 +75,7 @@ static void rule_changed(FilterRule *rul
/* ********************************************************************** */
struct _setup_msg {
@@ -3465,7 +3465,7 @@
CamelFolder *folder;
char *query;
-@@ -83,18 +83,15 @@
+@@ -83,18 +83,15 @@ struct _setup_msg {
GList *sources_folder;
};
@@ -3487,7 +3487,7 @@
GList *l, *list = NULL;
CamelFolder *folder;
-@@ -105,12 +102,12 @@
+@@ -105,12 +102,12 @@ vfolder_setup_do(struct _mail_msg *mm)
l = m->sources_uri;
while (l && !shutdown) {
d(printf(" Adding uri: %s\n", (char *)l->data));
@@ -3502,7 +3502,7 @@
}
l = l->next;
}
-@@ -135,17 +132,13 @@
+@@ -135,17 +132,13 @@ vfolder_setup_do(struct _mail_msg *mm)
}
static void
@@ -3522,7 +3522,7 @@
GList *l;
camel_object_unref(m->folder);
-@@ -166,11 +159,12 @@
+@@ -166,11 +159,12 @@ vfolder_setup_free (struct _mail_msg *mm
g_list_free(m->sources_folder);
}
@@ -3540,7 +3540,7 @@
};
/* sources_uri should be camel uri's */
-@@ -180,15 +174,15 @@
+@@ -180,15 +174,15 @@ vfolder_setup(CamelFolder *folder, const
struct _setup_msg *m;
int id;
@@ -3559,7 +3559,7 @@
return id;
}
-@@ -196,17 +190,16 @@
+@@ -196,17 +190,16 @@ vfolder_setup(CamelFolder *folder, const
/* ********************************************************************** */
struct _adduri_msg {
@@ -3580,7 +3580,7 @@
char *euri, *desc = NULL;
/* Yuck yuck. Lookup the account name and use that to describe the path */
-@@ -250,9 +243,8 @@
+@@ -250,9 +243,8 @@ vfolder_adduri_desc(struct _mail_msg *mm
}
static void
@@ -3591,7 +3591,7 @@
GList *l;
CamelFolder *folder = NULL;
-@@ -269,7 +261,7 @@
+@@ -269,7 +261,7 @@ vfolder_adduri_do(struct _mail_msg *mm)
}
if (folder == NULL)
@@ -3600,7 +3600,7 @@
if (folder != NULL) {
l = m->folders;
-@@ -285,28 +277,24 @@
+@@ -285,28 +277,24 @@ vfolder_adduri_do(struct _mail_msg *mm)
}
static void
@@ -3637,7 +3637,7 @@
};
-@@ -317,13 +305,13 @@
+@@ -317,13 +305,13 @@ vfolder_adduri(const char *uri, GList *f
struct _adduri_msg *m;
int id;
@@ -3654,7 +3654,7 @@
return id;
}
-@@ -447,7 +435,7 @@
+@@ -447,7 +435,7 @@ mail_vfolder_add_uri(CamelStore *store,
return;
}
@@ -3663,7 +3663,7 @@
is_ignore = uri_is_ignore(store, curi);
-@@ -543,7 +531,7 @@
+@@ -543,7 +531,7 @@ mail_vfolder_delete_uri(CamelStore *stor
d(printf ("Deleting uri to check: %s\n", uri));
@@ -3672,7 +3672,7 @@
changed = g_string_new ("");
-@@ -627,7 +615,7 @@
+@@ -627,7 +615,7 @@ mail_vfolder_rename_uri(CamelStore *stor
if (context == NULL || uri_is_spethal(store, cfrom) || uri_is_spethal(store, cto))
return;
@@ -3681,8 +3681,8 @@
from = em_uri_from_camel(cfrom);
to = em_uri_from_camel(cto);
---- evolution-2.11.92/mail/em-folder-view.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-folder-view.c 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/em-folder-view.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-folder-view.c 2007-11-27 12:06:04.000000000 +0100
@@ -71,6 +71,7 @@
#include
@@ -3691,7 +3691,7 @@
#include "menus/gal-view-etable.h"
#include "menus/gal-view-factory-etable.h"
-@@ -777,7 +778,7 @@
+@@ -777,7 +778,7 @@ emfv_got_folder(char *uri, CamelFolder *
static void
emfv_set_folder_uri(EMFolderView *emfv, const char *uri)
{
@@ -3700,7 +3700,7 @@
}
static void
-@@ -1752,7 +1753,7 @@
+@@ -1752,7 +1753,7 @@ filter_type_uid (CamelFolder *folder, co
data->type = type;
data->source = source;
@@ -3709,7 +3709,7 @@
}
static void
-@@ -1850,7 +1851,7 @@
+@@ -1850,7 +1851,7 @@ vfolder_type_uid (CamelFolder *folder, c
data->type = type;
data->uri = g_strdup (uri);
@@ -3718,7 +3718,7 @@
}
static void
-@@ -2418,7 +2419,7 @@
+@@ -2421,7 +2422,7 @@ emfv_message_selected_timeout(void *data
emfv->displayed_uid);
gtk_html_stream_close(hstream, GTK_HTML_STREAM_OK);
*/
@@ -3727,9 +3727,9 @@
} else {
e_profile_event_emit("goto.empty", "", 0);
g_free(emfv->priv->selected_uid);
---- evolution-2.11.92/mail/em-folder-properties.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-folder-properties.c 2007-09-04 00:19:08.000000000 -0400
-@@ -386,7 +386,7 @@
+--- evolution-2.12.2/mail/em-folder-properties.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-folder-properties.c 2007-11-27 12:06:04.000000000 +0100
+@@ -386,7 +386,7 @@ em_folder_properties_show(GtkWindow *par
}
if (folder == NULL)
@@ -3738,9 +3738,9 @@
else
emfp_dialog_got_folder((char *)uri, folder, NULL);
}
---- evolution-2.11.92/mail/mail-send-recv.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-send-recv.c 2007-09-04 00:19:08.000000000 -0400
-@@ -770,23 +770,22 @@
+--- evolution-2.12.2/mail/mail-send-recv.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/mail-send-recv.c 2007-11-27 12:06:04.000000000 +0100
+@@ -770,23 +770,22 @@ receive_get_folder(CamelFilterDriver *d,
/* ********************************************************************** */
struct _refresh_folders_msg {
@@ -3768,7 +3768,7 @@
int i;
CamelFolder *folder;
CamelException ex = CAMEL_EXCEPTION_INITIALISER;
-@@ -808,17 +807,14 @@
+@@ -808,17 +807,14 @@ refresh_folders_get (struct _mail_msg *m
}
static void
@@ -3788,7 +3788,7 @@
int i;
for (i=0;ifolders->len;i++)
-@@ -827,11 +823,12 @@
+@@ -827,11 +823,12 @@ refresh_folders_free (struct _mail_msg *
camel_object_unref(m->store);
}
@@ -3806,7 +3806,7 @@
};
static void
-@@ -864,13 +861,13 @@
+@@ -864,13 +861,13 @@ receive_update_got_folderinfo(CamelStore
get_folders(store, folders, info);
@@ -3822,9 +3822,9 @@
} else {
receive_done ("", data);
}
---- evolution-2.11.92/mail/em-format-html.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-format-html.c 2007-09-04 00:19:08.000000000 -0400
-@@ -165,7 +165,7 @@
+--- evolution-2.12.2/mail/em-format-html.c.kill-ethread 2007-11-26 03:30:12.000000000 +0100
++++ evolution-2.12.2/mail/em-format-html.c 2007-11-27 12:06:04.000000000 +0100
+@@ -165,7 +165,7 @@ efh_gtkhtml_destroy(GtkHTML *html, EMFor
if (efh->priv->format_timeout_id != 0) {
g_source_remove(efh->priv->format_timeout_id);
efh->priv->format_timeout_id = 0;
@@ -3833,7 +3833,7 @@
efh->priv->format_timeout_msg = NULL;
}
-@@ -1205,7 +1205,7 @@
+@@ -1205,7 +1205,7 @@ efh_builtin_init(EMFormatHTMLClass *efhc
/* Sigh, this is so we have a cancellable, async rendering thread */
struct _format_msg {
@@ -3842,7 +3842,7 @@
EMFormatHTML *format;
EMFormat *format_source;
-@@ -1215,14 +1215,15 @@
+@@ -1215,14 +1215,15 @@ struct _format_msg {
CamelMimeMessage *message;
};
@@ -3861,7 +3861,7 @@
struct _EMFormatHTMLJob *job;
struct _EMFormatPURITree *puri_level;
int cancelled = FALSE;
-@@ -1307,10 +1308,9 @@
+@@ -1307,10 +1308,9 @@ static void efh_format_do(struct _mail_m
((EMFormat *)m->format)->pending_uri_level = puri_level;
}
@@ -3874,7 +3874,7 @@
d(printf("formatting finished\n"));
m->format->load_http_now = FALSE;
-@@ -1318,10 +1318,9 @@
+@@ -1318,10 +1318,9 @@ static void efh_format_done(struct _mail
g_signal_emit_by_name(m->format, "complete");
}
@@ -3887,7 +3887,7 @@
d(printf("formatter freed\n"));
g_object_unref(m->format);
if (m->estream) {
-@@ -1337,11 +1336,12 @@
+@@ -1337,11 +1336,12 @@ static void efh_format_free(struct _mail
g_object_unref(m->format_source);
}
@@ -3905,7 +3905,7 @@
};
static gboolean
-@@ -1352,7 +1352,7 @@
+@@ -1352,7 +1352,7 @@ efh_format_timeout(struct _format_msg *m
struct _EMFormatHTMLPrivate *p = efh->priv;
if (m->format->html == NULL) {
@@ -3914,7 +3914,7 @@
return FALSE;
}
-@@ -1380,7 +1380,7 @@
+@@ -1380,7 +1380,7 @@ efh_format_timeout(struct _format_msg *m
if (m->message == NULL) {
hstream = gtk_html_begin(efh->html);
gtk_html_stream_close(hstream, GTK_HTML_STREAM_OK);
@@ -3922,8 +3922,8 @@
+ mail_msg_unref(m);
p->last_part = NULL;
} else {
- hstream = gtk_html_begin(efh->html);
-@@ -1404,8 +1404,8 @@
+ if (p->last_part != m->message) {
+@@ -1405,8 +1405,8 @@ efh_format_timeout(struct _format_msg *m
p->last_part = m->message;
}
@@ -3934,7 +3934,7 @@
}
efh->priv->format_timeout_id = 0;
-@@ -1429,11 +1429,11 @@
+@@ -1430,11 +1430,11 @@ static void efh_format_clone(EMFormat *e
d(printf(" timeout for last still active, removing ...\n"));
g_source_remove(efh->priv->format_timeout_id);
efh->priv->format_timeout_id = 0;
@@ -3948,9 +3948,9 @@
m->format = (EMFormatHTML *)emf;
g_object_ref(emf);
m->format_source = emfsource;
---- evolution-2.11.92/mail/em-sync-stream.h.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-sync-stream.h 2007-09-04 00:19:08.000000000 -0400
-@@ -29,41 +29,45 @@
+--- evolution-2.12.2/mail/em-sync-stream.h.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-sync-stream.h 2007-11-27 12:06:04.000000000 +0100
+@@ -29,41 +29,45 @@ requests are always handled in the main
#ifndef EM_SYNC_STREAM_H
#define EM_SYNC_STREAM_H
@@ -4026,9 +4026,9 @@
+G_END_DECLS
#endif /* EM_SYNC_STREAM_H */
---- evolution-2.11.92/mail/em-subscribe-editor.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-subscribe-editor.c 2007-09-04 00:19:08.000000000 -0400
-@@ -175,7 +175,7 @@
+--- evolution-2.12.2/mail/em-subscribe-editor.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-subscribe-editor.c 2007-11-27 12:06:04.000000000 +0100
+@@ -175,7 +175,7 @@ sub_unref(EMSubscribe *sub)
/* ** Subscribe folder operation **************************************** */
struct _zsubscribe_msg {
@@ -4037,7 +4037,7 @@
EMSubscribe *sub;
EMSubscribeNode *node;
-@@ -184,20 +184,18 @@
+@@ -184,20 +184,18 @@ struct _zsubscribe_msg {
};
static void
@@ -4063,7 +4063,7 @@
GtkTreeIter iter;
GtkTreeModel *model;
EMSubscribeNode *node;
-@@ -207,7 +205,7 @@
+@@ -207,7 +205,7 @@ sub_folder_subscribed (struct _mail_msg
if (m->sub->cancel)
return;
@@ -4072,7 +4072,7 @@
if (m->subscribe)
m->node->info->flags |= CAMEL_FOLDER_SUBSCRIBED;
else
-@@ -228,8 +226,8 @@
+@@ -228,8 +226,8 @@ sub_folder_subscribed (struct _mail_msg
/* queue any further ones, or if out, update the ui */
next = (struct _zsubscribe_msg *)e_dlist_remhead(&m->sub->subscribe);
if (next) {
@@ -4083,7 +4083,7 @@
} else {
/* should it go off the model instead? */
sub_selection_changed(gtk_tree_view_get_selection(m->sub->tree), m->sub);
-@@ -237,19 +235,18 @@
+@@ -237,19 +235,18 @@ sub_folder_subscribed (struct _mail_msg
}
static void
@@ -4110,7 +4110,7 @@
};
/* spath is tree path in string form */
-@@ -259,18 +256,18 @@
+@@ -259,18 +256,18 @@ sub_subscribe_folder (EMSubscribe *sub,
struct _zsubscribe_msg *m;
int id;
@@ -4132,7 +4132,7 @@
} else {
d(printf("queueing subscribe folder '%s'\n", spath));
e_dlist_addtail(&sub->subscribe, (EDListNode *)m);
-@@ -341,7 +338,7 @@
+@@ -341,7 +338,7 @@ sub_fill_level(EMSubscribe *sub, CamelFo
/* async query of folderinfo */
struct _emse_folderinfo_msg {
@@ -4141,7 +4141,7 @@
int seq;
-@@ -351,31 +348,29 @@
+@@ -351,31 +348,29 @@ struct _emse_folderinfo_msg {
};
static void
@@ -4180,7 +4180,7 @@
}
if (m->info) {
-@@ -396,10 +391,8 @@
+@@ -396,10 +391,8 @@ sub_folderinfo_got(struct _mail_msg *mm)
}
static void
@@ -4192,7 +4192,7 @@
if (m->info)
m->sub->info_list = g_slist_prepend(m->sub->info_list, m->info);
-@@ -415,11 +408,12 @@
+@@ -415,11 +408,12 @@ sub_folderinfo_free(struct _mail_msg *mm
sub_unref(m->sub);
}
@@ -4210,7 +4210,7 @@
};
static int
-@@ -431,19 +425,19 @@
+@@ -431,19 +425,19 @@ sub_queue_fill_level(EMSubscribe *sub, E
d(printf("%s:%d:%s: Starting get folderinfo of '%s'\n", __FILE__, __LINE__, __GNUC_PRETTY_FUNCTION__,
node?node->info->full_name:""));
@@ -4234,7 +4234,7 @@
return id;
}
-@@ -573,7 +567,7 @@
+@@ -573,7 +567,7 @@ sub_destroy(GtkWidget *w, EMSubscribe *s
mail_msg_cancel(sub->subscribe_id);
while ( (m = (struct _zsubscribe_msg *)e_dlist_remhead(&sub->subscribe)) )
@@ -4243,9 +4243,9 @@
sub_unref(sub);
}
---- evolution-2.11.92/mail/em-format-html-print.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-format-html-print.c 2007-09-04 00:19:08.000000000 -0400
-@@ -228,7 +228,7 @@
+--- evolution-2.12.2/mail/em-format-html-print.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-format-html-print.c 2007-11-27 12:06:04.000000000 +0100
+@@ -228,7 +228,7 @@ em_format_html_print_message (EMFormatHT
g_object_ref (efhp);
mail_get_message (
@@ -4254,8 +4254,8 @@
}
void
---- evolution-2.11.92/mail/mail-session.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-session.c 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/mail-session.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/mail-session.c 2007-11-27 12:06:04.000000000 +0100
@@ -35,7 +35,7 @@
#include
@@ -4265,7 +4265,7 @@
#include /* FIXME: this is where camel_init is defined, it shouldn't include everything else */
#include
-@@ -264,148 +264,145 @@
+@@ -264,148 +264,145 @@ forget_password (CamelSession *session,
/* ********************************************************************** */
@@ -4495,7 +4495,7 @@
}
static CamelFolder *
-@@ -541,7 +538,7 @@
+@@ -541,7 +538,7 @@ get_filter_driver (CamelSession *session
/* TODO: This is very temporary, until we have a better way to do the progress reporting,
we just borrow a dummy mail-mt thread message and hook it onto out camel thread message */
@@ -4504,7 +4504,7 @@
static void *ms_thread_msg_new(CamelSession *session, CamelSessionThreadOps *ops, unsigned int size)
{
-@@ -550,7 +547,7 @@
+@@ -550,7 +547,7 @@ static void *ms_thread_msg_new(CamelSess
/* We create a dummy mail_msg, and then copy its cancellation port over to ours, so
we get cancellation and progress in common with hte existing mail code, for free */
if (msg) {
@@ -4513,7 +4513,7 @@
msg->data = m;
camel_operation_unref(msg->op);
-@@ -563,7 +560,7 @@
+@@ -563,7 +560,7 @@ static void *ms_thread_msg_new(CamelSess
static void ms_thread_msg_free(CamelSession *session, CamelSessionThreadMsg *m)
{
@@ -4522,7 +4522,7 @@
ms_parent_class->thread_msg_free(session, m);
}
-@@ -686,22 +683,23 @@
+@@ -686,22 +683,23 @@ mail_session_set_interactive (gboolean i
MAIL_SESSION (session)->interactive = interactive;
if (!interactive) {
@@ -4552,9 +4552,9 @@
}
}
}
---- evolution-2.11.92/mail/message-list.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/message-list.c 2007-09-04 00:19:08.000000000 -0400
-@@ -1841,7 +1841,7 @@
+--- evolution-2.12.2/mail/message-list.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/message-list.c 2007-11-27 12:06:04.000000000 +0100
+@@ -1841,7 +1841,7 @@ ml_tree_drag_data_get (ETree *tree, int
/* TODO: merge this with the folder tree stuff via empopup targets */
/* Drop handling */
struct _drop_msg {
@@ -4563,7 +4563,7 @@
GdkDragContext *context;
-@@ -1858,11 +1858,9 @@
+@@ -1858,11 +1858,9 @@ struct _drop_msg {
unsigned int aborted:1;
};
@@ -4577,7 +4577,7 @@
if (m->move)
return g_strdup_printf(_("Moving messages into folder %s"), m->folder->full_name);
else
-@@ -1870,13 +1868,11 @@
+@@ -1870,13 +1868,11 @@ ml_drop_async_desc (struct _mail_msg *mm
}
static void
@@ -4593,7 +4593,7 @@
break;
case DND_MESSAGE_RFC822:
em_utils_selection_get_message(m->selection, m->folder);
-@@ -1888,9 +1884,8 @@
+@@ -1888,9 +1884,8 @@ ml_drop_async_drop(struct _mail_msg *mm)
}
static void
@@ -4604,7 +4604,7 @@
gboolean success, delete;
/* ?? */
-@@ -1898,7 +1893,7 @@
+@@ -1898,7 +1893,7 @@ ml_drop_async_done(struct _mail_msg *mm)
success = FALSE;
delete = FALSE;
} else {
@@ -4613,7 +4613,7 @@
delete = success && m->move && !m->moved;
}
-@@ -1906,10 +1901,8 @@
+@@ -1906,10 +1901,8 @@ ml_drop_async_done(struct _mail_msg *mm)
}
static void
@@ -4625,7 +4625,7 @@
g_object_unref(m->context);
camel_object_unref(m->folder);
-@@ -1917,18 +1910,19 @@
+@@ -1917,18 +1910,19 @@ ml_drop_async_free(struct _mail_msg *mm)
g_free(m->selection);
}
@@ -4651,7 +4651,7 @@
}
static void
-@@ -1955,7 +1949,7 @@
+@@ -1955,7 +1949,7 @@ ml_drop_popup_cancel(EPopup *ep, EPopupI
struct _drop_msg *m = data;
m->aborted = TRUE;
@@ -4660,7 +4660,7 @@
}
static EPopupItem ml_drop_popup_menu[] = {
-@@ -1985,7 +1979,7 @@
+@@ -1985,7 +1979,7 @@ ml_tree_drag_data_received (ETree *tree,
if (!ml->folder || data->data == NULL || data->length == -1)
return;
@@ -4669,7 +4669,7 @@
m->context = context;
g_object_ref(context);
m->folder = ml->folder;
-@@ -3721,7 +3715,7 @@
+@@ -3721,7 +3715,7 @@ save_hide_state (MessageList *ml)
/* ** REGENERATE MESSAGELIST ********************************************** */
struct _regen_list_msg {
@@ -4678,7 +4678,7 @@
int complete;
-@@ -3749,16 +3743,15 @@
+@@ -3749,16 +3743,15 @@ struct _regen_list_msg {
*/
@@ -4698,7 +4698,7 @@
GPtrArray *uids, *uidnew, *showuids, *searchuids = NULL;
CamelMessageInfo *info;
int i;
-@@ -3788,7 +3781,7 @@
+@@ -3788,7 +3781,7 @@ regen_list_regen (struct _mail_msg *mm)
} else
expr = "(match-all (not (system-flag \"deleted\")))";
}
@@ -4707,7 +4707,7 @@
} else {
char *expr;
-@@ -3798,23 +3791,23 @@
+@@ -3798,23 +3791,23 @@ regen_list_regen (struct _mail_msg *mm)
sprintf(expr, "(and (match-all (not (system-flag \"junk\")))\n %s)", m->search);
} else
expr = "(match-all (not (system-flag \"junk\")))";
@@ -4736,7 +4736,7 @@
if (uidnew) {
MESSAGE_LIST_LOCK(m->ml, hide_lock);
-@@ -3889,7 +3882,7 @@
+@@ -3889,7 +3882,7 @@ regen_list_regen (struct _mail_msg *mm)
e_profile_event_emit("list.threaduids", m->folder->full_name, 0);
@@ -4745,7 +4745,7 @@
/* update/build a new tree */
if (m->dotree) {
if (m->tree)
-@@ -3918,17 +3911,15 @@
+@@ -3918,17 +3911,15 @@ regen_list_regen (struct _mail_msg *mm)
}
static void
@@ -4765,7 +4765,7 @@
return;
if (m->ml->folder != m->folder)
-@@ -3979,9 +3970,8 @@
+@@ -3979,9 +3970,8 @@ regen_list_regened (struct _mail_msg *mm
}
static void
@@ -4776,7 +4776,7 @@
int i;
e_profile_event_emit("list.regenerated", m->folder->full_name, 0);
-@@ -4009,11 +3999,12 @@
+@@ -4009,11 +3999,12 @@ regen_list_free (struct _mail_msg *mm)
g_object_unref(m->ml);
}
@@ -4794,7 +4794,7 @@
};
static gboolean
-@@ -4023,7 +4014,7 @@
+@@ -4023,7 +4014,7 @@ ml_regen_timeout(struct _regen_list_msg
m->ml->regen = g_list_prepend(m->ml->regen, m);
/* TODO: we should manage our own thread stuff, would make cancelling outstanding stuff easier */
@@ -4803,7 +4803,7 @@
m->ml->regen_timeout_msg = NULL;
m->ml->regen_timeout_id = 0;
-@@ -4039,7 +4030,7 @@
+@@ -4039,7 +4030,7 @@ mail_regen_cancel(MessageList *ml)
GList *l = ml->regen;
while (l) {
@@ -4812,7 +4812,7 @@
if (mm->cancel)
camel_operation_cancel(mm->cancel);
-@@ -4051,7 +4042,7 @@
+@@ -4051,7 +4042,7 @@ mail_regen_cancel(MessageList *ml)
if (ml->regen_timeout_id) {
g_source_remove(ml->regen_timeout_id);
ml->regen_timeout_id = 0;
@@ -4821,7 +4821,7 @@
ml->regen_timeout_msg = NULL;
}
}
-@@ -4086,7 +4077,7 @@
+@@ -4086,7 +4077,7 @@ mail_regen_list (MessageList *ml, const
}
#endif
@@ -4830,9 +4830,9 @@
m->ml = ml;
m->search = g_strdup (search);
m->hideexpr = g_strdup (hideexpr);
---- evolution-2.11.92/mail/em-folder-tree.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-folder-tree.c 2007-09-04 00:19:08.000000000 -0400
-@@ -835,7 +835,7 @@
+--- evolution-2.12.2/mail/em-folder-tree.c.kill-ethread 2007-11-26 03:30:12.000000000 +0100
++++ evolution-2.12.2/mail/em-folder-tree.c 2007-11-27 12:06:04.000000000 +0100
+@@ -835,7 +835,7 @@ fail:
/* TODO: Merge the drop handling code/menu's into one spot using a popup target for details */
/* Drop handling */
struct _DragDataReceivedAsync {
@@ -4841,7 +4841,7 @@
/* input data */
GdkDragContext *context;
-@@ -860,17 +860,16 @@
+@@ -860,17 +860,16 @@ emft_drop_folder(struct _DragDataReceive
d(printf(" * Drop folder '%s' onto '%s'\n", m->selection->data, m->full_name));
@@ -4862,7 +4862,7 @@
CamelURL *url;
char *buf;
-@@ -894,9 +893,8 @@
+@@ -894,9 +893,8 @@ emft_drop_async_desc (struct _mail_msg *
}
static void
@@ -4873,7 +4873,7 @@
CamelFolder *folder;
/* for types other than folder, we can't drop to the root path */
-@@ -904,14 +902,14 @@
+@@ -904,14 +902,14 @@ emft_drop_async_drop (struct _mail_msg *
/* copy or move (aka rename) a folder */
emft_drop_folder(m);
} else if (m->full_name == NULL) {
@@ -4892,7 +4892,7 @@
break;
case DND_DROP_TYPE_MESSAGE_RFC822:
/* import a message/rfc822 stream */
-@@ -929,10 +927,25 @@
+@@ -929,10 +927,25 @@ emft_drop_async_drop (struct _mail_msg *
}
static void
@@ -4920,7 +4920,7 @@
g_object_unref(m->context);
camel_object_unref(m->store);
g_free(m->full_name);
-@@ -941,18 +954,19 @@
+@@ -941,18 +954,19 @@ emft_drop_async_free (struct _mail_msg *
g_free(m->selection);
}
@@ -4946,7 +4946,7 @@
}
static void
-@@ -979,7 +993,7 @@
+@@ -979,7 +993,7 @@ emft_drop_popup_cancel(EPopup *ep, EPopu
struct _DragDataReceivedAsync *m = data;
m->aborted = TRUE;
@@ -4955,7 +4955,7 @@
}
static EPopupItem emft_drop_popup_menu[] = {
-@@ -1035,7 +1049,7 @@
+@@ -1035,7 +1049,7 @@ tree_drag_data_received(GtkWidget *widge
return;
}
@@ -4964,7 +4964,7 @@
m->context = context;
g_object_ref(context);
m->store = store;
-@@ -1674,7 +1688,7 @@
+@@ -1674,7 +1688,7 @@ dump_fi (CamelFolderInfo *fi, int depth)
#endif
struct _EMFolderTreeGetFolderInfo {
@@ -4973,7 +4973,7 @@
/* input data */
GtkTreeRowReference *root;
-@@ -1687,10 +1701,9 @@
+@@ -1687,10 +1701,9 @@ struct _EMFolderTreeGetFolderInfo {
CamelFolderInfo *fi;
};
@@ -4986,7 +4986,7 @@
char *ret, *name;
name = camel_service_get_name((CamelService *)m->store, TRUE);
-@@ -1700,18 +1713,16 @@
+@@ -1700,18 +1713,16 @@ emft_get_folder_info__desc(struct _mail_
}
static void
@@ -5008,7 +5008,7 @@
struct _EMFolderTreePrivate *priv = m->emft->priv;
struct _EMFolderTreeModelStoreInfo *si;
GtkTreeIter root, iter;
-@@ -1739,7 +1750,7 @@
+@@ -1739,7 +1750,7 @@ emft_get_folder_info__got (struct _mail_
gtk_tree_model_get_iter ((GtkTreeModel *) model, &root, path);
/* if we had an error, then we need to re-set the load subdirs state and collapse the node */
@@ -5017,7 +5017,7 @@
gtk_tree_store_set(model, &root, COL_BOOL_LOAD_SUBDIRS, TRUE, -1);
gtk_tree_view_collapse_row (priv->treeview, path);
gtk_tree_path_free (path);
-@@ -1794,10 +1805,8 @@
+@@ -1794,10 +1805,8 @@ emft_get_folder_info__got (struct _mail_
}
static void
@@ -5029,7 +5029,7 @@
camel_store_free_folder_info (m->store, m->fi);
gtk_tree_row_reference_free (m->root);
-@@ -1806,11 +1815,12 @@
+@@ -1806,11 +1815,12 @@ emft_get_folder_info__free (struct _mail
g_free (m->top);
}
@@ -5047,7 +5047,7 @@
};
static void
-@@ -1897,7 +1907,7 @@
+@@ -1897,7 +1907,7 @@ emft_tree_row_expanded (GtkTreeView *tre
gtk_tree_store_set((GtkTreeStore *)model, root, COL_BOOL_LOAD_SUBDIRS, FALSE, -1);
@@ -5056,7 +5056,7 @@
m->root = gtk_tree_row_reference_new (model, tree_path);
camel_object_ref (store);
m->store = store;
-@@ -1906,7 +1916,7 @@
+@@ -1906,7 +1916,7 @@ emft_tree_row_expanded (GtkTreeView *tre
m->top = full_name;
m->flags = CAMEL_STORE_FOLDER_INFO_RECURSIVE|CAMEL_STORE_FOLDER_INFO_FAST;
@@ -5065,9 +5065,9 @@
}
static gboolean
---- evolution-2.11.92/mail/em-folder-browser.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-folder-browser.c 2007-09-04 00:19:08.000000000 -0400
-@@ -851,7 +851,7 @@
+--- evolution-2.12.2/mail/em-folder-browser.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-folder-browser.c 2007-11-27 12:06:04.000000000 +0100
+@@ -851,7 +851,7 @@ get_view_query (ESearchBar *esb)
struct _setup_msg {
@@ -5076,7 +5076,7 @@
CamelFolder *folder;
char *query;
-@@ -859,16 +859,15 @@
+@@ -859,16 +859,15 @@ struct _setup_msg {
GList *sources_folder;
};
@@ -5096,7 +5096,7 @@
GList *l, *list = NULL;
CamelFolder *folder;
-@@ -879,12 +878,12 @@
+@@ -879,12 +878,12 @@ vfolder_setup_do(struct _mail_msg *mm)
l = m->sources_uri;
while (l) {
d(printf(" Adding uri: %s\n", (char *)l->data));
@@ -5111,7 +5111,7 @@
}
l = l->next;
}
-@@ -908,17 +907,13 @@
+@@ -908,17 +907,13 @@ vfolder_setup_do(struct _mail_msg *mm)
}
static void
@@ -5131,7 +5131,7 @@
GList *l;
camel_object_unref(m->folder);
-@@ -939,11 +934,12 @@
+@@ -939,11 +934,12 @@ vfolder_setup_free (struct _mail_msg *mm
g_list_free(m->sources_folder);
}
@@ -5149,7 +5149,7 @@
};
/* sources_uri should be camel uri's */
-@@ -953,15 +949,15 @@
+@@ -953,15 +949,15 @@ vfolder_setup(CamelFolder *folder, const
struct _setup_msg *m;
int id;
@@ -5168,8 +5168,8 @@
return id;
}
---- evolution-2.11.92/mail/em-sync-stream.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-sync-stream.c 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/em-sync-stream.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-sync-stream.c 2007-11-27 12:06:04.000000000 +0100
@@ -25,42 +25,17 @@
#include
#endif
@@ -5217,7 +5217,7 @@
enum _write_msg_t {
EMSS_WRITE,
EMSS_FLUSH,
-@@ -68,275 +43,168 @@
+@@ -68,275 +43,168 @@ enum _write_msg_t {
};
struct _write_msg {
@@ -5595,8 +5595,8 @@
+ g_string_free (emss->buffer, TRUE);
+ emss->buffer = g_string_sized_new (size);
}
---- evolution-2.11.92/mail/importers/pine-importer.c.kill-ethread 2007-09-02 14:56:47.000000000 -0400
-+++ evolution-2.11.92/mail/importers/pine-importer.c 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/importers/pine-importer.c.kill-ethread 2007-10-12 08:55:56.000000000 +0200
++++ evolution-2.12.2/mail/importers/pine-importer.c 2007-11-27 12:06:04.000000000 +0100
@@ -56,7 +56,7 @@
#define d(x) x
@@ -5606,7 +5606,7 @@
EImport *import;
EImportTarget *target;
-@@ -223,8 +223,8 @@
+@@ -223,8 +223,8 @@ import_contacts(void)
g_object_unref(book);
}
@@ -5617,7 +5617,7 @@
{
return g_strdup (_("Importing Pine data"));
}
-@@ -236,10 +236,8 @@
+@@ -236,10 +236,8 @@ static MailImporterSpecial pine_special_
};
static void
@@ -5629,7 +5629,7 @@
if (GPOINTER_TO_INT(g_datalist_get_data(&m->target->data, "pine-do-addr")))
import_contacts();
-@@ -253,13 +251,11 @@
+@@ -253,13 +251,11 @@ pine_import_import(struct _mail_msg *mm)
}
static void
@@ -5645,7 +5645,7 @@
GConfClient *gconf;
gconf = gconf_client_get_default();
-@@ -274,10 +270,8 @@
+@@ -274,10 +270,8 @@ pine_import_imported(struct _mail_msg *m
}
static void
@@ -5657,7 +5657,7 @@
camel_operation_unref(m->status);
g_free(m->status_what);
-@@ -326,11 +320,12 @@
+@@ -326,11 +320,12 @@ pine_status_timeout(void *data)
return TRUE;
}
@@ -5675,7 +5675,7 @@
};
static int
-@@ -339,7 +334,7 @@
+@@ -339,7 +334,7 @@ mail_importer_pine_import(EImport *ei, E
struct _pine_import_msg *m;
int id;
@@ -5684,7 +5684,7 @@
g_datalist_set_data(&target->data, "pine-msg", m);
m->import = ei;
g_object_ref(m->import);
-@@ -348,9 +343,9 @@
+@@ -348,9 +343,9 @@ mail_importer_pine_import(EImport *ei, E
m->status_lock = g_mutex_new();
m->status = camel_operation_new(pine_status, m);
@@ -5696,9 +5696,9 @@
return id;
}
---- evolution-2.11.92/mail/importers/mail-importer.c.kill-ethread 2007-09-02 14:56:47.000000000 -0400
-+++ evolution-2.11.92/mail/importers/mail-importer.c 2007-09-04 00:19:08.000000000 -0400
-@@ -132,7 +132,7 @@
+--- evolution-2.12.2/mail/importers/mail-importer.c.kill-ethread 2007-10-12 08:55:56.000000000 +0200
++++ evolution-2.12.2/mail/importers/mail-importer.c 2007-11-27 12:06:04.000000000 +0100
+@@ -132,7 +132,7 @@ struct _BonoboObject *mail_importer_fact
}
struct _import_mbox_msg {
@@ -5707,7 +5707,7 @@
char *path;
char *uri;
-@@ -142,8 +142,8 @@
+@@ -142,8 +142,8 @@ struct _import_mbox_msg {
void *done_data;
};
@@ -5718,7 +5718,7 @@
{
return g_strdup (_("Importing mailbox"));
}
-@@ -190,9 +190,8 @@
+@@ -190,9 +190,8 @@ decode_mozilla_status(const char *tmp)
}
static void
@@ -5729,7 +5729,7 @@
CamelFolder *folder;
CamelMimeParser *mp = NULL;
struct stat st;
-@@ -207,7 +206,7 @@
+@@ -207,7 +206,7 @@ import_mbox_import(struct _mail_msg *mm)
if (m->uri == NULL || m->uri[0] == 0)
folder = mail_component_get_folder(NULL, MAIL_COMPONENT_FOLDER_INBOX);
else
@@ -5738,7 +5738,7 @@
if (folder == NULL)
return;
-@@ -262,11 +261,11 @@
+@@ -262,11 +261,11 @@ import_mbox_import(struct _mail_msg *mm)
flags |= decode_status(tmp);
camel_message_info_set_flags(info, flags, ~0);
@@ -5752,7 +5752,7 @@
break;
camel_mime_parser_step(mp, 0, 0);
-@@ -286,30 +285,27 @@
+@@ -286,30 +285,27 @@ fail1:
}
static void
@@ -5792,7 +5792,7 @@
};
int
-@@ -318,7 +314,7 @@
+@@ -318,7 +314,7 @@ mail_importer_import_mbox(const char *pa
struct _import_mbox_msg *m;
int id;
@@ -5801,7 +5801,7 @@
m->path = g_strdup(path);
m->uri = g_strdup(folderuri);
m->done = done;
-@@ -328,8 +324,8 @@
+@@ -328,8 +324,8 @@ mail_importer_import_mbox(const char *pa
camel_operation_ref(cancel);
}
@@ -5812,7 +5812,7 @@
return id;
}
-@@ -339,7 +335,7 @@
+@@ -339,7 +335,7 @@ mail_importer_import_mbox_sync(const cha
{
struct _import_mbox_msg *m;
@@ -5821,7 +5821,7 @@
m->path = g_strdup(path);
m->uri = g_strdup(folderuri);
if (cancel) {
-@@ -347,9 +343,9 @@
+@@ -347,9 +343,9 @@ mail_importer_import_mbox_sync(const cha
camel_operation_ref(cancel);
}
@@ -5834,8 +5834,8 @@
}
struct _import_folders_data {
---- evolution-2.11.92/mail/importers/elm-importer.c.kill-ethread 2007-09-02 14:56:47.000000000 -0400
-+++ evolution-2.11.92/mail/importers/elm-importer.c 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/importers/elm-importer.c.kill-ethread 2007-10-12 08:55:56.000000000 +0200
++++ evolution-2.12.2/mail/importers/elm-importer.c 2007-11-27 12:06:04.000000000 +0100
@@ -51,7 +51,7 @@
#define d(x) x
@@ -5845,7 +5845,7 @@
EImport *import;
EImportTargetHome *target;
-@@ -186,8 +186,8 @@
+@@ -186,8 +186,8 @@ elm_supported(EImport *ei, EImportTarget
return mailexists;
}
@@ -5856,7 +5856,7 @@
{
return g_strdup (_("Importing Elm data"));
}
-@@ -198,9 +198,8 @@
+@@ -198,9 +198,8 @@ static MailImporterSpecial elm_special_f
};
static void
@@ -5867,7 +5867,7 @@
const char *maildir;
char *elmdir;
-@@ -218,13 +217,11 @@
+@@ -218,13 +217,11 @@ elm_import_import(struct _mail_msg *mm)
}
static void
@@ -5883,7 +5883,7 @@
GConfClient *gconf;
gconf = gconf_client_get_default();
-@@ -236,10 +233,8 @@
+@@ -236,10 +233,8 @@ elm_import_imported(struct _mail_msg *mm
}
static void
@@ -5895,7 +5895,7 @@
camel_operation_unref(m->status);
g_free(m->status_what);
-@@ -288,11 +283,12 @@
+@@ -288,11 +283,12 @@ elm_status_timeout(void *data)
return TRUE;
}
@@ -5913,7 +5913,7 @@
};
static int
-@@ -301,7 +297,7 @@
+@@ -301,7 +297,7 @@ mail_importer_elm_import(EImport *ei, EI
struct _elm_import_msg *m;
int id;
@@ -5922,7 +5922,7 @@
g_datalist_set_data(&target->data, "elm-msg", m);
m->import = ei;
g_object_ref(m->import);
-@@ -310,9 +306,9 @@
+@@ -310,9 +306,9 @@ mail_importer_elm_import(EImport *ei, EI
m->status_lock = g_mutex_new();
m->status = camel_operation_new(elm_status, m);
@@ -5934,9 +5934,9 @@
return id;
}
---- evolution-2.11.92/mail/mail-ops.h.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-ops.h 2007-09-04 00:19:08.000000000 -0400
-@@ -30,13 +30,14 @@
+--- evolution-2.12.2/mail/mail-ops.h.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/mail-ops.h 2007-11-27 12:06:04.000000000 +0100
+@@ -30,13 +30,14 @@ extern "C" {
#pragma }
#endif /* __cplusplus */
@@ -5952,7 +5952,7 @@
#include "libedataserver/e-account.h"
void mail_append_mail (CamelFolder *folder, CamelMimeMessage *message, CamelMessageInfo *info,
-@@ -55,12 +56,12 @@
+@@ -55,12 +56,12 @@ void mail_transfer_messages (CamelFolder
void mail_get_message (CamelFolder *folder, const char *uid,
void (*done) (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data),
void *data,
@@ -5967,7 +5967,7 @@
/* get several messages */
void mail_get_messages (CamelFolder *folder, GPtrArray *uids,
-@@ -70,7 +71,7 @@
+@@ -70,7 +71,7 @@ void mail_get_messages (CamelFolder *fol
/* same for a folder */
int mail_get_folder (const char *uri, guint32 flags,
void (*done) (char *uri, CamelFolder *folder, void *data), void *data,
@@ -5976,9 +5976,9 @@
/* and for a store */
int mail_get_store (const char *uri, CamelOperation *op,
---- evolution-2.11.92/mail/em-utils.c.kill-ethread 2007-09-04 00:19:00.000000000 -0400
-+++ evolution-2.11.92/mail/em-utils.c 2007-09-04 00:19:08.000000000 -0400
-@@ -1912,7 +1912,7 @@
+--- evolution-2.12.2/mail/em-utils.c.kill-ethread 2007-11-27 12:06:03.000000000 +0100
++++ evolution-2.12.2/mail/em-utils.c 2007-11-27 12:06:04.000000000 +0100
+@@ -1990,7 +1990,7 @@ em_utils_in_addressbook(CamelInternetAdd
ESource *source = s->data;
GList *contacts;
EBook *book;
@@ -5987,9 +5987,9 @@
d(printf(" checking '%s'\n", e_source_get_uri(source)));
---- evolution-2.11.92/mail/mail-folder-cache.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-folder-cache.c 2007-09-04 00:19:08.000000000 -0400
-@@ -862,15 +862,14 @@
+--- evolution-2.12.2/mail/mail-folder-cache.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/mail-folder-cache.c 2007-11-27 12:06:04.000000000 +0100
+@@ -862,15 +862,14 @@ update_folders(CamelStore *store, CamelF
struct _ping_store_msg {
@@ -6008,7 +6008,7 @@
char *service_name = camel_service_get_name (CAMEL_SERVICE (m->store), TRUE);
char *msg;
-@@ -881,10 +880,9 @@
+@@ -881,10 +880,9 @@ ping_store_desc (struct _mail_msg *mm, i
}
static void
@@ -6020,7 +6020,7 @@
if (CAMEL_SERVICE (m->store)->status == CAMEL_SERVICE_CONNECTED) {
if (CAMEL_IS_DISCO_STORE (m->store) &&
-@@ -895,22 +893,21 @@
+@@ -895,22 +893,21 @@ ping_store_ping (struct _mail_msg *mm)
online = TRUE;
}
if (online)
@@ -6051,7 +6051,7 @@
};
static void
-@@ -922,11 +919,11 @@
+@@ -922,11 +919,11 @@ ping_store (gpointer key, gpointer val,
if (CAMEL_SERVICE (store)->status != CAMEL_SERVICE_CONNECTED)
return;
@@ -6065,7 +6065,7 @@
}
static gboolean
-@@ -971,7 +968,7 @@
+@@ -971,7 +968,7 @@ mail_note_store(CamelStore *store, Camel
int hook = 0;
g_return_if_fail (CAMEL_IS_STORE(store));
@@ -6074,9 +6074,9 @@
LOCK(info_lock);
---- evolution-2.11.92/mail/em-composer-utils.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/em-composer-utils.c 2007-09-04 00:19:08.000000000 -0400
-@@ -553,7 +553,7 @@
+--- evolution-2.12.2/mail/em-composer-utils.c.kill-ethread 2007-10-12 08:56:01.000000000 +0200
++++ evolution-2.12.2/mail/em-composer-utils.c 2007-11-27 12:06:04.000000000 +0100
+@@ -553,7 +553,7 @@ em_utils_composer_save_draft_cb (EMsgCom
strcmp (account->drafts_folder_uri, default_drafts_folder_uri) != 0) {
int id;
@@ -6085,7 +6085,7 @@
mail_msg_wait (id);
if (!folder || !account->enabled) {
-@@ -1104,7 +1104,7 @@
+@@ -1104,7 +1104,7 @@ em_utils_redirect_message_by_uid (CamelF
g_return_if_fail (CAMEL_IS_FOLDER (folder));
g_return_if_fail (uid != NULL);
@@ -6094,7 +6094,7 @@
}
static void
-@@ -1135,7 +1135,7 @@
+@@ -1135,7 +1135,7 @@ em_utils_handle_receipt (CamelFolder *fo
}
if (msg == NULL) {
@@ -6103,7 +6103,7 @@
camel_message_info_free(info);
return;
}
-@@ -1949,7 +1949,7 @@
+@@ -1949,7 +1949,7 @@ em_utils_reply_to_message(CamelFolder *f
rd->source = source;
if (rd->source)
g_object_ref(rd->source);
@@ -6112,15 +6112,15 @@
return;
}
-@@ -2121,5 +2121,5 @@
+@@ -2121,5 +2121,5 @@ em_utils_post_reply_to_message_by_uid (C
g_return_if_fail (CAMEL_IS_FOLDER (folder));
g_return_if_fail (uid != NULL);
- mail_get_message (folder, uid, post_reply_to_message, NULL, mail_thread_new);
+ mail_get_message (folder, uid, post_reply_to_message, NULL, mail_msg_unordered_push);
}
---- evolution-2.11.92/mail/mail-mt.c.kill-ethread 2007-09-02 14:56:48.000000000 -0400
-+++ evolution-2.11.92/mail/mail-mt.c 2007-09-04 00:19:08.000000000 -0400
+--- evolution-2.12.2/mail/mail-mt.c.kill-ethread 2007-11-26 03:30:12.000000000 +0100
++++ evolution-2.12.2/mail/mail-mt.c 2007-11-27 12:13:02.000000000 +0100
@@ -29,8 +29,8 @@
#include
#include
@@ -6131,7 +6131,7 @@
#include
#include
-@@ -63,7 +63,7 @@
+@@ -63,7 +63,7 @@ static void mail_operation_status(struct
#endif
/* background operation status stuff */
@@ -6140,7 +6140,7 @@
int activity_state; /* sigh sigh sigh, we need to keep track of the state external to the
pointer itself for locking/race conditions */
int activity_id;
-@@ -82,15 +82,12 @@
+@@ -82,15 +82,12 @@ static GHashTable *mail_msg_active_table
static pthread_mutex_t mail_msg_lock = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t mail_msg_cond = PTHREAD_COND_INITIALIZER;
@@ -6159,7 +6159,7 @@
MAIL_MT_LOCK(mail_msg_lock);
-@@ -112,7 +109,6 @@
+@@ -112,7 +109,6 @@ void *mail_msg_new(mail_msg_op_t *ops, E
fprintf(log, "Logging async operations\n");
if (log_locks) {
@@ -6167,7 +6167,7 @@
fprintf(log, "%" G_GINT64_MODIFIER "x: lock mail_msg_lock\n", e_util_pthread_id(pthread_self()));
}
} else {
-@@ -122,13 +118,13 @@
+@@ -122,13 +118,13 @@ void *mail_msg_new(mail_msg_op_t *ops, E
}
}
#endif
@@ -6185,7 +6185,7 @@
g_hash_table_insert(mail_msg_active_table, GINT_TO_POINTER(msg->seq), msg);
-@@ -143,12 +139,15 @@
+@@ -143,12 +139,15 @@ void *mail_msg_new(mail_msg_op_t *ops, E
return msg;
}
@@ -6204,7 +6204,7 @@
e_activity_handler_operation_finished (activity_handler, activity_id);
}
-@@ -177,58 +176,93 @@
+@@ -177,58 +176,93 @@ checkmem(void *p)
}
#endif
@@ -6326,7 +6326,7 @@
}
/* hash table of ops->dialogue of active errors */
-@@ -244,9 +278,10 @@
+@@ -244,9 +278,10 @@ static void error_response(GtkObject *o,
gtk_widget_destroy((GtkWidget *)o);
}
@@ -6339,7 +6339,7 @@
char *what;
GtkDialog *gd;
-@@ -271,27 +306,27 @@
+@@ -271,27 +306,27 @@ void mail_msg_check_error(void *msg)
/* check to see if we have dialogue already running for this operation */
/* we key on the operation pointer, which is at least accurate enough
for the operation type, although it could be on a different object. */
@@ -6374,7 +6374,7 @@
MAIL_MT_LOCK(mail_msg_lock);
m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid));
-@@ -304,13 +339,12 @@
+@@ -304,13 +339,12 @@ void mail_msg_cancel(unsigned int msgid)
/* waits for a message to be finished processing (freed)
@@ -6391,7 +6391,7 @@
MAIL_MT_LOCK(mail_msg_lock);
m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid));
while (m) {
-@@ -347,9 +381,7 @@
+@@ -347,9 +381,7 @@ int mail_msg_active(unsigned int msgid)
void mail_msg_wait_all(void)
{
@@ -6402,7 +6402,7 @@
MAIL_MT_LOCK(mail_msg_lock);
while (g_hash_table_size(mail_msg_active_table) > 0) {
MAIL_MT_UNLOCK(mail_msg_lock);
-@@ -367,294 +399,239 @@
+@@ -367,294 +399,239 @@ void mail_msg_wait_all(void)
}
/* **************************************** */
@@ -6716,12 +6716,12 @@
- checkmem(m->cancel);
- checkmem(m->priv);
-#endif
--
-- if (m->ops->describe_msg) {
-- char *text = m->ops->describe_msg(m, FALSE);
+ if (priority1 == priority2)
+ return 0;
+- if (m->ops->describe_msg) {
+- char *text = m->ops->describe_msg(m, FALSE);
+-
-#ifdef LOG_OPS
- if (log_ops)
- fprintf(log, "%p: Received at thread %" G_GINT64_MODIFIER "x: '%s'\n", m, e_util_pthread_id(pthread_self()), text);
@@ -6784,14 +6784,14 @@
+ (GSourceFunc) mail_msg_idle_cb, NULL);
+ G_UNLOCK (idle_source_id);
+}
-+
+
+- g_io_channel_unref(mail_gui_channel);
+- g_io_channel_unref(mail_gui_reply_channel);
+void
+mail_msg_unordered_push (gpointer msg)
+{
+ static GOnce once = G_ONCE_INIT;
-
-- g_io_channel_unref(mail_gui_channel);
-- g_io_channel_unref(mail_gui_reply_channel);
++
+ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (10));
- e_msgport_destroy(mail_gui_port);
@@ -6849,11 +6849,11 @@
- e_thread_set_reply_port(mail_thread_new, mail_gui_reply_port);
- e_thread_set_queue_limit(mail_thread_new, 10);
+ static GOnce once = G_ONCE_INIT;
-+
-+ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (1));
- mail_msg_active_table = g_hash_table_new(NULL, NULL);
- mail_gui_thread = pthread_self();
++ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (1));
++
+ g_thread_pool_push ((GThreadPool *) once.retval, msg, NULL);
+}
@@ -6865,7 +6865,7 @@
}
/* ********************************************************************** */
-@@ -665,7 +642,8 @@
+@@ -665,7 +642,8 @@ static pthread_mutex_t status_lock = PTH
/* ********************************************************************** */
struct _proxy_msg {
@@ -6875,7 +6875,7 @@
MailAsyncEvent *ea;
mail_async_event_t type;
-@@ -679,10 +657,8 @@
+@@ -679,10 +657,8 @@ struct _proxy_msg {
};
static void
@@ -6887,7 +6887,7 @@
m->thread = pthread_self();
m->have_thread = TRUE;
m->func(m->o, m->event_data, m->data);
-@@ -697,16 +673,17 @@
+@@ -697,16 +673,17 @@ static int
idle_async_event(void *mm)
{
do_async_event(mm);
@@ -6911,7 +6911,7 @@
};
MailAsyncEvent *mail_async_event_new(void)
-@@ -723,10 +700,9 @@
+@@ -723,10 +700,9 @@ int mail_async_event_emit(MailAsyncEvent
{
struct _proxy_msg *m;
int id;
@@ -6923,7 +6923,7 @@
m->func = func;
m->o = o;
m->event_data = event_data;
-@@ -735,7 +711,7 @@
+@@ -735,7 +711,7 @@ int mail_async_event_emit(MailAsyncEvent
m->type = type;
m->have_thread = FALSE;
@@ -6932,7 +6932,7 @@
g_mutex_lock(ea->lock);
ea->tasks = g_slist_prepend(ea->tasks, m);
g_mutex_unlock(ea->lock);
-@@ -743,12 +719,12 @@
+@@ -743,12 +719,12 @@ int mail_async_event_emit(MailAsyncEvent
/* We use an idle function instead of our own message port only because the
gui message ports's notification buffer might overflow and deadlock us */
if (type == MAIL_ASYNC_GUI) {
@@ -6948,7 +6948,7 @@
return id;
}
-@@ -762,7 +738,7 @@
+@@ -762,7 +738,7 @@ int mail_async_event_destroy(MailAsyncEv
g_mutex_lock(ea->lock);
while (ea->tasks) {
m = ea->tasks->data;
@@ -6957,7 +6957,7 @@
if (m->have_thread && pthread_equal(m->thread, thread)) {
g_warning("Destroying async event from inside an event, returning EDEADLK");
g_mutex_unlock(ea->lock);
-@@ -784,17 +760,18 @@
+@@ -784,17 +760,18 @@ int mail_async_event_destroy(MailAsyncEv
/* ********************************************************************** */
struct _call_msg {
@@ -6979,7 +6979,7 @@
void *p1, *p2, *p3, *p4, *p5;
int i1;
va_list ap;
-@@ -842,45 +819,47 @@
+@@ -842,45 +819,47 @@ do_call(struct _mail_msg *mm)
m->ret = m->func(p1, p2, i1, p3, p4, p5);
break;
}
@@ -7046,7 +7046,7 @@
return ret;
}
-@@ -889,40 +868,42 @@
+@@ -889,40 +868,42 @@ void *mail_call_main(mail_call_t type, M
/* locked via status_lock */
static int busy_state;
@@ -7101,7 +7101,7 @@
}
MAIL_MT_UNLOCK(status_lock);
}
-@@ -930,7 +911,7 @@
+@@ -930,7 +911,7 @@ void mail_disable_stop(void)
/* ******************************************************************************** */
struct _op_status_msg {
@@ -7110,7 +7110,7 @@
struct _CamelOperation *op;
char *what;
-@@ -938,16 +919,16 @@
+@@ -938,16 +919,16 @@ struct _op_status_msg {
void *data;
};
@@ -7132,7 +7132,7 @@
MAIL_MT_LOCK (mail_msg_lock);
-@@ -986,8 +967,8 @@
+@@ -986,8 +967,8 @@ static void do_op_status(struct _mail_ms
progress_icon = e_icon_factory_get_icon ("stock_mail-unread", E_ICON_SIZE_MENU);
MAIL_MT_UNLOCK (mail_msg_lock);
@@ -7140,23 +7140,25 @@
- what = msg->ops->describe_msg (msg, FALSE);
+ if (msg->info->desc)
+ what = msg->info->desc (msg);
+ else if (m->what)
+ what = g_strdup (m->what);
/* uncommenting because message is not very useful for a user, see bug 271734*/
- else {
- what = g_strdup("");
-@@ -1001,11 +982,7 @@
- MAIL_MT_LOCK (mail_msg_lock);
- if (data->activity_state == 3) {
+@@ -1004,13 +985,7 @@ static void do_op_status(struct _mail_ms
+ int activity_id = data->activity_id;
+
MAIL_MT_UNLOCK (mail_msg_lock);
-- if (msg->cancel)
+- if (msg->cancel) {
+- camel_operation_mute (msg->cancel);
- camel_operation_unref (msg->cancel);
+- }
- camel_exception_clear (&msg->ex);
- g_free (msg->priv);
- g_free (msg);
+ mail_msg_free (msg);
- } else {
- data->activity_state = 2;
- MAIL_MT_UNLOCK (mail_msg_lock);
-@@ -1021,18 +998,17 @@
+
+ if (activity_id != 0)
+ mail_async_event_emit (mail_async_event, MAIL_ASYNC_GUI, (MailAsyncFunc) end_event_callback,
+@@ -1030,18 +1005,17 @@ static void do_op_status(struct _mail_ms
}
static void
@@ -7182,7 +7184,7 @@
};
static void
-@@ -1042,7 +1018,7 @@
+@@ -1051,7 +1025,7 @@ mail_operation_status (struct _CamelOper
d(printf("got operation statys: %s %d%%\n", what, pc));
@@ -7191,7 +7193,7 @@
m->op = op;
m->what = g_strdup(what);
switch (pc) {
-@@ -1055,7 +1031,7 @@
+@@ -1064,7 +1038,7 @@ mail_operation_status (struct _CamelOper
}
m->pc = pc;
m->data = data;
diff --git a/evolution-2.9.1-kill-ememory.patch b/evolution-2.9.1-kill-ememory.patch
deleted file mode 100644
index 04f5d2a..0000000
--- a/evolution-2.9.1-kill-ememory.patch
+++ /dev/null
@@ -1,299 +0,0 @@
---- evolution-2.9.1/mail/message-list.c.ememory 2006-10-25 11:11:34.000000000 -0400
-+++ evolution-2.9.1/mail/message-list.c 2006-10-25 11:15:12.000000000 -0400
-@@ -412,70 +412,28 @@
- return info;
- }
-
--static const char *
--get_normalised_string (MessageList *message_list, CamelMessageInfo *info, int col)
-+static const gchar *
-+get_normalised_string (MessageList *message_list, const gchar *string)
- {
-- const char *string, *str;
-- char *normalised;
-- EPoolv *poolv;
-- int index;
--
-- switch (col) {
-- case COL_SUBJECT_NORM:
-- string = camel_message_info_subject (info);
-- index = NORMALISED_SUBJECT;
-- break;
-- case COL_FROM_NORM:
-- string = camel_message_info_from (info);
-- index = NORMALISED_FROM;
-- break;
-- case COL_TO_NORM:
-- string = camel_message_info_to (info);
-- index = NORMALISED_TO;
-- break;
-- default:
-- string = NULL;
-- index = NORMALISED_LAST;
-- g_warning ("Should not be reached\n");
-- }
--
-- /* slight optimisation */
-- if (string == NULL || string[0] == '\0')
-+ GHashTable *hash_table = message_list->normalised_hash;
-+ GStringChunk *string_chunk = message_list->string_chunk;
-+ gchar *collation_key, *temp;
-+
-+ if (string == NULL || *string == '\0')
- return "";
--
-- poolv = g_hash_table_lookup (message_list->normalised_hash, camel_message_info_uid (info));
-- if (poolv == NULL) {
-- poolv = e_poolv_new (NORMALISED_LAST);
-- g_hash_table_insert (message_list->normalised_hash, (char *) camel_message_info_uid (info), poolv);
-- } else {
-- str = e_poolv_get (poolv, index);
-- if (*str)
-- return str;
-- }
--
-- if (col == COL_SUBJECT_NORM) {
-- const unsigned char *subject;
--
-- subject = (const unsigned char *) string;
-- while (!g_ascii_strncasecmp ((char *)subject, "Re:", 3)) {
-- subject += 3;
--
-- /* jump over any spaces */
-- while (*subject && isspace ((int) *subject))
-- subject++;
-- }
--
-- /* jump over any spaces */
-- while (*subject && isspace ((int) *subject))
-- subject++;
--
-- string = (const char *) subject;
-- }
--
-- normalised = g_utf8_collate_key (string, -1);
-- e_poolv_set (poolv, index, normalised, TRUE);
--
-- return e_poolv_get (poolv, index);
-+
-+ collation_key = g_hash_table_lookup (hash_table, string);
-+ if (collation_key != NULL)
-+ return collation_key;
-+
-+ temp = g_utf8_collate_key (string, -1);
-+ collation_key = g_string_chunk_insert_const (string_chunk, temp);
-+ g_free (temp);
-+
-+ temp = g_string_chunk_insert_const (string_chunk, string);
-+ g_hash_table_insert (hash_table, temp, collation_key);
-+
-+ return collation_key;
- }
-
- static void
-@@ -1283,12 +1241,23 @@
- str = camel_message_info_from (msg_info);
- return (void *)(str ? str : "");
- case COL_FROM_NORM:
-- return (void *) get_normalised_string (message_list, msg_info, col);
-+ str = camel_message_info_from (msg_info);
-+ return (void *) get_normalised_string (message_list, str);
- case COL_SUBJECT:
- str = camel_message_info_subject (msg_info);
- return (void *)(str ? str : "");
- case COL_SUBJECT_NORM:
-- return (void *) get_normalised_string (message_list, msg_info, col);
-+ str = camel_message_info_subject (msg_info);
-+ while (str != NULL && *str != '\0') {
-+ /* skip over spaces and reply prefixes */
-+ if (g_ascii_strncasecmp (str, "Re:", 3) == 0)
-+ str += 3;
-+ else if (g_ascii_isspace (*str))
-+ str++;
-+ else
-+ break;
-+ }
-+ return (void *) get_normalised_string (message_list, str);
- case COL_SENT: {
- ETreePath child;
-
-@@ -1312,7 +1281,8 @@
- str = camel_message_info_to (msg_info);
- return (void *)(str ? str : "");
- case COL_TO_NORM:
-- return (void *) get_normalised_string (message_list, msg_info, col);
-+ str = camel_message_info_to (msg_info);
-+ return (void *) get_normalised_string (message_list, str);
- case COL_SIZE:
- return GINT_TO_POINTER (camel_message_info_size(msg_info));
- case COL_DELETED:
-@@ -2023,9 +1993,10 @@
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (message_list), GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
-
- message_list->normalised_hash = g_hash_table_new (g_str_hash, g_str_equal);
-+ message_list->string_chunk = g_string_chunk_new (1024);
-
- message_list->hidden = NULL;
-- message_list->hidden_pool = NULL;
-+ message_list->hidden_string_chunk = NULL;
- message_list->hide_before = ML_HIDE_NONE_START;
- message_list->hide_after = ML_HIDE_NONE_END;
-
-@@ -2054,14 +2025,6 @@
- g_signal_connect (((GtkScrolledWindow *) message_list)->vscrollbar, "value-changed", G_CALLBACK (ml_scrolled), message_list);
- }
-
--static gboolean
--normalised_free (gpointer key, gpointer value, gpointer user_data)
--{
-- e_poolv_destroy (value);
--
-- return TRUE;
--}
--
- static void
- message_list_destroy(GtkObject *object)
- {
-@@ -2127,17 +2090,17 @@
- MessageList *message_list = MESSAGE_LIST (object);
- struct _MessageListPrivate *p = message_list->priv;
-
-- g_hash_table_foreach (message_list->normalised_hash, (GHFunc) normalised_free, NULL);
- g_hash_table_destroy (message_list->normalised_hash);
-+ g_string_chunk_free (message_list->string_chunk);
-
- if (message_list->thread_tree)
- camel_folder_thread_messages_unref(message_list->thread_tree);
-
- if (message_list->hidden) {
- g_hash_table_destroy(message_list->hidden);
-- e_mempool_destroy(message_list->hidden_pool);
-+ g_string_chunk_free(message_list->hidden_string_chunk);
- message_list->hidden = NULL;
-- message_list->hidden_pool = NULL;
-+ message_list->hidden_string_chunk = NULL;
- }
-
- g_free(message_list->search);
-@@ -2940,17 +2903,6 @@
- d(printf("changed = %d added = %d removed = %d\n",
- changes->uid_changed->len, changes->uid_added->len, changes->uid_removed->len));
-
-- for (i = 0; i < changes->uid_removed->len; i++) {
-- /* uncache the normalised strings for these uids */
-- EPoolv *poolv;
--
-- poolv = g_hash_table_lookup (ml->normalised_hash, changes->uid_removed->pdata[i]);
-- if (poolv != NULL) {
-- g_hash_table_remove (ml->normalised_hash, changes->uid_removed->pdata[i]);
-- e_poolv_destroy (poolv);
-- }
-- }
--
- /* check if the hidden state has changed, if so modify accordingly, then regenerate */
- if (ml->hidejunk || ml->hidedeleted)
- mail_folder_hide_by_flag (folder, ml, &changes, (ml->hidejunk ? CAMEL_MESSAGE_JUNK : 0) | (ml->hidedeleted ? CAMEL_MESSAGE_DELETED : 0));
-@@ -3028,7 +2980,11 @@
- }
-
- /* reset the normalised sort performance hack */
-- g_hash_table_foreach_remove (message_list->normalised_hash, normalised_free, NULL);
-+ /* XXX GLib 2.12 added g_hash_table_remove_all() */
-+ g_hash_table_destroy (message_list->normalised_hash);
-+ message_list->normalised_hash = g_hash_table_new (g_str_hash, g_str_equal);
-+ g_string_chunk_free (message_list->string_chunk);
-+ message_list->string_chunk = g_string_chunk_new (1024);
-
- mail_regen_cancel(message_list);
-
-@@ -3479,14 +3435,14 @@
- MESSAGE_LIST_LOCK (ml, hide_lock);
- if (ml->hidden == NULL) {
- ml->hidden = g_hash_table_new (g_str_hash, g_str_equal);
-- ml->hidden_pool = e_mempool_new (512, 256, E_MEMPOOL_ALIGN_BYTE);
-+ ml->hidden_string_chunk = g_string_chunk_new (512);
- }
-
-- uid = e_mempool_strdup (ml->hidden_pool, uids->pdata[i]);
-+ uid = g_string_chunk_insert (ml->hidden_string_chunk, uids->pdata[i]);
- g_hash_table_insert (ml->hidden, uid, uid);
- for ( ; i < uids->len; i++) {
- if (g_hash_table_lookup (ml->uid_nodemap, uids->pdata[i])) {
-- uid = e_mempool_strdup (ml->hidden_pool, uids->pdata[i]);
-+ uid = g_string_chunk_insert (ml->hidden_string_chunk, uids->pdata[i]);
- g_hash_table_insert (ml->hidden, uid, uid);
- }
- }
-@@ -3507,9 +3463,9 @@
- MESSAGE_LIST_LOCK (ml, hide_lock);
- if (ml->hidden) {
- g_hash_table_destroy (ml->hidden);
-- e_mempool_destroy (ml->hidden_pool);
-+ g_string_chunk_free (ml->hidden_string_chunk);
- ml->hidden = NULL;
-- ml->hidden_pool = NULL;
-+ ml->hidden_string_chunk = NULL;
- }
- ml->hide_before = ML_HIDE_NONE_START;
- ml->hide_after = ML_HIDE_NONE_END;
-@@ -3545,9 +3501,9 @@
- MESSAGE_LIST_LOCK(ml, hide_lock);
- if (ml->hidden) {
- g_hash_table_destroy (ml->hidden);
-- e_mempool_destroy (ml->hidden_pool);
-+ g_string_chunk_free (ml->hidden_string_chunk);
- ml->hidden = NULL;
-- ml->hidden_pool = NULL;
-+ ml->hidden_string_chunk = NULL;
- }
- ml->hide_before = ML_HIDE_NONE_START;
- ml->hide_after = ML_HIDE_NONE_END;
-@@ -3558,7 +3514,7 @@
- camel_file_util_decode_fixed_int32 (in, &version);
- if (version == HIDE_STATE_VERSION) {
- ml->hidden = g_hash_table_new(g_str_hash, g_str_equal);
-- ml->hidden_pool = e_mempool_new(512, 256, E_MEMPOOL_ALIGN_BYTE);
-+ ml->hidden_string_chunk = g_string_chunk_new(512);
- camel_file_util_decode_fixed_int32 (in, &lower);
- ml->hide_before = lower;
- camel_file_util_decode_fixed_int32 (in, &upper);
-@@ -3567,7 +3523,7 @@
- char *olduid, *uid;
-
- if (camel_file_util_decode_string (in, &olduid) != -1) {
-- uid = e_mempool_strdup(ml->hidden_pool, olduid);
-+ uid = g_string_chunk_insert(ml->hidden_string_chunk, olduid);
- g_free (olduid);
- g_hash_table_insert(ml->hidden, uid, uid);
- }
-@@ -3717,12 +3673,12 @@
-
- if (m->ml->hidden == NULL) {
- m->ml->hidden = g_hash_table_new (g_str_hash, g_str_equal);
-- m->ml->hidden_pool = e_mempool_new (512, 256, E_MEMPOOL_ALIGN_BYTE);
-+ m->ml->hidden_string_chunk = g_string_chunk_new (512);
- }
-
- for (i = 0; i < uidnew->len; i++) {
- if (g_hash_table_lookup (m->ml->hidden, uidnew->pdata[i]) == 0) {
-- char *uid = e_mempool_strdup (m->ml->hidden_pool, uidnew->pdata[i]);
-+ char *uid = g_string_chunk_insert (m->ml->hidden_string_chunk, uidnew->pdata[i]);
- g_hash_table_insert (m->ml->hidden, uid, uid);
- }
- }
---- evolution-2.9.1/mail/message-list.h.ememory 2006-09-28 04:56:51.000000000 -0400
-+++ evolution-2.9.1/mail/message-list.h 2006-10-25 11:15:12.000000000 -0400
-@@ -102,11 +102,12 @@
- GHashTable *uid_nodemap; /* uid (from info) -> tree node mapping */
-
- GHashTable *normalised_hash;
-+ GStringChunk *string_chunk;
-
- /* UID's to hide. Keys in the mempool */
- /* IMPORTANT: You MUST have obtained the hide lock, to operate on this data */
- GHashTable *hidden;
-- struct _EMemPool *hidden_pool;
-+ GStringChunk *hidden_string_chunk;
- int hide_unhidden; /* total length, before hiding */
- int hide_before, hide_after; /* hide ranges of messages */
-
diff --git a/evolution-2.9.3-meeting-list-view.patch b/evolution-2.9.3-meeting-list-view.patch
deleted file mode 100644
index 9b87a14..0000000
--- a/evolution-2.9.3-meeting-list-view.patch
+++ /dev/null
@@ -1,86 +0,0 @@
---- evolution-2.9.3/calendar/gui/e-meeting-list-view.c.meeting-list-view 2006-12-11 23:13:47.000000000 -0500
-+++ evolution-2.9.3/calendar/gui/e-meeting-list-view.c 2006-12-11 23:14:17.000000000 -0500
-@@ -623,18 +623,45 @@
-
- }
-
-+void
-+attendee_added_cb (EMeetingStore *store, GtkTreePath *path,
-+ GtkTreeIter *iter, EMeetingListView *view)
-+{
-+ EMeetingAttendee *attendee;
-+ gint row;
-+
-+ /* Add the new attendee to the name selector. */
-+ row = gtk_tree_path_get_indices (path) [0];
-+ attendee = e_meeting_store_find_attendee_at_row (store, row);
-+ e_meeting_list_view_add_attendee_to_name_selector (view, attendee);
-+}
-+
-+void
-+attendee_deleted_cb (EMeetingStore *store, GtkTreePath *path,
-+ EMeetingListView *view)
-+{
-+ EMeetingAttendee *attendee;
-+ gint row;
-+
-+ /* Remove the old attendee from the name selector. */
-+ row = gtk_tree_path_get_indices (path) [0];
-+ attendee = e_meeting_store_find_attendee_at_row (store, row);
-+ e_meeting_list_view_remove_attendee_from_name_selector (view, attendee);
-+}
-
- EMeetingListView *
- e_meeting_list_view_new (EMeetingStore *store)
- {
-- EMeetingListView *view = g_object_new (E_TYPE_MEETING_LIST_VIEW, NULL);
-+ EMeetingListView *view;
- GtkTreeSelection *selection;
-
-- if (view) {
-- view->priv->store = store;
-- gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (store));
-- build_table (view);
-- }
-+ view = g_object_new (E_TYPE_MEETING_LIST_VIEW, NULL);
-+ view->priv->store = store;
-+ gtk_tree_view_set_model (GTK_TREE_VIEW (view), GTK_TREE_MODEL (store));
-+ build_table (view);
-+
-+ g_signal_connect (store, "row-inserted", G_CALLBACK (attendee_added_cb), view);
-+ g_signal_connect (store, "row-deleted", G_CALLBACK (attendee_deleted_cb), view);
-
- selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view));
- g_signal_connect (selection, "changed", G_CALLBACK (row_activated_cb), view);
---- evolution-2.9.3/calendar/gui/e-meeting-store.c.meeting-list-view 2006-12-04 10:44:42.000000000 -0500
-+++ evolution-2.9.3/calendar/gui/e-meeting-store.c 2006-12-11 23:14:17.000000000 -0500
-@@ -794,14 +794,13 @@
- }
-
- if (row != -1) {
--
-- g_ptr_array_remove_index (store->priv->attendees, row);
-- g_object_unref (attendee);
--
- path = gtk_tree_path_new ();
- gtk_tree_path_append_index (path, row);
- gtk_tree_model_row_deleted (GTK_TREE_MODEL (store), path);
- gtk_tree_path_free (path);
-+
-+ g_ptr_array_remove_index (store->priv->attendees, row);
-+ g_object_unref (attendee);
- }
- }
-
-@@ -815,10 +814,10 @@
-
- for (i = 0; i < store->priv->attendees->len; i++) {
- EMeetingAttendee *attendee = g_ptr_array_index (store->priv->attendees, i);
-- g_object_unref (attendee);
-
- gtk_tree_model_row_deleted (GTK_TREE_MODEL (store), path);
- gtk_tree_path_next (path);
-+ g_object_unref (attendee);
- }
-
- g_ptr_array_set_size (store->priv->attendees, 0);
diff --git a/evolution.spec b/evolution.spec
index f013be5..9dfd774 100644
--- a/evolution.spec
+++ b/evolution.spec
@@ -45,8 +45,8 @@
### Abstract ###
Name: evolution
-Version: 2.12.1
-Release: 2%{?dist}
+Version: 2.12.3
+Release: 5%{?dist}
License: GPLv2 and GFDL+
Group: Applications/Productivity
Summary: GNOME's next-generation groupware suite
@@ -98,9 +98,6 @@ Patch21: evolution-2.7.4-deleting-preedit-buffer.patch
# GNOME bug #362638
Patch25: evolution-2.8.1-kill-ethread.patch
-# GNOME bug #363695
-Patch26: evolution-2.9.1-kill-ememory.patch
-
# RH bug #176400
Patch27: evolution-2.9.1-im-context-reset.patch
@@ -110,11 +107,9 @@ Patch27: evolution-2.9.1-im-context-reset.patch
# RH bug #215478 / GNOME bug #383842
Patch30: evolution-2.9.3-source-path-entry.patch
-# RH bug #215467 / GNOME bug #380644
-Patch31: evolution-2.9.3-meeting-list-view.patch
-
# GNOME bug #376991
-Patch33: evolution-2.10.0-e-passwords.patch
+# XXX Disabled due to outstanding issues.
+#Patch33: evolution-2.10.0-e-passwords.patch
# GNOME bug #417999
Patch34: evolution-2.10.0-e-source-combo-box.patch
@@ -125,6 +120,24 @@ Patch35: evolution-2.11.92-mail-attachment.patch
# GNOME bug #477045
Patch36: evolution-2.11.92-icon-names.patch
+# GNOME bug #454465
+Patch37: evolution-2.12.1-source-changed-event.patch
+
+# GNOME bug #351672
+Patch38: evolution-2.12.3-no-drag-finish.patch
+
+# RH bug #436081 / CVE-2008-0072
+Patch39: evolution-2.12.3-CVE-2008-0072.patch
+
+# GNOME bug #524310
+Patch40: evolution-2.10.3-server-message-double-free.patch
+
+# RH bug #449923 / CVE-2008-1108
+Patch41: evolution-2.12.3-CVE-2008-1108.patch
+
+# RH bug #449923 / CVE-2008-1109
+Patch42: evolution-2.12.3-CVE-2008-1109.patch
+
## Dependencies ###
Requires(post): GConf2
@@ -228,7 +241,7 @@ personal information-management tool.
%package devel
Group: Development/Libraries
Summary: Development files for building against evolution
-Requires: %{name} = %{version}
+Requires: %{name} = %{version}-%{release}
Requires: evolution-data-server-devel >= %{eds_version}
Requires: gtkhtml3-devel >= %{gtkhtml_version}
Requires: libsoup-devel >= %{soup_version}
@@ -259,15 +272,19 @@ This package contains the help for Evolution.
%patch20 -p1 -b .replicated-cjk-input
%patch21 -p1 -b .deleting-preedit-buffer
%patch25 -p1 -b .kill-ethread
-%patch26 -p1 -b .kill-ememory
%patch27 -p1 -b .im-context-reset
#%patch29 -p1 -b .view-attachment-uri
%patch30 -p1 -b .source-path-entry
-%patch31 -p1 -b .meeting-list-view
-%patch33 -p1 -b .e-passwords
+#%patch33 -p1 -b .e-passwords
%patch34 -p1 -b .e-source-combo-box
%patch35 -p1 -b .mail-attachment
%patch36 -p1 -b .icon-names
+%patch37 -p1 -b .source-changed-event
+%patch38 -p1 -b .no-drag-finish
+%patch39 -p1 -b .CVE-2008-0027
+%patch40 -p1 -b .server-message-double-free
+%patch41 -p1 -b .CVE-2008-1108
+%patch42 -p1 -b .CVE-2008-1109
mkdir -p krb5-fakeprefix/include
mkdir -p krb5-fakeprefix/lib
@@ -718,6 +735,42 @@ rm -rf $RPM_BUILD_ROOT
%dir %{_datadir}/omf/evolution
%changelog
+* Wed Jun 04 2008 Matthew Barnes - 2.12.3-5.fc8
+- Add patches for RH bug #449923 (buffer overflow vulnerabilities).
+
+* Tue Mar 25 2008 Dan Williams - 2.12.3-4.fc8
+- Add patch for GNOME bug #524310
+
+* Tue Mar 04 2008 Matthew Barnes - 2.12.3-3.fc8
+- Add patch for CVE-2008-0072 (format string vulnerability).
+
+* Mon Mar 03 2008 Milan Crha - 2.12.3-2.fc8
+- Add patch for GNOME bug #351672 (dragging IMAP messages locks X)
+
+* Mon Jan 07 2008 Milan Crha - 2.12.3-1.fc8
+- Update to 2.12.3
+- Removed patch for RH bug #215467 / GNOME bug #380644 (fixed upstream).
+- Removed patch for RH bug #404591 / GNOME bug #491062 (fixed upstream).
+- Removed patch for RH bug #499920 (fixed upstream).
+- Removed patch for GNOME bug #363695 (causes issues)
+
+* Thu Dec 06 2007 Matthew Barnes - 2.12.2-3.fc8
+- Add patch for GNOME bug #499920 (invalid #include, mainly for Zimbra).
+
+* Thu Nov 29 2007 Milan Crha - 2.12.2-2.fc8
+- Add patch for RH bug #404591 (do not add automatic contacts
+ if disabled)
+
+* Tue Nov 27 2007 Milan Crha - 2.12.2-1.fc8
+- Update to 2.12.2
+
+* Fri Nov 16 2007 Milan Crha - 2.12.1-4.fc8
+- Add patch for GNOME bug #454465 (fix Save button in task dialog)
+
+* Thu Oct 18 2007 Matthew Barnes - 2.12.1-3.fc8
+- Disable patch for GNOME bug #376991 for now. It may be contributing
+ to password prompting problems as described in RH bug #296671.
+
* Mon Oct 15 2007 Matthew Barnes - 2.12.1-2.fc8
- Fix a broken zoom icon.
diff --git a/sources b/sources
index c60686b..de58aef 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-392623efa9b79ede17ce90512f2c3c0a evolution-2.12.1.tar.bz2
+554698d7387aee82c5f4d4520760503d evolution-2.12.3.tar.bz2