echoedSearchRetrieveRequest support YAZ-776
[yaz-moved-to-github.git] / src / srw.c
index 5539408..431696b 100644 (file)
--- a/src/srw.c
+++ b/src/srw.c
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2013 Index Data
+ * Copyright (C) Index Data
  * See the file LICENSE for details.
  */
 /**
@@ -19,6 +19,7 @@
 #include <libxml/tree.h>
 #include <assert.h>
 #include <yaz/facet.h>
+#include <yaz/proto.h>
 #include "sru-p.h"
 
 char *yaz_negotiate_sru_version(char *input_ver)
@@ -307,7 +308,7 @@ static Z_FacetField *yaz_sru_proxy_decode_facet_field(ODR odr, xmlNodePtr ptr)
     const char* name = yaz_element_attribute_value_get(ptr, "facet", "code");
     yaz_log(YLOG_DEBUG, "sru-proxy facet type: %s", name);
 
-    list = yaz_use_attribute_create(odr, name);
+    list = zget_AttributeList_use_string(odr, name);
     for (node = ptr->children; node; node = node->next) {
         if (yaz_match_xsd_element(node, "facetvalue"))
             num_terms++;
@@ -656,6 +657,8 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
                 else if (yaz_match_xsd_string(ptr, "facetSort", o,
                                               (char**) &facetSort))
                     ;
+                else
+                    ;
             }
             if (!req->query)
             {
@@ -982,6 +985,16 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
             }
             add_xsd_integer(ptr, "nextRecordPosition",
                             res->nextRecordPosition);
+            if ((*p)->extra_args)
+            {
+                xmlNode *p1 =
+                    xmlNewChild(ptr, 0, BAD_CAST "echoedSearchRetrieveRequest",
+                                0);
+                Z_SRW_extra_arg *ea = (*p)->extra_args;
+                for (; ea; ea = ea->next)
+                    add_xsd_string(p1, ea->name, ea->value);
+
+            }
             if (res->num_diagnostics)
             {
                 xmlNodePtr rptr = xmlNewChild(ptr, 0, BAD_CAST "diagnostics",