nmem_strsplit(se->session_nmem, ",", s, &stylesheets, &num);
for (i = 0; i < num; i++)
{
+ WRBUF fname = conf_get_fname(se->service, stylesheets[i]);
+
(*m) = nmem_malloc(se->session_nmem, sizeof(**m));
(*m)->next = 0;
-
+
// XSLT
if (!strcmp(&stylesheets[i][strlen(stylesheets[i])-4], ".xsl"))
{
(*m)->marcmap = NULL;
- if (!((*m)->stylesheet = conf_load_stylesheet(se->service, stylesheets[i])))
+ if (!((*m)->stylesheet =
+ xsltParseStylesheetFile((xmlChar *) wrbuf_cstr(fname))))
{
yaz_log(YLOG_FATAL|YLOG_ERRNO, "Unable to load stylesheet: %s",
stylesheets[i]);
+ wrbuf_destroy(fname);
return -1;
}
}
else if (!strcmp(&stylesheets[i][strlen(stylesheets[i])-5], ".mmap"))
{
(*m)->stylesheet = NULL;
- if (!((*m)->marcmap = marcmap_load(stylesheets[i], se->session_nmem)))
+ if (!((*m)->marcmap = marcmap_load(wrbuf_cstr(fname), se->session_nmem)))
{
yaz_log(YLOG_FATAL|YLOG_ERRNO, "Unable to load marcmap: %s",
stylesheets[i]);
+ wrbuf_destroy(fname);
return -1;
}
}
-
+ wrbuf_destroy(fname);
m = &(*m)->next;
}
}
int subnum;
int subi;
struct database_criterion *new = nmem_malloc(m, sizeof(*new));
- char *eq = strchr(values[i], '=');
+ char *eq;
+ if (eq = strchr(values[i], '='))
+ new->type = PAZPAR2_STRING_MATCH;
+ if (eq = strchr(values[i], '~'))
+ new->type = PAZPAR2_SUBSTRING_MATCH;
if (!eq)
{
- yaz_log(YLOG_WARN, "Missing equal-sign in filter");
+ yaz_log(YLOG_WARN, "Missing equal-signi/tilde in filter");
return 0;
}
*(eq++) = '\0';
else
{
no_working++;
- if (client_prep_connection(cl, se->service->z3950_connect_timeout,
+ if (client_prep_connection(cl, se->service->z3950_operation_timeout,
se->service->z3950_session_timeout))
client_start_search(cl);
}