+ db->explain = 0;
+
+ db->num_settings = PZ_NEGOTIATION_CHARSET+1;
+ db->settings = nmem_malloc(nmem, sizeof(struct settings*) *
+ db->num_settings);
+ memset(db->settings, 0, sizeof(struct settings*) * db->num_settings);
+ idset = nmem_malloc(nmem, sizeof(*idset));
+ idset->precedence = 0;
+ idset->name = "pz:id";
+ idset->target = idset->value = db->url;
+ idset->next = 0;
+ db->settings[PZ_ID] = idset;
+ db->next = 0;
+
+ return db;
+}
+
+static struct database *load_database(const char *id,
+ struct conf_service *service)
+{
+ struct database *db;
+ struct zr_explain *explain = 0;
+ xmlDoc *doc = 0;
+
+ if (service->targetprofiles
+ && (doc = get_explain_xml(service->targetprofiles, id)))
+ {
+ explain = zr_read_xml(service->nmem, xmlDocGetRootElement(doc));
+ if (!explain)
+ return 0;
+ }
+ db = new_database(id, service->nmem);