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