Happy new year
[pazpar2-moved-to-github.git] / src / database.c
index 2940c25..2064fee 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of Pazpar2.
-   Copyright (C) 2006-2012 Index Data
+   Copyright (C) Index Data
 
 Pazpar2 is free software; you can redistribute it and/or modify it under
 the terms of the GNU General Public License as published by the Free
@@ -29,7 +29,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include "ppmutex.h"
 #include "session.h"
-#include "host.h"
 #include "pazpar2_config.h"
 #include "settings.h"
 #include "http.h"
@@ -99,7 +98,7 @@ struct database *create_database_for_service(const char *id,
     for (p = service->databases; p; p = p->next)
         if (!strcmp(p->id, id))
             return p;
-    
+
     yaz_log(YLOG_DEBUG, "new database %s under service %s", id,
        service->id ? service->id : "null");
     p = new_database_inherit_settings(id, service->nmem, service->settings);
@@ -142,7 +141,7 @@ int match_zurl(const char *zurl, const char *pattern)
 
 // This will be generalized at some point
 static int match_criterion(struct setting **settings,
-                           struct conf_service *service, 
+                           struct conf_service *service,
                            struct database_criterion *c)
 {
     int offset = settings_lookup_offset(service, c->name);
@@ -164,12 +163,12 @@ static int match_criterion(struct setting **settings,
                 if (match_zurl(settings[offset]->value, v->value))
                     break;
             }
-            else 
+            else
             {
                 if (!strcmp(settings[offset]->value, v->value))
                     break;
             }
-        }            
+        }
         else if (c->type == PAZPAR2_SUBSTRING_MATCH)
         {
             if (strstr(settings[offset]->value, v->value))
@@ -201,11 +200,18 @@ static struct database_criterion *create_database_criterion(NMEM m,
         int subi;
         struct database_criterion *new = nmem_malloc(m, sizeof(*new));
         char *eq;
-        if ((eq = strchr(values[i], '=')))
-            new->type = PAZPAR2_STRING_MATCH;
-        else if ((eq = strchr(values[i], '~')))
-            new->type = PAZPAR2_SUBSTRING_MATCH;
-        else
+        for (eq = values[i]; *eq; eq++)
+            if (*eq == '=')
+            {
+                new->type = PAZPAR2_STRING_MATCH;
+                break;
+            }
+            else if (*eq == '~')
+            {
+                new->type = PAZPAR2_SUBSTRING_MATCH;
+                break;
+            }
+        if (!*eq)
         {
             yaz_log(YLOG_WARN, "Missing equal-sign/tilde in filter");
             return 0;