diff -r b30df2ab457f -r 7f056c566569 mcabber/src/settings.c --- a/mcabber/src/settings.c Wed May 24 22:29:05 2006 +0200 +++ b/mcabber/src/settings.c Wed May 24 23:30:31 2006 +0200 @@ -323,4 +323,23 @@ return rstatus; } +// settings_foreach(type, pfunction, param) +// Call pfunction(param, key, value) for each setting with requested type. +void settings_foreach(guint type, void (*pfunc)(void *param, char *k, char *v), + void *param) +{ + GSList **plist; + GSList *ptr; + T_setting *setting; + + plist = get_list_ptr(type); + + if (!*plist) return; + + for (ptr = *plist ; ptr; ptr = g_slist_next(ptr)) { + setting = ptr->data; + pfunc(param, setting->name, setting->value); + } +} + /* vim: set expandtab cindent cinoptions=>2\:2(0: For Vim users... */