diff --git a/.cvsignore b/.cvsignore
index a7be8cf..c0d3eef 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-evolution-data-server-1.12.1.tar.bz2
+evolution-data-server-2.21.1.tar.bz2
diff --git a/evolution-data-server-1.10.0-code-cleanup.patch b/evolution-data-server-1.10.0-code-cleanup.patch
deleted file mode 100644
index 4436354..0000000
--- a/evolution-data-server-1.10.0-code-cleanup.patch
+++ /dev/null
@@ -1,1080 +0,0 @@
---- evolution-data-server-1.11.90/libedataserverui/e-name-selector-dialog.glade.code-cleanup 2007-07-05 02:01:52.000000000 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/e-name-selector-dialog.glade 2007-08-20 21:57:30.000000000 -0400
-@@ -118,7 +118,10 @@
- 0.5
- 0
- 0
-- optionmenu-category
-+ PANGO_ELLIPSIZE_NONE
-+ -1
-+ False
-+ 0
-
-
- 0
-@@ -127,23 +130,7 @@
- 2
- fill
-
--
--
--
--
--
--
-- 1
-- 2
-- 1
-- 2
-- fill
-- fill
--
-+
-
-
-
-@@ -229,6 +216,23 @@
- fill
-
-
-+
-+
-+
-+ True
-+ Any Category
-+ False
-+ True
-+
-+
-+ 1
-+ 2
-+ 1
-+ 2
-+ fill
-+ fill
-+
-+
-
-
- 0
---- evolution-data-server-1.11.90/libedataserverui/e-name-selector-list.c.code-cleanup 2007-08-09 02:45:35.000000000 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/e-name-selector-list.c 2007-08-20 21:57:30.000000000 -0400
-@@ -447,7 +447,7 @@ enl_tree_button_press_event (GtkWidget *
-
- if (len > 1) {
- menu_item = gtk_radio_menu_item_new_with_label (group, email);
-- group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_item));
-+ group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_item));
- g_signal_connect (menu_item, "toggled", G_CALLBACK (destination_set_email), destination);
- } else {
- menu_item = gtk_menu_item_new_with_label (email);
---- evolution-data-server-1.11.90/libedataserverui/e-name-selector-entry.c.code-cleanup 2007-08-09 02:45:35.000000000 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/e-name-selector-entry.c 2007-08-20 21:57:30.000000000 -0400
-@@ -2208,7 +2208,7 @@ populate_popup (ENameSelectorEntry *name
-
- if (len > 1) {
- menu_item = gtk_radio_menu_item_new_with_label (group, email);
-- group = gtk_radio_menu_item_group (GTK_RADIO_MENU_ITEM (menu_item));
-+ group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_item));
- g_signal_connect (menu_item, "toggled", G_CALLBACK (destination_set_email), destination);
- } else {
- menu_item = gtk_menu_item_new_with_label (email);
---- evolution-data-server-1.11.90/libedataserverui/test-source-option-menu.c.code-cleanup 2007-07-05 02:01:52.000000000 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/test-source-option-menu.c 2007-08-20 21:57:30.000000000 -0400
-@@ -1,5 +1,5 @@
- /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
--/* test-source-option-menu.c - Test for ESourceOptionMenu.
-+/* test-source-combo-box.c - Test for ESourceComboBox.
- *
- * Copyright (C) 2003 Novell, Inc.
- *
-@@ -24,17 +24,17 @@
- #include
- #endif
-
--
--#include "e-source-option-menu.h"
-+#include "e-source-combo-box.h"
-
- #include
- #include
-
- static void
--source_selected_callback (ESourceOptionMenu *menu,
-- ESource *source,
-- void *unused_data)
-+source_changed_cb (ESourceComboBox *combo_box)
- {
-+ ESource *source;
-+
-+ source = e_source_combo_box_get_active (combo_box);
- g_print ("source selected: \"%s\"\n", e_source_peek_name (source));
- }
-
-@@ -43,7 +43,7 @@ static int
- on_idle_create_widget (const char *gconf_path)
- {
- GtkWidget *window;
-- GtkWidget *option_menu;
-+ GtkWidget *combo_box;
- ESourceList *source_list;
- GConfClient *gconf_client;
-
-@@ -51,10 +51,12 @@ on_idle_create_widget (const char *gconf
- source_list = e_source_list_new_for_gconf (gconf_client, gconf_path);
-
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
-- option_menu = e_source_option_menu_new (source_list);
-- g_signal_connect (option_menu, "source_selected", G_CALLBACK (source_selected_callback), NULL);
-+ combo_box = e_source_combo_box_new (source_list);
-+ g_signal_connect (
-+ combo_box, "changed",
-+ G_CALLBACK (source_changed_cb), NULL);
-
-- gtk_container_add (GTK_CONTAINER (window), option_menu);
-+ gtk_container_add (GTK_CONTAINER (window), combo_box);
- gtk_widget_show_all (window);
-
- g_object_unref (gconf_client);
---- evolution-data-server-1.11.90/libedataserverui/e-source-option-menu.h.code-cleanup 2007-08-09 02:45:35.000000000 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/e-source-option-menu.h 2007-08-20 21:57:30.000000000 -0400
-@@ -23,6 +23,8 @@
- #ifndef _E_SOURCE_OPTION_MENU_H_
- #define _E_SOURCE_OPTION_MENU_H_
-
-+#ifndef EDS_DISABLE_DEPRECATED
-+
- #include "libedataserver/e-source-list.h"
-
- #include
-@@ -60,5 +62,6 @@ ESource *e_source_option_menu_peek_selec
- void e_source_option_menu_select (ESourceOptionMenu *menu,
- ESource *source);
-
-+#endif /* EDS_DISABLE_DEPRECATED */
-
- #endif /* _E_SOURCE_OPTION_MENU_H_ */
---- /dev/null 2007-08-20 18:12:02.086956713 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/e-source-combo-box.h 2007-08-20 21:57:30.000000000 -0400
-@@ -0,0 +1,79 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* e-source-combo-box.h
-+ *
-+ * Copyright (C) 2007 Novell, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of version 2 of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with this program; if not, write to the
-+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ * Boston, MA 02111-1307, USA.
-+ */
-+
-+#ifndef _E_SOURCE_COMBO_BOX_H_
-+#define _E_SOURCE_COMBO_BOX_H_
-+
-+#include
-+#include
-+
-+#define E_TYPE_SOURCE_COMBO_BOX \
-+ (e_source_combo_box_get_type ())
-+#define E_SOURCE_COMBO_BOX(obj) \
-+ (G_TYPE_CHECK_INSTANCE_CAST \
-+ ((obj), E_TYPE_SOURCE_COMBO_BOX, ESourceComboBox))
-+#define E_SOURCE_COMBO_BOX_CLASS(cls) \
-+ (G_TYPE_CHECK_CLASS_CAST \
-+ ((cls), E_TYPE_SOURCE_COMBO_BOX, ESourceComboBoxClass))
-+#define E_IS_SOURCE_COMBO_BOX(obj) \
-+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_SOURCE_COMBO_BOX))
-+#define E_IS_SOURCE_COMBO_BOX_CLASS(cls) \
-+ (G_TYPE_CHECK_CLASS_TYPE ((cls), E_TYPE_SOURCE_COMBO_BOX))
-+#define E_SOURCE_COMBO_BOX_GET_CLASS(obj) \
-+ (G_TYPE_INSTANCE_GET_CLASS \
-+ ((obj), E_TYPE_SOURCE_COMBO_BOX, ESourceComboBox))
-+
-+G_BEGIN_DECLS
-+
-+typedef struct _ESourceComboBox ESourceComboBox;
-+typedef struct _ESourceComboBoxClass ESourceComboBoxClass;
-+typedef struct _ESourceComboBoxPrivate ESourceComboBoxPrivate;
-+
-+struct _ESourceComboBox {
-+ GtkComboBox parent;
-+
-+ ESourceComboBoxPrivate *priv;
-+};
-+
-+struct _ESourceComboBoxClass {
-+ GtkComboBoxClass parent_class;
-+};
-+
-+GType e_source_combo_box_get_type (void);
-+GtkWidget * e_source_combo_box_new (ESourceList *source_list);
-+ESourceList * e_source_combo_box_get_source_list
-+ (ESourceComboBox *source_combo_box);
-+void e_source_combo_box_set_source_list
-+ (ESourceComboBox *source_combo_box,
-+ ESourceList *source_list);
-+ESource * e_source_combo_box_get_active
-+ (ESourceComboBox *source_combo_box);
-+void e_source_combo_box_set_active
-+ (ESourceComboBox *source_combo_box,
-+ ESource *source);
-+const gchar * e_source_combo_box_get_active_uid
-+ (ESourceComboBox *source_combo_box);
-+void e_source_combo_box_set_active_uid
-+ (ESourceComboBox *source_combo_box,
-+ const gchar *uid);
-+
-+G_END_DECLS
-+
-+#endif /* _E_SOURCE_COMBO_BOX_H_ */
---- evolution-data-server-1.11.90/libedataserverui/e-name-selector-dialog.h.code-cleanup 2007-07-05 02:01:52.000000000 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/e-name-selector-dialog.h 2007-08-20 21:57:30.000000000 -0400
-@@ -58,7 +58,6 @@ struct _ENameSelectorDialog {
- /* Private */
-
- EBook *pending_book;
-- ESourceList *source_list;
- ENameSelectorModel *name_selector_model;
- GtkTreeModelSort *contact_sort;
-
---- evolution-data-server-1.11.90/libedataserverui/Makefile.am.code-cleanup 2007-07-05 02:01:52.000000000 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/Makefile.am 2007-08-20 21:57:30.000000000 -0400
-@@ -31,6 +31,7 @@ libedataserverui_1_2_la_SOURCES = \
- e-passwords.c \
- e-source-selector.c \
- e-source-selector-dialog.c \
-+ e-source-combo-box.c \
- e-source-option-menu.c \
- e-tree-model-generator.c
-
-@@ -57,6 +58,7 @@ libedataserveruiinclude_HEADERS = \
- e-passwords.h \
- e-source-selector.h \
- e-source-selector-dialog.h \
-+ e-source-combo-box.h \
- e-source-option-menu.h \
- e-tree-model-generator.h
-
---- evolution-data-server-1.11.90/libedataserverui/e-name-selector-dialog.c.code-cleanup 2007-08-09 02:45:35.000000000 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/e-name-selector-dialog.c 2007-08-20 21:57:30.000000000 -0400
-@@ -32,7 +32,7 @@
- #include
- #include
- #include
--#include
-+#include
- #include
- #include
- #include
-@@ -64,9 +64,8 @@ struct _ENameSelectorDialogPrivate
- guint destination_index;
- };
-
--static ESource *find_first_source (ESourceList *source_list);
- static void search_changed (ENameSelectorDialog *name_selector_dialog);
--static void source_selected (ENameSelectorDialog *name_selector_dialog, ESource *source);
-+static void source_changed (ENameSelectorDialog *name_selector_dialog, ESourceComboBox *source_combo_box);
- static void transfer_button_clicked (ENameSelectorDialog *name_selector_dialog, GtkButton *transfer_button);
- static void contact_selection_changed (ENameSelectorDialog *name_selector_dialog);
- static void setup_name_selector_model (ENameSelectorDialog *name_selector_dialog);
-@@ -106,33 +105,28 @@ e_name_selector_dialog_set_property (GOb
- {
- }
-
--/* FIXME: category_list should become part of ENameSelectorDialog structure */
--GList *category_list;
--
- static void
- e_name_selector_dialog_populate_categories (ENameSelectorDialog *name_selector_dialog)
- {
-- GtkWidget *category_option_menu;
-- GtkWidget *category_menu;
-- GList *l;
-- category_option_menu = glade_xml_get_widget (name_selector_dialog->gui, "optionmenu-category");
-+ GtkWidget *combo_box;
-+ GList *category_list, *iter;
-
-- /* Categories are already sorted */
-- category_list = e_categories_get_list () ;
-- category_list = g_list_prepend (category_list, _("Any Category"));
--
-- category_menu = gtk_menu_new ();
-- l = category_list;
-- while (l) {
-- GtkWidget *item;
-- item = gtk_menu_item_new_with_label (l->data);
-- gtk_menu_shell_append (GTK_MENU_SHELL (category_menu), item);
-- l = l->next;
-- }
-- gtk_widget_show_all (category_menu);
-- gtk_option_menu_set_menu (GTK_OPTION_MENU (category_option_menu), category_menu);
--
-- g_signal_connect_swapped (category_option_menu, "changed", G_CALLBACK (search_changed), name_selector_dialog);
-+ /* "Any Category" is preloaded. */
-+ combo_box = glade_xml_get_widget (
-+ name_selector_dialog->gui, "combobox-category");
-+ if (gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box)) == -1)
-+ gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);
-+
-+ /* Categories are already sorted. */
-+ category_list = e_categories_get_list ();
-+ for (iter = category_list; iter != NULL; iter = iter->next)
-+ gtk_combo_box_append_text (
-+ GTK_COMBO_BOX (combo_box), iter->data);
-+ g_list_free (category_list);
-+
-+ g_signal_connect_swapped (
-+ combo_box, "changed",
-+ G_CALLBACK (search_changed), name_selector_dialog);
- }
-
- static void
-@@ -223,34 +217,26 @@ e_name_selector_dialog_init (ENameSelect
-
- name_selector_dialog->name_selector_model = e_name_selector_model_new ();
- name_selector_dialog->sections = g_array_new (FALSE, FALSE, sizeof (Section));
-- name_selector_dialog->source_list = source_list;
-
- setup_name_selector_model (name_selector_dialog);
-
- /* Create source menu */
-
-- widget = e_source_option_menu_new (name_selector_dialog->source_list);
--
-+ widget = e_source_combo_box_new (source_list);
-+ g_signal_connect_swapped (
-+ widget, "changed",
-+ G_CALLBACK (source_changed), name_selector_dialog);
-+ g_object_unref (source_list);
-+
- gconf_client = gconf_client_get_default();
- uid = gconf_client_get_string (gconf_client, "/apps/evolution/addressbook/display/primary_addressbook",
- NULL);
- g_object_unref (gconf_client);
- if (uid) {
-- ESource *source = e_source_list_peek_source_by_uid(name_selector_dialog->source_list, uid);
-- if (source) {
-- e_source_option_menu_select ((ESourceOptionMenu *)widget, source);
-- source_selected (name_selector_dialog, source);
-- }
-- else {
-- source_selected (name_selector_dialog, find_first_source (name_selector_dialog->source_list));
-- }
-+ e_source_combo_box_set_active_uid (
-+ E_SOURCE_COMBO_BOX (widget), uid);
- g_free (uid);
- }
-- else {
-- source_selected (name_selector_dialog, find_first_source (name_selector_dialog->source_list));
-- }
--
-- g_signal_connect_swapped (widget, "source_selected", G_CALLBACK (source_selected), name_selector_dialog);
-
- label = glade_xml_get_widget (name_selector_dialog->gui, "AddressBookLabel");
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget);
-@@ -308,9 +294,7 @@ e_name_selector_dialog_finalize (GObject
- ENameSelectorDialog *name_selector_dialog = E_NAME_SELECTOR_DIALOG (object);
-
- g_array_free (name_selector_dialog->sections, TRUE);
-- g_object_unref (name_selector_dialog->source_list);
- g_object_unref (name_selector_dialog->button_size_group);
-- g_list_free (category_list);
-
- if (G_OBJECT_CLASS (e_name_selector_dialog_parent_class)->finalize)
- G_OBJECT_CLASS (e_name_selector_dialog_parent_class)->finalize (object);
-@@ -384,26 +368,6 @@ sort_iter_to_contact_store_iter (ENameSe
- *email_n = email_n_local;
- }
-
--static ESource *
--find_first_source (ESourceList *source_list)
--{
-- GSList *groups, *sources, *l, *m;
--
-- groups = e_source_list_peek_groups (source_list);
-- for (l = groups; l; l = l->next) {
-- ESourceGroup *group = l->data;
--
-- sources = e_source_group_peek_sources (group);
-- for (m = sources; m; m = m->next) {
-- ESource *source = m->data;
--
-- return source;
-- }
-- }
--
-- return NULL;
--}
--
- static void
- add_destination (EDestinationStore *destination_store, EContact *contact, gint email_n)
- {
-@@ -742,8 +706,13 @@ book_opened (EBook *book, EBookStatus st
- }
-
- static void
--source_selected (ENameSelectorDialog *name_selector_dialog, ESource *source)
-+source_changed (ENameSelectorDialog *name_selector_dialog,
-+ ESourceComboBox *source_combo_box)
- {
-+ ESource *source;
-+
-+ source = e_source_combo_box_get_active (source_combo_box);
-+
- /* Remove any previous books being shown or loaded */
- remove_books (name_selector_dialog);
-
-@@ -761,49 +730,54 @@ search_changed (ENameSelectorDialog *nam
- {
- EContactStore *contact_store;
- EBookQuery *book_query;
-- GtkWidget *category_option_menu;
-+ GtkWidget *combo_box;
- const gchar *text;
-- gint category_id;
- gchar *text_escaped;
- gchar *query_string;
-- const gchar *category;
-+ gchar *category;
- gchar *category_escaped;
-
-- category_option_menu = glade_xml_get_widget(name_selector_dialog->gui, "optionmenu-category");
-- category_id = gtk_option_menu_get_history (GTK_OPTION_MENU(category_option_menu));
-- category = g_list_nth_data (category_list, category_id);
-- if (!category)
-- return;
-+ combo_box = glade_xml_get_widget (
-+ name_selector_dialog->gui, "combobox-category");
-+ if (gtk_combo_box_get_active (GTK_COMBO_BOX (combo_box)) == -1)
-+ gtk_combo_box_set_active (GTK_COMBO_BOX (combo_box), 0);
-+
-+ category = gtk_combo_box_get_active_text (GTK_COMBO_BOX (combo_box));
- category_escaped = escape_sexp_string (category);
-
- text = gtk_entry_get_text (name_selector_dialog->search_entry);
- text_escaped = escape_sexp_string (text);
-
-- if ( !strcmp (category, _("Any Category"))) {
-- query_string = g_strdup_printf ("(or (beginswith \"file_as\" %s) "
-- " (beginswith \"full_name\" %s) "
-- " (beginswith \"email\" %s) "
-- " (beginswith \"nickname\" %s)))",
-- text_escaped, text_escaped, text_escaped, text_escaped);
-- }
-- else {
-- query_string = g_strdup_printf ("(and (is \"category_list\" %s) "
-- "(or (beginswith \"file_as\" %s) "
-- " (beginswith \"full_name\" %s) "
-- " (beginswith \"email\" %s) "
-- " (beginswith \"nickname\" %s)))",
-- category_escaped,text_escaped, text_escaped, text_escaped, text_escaped);
-- }
-+ if (!strcmp (category, _("Any Category")))
-+ query_string = g_strdup_printf (
-+ "(or (beginswith \"file_as\" %s) "
-+ " (beginswith \"full_name\" %s) "
-+ " (beginswith \"email\" %s) "
-+ " (beginswith \"nickname\" %s)))",
-+ text_escaped, text_escaped,
-+ text_escaped, text_escaped);
-+ else
-+ query_string = g_strdup_printf (
-+ "(and (is \"category_list\" %s) "
-+ "(or (beginswith \"file_as\" %s) "
-+ " (beginswith \"full_name\" %s) "
-+ " (beginswith \"email\" %s) "
-+ " (beginswith \"nickname\" %s)))",
-+ category_escaped, text_escaped, text_escaped,
-+ text_escaped, text_escaped);
-
- book_query = e_book_query_from_string (query_string);
-- g_free (query_string);
-- g_free (text_escaped);
-- g_free (category_escaped);
-
-- contact_store = e_name_selector_model_peek_contact_store (name_selector_dialog->name_selector_model);
-+ contact_store = e_name_selector_model_peek_contact_store (
-+ name_selector_dialog->name_selector_model);
- e_contact_store_set_query (contact_store, book_query);
-
- e_book_query_unref (book_query);
-+
-+ g_free (query_string);
-+ g_free (text_escaped);
-+ g_free (category_escaped);
-+ g_free (category);
- }
-
- static void
---- /dev/null 2007-08-20 18:12:02.086956713 -0400
-+++ evolution-data-server-1.11.90/libedataserverui/e-source-combo-box.c 2007-08-20 21:57:30.000000000 -0400
-@@ -0,0 +1,456 @@
-+/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
-+/* e-source-option-menu.c
-+ *
-+ * Copyright (C) 2007 Novell, Inc.
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of version 2 of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with this program; if not, write to the
-+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-+ * Boston, MA 02111-1307, USA.
-+ */
-+
-+#ifdef HAVE_CONFIG_H
-+#include
-+#endif
-+
-+#include "e-source-combo-box.h"
-+
-+#define E_SOURCE_COMBO_BOX_GET_PRIVATE(obj) \
-+ (G_TYPE_INSTANCE_GET_PRIVATE \
-+ ((obj), E_TYPE_SOURCE_COMBO_BOX, ESourceComboBoxPrivate))
-+
-+struct _ESourceComboBoxPrivate {
-+ ESourceList *source_list;
-+ GHashTable *uid_index;
-+ gulong handler_id;
-+};
-+
-+enum {
-+ PROP_0,
-+ PROP_SOURCE_LIST
-+};
-+
-+enum {
-+ COLUMN_NAME, /* G_TYPE_STRING */
-+ COLUMN_SENSITIVE, /* G_TYPE_BOOLEAN */
-+ COLUMN_SOURCE, /* G_TYPE_OBJECT */
-+ NUM_COLUMNS
-+};
-+
-+static gpointer parent_class = NULL;
-+
-+static void
-+source_list_changed_cb (ESourceList *source_list,
-+ ESourceComboBox *source_combo_box)
-+{
-+ ESourceComboBoxPrivate *priv;
-+ GtkComboBox *combo_box;
-+ GtkTreeModel *model;
-+ GtkListStore *store;
-+ GtkTreeIter iter;
-+ GtkTreePath *path;
-+ GSList *groups;
-+ GSList *sources;
-+ const gchar *name;
-+ const gchar *uid;
-+ gchar *indented_name;
-+
-+ priv = source_combo_box->priv;
-+ g_hash_table_remove_all (priv->uid_index);
-+
-+ combo_box = GTK_COMBO_BOX (source_combo_box);
-+ gtk_combo_box_set_active (combo_box, -1);
-+
-+ model = gtk_combo_box_get_model (combo_box);
-+ store = GTK_LIST_STORE (model);
-+ gtk_list_store_clear (store);
-+
-+ for (groups = e_source_list_peek_groups (source_list);
-+ groups != NULL; groups = groups->next) {
-+
-+ /* Only show source groups that have sources. */
-+ if (e_source_group_peek_sources (groups->data) == NULL)
-+ continue;
-+
-+ name = e_source_group_peek_name (groups->data);
-+ gtk_list_store_append (store, &iter);
-+ gtk_list_store_set (
-+ store, &iter,
-+ COLUMN_NAME, name,
-+ COLUMN_SENSITIVE, FALSE,
-+ COLUMN_SOURCE, groups->data,
-+ -1);
-+
-+ for (sources = e_source_group_peek_sources (groups->data);
-+ sources != NULL; sources = sources->next) {
-+
-+ name = e_source_peek_name (sources->data);
-+ indented_name = g_strconcat (" ", name, NULL);
-+ gtk_list_store_append (store, &iter);
-+ gtk_list_store_set (
-+ store, &iter,
-+ COLUMN_NAME, indented_name,
-+ COLUMN_SENSITIVE, TRUE,
-+ COLUMN_SOURCE, sources->data,
-+ -1);
-+ g_free (indented_name);
-+
-+ uid = e_source_peek_uid (sources->data);
-+ path = gtk_tree_model_get_path (model, &iter);
-+ g_hash_table_insert (
-+ priv->uid_index, g_strdup (uid),
-+ gtk_tree_row_reference_new (model, path));
-+ gtk_tree_path_free (path);
-+ }
-+ }
-+}
-+
-+static GObject *
-+e_source_combo_box_constructor (GType type, guint n_construct_properties,
-+ GObjectConstructParam *construct_properties)
-+{
-+ GtkCellRenderer *renderer;
-+ GtkListStore *store;
-+ GObject *object;
-+
-+ /* Chain up to parent's "constructor" method. */
-+ object = G_OBJECT_CLASS (parent_class)->constructor (
-+ type, n_construct_properties, construct_properties);
-+
-+ store = gtk_list_store_new (
-+ NUM_COLUMNS, G_TYPE_STRING, G_TYPE_BOOLEAN, G_TYPE_OBJECT);
-+ gtk_combo_box_set_model (
-+ GTK_COMBO_BOX (object), GTK_TREE_MODEL (store));
-+
-+ renderer = gtk_cell_renderer_text_new ();
-+ gtk_cell_layout_pack_start (
-+ GTK_CELL_LAYOUT (object), renderer, TRUE);
-+ gtk_cell_layout_set_attributes (
-+ GTK_CELL_LAYOUT (object), renderer,
-+ "text", COLUMN_NAME,
-+ "sensitive", COLUMN_SENSITIVE,
-+ NULL);
-+
-+ return object;
-+}
-+
-+static void
-+e_source_combo_box_set_property (GObject *object, guint property_id,
-+ const GValue *value, GParamSpec *pspec)
-+{
-+ ESourceComboBoxPrivate *priv;
-+
-+ priv = E_SOURCE_COMBO_BOX_GET_PRIVATE (object);
-+
-+ switch (property_id) {
-+ case PROP_SOURCE_LIST:
-+
-+ if (priv->source_list != NULL) {
-+ g_signal_handler_disconnect (
-+ priv->source_list, priv->handler_id);
-+ g_object_unref (priv->source_list);
-+ }
-+
-+ priv->source_list = g_value_dup_object (value);
-+
-+ /* Reset the tree store. */
-+ source_list_changed_cb (
-+ priv->source_list,
-+ E_SOURCE_COMBO_BOX (object));
-+
-+ /* Watch for source list changes. */
-+ priv->handler_id = g_signal_connect_object (
-+ priv->source_list, "changed",
-+ G_CALLBACK (source_list_changed_cb),
-+ object, 0);
-+
-+ return;
-+ }
-+
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-+}
-+
-+static void
-+e_source_combo_box_get_property (GObject *object, guint property_id,
-+ GValue *value, GParamSpec *pspec)
-+{
-+ ESourceComboBoxPrivate *priv;
-+
-+ priv = E_SOURCE_COMBO_BOX_GET_PRIVATE (object);
-+
-+ switch (property_id) {
-+ case PROP_SOURCE_LIST:
-+ g_value_set_object (value, priv->source_list);
-+ return;
-+ }
-+
-+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-+}
-+
-+static void
-+e_source_combo_box_dispose (GObject *object)
-+{
-+ ESourceComboBoxPrivate *priv;
-+
-+ priv = E_SOURCE_COMBO_BOX_GET_PRIVATE (object);
-+
-+ if (priv->source_list != NULL) {
-+ g_object_unref (priv->source_list);
-+ priv->source_list = NULL;
-+ }
-+
-+ g_hash_table_remove_all (priv->uid_index);
-+
-+ /* Chain up to parent's "dispose" method. */
-+ G_OBJECT_CLASS (parent_class)->dispose (object);
-+}
-+
-+static void
-+e_source_combo_box_finalize (GObject *object)
-+{
-+ ESourceComboBoxPrivate *priv;
-+
-+ priv = E_SOURCE_COMBO_BOX_GET_PRIVATE (object);
-+
-+ g_hash_table_destroy (priv->uid_index);
-+
-+ /* Chain up to parent's "finalize" method. */
-+ G_OBJECT_CLASS (parent_class)->finalize (object);
-+}
-+
-+static void
-+e_source_combo_box_class_init (ESourceComboBoxClass *class)
-+{
-+ GObjectClass *object_class = G_OBJECT_CLASS (class);
-+
-+ parent_class = g_type_class_peek_parent (class);
-+
-+ g_type_class_add_private (class, sizeof (ESourceComboBox));
-+
-+ object_class->constructor = e_source_combo_box_constructor;
-+ object_class->set_property = e_source_combo_box_set_property;
-+ object_class->get_property = e_source_combo_box_get_property;
-+ object_class->dispose = e_source_combo_box_dispose;
-+ object_class->finalize = e_source_combo_box_finalize;
-+
-+ g_object_class_install_property (
-+ object_class,
-+ PROP_SOURCE_LIST,
-+ g_param_spec_object (
-+ "source-list",
-+ "source-list",
-+ "List of sources to choose from",
-+ E_TYPE_SOURCE_LIST,
-+ G_PARAM_READWRITE));
-+}
-+
-+static void
-+e_source_combo_box_init (ESourceComboBox *source_combo_box)
-+{
-+ source_combo_box->priv =
-+ E_SOURCE_COMBO_BOX_GET_PRIVATE (source_combo_box);
-+
-+ source_combo_box->priv->uid_index =
-+ g_hash_table_new_full (
-+ g_str_hash, g_str_equal,
-+ (GDestroyNotify) g_free,
-+ (GDestroyNotify) gtk_tree_row_reference_free);
-+}
-+
-+GType
-+e_source_combo_box_get_type (void)
-+{
-+ static GType type = 0;
-+
-+ if (G_UNLIKELY (type == 0)) {
-+ static const GTypeInfo type_info = {
-+ sizeof (ESourceComboBoxClass),
-+ (GBaseInitFunc) NULL,
-+ (GBaseFinalizeFunc) NULL,
-+ (GClassInitFunc) e_source_combo_box_class_init,
-+ (GClassFinalizeFunc) NULL,
-+ NULL, /* class_data */
-+ sizeof (ESourceComboBox),
-+ 0, /* n_preallocs */
-+ (GInstanceInitFunc) e_source_combo_box_init,
-+ NULL /* value_table */
-+ };
-+
-+ type = g_type_register_static (
-+ GTK_TYPE_COMBO_BOX, "ESourceComboBox", &type_info, 0);
-+ }
-+
-+ return type;
-+}
-+
-+/**
-+ * e_source_combo_box_new:
-+ * @source_list: an #ESourceList
-+ *
-+ * Creates a new #ESourceComboBox widget that lets the user pick an #ESource
-+ * from the provided #ESourceList.
-+ *
-+ * Returns: a new #ESourceComboBox
-+ **/
-+GtkWidget *
-+e_source_combo_box_new (ESourceList *source_list)
-+{
-+ g_return_val_if_fail (E_IS_SOURCE_LIST (source_list), NULL);
-+
-+ return g_object_new (
-+ E_TYPE_SOURCE_COMBO_BOX,
-+ "source-list", source_list, NULL);
-+}
-+
-+/**
-+ * e_source_combo_box_get_source_list:
-+ * @source_combo_box: an #ESourceComboBox
-+ *
-+ * Returns the #ESourceList which is acting as a data source for
-+ * @source_combo_box.
-+ *
-+ * Returns: an #ESourceList
-+ **/
-+ESourceList *
-+e_source_combo_box_get_source_list (ESourceComboBox *source_combo_box)
-+{
-+ ESourceList *source_list;
-+
-+ g_return_val_if_fail (E_IS_SOURCE_COMBO_BOX (source_combo_box), NULL);
-+
-+ g_object_get (source_combo_box, "source-list", &source_list, NULL);
-+
-+ return source_list;
-+}
-+
-+/**
-+ * e_source_combo_box_set_source_list:
-+ * @source_combo_box: an #ESourceComboBox
-+ * @source_list: an #ESourceList
-+ *
-+ * Sets the source list used by @source_combo_box to be @source_list. This
-+ * causes the contents of @source_combo_box to be regenerated.
-+ **/
-+void
-+e_source_combo_box_set_source_list (ESourceComboBox *source_combo_box,
-+ ESourceList *source_list)
-+{
-+ g_return_if_fail (E_IS_SOURCE_COMBO_BOX (source_combo_box));
-+ g_return_if_fail (E_IS_SOURCE_LIST (source_list));
-+
-+ g_object_set (source_combo_box, "source-list", source_list, NULL);
-+}
-+
-+/**
-+ * e_source_combo_box_get_active:
-+ * @source_combo_box: an #ESourceComboBox
-+ *
-+ * Returns the #ESource corresponding to the currently active item, or %NULL
-+ * if there is no active item.
-+ *
-+ * Returns: an #ESource or %NULL
-+ **/
-+ESource *
-+e_source_combo_box_get_active (ESourceComboBox *source_combo_box)
-+{
-+ GtkComboBox *combo_box;
-+ GtkTreeIter iter;
-+ ESource *source;
-+
-+ g_return_val_if_fail (E_IS_SOURCE_COMBO_BOX (source_combo_box), NULL);
-+
-+ combo_box = GTK_COMBO_BOX (source_combo_box);
-+
-+ if (!gtk_combo_box_get_active_iter (combo_box, &iter))
-+ return NULL;
-+
-+ gtk_tree_model_get (
-+ gtk_combo_box_get_model (combo_box),
-+ &iter, COLUMN_SOURCE, &source, -1);
-+
-+ return source;
-+}
-+
-+/**
-+ * e_source_combo_box_set_active:
-+ * @source_combo_box: an #ESourceComboBox
-+ * @source: an #ESource
-+ *
-+ * Sets the active item to the one corresponding to @source.
-+ **/
-+void
-+e_source_combo_box_set_active (ESourceComboBox *source_combo_box,
-+ ESource *source)
-+{
-+ g_return_if_fail (E_IS_SOURCE_COMBO_BOX (source_combo_box));
-+ g_return_if_fail (E_IS_SOURCE (source));
-+
-+ e_source_combo_box_set_active_uid (
-+ source_combo_box, e_source_peek_uid (source));
-+}
-+
-+/**
-+ * e_source_combo_box_get_active_uid:
-+ * @source_combo_box: an #ESourceComboBox
-+ *
-+ * Returns the unique ID of the #ESource corresponding to the currently
-+ * active item, or %NULL if there is no active item.
-+ *
-+ * Returns: a unique ID string or %NULL
-+ **/
-+const gchar *
-+e_source_combo_box_get_active_uid (ESourceComboBox *source_combo_box)
-+{
-+ ESource *source;
-+
-+ g_return_val_if_fail (E_IS_SOURCE_COMBO_BOX (source_combo_box), NULL);
-+
-+ source = e_source_combo_box_get_active (source_combo_box);
-+ if (source == NULL)
-+ return NULL;
-+
-+ return e_source_peek_uid (source);
-+}
-+
-+/**
-+ * e_source_combo_box_set_active_uid:
-+ * @source_combo_box: an #ESourceComboBox
-+ * @uid: a unique ID of an #ESource
-+ *
-+ * Sets the active item to the one corresponding to @uid.
-+ **/
-+void
-+e_source_combo_box_set_active_uid (ESourceComboBox *source_combo_box,
-+ const gchar *uid)
-+{
-+ ESourceComboBoxPrivate *priv;
-+ GtkTreeRowReference *reference;
-+ GtkComboBox *combo_box;
-+ GtkTreeIter iter;
-+ gboolean iter_was_set;
-+
-+ g_return_if_fail (E_IS_SOURCE_COMBO_BOX (source_combo_box));
-+ g_return_if_fail (uid != NULL);
-+
-+ priv = source_combo_box->priv;
-+ combo_box = GTK_COMBO_BOX (source_combo_box);
-+
-+ reference = g_hash_table_lookup (priv->uid_index, uid);
-+ g_return_if_fail (gtk_tree_row_reference_valid (reference));
-+
-+ iter_was_set = gtk_tree_model_get_iter (
-+ gtk_combo_box_get_model (combo_box), &iter,
-+ gtk_tree_row_reference_get_path (reference));
-+ g_return_if_fail (iter_was_set);
-+
-+ gtk_combo_box_set_active_iter (combo_box, &iter);
-+}
---- evolution-data-server-1.11.90/docs/reference/libedataserverui/libedataserverui-docs.sgml.code-cleanup 2007-07-05 02:01:47.000000000 -0400
-+++ evolution-data-server-1.11.90/docs/reference/libedataserverui/libedataserverui-docs.sgml 2007-08-20 21:57:30.000000000 -0400
-@@ -19,6 +19,7 @@
-
-
-
-+
-
-
-
---- evolution-data-server-1.11.90/docs/reference/libedataserverui/libedataserverui.types.code-cleanup 2007-07-05 02:01:47.000000000 -0400
-+++ evolution-data-server-1.11.90/docs/reference/libedataserverui/libedataserverui.types 2007-08-20 21:57:30.000000000 -0400
-@@ -6,6 +6,7 @@
- #include
- #include
- #include
-+#include
- #include
- #include
- #include
-@@ -19,6 +20,7 @@ e_name_selector_dialog_get_type
- e_name_selector_entry_get_type
- e_name_selector_list_get_type
- e_name_selector_model_get_type
-+e_source_combo_box_get_type
- e_source_option_menu_get_type
- e_source_selector_get_type
- e_source_selector_dialog_get_type
---- evolution-data-server-1.11.90/docs/reference/libedataserverui/libedataserverui-sections.txt.code-cleanup 2007-07-05 02:01:47.000000000 -0400
-+++ evolution-data-server-1.11.90/docs/reference/libedataserverui/libedataserverui-sections.txt 2007-08-20 21:57:30.000000000 -0400
-@@ -25,6 +25,29 @@ e_tree_model_generator_get_type
-
-
-
-+e-source-combo-box
-+ESourceComboBox
-+ESourceComboBox
-+e_source_combo_box_new
-+e_source_combo_box_get_source_list
-+e_source_combo_box_set_source_list
-+e_source_combo_box_get_active
-+e_source_combo_box_set_active
-+e_source_combo_box_get_active_uid
-+e_source_combo_box_set_active_uid
-+
-+E_SOURCE_COMBO_BOX
-+E_IS_SOURCE_COMBO_BOX
-+E_TYPE_SOURCE_COMBO_BOX
-+E_SOURCE_COMBO_BOX_CLASS
-+E_IS_SOURCE_COMBO_BOX_CLASS
-+E_SOURCE_COMBO_BOX_GET_CLASS
-+ESourceComboBoxClass
-+
-+e_source_combo_box_get_type
-+
-+
-+
- e-source-option-menu
- ESourceOptionMenu
- ESourceOptionMenu
---- evolution-data-server-1.11.90/calendar/libical/src/libicalss/icalssyacc.y.code-cleanup 2007-08-20 22:42:08.000000000 -0400
-+++ evolution-data-server-1.11.90/calendar/libical/src/libicalss/icalssyacc.y 2007-08-20 22:42:35.000000000 -0400
-@@ -47,6 +47,7 @@ static void ssyacc_add_select(struct ica
- static void ssyacc_add_from(struct icalgauge_impl* impl, char* str1);
- static void set_logic(struct icalgauge_impl* impl,icalgaugelogic l);
- void sserror(char *s); /* Don't know why I need this.... */
-+int sslex(void *YYPARSE_PARAM);
-
- %}
-
---- evolution-data-server-1.11.90/calendar/libical/src/libicalss/icalssyacc.c.code-cleanup 2007-08-20 22:42:08.000000000 -0400
-+++ evolution-data-server-1.11.90/calendar/libical/src/libicalss/icalssyacc.c 2007-08-20 22:42:35.000000000 -0400
-@@ -173,6 +173,7 @@ static void ssyacc_add_select(struct ica
- static void ssyacc_add_from(struct icalgauge_impl* impl, char* str1);
- static void set_logic(struct icalgauge_impl* impl,icalgaugelogic l);
- void sserror(char *s); /* Don't know why I need this.... */
-+int sslex(void *YYPARSE_PARAM);
-
-
-
---- evolution-data-server-1.11.90/calendar/libical/src/libicalvcal/vcc.y.code-cleanup 2007-08-20 22:42:49.000000000 -0400
-+++ evolution-data-server-1.11.90/calendar/libical/src/libicalvcal/vcc.y 2007-08-20 22:43:12.000000000 -0400
-@@ -170,6 +170,7 @@ static void enterProps(const char *s);
- static void enterAttr(const char *s1, const char *s2);
- static void enterValues(const char *value);
- static void mime_error_(char *s);
-+static int mime_lex(void);
-
- %}
-
---- evolution-data-server-1.11.90/calendar/libical/src/libicalvcal/vcc.c.code-cleanup 2007-08-20 22:42:49.000000000 -0400
-+++ evolution-data-server-1.11.90/calendar/libical/src/libicalvcal/vcc.c 2007-08-20 22:43:12.000000000 -0400
-@@ -170,6 +170,7 @@ static void enterProps(const char *s);
- static void enterAttr(const char *s1, const char *s2);
- static void enterValues(const char *value);
- static void mime_error_(char *s);
-+static int mime_lex(void);
-
-
-
diff --git a/evolution-data-server-1.8.0-db4.patch b/evolution-data-server-1.8.0-db4.patch
deleted file mode 100644
index 443d628..0000000
--- a/evolution-data-server-1.8.0-db4.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -up evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c.db4 evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c
---- evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c.db4 2007-10-12 02:29:47.000000000 -0400
-+++ evolution-data-server-1.12.1/addressbook/backends/file/e-book-backend-file.c 2007-10-19 11:56:03.000000000 -0400
-@@ -1137,23 +1137,30 @@ e_book_backend_file_load_source (EBookBa
- return db_error_to_status (db_error);
- }
-
-+ db->close (db, 0);
-+ db_error = db_create (&db, env, 0);
-+ if (db_error != 0) {
-+ g_warning ("db_create failed with %s", db_strerror (db_error));
-+ g_free (dirname);
-+ g_free (filename);
-+ return db_error_to_status (db_error);
-+ }
-+
- db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_THREAD, 0666);
- }
-
-- bf->priv->file_db = db;
--
- if (db_error == 0) {
- writable = TRUE;
- } else {
- db->close (db, 0);
--
- db_error = db_create (&db, env, 0);
- if (db_error != 0) {
- g_warning ("db_create failed with %s", db_strerror (db_error));
- g_free (dirname);
- g_free (filename);
-- return GNOME_Evolution_Addressbook_OtherError;
-+ return db_error_to_status (db_error);
- }
-+
- db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_RDONLY | DB_THREAD, 0666);
-
- if (db_error != 0 && !only_if_exists) {
-@@ -1178,7 +1185,7 @@ e_book_backend_file_load_source (EBookBa
- g_warning ("db_create failed with %s", db_strerror (db_error));
- g_free (dirname);
- g_free (filename);
-- return GNOME_Evolution_Addressbook_OtherError;
-+ return db_error_to_status (db_error);
- }
-
- db_error = (*db->open) (db, NULL, filename, NULL, DB_HASH, DB_CREATE | DB_THREAD, 0666);
-@@ -1201,6 +1208,8 @@ e_book_backend_file_load_source (EBookBa
- }
- }
-
-+ bf->priv->file_db = db;
-+
- if (db_error != 0) {
- bf->priv->file_db = NULL;
- g_free (dirname);
diff --git a/evolution-data-server-2.21.1-implicit-function-declarations.patch b/evolution-data-server-2.21.1-implicit-function-declarations.patch
new file mode 100644
index 0000000..260ad95
--- /dev/null
+++ b/evolution-data-server-2.21.1-implicit-function-declarations.patch
@@ -0,0 +1,77 @@
+diff -up evolution-data-server-2.21.1/servers/google/libgdata/gdata-entry.c.implicit-function-declarations evolution-data-server-2.21.1/servers/google/libgdata/gdata-entry.c
+--- evolution-data-server-2.21.1/servers/google/libgdata/gdata-entry.c.implicit-function-declarations 2007-10-24 02:39:44.000000000 -0400
++++ evolution-data-server-2.21.1/servers/google/libgdata/gdata-entry.c 2007-10-29 11:14:13.000000000 -0400
+@@ -31,6 +31,7 @@
+ #include
+ #include
+
++#include
+ #include
+
+ #define GDATA_ENTRY_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GDATA_TYPE_ENTRY, GDataEntryPrivate))
+@@ -812,7 +813,7 @@ build_hash_table_entries (gchar *key, gc
+
+ if (ptr->next == NULL) {
+ /* FIXME: Will we be needing , these nodes of entries when building them ? */
+- if (!g_strcasecmp (key, "published") || !g_strcasecmp (key, "id") || !g_strcasecmp (key, "updated"))
++ if (!g_ascii_strcasecmp (key, "published") || !g_ascii_strcasecmp (key, "id") || !g_ascii_strcasecmp (key, "updated"))
+ break;
+
+ ptr->next = xmlNewNode (NULL, (xmlChar *)key);
+@@ -1081,7 +1082,7 @@ gdata_entry_get_edit_link (GDataEntry *e
+
+ while (list) {
+ link = list->data;
+- if (!g_strcasecmp (link->rel, "edit")) {
++ if (!g_ascii_strcasecmp (link->rel, "edit")) {
+ edit_link = g_strdup(link->href);
+ }
+ list = g_slist_next (list);
+diff -up evolution-data-server-2.21.1/servers/google/libgdata-google/gdata-google-service.c.implicit-function-declarations evolution-data-server-2.21.1/servers/google/libgdata-google/gdata-google-service.c
+--- evolution-data-server-2.21.1/servers/google/libgdata-google/gdata-google-service.c.implicit-function-declarations 2007-10-29 11:17:57.000000000 -0400
++++ evolution-data-server-2.21.1/servers/google/libgdata-google/gdata-google-service.c 2007-10-29 11:18:19.000000000 -0400
+@@ -183,7 +183,7 @@ gdata_google_service_get_feed (GDataServ
+
+ if (!service_is_authenticated( GDATA_GOOGLE_SERVICE(service) )) {
+ status = service_authenticate(GDATA_GOOGLE_SERVICE(service));
+- if (g_strcasecmp(status, "SUCCESS")) {
++ if (g_ascii_strcasecmp(status, "SUCCESS")) {
+ return NULL;
+ }
+ }
+@@ -235,7 +235,7 @@ gdata_google_service_insert_entry (GData
+ if (!service_is_authenticated(GDATA_GOOGLE_SERVICE(service))) {
+ status = service_authenticate(GDATA_GOOGLE_SERVICE(service));
+
+- if (g_strcasecmp(status,"SUCCESS"))
++ if (g_ascii_strcasecmp(status,"SUCCESS"))
+ return NULL;
+ }
+
+@@ -305,7 +305,7 @@ gdata_google_service_delete_entry (GData
+
+ if (!service_is_authenticated (GDATA_GOOGLE_SERVICE(service))) {
+ status = (xmlChar *)service_authenticate (GDATA_GOOGLE_SERVICE(service));
+- if (g_strcasecmp((gchar *)status, "SUCCESS"))
++ if (g_ascii_strcasecmp((gchar *)status, "SUCCESS"))
+ return ;
+ }
+
+@@ -350,7 +350,7 @@ gdata_google_service_update_entry (GData
+
+ if (!service_is_authenticated (GDATA_GOOGLE_SERVICE (service))) {
+ status = service_authenticate (GDATA_GOOGLE_SERVICE (service));
+- if (g_strcasecmp (status, "SUCCESS"))
++ if (g_ascii_strcasecmp (status, "SUCCESS"))
+ return;
+ }
+
+@@ -410,7 +410,7 @@ gdata_google_service_update_entry_with_l
+
+ if (!service_is_authenticated (GDATA_GOOGLE_SERVICE(service))) {
+ status = service_authenticate (GDATA_GOOGLE_SERVICE(service));
+- if (g_strcasecmp (status, "SUCCESS"))
++ if (g_ascii_strcasecmp (status, "SUCCESS"))
+ return;
+ }
+
diff --git a/evolution-data-server.spec b/evolution-data-server.spec
index b57f295..29a518b 100644
--- a/evolution-data-server.spec
+++ b/evolution-data-server.spec
@@ -10,7 +10,7 @@
%define orbit2_version 2.9.8
%define soup_version 2.2.3
-%define eds_base_version 1.12
+%define eds_base_version 2.22
%define eds_api_version 1.2
%define use_gnome_keyring 1
@@ -25,8 +25,8 @@
### Abstract ###
Name: evolution-data-server
-Version: 1.12.1
-Release: 4%{?dist}
+Version: 2.21.1
+Release: 1%{?dist}
License: LGPL
Group: System Environment/Libraries
Summary: Backend data server for Evolution
@@ -45,9 +45,6 @@ Patch11: evolution-data-server-1.8.0-no-gnome-common.patch
# RH bug #202309
Patch12: evolution-data-server-1.7.91-maybe-fix-crash.patch
-# RH bug #212106
-Patch13: evolution-data-server-1.8.0-db4.patch
-
# RH bug #215702 / GNOME bug #487988
Patch14: evolution-data-server-1.8.0-fix-ldap-query.patch
@@ -58,15 +55,15 @@ Patch15: evolution-data-server-1.9.1-kill-ememory.patch
# XXX Disabled due to outstanding issues.
#Patch16: evolution-data-server-1.9.92-e-passwords.patch
-# GNOME bug #417999
-Patch17: evolution-data-server-1.10.0-code-cleanup.patch
-
# GNOME bug #373146
Patch18: evolution-data-server-1.10.1-camel-folder-summary-crash.patch
# RH bug #243296
Patch19: evolution-data-server-1.11.5-fix-64bit-acinclude.patch
+# Implicit function declarations.
+Patch20: evolution-data-server-2.21.1-implicit-function-declarations.patch
+
### Build Dependencies ###
BuildRequires: GConf2-devel
@@ -142,13 +139,12 @@ This package contains developer documentation for %{name}.
%patch10 -p1 -b .ldaphack
%patch11 -p1 -b .no-gnome-common
%patch12 -p1 -b .maybe-fix-crash
-%patch13 -p1 -b .db4
%patch14 -p1 -b .fix-ldap-query
%patch15 -p1 -b .kill-ememory
#%patch16 -p1 -b .e-passwords
-%patch17 -p1 -b .code-cleanup
%patch18 -p1 -b .camel-folder-summary-crash
%patch19 -p1 -b .fix-64bit-acinclude
+%patch20 -p1 -b .implicit-function-declarations
mkdir -p krb5-fakeprefix/include
mkdir -p krb5-fakeprefix/lib
@@ -249,7 +245,6 @@ autoconf
# http://www.burtonini.com/blog//computers/eds-libdb-2006-07-18-10-40
%configure \
- %gtkdoc_flags \
--with-libdb=/usr \
--enable-file-locking=fcntl \
--enable-dot-locking=no \
@@ -296,6 +291,8 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/libedataserverui-%{eds_api_version}.so.*
%{_libdir}/libegroupwise-%{eds_api_version}.so.*
%{_libdir}/libexchange-storage-%{eds_api_version}.so.*
+%{_libdir}/libgdata-%{eds_api_version}.so.*
+%{_libdir}/libgdata-google-%{eds_api_version}.so.*
%{_libexecdir}/evolution-data-server-%{eds_base_version}
%{_libexecdir}/camel-index-control-%{eds_api_version}
@@ -342,12 +339,13 @@ rm -rf $RPM_BUILD_ROOT
%{eds_extensions_dir}/libebookbackendgroupwise.so
%{eds_extensions_dir}/libebookbackendldap.so
%{eds_extensions_dir}/libebookbackendvcf.so
+%{eds_extensions_dir}/libecalbackendcaldav.so
%{eds_extensions_dir}/libecalbackendcontacts.so
%{eds_extensions_dir}/libecalbackendfile.so
+%{eds_extensions_dir}/libecalbackendgoogle.so
%{eds_extensions_dir}/libecalbackendgroupwise.so
%{eds_extensions_dir}/libecalbackendhttp.so
%{eds_extensions_dir}/libecalbackendweather.so
-%{eds_extensions_dir}/libecalbackendcaldav.so
%files devel
%defattr(-,root,root,-)
@@ -362,6 +360,8 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/libedataserverui-%{eds_api_version}.so
%{_libdir}/libegroupwise-%{eds_api_version}.so
%{_libdir}/libexchange-storage-%{eds_api_version}.so
+%{_libdir}/libgdata-%{eds_api_version}.so
+%{_libdir}/libgdata-google-%{eds_api_version}.so
%{_libdir}/pkgconfig/camel-%{eds_api_version}.pc
%{_libdir}/pkgconfig/camel-provider-%{eds_api_version}.pc
%{_libdir}/pkgconfig/evolution-data-server-%{eds_api_version}.pc
@@ -373,6 +373,8 @@ rm -rf $RPM_BUILD_ROOT
%{_libdir}/pkgconfig/libedataserverui-%{eds_api_version}.pc
%{_libdir}/pkgconfig/libegroupwise-%{eds_api_version}.pc
%{_libdir}/pkgconfig/libexchange-storage-%{eds_api_version}.pc
+%{_libdir}/pkgconfig/libgdata-%{eds_api_version}.pc
+%{_libdir}/pkgconfig/libgdata-google-%{eds_api_version}.pc
%files doc
%defattr(-,root,root,-)
@@ -385,6 +387,12 @@ rm -rf $RPM_BUILD_ROOT
%{_datadir}/gtk-doc/html/libedataserverui
%changelog
+* Mon Oct 29 2007 Matthew Barnes - 2.21.1.1-fc9
+- Update to 2.21.1
+- Bump eds_base_version to 2.22.
+- Remove patch for RH bug #212106 (fixed upstream).
+- Remove patch for GNOME bug #417999 (fixed upstream).
+
* Fri Oct 26 2007 Matthew Barnes - 1.12.1-4.fc9
- Remove the use_gtk_doc macro.
- Remove redundant requirements.
diff --git a/sources b/sources
index 308fce6..ce4c515 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-5b4d855ed1ceaaab7db14b50133b5252 evolution-data-server-1.12.1.tar.bz2
+c9d5c8c3ab8edf8184828c732f498d06 evolution-data-server-2.21.1.tar.bz2