static void conversation_created_cb (PurpleConversation *conv, gpointer data) { gchar *str; const gchar *tmp_user, *friendly_name; MsnSession *session = data; struct pn_contact *contact; tmp_user = purple_conversation_get_name (conv); contact = pn_contactlist_find_contact (session->contactlist, tmp_user); if (contact) friendly_name = pn_contact_get_friendly_name (contact); else friendly_name = tmp_user; if (!friendly_name) friendly_name = tmp_user; if (contact && !(contact->list_op & (1 << MSN_LIST_RL))) { str = g_strdup_printf (_("You are not in %s's contact list."), friendly_name); purple_conversation_write (conv, NULL, str, PURPLE_MESSAGE_SYSTEM | PURPLE_MESSAGE_NOTIFY, time (NULL)); g_free (str); } }
static void conversation_created_cb (PurpleConversation *conv, gpointer data) { const gchar *tmp_user, *friendly_name; MsnSession *session = data; struct pn_contact *contact; tmp_user = purple_conversation_get_name (conv); contact = pn_contactlist_find_contact (session->contactlist, tmp_user); if (contact) friendly_name = pn_contact_get_friendly_name (contact); else friendly_name = tmp_user; if (!friendly_name) friendly_name = tmp_user; }
/* stupid libpurple's local contact list, we don't need you! */ static void sync_users (MsnSession *session) { PurpleAccount *account; GSList *buddies; GList *to_remove = NULL; account = msn_session_get_user_data(session); for (buddies = purple_find_buddies(account, NULL); buddies; buddies = g_slist_delete_link(buddies, buddies)) { PurpleBuddy *buddy = buddies->data; const gchar *buddy_name = purple_buddy_get_name(buddy); const gchar *group_name = purple_group_get_name(purple_buddy_get_group(buddy)); struct pn_contact *contact; gboolean found = FALSE; contact = pn_contactlist_find_contact(session->contactlist, buddy_name); if (contact && contact->list_op & MSN_LIST_FL_OP) { struct pn_group *group; group = pn_contactlist_find_group_with_name(session->contactlist, group_name); found = pn_contact_is_in_group(contact, group); } if (!found) { pn_warning("synchronization issue; buddy %s not found in group %s: removing", purple_buddy_get_name(buddy), group_name); to_remove = g_list_prepend(to_remove, buddy); } } if (to_remove) { g_list_foreach(to_remove, (GFunc) purple_blist_remove_buddy, NULL); g_list_free(to_remove); } }