+static int yaz_solr_decode_scan_result(ODR o, xmlNodePtr ptr,
+ Z_SRW_scanResponse *scr)
+{
+ xmlNodePtr node;
+ char *pos;
+ int i = 0;
+
+ /* find the actual list */
+ for (node = ptr->children; node; node = node->next)
+ if (node->type == XML_ELEMENT_NODE)
+ {
+ ptr = node;
+ break;
+ }
+
+ scr->num_terms = 0;
+ for (node = ptr->children; node; node = node->next)
+ if (node->type == XML_ELEMENT_NODE &&
+ !strcmp((const char *) node->name, "int"))
+ scr->num_terms++;
+
+ if (scr->num_terms)
+ scr->terms = odr_malloc(o, sizeof(*scr->terms) * scr->num_terms);
+
+ for (node = ptr->children; node; node = node->next)
+ {
+ if (node->type == XML_ELEMENT_NODE &&
+ !strcmp((const char *) node->name, "int"))
+ {
+ Z_SRW_scanTerm *term = scr->terms + i;
+
+ Odr_int count = 0;
+ const char *val = get_facet_term_count(node, &count);
+
+ term->numberOfRecords = odr_intdup(o, count);
+
+ /* if val contains a ^ then it is probably term<^>display term so separate them. This is due to
+ * SOLR not being able to encode them into 2 separate attributes.
+ */
+ pos = strchr(val, '^');
+ if (pos != NULL)
+ {
+ term->displayTerm = odr_strdup(o, pos + 1);
+ *pos = '\0';
+ term->value = odr_strdup(o, val);
+ *pos = '^';
+ }
+ else
+ {
+ term->value = odr_strdup(o, val);
+ term->displayTerm = NULL;
+ }
+ term->whereInList = NULL;
+ i++;
+ }
+ }
+
+ if (scr->num_terms)
+ return 0;
+ return -1;
+}
+#endif
+