Make yaz_negotiate_sru_version internal
[yaz-moved-to-github.git] / src / srw.c
index c88ace0..4013458 100644 (file)
--- a/src/srw.c
+++ b/src/srw.c
@@ -852,6 +852,7 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
                 odr_malloc(o, sizeof(*res));
 
             res->numberOfRecords = 0;
+            res->resultCountPrecision = 0;
             res->resultSetId = 0;
             res->resultSetIdleTime = 0;
             res->records = 0;
@@ -874,6 +875,9 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
                 else if (match_xsd_integer(ptr, "numberOfRecords", o,
                                            &res->numberOfRecords))
                     ;
+                else if (match_xsd_string(ptr, "resultCountPrecision", o,
+                                           &res->resultCountPrecision))
+                    ;
                 else if (match_xsd_string(ptr, "resultSetId", o,
                                           &res->resultSetId))
                     ;
@@ -1066,9 +1070,7 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
             ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
             xmlSetNs(ptr, ns_srw);
 
-            if (!version2)
-                add_xsd_string(ptr, "version", (*p)->srw_version);
-
+            add_xsd_string(ptr, "version", (*p)->srw_version);
             if (version2)
             {
                 if (queryType)
@@ -1119,8 +1121,7 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
             ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
             xmlSetNs(ptr, ns_srw);
 
-            if (!version2)
-                add_xsd_string(ptr, "version", (*p)->srw_version);
+            add_xsd_string(ptr, "version", (*p)->srw_version);
             add_xsd_integer(ptr, "numberOfRecords", res->numberOfRecords);
             add_xsd_string(ptr, "resultSetId", res->resultSetId);
             add_xsd_integer(ptr,
@@ -1142,6 +1143,9 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
                 yaz_srw_diagnostics(o, rptr, &res->diagnostics,
                                     &res->num_diagnostics, client_data, ns);
             }
+            if (res->resultCountPrecision)
+                add_xsd_string(ptr, "resultCountPrecision",
+                               res->resultCountPrecision);
         }
         else if ((*p)->which == Z_SRW_explain_request)
         {
@@ -1150,8 +1154,7 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
             ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
             xmlSetNs(ptr, ns_srw);
 
-            if (!version2)
-                add_xsd_string(ptr, "version", (*p)->srw_version);
+            add_xsd_string(ptr, "version", (*p)->srw_version);
             if (version2)
             {
                 add_xsd_string(ptr, "recordXMLEscaping", req->recordPacking);
@@ -1194,8 +1197,7 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
             ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
             xmlSetNs(ptr, ns_srw);
 
-            if (!version2)
-                add_xsd_string(ptr, "version", (*p)->srw_version);
+            add_xsd_string(ptr, "version", (*p)->srw_version);
 
             if (version2)
             {
@@ -1224,9 +1226,7 @@ int yaz_srw_codec(ODR o, void * vptr, Z_SRW_PDU **handler_data,
             ns_srw = xmlNewNs(ptr, BAD_CAST ns, BAD_CAST "zs");
             xmlSetNs(ptr, ns_srw);
 
-            if (!version2)
-                add_xsd_string(ptr, "version", (*p)->srw_version);
-
+            add_xsd_string(ptr, "version", (*p)->srw_version);
             if (res->num_terms)
             {
                 xmlNodePtr rptr = xmlNewChild(ptr, 0, BAD_CAST "terms", 0);