rpms/evolution/devel evolution-2.25.2-broken-account-uris.patch, NONE, 1.1 evolution.spec, 1.363, 1.364

Matthew Barnes mbarnes at fedoraproject.org
Tue Dec 9 17:30:50 UTC 2008


Author: mbarnes

Update of /cvs/pkgs/rpms/evolution/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv8464

Modified Files:
	evolution.spec 
Added Files:
	evolution-2.25.2-broken-account-uris.patch 
Log Message:

* Tue Dec 09 2008 Matthew Barnes <mbarnes at redhat.com> - 2.25.2-2.fc11
- Add patch for GNOME bug #552583 (fix account URI comparisons).


evolution-2.25.2-broken-account-uris.patch:

--- NEW FILE evolution-2.25.2-broken-account-uris.patch ---
diff -up evolution-2.25.2/mail/mail-config.c.broken-account-uris evolution-2.25.2/mail/mail-config.c
--- evolution-2.25.2/mail/mail-config.c.broken-account-uris	2008-11-27 04:41:49.000000000 -0500
+++ evolution-2.25.2/mail/mail-config.c	2008-12-09 11:28:35.000000000 -0500
@@ -800,53 +800,64 @@ mail_config_get_account_by_uid (const ch
 	return (EAccount *) e_account_list_find (config->accounts, E_ACCOUNT_FIND_UID, uid);
 }
 
+static gboolean
+mail_config_account_url_equal (const CamelURL *u1,
+                               const CamelURL *u2)
+{
+	/* For the purpose of matching a URL to an EAccount, only compare
+	 * the protocol, user, host and port and disregard the rest. */
+
+	if (g_strcmp0 (u1->protocol, u2->protocol) != 0)
+		return FALSE;
+
+	if (g_strcmp0 (u1->user, u2->user) != 0)
+		return FALSE;
+
+	if (g_strcmp0 (u1->host, u2->host) != 0)
+		return FALSE;
+
+	return (u1->port == u2->port);
+}
+
 EAccount *
 mail_config_get_account_by_source_url (const char *source_url)
 {
 	EAccount *account = NULL;
 	EIterator *iter;
+	CamelURL *url;
 
 	g_return_val_if_fail (source_url != NULL, NULL);
 
+	url = camel_url_new (source_url, NULL);
+	g_return_val_if_fail (url != NULL, NULL);
+
 	iter = e_list_get_iterator ((EList *) config->accounts);
-	while (e_iterator_is_valid (iter)) {
-		CamelURL *url;
-		gchar *string;
+	while (account == NULL && e_iterator_is_valid (iter)) {
+		CamelURL *account_url;
 
 		account = (EAccount *) e_iterator_get (iter);
 
 		e_iterator_next (iter);
 
-		if (account->source == NULL)
-			continue;
-
-		else if (account->source->url == NULL)
-			continue;
-
-		else if (*account->source->url == '\0')
+		if ( !account || (account->source == NULL) || 
+			(account->source->url == NULL) || (*account->source->url == '\0')) {
+			account = NULL;
 			continue;
+		}
 
-		url = camel_url_new (account->source->url, NULL);
-		if (url == NULL)
+		account_url = camel_url_new (account->source->url, NULL);
+		if (account_url == NULL)
 			continue;
 
-		/* Simplify the account URL for comparison. */
-		string = camel_url_to_string (url, CAMEL_URL_HIDE_ALL);
-		if (string == NULL || strcmp (string, source_url) != 0)
+		if (!mail_config_account_url_equal (url, account_url))
 			account = NULL;  /* not a match */
 
-		camel_url_free (url);
-		g_free (string);
-
-		if (account != NULL) {
-			g_object_unref (iter);
-			return account;
-		}
+		camel_url_free (account_url);
 	}
 
 	g_object_unref (iter);
 
-	return NULL;
+	return account;
 }
 
 EAccount *
@@ -854,48 +865,40 @@ mail_config_get_account_by_transport_url
 {
 	EAccount *account = NULL;
 	EIterator *iter;
+	CamelURL *url;
 
 	g_return_val_if_fail (transport_url != NULL, NULL);
 
+	url = camel_url_new (transport_url, NULL);
+	g_return_val_if_fail (url != NULL, NULL);
+
 	iter = e_list_get_iterator ((EList *) config->accounts);
-	while (e_iterator_is_valid (iter)) {
-		CamelURL *url;
-		gchar *string;
+	while (account == NULL && e_iterator_is_valid (iter)) {
+		CamelURL *account_url;
 
 		account = (EAccount *) e_iterator_get (iter);
 
 		e_iterator_next (iter);
 
-		if (account->transport == NULL)
-			continue;
-
-		else if (account->transport->url == NULL)
-			continue;
-
-		else if (*account->transport->url == '\0')
-			continue;
+		if ( !account || (account->transport == NULL) || 
+			(account->transport->url == NULL) || (*account->transport->url == '\0')) {
+				account = NULL;
+				continue;
+		}
 
-		url = camel_url_new (account->transport->url, NULL);
-		if (url == NULL)
+		account_url = camel_url_new (account->transport->url, NULL);
+		if (account_url == NULL)
 			continue;
 
-		/* Simplify the account URL for comparison. */
-		string = camel_url_to_string (url, CAMEL_URL_HIDE_ALL);
-		if (string == NULL || strcmp (string, transport_url) != 0)
+		if (!mail_config_account_url_equal (url, account_url))
 			account = NULL;  /* not a match */
 
 		camel_url_free (url);
-		g_free (string);
-
-		if (account != NULL) {
-			g_object_unref (iter);
-			return account;
-		}
 	}
 
 	g_object_unref (iter);
 
-	return NULL;
+	return account;
 }
 
 int


Index: evolution.spec
===================================================================
RCS file: /cvs/pkgs/rpms/evolution/devel/evolution.spec,v
retrieving revision 1.363
retrieving revision 1.364
diff -u -r1.363 -r1.364
--- evolution.spec	2 Dec 2008 03:08:10 -0000	1.363
+++ evolution.spec	9 Dec 2008 17:30:20 -0000	1.364
@@ -45,7 +45,7 @@
 
 Name: evolution
 Version: 2.25.2
-Release: 1%{?dist}
+Release: 2%{?dist}
 License: GPLv2 and GFDL
 Group: Applications/Productivity
 Summary: Mail and calendar client for GNOME
@@ -77,6 +77,9 @@
 # RH bug #176400
 Patch14: evolution-2.9.1-im-context-reset.patch
 
+# GNOME bug #552583
+Patch15: evolution-2.25.2-broken-account-uris.patch
+
 ## Dependencies ###
 
 Requires(post): GConf2
@@ -230,6 +233,7 @@
 %patch12 -p1 -b .fix-conduit-dir
 %patch13 -p1 -b .no-gnome-common
 %patch14 -p1 -b .im-context-reset
+%patch15 -p1 -b .broken-account-uris
 
 mkdir -p krb5-fakeprefix/include
 mkdir -p krb5-fakeprefix/lib
@@ -696,6 +700,9 @@
 %{_libexecdir}/evolution/%{evo_major}/evolution-addressbook-clean
 
 %changelog
+* Tue Dec 09 2008 Matthew Barnes <mbarnes at redhat.com> - 2.25.2-2.fc11
+- Add patch for GNOME bug #552583 (fix account URI comparisons).
+
 * Mon Dec 01 2008 Matthew Barnes <mbarnes at redhat.com> - 2.25.2-1.fc11
 - Update to 2.25.2
 - Bump eds_version to 2.25.2.




More information about the fedora-extras-commits mailing list