X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=client%2Fclient.c;h=0aad3806887267e6ff000cf590cf19a834515324;hb=d4f295af18b4678342ac477c3cbc6705438a035b;hp=038907057f640a160ffc10439bc2ec8530dfb7f3;hpb=0ef85492914ba31cc19d4ca65682c4d61fd69145;p=yaz-moved-to-github.git diff --git a/client/client.c b/client/client.c index 0389070..0aad380 100644 --- a/client/client.c +++ b/client/client.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2004, Index Data * See the file LICENSE for details. * - * $Id: client.c,v 1.248 2004-09-03 18:55:59 adam Exp $ + * $Id: client.c,v 1.254 2004-11-01 21:19:08 adam Exp $ */ #include @@ -115,7 +115,8 @@ static char *last_open_command = NULL; static int auto_reconnect = 0; static Odr_bitmask z3950_options; static int z3950_version = 3; - +static int scan_stepSize = 0; +static int scan_position = 1; static char cur_host[200]; typedef enum { @@ -584,6 +585,8 @@ int session_connect(const char *arg) return 0; } #if HAVE_XML2 + if (conn->protocol == PROTO_HTTP) + queryType = QueryType_CQL; #else if (conn->protocol == PROTO_HTTP) { @@ -1259,14 +1262,31 @@ static int send_SRW_searchRequest(const char *arg) setno = 1; /* save this for later .. when fetching individual records */ - srw_sr = sr = yaz_srw_get(srw_sr_odr_out, Z_SRW_searchRetrieve_request); - sr->u.request->query_type = Z_SRW_query_type_cql; - sr->u.request->query.cql = odr_strdup(srw_sr_odr_out, arg); - + srw_sr = yaz_srw_get(srw_sr_odr_out, Z_SRW_searchRetrieve_request); + + /* regular request .. */ sr = yaz_srw_get(out, Z_SRW_searchRetrieve_request); - sr->u.request->query_type = Z_SRW_query_type_cql; - sr->u.request->query.cql = odr_strdup(out, arg); + switch(queryType) + { + case QueryType_CQL: + srw_sr->u.request->query_type = Z_SRW_query_type_cql; + srw_sr->u.request->query.cql = odr_strdup(srw_sr_odr_out, arg); + + sr->u.request->query_type = Z_SRW_query_type_cql; + sr->u.request->query.cql = odr_strdup(out, arg); + break; + case QueryType_Prefix: + srw_sr->u.request->query_type = Z_SRW_query_type_pqf; + srw_sr->u.request->query.pqf = odr_strdup(srw_sr_odr_out, arg); + + sr->u.request->query_type = Z_SRW_query_type_pqf; + sr->u.request->query.pqf = odr_strdup(out, arg); + break; + default: + printf ("Only CQL and PQF supported in SRW\n"); + return 0; + } sr->u.request->maximumRecords = odr_intdup(out, 0); if (record_schema) @@ -2619,6 +2639,7 @@ int send_scanrequest(const char *query, int pp, int num, const char *term) req->databaseNames = databaseNames; req->numberOfTermsRequested = # req->preferredPositionInResponse = &pp; + req->stepSize = odr_intdup(out, scan_stepSize); send_apdu(apdu); return 2; } @@ -2781,6 +2802,20 @@ int cmd_sort_newset (const char *arg) return cmd_sort_generic (arg, 1); } +int cmd_scanstep(const char *arg) +{ + scan_stepSize = atoi(arg); + return 0; +} + +int cmd_scanpos(const char *arg) +{ + int r = sscanf(arg, "%d", &scan_position); + if (r == 0) + scan_position = 1; + return 0; +} + int cmd_scan(const char *arg) { if (only_z3950()) @@ -2802,7 +2837,7 @@ int cmd_scan(const char *arg) if (*arg) { strcpy (last_scan_query, arg); - if (send_scanrequest(arg, 1, 20, 0) < 0) + if (send_scanrequest(arg, scan_position, 20, 0) < 0) return 0; } else @@ -3675,6 +3710,20 @@ int cmd_set_otherinfo(const char* args) return 0; } +int cmd_sleep(const char* args ) +{ + int sec=atoi(args); + if( sec > 0 ) { +#ifdef WIN32 + Sleep(sec*1000); +#else + sleep(sec); +#endif + printf("Done sleeping %d seconds\n", sec); + } + return 1; +} + int cmd_list_otherinfo(const char* args) { int i; @@ -3826,6 +3875,8 @@ static struct { {"base", cmd_base, "",NULL,0,NULL}, {"show", cmd_show, "['+'<#recs>['+']]",NULL,0,NULL}, {"scan", cmd_scan, "",NULL,0,NULL}, + {"scanstep", cmd_scanstep, "",NULL,0,NULL}, + {"scanpos", cmd_scanpos, "",NULL,0,NULL}, {"sort", cmd_sort, " ...",NULL,0,NULL}, {"sort+", cmd_sort_newset, " ...",NULL,0,NULL}, {"authentication", cmd_authentication, "",NULL,0,NULL}, @@ -3859,7 +3910,8 @@ static struct { {"set_cclfile", cmd_set_cclfile," ",NULL,1,NULL}, {"set_cqlfile", cmd_set_cqlfile," ",NULL,1,NULL}, {"set_auto_reconnect", cmd_set_auto_reconnect," on|off",complete_auto_reconnect,1,NULL}, - {"set_otherinfo", cmd_set_otherinfo," ",NULL,0,NULL}, + {"set_otherinfo", cmd_set_otherinfo," ",NULL,0,NULL}, + {"sleep", cmd_sleep,"",NULL,0,NULL}, {"register_oid", cmd_register_oid," ",NULL,0,NULL}, {"push_command", cmd_push_command,"",command_generator,0,NULL}, {"register_tab", cmd_register_tab," ",command_generator,0,NULL},