diff --git a/.cvsignore b/.cvsignore deleted file mode 100644 index 8aa3781..0000000 --- a/.cvsignore +++ /dev/null @@ -1 +0,0 @@ -evolution-2.10.1.tar.bz2 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b094b52 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +evolution-2.10.3.tar.bz2 diff --git a/Makefile b/Makefile deleted file mode 100644 index 8a15db1..0000000 --- a/Makefile +++ /dev/null @@ -1,6 +0,0 @@ -# Makefile for source rpm: evolution -# $Id$ -NAME := evolution -SPECFILE = $(firstword $(wildcard *.spec)) - -include ../common/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 43b5d69..fee1e80 100644 --- a/evolution-2.10.0-e-source-combo-box.patch +++ b/evolution-2.10.0-e-source-combo-box.patch @@ -1,5 +1,6 @@ ---- evolution-2.10.0/widgets/misc/e-pilot-settings.c.e-source-combo-box 2007-01-03 10:34:47.000000000 -0500 -+++ evolution-2.10.0/widgets/misc/e-pilot-settings.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/widgets/misc/e-pilot-settings.c.e-source-combo-box evolution-2.10.3/widgets/misc/e-pilot-settings.c +--- evolution-2.10.3/widgets/misc/e-pilot-settings.c.e-source-combo-box 2007-04-09 09:10:24.000000000 -0400 ++++ evolution-2.10.3/widgets/misc/e-pilot-settings.c 2007-08-30 09:59:24.000000000 -0400 @@ -27,7 +27,7 @@ #include @@ -9,7 +10,7 @@ #include "e-pilot-settings.h" struct _EPilotSettingsPrivate -@@ -102,7 +102,7 @@ +@@ -102,7 +102,7 @@ build_ui (EPilotSettings *ps, ESourceLis lbl = gtk_label_new (_("Sync with:")); gtk_misc_set_alignment (GTK_MISC (lbl), 0.0, 0.5); @@ -18,7 +19,7 @@ gtk_table_attach_defaults (GTK_TABLE (ps), lbl, 0, 1, 0, 1); gtk_table_attach_defaults (GTK_TABLE (ps), priv->source, 1, 2, 0, 1); gtk_widget_show (lbl); -@@ -152,8 +152,9 @@ +@@ -152,8 +152,9 @@ e_pilot_settings_get_source (EPilotSetti g_return_val_if_fail (E_IS_PILOT_SETTINGS (ps), FALSE); priv = ps->priv; @@ -30,7 +31,7 @@ } void -@@ -166,7 +167,8 @@ +@@ -166,7 +167,8 @@ e_pilot_settings_set_source (EPilotSetti priv = ps->priv; @@ -40,8 +41,9 @@ } gboolean ---- evolution-2.10.0/plugins/itip-formatter/itip-formatter.c.e-source-combo-box 2007-02-26 04:59:58.000000000 -0500 -+++ evolution-2.10.0/plugins/itip-formatter/itip-formatter.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/plugins/itip-formatter/itip-formatter.c.e-source-combo-box evolution-2.10.3/plugins/itip-formatter/itip-formatter.c +--- evolution-2.10.3/plugins/itip-formatter/itip-formatter.c.e-source-combo-box 2007-04-09 09:09:15.000000000 -0400 ++++ evolution-2.10.3/plugins/itip-formatter/itip-formatter.c 2007-08-30 09:59:24.000000000 -0400 @@ -39,7 +39,7 @@ #include #include @@ -51,8 +53,9 @@ #include #include #include ---- evolution-2.10.0/plugins/itip-formatter/itip-view.c.e-source-combo-box 2007-01-03 10:34:04.000000000 -0500 -+++ evolution-2.10.0/plugins/itip-formatter/itip-view.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/plugins/itip-formatter/itip-view.c.e-source-combo-box evolution-2.10.3/plugins/itip-formatter/itip-view.c +--- evolution-2.10.3/plugins/itip-formatter/itip-view.c.e-source-combo-box 2007-04-09 09:09:15.000000000 -0400 ++++ evolution-2.10.3/plugins/itip-formatter/itip-view.c 2007-08-30 09:59:24.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -62,7 +65,7 @@ #include #include #include -@@ -104,8 +104,8 @@ +@@ -104,8 +104,8 @@ struct _ItipViewPrivate { char *description; GtkWidget *selector_box; @@ -73,7 +76,7 @@ ESourceList *source_list; GtkWidget *rsvp_box; -@@ -1664,10 +1664,12 @@ +@@ -1664,10 +1664,12 @@ itip_view_clear_lower_info_items (ItipVi } static void @@ -89,7 +92,7 @@ g_signal_emit (view, signals[SOURCE_SELECTED], 0, source); } -@@ -1684,40 +1686,42 @@ +@@ -1684,40 +1686,42 @@ itip_view_set_source_list (ItipView *vie if (priv->source_list) g_object_unref (priv->source_list); @@ -149,7 +152,7 @@ } ESourceList * -@@ -1743,10 +1747,11 @@ +@@ -1743,10 +1747,11 @@ itip_view_set_source (ItipView *view, ES priv = view->priv; @@ -163,7 +166,7 @@ } ESource * -@@ -1759,10 +1764,11 @@ +@@ -1759,10 +1764,11 @@ itip_view_get_source (ItipView *view) priv = view->priv; @@ -177,8 +180,9 @@ } void ---- evolution-2.10.0/plugins/bbdb/gaimbuddies.c.e-source-combo-box 2007-01-03 10:34:02.000000000 -0500 -+++ evolution-2.10.0/plugins/bbdb/gaimbuddies.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/plugins/bbdb/gaimbuddies.c.e-source-combo-box evolution-2.10.3/plugins/bbdb/gaimbuddies.c +--- evolution-2.10.3/plugins/bbdb/gaimbuddies.c.e-source-combo-box 2007-05-25 02:43:33.000000000 -0400 ++++ evolution-2.10.3/plugins/bbdb/gaimbuddies.c 2007-08-30 09:59:24.000000000 -0400 @@ -44,7 +44,7 @@ #include @@ -188,8 +192,9 @@ #include #include ---- evolution-2.10.0/plugins/bbdb/bbdb.c.e-source-combo-box 2007-01-03 10:34:02.000000000 -0500 -+++ evolution-2.10.0/plugins/bbdb/bbdb.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box evolution-2.10.3/plugins/bbdb/bbdb.c +--- evolution-2.10.3/plugins/bbdb/bbdb.c.e-source-combo-box 2007-06-30 15:29:42.000000000 -0400 ++++ evolution-2.10.3/plugins/bbdb/bbdb.c 2007-08-30 10:03:58.000000000 -0400 @@ -40,7 +40,7 @@ #include @@ -199,17 +204,84 @@ #include #include -@@ -341,7 +341,8 @@ +@@ -71,10 +71,49 @@ static gboolean bbdb_timeout (gpointer d + static void bbdb_do_it (EBook *book, const char *name, const char *email); + static void add_email_to_contact (EContact *contact, const char *email); + static void enable_toggled_cb (GtkWidget *widget, gpointer data); +-static void source_changed_cb (GtkWidget *widget, ESource *source, gpointer data); ++static void source_changed_cb (ESourceComboBox *source_combo_box, struct bbdb_stuff *stuff); + static GtkWidget *create_addressbook_option_menu (struct bbdb_stuff *stuff, int type); + static void cleanup_cb (GObject *o, gpointer data); + ++static ESource * ++find_esource_by_uri (ESourceList *source_list, const gchar *target_uri) ++{ ++ GSList *groups; ++ ++ /* XXX This would be unnecessary if the plugin had stored ++ * the addressbook's UID instead of the URI in GConf. ++ * Too late to change it now, I suppose. */ ++ ++ if (source_list == NULL || target_uri == NULL) ++ return NULL; ++ ++ groups = e_source_list_peek_groups (source_list); ++ ++ while (groups != NULL) { ++ GSList *sources; ++ ++ sources = e_source_group_peek_sources (groups->data); ++ ++ while (sources != NULL) { ++ gchar *uri; ++ gboolean match; ++ ++ uri = e_source_get_uri (sources->data); ++ match = (strcmp (uri, target_uri) == 0); ++ g_free (uri); ++ ++ if (match) ++ return sources->data; ++ ++ sources = g_slist_next (sources); ++ } ++ ++ groups = g_slist_next (groups); ++ } ++ ++ return NULL; ++} ++ + int + e_plugin_lib_enable (EPluginLib *ep, int enable) + { +@@ -353,8 +392,23 @@ enable_toggled_cb (GtkWidget *widget, gp gtk_widget_set_sensitive (stuff->option_menu, active); if (active && !gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL)) { - selected_source = e_source_option_menu_peek_selected (E_SOURCE_OPTION_MENU (stuff->option_menu)); +- gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, e_source_get_uri (selected_source), NULL); ++ const gchar *uri = NULL; ++ GError *error = NULL; ++ + selected_source = e_source_combo_box_get_active ( + E_SOURCE_COMBO_BOX (stuff->option_menu)); - gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, e_source_get_uri (selected_source), NULL); ++ if (selected_source != NULL) ++ uri = e_source_get_uri (selected_source); ++ ++ gconf_client_set_string ( ++ stuff->target->gconf, ++ GCONF_KEY_WHICH_ADDRESSBOOK, ++ uri, &error); ++ ++ if (error != NULL) { ++ g_warning ("%s", error->message); ++ g_error_free (error); ++ } } } -@@ -360,7 +361,8 @@ + +@@ -372,7 +426,8 @@ enable_gaim_toggled_cb (GtkWidget *widge gtk_widget_set_sensitive (stuff->gaim_option_menu, active); if (active && !gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL)) { @@ -219,15 +291,67 @@ gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, e_source_get_uri (selected_source), NULL); } } -@@ -389,31 +391,32 @@ +@@ -384,48 +439,77 @@ synchronize_button_clicked_cb (GtkWidget + } + + static void +-source_changed_cb (GtkWidget *widget, ESource *source, gpointer data) ++source_changed_cb (ESourceComboBox *source_combo_box, ++ struct bbdb_stuff *stuff) + { +- struct bbdb_stuff *stuff = (struct bbdb_stuff *) data; +- +- gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, e_source_get_uri (source), NULL); ++ ESource *source; ++ GError *error = NULL; ++ ++ source = e_source_combo_box_get_active (source_combo_box); ++ g_return_if_fail (source != NULL); ++ ++ gconf_client_set_string ( ++ stuff->target->gconf, ++ GCONF_KEY_WHICH_ADDRESSBOOK, ++ e_source_get_uri (source), &error); ++ ++ if (error != NULL) { ++ g_warning ("%s", error->message); ++ g_error_free (error); ++ } + } + + static void +-gaim_source_changed_cb (GtkWidget *widget, ESource *source, gpointer data) ++gaim_source_changed_cb (ESourceComboBox *source_combo_box, ++ struct bbdb_stuff *stuff) + { +- struct bbdb_stuff *stuff = (struct bbdb_stuff *) data; +- gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, e_source_get_uri (source), NULL); ++ ESource *source; ++ GError *error = NULL; ++ ++ source = e_source_combo_box_get_active (source_combo_box); ++ g_return_if_fail (source != NULL); ++ ++ gconf_client_set_string ( ++ stuff->target->gconf, ++ GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, ++ e_source_get_uri (source), &error); ++ ++ if (error != NULL) { ++ g_warning ("%s", error->message); ++ g_error_free (error); ++ } + } + static GtkWidget * create_addressbook_option_menu (struct bbdb_stuff *stuff, int type) { - GtkWidget *menu; + GtkWidget *combo_box; ESourceList *source_list; - char *selected_source_uri; -- ESource *selected_source; +- char *selected_source_uri; + ESource *selected_source; ++ char *selected_source_uri; GConfClient *gconf = stuff->target->gconf; @@ -239,15 +363,18 @@ selected_source_uri = gconf_client_get_string (gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL); else selected_source_uri = gconf_client_get_string (gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL); - if (selected_source_uri != NULL) { +- if (selected_source_uri != NULL) { - selected_source = e_source_new_with_absolute_uri ("", selected_source_uri); - e_source_option_menu_select (E_SOURCE_OPTION_MENU (menu), selected_source); +- g_free (selected_source_uri); +- } ++ selected_source = find_esource_by_uri ( ++ source_list, selected_source_uri); ++ g_free (selected_source_uri); ++ ++ if (selected_source != NULL) + e_source_combo_box_set_active ( -+ E_SOURCE_COMBO_BOX (combo_box), -+ e_source_new_with_absolute_uri ( -+ "", selected_source_uri)); - g_free (selected_source_uri); - } ++ E_SOURCE_COMBO_BOX (combo_box), selected_source); - gtk_widget_show (menu); + gtk_widget_show (combo_box); @@ -259,8 +386,27 @@ } GtkWidget * ---- evolution-2.10.0/addressbook/gui/contact-list-editor/contact-list-editor.glade.e-source-combo-box 2007-01-03 10:32:47.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-list-editor/contact-list-editor.glade 2007-03-13 16:56:41.000000000 -0400 +@@ -491,7 +575,7 @@ bbdb_page_factory (EPlugin *ep, EConfigH + + /* Source selection option menu */ + option = create_addressbook_option_menu (stuff, AUTOMATIC_CONTACTS_ADDRESSBOOK); +- g_signal_connect (option, "source_selected", G_CALLBACK (source_changed_cb), stuff); ++ g_signal_connect (option, "changed", G_CALLBACK (source_changed_cb), stuff); + gtk_widget_set_sensitive (option, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE, NULL)); + gtk_box_pack_start (GTK_BOX (inner_vbox), option, FALSE, FALSE, 0); + stuff->option_menu = option; +@@ -527,7 +611,7 @@ bbdb_page_factory (EPlugin *ep, EConfigH + + /* Gaim Source Selection Option Menu */ + gaim_option = create_addressbook_option_menu (stuff, GAIM_ADDRESSBOOK); +- g_signal_connect (gaim_option, "source_selected", G_CALLBACK (gaim_source_changed_cb), stuff); ++ g_signal_connect (gaim_option, "changed", G_CALLBACK (gaim_source_changed_cb), stuff); + gtk_widget_set_sensitive (gaim_option, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE_GAIM, NULL)); + gtk_box_pack_start (GTK_BOX (inner_vbox), gaim_option, FALSE, FALSE, 0); + stuff->gaim_option_menu = gaim_option; +diff -up evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade +--- evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade.e-source-combo-box 2007-05-27 14:11:02.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-list-editor/contact-list-editor.glade 2007-08-30 09:59:24.000000000 -0400 @@ -158,9 +158,9 @@ @@ -273,8 +419,9 @@ 0 0 Tue, 01 Jun 2004 18:22:38 GMT ---- evolution-2.10.0/addressbook/gui/contact-list-editor/e-contact-list-editor.c.e-source-combo-box 2007-01-03 10:32:47.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-list-editor/e-contact-list-editor.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c +--- evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c.e-source-combo-box 2007-04-09 09:07:42.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-list-editor/e-contact-list-editor.c 2007-08-30 09:59:24.000000000 -0400 @@ -33,7 +33,7 @@ #include #include @@ -284,7 +431,7 @@ #include #include -@@ -78,7 +78,7 @@ +@@ -78,7 +78,7 @@ static void select_cb (GtkWidget *w, ECo static void list_name_changed_cb (GtkWidget *w, EContactListEditor *editor); static void list_image_changed_cb (GtkWidget *w, EContactListEditor *editor); static void visible_addrs_toggled_cb (GtkWidget *w, EContactListEditor *editor); @@ -293,7 +440,7 @@ static gboolean email_key_pressed (GtkWidget *w, GdkEventKey *event, EContactListEditor *editor); static void email_match_selected (GtkWidget *w, EDestination *destination, EContactListEditor *editor); -@@ -233,7 +233,7 @@ +@@ -233,7 +233,7 @@ e_contact_list_editor_init (EContactList editor->list_name_entry = glade_xml_get_widget (gui, "list-name-entry"); editor->list_image = glade_xml_get_widget (gui, "list-image"); editor->visible_addrs_checkbutton = glade_xml_get_widget (gui, "visible-addrs-checkbutton"); @@ -302,7 +449,7 @@ editor->ok_button = glade_xml_get_widget (gui, "ok-button"); editor->cancel_button = glade_xml_get_widget (gui, "cancel-button"); -@@ -276,7 +276,7 @@ +@@ -276,7 +276,7 @@ e_contact_list_editor_init (EContactList "changed", G_CALLBACK(list_image_changed_cb), editor); g_signal_connect (editor->source_menu, @@ -311,7 +458,7 @@ command_state_changed (editor); -@@ -306,8 +306,9 @@ +@@ -306,8 +306,9 @@ new_target_cb (EBook *new_book, EBookSta if (status != E_BOOK_ERROR_OK || new_book == NULL) { eab_load_error_dialog (NULL, e_book_get_source (new_book), status); @@ -323,7 +470,7 @@ if (new_book) g_object_unref (new_book); -@@ -332,8 +333,12 @@ +@@ -332,8 +333,12 @@ cancel_load (EContactListEditor *editor) } static void @@ -337,7 +484,7 @@ cancel_load (editor); if (e_source_equal (e_book_get_source (editor->book), source)) -@@ -795,28 +800,28 @@ +@@ -795,28 +800,28 @@ select_cb (GtkWidget *w, EContactListEdi } GtkWidget * @@ -376,7 +523,7 @@ } GtkWidget * -@@ -1262,10 +1267,9 @@ +@@ -1262,10 +1267,9 @@ fill_in_info(EContactListEditor *editor) } if (editor->book) { @@ -390,8 +537,9 @@ gtk_widget_set_sensitive (editor->source_menu, editor->is_new_list); gtk_widget_set_sensitive (glade_xml_get_widget (editor->gui, "source-label"), editor->is_new_list); } ---- evolution-2.10.0/addressbook/gui/contact-editor/contact-editor.glade.e-source-combo-box 2007-02-26 04:59:17.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-editor/contact-editor.glade 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade +--- evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade.e-source-combo-box 2007-04-09 09:07:40.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/contact-editor.glade 2007-08-30 09:59:24.000000000 -0400 @@ -356,9 +356,9 @@ @@ -404,8 +552,9 @@ 0 0 Tue, 13 Apr 2004 20:47:50 GMT ---- evolution-2.10.0/addressbook/gui/contact-editor/e-contact-editor.c.e-source-combo-box 2007-02-26 04:59:17.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-editor/e-contact-editor.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c +--- evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c.e-source-combo-box 2007-05-27 12:54:09.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/e-contact-editor.c 2007-08-30 09:59:24.000000000 -0400 @@ -46,7 +46,7 @@ #include @@ -415,7 +564,7 @@ #include -@@ -590,15 +590,16 @@ +@@ -590,15 +590,16 @@ static void fill_in_source_field (EContactEditor *editor) { GtkWidget *source_menu; @@ -436,7 +585,7 @@ } static void -@@ -2525,13 +2526,15 @@ +@@ -2525,13 +2526,15 @@ new_target_cb (EBook *new_book, EBookSta editor->load_book = NULL; if (status != E_BOOK_ERROR_OK || new_book == NULL) { @@ -456,7 +605,7 @@ if (new_book) g_object_unref (new_book); -@@ -2555,8 +2558,12 @@ +@@ -2555,8 +2558,12 @@ cancel_load (EContactEditor *editor) } static void @@ -470,7 +619,7 @@ cancel_load (editor); if (e_source_equal (e_book_get_source (editor->target_book), source)) -@@ -3330,8 +3337,8 @@ +@@ -3329,8 +3336,8 @@ e_contact_editor_init (EContactEditor *e g_signal_connect (widget, "clicked", G_CALLBACK (full_name_clicked), e_contact_editor); widget = glade_xml_get_widget(e_contact_editor->gui, "button-categories"); g_signal_connect (widget, "clicked", G_CALLBACK (categories_clicked), e_contact_editor); @@ -481,7 +630,7 @@ label = glade_xml_get_widget (e_contact_editor->gui, "where-label"); gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget); widget = glade_xml_get_widget (e_contact_editor->gui, "button-ok"); -@@ -3782,25 +3789,25 @@ +@@ -3781,25 +3788,25 @@ e_contact_editor_create_web(gchar *name, } GtkWidget * @@ -489,16 +638,16 @@ - gchar *string1, gchar *string2, - gint int1, gint int2); +e_contact_editor_create_source_combo_box (gchar *name, -+ gchar *string1, gchar *string2, -+ gint int1, gint int2); ++ gchar *string1, gchar *string2, ++ gint int1, gint int2); GtkWidget * -e_contact_editor_create_source_option_menu (gchar *name, - gchar *string1, gchar *string2, - gint int1, gint int2) +e_contact_editor_create_source_combo_box (gchar *name, -+ gchar *string1, gchar *string2, -+ gint int1, gint int2) ++ gchar *string1, gchar *string2, ++ gint int1, gint int2) { - GtkWidget *menu; + GtkWidget *combo_box; @@ -517,8 +666,9 @@ + gtk_widget_show (combo_box); + return combo_box; } ---- evolution-2.10.0/addressbook/gui/contact-editor/e-contact-quick-add.c.e-source-combo-box 2007-01-03 10:32:45.000000000 -0500 -+++ evolution-2.10.0/addressbook/gui/contact-editor/e-contact-quick-add.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c.e-source-combo-box evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c +--- evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c.e-source-combo-box 2007-04-09 09:07:40.000000000 -0400 ++++ evolution-2.10.3/addressbook/gui/contact-editor/e-contact-quick-add.c 2007-08-30 09:59:24.000000000 -0400 @@ -37,7 +37,7 @@ #include #include @@ -528,7 +678,7 @@ #include #include #include "e-contact-editor.h" -@@ -267,8 +267,12 @@ +@@ -267,8 +267,12 @@ clicked_cb (GtkWidget *w, gint button, g } static void @@ -542,7 +692,7 @@ if (qa->book) { g_object_unref (qa->book); qa->book = NULL; -@@ -317,16 +321,20 @@ +@@ -317,16 +321,20 @@ build_quick_add_dialog (QuickAdd *qa) gconf_client = gconf_client_get_default (); source_list = e_source_list_new_for_gconf (gconf_client, "/apps/evolution/addressbook/sources"); @@ -567,8 +717,9 @@ g_object_unref (source_list); ---- evolution-2.10.0/calendar/gui/dialogs/memo-page.glade.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/memo-page.glade 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/memo-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/memo-page.glade +--- evolution-2.10.3/calendar/gui/dialogs/memo-page.glade.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/memo-page.glade 2007-08-30 09:59:24.000000000 -0400 @@ -141,7 +141,7 @@ @@ -578,9 +729,10 @@ 0 0 Tue, 13 Jan 2004 22:00:00 GMT ---- evolution-2.10.0/calendar/gui/dialogs/event-page.glade.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/event-page.glade 2007-03-13 16:56:41.000000000 -0400 -@@ -774,7 +774,7 @@ +diff -up evolution-2.10.3/calendar/gui/dialogs/event-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/event-page.glade +--- evolution-2.10.3/calendar/gui/dialogs/event-page.glade.e-source-combo-box 2007-05-27 13:58:15.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/event-page.glade 2007-08-30 09:59:24.000000000 -0400 +@@ -775,7 +775,7 @@ True @@ -589,8 +741,9 @@ 0 0 Wed, 17 Dec 2003 18:20:26 GMT ---- evolution-2.10.0/calendar/gui/dialogs/task-page.glade.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/task-page.glade 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/task-page.glade.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/task-page.glade +--- evolution-2.10.3/calendar/gui/dialogs/task-page.glade.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/task-page.glade 2007-08-30 09:59:24.000000000 -0400 @@ -618,7 +618,7 @@ 24 @@ -600,8 +753,9 @@ 0 0 Thu, 18 Dec 2003 01:58:48 GMT ---- evolution-2.10.0/calendar/gui/dialogs/memo-page.c.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/memo-page.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/memo-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/memo-page.c +--- evolution-2.10.3/calendar/gui/dialogs/memo-page.c.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/memo-page.c 2007-08-30 09:59:24.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -611,7 +765,7 @@ #include #include #include -@@ -339,7 +339,6 @@ +@@ -339,7 +339,6 @@ memo_page_fill_widgets (CompEditorPage * ECalComponentDateTime d; GSList *l; const char *categories; @@ -619,7 +773,7 @@ mpage = MEMO_PAGE (page); priv = mpage->priv; -@@ -432,8 +431,9 @@ +@@ -432,8 +431,9 @@ memo_page_fill_widgets (CompEditorPage * } /* Source */ @@ -631,7 +785,7 @@ priv->updating = FALSE; -@@ -844,13 +844,12 @@ +@@ -844,13 +844,12 @@ field_changed_cb (GtkWidget *widget, gpo } static void @@ -649,7 +803,7 @@ if (!priv->updating) { ECal *client; -@@ -862,8 +861,9 @@ +@@ -862,8 +861,9 @@ source_changed_cb (GtkWidget *widget, ES if (client) g_object_unref (client); @@ -661,7 +815,7 @@ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, -@@ -973,7 +973,7 @@ +@@ -973,7 +973,7 @@ init_widgets (MemoPage *mpage) G_CALLBACK (categories_clicked_cb), mpage); /* Source selector */ @@ -670,7 +824,7 @@ G_CALLBACK (source_changed_cb), mpage); /* Connect the default signal handler to use to make sure the "changed" -@@ -1167,21 +1167,22 @@ +@@ -1167,21 +1167,22 @@ memo_page_create_date_edit (void) return dedit; } @@ -700,8 +854,9 @@ + gtk_widget_show (combo_box); + return combo_box; } ---- evolution-2.10.0/calendar/gui/dialogs/event-page.c.e-source-combo-box 2007-03-12 23:45:00.000000000 -0400 -+++ evolution-2.10.0/calendar/gui/dialogs/event-page.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/event-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/event-page.c +--- evolution-2.10.3/calendar/gui/dialogs/event-page.c.e-source-combo-box 2007-08-30 09:59:22.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/event-page.c 2007-08-30 09:59:24.000000000 -0400 @@ -33,7 +33,7 @@ #include #include @@ -711,7 +866,7 @@ #include "common/authentication.h" #include "e-util/e-categories-config.h" #include "e-util/e-dialog-widgets.h" -@@ -967,7 +967,6 @@ +@@ -967,7 +967,6 @@ event_page_fill_widgets (CompEditorPage ECalComponentDateTime start_date, end_date; const char *location, *uid = NULL; const char *categories; @@ -719,7 +874,7 @@ GSList *l; gboolean validated = TRUE; -@@ -1163,8 +1162,9 @@ +@@ -1163,8 +1162,9 @@ event_page_fill_widgets (CompEditorPage e_dialog_editable_set (priv->categories, categories); /* Source */ @@ -731,7 +886,7 @@ e_cal_component_get_uid (comp, &uid); if (!(COMP_EDITOR_PAGE (epage)->flags & COMP_EDITOR_PAGE_DELEGATE) -@@ -2566,7 +2566,8 @@ +@@ -2566,7 +2566,8 @@ event_page_sendoptions_clicked_cb (Event if (!priv->sod) { priv->sod = e_sendoptions_dialog_new (); @@ -741,7 +896,7 @@ e_sendoptions_utils_set_default_data (priv->sod, source, "calendar"); priv->sod->data->initialized = TRUE; } -@@ -2595,13 +2596,12 @@ +@@ -2595,13 +2596,12 @@ field_changed_cb (GtkWidget *widget, gpo } static void @@ -759,7 +914,7 @@ if (!priv->updating) { ECal *client; -@@ -2620,8 +2620,9 @@ +@@ -2620,8 +2620,9 @@ source_changed_cb (GtkWidget *widget, ES if (client) g_object_unref (client); @@ -771,7 +926,7 @@ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, -@@ -2847,7 +2848,7 @@ +@@ -2847,7 +2848,7 @@ init_widgets (EventPage *epage) G_CALLBACK (categories_clicked_cb), epage); /* Source selector */ @@ -780,7 +935,7 @@ G_CALLBACK (source_changed_cb), epage); /* Alarms */ priv->alarm_list_store = e_alarm_list_new (); -@@ -3148,23 +3149,24 @@ +@@ -3148,23 +3149,24 @@ make_timezone_entry (void) return w; } @@ -812,8 +967,9 @@ } GtkWidget *make_status_icons (void); ---- evolution-2.10.0/calendar/gui/dialogs/task-page.c.e-source-combo-box 2007-01-03 10:34:49.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/dialogs/task-page.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/dialogs/task-page.c.e-source-combo-box evolution-2.10.3/calendar/gui/dialogs/task-page.c +--- evolution-2.10.3/calendar/gui/dialogs/task-page.c.e-source-combo-box 2007-04-09 09:10:28.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/dialogs/task-page.c 2007-08-30 09:59:24.000000000 -0400 @@ -35,7 +35,7 @@ #include #include @@ -823,7 +979,7 @@ #include #include #include "common/authentication.h" -@@ -513,7 +513,6 @@ +@@ -513,7 +513,6 @@ task_page_fill_widgets (CompEditorPage * icalcomponent *icalcomp; const char *categories, *uid; icaltimezone *zone, *default_zone; @@ -831,7 +987,7 @@ tpage = TASK_PAGE (page); priv = tpage->priv; -@@ -657,8 +656,9 @@ +@@ -657,8 +656,9 @@ task_page_fill_widgets (CompEditorPage * e_dialog_editable_set (priv->categories, categories); /* Source */ @@ -843,7 +999,7 @@ if (priv->is_assignment) { ECalComponentOrganizer organizer; -@@ -1617,13 +1617,12 @@ +@@ -1617,13 +1617,12 @@ field_changed_cb (GtkWidget *widget, gpo } static void @@ -861,7 +1017,7 @@ if (!priv->updating) { ECal *client; -@@ -1642,8 +1641,9 @@ +@@ -1642,8 +1641,9 @@ source_changed_cb (GtkWidget *widget, ES if (client) g_object_unref (client); @@ -873,7 +1029,7 @@ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, -@@ -1655,7 +1655,7 @@ +@@ -1655,7 +1655,7 @@ source_changed_cb (GtkWidget *widget, ES comp_editor_notify_client_changed ( COMP_EDITOR (gtk_widget_get_toplevel (priv->main)), client); @@ -882,7 +1038,7 @@ if (e_cal_get_static_capability (client, CAL_STATIC_CAPABILITY_REQ_SEND_OPTIONS) && priv->is_assignment) task_page_show_options (tpage); else -@@ -1679,7 +1679,8 @@ +@@ -1679,7 +1679,8 @@ task_page_sendoptions_clicked_cb (TaskPa if (!priv->sod) { priv->sod = e_sendoptions_dialog_new (); priv->sod->data->initialized = TRUE; @@ -892,7 +1048,7 @@ e_sendoptions_utils_set_default_data (priv->sod, source, "task"); } -@@ -1734,7 +1735,7 @@ +@@ -1734,7 +1735,7 @@ init_widgets (TaskPage *tpage) G_CALLBACK (categories_clicked_cb), tpage); /* Source selector */ @@ -901,7 +1057,7 @@ G_CALLBACK (source_changed_cb), tpage); /* Connect the default signal handler to use to make sure the "changed" -@@ -1955,21 +1956,22 @@ +@@ -1955,21 +1956,23 @@ task_page_create_date_edit (void) return dedit; } @@ -925,14 +1081,16 @@ - menu = e_source_option_menu_new (source_list); + combo_box = e_source_combo_box_new (source_list); g_object_unref (source_list); ++ g_object_unref (gconf_client); - gtk_widget_show (menu); - return menu; + gtk_widget_show (combo_box); + return combo_box; } ---- evolution-2.10.0/calendar/gui/e-itip-control.c.e-source-combo-box 2007-01-03 10:34:53.000000000 -0500 -+++ evolution-2.10.0/calendar/gui/e-itip-control.c 2007-03-13 16:56:41.000000000 -0400 +diff -up evolution-2.10.3/calendar/gui/e-itip-control.c.e-source-combo-box evolution-2.10.3/calendar/gui/e-itip-control.c +--- evolution-2.10.3/calendar/gui/e-itip-control.c.e-source-combo-box 2007-04-09 09:10:33.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/e-itip-control.c 2007-08-30 09:59:24.000000000 -0400 @@ -44,7 +44,7 @@ #include #include @@ -942,7 +1100,7 @@ #include #include #include -@@ -226,13 +226,13 @@ +@@ -226,13 +226,13 @@ typedef struct { } EItipControlFindData; static void @@ -961,7 +1119,7 @@ if (priv->ok) gtk_widget_set_sensitive (priv->ok, FALSE); -@@ -273,7 +273,7 @@ +@@ -273,7 +273,7 @@ find_cal_opened_cb (ECal *ecal, ECalenda cleanup: if (fd->count == 0) { if (fd->show_selector && !priv->current_ecal && priv->vbox) { @@ -970,7 +1128,7 @@ char *uid; switch (priv->type) { -@@ -297,17 +297,17 @@ +@@ -297,17 +297,17 @@ find_cal_opened_cb (ECal *ecal, ECalenda if (!source) source = e_source_list_peek_source_any (priv->source_lists[priv->type]); diff --git a/evolution-2.10.1-e-attachment-bar.patch b/evolution-2.10.1-e-attachment-bar.patch deleted file mode 100644 index fdea03a..0000000 --- a/evolution-2.10.1-e-attachment-bar.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- evolution-2.10.1/widgets/misc/e-attachment-bar.c.e-attachment-bar 2007-05-01 11:22:41.000000000 -0400 -+++ evolution-2.10.1/widgets/misc/e-attachment-bar.c 2007-05-01 15:10:49.000000000 -0400 -@@ -491,6 +491,8 @@ - g_ptr_array_free (temp_arr, TRUE); - - update (bar); -+ -+ g_signal_emit (bar, signals[CHANGED], 0); - - id++; - diff --git a/evolution-2.10.1-fix-help.patch b/evolution-2.10.1-fix-help.patch deleted file mode 100644 index caf4565..0000000 --- a/evolution-2.10.1-fix-help.patch +++ /dev/null @@ -1,192 +0,0 @@ ---- evolution-2.10.1/widgets/misc/e-multi-config-dialog.c.fix-help 2007-04-09 09:10:24.000000000 -0400 -+++ evolution-2.10.1/widgets/misc/e-multi-config-dialog.c 2007-04-13 22:26:25.000000000 -0400 -@@ -192,13 +192,12 @@ - - switch (response_id) { - case GTK_RESPONSE_HELP: -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- "config-prefs", -- &error); -- if (error != NULL) -+ gnome_help_display ( -+ "evolution.xml", "config-prefs", &error); -+ if (error != NULL) { - g_warning ("%s", error->message); -+ g_error_free (error); -+ } - break; - case GTK_RESPONSE_CLOSE: - default: ---- evolution-2.10.1/widgets/misc/e-send-options.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/widgets/misc/e-send-options.c 2007-04-13 22:26:25.000000000 -0400 -@@ -588,34 +588,32 @@ - - static void e_send_options_cb (GtkDialog *dialog, gint state, gpointer func_data) - { -+ ESendOptionsDialogPrivate *priv; -+ ESendOptionsDialog *sod; -+ GError *error = NULL; - -- ESendOptionsDialogPrivate *priv; -- ESendOptionsDialog *sod; -- GError *error = NULL; -- -- sod = func_data; -- priv = sod->priv; -- -- switch (state) { -- case GTK_RESPONSE_OK: -- e_send_options_get_widgets_data (sod); -- case GTK_RESPONSE_CANCEL: -- gtk_widget_hide (priv->main); -- gtk_widget_destroy (priv->main); -- g_object_unref (priv->xml); -- break; -- case GTK_RESPONSE_HELP: -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- priv->help_section, -- &error); -- if (error != NULL) -- g_warning ("%s", error->message); -- break; -- } -- g_signal_emit (G_OBJECT (func_data), signals[SOD_RESPONSE], 0, state); -+ sod = func_data; -+ priv = sod->priv; -+ -+ switch (state) { -+ case GTK_RESPONSE_OK: -+ e_send_options_get_widgets_data (sod); -+ case GTK_RESPONSE_CANCEL: -+ gtk_widget_hide (priv->main); -+ gtk_widget_destroy (priv->main); -+ g_object_unref (priv->xml); -+ break; -+ case GTK_RESPONSE_HELP: -+ gnome_help_display ( -+ "evolution.xml", priv->help_section, &error); -+ if (error != NULL) { -+ g_warning ("%s", error->message); -+ g_error_free (error); -+ } -+ break; -+ } - -+ g_signal_emit (G_OBJECT (func_data), signals[SOD_RESPONSE], 0, state); - } - - gboolean ---- evolution-2.10.1/plugins/exchange-operations/exchange-send-options.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/plugins/exchange-operations/exchange-send-options.c 2007-04-13 22:26:25.000000000 -0400 -@@ -191,21 +191,20 @@ - - switch (state) { - case GTK_RESPONSE_OK: -- exchange_send_options_get_widgets_data (sod); -+ exchange_send_options_get_widgets_data (sod); - case GTK_RESPONSE_CANCEL: -- gtk_widget_hide (priv->main); -- gtk_widget_destroy (priv->main); -- g_object_unref (priv->xml); -- break; -+ gtk_widget_hide (priv->main); -+ gtk_widget_destroy (priv->main); -+ g_object_unref (priv->xml); -+ break; - case GTK_RESPONSE_HELP: -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- priv->help_section, -- &error); -- if (error != NULL) -- g_warning ("%s", error->message); -- break; -+ gnome_help_display ( -+ "evolution.xml", priv->help_section, &error); -+ if (error != NULL) { -+ g_warning ("%s", error->message); -+ g_error_free (error); -+ } -+ break; - } - g_signal_emit (G_OBJECT (func_data), signals[SOD_RESPONSE], 0, state); - ---- evolution-2.10.1/addressbook/gui/contact-editor/e-contact-editor.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/addressbook/gui/contact-editor/e-contact-editor.c 2007-04-13 22:26:02.000000000 -0400 -@@ -3235,13 +3235,12 @@ - { - GError *error = NULL; - -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- "usage-contact-cards", -- &error); -- if (error != NULL) -+ gnome_help_display ( -+ "evolution.xml", "usage-contact-cards", &error); -+ if (error != NULL) { - g_warning ("%s", error->message); -+ g_error_free (error); -+ } - } - - static GList * ---- evolution-2.10.1/composer/e-msg-composer.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/composer/e-msg-composer.c 2007-04-13 22:26:25.000000000 -0400 -@@ -2886,13 +2886,12 @@ - GError *error = NULL; - EMsgComposerPrivate *p = composer->priv; - -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- "usage-composer", -- &error); -- if (error != NULL) -+ gnome_help_display ( -+ "evolution.xml", "usage-composer", &error); -+ if (error != NULL) { - g_warning ("%s", error->message); -+ g_error_free (error); -+ } - } - - ---- evolution-2.10.1/shell/e-shell-window.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/shell/e-shell-window.c 2007-04-13 22:26:02.000000000 -0400 -@@ -1042,7 +1042,7 @@ - bonobo_ui_util_set_ui (priv->ui_component, - PREFIX, - xmlfile, -- "evolution-" BASE_VERSION, NULL); -+ "evolution", NULL); - g_free (xmlfile); - - e_shell_window_commands_setup (window); ---- evolution-2.10.1/calendar/gui/dialogs/comp-editor.c.fix-help 2007-04-13 22:25:21.000000000 -0400 -+++ evolution-2.10.1/calendar/gui/dialogs/comp-editor.c 2007-04-13 22:26:25.000000000 -0400 -@@ -1693,13 +1693,12 @@ - - priv = editor->priv; - -- gnome_help_display_desktop (NULL, -- "evolution-" BASE_VERSION, -- "evolution-" BASE_VERSION ".xml", -- priv->help_section, -- &error); -- if (error != NULL) -+ gnome_help_display ( -+ "evolution.xml", priv->help_section, &error); -+ if (error != NULL) { - g_warning ("%s", error->message); -+ g_error_free (error); -+ } - } - - diff --git a/evolution-2.10.1-saving-attachments.patch b/evolution-2.10.1-saving-attachments.patch index 1f591f5..e52dc6a 100644 --- a/evolution-2.10.1-saving-attachments.patch +++ b/evolution-2.10.1-saving-attachments.patch @@ -1,5 +1,5 @@ ---- evolution-2.10.1/mail/em-utils.c.saving-attachments 2007-04-14 14:25:40.000000000 -0400 -+++ evolution-2.10.1/mail/em-utils.c 2007-04-14 15:08:50.000000000 -0400 +--- evolution-2.10.2/mail/em-utils.c.saving-attachments 2007-05-29 00:07:55.000000000 -0400 ++++ evolution-2.10.2/mail/em-utils.c 2007-05-29 01:26:46.000000000 -0400 @@ -354,28 +354,23 @@ /* Saving messages... */ @@ -13,13 +13,13 @@ - - if (response == GTK_RESPONSE_OK) { - uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (filesel)); -+ const gchar *filename; - +- - if (!e_file_can_save((GtkWindow *)filesel, uri)) { - g_free(uri); - return; - } -- ++ const gchar *filename; + - e_file_update_save_path(gtk_file_chooser_get_current_folder_uri( - GTK_FILE_CHOOSER(filesel)), TRUE); - /* FIXME: popup error if it fails? */ @@ -42,7 +42,7 @@ } /** -@@ -387,83 +382,78 @@ +@@ -387,85 +382,79 @@ * Saves a mime part to disk (prompting the user for filename). **/ void @@ -54,6 +54,8 @@ + GtkWidget *file_chooser; + const gchar *filename; + gchar *uri = NULL; ++ ++ filename = emu_save_get_filename_for_part (part); - name = camel_mime_part_get_filename(part); - if (name == NULL) { @@ -64,46 +66,25 @@ - } else { - name = _("attachment"); - } -+ filename = emu_save_get_filename_for_part (part); -+ +- } + file_chooser = e_file_get_save_filesel ( + parent, prompt, filename, GTK_FILE_CHOOSER_ACTION_SAVE); -+ -+ if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK) -+ goto exit; -+ -+ uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser)); -+ -+ /* XXX Would be nice to mention _why_ we can't save. */ -+ if (!e_file_can_save (GTK_WINDOW (file_chooser), uri)) { -+ g_warning ("Unable to save %s", uri); -+ goto exit; - } - filesel = e_file_get_save_filesel(parent, prompt, name, GTK_FILE_CHOOSER_ACTION_SAVE); - camel_object_ref(part); - g_signal_connect (filesel, "response", G_CALLBACK (emu_save_part_response), part); - gtk_widget_show (filesel); -+ e_file_update_save_path ( -+ gtk_file_chooser_get_current_folder_uri ( -+ GTK_FILE_CHOOSER (file_chooser)), TRUE); -+ -+ mail_save_part (part, uri, NULL, NULL, FALSE); -+ -+exit: -+ gtk_widget_destroy (file_chooser); -+ g_free (uri); - } +-} ++ if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK) ++ goto exit; -static void -emu_save_parts_response (GtkWidget *filesel, int response, GSList *parts) -+void -+em_utils_save_parts (GtkWidget *parent, const gchar *prompt, GSList *parts) - { +-{ - GSList *selected; - char *uri = NULL; - if (response == GTK_RESPONSE_OK) { -- uri = gtk_file_chooser_get_current_folder_uri(GTK_FILE_CHOOSER (filesel)); +- uri = gtk_file_chooser_get_uri(GTK_FILE_CHOOSER (filesel)); - e_file_update_save_path(uri, FALSE); - - for ( selected = parts; selected != NULL; selected = selected->next) { @@ -132,11 +113,48 @@ - mail_save_part(part, file_path, NULL, NULL, FALSE); - else - g_warning ("Could not save %s. File already exists", file_path); -+ GtkWidget *file_chooser; ++ uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser)); ++ ++ /* XXX Would be nice to mention _why_ we can't save. */ ++ if (!e_file_can_save (GTK_WINDOW (file_chooser), uri)) { ++ g_warning ("Unable to save %s", uri); ++ goto exit; ++ } ++ ++ e_file_update_save_path ( ++ gtk_file_chooser_get_current_folder_uri ( ++ GTK_FILE_CHOOSER (file_chooser)), TRUE); + +- g_free (file_path); +- g_free (safe_name); +- } ++ mail_save_part (part, uri, NULL, NULL, FALSE); + +- g_free (uri); +- } +- +- g_slist_free (parts); +- gtk_widget_destroy((GtkWidget *)filesel); ++exit: ++ gtk_widget_destroy (file_chooser); ++ g_free (uri); + } +- ++ + void +-em_utils_save_parts (GtkWidget *parent, const char *prompt, GSList * parts) ++em_utils_save_parts (GtkWidget *parent, const gchar *prompt, GSList *parts) + { +- GtkWidget *filesel; ++ GtkWidget *file_chooser; + gchar *path_uri; + GSList *iter; -+ -+ file_chooser = e_file_get_save_filesel ( + +- filesel = e_file_get_save_filesel (parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); +- g_signal_connect (filesel, "response", G_CALLBACK (emu_save_parts_response), parts); +- gtk_widget_show (filesel); +-} ++ file_chooser = e_file_get_save_filesel ( + parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); + + if (gtk_dialog_run (GTK_DIALOG (file_chooser)) != GTK_RESPONSE_OK) @@ -145,17 +163,14 @@ + path_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (file_chooser)); + + e_file_update_save_path (path_uri, FALSE); - -- g_free (file_path); -- g_free (safe_name); -- } ++ + for (iter = parts; iter != NULL; iter = iter->next) { + CamelMimePart *part = iter->data; + const gchar *filename; + gchar *uri; + + filename = emu_save_get_filename_for_part (part); -+ + + uri = g_build_path ("/", path_uri, filename, NULL); + + /* XXX Would be nice to mention _why_ we can't save. */ @@ -163,31 +178,20 @@ + mail_save_part (part, uri, NULL, NULL, FALSE); + else + g_warning ("Unable to save %s", uri); - - g_free (uri); -- } -- -- g_slist_free (parts); -- gtk_widget_destroy((GtkWidget *)filesel); --} ++ ++ g_free (uri); + } - --void --em_utils_save_parts (GtkWidget *parent, const char *prompt, GSList * parts) --{ -- GtkWidget *filesel; ++ + g_free (path_uri); - -- filesel = e_file_get_save_filesel (parent, prompt, NULL, GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER); -- g_signal_connect (filesel, "response", G_CALLBACK (emu_save_parts_response), parts); -- gtk_widget_show (filesel); ++ +exit: + gtk_widget_destroy (file_chooser); - } ++} - ---- evolution-2.10.1/mail/em-format-html-display.c.saving-attachments 2007-04-14 14:25:40.000000000 -0400 -+++ evolution-2.10.1/mail/em-format-html-display.c 2007-04-14 15:08:50.000000000 -0400 + /** + * em_utils_save_part_to_file: +--- evolution-2.10.2/mail/em-format-html-display.c.saving-attachments 2007-05-29 00:07:55.000000000 -0400 ++++ evolution-2.10.2/mail/em-format-html-display.c 2007-05-29 00:07:55.000000000 -0400 @@ -2099,12 +2099,24 @@ } diff --git a/evolution-2.10.3-CVE-2008-0072.patch b/evolution-2.10.3-CVE-2008-0072.patch new file mode 100644 index 0000000..32e3eec --- /dev/null +++ b/evolution-2.10.3-CVE-2008-0072.patch @@ -0,0 +1,48 @@ +diff -up evolution-2.10.3/mail/em-format.c.CVE-2008-0072 evolution-2.10.3/mail/em-format.c +--- evolution-2.10.3/mail/em-format.c.CVE-2008-0072 2008-03-04 15:44:32.000000000 -0500 ++++ evolution-2.10.3/mail/em-format.c 2008-03-04 15:45:23.000000000 -0500 +@@ -1155,7 +1155,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) +@@ -1305,7 +1305,7 @@ emf_multipart_encrypted(EMFormat *emf, C + if (valid == NULL) { + em_format_format_error(emf, stream, ex->desc?("Could not parse S/MIME message"):_("Could not parse S/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) +@@ -1470,7 +1470,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) +@@ -1536,7 +1536,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); +@@ -1607,7 +1607,7 @@ emf_inlinepgp_encrypted(EMFormat *emf, C + if (!valid) { + em_format_format_error(emf, stream, ex->desc?("Could not parse S/MIME message"):_("Could not parse S/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_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.10.3-CVE-2008-1108.patch b/evolution-2.10.3-CVE-2008-1108.patch new file mode 100644 index 0000000..d577c13 --- /dev/null +++ b/evolution-2.10.3-CVE-2008-1108.patch @@ -0,0 +1,310 @@ +diff -up evolution-2.10.3/calendar/gui/e-itip-control.c.CVE-2008-1108 evolution-2.10.3/calendar/gui/e-itip-control.c +--- evolution-2.10.3/calendar/gui/e-itip-control.c.CVE-2008-1108 2008-06-04 05:55:50.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/e-itip-control.c 2008-06-04 06:00:35.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_assert_not_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.10.3-CVE-2008-1109.patch b/evolution-2.10.3-CVE-2008-1109.patch new file mode 100644 index 0000000..46cae4d --- /dev/null +++ b/evolution-2.10.3-CVE-2008-1109.patch @@ -0,0 +1,61 @@ +diff -up evolution-2.10.3/calendar/gui/itip-utils.c.CVE-2008-1109 evolution-2.10.3/calendar/gui/itip-utils.c +--- evolution-2.10.3/calendar/gui/itip-utils.c.CVE-2008-1109 2008-06-04 05:55:50.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/itip-utils.c 2008-06-04 05:58:49.000000000 -0400 +@@ -158,50 +158,16 @@ get_attendee (GSList *attendees, char *a + + + 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.10.3-fix-ETreeTableAdapter-crash.patch b/evolution-2.10.3-fix-ETreeTableAdapter-crash.patch new file mode 100644 index 0000000..1591e0e --- /dev/null +++ b/evolution-2.10.3-fix-ETreeTableAdapter-crash.patch @@ -0,0 +1,50 @@ +--- trunk/widgets/table/e-tree-table-adapter.c 2007/08/07 09:35:42 33964 ++++ trunk/widgets/table/e-tree-table-adapter.c 2007/08/24 09:10:55 34090 +@@ -80,6 +80,8 @@ + int node_removed_id; + int node_request_collapse_id; + int sort_info_changed_id; ++ ++ guint resort_idle_id; + }; + + static void etta_sort_info_changed (ETableSortInfo *sort_info, ETreeTableAdapter *etta); +@@ -498,6 +500,11 @@ + { + ETreeTableAdapter *etta = E_TREE_TABLE_ADAPTER (object); + ++ if (etta->priv->resort_idle_id) { ++ g_source_remove (etta->priv->resort_idle_id); ++ etta->priv->resort_idle_id = 0; ++ } ++ + if (etta->priv->root) { + kill_gnode(etta->priv->root, etta); + etta->priv->root = NULL; +@@ -728,6 +735,8 @@ + etta->priv->node_inserted_id = 0; + etta->priv->node_removed_id = 0; + etta->priv->node_request_collapse_id = 0; ++ ++ etta->priv->resort_idle_id = 0; + } + + static void +@@ -746,6 +755,7 @@ + resort_model (ETreeTableAdapter *etta) + { + etta_sort_info_changed (NULL, etta); ++ etta->priv->resort_idle_id = 0; + return FALSE; + } + +@@ -758,7 +768,8 @@ + /* FIXME: Really it shouldnt be required. But a lot of thread + * which were supposed to be present in the list is way below + */ +- g_idle_add (resort_model, etta); ++ if (!etta->priv->resort_idle_id) ++ etta->priv->resort_idle_id = g_idle_add ((GSourceFunc) resort_model, etta); + } + + static void 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.10.3-todo-conduit.patch b/evolution-2.10.3-todo-conduit.patch new file mode 100644 index 0000000..65a2c9b --- /dev/null +++ b/evolution-2.10.3-todo-conduit.patch @@ -0,0 +1,12 @@ +diff -up evolution-2.10.3/calendar/conduits/todo/todo-conduit.c.todo-conduit evolution-2.10.3/calendar/conduits/todo/todo-conduit.c +--- evolution-2.10.3/calendar/conduits/todo/todo-conduit.c.todo-conduit 2007-11-03 15:21:56.000000000 -0400 ++++ evolution-2.10.3/calendar/conduits/todo/todo-conduit.c 2007-11-03 15:22:10.000000000 -0400 +@@ -992,7 +992,7 @@ comp_from_remote_record (GnomePilotCondu + e_cal_component_set_status (comp, ICAL_STATUS_NEEDSACTION); + } + +- if (!is_empty_time (todo.due)) { ++ if (!todo.indefinite && !is_empty_time (todo.due)) { + due = tm_to_icaltimetype (&todo.due, TRUE); + dt.value = &due; + e_cal_component_set_due (comp, &dt); diff --git a/evolution-2.10.3-version-checks.patch b/evolution-2.10.3-version-checks.patch new file mode 100644 index 0000000..9ea0f56 --- /dev/null +++ b/evolution-2.10.3-version-checks.patch @@ -0,0 +1,347 @@ +--- evolution-2.10.3/a11y/Makefile.am.version-checks 2007-04-09 09:10:38.000000000 -0400 ++++ evolution-2.10.3/a11y/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -31,4 +31,4 @@ libevolution_a11y_la_LIBADD = \ + e-text/libgal-a11y-etext.la \ + e-table/libgal-a11y-etable.la \ + $(top_builddir)/e-util/libeutil.la \ +- $(EXTRA_GNOME_LIBS) ++ $(GNOME_PLATFORM_LIBS) +--- evolution-2.10.3/a11y/e-text/Makefile.am.version-checks 2007-04-09 09:10:36.000000000 -0400 ++++ evolution-2.10.3/a11y/e-text/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -1,7 +1,7 @@ + INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/widgets \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + -DG_LOG_DOMAIN=\"e-text\" + + noinst_LTLIBRARIES = libgal-a11y-etext.la +--- evolution-2.10.3/a11y/e-table/Makefile.am.version-checks 2007-04-09 09:10:38.000000000 -0400 ++++ evolution-2.10.3/a11y/e-table/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -1,7 +1,7 @@ + INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/widgets \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + -DG_LOG_DOMAIN=\"e-table\" + + noinst_LTLIBRARIES = libgal-a11y-etable.la +--- evolution-2.10.3/configure.in.version-checks 2007-07-27 10:45:06.000000000 -0400 ++++ evolution-2.10.3/configure.in 2007-07-27 10:55:54.000000000 -0400 +@@ -4,6 +4,34 @@ AC_PREREQ(2.52) + AC_INIT(evolution, 2.10.3, http://bugzilla.gnome.org/enter_bug.cgi?product=Evolution) + AC_CONFIG_SRCDIR(README) + ++# Some requirements have versioned package names ++# XXX In the spirit of getting rid of versioned ++# files, can we drop these suffixes? ++EDS_PACKAGE=1.2 ++GTKHTML_PACKAGE=3.14 ++ ++# Required Packages ++m4_define([gtk_minimum_version], [2.10.0]) ++m4_define([eds_minimum_version], [1.9.4]) ++m4_define([gnome_icon_theme_minimum_version], [1.2.0]) ++m4_define([gnome_vfs_minimum_version], [2.4.0]) ++m4_define([libbonoboui_minimum_version], [2.4.2]) ++m4_define([libgtkhtml_minimum_version], [3.14.0]) ++m4_define([gconf_minimum_version], [2.0.0]) # XXX Just a Guess ++m4_define([libglade_minimum_version], [2.0.0]) # XXX Just a Guess ++m4_define([libgnomecanvas_minimum_version], [2.0.0]) # XXX Just a Guess ++m4_define([libgnomeui_minimum_version], [2.0.0]) # XXX Just a Guess ++m4_define([libxml_minimum_version], [2.0.0]) # XXX Just a Guess ++ ++# Optional Packages ++# ++# FIXME Minimum versions for dbus-glib-1 and libnm_glib ? ++# FIXME Move audio-inline plugin from gstreamer-0.8 to 0.10 ? ++# ++m4_define([dbus_minimum_version], [1.0.0]) ++m4_define([hal_minimum_version], [0.5.4]) ++m4_define([libnotify_minimum_version], [0.3.0]) ++m4_define([gnome_pilot_minimum_version], [2.0.0]) # XXX Just a Guess + + # GNOME Documentation + GNOME_DOC_INIT +@@ -127,6 +155,27 @@ AM_CONDITIONAL(OS_WIN32, [test $os_win32 + AC_SUBST(NO_UNDEFINED) + AC_SUBST(SOEXT) + ++# Check for base dependencies early. ++PKG_CHECK_MODULES(GNOME_PLATFORM, ++ [gtk+-2.0 >= gtk_minimum_version ++ gconf-2.0 >= gconf_minimum_version ++ gnome-vfs-2.0 >= gnome_vfs_minimum_version ++ libbonoboui-2.0 >= libbonoboui_minimum_version ++ libglade-2.0 >= libglade_minimum_version ++ libgnomecanvas-2.0 >= libgnomecanvas_minimum_version ++ libgnomeui-2.0 >= libgnomeui_minimum_version ++ libxml-2.0 >= libxml_minimum_version]) ++AC_SUBST(GNOME_PLATFORM_CFLAGS) ++AC_SUBST(GNOME_PLATFORM_LIBS) ++ ++PKG_CHECK_MODULES(EVOLUTION_DATA_SERVER, ++ [libebook-$EDS_PACKAGE >= eds_minimum_version ++ libecal-$EDS_PACKAGE >= eds_minimum_version ++ libedataserver-$EDS_PACKAGE >= eds_minimum_version ++ libedataserverui-$EDS_PACKAGE >= eds_minimum_version ++ libegroupwise-$EDS_PACKAGE >= eds_minimum_version ++ libexchange-storage-$EDS_PACKAGE >= eds_minimum_version]) ++ + dnl ****************************** + dnl iconv checking + dnl ****************************** +@@ -403,7 +452,7 @@ AC_CHECK_FUNCS(statfs) + dnl ************************************************** + dnl * Gnome Icon Theme + dnl ************************************************** +-PKG_CHECK_MODULES(GIT, gnome-icon-theme >= 1.2.0) ++PKG_CHECK_MODULES(GIT, gnome-icon-theme >= gnome_icon_theme_minimum_version) + + dnl ************************************************** + dnl * Accessibility support +@@ -563,7 +612,8 @@ AC_CHECK_FUNCS(regexec,,[AC_CHECK_LIB(re + [AC_MSG_ERROR([No regex library found])])]) + AC_SUBST(REGEX_LIBS) + +-PKG_CHECK_MODULES(GTKHTML, libgtkhtml-3.14) ++# XXX Drop the version from the package name? ++PKG_CHECK_MODULES(GTKHTML, libgtkhtml-3.14 >= libgtkhtml_minimum_version) + AC_SUBST(GTKHTML_CFLAGS) + AC_SUBST(GTKHTML_LIBS) + GTKHTML_DATADIR=`$PKG_CONFIG --variable gtkhtml_datadir libgtkhtml-3.14` +@@ -580,7 +630,7 @@ dnl ****************************** + AC_ARG_ENABLE(pilot-conduits, + [ --enable-pilot-conduits=[no/yes] Enable support for building pilot conduits.],,enable_pilot_conduits=no) + if test "x$enable_pilot_conduits" = "xyes"; then +- PKG_CHECK_MODULES(GNOME_PILOT, gnome-pilot-2.0) ++ PKG_CHECK_MODULES(GNOME_PILOT, gnome-pilot-2.0 >= gnome_pilot_minimum_version) + + CFLAGS_save="$CFLAGS" + CFLAGS="$CFLAGS $GNOME_PILOT_CFLAGS" +@@ -1178,27 +1228,12 @@ fi + + dnl --- Required version numbers + +-GTKHTML_REQUIRED=3.14.0 +-GTKHTML_PACKAGE=3.14 +-EDS_REQUIRED=1.9.4 +-EDS_PACKAGE=1.2 +-BONOBOUI_REQUIRED=2.4.2 +-GNOME_VFS_REQUIRED=2.4 +- +-AC_SUBST(GTKHTML_REQUIRED) +-AC_SUBST(GTKHTML_PACKAGE) +-AC_SUBST(EDS_REQUIRED) +-AC_SUBST(EDS_PACKAGE) ++BONOBOUI_REQUIRED=libbonoboui_minimum_version + AC_SUBST(BONOBOUI_REQUIRED) +-AC_SUBST(GNOME_VFS_REQUIRED) + + dnl --- Flags to get all the GNOME stuff + +-FULL_GNOME_DEPS="glib-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED gnome-vfs-2.0 >= $GNOME_VFS_REQUIRED libgnomeui-2.0 libglade-2.0 libgnomecanvas-2.0 libxml-2.0 gconf-2.0" +- +-EVO_SET_COMPILE_FLAGS(GNOME_FULL, $FULL_GNOME_DEPS) +-AC_SUBST(GNOME_FULL_CFLAGS) +-AC_SUBST(GNOME_FULL_LIBS) ++FULL_GNOME_DEPS="libbonoboui-2.0 gnome-vfs-2.0 libgnomeui-2.0 libglade-2.0" + + CPPFLAGS_save="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS `$PKG_CONFIG --cflags-only-I libgnomeui-2.0`" +@@ -1206,11 +1241,7 @@ AC_CHECK_HEADERS(libgnomeui/gnome-icon-l + AC_CHECK_HEADERS(libgnomeui/gnome-thumbnail.h) + CPPFLAGS="$CPPFLAGS_save" + +-PKG_CHECK_MODULES(EXTRA_GNOME, libgnomeprint-2.2 >= 2.7.0 libgnomeprintui-2.2 >= 2.2.1 $FULL_GNOME_DEPS) +-AC_SUBST(EXTRA_GNOME_LIBS) +-AC_SUBST(EXTRA_GNOME_CFLAGS) +- +-PKG_CHECK_MODULES(HAL, hal >= 0.5.4, HAVE_HAL="yes", HAVE_HAL="no") ++PKG_CHECK_MODULES(HAL, hal >= hal_minimum_version, HAVE_HAL="yes", HAVE_HAL="no") + if test "x$HAVE_HAL" = "xyes"; then + AC_DEFINE(HAVE_HAL, 1, [hal available]) + HAL_REQUIREMENT="hal" +@@ -1226,7 +1257,7 @@ EVO_SET_COMPILE_FLAGS(CAMEL, camel-provi + AC_SUBST(CAMEL_CFLAGS) + AC_SUBST(CAMEL_LIBS) + +-EVO_SET_COMPILE_FLAGS(CAMEL_GROUPWISE, camel-provider-$EDS_PACKAGE libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED libegroupwise-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(CAMEL_GROUPWISE, camel-provider-$EDS_PACKAGE libedataserver-$EDS_PACKAGE libegroupwise-$EDS_PACKAGE) + AC_SUBST(CAMEL_GROUPWISE_CFLAGS) + AC_SUBST(CAMEL_GROUPWISE_LIBS) + +@@ -1239,33 +1270,33 @@ else + fi + fi + +-EVO_SET_COMPILE_FLAGS(CERT_UI, libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED libglade-2.0 gtk+-2.0 glib-2.0 gobject-2.0 gthread-2.0, ++EVO_SET_COMPILE_FLAGS(CERT_UI, libedataserverui-$EDS_PACKAGE libglade-2.0 gthread-2.0, + $MANUAL_NSS_CFLAGS $MOZILLA_NSS_CFLAGS, + $MOZILLA_L_DIR $MANUAL_NSS_LIBS $MOZILLA_NSS_LIBS) + AC_SUBST(CERT_UI_CFLAGS) + AC_SUBST(CERT_UI_LIBS) + +-EVO_SET_COMPILE_FLAGS(E_NAME, libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED) ++EVO_SET_COMPILE_FLAGS(E_NAME, libgnomeui-2.0 libbonoboui-2.0) + AC_SUBST(E_NAME_CFLAGS) + AC_SUBST(E_NAME_LIBS) + +-EVO_SET_COMPILE_FLAGS(E_UTIL, gthread-2.0 gconf-2.0 libxml-2.0 gtk+-unix-print-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeui-2.0 libgnome-2.0 libgnomecanvas-2.0 libgnomeprintui-2.2 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED $mozilla_nspr $mono_package, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS) ++EVO_SET_COMPILE_FLAGS(E_UTIL, libbonoboui-2.0 libglade-2.0 libgnomeui-2.0 libedataserver-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE $mozilla_nspr $mono_package, $THREADS_CFLAGS $MANUAL_NSPR_CFLAGS, $THREADS_LIBS $MANUAL_NSPR_LIBS) + AC_SUBST(E_UTIL_CFLAGS) + AC_SUBST(E_UTIL_LIBS) + +-EVO_SET_COMPILE_FLAGS(TZDIALOG, libecal-$EDS_PACKAGE >= $EDS_REQUIRED, $GNOME_FULL_CFLAGS, $GNOME_FULL_LIBS) ++EVO_SET_COMPILE_FLAGS(TZDIALOG, libecal-$EDS_PACKAGE, $GNOME_PLATFORM_CFLAGS, $GNOME_PLATFORM_LIBS) + AC_SUBST(TZDIALOG_CFLAGS) + AC_SUBST(TZDIALOG_LIBS) + +-EVO_SET_COMPILE_FLAGS(E_WIDGETS, glib-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED gnome-vfs-2.0 gnome-vfs-module-2.0 libgnomeui-2.0 libglade-2.0 libgnomecanvas-2.0 libxml-2.0 gconf-2.0 libedataserverui-$EDS_PACKAGE libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(E_WIDGETS, libbonoboui-2.0 gnome-vfs-module-2.0 libgnomeui-2.0 libglade-2.0 libedataserverui-$EDS_PACKAGE libedataserver-$EDS_PACKAGE) + AC_SUBST(E_WIDGETS_CFLAGS) + AC_SUBST(E_WIDGETS_LIBS) + +-EVO_SET_COMPILE_FLAGS(IMPORTERS, libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED camel-provider-$EDS_PACKAGE camel-$EDS_PACKAGE gconf-2.0 libglade-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libgnomeui-2.0 libebook-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(IMPORTERS, libedataserverui-$EDS_PACKAGE camel-provider-$EDS_PACKAGE camel-$EDS_PACKAGE libglade-2.0 libbonoboui-2.0 libgnomeui-2.0 libebook-$EDS_PACKAGE) + AC_SUBST(IMPORTERS_CFLAGS) + AC_SUBST(IMPORTERS_LIBS) + +-EVO_SET_COMPILE_FLAGS(LIBFILTER, libgnome-2.0 libgnomeui-2.0 libglade-2.0 libxml-2.0 gconf-2.0 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(LIBFILTER, libgnomeui-2.0 libglade-2.0 libedataserver-$EDS_PACKAGE >= $EDS_REQUIRED) + AC_SUBST(LIBFILTER_CFLAGS) + AC_SUBST(LIBFILTER_LIBS) + +@@ -1292,14 +1323,14 @@ AM_CONDITIONAL(NM_SUPPORT_GLIB, test x$N + AM_CONDITIONAL(NM_SUPPORT, test x$NM_SUPPORT = xyes) + + +-EVO_SET_COMPILE_FLAGS(SHELL, libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED $NM_SUPPORT_PACKAGES) ++EVO_SET_COMPILE_FLAGS(SHELL, libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE $NM_SUPPORT_PACKAGES) + + AC_SUBST(SHELL_CFLAGS) + AC_SUBST(SHELL_LIBS) + + dnl --- evolution-addressbook flags + +-EVOLUTION_ADDRESSBOOK_DEPS="gconf-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeui-2.0 libgnome-2.0 libgnomecanvas-2.0 gtk+-unix-print-2.0 gnome-vfs-2.0 libgnomeprintui-2.2 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED camel-$EDS_PACKAGE" ++EVOLUTION_ADDRESSBOOK_DEPS="libbonoboui-2.0 libglade-2.0 libgnomeui-2.0 gnome-vfs-2.0 libgtkhtml-$GTKHTML_PACKAGE libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE camel-$EDS_PACKAGE" + + EVO_SET_COMPILE_FLAGS(EVOLUTION_ADDRESSBOOK, $EVOLUTION_ADDRESSBOOK_DEPS) + AC_SUBST(EVOLUTION_ADDRESSBOOK_CFLAGS) +@@ -1313,7 +1344,7 @@ fi + + LIBNOTIFY_CFLAGS= + LIBNOTIFY_LIBS= +-PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= 0.3.0, HAVE_LIBNOTIFY="yes", HAVE_LIBNOTIFY="no") ++PKG_CHECK_MODULES(LIBNOTIFY, libnotify >= libnotify_minimum_version, HAVE_LIBNOTIFY="yes", HAVE_LIBNOTIFY="no") + if test "x$HAVE_LIBNOTIFY" = "xyes"; then + AC_DEFINE(HAVE_LIBNOTIFY, 1, [libnotify available]) + libnotify="libnotify" +@@ -1337,7 +1368,7 @@ EVO_SET_COMPILE_FLAGS(LIBSOUP, $LIBSOUP + AC_SUBST(LIBSOUP_CFLAGS) + AC_SUBST(LIBSOUP_LIBS) + +-EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-2.0 gtk+-unix-print-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libebook-$EDS_PACKAGE >= $EDS_REQUIRED libecal-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED $HAL_REQUIREMENT $libnotify) ++EVO_SET_COMPILE_FLAGS(EVOLUTION_CALENDAR, libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE libebook-$EDS_PACKAGE libecal-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE $HAL_REQUIREMENT $libnotify) + AC_SUBST(EVOLUTION_CALENDAR_CFLAGS) + AC_SUBST(EVOLUTION_CALENDAR_LIBS) + +@@ -1349,7 +1380,7 @@ fi + + dnl --- evolution-mail flags + +-EVO_SET_COMPILE_FLAGS(EVOLUTION_MAIL, camel-provider-$EDS_PACKAGE libgnome-2.0 libgnomeui-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 gnome-vfs-module-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 libgtkhtml-$GTKHTML_PACKAGE >= $GTKHTML_REQUIRED libxml-2.0 bonobo-activation-2.0 gthread-2.0 gconf-2.0 gtk+-unix-print-2.0 $mozilla_nss libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE >= $EDS_REQUIRED) ++EVO_SET_COMPILE_FLAGS(EVOLUTION_MAIL, camel-provider-$EDS_PACKAGE libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE bonobo-activation-2.0 $mozilla_nss libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE) + AC_SUBST(EVOLUTION_MAIL_CFLAGS) + AC_SUBST(EVOLUTION_MAIL_LIBS) + +@@ -1372,7 +1403,7 @@ fi + + dnl --- evolution-test flags + +-EVO_SET_COMPILE_FLAGS(EVOLUTION_TEST, libgnome-2.0 libgnomeui-2.0 libbonobo-2.0 libbonoboui-2.0 >= $BONOBOUI_REQUIRED) ++EVO_SET_COMPILE_FLAGS(EVOLUTION_TEST, libgnomeui-2.0 libbonoboui-2.0) + AC_SUBST(EVOLUTION_TEST_CFLAGS) + AC_SUBST(EVOLUTION_TEST_LIBS) + +@@ -1591,7 +1622,7 @@ if echo ${plugins_enabled} | grep "excha + dnl ************************************************** + dnl * Exchange Operations plugin + dnl ************************************************** +- EVO_SET_COMPILE_FLAGS(CAMEL_EXCHANGE, libbonoboui-2.0 >= $BONOBOUI_REQUIRED libglade-2.0 libgnomeprint-2.2 libgnomeprintui-2.2 gthread-2.0 gconf-2.0 camel-provider-$EDS_PACKAGE libebook-$EDS_PACKAGE >= $EDS_REQUIRED libedataserverui-$EDS_PACKAGE libexchange-storage-$EDS_PACKAGE >= $EDS_REQUIRED libecal-$EDS_PACKAGE) ++ EVO_SET_COMPILE_FLAGS(CAMEL_EXCHANGE, libbonoboui-2.0 libglade-2.0 gconf-2.0 camel-provider-$EDS_PACKAGE libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE libexchange-storage-$EDS_PACKAGE libecal-$EDS_PACKAGE) + AC_SUBST(CAMEL_EXCHANGE_CFLAGS) + AC_SUBST(CAMEL_EXCHANGE_LIBS) + else +--- evolution-2.10.3/widgets/misc/Makefile.am.version-checks 2007-04-09 09:10:24.000000000 -0400 ++++ evolution-2.10.3/widgets/misc/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -10,7 +10,7 @@ INCLUDES = \ + -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \ + -DG_LOG_DOMAIN=__FILE__ \ + $(EVOLUTION_MAIL_CFLAGS) \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + $(ICONV_CFLAGS) + + +@@ -137,7 +137,7 @@ libemiscwidgets_la_LIBADD = $(top_buildd + $(top_builddir)/a11y/widgets/libevolution-widgets-a11y.la \ + $(top_builddir)/a11y/libevolution-a11y.la \ + $(CAMEL_LIBS) \ +- $(EXTRA_GNOME_LIBS) \ ++ $(GNOME_PLATFORM_LIBS) \ + $(ICONV_LIBS) + + libefilterbar_la_SOURCES = \ +--- evolution-2.10.3/widgets/table/Makefile.am.version-checks 2007-04-09 09:10:21.000000000 -0400 ++++ evolution-2.10.3/widgets/table/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -13,7 +13,7 @@ INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/widgets \ + $(E_WIDGETS_CFLAGS) \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + -DEVOLUTION_GLADEDIR=\"$(gladedir)\" \ + -DG_LOG_DOMAIN=\"e-table\" + +@@ -155,7 +155,7 @@ libetable_la_LIBADD = \ + $(top_builddir)/e-util/libeutil.la \ + $(top_builddir)/a11y/libevolution-a11y.la \ + $(E_WIDGETS_LIBS) \ +- $(EXTRA_GNOME_LIBS) ++ $(GNOME_PLATFORM_LIBS) + + icons = \ + add-col.xpm \ +--- evolution-2.10.3/widgets/text/Makefile.am.version-checks 2007-04-09 09:10:17.000000000 -0400 ++++ evolution-2.10.3/widgets/text/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -5,7 +5,7 @@ endif + INCLUDES = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/widgets \ +- $(EXTRA_GNOME_CFLAGS) \ ++ $(GNOME_PLATFORM_CFLAGS) \ + -DG_LOG_DOMAIN=\"e-text\" + + +@@ -44,5 +44,5 @@ libetext_la_LIBADD = \ + $(top_builddir)/e-util/libeutil.la \ + $(top_builddir)/a11y/libevolution-a11y.la \ + $(top_builddir)/widgets/table/libetable.la \ +- $(EXTRA_GNOME_LIBS) \ ++ $(GNOME_PLATFORM_LIBS) \ + $(REGEX_LIBS) +--- evolution-2.10.3/tools/Makefile.am.version-checks 2007-04-09 09:07:44.000000000 -0400 ++++ evolution-2.10.3/tools/Makefile.am 2007-07-27 10:45:41.000000000 -0400 +@@ -16,7 +16,7 @@ INCLUDES = \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DDATADIR=\""$(datadir)"\" \ + -DLIBDIR=\""$(libdir)"\" \ +- $(GNOME_FULL_CFLAGS) ++ $(GNOME_PLATFORM_CFLAGS) + + EXTRA_DIST = verify-evolution-install.sh + diff --git a/evolution-2.7.92-fix-prgname.patch b/evolution-2.7.92-fix-prgname.patch deleted file mode 100644 index 98689f4..0000000 --- a/evolution-2.7.92-fix-prgname.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- evolution-2.7.92/shell/main.c.fix-prgname 2006-08-28 11:04:44.000000000 -0400 -+++ evolution-2.7.92/shell/main.c 2006-08-28 11:04:56.000000000 -0400 -@@ -516,7 +516,7 @@ - - g_option_context_add_main_entries (context, options, GETTEXT_PACKAGE); - -- program = gnome_program_init (PACKAGE "-" BASE_VERSION, VERSION, LIBGNOMEUI_MODULE, argc, argv, -+ program = gnome_program_init (PACKAGE, VERSION, LIBGNOMEUI_MODULE, argc, argv, - GNOME_PROGRAM_STANDARD_PROPERTIES, - GNOME_PARAM_GOPTION_CONTEXT, context, - GNOME_PARAM_HUMAN_READABLE_NAME, _("Evolution"), diff --git a/evolution-2.8.1-kill-ethread.patch b/evolution-2.8.1-kill-ethread.patch index 1300292..78425b3 100644 --- a/evolution-2.8.1-kill-ethread.patch +++ b/evolution-2.8.1-kill-ethread.patch @@ -1,6 +1,7 @@ ---- evolution-2.10.1/mail/mail-send-recv.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-send-recv.c 2007-05-16 16:17:38.000000000 -0400 -@@ -725,23 +725,22 @@ +diff -up evolution-2.10.3/mail/mail-send-recv.c.kill-ethread evolution-2.10.3/mail/mail-send-recv.c +--- evolution-2.10.3/mail/mail-send-recv.c.kill-ethread 2007-06-30 15:22:35.000000000 -0400 ++++ evolution-2.10.3/mail/mail-send-recv.c 2007-08-29 22:51:25.000000000 -0400 +@@ -725,23 +725,22 @@ receive_get_folder(CamelFilterDriver *d, /* ********************************************************************** */ struct _refresh_folders_msg { @@ -27,8 +28,8 @@ - struct _refresh_folders_msg *m = (struct _refresh_folders_msg *)mm; int i; CamelFolder *folder; - -@@ -757,17 +756,14 @@ + CamelException ex = CAMEL_EXCEPTION_INITIALISER; +@@ -761,17 +760,14 @@ refresh_folders_get (struct _mail_msg *m } static void @@ -48,7 +49,7 @@ int i; for (i=0;ifolders->len;i++) -@@ -776,11 +772,12 @@ +@@ -780,11 +776,12 @@ refresh_folders_free (struct _mail_msg * camel_object_unref(m->store); } @@ -66,7 +67,7 @@ }; static void -@@ -813,13 +810,13 @@ +@@ -817,13 +814,13 @@ receive_update_got_folderinfo(CamelStore get_folders(store, folders, info); @@ -82,9 +83,10 @@ } else { receive_done ("", data); } ---- evolution-2.10.1/mail/mail-component.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-component.c 2007-05-16 16:17:38.000000000 -0400 -@@ -965,7 +965,7 @@ +diff -up evolution-2.10.3/mail/mail-component.c.kill-ethread evolution-2.10.3/mail/mail-component.c +--- evolution-2.10.3/mail/mail-component.c.kill-ethread 2007-05-27 15:55:12.000000000 -0400 ++++ evolution-2.10.3/mail/mail-component.c 2007-08-29 22:51:25.000000000 -0400 +@@ -982,7 +982,7 @@ impl_handleURI (PortableServer_Servant s if (camel_url_get_param(url, "uid") != NULL) { char *curi = em_uri_to_camel(uri); @@ -93,8 +95,9 @@ g_free(curi); } else { g_warning("email uri's must include a uid parameter"); ---- evolution-2.10.1/mail/mail-ops.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-ops.c 2007-05-16 16:19:33.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-ops.c.kill-ethread evolution-2.10.3/mail/mail-ops.c +--- evolution-2.10.3/mail/mail-ops.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-ops.c 2007-08-29 22:51:25.000000000 -0400 @@ -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 */ @@ -104,7 +107,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; }; @@ -115,7 +118,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 @@ -126,7 +129,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); @@ -145,7 +148,7 @@ camel_folder_thaw (folder); if (m->destination) -@@ -161,15 +160,13 @@ +@@ -161,15 +160,13 @@ em_filter_folder_element_filter (struct } static void @@ -163,7 +166,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 (); } @@ -181,7 +184,7 @@ }; void -@@ -202,7 +200,7 @@ +@@ -202,7 +200,7 @@ mail_filter_folder (CamelFolder *source_ { struct _filter_mail_msg *m; @@ -190,7 +193,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"); } @@ -199,7 +202,7 @@ } /* convenience functions for it */ -@@ -260,17 +258,16 @@ +@@ -260,17 +258,16 @@ uid_cachename_hack (CamelStore *store) return filename; } @@ -221,7 +224,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)) { @@ -247,7 +250,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; @@ -268,7 +271,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 { @@ -277,7 +280,7 @@ } /* we unref the source folder here since we -@@ -372,31 +369,28 @@ +@@ -372,31 +369,28 @@ fail: } static void @@ -318,7 +321,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; @@ -327,7 +330,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); @@ -336,7 +339,7 @@ } /* ********************************************************************** */ -@@ -657,7 +651,7 @@ +@@ -657,7 +651,7 @@ exit: /* ** SEND MAIL QUEUE ***************************************************** */ struct _send_queue_msg { @@ -345,7 +348,7 @@ CamelFolder *queue; char *destination; -@@ -689,9 +683,8 @@ +@@ -689,9 +683,8 @@ report_status (struct _send_queue_msg *m } static void @@ -356,7 +359,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 */ @@ -378,7 +381,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); @@ -387,7 +390,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 @@ -409,7 +412,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); } @@ -427,7 +430,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; @@ -436,7 +439,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); @@ -452,7 +455,7 @@ CamelFolder *folder; CamelMimeMessage *message; -@@ -856,45 +846,40 @@ +@@ -856,45 +846,40 @@ struct _append_msg { void *data; }; @@ -511,7 +514,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); @@ -520,7 +523,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; @@ -536,7 +539,7 @@ CamelFolder *source; GPtrArray *uids; -@@ -939,24 +924,21 @@ +@@ -939,24 +924,21 @@ struct _transfer_msg { void *data; }; @@ -566,7 +569,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); @@ -575,7 +578,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 @@ -614,7 +617,7 @@ }; void -@@ -1026,7 +1005,7 @@ +@@ -1026,7 +1005,7 @@ mail_transfer_messages (CamelFolder *sou g_assert(uids != NULL); g_assert(dest_uri != NULL); @@ -623,7 +626,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; @@ -639,7 +642,7 @@ CamelStore *store; CamelFolderInfo *info; -@@ -1050,10 +1029,9 @@ +@@ -1050,10 +1029,9 @@ struct _get_folderinfo_msg { void *data; }; @@ -652,7 +655,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 @@ -683,7 +686,7 @@ g_free (url); } -@@ -1090,20 +1065,19 @@ +@@ -1090,20 +1065,19 @@ get_folderinfo_got (struct _mail_msg *mm } static void @@ -711,7 +714,7 @@ }; int -@@ -1112,19 +1086,19 @@ +@@ -1112,19 +1086,19 @@ mail_get_folderinfo (CamelStore *store, struct _get_folderinfo_msg *m; int id; @@ -736,7 +739,7 @@ return id; } -@@ -1196,7 +1170,7 @@ +@@ -1196,7 +1170,7 @@ mail_build_attachment(CamelFolder *folde presumably create a folder ... */ struct _get_folder_msg { @@ -745,7 +748,7 @@ char *uri; guint32 flags; -@@ -1205,71 +1179,64 @@ +@@ -1205,71 +1179,64 @@ struct _get_folder_msg { void *data; }; @@ -834,7 +837,7 @@ char *uri; CamelStore *store; -@@ -1277,50 +1244,43 @@ +@@ -1277,50 +1244,43 @@ struct _get_store_msg { void *data; }; @@ -897,7 +900,7 @@ }; int -@@ -1329,25 +1289,25 @@ +@@ -1329,25 +1289,25 @@ mail_get_store (const char *uri, CamelOp struct _get_store_msg *m; int id; @@ -929,7 +932,7 @@ char *uri; gboolean removed; -@@ -1355,18 +1315,15 @@ +@@ -1355,18 +1315,15 @@ struct _remove_folder_msg { void *data; }; @@ -951,7 +954,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; @@ -960,7 +963,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 */ @@ -980,7 +983,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 @@ -1006,7 +1009,7 @@ }; void -@@ -1432,59 +1386,56 @@ +@@ -1432,59 +1386,56 @@ mail_remove_folder (const char *uri, voi { struct _remove_folder_msg *m; @@ -1084,7 +1087,7 @@ }; void -@@ -1492,19 +1443,19 @@ +@@ -1492,19 +1443,19 @@ mail_sync_folder(CamelFolder *folder, vo { struct _sync_folder_msg *m; @@ -1107,7 +1110,7 @@ CamelStore *store; int expunge; -@@ -1512,9 +1463,9 @@ +@@ -1512,9 +1463,9 @@ struct _sync_store_msg { void *data; }; @@ -1119,7 +1122,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; } @@ -1166,7 +1169,7 @@ }; void -@@ -1561,36 +1510,37 @@ +@@ -1561,36 +1510,37 @@ mail_sync_store(CamelStore *store, int e { struct _sync_store_msg *m; @@ -1216,7 +1219,7 @@ }; void -@@ -1598,35 +1548,36 @@ +@@ -1598,35 +1548,36 @@ mail_refresh_folder(CamelFolder *folder, { struct _sync_folder_msg *m; @@ -1265,7 +1268,7 @@ }; void -@@ -1634,31 +1585,30 @@ +@@ -1634,31 +1585,30 @@ mail_expunge_folder(CamelFolder *folder, { struct _sync_folder_msg *m; @@ -1302,7 +1305,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 } @@ -1367,7 +1370,7 @@ }; void -@@ -1716,20 +1665,20 @@ +@@ -1716,20 +1665,20 @@ mail_empty_trash(EAccount *account, void { struct _empty_trash_msg *m; @@ -1391,7 +1394,7 @@ CamelFolder *folder; char *uid; -@@ -1739,32 +1688,28 @@ +@@ -1739,32 +1688,28 @@ struct _get_message_msg { CamelOperation *cancel; }; @@ -1433,7 +1436,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); } @@ -1463,7 +1466,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 = done; m->cancel = camel_operation_new(NULL, NULL); @@ -1513,7 +1516,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 = done; m->cancel = camel_operation_new(NULL, NULL); @@ -1529,7 +1532,7 @@ CamelFolder *folder; GPtrArray *uids; -@@ -1849,26 +1795,25 @@ +@@ -1849,26 +1795,25 @@ struct _get_messages_msg { void *data; }; @@ -1562,7 +1565,7 @@ if (message == NULL) break; -@@ -1876,17 +1821,16 @@ +@@ -1876,17 +1821,16 @@ static void get_messages_get(struct _mai } } @@ -1584,7 +1587,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); } @@ -1602,7 +1605,7 @@ }; void -@@ -1912,7 +1857,7 @@ +@@ -1912,7 +1857,7 @@ mail_get_messages(CamelFolder *folder, G { struct _get_messages_msg *m; @@ -1611,7 +1614,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; @@ -1627,7 +1630,7 @@ CamelFolder *folder; GPtrArray *uids; -@@ -1935,10 +1880,9 @@ +@@ -1935,10 +1880,9 @@ struct _save_messages_msg { void *data; }; @@ -1640,7 +1643,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 @@ -1651,7 +1654,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; @@ -1662,7 +1665,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) { @@ -1671,7 +1674,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); } @@ -1710,7 +1713,7 @@ }; int -@@ -2054,7 +1996,7 @@ +@@ -2054,7 +1996,7 @@ mail_save_messages(CamelFolder *folder, struct _save_messages_msg *m; int id; @@ -1719,7 +1722,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; @@ -1730,7 +1733,7 @@ return id; } -@@ -2071,7 +2013,7 @@ +@@ -2071,7 +2013,7 @@ mail_save_messages(CamelFolder *folder, /* ** SAVE PART ******************************************************* */ struct _save_part_msg { @@ -1739,7 +1742,7 @@ CamelMimePart *part; char *path; -@@ -2080,27 +2022,27 @@ +@@ -2080,27 +2022,27 @@ struct _save_part_msg { gboolean readonly; }; @@ -1772,7 +1775,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) @@ -1781,7 +1784,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 @@ -1818,7 +1821,7 @@ }; int -@@ -2147,7 +2087,7 @@ +@@ -2147,7 +2087,7 @@ mail_save_part (CamelMimePart *part, con { struct _save_part_msg *m; int id; @@ -1827,7 +1830,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; @@ -1838,7 +1841,7 @@ return id; } -@@ -2165,7 +2105,7 @@ +@@ -2165,7 +2105,7 @@ mail_save_part (CamelMimePart *part, con /* ** PREPARE OFFLINE ***************************************************** */ struct _prep_offline_msg { @@ -1847,7 +1850,7 @@ CamelOperation *cancel; char *uri; -@@ -2173,22 +2113,22 @@ +@@ -2173,22 +2113,22 @@ struct _prep_offline_msg { void *data; }; @@ -1875,7 +1878,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); } @@ -1914,7 +1917,7 @@ }; void -@@ -2232,7 +2171,7 @@ +@@ -2232,7 +2171,7 @@ mail_prep_offline(const char *uri, { struct _prep_offline_msg *m; @@ -1923,7 +1926,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; @@ -1939,7 +1942,7 @@ CamelStore *store; gboolean offline; -@@ -2254,9 +2193,9 @@ +@@ -2254,9 +2193,9 @@ struct _set_offline_msg { void *data; }; @@ -1951,7 +1954,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; } @@ -2030,7 +2033,7 @@ }; int -@@ -2337,15 +2274,15 @@ +@@ -2337,15 +2274,15 @@ mail_store_set_offline (CamelStore *stor if (offline) camel_service_cancel_connect (CAMEL_SERVICE (store)); @@ -2049,7 +2052,7 @@ return id; } -@@ -2363,7 +2300,7 @@ +@@ -2363,7 +2300,7 @@ mail_execute_shell_command (CamelFilterD /* Async service-checking/authtype-lookup code. */ struct _check_msg { @@ -2058,7 +2061,7 @@ char *url; CamelProviderType type; -@@ -2373,51 +2310,47 @@ +@@ -2373,51 +2310,47 @@ struct _check_msg { void *data; }; @@ -2124,7 +2127,7 @@ }; int -@@ -2426,14 +2359,14 @@ +@@ -2426,14 +2359,14 @@ mail_check_service(const char *url, Came struct _check_msg *m; int id; @@ -2142,9 +2145,10 @@ return id; } ---- evolution-2.10.1/mail/em-folder-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-utils.c 2007-05-16 16:17:38.000000000 -0400 -@@ -84,7 +84,7 @@ +diff -up evolution-2.10.3/mail/em-folder-utils.c.kill-ethread evolution-2.10.3/mail/em-folder-utils.c +--- evolution-2.10.3/mail/em-folder-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-utils.c 2007-08-29 22:51:25.000000000 -0400 +@@ -84,7 +84,7 @@ emfu_is_special_local_folder (const char } struct _EMCopyFolders { @@ -2153,7 +2157,7 @@ /* input data */ CamelStore *fromstore; -@@ -96,18 +96,15 @@ +@@ -96,18 +96,15 @@ struct _EMCopyFolders { int delete; }; @@ -2175,7 +2179,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; -@@ -115,7 +112,7 @@ +@@ -115,7 +112,7 @@ emft_copy_folders__copy (struct _mail_ms const char *tmp; int fromlen; @@ -2184,7 +2188,7 @@ return; pending = g_list_append (pending, fi); -@@ -155,8 +152,8 @@ +@@ -155,8 +152,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) { @@ -2195,7 +2199,7 @@ goto exception; /* this folder no longer exists, unsubscribe it */ -@@ -165,16 +162,16 @@ +@@ -165,16 +162,16 @@ emft_copy_folders__copy (struct _mail_ms deleted = 1; } else { @@ -2215,7 +2219,7 @@ camel_folder_free_uids (fromfolder, uids); if (m->delete) -@@ -185,7 +182,7 @@ +@@ -185,7 +182,7 @@ emft_copy_folders__copy (struct _mail_ms } } @@ -2224,7 +2228,7 @@ goto exception; else if (m->delete && !deleted) deleting = g_list_prepend (deleting, info); -@@ -226,10 +223,8 @@ +@@ -226,10 +223,8 @@ emft_copy_folders__copy (struct _mail_ms } static void @@ -2236,7 +2240,7 @@ camel_object_unref (m->fromstore); camel_object_unref (m->tostore); -@@ -237,11 +232,12 @@ +@@ -237,11 +232,12 @@ emft_copy_folders__free (struct _mail_ms g_free (m->tobase); } @@ -2254,7 +2258,7 @@ }; int -@@ -250,7 +246,7 @@ +@@ -250,7 +246,7 @@ em_folder_utils_copy_folders(CamelStore struct _EMCopyFolders *m; int seq; @@ -2263,7 +2267,7 @@ camel_object_ref (fromstore); m->fromstore = fromstore; camel_object_ref (tostore); -@@ -258,9 +254,9 @@ +@@ -258,9 +254,9 @@ em_folder_utils_copy_folders(CamelStore m->frombase = g_strdup (frombase); m->tobase = g_strdup (tobase); m->delete = delete; @@ -2275,7 +2279,7 @@ return seq; } -@@ -557,7 +553,7 @@ +@@ -557,7 +553,7 @@ em_folder_utils_rename_folder (CamelFold } struct _EMCreateFolder { @@ -2284,7 +2288,7 @@ /* input data */ CamelStore *store; -@@ -573,41 +569,33 @@ +@@ -573,41 +569,33 @@ struct _EMCreateFolder { void *user_data; }; @@ -2333,7 +2337,7 @@ camel_store_free_folder_info (m->store, m->fi); camel_object_unref (m->store); g_free (m->full_name); -@@ -615,11 +603,12 @@ +@@ -615,11 +603,12 @@ emfu_create_folder__free (struct _mail_m g_free (m->name); } @@ -2351,7 +2355,7 @@ }; -@@ -640,7 +629,7 @@ +@@ -640,7 +629,7 @@ emfu_create_folder_real (CamelStore *sto parent = namebuf; } @@ -2360,7 +2364,7 @@ camel_object_ref (store); m->store = store; m->full_name = g_strdup (full_name); -@@ -651,8 +640,8 @@ +@@ -651,8 +640,8 @@ emfu_create_folder_real (CamelStore *sto g_free (namebuf); @@ -2371,8 +2375,9 @@ return id; } ---- evolution-2.10.1/mail/importers/elm-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.1/mail/importers/elm-importer.c 2007-05-16 16:17:38.000000000 -0400 +diff -up evolution-2.10.3/mail/importers/elm-importer.c.kill-ethread evolution-2.10.3/mail/importers/elm-importer.c +--- evolution-2.10.3/mail/importers/elm-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.3/mail/importers/elm-importer.c 2007-08-29 22:51:25.000000000 -0400 @@ -51,7 +51,7 @@ #define d(x) x @@ -2382,7 +2387,7 @@ EImport *import; EImportTargetHome *target; -@@ -186,8 +186,8 @@ +@@ -186,8 +186,8 @@ elm_supported(EImport *ei, EImportTarget return mailexists; } @@ -2393,7 +2398,7 @@ { return g_strdup (_("Importing Elm data")); } -@@ -198,9 +198,8 @@ +@@ -198,9 +198,8 @@ static MailImporterSpecial elm_special_f }; static void @@ -2404,7 +2409,7 @@ const char *maildir; char *elmdir; -@@ -218,13 +217,11 @@ +@@ -218,13 +217,11 @@ elm_import_import(struct _mail_msg *mm) } static void @@ -2420,7 +2425,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 @@ -2432,7 +2437,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; } @@ -2450,7 +2455,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; @@ -2459,7 +2464,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); @@ -2471,9 +2476,10 @@ return id; } ---- evolution-2.10.1/mail/importers/mail-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.1/mail/importers/mail-importer.c 2007-05-16 16:17:38.000000000 -0400 -@@ -132,7 +132,7 @@ +diff -up evolution-2.10.3/mail/importers/mail-importer.c.kill-ethread evolution-2.10.3/mail/importers/mail-importer.c +--- evolution-2.10.3/mail/importers/mail-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.3/mail/importers/mail-importer.c 2007-08-29 22:51:25.000000000 -0400 +@@ -132,7 +132,7 @@ struct _BonoboObject *mail_importer_fact } struct _import_mbox_msg { @@ -2482,7 +2488,7 @@ char *path; char *uri; -@@ -142,8 +142,8 @@ +@@ -142,8 +142,8 @@ struct _import_mbox_msg { void *done_data; }; @@ -2493,7 +2499,7 @@ { return g_strdup (_("Importing mailbox")); } -@@ -190,9 +190,8 @@ +@@ -190,9 +190,8 @@ decode_mozilla_status(const char *tmp) } static void @@ -2504,7 +2510,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 @@ -2513,7 +2519,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); @@ -2527,7 +2533,7 @@ break; camel_mime_parser_step(mp, 0, 0); -@@ -286,30 +285,27 @@ +@@ -286,30 +285,27 @@ fail1: } static void @@ -2567,7 +2573,7 @@ }; int -@@ -318,7 +314,7 @@ +@@ -318,7 +314,7 @@ mail_importer_import_mbox(const char *pa struct _import_mbox_msg *m; int id; @@ -2576,7 +2582,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); } @@ -2587,7 +2593,7 @@ return id; } -@@ -339,7 +335,7 @@ +@@ -339,7 +335,7 @@ mail_importer_import_mbox_sync(const cha { struct _import_mbox_msg *m; @@ -2596,7 +2602,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); } @@ -2609,8 +2615,9 @@ } struct _import_folders_data { ---- evolution-2.10.1/mail/importers/pine-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 -+++ evolution-2.10.1/mail/importers/pine-importer.c 2007-05-16 16:17:38.000000000 -0400 +diff -up evolution-2.10.3/mail/importers/pine-importer.c.kill-ethread evolution-2.10.3/mail/importers/pine-importer.c +--- evolution-2.10.3/mail/importers/pine-importer.c.kill-ethread 2007-04-09 09:09:26.000000000 -0400 ++++ evolution-2.10.3/mail/importers/pine-importer.c 2007-08-29 22:51:25.000000000 -0400 @@ -56,7 +56,7 @@ #define d(x) x @@ -2620,7 +2627,7 @@ EImport *import; EImportTarget *target; -@@ -223,8 +223,8 @@ +@@ -223,8 +223,8 @@ import_contacts(void) g_object_unref(book); } @@ -2631,7 +2638,7 @@ { return g_strdup (_("Importing Pine data")); } -@@ -236,10 +236,8 @@ +@@ -236,10 +236,8 @@ static MailImporterSpecial pine_special_ }; static void @@ -2643,7 +2650,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 @@ -2659,7 +2666,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 @@ -2671,7 +2678,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; } @@ -2689,7 +2696,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; @@ -2698,7 +2705,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); @@ -2710,8 +2717,21 @@ return id; } ---- evolution-2.10.1/mail/mail-vfolder.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-vfolder.c 2007-05-16 16:17:38.000000000 -0400 +diff -up evolution-2.10.3/mail/em-utils.c.kill-ethread evolution-2.10.3/mail/em-utils.c +--- evolution-2.10.3/mail/em-utils.c.kill-ethread 2007-08-29 22:51:25.000000000 -0400 ++++ evolution-2.10.3/mail/em-utils.c 2007-08-29 22:51:25.000000000 -0400 +@@ -1915,7 +1915,7 @@ em_utils_in_addressbook(CamelInternetAdd + ESource *source = s->data; + GList *contacts; + EBook *book; +- void *hook; ++ GHook *hook; + + d(printf(" checking '%s'\n", e_source_get_uri(source))); + +diff -up evolution-2.10.3/mail/mail-vfolder.c.kill-ethread evolution-2.10.3/mail/mail-vfolder.c +--- evolution-2.10.3/mail/mail-vfolder.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-vfolder.c 2007-08-29 22:51:25.000000000 -0400 @@ -21,7 +21,7 @@ */ @@ -2721,7 +2741,7 @@ #include #include -@@ -75,7 +75,7 @@ +@@ -75,7 +75,7 @@ static void rule_changed(FilterRule *rul /* ********************************************************************** */ struct _setup_msg { @@ -2730,7 +2750,7 @@ CamelFolder *folder; char *query; -@@ -83,18 +83,15 @@ +@@ -83,18 +83,15 @@ struct _setup_msg { GList *sources_folder; }; @@ -2752,7 +2772,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)); @@ -2767,7 +2787,7 @@ } l = l->next; } -@@ -135,17 +132,13 @@ +@@ -135,17 +132,13 @@ vfolder_setup_do(struct _mail_msg *mm) } static void @@ -2787,7 +2807,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); } @@ -2805,7 +2825,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; @@ -2824,7 +2844,7 @@ return id; } -@@ -196,17 +190,16 @@ +@@ -196,17 +190,16 @@ vfolder_setup(CamelFolder *folder, const /* ********************************************************************** */ struct _adduri_msg { @@ -2845,7 +2865,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 @@ -2856,7 +2876,7 @@ GList *l; CamelFolder *folder = NULL; -@@ -269,7 +261,7 @@ +@@ -269,7 +261,7 @@ vfolder_adduri_do(struct _mail_msg *mm) } if (folder == NULL) @@ -2865,7 +2885,7 @@ if (folder != NULL) { l = m->folders; -@@ -285,28 +277,24 @@ +@@ -285,28 +277,24 @@ vfolder_adduri_do(struct _mail_msg *mm) } static void @@ -2902,7 +2922,7 @@ }; -@@ -317,13 +305,13 @@ +@@ -317,13 +305,13 @@ vfolder_adduri(const char *uri, GList *f struct _adduri_msg *m; int id; @@ -2919,7 +2939,7 @@ return id; } -@@ -447,7 +435,7 @@ +@@ -447,7 +435,7 @@ mail_vfolder_add_uri(CamelStore *store, return; } @@ -2928,7 +2948,7 @@ is_ignore = uri_is_ignore(store, curi); -@@ -540,7 +528,7 @@ +@@ -540,7 +528,7 @@ mail_vfolder_delete_uri(CamelStore *stor d(printf ("Deleting uri to check: %s\n", uri)); @@ -2937,7 +2957,7 @@ changed = g_string_new (""); -@@ -615,7 +603,7 @@ +@@ -615,7 +603,7 @@ mail_vfolder_rename_uri(CamelStore *stor if (context == NULL || uri_is_spethal(store, cfrom) || uri_is_spethal(store, cto)) return; @@ -2946,9 +2966,10 @@ from = em_uri_from_camel(cfrom); to = em_uri_from_camel(cto); ---- evolution-2.10.1/mail/em-format-html.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-format-html.c 2007-05-16 16:17:38.000000000 -0400 -@@ -166,7 +166,7 @@ +diff -up evolution-2.10.3/mail/em-format-html.c.kill-ethread evolution-2.10.3/mail/em-format-html.c +--- evolution-2.10.3/mail/em-format-html.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-format-html.c 2007-08-29 22:51:25.000000000 -0400 +@@ -166,7 +166,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; @@ -2957,7 +2978,7 @@ efh->priv->format_timeout_msg = NULL; } -@@ -1180,7 +1180,7 @@ +@@ -1180,7 +1180,7 @@ efh_builtin_init(EMFormatHTMLClass *efhc /* Sigh, this is so we have a cancellable, async rendering thread */ struct _format_msg { @@ -2966,7 +2987,7 @@ EMFormatHTML *format; EMFormat *format_source; -@@ -1190,14 +1190,15 @@ +@@ -1190,14 +1190,15 @@ struct _format_msg { CamelMimeMessage *message; }; @@ -2985,7 +3006,7 @@ struct _EMFormatHTMLJob *job; struct _EMFormatPURITree *puri_level; int cancelled = FALSE; -@@ -1282,10 +1283,9 @@ +@@ -1282,10 +1283,9 @@ static void efh_format_do(struct _mail_m ((EMFormat *)m->format)->pending_uri_level = puri_level; } @@ -2998,7 +3019,7 @@ d(printf("formatting finished\n")); m->format->load_http_now = FALSE; -@@ -1293,10 +1293,9 @@ +@@ -1293,10 +1293,9 @@ static void efh_format_done(struct _mail g_signal_emit_by_name(m->format, "complete"); } @@ -3011,7 +3032,7 @@ d(printf("formatter freed\n")); g_object_unref(m->format); if (m->estream) { -@@ -1312,11 +1311,12 @@ +@@ -1312,11 +1311,12 @@ static void efh_format_free(struct _mail g_object_unref(m->format_source); } @@ -3029,7 +3050,7 @@ }; static gboolean -@@ -1327,7 +1327,7 @@ +@@ -1327,7 +1327,7 @@ efh_format_timeout(struct _format_msg *m struct _EMFormatHTMLPrivate *p = efh->priv; if (m->format->html == NULL) { @@ -3038,7 +3059,7 @@ return FALSE; } -@@ -1355,7 +1355,7 @@ +@@ -1355,7 +1355,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); @@ -3047,7 +3068,7 @@ p->last_part = NULL; } else { hstream = NULL; -@@ -1374,8 +1374,8 @@ +@@ -1374,8 +1374,8 @@ efh_format_timeout(struct _format_msg *m p->last_part = m->message; } @@ -3058,7 +3079,7 @@ } efh->priv->format_timeout_id = 0; -@@ -1399,11 +1399,11 @@ +@@ -1399,11 +1399,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; @@ -3072,9 +3093,10 @@ m->format = (EMFormatHTML *)emf; g_object_ref(emf); m->format_source = emfsource; ---- evolution-2.10.1/mail/em-folder-properties.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-properties.c 2007-05-16 16:17:38.000000000 -0400 -@@ -386,7 +386,7 @@ +diff -up evolution-2.10.3/mail/em-folder-properties.c.kill-ethread evolution-2.10.3/mail/em-folder-properties.c +--- evolution-2.10.3/mail/em-folder-properties.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-properties.c 2007-08-29 22:51:25.000000000 -0400 +@@ -386,7 +386,7 @@ em_folder_properties_show(GtkWindow *par } if (folder == NULL) @@ -3083,9 +3105,10 @@ else emfp_dialog_got_folder((char *)uri, folder, NULL); } ---- evolution-2.10.1/mail/em-folder-tree.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-tree.c 2007-05-16 16:17:38.000000000 -0400 -@@ -834,7 +834,7 @@ +diff -up evolution-2.10.3/mail/em-folder-tree.c.kill-ethread evolution-2.10.3/mail/em-folder-tree.c +--- evolution-2.10.3/mail/em-folder-tree.c.kill-ethread 2007-05-28 09:06:42.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-tree.c 2007-08-29 22:51:25.000000000 -0400 +@@ -834,7 +834,7 @@ fail: /* TODO: Merge the drop handling code/menu's into one spot using a popup target for details */ /* Drop handling */ struct _DragDataReceivedAsync { @@ -3094,7 +3117,7 @@ /* input data */ GdkDragContext *context; -@@ -859,17 +859,16 @@ +@@ -859,7 +859,7 @@ emft_drop_folder(struct _DragDataReceive d(printf(" * Drop folder '%s' onto '%s'\n", m->selection->data, m->full_name)); @@ -3103,19 +3126,16 @@ return; em_folder_utils_copy_folders(src->parent_store, src->full_name, m->store, m->full_name?m->full_name:"", m->move); - camel_object_unref(src); +@@ -867,7 +867,7 @@ emft_drop_folder(struct _DragDataReceive } --static char * + static char * -emft_drop_async_desc (struct _mail_msg *mm, int done) -+static gchar * -+emft_drop_async__desc (struct _DragDataReceivedAsync *m) ++emft_drop_async__desc (struct _mail_msg *mm, int done) { -- struct _DragDataReceivedAsync *m = (struct _DragDataReceivedAsync *) mm; + struct _DragDataReceivedAsync *m = (struct _DragDataReceivedAsync *) mm; CamelURL *url; - char *buf; - -@@ -893,9 +892,8 @@ +@@ -893,9 +893,8 @@ emft_drop_async_desc (struct _mail_msg * } static void @@ -3126,7 +3146,7 @@ CamelFolder *folder; /* for types other than folder, we can't drop to the root path */ -@@ -903,14 +901,14 @@ +@@ -903,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) { @@ -3145,7 +3165,7 @@ break; case DND_DROP_TYPE_MESSAGE_RFC822: /* import a message/rfc822 stream */ -@@ -928,9 +926,8 @@ +@@ -928,9 +927,8 @@ emft_drop_async_drop (struct _mail_msg * } static void @@ -3156,7 +3176,7 @@ gboolean success, delete; /* ?? */ -@@ -938,7 +935,7 @@ +@@ -938,7 +936,7 @@ emft_drop_async_done (struct _mail_msg * success = FALSE; delete = FALSE; } else { @@ -3165,7 +3185,7 @@ delete = success && m->move && !m->moved; } -@@ -946,10 +943,8 @@ +@@ -946,10 +944,8 @@ emft_drop_async_done (struct _mail_msg * } static void @@ -3177,7 +3197,7 @@ g_object_unref(m->context); camel_object_unref(m->store); g_free(m->full_name); -@@ -958,18 +953,19 @@ +@@ -958,18 +954,19 @@ emft_drop_async_free (struct _mail_msg * g_free(m->selection); } @@ -3203,7 +3223,7 @@ } static void -@@ -996,7 +992,7 @@ +@@ -996,7 +993,7 @@ emft_drop_popup_cancel(EPopup *ep, EPopu struct _DragDataReceivedAsync *m = data; m->aborted = TRUE; @@ -3212,7 +3232,7 @@ } static EPopupItem emft_drop_popup_menu[] = { -@@ -1052,7 +1048,7 @@ +@@ -1052,7 +1049,7 @@ tree_drag_data_received(GtkWidget *widge return; } @@ -3221,7 +3241,7 @@ m->context = context; g_object_ref(context); m->store = store; -@@ -1686,7 +1682,7 @@ +@@ -1686,7 +1683,7 @@ dump_fi (CamelFolderInfo *fi, int depth) #endif struct _EMFolderTreeGetFolderInfo { @@ -3230,7 +3250,7 @@ /* input data */ GtkTreeRowReference *root; -@@ -1699,10 +1695,9 @@ +@@ -1699,10 +1696,9 @@ struct _EMFolderTreeGetFolderInfo { CamelFolderInfo *fi; }; @@ -3243,7 +3263,7 @@ char *ret, *name; name = camel_service_get_name((CamelService *)m->store, TRUE); -@@ -1712,18 +1707,16 @@ +@@ -1712,18 +1708,16 @@ emft_get_folder_info__desc(struct _mail_ } static void @@ -3265,7 +3285,7 @@ struct _EMFolderTreePrivate *priv = m->emft->priv; struct _EMFolderTreeModelStoreInfo *si; GtkTreeIter root, iter; -@@ -1751,7 +1744,7 @@ +@@ -1751,7 +1745,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 */ @@ -3274,7 +3294,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); -@@ -1806,10 +1799,8 @@ +@@ -1806,10 +1800,8 @@ emft_get_folder_info__got (struct _mail_ } static void @@ -3286,7 +3306,7 @@ camel_store_free_folder_info (m->store, m->fi); gtk_tree_row_reference_free (m->root); -@@ -1818,11 +1809,12 @@ +@@ -1818,11 +1810,12 @@ emft_get_folder_info__free (struct _mail g_free (m->top); } @@ -3304,7 +3324,7 @@ }; static void -@@ -1906,7 +1898,7 @@ +@@ -1906,7 +1899,7 @@ emft_tree_row_expanded (GtkTreeView *tre gtk_tree_store_set((GtkTreeStore *)model, root, COL_BOOL_LOAD_SUBDIRS, FALSE, -1); @@ -3313,7 +3333,7 @@ m->root = gtk_tree_row_reference_new (model, tree_path); camel_object_ref (store); m->store = store; -@@ -1915,7 +1907,7 @@ +@@ -1915,7 +1908,7 @@ emft_tree_row_expanded (GtkTreeView *tre m->top = full_name; m->flags = CAMEL_STORE_FOLDER_INFO_RECURSIVE|CAMEL_STORE_FOLDER_INFO_FAST; @@ -3322,9 +3342,10 @@ } static gboolean ---- evolution-2.10.1/mail/em-folder-browser.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-browser.c 2007-05-16 16:17:38.000000000 -0400 -@@ -838,7 +838,7 @@ +diff -up evolution-2.10.3/mail/em-folder-browser.c.kill-ethread evolution-2.10.3/mail/em-folder-browser.c +--- evolution-2.10.3/mail/em-folder-browser.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-browser.c 2007-08-29 22:51:25.000000000 -0400 +@@ -838,7 +838,7 @@ get_view_query (ESearchBar *esb) struct _setup_msg { @@ -3333,7 +3354,7 @@ CamelFolder *folder; char *query; -@@ -846,16 +846,15 @@ +@@ -846,16 +846,15 @@ struct _setup_msg { GList *sources_folder; }; @@ -3353,7 +3374,7 @@ GList *l, *list = NULL; CamelFolder *folder; -@@ -866,12 +865,12 @@ +@@ -866,12 +865,12 @@ vfolder_setup_do(struct _mail_msg *mm) l = m->sources_uri; while (l) { d(printf(" Adding uri: %s\n", (char *)l->data)); @@ -3368,7 +3389,7 @@ } l = l->next; } -@@ -895,17 +894,13 @@ +@@ -895,17 +894,13 @@ vfolder_setup_do(struct _mail_msg *mm) } static void @@ -3388,7 +3409,7 @@ GList *l; camel_object_unref(m->folder); -@@ -926,11 +921,12 @@ +@@ -926,11 +921,12 @@ vfolder_setup_free (struct _mail_msg *mm g_list_free(m->sources_folder); } @@ -3406,7 +3427,7 @@ }; /* sources_uri should be camel uri's */ -@@ -940,15 +936,15 @@ +@@ -940,15 +936,15 @@ vfolder_setup(CamelFolder *folder, const struct _setup_msg *m; int id; @@ -3425,9 +3446,10 @@ return id; } ---- evolution-2.10.1/mail/message-list.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/message-list.c 2007-05-16 16:17:38.000000000 -0400 -@@ -1802,7 +1802,7 @@ +diff -up evolution-2.10.3/mail/message-list.c.kill-ethread evolution-2.10.3/mail/message-list.c +--- evolution-2.10.3/mail/message-list.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/message-list.c 2007-08-29 22:51:25.000000000 -0400 +@@ -1802,7 +1802,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 { @@ -3436,7 +3458,7 @@ GdkDragContext *context; -@@ -1819,11 +1819,9 @@ +@@ -1819,11 +1819,9 @@ struct _drop_msg { unsigned int aborted:1; }; @@ -3450,7 +3472,7 @@ if (m->move) return g_strdup_printf(_("Moving messages into folder %s"), m->folder->full_name); else -@@ -1831,13 +1829,11 @@ +@@ -1831,13 +1829,11 @@ ml_drop_async_desc (struct _mail_msg *mm } static void @@ -3466,7 +3488,7 @@ break; case DND_MESSAGE_RFC822: em_utils_selection_get_message(m->selection, m->folder); -@@ -1849,9 +1845,8 @@ +@@ -1849,9 +1845,8 @@ ml_drop_async_drop(struct _mail_msg *mm) } static void @@ -3477,7 +3499,7 @@ gboolean success, delete; /* ?? */ -@@ -1859,7 +1854,7 @@ +@@ -1859,7 +1854,7 @@ ml_drop_async_done(struct _mail_msg *mm) success = FALSE; delete = FALSE; } else { @@ -3486,7 +3508,7 @@ delete = success && m->move && !m->moved; } -@@ -1867,10 +1862,8 @@ +@@ -1867,10 +1862,8 @@ ml_drop_async_done(struct _mail_msg *mm) } static void @@ -3498,7 +3520,7 @@ g_object_unref(m->context); camel_object_unref(m->folder); -@@ -1878,18 +1871,19 @@ +@@ -1878,18 +1871,19 @@ ml_drop_async_free(struct _mail_msg *mm) g_free(m->selection); } @@ -3524,7 +3546,7 @@ } static void -@@ -1916,7 +1910,7 @@ +@@ -1916,7 +1910,7 @@ ml_drop_popup_cancel(EPopup *ep, EPopupI struct _drop_msg *m = data; m->aborted = TRUE; @@ -3533,7 +3555,7 @@ } static EPopupItem ml_drop_popup_menu[] = { -@@ -1946,7 +1940,7 @@ +@@ -1946,7 +1940,7 @@ ml_tree_drag_data_received (ETree *tree, if (data->data == NULL || data->length == -1) return; @@ -3542,7 +3564,7 @@ m->context = context; g_object_ref(context); m->folder = ml->folder; -@@ -3676,7 +3670,7 @@ +@@ -3676,7 +3670,7 @@ save_hide_state (MessageList *ml) /* ** REGENERATE MESSAGELIST ********************************************** */ struct _regen_list_msg { @@ -3551,7 +3573,7 @@ int complete; -@@ -3704,16 +3698,15 @@ +@@ -3704,16 +3698,15 @@ struct _regen_list_msg { */ @@ -3571,7 +3593,7 @@ GPtrArray *uids, *uidnew, *showuids, *searchuids = NULL; CamelMessageInfo *info; int i; -@@ -3743,7 +3736,7 @@ +@@ -3743,7 +3736,7 @@ regen_list_regen (struct _mail_msg *mm) } else expr = "(match-all (not (system-flag \"deleted\")))"; } @@ -3580,7 +3602,7 @@ } else { char *expr; -@@ -3753,23 +3746,23 @@ +@@ -3753,23 +3746,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\")))"; @@ -3609,7 +3631,7 @@ if (uidnew) { MESSAGE_LIST_LOCK(m->ml, hide_lock); -@@ -3844,7 +3837,7 @@ +@@ -3844,7 +3837,7 @@ regen_list_regen (struct _mail_msg *mm) e_profile_event_emit("list.threaduids", m->folder->full_name, 0); @@ -3618,7 +3640,7 @@ /* update/build a new tree */ if (m->dotree) { if (m->tree) -@@ -3873,17 +3866,15 @@ +@@ -3873,17 +3866,15 @@ regen_list_regen (struct _mail_msg *mm) } static void @@ -3638,7 +3660,7 @@ return; if (m->ml->folder != m->folder) -@@ -3934,9 +3925,8 @@ +@@ -3934,9 +3925,8 @@ regen_list_regened (struct _mail_msg *mm } static void @@ -3649,7 +3671,7 @@ int i; e_profile_event_emit("list.regenerated", m->folder->full_name, 0); -@@ -3964,11 +3954,12 @@ +@@ -3964,11 +3954,12 @@ regen_list_free (struct _mail_msg *mm) g_object_unref(m->ml); } @@ -3667,7 +3689,7 @@ }; static gboolean -@@ -3978,7 +3969,7 @@ +@@ -3978,7 +3969,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 */ @@ -3676,7 +3698,7 @@ m->ml->regen_timeout_msg = NULL; m->ml->regen_timeout_id = 0; -@@ -3994,7 +3985,7 @@ +@@ -3994,7 +3985,7 @@ mail_regen_cancel(MessageList *ml) GList *l = ml->regen; while (l) { @@ -3685,7 +3707,7 @@ if (mm->cancel) camel_operation_cancel(mm->cancel); -@@ -4006,7 +3997,7 @@ +@@ -4006,7 +3997,7 @@ mail_regen_cancel(MessageList *ml) if (ml->regen_timeout_id) { g_source_remove(ml->regen_timeout_id); ml->regen_timeout_id = 0; @@ -3694,7 +3716,7 @@ ml->regen_timeout_msg = NULL; } } -@@ -4041,7 +4032,7 @@ +@@ -4041,7 +4032,7 @@ mail_regen_list (MessageList *ml, const } #endif @@ -3703,9 +3725,10 @@ m->ml = ml; m->search = g_strdup (search); m->hideexpr = g_strdup (hideexpr); ---- evolution-2.10.1/mail/em-sync-stream.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-sync-stream.h 2007-05-16 16:17:38.000000000 -0400 -@@ -29,41 +29,45 @@ +diff -up evolution-2.10.3/mail/em-sync-stream.h.kill-ethread evolution-2.10.3/mail/em-sync-stream.h +--- evolution-2.10.3/mail/em-sync-stream.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-sync-stream.h 2007-08-29 22:51:25.000000000 -0400 +@@ -29,41 +29,45 @@ requests are always handled in the main #ifndef EM_SYNC_STREAM_H #define EM_SYNC_STREAM_H @@ -3781,9 +3804,10 @@ +G_END_DECLS #endif /* EM_SYNC_STREAM_H */ ---- evolution-2.10.1/mail/em-format-html-print.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-format-html-print.c 2007-05-16 16:17:38.000000000 -0400 -@@ -262,7 +262,7 @@ +diff -up evolution-2.10.3/mail/em-format-html-print.c.kill-ethread evolution-2.10.3/mail/em-format-html-print.c +--- evolution-2.10.3/mail/em-format-html-print.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-format-html-print.c 2007-08-29 22:51:25.000000000 -0400 +@@ -262,7 +262,7 @@ int em_format_html_print_message(EMForma g_object_ref(source); g_object_ref(efhp); @@ -3792,8 +3816,9 @@ return 0; /* damn async ... */ } ---- evolution-2.10.1/mail/em-sync-stream.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-sync-stream.c 2007-05-16 16:17:38.000000000 -0400 +diff -up evolution-2.10.3/mail/em-sync-stream.c.kill-ethread evolution-2.10.3/mail/em-sync-stream.c +--- evolution-2.10.3/mail/em-sync-stream.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-sync-stream.c 2007-08-29 22:51:25.000000000 -0400 @@ -25,42 +25,17 @@ #include #endif @@ -3841,7 +3866,7 @@ enum _write_msg_t { EMSS_WRITE, EMSS_FLUSH, -@@ -68,275 +43,168 @@ +@@ -68,275 +43,168 @@ enum _write_msg_t { }; struct _write_msg { @@ -4016,7 +4041,7 @@ static void -sync_op(EMSyncStream *emss, enum _write_msg_t op, const char *data, size_t n) +emss_sync_op (EMSyncStream *emss, enum _write_msg_t op, -+ const gchar *string, gsize len) ++ const gchar *string, gsize len) { - struct _EMSyncStreamPrivate *p = emss->priv; struct _write_msg msg; @@ -4219,9 +4244,10 @@ + g_string_free (emss->buffer, TRUE); + emss->buffer = g_string_sized_new (size); } ---- evolution-2.10.1/mail/em-subscribe-editor.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-subscribe-editor.c 2007-05-16 16:17:38.000000000 -0400 -@@ -175,7 +175,7 @@ +diff -up evolution-2.10.3/mail/em-subscribe-editor.c.kill-ethread evolution-2.10.3/mail/em-subscribe-editor.c +--- evolution-2.10.3/mail/em-subscribe-editor.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-subscribe-editor.c 2007-08-29 22:51:25.000000000 -0400 +@@ -175,7 +175,7 @@ sub_unref(EMSubscribe *sub) /* ** Subscribe folder operation **************************************** */ struct _zsubscribe_msg { @@ -4230,7 +4256,7 @@ EMSubscribe *sub; EMSubscribeNode *node; -@@ -184,20 +184,18 @@ +@@ -184,20 +184,18 @@ struct _zsubscribe_msg { }; static void @@ -4256,7 +4282,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; @@ -4265,7 +4291,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) { @@ -4276,7 +4302,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 @@ -4303,7 +4329,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; @@ -4325,7 +4351,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 { @@ -4334,7 +4360,7 @@ int seq; -@@ -351,31 +348,29 @@ +@@ -351,31 +348,29 @@ struct _emse_folderinfo_msg { }; static void @@ -4373,7 +4399,7 @@ } if (m->info) { -@@ -396,10 +391,8 @@ +@@ -396,10 +391,8 @@ sub_folderinfo_got(struct _mail_msg *mm) } static void @@ -4385,7 +4411,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); } @@ -4403,7 +4429,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:"")); @@ -4427,7 +4453,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)) ) @@ -4436,9 +4462,10 @@ sub_unref(sub); } ---- evolution-2.10.1/mail/mail-mt.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-mt.h 2007-05-16 16:17:38.000000000 -0400 -@@ -23,43 +23,60 @@ +diff -up evolution-2.10.3/mail/mail-mt.h.kill-ethread evolution-2.10.3/mail/mail-mt.h +--- evolution-2.10.3/mail/mail-mt.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-mt.h 2007-08-29 22:51:25.000000000 -0400 +@@ -23,47 +23,64 @@ #ifndef _MAIL_MT #define _MAIL_MT @@ -4515,9 +4542,16 @@ +void mail_msg_slow_ordered_push (gpointer msg); + /* To implement the stop button */ - void *mail_cancel_hook_add(GDestroyNotify func, void *data); - void mail_cancel_hook_remove(void *handle); -@@ -112,24 +129,6 @@ +-void *mail_cancel_hook_add(GDestroyNotify func, void *data); +-void mail_cancel_hook_remove(void *handle); +-void mail_cancel_all(void); ++GHook * mail_cancel_hook_add (GHookFunc func, gpointer data); ++void mail_cancel_hook_remove (GHook *hook); ++void mail_cancel_all (void); + + /* request a string/password */ + char *mail_get_password (CamelService *service, const char *prompt, +@@ -112,24 +129,6 @@ void *mail_call_main(mail_call_t type, M void mail_enable_stop(void); void mail_disable_stop(void); @@ -4542,9 +4576,10 @@ /* 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.10.1/mail/mail-ops.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-ops.h 2007-05-16 16:17:38.000000000 -0400 -@@ -30,13 +30,14 @@ +diff -up evolution-2.10.3/mail/mail-ops.h.kill-ethread evolution-2.10.3/mail/mail-ops.h +--- evolution-2.10.3/mail/mail-ops.h.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-ops.h 2007-08-29 22:51:25.000000000 -0400 +@@ -30,13 +30,14 @@ extern "C" { #pragma } #endif /* __cplusplus */ @@ -4560,7 +4595,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, @@ -4575,7 +4610,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, @@ -4584,9 +4619,10 @@ /* and for a store */ int mail_get_store (const char *uri, CamelOperation *op, ---- evolution-2.10.1/mail/em-composer-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-composer-utils.c 2007-05-16 16:17:38.000000000 -0400 -@@ -534,7 +534,7 @@ +diff -up evolution-2.10.3/mail/em-composer-utils.c.kill-ethread evolution-2.10.3/mail/em-composer-utils.c +--- evolution-2.10.3/mail/em-composer-utils.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/em-composer-utils.c 2007-08-29 22:51:25.000000000 -0400 +@@ -534,7 +534,7 @@ em_utils_composer_save_draft_cb (EMsgCom strcmp (account->drafts_folder_uri, default_drafts_folder_uri) != 0) { int id; @@ -4595,7 +4631,7 @@ mail_msg_wait (id); if (!folder || !account->enabled) { -@@ -1085,7 +1085,7 @@ +@@ -1085,7 +1085,7 @@ em_utils_redirect_message_by_uid (CamelF g_return_if_fail (CAMEL_IS_FOLDER (folder)); g_return_if_fail (uid != NULL); @@ -4604,7 +4640,7 @@ } static void -@@ -1116,7 +1116,7 @@ +@@ -1116,7 +1116,7 @@ em_utils_handle_receipt (CamelFolder *fo } if (msg == NULL) { @@ -4613,7 +4649,7 @@ camel_message_info_free(info); return; } -@@ -1916,7 +1916,7 @@ +@@ -1916,7 +1916,7 @@ em_utils_reply_to_message(CamelFolder *f rd->source = source; if (rd->source) g_object_ref(rd->source); @@ -4622,16 +4658,17 @@ return; } -@@ -2088,5 +2088,5 @@ +@@ -2088,5 +2088,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.10.1/mail/mail-folder-cache.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-folder-cache.c 2007-05-16 16:17:38.000000000 -0400 -@@ -843,15 +843,14 @@ +diff -up evolution-2.10.3/mail/mail-folder-cache.c.kill-ethread evolution-2.10.3/mail/mail-folder-cache.c +--- evolution-2.10.3/mail/mail-folder-cache.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-folder-cache.c 2007-08-29 22:51:25.000000000 -0400 +@@ -843,15 +843,14 @@ update_folders(CamelStore *store, CamelF struct _ping_store_msg { @@ -4650,7 +4687,7 @@ char *service_name = camel_service_get_name (CAMEL_SERVICE (m->store), TRUE); char *msg; -@@ -862,10 +861,9 @@ +@@ -862,10 +861,9 @@ ping_store_desc (struct _mail_msg *mm, i } static void @@ -4662,7 +4699,7 @@ if (CAMEL_SERVICE (m->store)->status == CAMEL_SERVICE_CONNECTED) { if (CAMEL_IS_DISCO_STORE (m->store) && -@@ -876,22 +874,21 @@ +@@ -876,22 +874,21 @@ ping_store_ping (struct _mail_msg *mm) online = TRUE; } if (online) @@ -4693,7 +4730,7 @@ }; static void -@@ -903,11 +900,11 @@ +@@ -903,11 +900,11 @@ ping_store (gpointer key, gpointer val, if (CAMEL_SERVICE (store)->status != CAMEL_SERVICE_CONNECTED) return; @@ -4707,7 +4744,7 @@ } static gboolean -@@ -952,7 +949,7 @@ +@@ -952,7 +949,7 @@ mail_note_store(CamelStore *store, Camel int hook = 0; g_assert(CAMEL_IS_STORE(store)); @@ -4716,8 +4753,9 @@ LOCK(info_lock); ---- evolution-2.10.1/mail/em-folder-view.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/em-folder-view.c 2007-05-16 16:17:38.000000000 -0400 +diff -up evolution-2.10.3/mail/em-folder-view.c.kill-ethread evolution-2.10.3/mail/em-folder-view.c +--- evolution-2.10.3/mail/em-folder-view.c.kill-ethread 2007-06-17 23:30:46.000000000 -0400 ++++ evolution-2.10.3/mail/em-folder-view.c 2007-08-29 22:51:25.000000000 -0400 @@ -68,6 +68,7 @@ #include @@ -4726,7 +4764,7 @@ #include "menus/gal-view-etable.h" #include "menus/gal-view-factory-etable.h" -@@ -693,7 +694,7 @@ +@@ -693,7 +694,7 @@ emfv_got_folder(char *uri, CamelFolder * static void emfv_set_folder_uri(EMFolderView *emfv, const char *uri) { @@ -4735,7 +4773,7 @@ } static void -@@ -1613,7 +1614,7 @@ +@@ -1651,7 +1652,7 @@ filter_type_uid (CamelFolder *folder, co data->type = type; data->source = source; @@ -4744,7 +4782,7 @@ } static void -@@ -1711,7 +1712,7 @@ +@@ -1749,7 +1750,7 @@ vfolder_type_uid (CamelFolder *folder, c data->type = type; data->uri = g_strdup (uri); @@ -4753,7 +4791,7 @@ } static void -@@ -2370,7 +2371,7 @@ +@@ -2408,7 +2409,7 @@ emfv_message_selected_timeout(void *data g_object_ref (emfv); /* TODO: we should manage our own thread stuff, would make cancelling outstanding stuff easier */ e_profile_event_emit("goto.load", emfv->displayed_uid, 0); @@ -4762,8 +4800,9 @@ } else { e_profile_event_emit("goto.empty", "", 0); g_free(emfv->priv->selected_uid); ---- evolution-2.10.1/mail/mail-session.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-session.c 2007-05-16 16:17:38.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-session.c.kill-ethread evolution-2.10.3/mail/mail-session.c +--- evolution-2.10.3/mail/mail-session.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-session.c 2007-08-29 22:51:25.000000000 -0400 @@ -35,7 +35,7 @@ #include @@ -4773,7 +4812,7 @@ #include /* FIXME: this is where camel_init is defined, it shouldn't include everything else */ #include -@@ -256,21 +256,22 @@ +@@ -256,148 +256,145 @@ forget_password (CamelSession *session, /* ********************************************************************** */ @@ -4800,13 +4839,15 @@ /* clicked, send back the reply */ static void -@@ -278,122 +279,116 @@ + user_message_response (GtkDialog *dialog, int button, struct _user_message_msg *m) { gtk_widget_destroy ((GtkWidget *) dialog); - +- - message_dialog = NULL; +- ++ + user_message_dialog = NULL; - ++ /* if !allow_cancel, then we've already replied */ if (m->allow_cancel) { m->result = button == GTK_RESPONSE_OK; @@ -4863,6 +4904,22 @@ - break; - default: - type = 0; +- } +- +- if (m->allow_cancel) +- type += 3; +- +- message_dialog = (GtkDialog *)e_error_new(NULL, error_type[type], m->prompt, NULL); +- g_object_set ((GObject *) message_dialog, "allow_shrink", TRUE, "allow_grow", TRUE, NULL); +- +- /* We only need to wait for the result if we allow cancel otherwise show but send result back instantly */ +- if (m->allow_cancel) { +- if (m->ismain) { +- user_message_response(message_dialog, gtk_dialog_run (message_dialog), m); +- } else { +- g_signal_connect (message_dialog, "response", G_CALLBACK (user_message_response), m); +- gtk_widget_show ((GtkWidget *) message_dialog); +- } + case CAMEL_SESSION_ALERT_INFO: + error_type = m->allow_cancel ? + "mail:session-message-info-cancel" : @@ -4880,36 +4937,27 @@ + break; + default: + g_assert_not_reached (); - } - -- if (m->allow_cancel) -- type += 3; -- -- message_dialog = (GtkDialog *)e_error_new(NULL, error_type[type], m->prompt, NULL); -- g_object_set ((GObject *) message_dialog, "allow_shrink", TRUE, "allow_grow", TRUE, NULL); -+ user_message_dialog = e_error_new(NULL, error_type, m->prompt, NULL); -+ g_object_set (user_message_dialog, "allow_shrink", TRUE, "allow_grow", TRUE, NULL); - - /* We only need to wait for the result if we allow cancel otherwise show but send result back instantly */ - if (m->allow_cancel) { - if (m->ismain) { -- user_message_response(message_dialog, gtk_dialog_run (message_dialog), m); -+ user_message_response(user_message_dialog, gtk_dialog_run (user_message_dialog), m); - } else { -- g_signal_connect (message_dialog, "response", G_CALLBACK (user_message_response), m); -- gtk_widget_show ((GtkWidget *) message_dialog); -+ g_signal_connect (user_message_dialog, "response", G_CALLBACK (user_message_response), m); -+ gtk_widget_show (user_message_dialog); - } ++ } ++ ++ user_message_dialog = e_error_new (NULL, error_type, m->prompt, NULL); ++ g_object_set ( ++ user_message_dialog, "allow_shrink", TRUE, ++ "allow_grow", TRUE, NULL); ++ ++ /* We only need to wait for the result if we allow cancel ++ * otherwise show but send result back instantly */ ++ if (m->allow_cancel && m->ismain) { ++ gint response = gtk_dialog_run (user_message_dialog); ++ user_message_response (user_message_dialog, response, m); } else { - g_signal_connect (message_dialog, "response", G_CALLBACK (gtk_widget_destroy), message_dialog); - g_object_weak_ref ((GObject *) message_dialog, (GWeakNotify) user_message_destroy_notify, m); - gtk_widget_show ((GtkWidget *) message_dialog); - mail_msg_free(m); -+ g_signal_connect (user_message_dialog, "response", G_CALLBACK (gtk_widget_destroy), user_message_dialog); -+ g_object_add_weak_pointer (user_message_dialog, &user_message_dialog); ++ g_signal_connect ( ++ user_message_dialog, "response", ++ G_CALLBACK (user_message_response), m); + gtk_widget_show (user_message_dialog); -+ mail_msg_unref(m); } } @@ -4938,8 +4986,9 @@ MailSession *mail_session = MAIL_SESSION (session); - struct _user_message_msg *m, *r; - EMsgPort *user_message_reply = NULL; +- gboolean ret; + struct _user_message_msg *m; - gboolean ret; ++ gboolean result = TRUE; if (!mail_session->interactive) return FALSE; @@ -4949,38 +4998,51 @@ - m = mail_msg_new (&user_message_op, user_message_reply, sizeof (*m)); - m->ismain = pthread_equal(pthread_self(), mail_gui_thread); + m = mail_msg_new (&user_message_info); -+ m->ismain = mail_in_main_thread(); ++ m->ismain = mail_in_main_thread (); m->type = type; - m->prompt = g_strdup(prompt); +- m->prompt = g_strdup(prompt); ++ m->prompt = g_strdup (prompt); + m->done = e_flag_new (); m->allow_cancel = cancel; +- if (m->ismain) +- do_user_message((struct _mail_msg *)m); +- else { +- extern EMsgPort *mail_gui_port2; + if (cancel) + mail_msg_ref (m); -+ - if (m->ismain) -- do_user_message((struct _mail_msg *)m); -+ user_message_exec(m); - else { -- extern EMsgPort *mail_gui_port2; -- + - e_msgport_put(mail_gui_port2, (EMsg *)m); -+ mail_msg_main_loop_push(m); - } +- } ++ if (m->ismain) ++ user_message_exec (m); ++ else ++ mail_msg_main_loop_push (m); if (cancel) { - r = (struct _user_message_msg *)e_msgport_wait(user_message_reply); - g_assert(m == r); -- + e_flag_wait (m->done); - ret = m->result; ++ result = m->result; ++ mail_msg_unref (m); ++ } + +- ret = m->result; - mail_msg_free(m); - e_msgport_destroy(user_message_reply); -+ mail_msg_unref(m); - } else - ret = TRUE; +- } else +- ret = TRUE; ++ if (m->ismain) { ++ user_message_free (m); ++ mail_msg_unref (m); ++ } -@@ -533,7 +528,7 @@ +- return ret; ++ return result; + } + + static CamelFolder * +@@ -533,7 +530,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 */ @@ -4989,7 +5051,7 @@ static void *ms_thread_msg_new(CamelSession *session, CamelSessionThreadOps *ops, unsigned int size) { -@@ -542,7 +537,7 @@ +@@ -542,7 +539,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) { @@ -4998,7 +5060,7 @@ msg->data = m; camel_operation_unref(msg->op); -@@ -555,7 +550,7 @@ +@@ -555,7 +552,7 @@ static void *ms_thread_msg_new(CamelSess static void ms_thread_msg_free(CamelSession *session, CamelSessionThreadMsg *m) { @@ -5007,7 +5069,7 @@ ms_parent_class->thread_msg_free(session, m); } -@@ -678,22 +673,23 @@ +@@ -678,22 +675,23 @@ mail_session_set_interactive (gboolean i MAIL_SESSION (session)->interactive = interactive; if (!interactive) { @@ -5037,8 +5099,9 @@ } } } ---- evolution-2.10.1/mail/mail-mt.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 -+++ evolution-2.10.1/mail/mail-mt.c 2007-05-16 16:17:38.000000000 -0400 +diff -up evolution-2.10.3/mail/mail-mt.c.kill-ethread evolution-2.10.3/mail/mail-mt.c +--- evolution-2.10.3/mail/mail-mt.c.kill-ethread 2007-04-09 09:09:27.000000000 -0400 ++++ evolution-2.10.3/mail/mail-mt.c 2007-08-29 22:51:25.000000000 -0400 @@ -29,8 +29,8 @@ #include #include @@ -5049,7 +5112,7 @@ #include #include -@@ -63,7 +63,7 @@ +@@ -63,7 +63,7 @@ static void mail_operation_status(struct #endif /* background operation status stuff */ @@ -5058,7 +5121,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; @@ -5077,7 +5140,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) { @@ -5085,7 +5148,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 @@ -5099,11 +5162,11 @@ msg->cancel = camel_operation_new(mail_operation_status, GINT_TO_POINTER(msg->seq)); camel_exception_init(&msg->ex); - msg->priv = g_malloc0(sizeof(*msg->priv)); -+ msg->priv = g_slice_new (MailMsgPrivate); ++ msg->priv = g_slice_new0 (MailMsgPrivate); 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; } @@ -5122,16 +5185,32 @@ e_activity_handler_operation_finished (activity_handler, activity_id); } -@@ -177,58 +176,84 @@ +@@ -177,58 +176,93 @@ checkmem(void *p) } #endif -void mail_msg_free(void *msg) -+gpointer -+mail_msg_ref (gpointer msg) ++static void ++mail_msg_free (MailMsg *mail_msg) { - struct _mail_msg *m = msg; - int activity_id; ++ /* XXX This function is broken out from mail_msg_unref() ++ * only for the benefit of op_status_exec() below. */ ++ ++ if (mail_msg->cancel != NULL) { ++ camel_operation_mute (mail_msg->cancel); ++ camel_operation_unref (mail_msg->cancel); ++ } ++ ++ camel_exception_clear (&mail_msg->ex); ++ g_slice_free (MailMsgPrivate, mail_msg->priv); ++ g_slice_free1 (mail_msg->info->size, mail_msg); ++} ++ ++gpointer ++mail_msg_ref (gpointer msg) ++{ + MailMsg *mail_msg = msg; + + g_return_val_if_fail (mail_msg != NULL, msg); @@ -5210,18 +5289,13 @@ - if (m->cancel) { - camel_operation_mute(m->cancel); - camel_operation_unref(m->cancel); -+ if (mail_msg->cancel) { -+ camel_operation_mute (mail_msg->cancel); -+ camel_operation_unref (mail_msg->cancel); - } - +- } +- - camel_exception_clear(&m->ex); - /*g_free(m->priv->what);*/ - g_free(m->priv); - g_free(m); -+ camel_exception_clear (&mail_msg->ex); -+ g_slice_free (MailMsgPrivate, mail_msg->priv); -+ g_slice_free1 (mail_msg->info->size, mail_msg); ++ mail_msg_free (mail_msg); if (activity_id != 0) - mail_async_event_emit(mail_async_event, MAIL_ASYNC_GUI, (MailAsyncFunc) end_event_callback, @@ -5233,7 +5307,7 @@ } /* hash table of ops->dialogue of active errors */ -@@ -244,9 +269,10 @@ +@@ -244,9 +278,10 @@ static void error_response(GtkObject *o, gtk_widget_destroy((GtkWidget *)o); } @@ -5246,7 +5320,7 @@ char *what; GtkDialog *gd; -@@ -271,27 +297,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. */ @@ -5281,7 +5355,7 @@ MAIL_MT_LOCK(mail_msg_lock); m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid)); -@@ -304,13 +330,12 @@ +@@ -304,13 +339,12 @@ void mail_msg_cancel(unsigned int msgid) /* waits for a message to be finished processing (freed) @@ -5298,7 +5372,7 @@ MAIL_MT_LOCK(mail_msg_lock); m = g_hash_table_lookup(mail_msg_active_table, GINT_TO_POINTER(msgid)); while (m) { -@@ -347,9 +372,7 @@ +@@ -347,9 +381,7 @@ int mail_msg_active(unsigned int msgid) void mail_msg_wait_all(void) { @@ -5309,8 +5383,81 @@ MAIL_MT_LOCK(mail_msg_lock); while (g_hash_table_size(mail_msg_active_table) > 0) { MAIL_MT_UNLOCK(mail_msg_lock); -@@ -420,241 +443,183 @@ - MAIL_MT_UNLOCK(mail_msg_lock); +@@ -367,294 +399,239 @@ void mail_msg_wait_all(void) + } + + /* **************************************** */ +-struct _cancel_hook_data { +- struct _cancel_hook_data *next; +- struct _cancel_hook_data *prev; + +- GDestroyNotify func; +- void *data; +-}; ++static GHookList cancel_hook_list; + +-static EDList cancel_hook_list = E_DLIST_INITIALISER(cancel_hook_list); +- +-void *mail_cancel_hook_add(GDestroyNotify func, void *data) ++GHook * ++mail_cancel_hook_add (GHookFunc func, gpointer data) + { +- struct _cancel_hook_data *d; ++ GHook *hook; + +- d = g_malloc0(sizeof(*d)); +- d->func = func; +- d->data = data; ++ MAIL_MT_LOCK (mail_msg_lock); + +- MAIL_MT_LOCK(mail_msg_lock); +- e_dlist_addtail(&cancel_hook_list, (EDListNode *)d); +- MAIL_MT_UNLOCK(mail_msg_lock); ++ if (!cancel_hook_list.is_setup) ++ g_hook_list_init (&cancel_hook_list, sizeof (GHook)); + +- return (void *)d; +-} ++ hook = g_hook_alloc (&cancel_hook_list); ++ hook->func = func; ++ hook->data = data; + +-void mail_cancel_hook_remove(void *handle) +-{ +- struct _cancel_hook_data *d = handle; ++ g_hook_append (&cancel_hook_list, hook); + +- MAIL_MT_LOCK(mail_msg_lock); +- e_dlist_remove((EDListNode *)d); +- MAIL_MT_UNLOCK(mail_msg_lock); +- g_free(d); ++ MAIL_MT_UNLOCK (mail_msg_lock); ++ ++ return hook; + } + +-void mail_cancel_all(void) ++void ++mail_cancel_hook_remove (GHook *hook) + { +- struct _cancel_hook_data *d, *n; ++ MAIL_MT_LOCK (mail_msg_lock); + +- camel_operation_cancel(NULL); ++ g_assert (cancel_hook_list.is_setup); ++ g_hook_destroy_link (&cancel_hook_list, hook); + +- /* I can ssee a deadlock coming on ... */ +- MAIL_MT_LOCK(mail_msg_lock); +- d = (struct _cancel_hook_data *)cancel_hook_list.head; +- n = d->next; +- while (n) { +- d->func(d->data); +- d = n; +- n = n->next; +- } +- MAIL_MT_UNLOCK(mail_msg_lock); ++ MAIL_MT_UNLOCK (mail_msg_lock); } -EMsgPort *mail_gui_port; @@ -5337,31 +5484,30 @@ -#ifdef G_OS_WIN32 -EThread * -mail_win32_get_mail_thread_queued (void) -+#define PERIODIC_RATE_HZ 10 -+static guint periodic_source_id = 0; ++void ++mail_cancel_all (void) + { +- return mail_thread_queued; ++ camel_operation_cancel (NULL); ++ ++ MAIL_MT_LOCK (mail_msg_lock); ++ ++ if (cancel_hook_list.is_setup) ++ g_hook_list_invoke (&cancel_hook_list, FALSE); ++ ++ MAIL_MT_UNLOCK (mail_msg_lock); + } +-#endif ++ ++static guint idle_source_id = 0; ++G_LOCK_DEFINE_STATIC (idle_source_id); +static GAsyncQueue *main_loop_queue = NULL; +static GAsyncQueue *msg_reply_queue = NULL; +static GThread *main_thread = NULL; -+ -+static void -+periodic_cleanup (void) - { -- return mail_thread_queued; -+ periodic_source_id = 0; -+ -+ g_assert (main_loop_queue != NULL); -+ g_async_queue_unref (main_loop_queue); -+ main_loop_queue = NULL; -+ -+ g_assert (msg_reply_queue != NULL); -+ g_async_queue_unref (msg_reply_queue); -+ msg_reply_queue = NULL; - } --#endif static gboolean -mail_msgport_replied(GIOChannel *source, GIOCondition cond, void *d) -+periodic_processing (void) ++mail_msg_idle_cb (void) { - EMsgPort *port = (EMsgPort *)d; - mail_msg_t *m; @@ -5387,6 +5533,10 @@ - m->ops->reply_msg(m); - mail_msg_check_error(m); - mail_msg_free(m); ++ G_LOCK (idle_source_id); ++ idle_source_id = 0; ++ G_UNLOCK (idle_source_id); ++ + /* check the main loop queue */ + while ((msg = g_async_queue_try_pop (main_loop_queue)) != NULL) { + if (msg->info->exec != NULL) @@ -5404,7 +5554,8 @@ + mail_msg_unref (msg); } - return TRUE; +- return TRUE; ++ return FALSE; } -static gboolean @@ -5414,6 +5565,28 @@ { - EMsgPort *port = (EMsgPort *)d; - mail_msg_t *m; +- +- while (( m = (mail_msg_t *)e_msgport_get(port))) { +-#ifdef MALLOC_CHECK +- checkmem(m); +- checkmem(m->cancel); +- checkmem(m->priv); +-#endif +- +-#ifdef LOG_OPS +- if (log_ops) +- fprintf(log, "%p: Received at GUI thread\n", m); +-#endif +- +- if (m->ops->receive_msg) +- m->ops->receive_msg(m); +- if (m->msg.reply_port) +- e_msgport_reply((EMsg *)m); +- else { +- if (m->ops->reply_msg) +- m->ops->reply_msg(m); +- mail_msg_free(m); +- } + if (msg->info->desc != NULL) { + gchar *text = msg->info->desc (msg); + camel_operation_register (msg->cancel); @@ -5434,84 +5607,84 @@ + camel_operation_unref (msg->cancel); + msg->cancel = NULL; + MAIL_MT_UNLOCK (mail_msg_lock); -+ } - -- while (( m = (mail_msg_t *)e_msgport_get(port))) { --#ifdef MALLOC_CHECK -- checkmem(m); -- checkmem(m->cancel); -- checkmem(m->priv); --#endif -+ g_async_queue_push (msg_reply_queue, msg); -+} - --#ifdef LOG_OPS -- if (log_ops) -- fprintf(log, "%p: Received at GUI thread\n", m); --#endif -+void -+mail_msg_cleanup (void) -+{ -+ GSource *source; - -- if (m->ops->receive_msg) -- m->ops->receive_msg(m); -- if (m->msg.reply_port) -- e_msgport_reply((EMsg *)m); -- else { -- if (m->ops->reply_msg) -- m->ops->reply_msg(m); -- mail_msg_free(m); -- } -- } -+ mail_msg_wait_all(); + } - return TRUE; -+ /* stop periodic processing */ -+ source = g_main_context_find_source_by_id ( -+ g_main_context_default (), periodic_source_id); -+ g_assert (source != NULL); -+ g_source_destroy (source); ++ g_async_queue_push (msg_reply_queue, msg); ++ ++ G_LOCK (idle_source_id); ++ if (idle_source_id == 0) ++ idle_source_id = g_idle_add ( ++ (GSourceFunc) mail_msg_idle_cb, NULL); ++ G_UNLOCK (idle_source_id); } -/* Test code, lighterwight, more configurable calls */ -static gboolean -mail_msgport_received2(GIOChannel *source, GIOCondition cond, void *d) +void -+mail_msg_init (void) ++mail_msg_cleanup (void) { - EMsgPort *port = (EMsgPort *)d; - mail_msg_t *m; -+ main_loop_queue = g_async_queue_new (); -+ msg_reply_queue = g_async_queue_new (); ++ mail_msg_wait_all(); - while (( m = (mail_msg_t *)e_msgport_get(port))) { -#ifdef LOG_OPS - if (log_ops) - fprintf(log, "%p: Received at GUI2 thread\n", m); -#endif -+ /* start periodic processing */ -+ periodic_source_id = g_timeout_add_full ( -+ G_PRIORITY_DEFAULT, -+ 1000 / PERIODIC_RATE_HZ, -+ (GSourceFunc) periodic_processing, NULL, -+ (GDestroyNotify) periodic_cleanup); ++ G_LOCK (idle_source_id); ++ if (idle_source_id != 0) { ++ GSource *source; - if (m->ops->receive_msg) - m->ops->receive_msg(m); - else - mail_msg_free(m); -- } ++ /* Cancel the idle source. */ ++ source = g_main_context_find_source_by_id ( ++ g_main_context_default (), idle_source_id); ++ g_assert (source != NULL); ++ g_source_destroy (source); ++ idle_source_id = 0; + } ++ G_UNLOCK (idle_source_id); + +- return TRUE; +-} ++ g_assert (main_loop_queue != NULL); ++ g_async_queue_unref (main_loop_queue); ++ main_loop_queue = NULL; + ++ g_assert (msg_reply_queue != NULL); ++ g_async_queue_unref (msg_reply_queue); ++ msg_reply_queue = NULL; ++} + +-static void +-mail_msg_destroy(EThread *e, EMsg *msg, void *data) ++void ++mail_msg_init (void) + { +- mail_msg_t *m = (mail_msg_t *)msg; ++ main_loop_queue = g_async_queue_new (); ++ msg_reply_queue = g_async_queue_new (); + +-#ifdef MALLOC_CHECK +- checkmem(m); +- checkmem(m->cancel); +- checkmem(m->priv); +-#endif + mail_msg_active_table = g_hash_table_new (NULL, NULL); + main_thread = g_thread_self (); -- return TRUE; +- mail_msg_free(m); + mail_async_event = mail_async_event_new (); } -- -static void --mail_msg_destroy(EThread *e, EMsg *msg, void *data) +-mail_msg_received(EThread *e, EMsg *msg, void *data) +static gint +mail_msg_compare (const MailMsg *msg1, const MailMsg *msg2) { @@ -5519,52 +5692,22 @@ + gint priority1 = msg1->priority; + gint priority2 = msg2->priority; --#ifdef MALLOC_CHECK -- checkmem(m); -- checkmem(m->cancel); -- checkmem(m->priv); --#endif -+ if (priority1 == priority2) -+ return 0; - -- mail_msg_free(m); -+ return (priority1 < priority2) ? 1 : -1; - } - --static void --mail_msg_received(EThread *e, EMsg *msg, void *data) -+static gpointer -+create_thread_pool (gpointer data) - { -- mail_msg_t *m = (mail_msg_t *)msg; -+ GThreadPool *thread_pool; -+ gint max_threads = GPOINTER_TO_INT (data); - -#ifdef MALLOC_CHECK - checkmem(m); - checkmem(m->cancel); - checkmem(m->priv); -#endif -+ /* once created, run forever */ -+ thread_pool = g_thread_pool_new ( -+ (GFunc) mail_msg_proxy, NULL, max_threads, FALSE, NULL); -+ g_thread_pool_set_sort_function ( -+ thread_pool, (GCompareDataFunc) mail_msg_compare, NULL); - +- - if (m->ops->describe_msg) { - char *text = m->ops->describe_msg(m, FALSE); -+ return thread_pool; -+} ++ if (priority1 == priority2) ++ return 0; -#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); -#endif -+void -+mail_msg_main_loop_push (gpointer msg) -+{ -+ g_async_queue_push_sorted (main_loop_queue, msg, -+ (GCompareDataFunc) mail_msg_compare, NULL); ++ return (priority1 < priority2) ? 1 : -1; +} - d(printf("message received at thread\n")); @@ -5577,17 +5720,22 @@ - if (log_ops) - fprintf(log, "%p: Received at thread %" G_GINT64_MODIFIER "x\n", m, e_util_pthread_id(pthread_self())); -#endif -+void -+mail_msg_unordered_push (gpointer msg) ++static gpointer ++create_thread_pool (gpointer data) +{ -+ static GOnce once = G_ONCE_INIT; ++ GThreadPool *thread_pool; ++ gint max_threads = GPOINTER_TO_INT (data); - if (m->ops->receive_msg) { - mail_enable_stop(); - m->ops->receive_msg(m); - mail_disable_stop(); - } -+ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (10)); ++ /* once created, run forever */ ++ thread_pool = g_thread_pool_new ( ++ (GFunc) mail_msg_proxy, NULL, max_threads, FALSE, NULL); ++ g_thread_pool_set_sort_function ( ++ thread_pool, (GCompareDataFunc) mail_msg_compare, NULL); - if (m->ops->describe_msg) { - camel_operation_end(m->cancel); @@ -5597,23 +5745,35 @@ - m->cancel = NULL; - MAIL_MT_UNLOCK(mail_msg_lock); - } -+ g_thread_pool_push ((GThreadPool *) once.retval, msg, NULL); ++ return thread_pool; } -void mail_msg_cleanup(void) +void -+mail_msg_fast_ordered_push (gpointer msg) ++mail_msg_main_loop_push (gpointer msg) { - mail_msg_wait_all(); -- ++ g_async_queue_push_sorted (main_loop_queue, msg, ++ (GCompareDataFunc) mail_msg_compare, NULL); + - e_thread_destroy(mail_thread_queued_slow); - e_thread_destroy(mail_thread_queued); - e_thread_destroy(mail_thread_new); ++ G_LOCK (idle_source_id); ++ if (idle_source_id == 0) ++ idle_source_id = g_idle_add ( ++ (GSourceFunc) mail_msg_idle_cb, NULL); ++ G_UNLOCK (idle_source_id); ++} ++ ++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 (1)); ++ g_once (&once, (GThreadFunc) create_thread_pool, GINT_TO_POINTER (10)); - e_msgport_destroy(mail_gui_port); - e_msgport_destroy(mail_gui_reply_port); @@ -5623,7 +5783,7 @@ -static guint -em_channel_setup(EMsgPort **port, GIOChannel **channel, GIOFunc func) +void -+mail_msg_slow_ordered_push (gpointer msg) ++mail_msg_fast_ordered_push (gpointer msg) { - GSource *source; - guint id; @@ -5647,8 +5807,8 @@ } -void mail_msg_init(void) -+gboolean -+mail_in_main_thread (void) ++void ++mail_msg_slow_ordered_push (gpointer msg) { - em_channel_setup(&mail_gui_reply_port, &mail_gui_reply_channel, mail_msgport_replied); - mail_gui_watch = em_channel_setup(&mail_gui_port, &mail_gui_channel, mail_msgport_received); @@ -5669,16 +5829,24 @@ - e_thread_set_msg_received(mail_thread_new, mail_msg_received, 0); - 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_thread_pool_push ((GThreadPool *) once.retval, msg, NULL); ++} + - mail_async_event = mail_async_event_new(); ++gboolean ++mail_in_main_thread (void) ++{ + return (g_thread_self () == main_thread); } /* ********************************************************************** */ -@@ -665,7 +630,8 @@ +@@ -665,7 +642,8 @@ static pthread_mutex_t status_lock = PTH /* ********************************************************************** */ struct _proxy_msg { @@ -5688,7 +5856,7 @@ MailAsyncEvent *ea; mail_async_event_t type; -@@ -679,10 +645,8 @@ +@@ -679,10 +657,8 @@ struct _proxy_msg { }; static void @@ -5700,7 +5868,7 @@ m->thread = pthread_self(); m->have_thread = TRUE; m->func(m->o, m->event_data, m->data); -@@ -697,16 +661,17 @@ +@@ -697,16 +673,17 @@ static int idle_async_event(void *mm) { do_async_event(mm); @@ -5724,7 +5892,7 @@ }; MailAsyncEvent *mail_async_event_new(void) -@@ -723,10 +688,9 @@ +@@ -723,10 +700,9 @@ int mail_async_event_emit(MailAsyncEvent { struct _proxy_msg *m; int id; @@ -5736,7 +5904,7 @@ m->func = func; m->o = o; m->event_data = event_data; -@@ -735,7 +699,7 @@ +@@ -735,7 +711,7 @@ int mail_async_event_emit(MailAsyncEvent m->type = type; m->have_thread = FALSE; @@ -5745,7 +5913,7 @@ g_mutex_lock(ea->lock); ea->tasks = g_slist_prepend(ea->tasks, m); g_mutex_unlock(ea->lock); -@@ -743,12 +707,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) { @@ -5761,7 +5929,7 @@ return id; } -@@ -762,7 +726,7 @@ +@@ -762,7 +738,7 @@ int mail_async_event_destroy(MailAsyncEv g_mutex_lock(ea->lock); while (ea->tasks) { m = ea->tasks->data; @@ -5770,7 +5938,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 +748,18 @@ +@@ -784,17 +760,18 @@ int mail_async_event_destroy(MailAsyncEv /* ********************************************************************** */ struct _call_msg { @@ -5792,7 +5960,7 @@ void *p1, *p2, *p3, *p4, *p5; int i1; va_list ap; -@@ -842,45 +807,48 @@ +@@ -842,45 +819,47 @@ do_call(struct _mail_msg *mm) m->ret = m->func(p1, p2, i1, p3, p4, p5); break; } @@ -5841,11 +6009,10 @@ - e_msgport_destroy(reply); - } else { - do_call(&m->msg); -+ mail_msg_ref (m); -+ + if (mail_in_main_thread ()) + do_call (m); + else { ++ mail_msg_ref (m); + m->done = e_flag_new (); + mail_msg_main_loop_push (m); + e_flag_wait (m->done); @@ -5860,7 +6027,7 @@ return ret; } -@@ -889,40 +857,42 @@ +@@ -889,40 +868,42 @@ void *mail_call_main(mail_call_t type, M /* locked via status_lock */ static int busy_state; @@ -5915,7 +6082,7 @@ } MAIL_MT_UNLOCK(status_lock); } -@@ -930,7 +900,7 @@ +@@ -930,7 +911,7 @@ void mail_disable_stop(void) /* ******************************************************************************** */ struct _op_status_msg { @@ -5924,7 +6091,7 @@ struct _CamelOperation *op; char *what; -@@ -938,16 +908,16 @@ +@@ -938,16 +919,16 @@ struct _op_status_msg { void *data; }; @@ -5946,7 +6113,7 @@ MAIL_MT_LOCK (mail_msg_lock); -@@ -986,8 +956,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); @@ -5957,7 +6124,20 @@ /* uncommenting because message is not very useful for a user, see bug 271734*/ else { what = g_strdup(""); -@@ -1021,18 +991,17 @@ +@@ -1001,11 +982,7 @@ static void do_op_status(struct _mail_ms + MAIL_MT_LOCK (mail_msg_lock); + if (data->activity_state == 3) { + MAIL_MT_UNLOCK (mail_msg_lock); +- if (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 @@ static void do_op_status(struct _mail_ms } static void @@ -5983,7 +6163,7 @@ }; static void -@@ -1042,7 +1011,7 @@ +@@ -1042,7 +1018,7 @@ mail_operation_status (struct _CamelOper d(printf("got operation statys: %s %d%%\n", what, pc)); @@ -5992,7 +6172,7 @@ m->op = op; m->what = g_strdup(what); switch (pc) { -@@ -1055,7 +1024,7 @@ +@@ -1055,7 +1031,7 @@ mail_operation_status (struct _CamelOper } m->pc = pc; m->data = data; @@ -6001,9 +6181,10 @@ } /* ******************** */ ---- evolution-2.10.1/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-04-09 09:09:11.000000000 -0400 -+++ evolution-2.10.1/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-05-16 16:17:38.000000000 -0400 -@@ -44,32 +44,30 @@ +diff -up evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c +--- evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c.kill-ethread 2007-04-09 09:09:11.000000000 -0400 ++++ evolution-2.10.3/plugins/folder-unsubscribe/folder-unsubscribe.c 2007-08-29 22:51:25.000000000 -0400 +@@ -44,32 +44,30 @@ void org_gnome_mail_folder_unsubscribe ( struct _folder_unsub_t { @@ -6044,7 +6225,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 @@ -6071,7 +6252,7 @@ }; -@@ -105,8 +102,8 @@ +@@ -105,8 +102,8 @@ org_gnome_mail_folder_unsubscribe (EPlug if (target->uri == NULL) return; @@ -6082,9 +6263,10 @@ - e_thread_put (mail_thread_new, (EMsg *) unsub); + mail_msg_unordered_push (unsub); } ---- evolution-2.10.1/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 -+++ evolution-2.10.1/plugins/mark-all-read/mark-all-read.c 2007-05-16 16:17:38.000000000 -0400 -@@ -44,7 +44,7 @@ +diff -up evolution-2.10.3/plugins/mark-all-read/mark-all-read.c.kill-ethread evolution-2.10.3/plugins/mark-all-read/mark-all-read.c +--- evolution-2.10.3/plugins/mark-all-read/mark-all-read.c.kill-ethread 2007-05-27 14:21:10.000000000 -0400 ++++ evolution-2.10.3/plugins/mark-all-read/mark-all-read.c 2007-08-29 22:51:25.000000000 -0400 +@@ -44,7 +44,7 @@ org_gnome_mark_all_read (EPlugin *ep, EM return; } @@ -6093,40 +6275,44 @@ } static void ---- evolution-2.10.1/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-04-09 09:09:13.000000000 -0400 -+++ evolution-2.10.1/plugins/exchange-operations/exchange-folder.c 2007-05-16 16:17:38.000000000 -0400 -@@ -134,7 +134,7 @@ +diff -up evolution-2.10.3/plugins/exchange-operations/exchange-folder.c.kill-ethread evolution-2.10.3/plugins/exchange-operations/exchange-folder.c +--- evolution-2.10.3/plugins/exchange-operations/exchange-folder.c.kill-ethread 2007-05-25 02:43:33.000000000 -0400 ++++ evolution-2.10.3/plugins/exchange-operations/exchange-folder.c 2007-08-29 22:51:25.000000000 -0400 +@@ -140,7 +140,7 @@ org_gnome_exchange_folder_inbox_unsubscr inbox_physical_uri = e_folder_get_physical_uri (inbox); /* To get the CamelStore/Folder */ - mail_get_folder (inbox_physical_uri, 0, exchange_get_folder, target_uri, mail_thread_new); -+ mail_get_folder (inbox_physical_uri, 0, exchange_get_folder, target_uri, mail_msg_unordered_push); ++ mail_get_folder (inbox_physical_uri, 0, exchange_get_folder, target_uri, mail_msg_unordered_push); } ---- evolution-2.10.1/plugins/save-attachments/save-attachments.c.kill-ethread 2007-04-09 09:09:15.000000000 -0400 -+++ evolution-2.10.1/plugins/save-attachments/save-attachments.c 2007-05-16 16:17:38.000000000 -0400 -@@ -407,5 +407,5 @@ +diff -up evolution-2.10.3/plugins/save-attachments/save-attachments.c.kill-ethread evolution-2.10.3/plugins/save-attachments/save-attachments.c +--- evolution-2.10.3/plugins/save-attachments/save-attachments.c.kill-ethread 2007-04-09 09:09:15.000000000 -0400 ++++ evolution-2.10.3/plugins/save-attachments/save-attachments.c 2007-08-29 22:51:25.000000000 -0400 +@@ -407,5 +407,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.10.1/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 -+++ evolution-2.10.1/plugins/mailing-list-actions/mailing-list-actions.c 2007-05-16 16:17:38.000000000 -0400 -@@ -89,7 +89,7 @@ +diff -up evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c +--- evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c.kill-ethread 2007-04-09 09:09:14.000000000 -0400 ++++ evolution-2.10.3/plugins/mailing-list-actions/mailing-list-actions.c 2007-08-29 22:51:25.000000000 -0400 +@@ -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), - emla_list_action_do, data, mail_thread_new); -+ emla_list_action_do, data, mail_msg_unordered_push); ++ emla_list_action_do, data, mail_msg_unordered_push); } void emla_list_action_do (CamelFolder *folder, const char *uid, CamelMimeMessage *msg, void *data) ---- evolution-2.10.1/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-04-09 09:09:12.000000000 -0400 -+++ evolution-2.10.1/plugins/groupwise-features/share-folder-common.c 2007-05-16 16:17:38.000000000 -0400 -@@ -121,7 +121,7 @@ +diff -up evolution-2.10.3/plugins/groupwise-features/share-folder-common.c.kill-ethread evolution-2.10.3/plugins/groupwise-features/share-folder-common.c +--- evolution-2.10.3/plugins/groupwise-features/share-folder-common.c.kill-ethread 2007-04-09 09:09:12.000000000 -0400 ++++ evolution-2.10.3/plugins/groupwise-features/share-folder-common.c 2007-08-29 22:51:25.000000000 -0400 +@@ -121,7 +121,7 @@ shared_folder_abort (EPlugin *ep, EConfi } struct _EMCreateFolder { @@ -6135,7 +6321,7 @@ /* input data */ CamelStore *store; -@@ -137,31 +137,26 @@ +@@ -137,31 +137,26 @@ struct _EMCreateFolder { void *user_data; }; @@ -6173,7 +6359,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 @@ -6185,7 +6371,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); } @@ -6203,7 +6389,7 @@ }; static void -@@ -229,7 +223,7 @@ +@@ -229,7 +223,7 @@ create_folder (CamelStore *store, const parent = namebuf; } @@ -6212,7 +6398,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); @@ -6223,9 +6409,10 @@ return id; } ---- evolution-2.10.1/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.1/calendar/gui/alarm-notify/alarm-notify.h 2007-05-16 16:17:38.000000000 -0400 -@@ -39,19 +39,6 @@ +diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h +--- evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.h 2007-08-29 22:51:25.000000000 -0400 +@@ -39,19 +39,6 @@ typedef struct _AlarmNotifyClass AlarmNo typedef struct _AlarmNotifyPrivate AlarmNotifyPrivate; @@ -6245,9 +6432,10 @@ struct _AlarmNotify { BonoboObject object; ---- evolution-2.10.1/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.1/calendar/gui/alarm-notify/alarm-notify.c 2007-05-16 16:17:38.000000000 -0400 -@@ -45,10 +45,6 @@ +diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c +--- evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-notify.c 2007-08-29 22:51:25.000000000 -0400 +@@ -45,10 +45,6 @@ struct _AlarmNotifyPrivate { GMutex *mutex; }; @@ -6258,7 +6446,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); @@ -6331,7 +6519,7 @@ /** * alarm_notify_new: * -@@ -363,23 +299,10 @@ +@@ -363,23 +299,10 @@ alarm_msg_received(EThread *e, EMsg *msg AlarmNotify * alarm_notify_new (void) { @@ -6359,9 +6547,10 @@ } static void ---- evolution-2.10.1/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 -+++ evolution-2.10.1/calendar/gui/alarm-notify/alarm-queue.c 2007-05-16 16:17:38.000000000 -0400 -@@ -115,9 +115,6 @@ +diff -up evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c +--- evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c.kill-ethread 2007-04-09 09:10:29.000000000 -0400 ++++ evolution-2.10.3/calendar/gui/alarm-notify/alarm-queue.c 2007-08-29 23:10:45.000000000 -0400 +@@ -115,9 +115,6 @@ static int tray_blink_id = -1; static int tray_blink_state = FALSE; static AlarmNotify *an; @@ -6371,7 +6560,7 @@ /* Structure that stores a client we are monitoring */ typedef struct { /* Monitored client */ -@@ -199,6 +196,40 @@ +@@ -199,6 +196,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); @@ -6412,7 +6601,7 @@ /* Queues an alarm trigger for midnight so that we can load the next day's worth * of alarms. */ -@@ -237,47 +268,41 @@ +@@ -237,47 +268,41 @@ add_client_alarms_cb (gpointer key, gpoi } struct _midnight_refresh_msg { @@ -6470,7 +6659,7 @@ } /* Looks up a client in the client alarms hash table */ -@@ -636,6 +661,7 @@ +@@ -636,6 +661,7 @@ remove_comp (ClientAlarms *ca, ECalCompo * alarms. */ struct _query_msg { @@ -6478,7 +6667,7 @@ ECal *client; GList *objects; gpointer data; -@@ -669,7 +695,7 @@ +@@ -669,7 +695,7 @@ duplicate_ecal (GList *in_list) } static void @@ -6487,7 +6676,7 @@ { ClientAlarms *ca; time_t from, day_end; -@@ -678,13 +704,12 @@ +@@ -678,13 +704,12 @@ query_objects_changed_async (EThread *e, icaltimezone *zone; CompQueuedAlarms *cqa; GList *l; @@ -6504,7 +6693,7 @@ from = config_data_get_last_notification_time (); if (from == -1) -@@ -773,43 +798,38 @@ +@@ -773,43 +798,38 @@ query_objects_changed_async (EThread *e, comp = NULL; } g_list_free (objects); @@ -6561,7 +6750,7 @@ d(printf("%s:%d (query_objects_removed_async) - Removing %d objects\n",__FILE__, __LINE__, g_list_length(objects))); -@@ -822,27 +842,22 @@ +@@ -822,27 +842,22 @@ query_objects_removed_async (EThread *e, } g_list_free (objects); @@ -6598,7 +6787,7 @@ } -@@ -989,20 +1004,19 @@ +@@ -989,20 +1004,19 @@ free_tray_icon_data (TrayIconData *tray_ } static void @@ -6623,7 +6812,7 @@ e_cal_component_get_uid (tray_data->comp, &our_uid); g_return_if_fail (our_uid && *our_uid); -@@ -1020,37 +1034,33 @@ +@@ -1020,37 +1034,33 @@ on_dialog_objs_removed_async (EThread *e tray_data = NULL; } } @@ -6673,7 +6862,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)); -@@ -1087,28 +1097,25 @@ +@@ -1087,28 +1097,25 @@ tray_list_remove_cqa_async(EThread *e, A gtk_tree_selection_select_iter (sel, &iter); } } @@ -6711,7 +6900,7 @@ { GList *list = tray_icons_list; -@@ -1138,55 +1145,50 @@ +@@ -1138,55 +1145,50 @@ tray_list_remove_async(EThread *e, Alarm } else list = list->next; } @@ -6785,7 +6974,7 @@ } static void -@@ -1394,29 +1396,24 @@ +@@ -1394,29 +1396,24 @@ tray_icon_blink_cb (gpointer data) /* Add a new data to tray list */ static void @@ -6826,7 +7015,7 @@ } /* Performs notification of a display alarm */ -@@ -1840,21 +1837,13 @@ +@@ -1840,21 +1837,13 @@ check_midnight_refresh (gpointer user_da new_midnight = time_day_end_with_zone (time (NULL), zone); if (new_midnight > midnight) { @@ -6853,7 +7042,7 @@ } return TRUE; -@@ -1985,14 +1974,15 @@ +@@ -1985,14 +1974,15 @@ hash_ids (gpointer a) } struct _alarm_client_msg { @@ -6872,7 +7061,7 @@ g_return_if_fail (alarm_queue_inited); g_return_if_fail (client != NULL); -@@ -2023,6 +2013,8 @@ +@@ -2023,6 +2013,8 @@ static void alarm_queue_add_async (EThre G_CALLBACK (cal_opened_cb), ca); } @@ -6881,7 +7070,7 @@ } /** -@@ -2042,20 +2034,13 @@ +@@ -2042,20 +2034,13 @@ static void alarm_queue_add_async (EThre void alarm_queue_add_client (ECal *client) { @@ -6907,7 +7096,7 @@ } /* Removes a component an its alarms */ -@@ -2107,11 +2092,10 @@ +@@ -2107,11 +2092,10 @@ remove_client_alarms (ClientAlarms *ca) * Removes a calendar client from the alarm queueing system. **/ static void @@ -6921,7 +7110,7 @@ g_return_if_fail (alarm_queue_inited); g_return_if_fail (client != NULL); -@@ -2148,24 +2132,20 @@ +@@ -2148,24 +2132,20 @@ alarm_queue_remove_async (EThread *e, Al g_free (ca); g_hash_table_remove (client_alarms_hash, client); diff --git a/evolution.spec b/evolution.spec index 982738c..1da6855 100644 --- a/evolution.spec +++ b/evolution.spec @@ -46,8 +46,8 @@ ### Abstract ### Name: evolution -Version: 2.10.1 -Release: 17%{?dist} +Version: 2.10.3 +Release: 10%{?dist} License: GPL Group: Applications/Productivity Summary: GNOME's next-generation groupware suite @@ -101,9 +101,6 @@ Patch23: evolution-2.7.3-replicated-cjk-input.patch # RH bug #178295 / GNOME bug #348638 Patch24: evolution-2.7.4-deleting-preedit-buffer.patch -# RH bug #202289 -Patch25: evolution-2.7.92-fix-prgname.patch - # RH bug #161885 / GNOME bug #309166 Patch26: evolution-2.8.0-indic-cursor-movement.patch @@ -158,9 +155,6 @@ Patch46: evolution-2.10.0-use-glib-i18n.patch # GNOME bug #418971 Patch47: evolution-2.10.0-drop-old-glib-support.patch -# RH bug #235878 / GNOME bug #386503 -Patch48: evolution-2.10.1-fix-help.patch - # RH bug #234315 / GNOME bug #423766 Patch49: evolution-2.10.1-saving-attachments.patch @@ -170,15 +164,33 @@ Patch50: evolution-2.10.1-fix-uri-handling.patch # RH bug #236399 / GNOME bug #434019 Patch51: evolution-2.10.1-en_CA-attribution-format.patch -# RH bug #238551 / GNOME bug #434981 -Patch52: evolution-2.10.1-e-attachment-bar.patch - # RH bug #238155 / GNOME bug #427232 Patch53: evolution-2.10.1-check-uri-before-strcmp.patch # RH bug #240147 / GNOME bug #335241 Patch54: evolution-2.10.1-send-recv-dialog.patch +# GNOME bug #380534 +Patch55: evolution-2.10.3-version-checks.patch + +# GNOME bug #239441 +Patch56: evolution-2.10.3-fix-ETreeTableAdapter-crash.patch + +# RH bug #249640 / GNOME bug #442329 +Patch57: evolution-2.10.3-todo-conduit.patch + +# RH bug #436080 / CVE-2008-0072 +Patch58: evolution-2.10.3-CVE-2008-0072.patch + +# GNOME bug #524310 +Patch59: evolution-2.10.3-server-message-double-free.patch + +# RH bug #449922 / CVE-2008-1108 +Patch60: evolution-2.10.3-CVE-2008-1108.patch + +# RH bug #449922 / CVE-2008-1109 +Patch61: evolution-2.10.3-CVE-2008-1109.patch + ## Dependencies ### Requires(post): GConf2 @@ -312,7 +324,6 @@ Development files needed for building things which link against evolution. %patch22 -p1 -b .filter-datespec %patch23 -p1 -b .replicated-cjk-input %patch24 -p1 -b .deleting-preedit-buffer -%patch25 -p1 -b .fix-prgname %patch26 -p1 -b .indic-cursor-movement %patch29 -p1 -b .fix-indic-printing %patch31 -p1 -b .kill-ethread @@ -331,13 +342,18 @@ Development files needed for building things which link against evolution. %patch45 -p1 -b .shell-main-cleanups %patch46 -p1 -b .use-glib-i18n %patch47 -p1 -b .drop-old-glib-support -%patch48 -p1 -b .fix-help %patch49 -p1 -b .saving-attachments %patch50 -p1 -b .fix-uri-handling %patch51 -p1 -b .en_CA-attribution-format -%patch52 -p1 -b .e-attachment-bar %patch53 -p1 -b .check-uri-before-strcmp %patch54 -p1 -b .send-recv-dialog +%patch55 -p1 -b .version-checks +%patch56 -p1 -b .ETreeTableAdapter-idle-crash +%patch57 -p1 -b .todo-conduit +%patch58 -p1 -b .CVE-2008-0072 +%patch59 -p1 -b .server-message-double-free +%patch60 -p1 -b .CVE-2008-1108 +%patch61 -p1 -b .CVE-2008-1109 mkdir -p krb5-fakeprefix/include mkdir -p krb5-fakeprefix/lib @@ -759,6 +775,50 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/evolution/%{evo_major}/libmenus.so %changelog +* Wed Jun 04 2008 Matthew Barnes - 2.10.3-10.fc7 +- Add patches for RH bug #449922 (buffer overflow vulnerabilities). + +* Tue Mar 25 2008 Dan Williams - 2.10.3-9.fc7 +- Add patch for GNOME bug #524310 + +* Tue Mar 04 2008 Matthew Barnes - 2.10.3-8.fc7 +- Add patch for CVE-2008-0072 (format string vulnerability). + +* Sat Nov 03 2007 Matthew Barnes - 2.10.3-7.fc7 +- Add patch for RH bug #249640 (todo conduit crash). + +* Wed Oct 31 2007 Dan Williams - 2.10.3-6.fc7 +- Backport fix for GNOME bug #239441 + +* Thu Aug 30 2007 Matthew Barnes - 2.10.3-5.fc7 +- Revise patch for GNOME bug #417999 to fix GNOME bug #447591 + (Automatic Contacts combo boxes don't work). + +* Wed Aug 29 2007 Matthew Barnes - 2.10.3-4.fc7 +- Revise patch for GNOME bug #362638 to fix GNOME bug #357175 + (Evolution fails to close after IMAP alert has been displayed). + +* Fri Jul 27 2007 Matthew Barnes - 2.10.3-3.fc7 +- Add patch for GNOME bug #380534 (clarify version requirements). + +* Sat Jul 14 2007 Matthew Barnes - 2.10.3-2.fc7 +- Revise patch for GNOME bug #362638 to fix RH bug #245695 (crash on alert). + +* Mon Jul 02 2007 Matthew Barnes - 2.10.3-1.fc7 +- Update to 2.10.3 + +* Wed Jun 27 2007 Matthew Barnes - 2.10.2-3.fc7 +- Revise patch for GNOME bug #362638 to fix RH bug #245289 (frequent hangs). + +* Wed Jun 06 2007 Matthew Barnes - 2.10.2-2.fc7 +- Revise patch for GNOME bug #362638 to fix RH bug #240507 (hang on exit). + +* Mon May 28 2007 Matthew Barnes - 2.10.2-1.fc7 +- Update to 2.10.2 +- Remove patch for RH bug #202289 (fixed upstream). +- Remove patch for RH bug #235878 (fixed upstream). +- Remove patch for RH bug #238551 (fixed upstream). + * Wed May 16 2007 Matthew Barnes - 2.10.1-17.fc7 - Revise patch for GNOME bug #362638 to fix RH bug #237206 (certificate prompt causes crash, again). diff --git a/sources b/sources index 5f86cfa..f79c55e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -16051c6cbb617cb04665e402566e0976 evolution-2.10.1.tar.bz2 +09cc60b037849b3c9b34961eb7da217f evolution-2.10.3.tar.bz2