X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fzoom-c.c;h=7795fb57607aa687faf3f457d7f01c9b88bdb161;hb=5451196efde939261211e1c15e0bc373b527d33c;hp=3e5c65e1da7e14c19a30eaab7619b49e3ba02b3e;hpb=1b74d7ac0e734e7740dae73ea340d24334960bc5;p=yaz-moved-to-github.git diff --git a/src/zoom-c.c b/src/zoom-c.c index 3e5c65e..7795fb5 100644 --- a/src/zoom-c.c +++ b/src/zoom-c.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2005, Index Data ApS * See the file LICENSE for details. * - * $Id: zoom-c.c,v 1.48 2005-11-01 15:08:02 adam Exp $ + * $Id: zoom-c.c,v 1.51 2005-11-08 16:52:29 mike Exp $ */ /** * \file zoom-c.c @@ -644,17 +644,34 @@ ZOOM_connection_search(ZOOM_connection c, ZOOM_query q) return r; } +/* + * This is the old result-set sorting API, which is maintained only + * for the sake of binary compatibility. There is no reason ever to + * use this rather than ZOOM_resultset_sort1(). + */ ZOOM_API(void) - ZOOM_resultset_sort(ZOOM_resultset r, - const char *sort_type, const char *sort_spec) +ZOOM_resultset_sort(ZOOM_resultset r, + const char *sort_type, const char *sort_spec) +{ + (void) ZOOM_resultset_sort1(r, sort_type, sort_spec); +} + +ZOOM_API(int) +ZOOM_resultset_sort1(ZOOM_resultset r, + const char *sort_type, const char *sort_spec) { ZOOM_connection c = r->connection; ZOOM_task task; + ZOOM_query newq; + + newq = ZOOM_query_create(); + if (ZOOM_query_sortby(newq, sort_spec) < 0) + return -1; yaz_log(log_api, "%p ZOOM_resultset_sort r=%p sort_type=%s sort_spec=%s", r, r, sort_type, sort_spec); if (!c) - return; + return 0; if (c->host_port && c->proto == PROTO_HTTP) { @@ -674,8 +691,7 @@ ZOOM_API(void) ZOOM_resultset_cache_reset(r); task = ZOOM_connection_add_task (c, ZOOM_TASK_SORT); task->u.sort.resultset = r; - task->u.sort.q = ZOOM_query_create(); - ZOOM_query_sortby(task->u.sort.q, sort_spec); + task->u.sort.q = newq; ZOOM_resultset_addref (r); @@ -684,6 +700,8 @@ ZOOM_API(void) while (ZOOM_event (1, &c)) ; } + + return 0; } ZOOM_API(void) @@ -1045,7 +1063,7 @@ static zoom_ret ZOOM_connection_send_init (ZOOM_connection c) ZOOM_options_get(c->options, "implementationName"), odr_prepend(c->odr_out, "ZOOM-C", ireq->implementationName)); - version = odr_strdup(c->odr_out, "$Revision: 1.48 $"); + version = odr_strdup(c->odr_out, "$Revision: 1.51 $"); if (strlen(version) > 10) /* check for unexpanded CVS strings */ version[strlen(version)-2] = '\0'; ireq->implementationVersion = odr_prepend(c->odr_out, @@ -2082,7 +2100,7 @@ static void handle_searchResult(ZOOM_connection c, ZOOM_resultset resultset, if (sr->num) ZOOM_options_set_int( - resultset->options, "SearchResult.size", sr->num); + resultset->options, "searchresult.size", sr->num); for (j = 0; j < sr->num; j++) { @@ -2090,12 +2108,12 @@ static void handle_searchResult(ZOOM_connection c, ZOOM_resultset resultset, ext->u.searchResult1->elements[j]; char pref[80]; - sprintf(pref, "SearchResult.%d", j); + sprintf(pref, "searchresult.%d", j); if (ent->subqueryId) { char opt_name[80]; - sprintf(opt_name, "%s.subqueryId", pref); + sprintf(opt_name, "%s.id", pref); ZOOM_options_set(resultset->options, opt_name, ent->subqueryId); } @@ -2123,7 +2141,7 @@ static void handle_searchResult(ZOOM_connection c, ZOOM_resultset resultset, if (ent->subqueryCount) { char opt_name[80]; - sprintf(opt_name, "%s.subqueryCount", pref); + sprintf(opt_name, "%s.count", pref); ZOOM_options_set_int(resultset->options, opt_name, *ent->subqueryCount); }