+static const char *get_strategy_plus_sort(struct client *l, const char *field)
+{
+ struct session_database *sdb = client_get_database(l);
+ struct setting *s;
+
+ const char *strategy_plus_sort = 0;
+
+ for (s = sdb->settings[PZ_SORTMAP]; s; s = s->next)
+ {
+ char *p = strchr(s->name + 3, ':');
+ if (!p)
+ {
+ yaz_log(YLOG_WARN, "Malformed sortmap name: %s", s->name);
+ continue;
+ }
+ p++;
+ if (!strcmp(p, field))
+ {
+ strategy_plus_sort = s->value;
+ break;
+ }
+ }
+ return strategy_plus_sort;
+}
+
+int client_parse_init(struct client *cl, int same_search)
+{
+ cl->same_search = same_search;
+ return 0;
+}
+
+int client_parse_range(struct client *cl, const char *startrecs, const char *maxrecs)
+{
+ if (maxrecs && atoi(maxrecs) != cl->maxrecs)
+ {
+ cl->same_search = 0;
+ cl->maxrecs = atoi(maxrecs);
+ }
+
+ if (startrecs && atoi(startrecs) != cl->startrecs)
+ {
+ cl->same_search = 0;
+ cl->startrecs = atoi(startrecs);
+ }
+ return 0;
+}
+
+int client_start_search(struct client *cl)