/*
- * Copyright (C) 1995-2005, Index Data ApS
+ * Copyright (C) 1995-2006, Index Data ApS
* See the file LICENSE for details.
*
* NT threaded server code by
* Chas Woodfield, Fretwell Downing Informatics.
*
- * $Id: statserv.c,v 1.36 2006-03-22 17:58:32 mike Exp $
+ * $Id: statserv.c,v 1.39 2006-07-06 10:17:54 adam Exp $
*/
/**
#include <pwd.h>
#endif
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
#include <libxml/parser.h>
#include <libxml/tree.h>
#include <libxml/xinclude.h>
static int add_listener(char *where, int listen_id);
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
static xmlDocPtr xml_config_doc = 0;
#endif
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
static xmlNodePtr xml_config_get_root()
{
xmlNodePtr ptr = 0;
}
#endif
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
static char *nmem_dup_xml_content(NMEM n, xmlNodePtr ptr)
{
unsigned char *cp;
n->directory = 0;
n->docpath = 0;
n->stylesheet = 0;
+#if YAZ_HAVE_XML2
+ n->retrieval = yaz_retrieval_create();
+#endif
return n;
}
*cp = '\0';
host = vhost;
}
- assoc->cql_transform = 0;
- assoc->server_node_ptr = 0;
- assoc->docpath = 0;
- assoc->stylesheet = 0;
+ assoc->server = 0;
if (control_block.xml_config[0])
{
struct gfs_server *gfs;
xfree(assoc->init);
assoc->init = 0;
}
- assoc->docpath = gfs->docpath;
- assoc->stylesheet = gfs->stylesheet;
- assoc->cql_transform = gfs->cql_transform;
- assoc->server_node_ptr = gfs->server_node_ptr;
+ assoc->server = gfs;
assoc->last_control = &gfs->cb;
statserv_setcontrol(&gfs->cb);
gfs_server_chdir(gfs);
{
struct gfs_server **gfsp = &gfs_server_list;
struct gfs_listen **gfslp = &gfs_listen_list;
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
xmlNodePtr ptr = xml_config_get_root();
if (!ptr)
{
; /* being processed separately */
}
+ else if (!strcmp((const char *) ptr->name, "retrievalinfo"))
+ {
+ if (yaz_retrieval_configure((*gfsp)->retrieval, ptr))
+ {
+ yaz_log(YLOG_FATAL, "%s in config %s",
+ yaz_retrieval_get_error((*gfsp)->retrieval),
+ control_block.xml_config);
+ exit(1);
+ }
+ }
else
{
yaz_log(YLOG_FATAL, "Unknown element '%s' in config %s",
#endif
gfs_nmem = nmem_create();
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
if (control_block.xml_config[0] == '\0')
return;
static void xml_config_close()
{
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
if (xml_config_doc)
{
xmlFreeDoc(xml_config_doc);
option_copy(control_block.pid_fname, arg);
break;
case 'f':
-#if HAVE_XML2
+#if YAZ_HAVE_XML2
option_copy(control_block.xml_config, arg);
#else
fprintf(stderr, "%s: Option -f unsupported since YAZ is compiled without Libxml2 support\n", me);