db->settings = nmem_malloc(service->nmem, sizeof(struct settings*) *
settings_num(service));
+ db->num_settings = settings_num(service);
memset(db->settings, 0, sizeof(struct settings*) * settings_num(service));
idset = nmem_malloc(service->nmem, sizeof(*idset));
idset->precedence = 0;
struct conf_service *service,
struct database_criterion *c)
{
- int offset = settings_offset(service, c->name);
+ int offset = settings_lookup_offset(service, c->name);
struct database_criterion_value *v;
if (offset < 0)
return 0;
for (v = c->values; v; v = v->next)
{
- if (offset == PZ_ID)
+ if (c->type == PAZPAR2_STRING_MATCH)
{
- if (match_zurl(settings[offset]->value, v->value))
- break;
- }
- else
+ if (offset == PZ_ID)
+ {
+ if (match_zurl(settings[offset]->value, v->value))
+ break;
+ }
+ else
+ {
+ if (!strcmp(settings[offset]->value, v->value))
+ break;
+ }
+ }
+ else if (c->type == PAZPAR2_SUBSTRING_MATCH)
{
- if (!strcmp(settings[offset]->value, v->value))
+ if (strstr(settings[offset]->value, v->value))
break;
}
}