gboolean gaim_privacy_deny_add(GaimAccount *account, const char *who, gboolean local_only) { GSList *l; char *name; g_return_val_if_fail(account != NULL, FALSE); g_return_val_if_fail(who != NULL, FALSE); name = g_strdup(normalize(who)); for (l = account->deny; l != NULL; l = l->next) { if (!gaim_utf8_strcasecmp(name, normalize((char *)l->data))) break; } g_free(name); if (l != NULL) return FALSE; account->deny = g_slist_append(account->deny, g_strdup(who)); if (!local_only && gaim_account_is_connected(account)) serv_add_deny(gaim_account_get_connection(account), who); gaim_blist_save(); if (privacy_ops != NULL && privacy_ops->deny_added != NULL) privacy_ops->deny_added(account, who); return TRUE; }
gboolean purple_privacy_deny_add(PurpleAccount *account, const char *who, gboolean local_only) { GSList *l; char *name; PurpleBuddy *buddy; g_return_val_if_fail(account != NULL, FALSE); g_return_val_if_fail(who != NULL, FALSE); name = g_strdup(purple_normalize(account, who)); for (l = account->deny; l != NULL; l = l->next) { if (!purple_utf8_strcasecmp(name, purple_normalize(account, (char *)l->data))) break; } if (l != NULL) { g_free(name); return FALSE; } account->deny = g_slist_append(account->deny, name); if (!local_only && purple_account_is_connected(account)) serv_add_deny(purple_account_get_connection(account), who); if (privacy_ops != NULL && privacy_ops->deny_added != NULL) privacy_ops->deny_added(account, who); purple_blist_schedule_save(); buddy = purple_find_buddy(account, name); if (buddy != NULL) { purple_signal_emit(purple_blist_get_handle(), "buddy-privacy-changed", buddy); } return TRUE; }