X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fsoap.c;h=68ebb9505b1bfb33492f1bb88341a22a1e46b867;hb=8b40c551d14fe46439095674ba19cee2fe9a8e1c;hp=d2f38f8eb4c303ed51297055c2ac61288718fd9b;hpb=dd7de5f04a0de631f98ad9c4774f2111a85388e5;p=yaz-moved-to-github.git diff --git a/src/soap.c b/src/soap.c index d2f38f8..68ebb95 100644 --- a/src/soap.c +++ b/src/soap.c @@ -1,8 +1,15 @@ /* - * Copyright (c) 2002-2004, Index Data. + * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: soap.c,v 1.8 2004-10-02 13:28:26 adam Exp $ + * $Id: soap.c,v 1.11 2005-06-25 15:46:05 adam Exp $ + */ +/** + * \file soap.c + * \brief Implements SOAP + * + * This implements encoding and decoding of SOAP packages using + * Libxml2. */ #include @@ -15,10 +22,10 @@ static const char *soap_v1_1 = "http://schemas.xmlsoap.org/soap/envelope/"; static const char *soap_v1_2 = "http://www.w3.org/2001/06/soap-envelope"; int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, - char **content_buf, int *content_len, - Z_SOAP_Handler *handlers, - const char *encoding, - const char *stylesheet) + char **content_buf, int *content_len, + Z_SOAP_Handler *handlers, + const char *encoding, + const char *stylesheet) { if (o->direction == ODR_DECODE) { @@ -149,7 +156,7 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, { p->which = Z_SOAP_generic; p->u.generic = (Z_SOAP_Generic *) - odr_malloc(o, sizeof(*p->u.generic)); + odr_malloc(o, sizeof(*p->u.generic)); p->u.generic->no = i; p->u.generic->ns = handlers[i].ns; p->u.generic->p = handler_data; @@ -196,26 +203,26 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, handlers[no].client_data, handlers[no].ns); if (ret) - { - xmlFreeDoc(doc); + { + xmlFreeDoc(doc); return ret; - } + } } if (p->which == Z_SOAP_generic && !strcmp(p->ns, "SRU")) { xmlDocSetRootElement(doc, body_ptr->children); - body_ptr->children = 0; - xmlFreeNode(envelope_ptr); + body_ptr->children = 0; + xmlFreeNode(envelope_ptr); + } + if (stylesheet) + { + char *content = odr_malloc(o, strlen(stylesheet) + 40); + + xmlNodePtr pi, ptr = xmlDocGetRootElement(doc); + sprintf(content, "type=\"text/xsl\" href=\"%s\"", stylesheet); + pi = xmlNewPI("xml-stylesheet", content); + xmlAddPrevSibling(ptr, pi); } - if (stylesheet) - { - char *content = odr_malloc(o, strlen(stylesheet) + 40); - - xmlNodePtr pi, ptr = xmlDocGetRootElement(doc); - sprintf(content, "type=\"text/xsl\" href=\"%s\"", stylesheet); - pi = xmlNewPI("xml-stylesheet", content); - xmlAddPrevSibling(ptr, pi); - } if (1) { xmlChar *buf_out; @@ -236,9 +243,9 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, } #else int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, - char **content_buf, int *content_len, - Z_SOAP_Handler *handlers, const char *encoding, - const char *stylesheet) + char **content_buf, int *content_len, + Z_SOAP_Handler *handlers, const char *encoding, + const char *stylesheet) { static char *err_xml = "\n" @@ -261,12 +268,12 @@ int z_soap_codec_enc_xsl(ODR o, Z_SOAP **pp, } #endif int z_soap_codec_enc(ODR o, Z_SOAP **pp, - char **content_buf, int *content_len, - Z_SOAP_Handler *handlers, - const char *encoding) + char **content_buf, int *content_len, + Z_SOAP_Handler *handlers, + const char *encoding) { return z_soap_codec_enc_xsl(o, pp, content_buf, content_len, handlers, - encoding, 0); + encoding, 0); } int z_soap_codec(ODR o, Z_SOAP **pp, @@ -292,3 +299,11 @@ int z_soap_error(ODR o, Z_SOAP *p, return -1; } +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +