Initialize ID setting searlier -- Should alleviate need for explicitly setting id
[pazpar2-moved-to-github.git] / src / database.c
index f43cc75..dafb4bc 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: database.c,v 1.24 2007-04-22 15:00:56 adam Exp $
+/* $Id: database.c,v 1.27 2007-05-18 19:52:52 quinn Exp $
    Copyright (c) 2006-2007, Index Data.
 
 This file is part of Pazpar2.
@@ -29,6 +29,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include <sys/stat.h>
 
 #include "pazpar2.h"
+#include "host.h"
 #include "config.h"
 #include "settings.h"
 #include "http.h"
@@ -106,6 +107,7 @@ static struct database *load_database(const char *id)
     struct host *host;
     char hostport[256];
     char *dbname;
+    struct setting *idset;
 
     yaz_log(YLOG_LOG, "New database: %s", id);
     if (!nmem)
@@ -137,7 +139,18 @@ static struct database *load_database(const char *id)
     db->databases[1] = 0;
     db->errors = 0;
     db->explain = explain;
+
     db->settings = 0;
+
+    db->settings = nmem_malloc(nmem, sizeof(struct settings*) * settings_num());
+    memset(db->settings, 0, sizeof(struct settings*) * settings_num());
+    idset = nmem_malloc(nmem, sizeof(*id));
+    idset->precedence = 0;
+    idset->name = "pz:id";
+    idset->target = idset->value = db->url;
+    idset->next = 0;
+    db->settings[PZ_ID] = idset;
+
     db->next = databases;
     databases = db;
 
@@ -235,6 +248,8 @@ int session_grep_databases(struct session *se, struct database_criterion *cl,
     {
         if (p->settings && p->settings[PZ_ALLOW] && *p->settings[PZ_ALLOW]->value == '0')
             continue;
+        if (!p->settings[PZ_NAME])
+            continue;
         if (database_match_criteria(p->settings, cl))
         {
             (*fun)(se, p);