File bnc-477697-display-names.diff of Package evolution-data-server

diff --git a/camel/providers/groupwise/camel-groupwise-folder.c b/camel/providers/groupwise/camel-groupwise-folder.c
index 54fc0f8..6697b1c 100644
--- a/camel/providers/groupwise/camel-groupwise-folder.c
+++ b/camel/providers/groupwise/camel-groupwise-folder.c
@@ -96,5 +96,6 @@ static void groupwise_msg_set_recipient_list (CamelMimeMessage *msg, EGwItem *it
 static void gw_update_cache ( CamelFolder *folder, GList *item_list, CamelException *ex, gboolean uid_flag);
 static CamelMimeMessage *groupwise_folder_item_to_msg ( CamelFolder *folder, EGwItem *item, CamelException *ex );
+static const char *get_from_from_org (EGwItemOrganizer *org);
 
 
 #define d(x)  
@@ -420,20 +421,14 @@ groupwise_msg_set_recipient_list (CamelMimeMessage *msg, EGwItem *item)
 
 	if (org) {
 		if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
-				int i;
-				for (i = 0; org->display_name[i] != '<' && 
-						org->display_name[i] != '\0';
-						i++);
-
-				org->display_name[i] = '\0';
-		}
-		if (org->display_name && org->email) 
+			org->display_name = g_strdelimit (org->display_name, "<>", ' ');
 			ha=camel_header_address_new_name(org->display_name, org->email);
+		} else if (org->email) 
+			ha=camel_header_address_new_name(org->email, org->email);
 		else if (org->display_name)
 			ha=camel_header_address_new_group(org->display_name);
 		else
 			ha = NULL;
-
 		if (ha) {
 			subs_email = camel_header_address_list_encode (ha);	
 			camel_medium_set_header (CAMEL_MEDIUM (msg), "From", subs_email);
@@ -1455,32 +1450,7 @@ gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean
 		mi->server_flags = mi->info.flags;
 
 		org = e_gw_item_get_organizer (item); 
-
-		if (org) {
-				GString *str;
-				int i;
-				str = g_string_new ("");
-
-				if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
-						for (i = 0; org->display_name[i] != '<' && 
-										org->display_name[i] != '\0'; 
-										i++);
-
-						org->display_name[i] = '\0';
-						str = g_string_append (str, org->display_name);
-						str = g_string_append (str, " ");
-				}
-
-				if (org->email && org->email[0]) { 
-						g_string_append (str, "<");
-						str = g_string_append (str, org->email);
-						g_string_append (str, ">");
-				}
-
-
-				mi->info.from = camel_pstring_strdup (str->str);
-				g_string_free (str, TRUE);
-		}
+		mi->info.from = get_from_from_org (org);
 
 		g_string_truncate (str, 0);
 		recp_list = e_gw_item_get_recipient_list (item);
@@ -1580,5 +1550,36 @@ gw_update_cache (CamelFolder *folder, GList *list, CamelException *ex, gboolean
 	camel_folder_change_info_free (changes);
 }
 
+static const char *
+get_from_from_org (EGwItemOrganizer *org)
+{
+	const char *ret = NULL;
+
+	if (org) {
+		GString *str;
+		
+		str = g_string_new ("");
+		if (org->display_name && org->display_name[0]) {
+			org->display_name = g_strdelimit (org->display_name, "<>", ' ');
+			str = g_string_append (str, org->display_name);
+			str = g_string_append (str, " ");
+		} else if (org->email && org->email [0]) {
+			str = g_string_append (str, org->email);
+			str = g_string_append (str, " ");
+		}
+
+		if (org->email && org->email[0]) { 
+			g_string_append (str, "<");
+			str = g_string_append (str, org->email);
+			g_string_append (str, ">");
+		}
+		ret = camel_pstring_strdup (str->str);
+		g_string_free (str, TRUE);
+
+		return ret;
+	} else
+	       return camel_pstring_strdup ("");
+}
+
 void
 gw_update_summary ( CamelFolder *folder, GList *list,CamelException *ex) 
@@ -1680,28 +1681,8 @@ gw_update_summary ( CamelFolder *folder, GList *list,CamelException *ex)
 		mi->server_flags = mi->info.flags;
 
 		org = e_gw_item_get_organizer (item); 
-		if (org) {
-			GString *str;
-			int i;
-			str = g_string_new ("");
-			if (org->display_name && org->display_name[0] && org->email != NULL && org->email[0] != '\0') {
-				for (i = 0; org->display_name[i] != '<' && 
-						org->display_name[i] != '\0'; 
-						i++);
-
-				org->display_name[i] = '\0';
-				str = g_string_append (str, org->display_name);
-				str = g_string_append (str, " ");
-			}
+		mi->info.from = get_from_from_org (org);
 
-			if (org->email && org->email[0]) { 
-				g_string_append (str, "<");
-				str = g_string_append (str, org->email);
-				g_string_append (str, ">");
-			}
-			mi->info.from = camel_pstring_strdup (str->str);
-			g_string_free (str, TRUE);
-		}
 		g_string_truncate (str, 0);
 		recp_list = e_gw_item_get_recipient_list (item);
 		if (recp_list) {
openSUSE Build Service is sponsored by