-/*
- * Copyright (C) 1995-2005, Index Data ApS
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2012 Index Data
* See the file LICENSE for details.
- *
- * $Id: soap.c,v 1.14 2006-07-06 10:17:54 adam Exp $
*/
/**
* \file soap.c
* This implements encoding and decoding of SOAP packages using
* Libxml2.
*/
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
#include <yaz/soap.h>
+#include <yaz/match_glob.h>
#if YAZ_HAVE_XML2
#include <libxml/parser.h>
/* check for SRU root node match */
for (i = 0; handlers[i].ns; i++)
- if (!xmlStrcmp(ptr->ns->href, BAD_CAST handlers[i].ns))
+ if (yaz_match_glob(handlers[i].ns, (const char *)ptr->ns->href))
break;
if (handlers[i].ns)
{
p_top_tmp.children = ptr;
ret = (*handlers[i].f)(o, &p_top_tmp, &handler_data,
handlers[i].client_data,
- handlers[i].ns);
+ (const char *)ptr->ns->href);
if (ret || !handler_data)
z_soap_error(o, p, "SOAP-ENV:Client",
}
else
{
+ const char *ns = (const char *) ptr->ns->href;
for (i = 0; handlers[i].ns; i++)
- if (!xmlStrcmp(ptr->ns->href, BAD_CAST handlers[i].ns))
+ {
+ fprintf(stderr, "checking globns=%s ns=%s\n",
+ handlers[i].ns, ns);
+ if (yaz_match_glob(handlers[i].ns, ns))
break;
+ }
if (handlers[i].ns)
{
void *handler_data = 0;
ret = (*handlers[i].f)(o, pptr, &handler_data,
- handlers[i].client_data,
- handlers[i].ns);
+ handlers[i].client_data, ns);
if (ret || !handler_data)
z_soap_error(o, p, "SOAP-ENV:Client",
"SOAP Handler returned error", 0);
else
{
ret = z_soap_error(o, p, "SOAP-ENV:Client",
- "No handler for NS",
- (const char *)ptr->ns->href);
+ "No handler for NS", ns);
}
}
xmlFreeDoc(doc);
}
if (stylesheet)
{
- char *content = odr_malloc(o, strlen(stylesheet) + 40);
+ char *content = (char *) odr_malloc(o, strlen(stylesheet) + 40);
xmlNodePtr pi, ptr = xmlDocGetRootElement(doc);
sprintf(content, "type=\"text/xsl\" href=\"%s\"", stylesheet);
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab