diff -r d8636f8db50a -r ff6dff2228e1 libpurple/purpleaccountmanager.c --- a/libpurple/purpleaccountmanager.c Fri Sep 02 06:01:44 2022 -0500 +++ b/libpurple/purpleaccountmanager.c Mon Sep 05 20:14:00 2022 -0500 @@ -326,6 +326,26 @@ return NULL; } +PurpleAccount * +purple_account_manager_find_custom(PurpleAccountManager *manager, + GEqualFunc func, gconstpointer data) +{ + GList *l; + + g_return_val_if_fail(PURPLE_IS_ACCOUNT_MANAGER(manager), NULL); + g_return_val_if_fail(func != NULL, NULL); + + for(l = manager->accounts; l != NULL; l = l->next) { + PurpleAccount *account = PURPLE_ACCOUNT(l->data); + + if(func(account, data)) { + return account; + } + } + + return NULL; +} + void purple_account_manager_foreach(PurpleAccountManager *manager, PurpleAccountManagerForeachFunc callback,