X-Git-Url: http://lists.indexdata.com/cgi-bin?a=blobdiff_plain;f=src%2Flogic.c;h=8c2d070337ced82c28b7daebded0575ac631ed8a;hb=9b836e74ec3520f3c60b20515bab10940d4c6897;hp=2d035178ce289f708932057d3fb49b35ce727146;hpb=d5020d299e91322b289a6db5fc628ac5144adf0a;p=pazpar2-moved-to-github.git diff --git a/src/logic.c b/src/logic.c index 2d03517..8c2d070 100644 --- a/src/logic.c +++ b/src/logic.c @@ -350,17 +350,21 @@ static int prepare_map(struct session *se, struct session_database *sdb) 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; } } @@ -368,14 +372,15 @@ static int prepare_map(struct session *se, struct session_database *sdb) 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; } }