- if (r == 0)
- {
- ccl_wrbuf = wrbuf_alloc();
- wrbuf_puts(ccl_wrbuf, ccl_buf);
-
- WRBUF sru_sortkeys_wrbuf = wrbuf_alloc();
-
- cql_sortby_to_sortkeys(cn, wrbuf_vp_puts, sru_sortkeys_wrbuf);
- WRBUF sort_spec_wrbuf = wrbuf_alloc();
- yaz_srw_sortkeys_to_sort_spec(wrbuf_cstr(sru_sortkeys_wrbuf),
- sort_spec_wrbuf);
- wrbuf_destroy(sru_sortkeys_wrbuf);
-
- yaz_tok_cfg_t tc = yaz_tok_cfg_create();
- yaz_tok_parse_t tp =
- yaz_tok_parse_buf(tc, wrbuf_cstr(sort_spec_wrbuf));
- yaz_tok_cfg_destroy(tc);
-
- /* go through sortspec and map fields */
- int token = yaz_tok_move(tp);
- while (token != YAZ_TOK_EOF)
- {
- if (token == YAZ_TOK_STRING)
- {
- const char *field = yaz_tok_parse_string(tp);
- std::map<std::string,std::string>::iterator it;
- it = b->sptr->sortmap.find(field);
- if (it != b->sptr->sortmap.end())
- sortkeys += it->second;
- else
- sortkeys += field;
- }
- sortkeys += " ";
- token = yaz_tok_move(tp);
- if (token == YAZ_TOK_STRING)
- {
- sortkeys += yaz_tok_parse_string(tp);
- }
- if (token != YAZ_TOK_EOF)
- {
- sortkeys += " ";
- token = yaz_tok_move(tp);
- }
- }
- yaz_tok_parse_destroy(tp);
- wrbuf_destroy(sort_spec_wrbuf);
- }
- cql_parser_destroy(cp);