Change interface for enumerator_create_filter() callback

This avoids the unportable 5 pointer hack, but requires enumerating in
the callback.
This commit is contained in:
Tobias Brunner
2017-05-26 13:56:44 +02:00
parent 95a63bf281
commit 525cc46cab
50 changed files with 1331 additions and 929 deletions
+33 -14
View File
@@ -294,24 +294,43 @@ static dictionary_t *section_dictionary_create(private_conf_parser_t *parser,
return &this->public;
}
static bool conn_filter(void *unused, section_t **section, char **name)
CALLBACK(conn_filter, bool,
void *unused, enumerator_t *orig, va_list args)
{
if (streq((*section)->name, "%default"))
section_t *section;
char **name;
VA_ARGS_VGET(args, name);
while (orig->enumerate(orig, &section))
{
return FALSE;
if (!streq(section->name, "%default"))
{
*name = section->name;
return TRUE;
}
}
*name = (*section)->name;
return TRUE;
return FALSE;
}
static bool ca_filter(void *unused, void *key, char **name, section_t **section)
CALLBACK(ca_filter, bool,
void *unused, enumerator_t *orig, va_list args)
{
if (streq((*section)->name, "%default"))
void *key;
section_t *section;
char **name;
VA_ARGS_VGET(args, name);
while (orig->enumerate(orig, &key, &section))
{
return FALSE;
if (!streq(section->name, "%default"))
{
*name = section->name;
return TRUE;
}
}
*name = (*section)->name;
return TRUE;
return FALSE;
}
METHOD(conf_parser_t, get_sections, enumerator_t*,
@@ -321,12 +340,12 @@ METHOD(conf_parser_t, get_sections, enumerator_t*,
{
case CONF_PARSER_CONN:
return enumerator_create_filter(
array_create_enumerator(this->conns_order),
(void*)conn_filter, NULL, NULL);
array_create_enumerator(this->conns_order),
conn_filter, NULL, NULL);
case CONF_PARSER_CA:
return enumerator_create_filter(
this->cas->create_enumerator(this->cas),
(void*)ca_filter, NULL, NULL);
this->cas->create_enumerator(this->cas),
ca_filter, NULL, NULL);
case CONF_PARSER_CONFIG_SETUP:
default:
return enumerator_create_empty();