void msn_userlist_add_buddy(MsnUserList *userlist, const char *who, int list_id, const char *group_name) { MsnUser *user; int group_id; const char *list; const char *friendly_name; group_id = -1; if (!purple_email_is_valid(who)) { /* only notify the user about problems adding to the friends list * maybe we should do something else for other lists, but it probably * won't cause too many problems if we just ignore it */ if (list_id == MSN_LIST_FL) { char *str = g_strdup_printf(_("Unable to add \"%s\"."), who); purple_notify_error(NULL, NULL, str, _("The username specified is invalid.")); g_free(str); } return; } if (group_name != NULL) { group_id = msn_userlist_find_group_id(userlist, group_name); if (group_id < 0) { /* Whoa, we must add that group first. */ msn_request_add_group(userlist, who, NULL, group_name); return; } } user = msn_userlist_find_user(userlist, who); /* First we're going to check if it's already there. */ if (user_is_there(user, list_id, group_id)) { list = lists[list_id]; purple_debug_error("msn", "User '%s' is already there: %s\n", who, list); return; } friendly_name = (user != NULL) ? get_friendly_name(user) : who; /* Then request the add to the server. */ list = lists[list_id]; msn_notification_add_buddy(userlist->session->notification, list, who, friendly_name, group_id); }
END_TEST START_TEST(test_util_email_is_valid) { fail_unless(purple_email_is_valid("*****@*****.**")); fail_if(purple_email_is_valid("purple-devel@@lists.sf.net")); fail_if(purple_email_is_valid("purple@[email protected]")); fail_if(purple_email_is_valid("*****@*****.**")); fail_if(purple_email_is_valid("purple-devel")); fail_if(purple_email_is_valid("purple-devel@")); fail_if(purple_email_is_valid("@lists.sf.net")); fail_if(purple_email_is_valid("")); fail_if(purple_email_is_valid("totally bogus")); }
gboolean msn_email_is_valid(const char *passport) { if (purple_email_is_valid(passport)) { /* Special characters aren't allowed in domains, so only go to '@' */ while (*passport != '@') { if (*passport == '/') return FALSE; else if (*passport == '?') return FALSE; else if (*passport == '=') return FALSE; /* MSN also doesn't like colons, but that's checked already */ passport++; } return TRUE; } return FALSE; }