Added exact match record filter
[pazpar2-moved-to-github.git] / src / session.c
index 4d64e32..76364aa 100644 (file)
@@ -1125,9 +1125,15 @@ static int check_record_filter(xmlNode *root, struct session_database *sdb)
             if (type)
             {
                 size_t len;
-                const char *eq = strchr(s, '~');
-                if (eq)
-                    len = eq - s;
+               int substring;
+                const char *eq;
+
+                if ((eq = strchr(s, '=')))
+                   substring = 0;
+               else if ((eq = strchr(s, '~')))
+                   substring = 1;
+               if (eq)
+                   len = eq - s;
                 else
                     len = strlen(s);
                 if (len == strlen((const char *)type) &&
@@ -1136,7 +1142,9 @@ static int check_record_filter(xmlNode *root, struct session_database *sdb)
                     xmlChar *value = xmlNodeGetContent(n);
                     if (value && *value)
                     {
-                        if (!eq || strstr((const char *) value, eq+1))
+                        if (!eq ||
+                           (substring && strstr((const char *) value, eq+1)) ||
+                           (!substring && !strcmp((const char *) value, eq + 1)))
                             match = 1;
                     }
                     xmlFree(value);