Mergekey changes - order + required/optional.
[pazpar2-moved-to-github.git] / src / database.c
index 3dfe74e..d51cd4f 100644 (file)
@@ -239,19 +239,34 @@ static int match_criterion(struct setting **settings,
     }
     if (!settings[offset])
         return 0;
-    for (v = c->values; v; v = v->next)
-    {
-        if (offset == PZ_ID)
+    if (c->type == PAZPAR2_STRING_MATCH)
+        for (v = c->values; v; v = v->next)
         {
-            if (match_zurl(settings[offset]->value, v->value))
-                break;
+            if (offset == PZ_ID)
+            {
+                if (match_zurl(settings[offset]->value, v->value))
+                    break;
+            }
+            else 
+            {
+                if (!strcmp(settings[offset]->value, v->value))
+                    break;
+            }
         }
-        else 
+    else if (c->type == PAZPAR2_SUBSTRING_MATCH)
+        for (v = c->values; v; v = v->next)
         {
-            if (!strcmp(settings[offset]->value, v->value))
-                break;
+            if (offset == PZ_ID)
+            {
+                if (match_zurl(settings[offset]->value, v->value))
+                    break;
+            }
+            else
+            {
+                if (strstr(settings[offset]->value, v->value))
+                    break;
+            }
         }
-    }
     if (v)
         return 1;
     else