Sessions may be added per-session.
[pazpar2-moved-to-github.git] / src / database.c
index d51cd4f..3824a67 100644 (file)
@@ -164,6 +164,7 @@ static struct database *load_database(const char *id,
 
     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;
@@ -229,7 +230,7 @@ static int match_criterion(struct setting **settings,
                            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)
@@ -239,8 +240,9 @@ static int match_criterion(struct setting **settings,
     }
     if (!settings[offset])
         return 0;
-    if (c->type == PAZPAR2_STRING_MATCH)
-        for (v = c->values; v; v = v->next)
+    for (v = c->values; v; v = v->next)
+    {
+        if (c->type == PAZPAR2_STRING_MATCH)
         {
             if (offset == PZ_ID)
             {
@@ -252,21 +254,13 @@ static int match_criterion(struct setting **settings,
                 if (!strcmp(settings[offset]->value, v->value))
                     break;
             }
-        }
-    else if (c->type == PAZPAR2_SUBSTRING_MATCH)
-        for (v = c->values; v; v = v->next)
+        }            
+        else if (c->type == PAZPAR2_SUBSTRING_MATCH)
         {
-            if (offset == PZ_ID)
-            {
-                if (match_zurl(settings[offset]->value, v->value))
-                    break;
-            }
-            else
-            {
-                if (strstr(settings[offset]->value, v->value))
-                    break;
-            }
+            if (strstr(settings[offset]->value, v->value))
+                break;
         }
+    }
     if (v)
         return 1;
     else