int setting;
if (md->setting == Metadata_setting_parameter &&
- (setting = settings_offset(service, md->name)) > 0)
+ (setting = settings_lookup_offset(service, md->name)) >= 0)
{
const char *val = session_setting_oneval(sdb, setting);
if (val && nparms < MAX_XSLT_ARGS)
int offset;
if (md->setting == Metadata_setting_postproc &&
- (offset = settings_offset(service, md->name)) > 0)
+ (offset = settings_lookup_offset(service, md->name)) >= 0)
{
const char *val = session_setting_oneval(sdb, offset);
if (val)
{
if (db->settings)
{
- struct conf_service *service = se->service;
- int i, num = settings_num(service);
+ int i, num = db->num_settings;
for (i = 0; i < num; i++)
{
struct setting *s = db->settings[i];
- for (;s; s = s->next)
+ for (;s ; s = s->next)
{
wrbuf_puts(w, "<set name=\"");
wrbuf_xmlputs(w, s->name);
wrbuf_puts(w, "\" value=\"");
wrbuf_xmlputs(w, s->value);
- wrbuf_puts(w, "\"/>\n");
+ wrbuf_puts(w, "\"/>");
}
+ if (db->settings[i])
+ wrbuf_puts(w, "\n");
}
}
}
static void session_init_databases_fun(void *context, struct database *db)
{
struct session *se = (struct session *) context;
- struct conf_service *service = se->service;
struct session_database *new = nmem_malloc(se->session_nmem, sizeof(*new));
- int num = settings_num(service);
int i;
new->database = db;
new->map = 0;
- new->settings
- = nmem_malloc(se->session_nmem, sizeof(struct settings *) * num);
- memset(new->settings, 0, sizeof(struct settings*) * num);
-
- if (db->settings)
- {
- for (i = 0; i < num; i++)
- new->settings[i] = db->settings[i];
- }
+ assert(db->settings);
+ new->settings = nmem_malloc(se->session_nmem,
+ sizeof(struct settings *) * db->num_settings);
+ new->num_settings = db->num_settings;
+ for (i = 0; i < db->num_settings; i++)
+ new->settings[i] = db->settings[i];
new->next = se->databases;
se->databases = new;
}
struct session_database *sdb = find_session_database(se, dbname);
struct conf_service *service = se->service;
struct setting *new = nmem_malloc(se->session_nmem, sizeof(*new));
- int offset = settings_offset_cprefix(service, setting);
+ int offset = settings_create_offset(service, setting);
- if (offset < 0)
- {
- yaz_log(YLOG_WARN, "Unknown setting %s", setting);
- return;
- }
- // Jakub: This breaks the filter setting.
- /*if (offset == PZ_ID)
- {
- yaz_log(YLOG_WARN, "No need to set pz:id setting. Ignoring");
- return;
- }*/
+ expand_settings_array(&sdb->settings, &sdb->num_settings, offset,
+ se->session_nmem);
new->precedence = 0;
new->target = dbname;
new->name = setting;