X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=src%2Frpn2solr.c;h=f790ea2ae75defd6e9b2b056d3be7585defef920;hp=332ae88c9d09d7fbc4c6581c922d3538b7ad03bf;hb=d161ec774d6250a6814918f68559560d5c9db8cc;hpb=d93ce9819697b5724be8c9a02e41d0eaf818f13b diff --git a/src/rpn2solr.c b/src/rpn2solr.c index 332ae88..f790ea2 100644 --- a/src/rpn2solr.c +++ b/src/rpn2solr.c @@ -393,21 +393,32 @@ static int rpn2solr_structure(solr_transform_t ct, } } +int solr_transform_rpn2solr_stream_r(solr_transform_t ct, + WRBUF addinfo, + void (*pr)(const char *buf, void *client_data), + void *client_data, + Z_RPNQuery *q) +{ + int r = rpn2solr_structure(ct, pr, client_data, q->RPNStructure, + /* nested*/ 0, addinfo); + if (!r) + wrbuf_rewind(addinfo); + return r; +} + int solr_transform_rpn2solr_stream(solr_transform_t ct, void (*pr)(const char *buf, void *client_data), void *client_data, Z_RPNQuery *q) { - int r; WRBUF w = wrbuf_alloc(); - r = rpn2solr_structure(ct, pr, client_data, q->RPNStructure, 0, w); + int r = solr_transform_rpn2solr_stream_r(ct, w, pr, client_data, q); if (r) - solr_transform_set_error(ct, r, 0); + solr_transform_set_error(ct, r, wrbuf_len(w) ? wrbuf_cstr(w) : 0); wrbuf_destroy(w); return r; } - int solr_transform_rpn2solr_wrbuf(solr_transform_t ct, WRBUF w, Z_RPNQuery *q)