aboutsummaryrefslogtreecommitdiffstats
path: root/plugins/bbdb
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/bbdb')
-rw-r--r--plugins/bbdb/ChangeLog6
-rw-r--r--plugins/bbdb/bbdb.c20
2 files changed, 19 insertions, 7 deletions
diff --git a/plugins/bbdb/ChangeLog b/plugins/bbdb/ChangeLog
index 5def505a3e..b167ba281c 100644
--- a/plugins/bbdb/ChangeLog
+++ b/plugins/bbdb/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-13 Sushma Rai <rsushma@novell.com>
+
+ * bbdb.c (bbdb_do_it): If the contact has only e-mail id and not name,
+ extract the name from e-mail id and add it to the address book.
+ Fixes #303286.
+
2005-07-28 Vivek Jain <jvivek@novell.com>
* bbdb.c:(bbdb_handle_reply):check for NULL
diff --git a/plugins/bbdb/bbdb.c b/plugins/bbdb/bbdb.c
index 7ac34375f6..0021d81f21 100644
--- a/plugins/bbdb/bbdb.c
+++ b/plugins/bbdb/bbdb.c
@@ -156,24 +156,26 @@ bbdb_handle_reply (EPlugin *ep, EMEventTargetMessage *target)
static void
bbdb_do_it (EBook *book, const char *name, const char *email)
{
- char *query_string;
+ char *query_string, *delim, *temp_name = NULL;
EBookQuery *query;
GList *contacts, *l;
EContact *contact;
-
gboolean status;
GError *error = NULL;
g_return_if_fail (book != NULL);
- if (name == NULL || email == NULL)
+ if (email == NULL || !strcmp (email, ""))
return;
- if (! strcmp (name, "") || ! strcmp (email, ""))
+ if ((delim = strchr (email, '@')) == NULL)
return;
- if (strchr (email, '@') == NULL)
- return;
+ /* don't miss the entry if the mail has only e-mail id and no name */
+ if (name == NULL || ! strcmp (name, "")) {
+ temp_name = g_strndup (email, delim - email);
+ name = temp_name;
+ }
/* If any contacts exists with this email address, don't do anything */
query_string = g_strdup_printf ("(contains \"email\" \"%s\")", email);
@@ -187,7 +189,8 @@ bbdb_do_it (EBook *book, const char *name, const char *email)
for (l = contacts; l != NULL; l = l->next)
g_object_unref ((GObject *)l->data);
g_list_free (contacts);
-
+ g_free (temp_name);
+
return;
}
@@ -208,6 +211,7 @@ bbdb_do_it (EBook *book, const char *name, const char *email)
for (l = contacts; l != NULL; l = l->next)
g_object_unref ((GObject *)l->data);
g_list_free (contacts);
+ g_free (temp_name);
return;
}
@@ -222,6 +226,7 @@ bbdb_do_it (EBook *book, const char *name, const char *email)
g_object_unref ((GObject *)l->data);
g_list_free (contacts);
+ g_free (temp_name);
return;
}
@@ -229,6 +234,7 @@ bbdb_do_it (EBook *book, const char *name, const char *email)
contact = e_contact_new ();
e_contact_set (contact, E_CONTACT_FULL_NAME, (gpointer) name);
add_email_to_contact (contact, email);
+ g_free (temp_name);
if (! e_book_add_contact (book, contact, &error)) {
g_warning ("bbdb: Failed to add new contact: %s\n", error->message);