+ Z_Query *query;
+ *str = 0;
+ if (!m_p->buf)
+ return;
+ odr_setbuf(m_p->odr_decode, m_p->buf, m_p->len, 0);
+ if (!z_Query(m_p->odr_decode, &query, 0, 0))
+ return;
+ WRBUF wbuf = wrbuf_alloc();
+ yaz_query_to_wrbuf(wbuf, query);
+ if (wrbuf_len(wbuf) > len-1)
+ {
+ memcpy(str, wrbuf_buf(wbuf), len-1);
+ str[len-1] = '\0';
+ }
+ else
+ strcpy(str, wrbuf_cstr(wbuf));
+ wrbuf_destroy(wbuf);
+ odr_reset(m_p->odr_decode);
+}