#include "client.h"
#include "settings.h"
#include "normalize7bit.h"
+#include "marcmap.h"
#define TERMLIST_HIGH_SCORE 25
{
0, // dump_records
0, // debug_mode
- 30, // operations timeout
- "81",
- "Index Data PazPar2",
- VERSION,
60, // session timeout
100,
- MAX_CHUNK,
- 0,
- 0,
180, // Z39.50 session timeout
15 // Connect timeout
};
insert_settings_parameters(sdb, se, parms);
- new = xsltApplyStylesheet(m->stylesheet, rdoc, (const char **) parms);
- root= xmlDocGetRootElement(new);
+ if (m->stylesheet)
+ {
+ new = xsltApplyStylesheet(m->stylesheet, rdoc, (const char **) parms);
+ }
+ else if (m->marcmap)
+ {
+ new = marcmap_apply(m->marcmap, rdoc);
+ }
+
+ root = xmlDocGetRootElement(new);
+
if (!new || !root || !(root->children))
{
yaz_log(YLOG_WARN, "XSLT transformation failed from %s",
{
(*m) = nmem_malloc(se->session_nmem, sizeof(**m));
(*m)->next = 0;
- if (!((*m)->stylesheet = conf_load_stylesheet(stylesheets[i])))
+
+ // XSLT
+ if (!strcmp(&stylesheets[i][strlen(stylesheets[i])-4], ".xsl"))
+ {
+ (*m)->marcmap = NULL;
+ if (!((*m)->stylesheet = conf_load_stylesheet(se->service->config, stylesheets[i])))
+ {
+ yaz_log(YLOG_FATAL|YLOG_ERRNO, "Unable to load stylesheet: %s",
+ stylesheets[i]);
+ return -1;
+ }
+ }
+ // marcmap
+ else if (!strcmp(&stylesheets[i][strlen(stylesheets[i])-5], ".mmap"))
{
- yaz_log(YLOG_FATAL|YLOG_ERRNO, "Unable to load stylesheet: %s",
- stylesheets[i]);
- return -1;
+ (*m)->stylesheet = NULL;
+ if (!((*m)->marcmap = marcmap_load(stylesheets[i], se->session_nmem)))
+ {
+ yaz_log(YLOG_FATAL|YLOG_ERRNO, "Unable to load marcmap: %s",
+ stylesheets[i]);
+ return -1;
+ }
}
+
m = &(*m)->next;
}
}
}
enum pazpar2_error_code search(struct session *se,
- char *query, char *filter,
+ const char *query, const char *filter,
const char **addinfo)
{
int live_channels = 0;
{
struct database *db = find_database(id, 0, se->service);
+ resolve_database(db);
+
session_init_databases_fun((void*) se, db);
// New sdb is head of se->databases list
return se->databases;
stat->num_clients = count;
}
-int start_http_listener(struct conf_config *conf,
- const char *listener_override,
- const char *proxy_override)
-{
- struct conf_server *ser;
- for (ser = conf->servers; ser; ser = ser->next)
- {
- char hp[128];
- *hp = '\0';
- if (listener_override)
- {
- strcpy(hp, listener_override);
- listener_override = 0; /* only first server is overriden */
- }
- else
- {
- strcpy(hp, ser->host ? ser->host : "");
- if (ser->port)
- {
- if (*hp)
- strcat(hp, ":");
- sprintf(hp + strlen(hp), "%d", ser->port);
- }
- }
- if (http_init(hp, ser))
- return -1;
-
- *hp = '\0';
- if (proxy_override)
- strcpy(hp, proxy_override);
- else if (ser->proxy_host || ser->proxy_port)
- {
- strcpy(hp, ser->proxy_host ? ser->proxy_host : "");
- if (ser->proxy_port)
- {
- if (*hp)
- strcat(hp, ":");
- sprintf(hp + strlen(hp), "%d", ser->proxy_port);
- }
- }
- if (*hp)
- http_set_proxyaddr(hp, ser->myurl ? ser->myurl : "");
- }
- return 0;
-}
// Master list of connections we're handling events to
-static IOCHAN channel_list = 0;
+static IOCHAN channel_list = 0; /* thread pr */
+
void pazpar2_add_channel(IOCHAN chan)
{
chan->next = channel_list;