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:
@@ -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, §ion))
|
||||
{
|
||||
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, §ion))
|
||||
{
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user