X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=client%2Fclient.c;h=64de44b0a6071de250a09d4c16e90e6f7c84b533;hp=d8e78b9710a43cdeffafa8fd2832157e821dd13a;hb=799ea46466fc7433ce75d7c66d796b5a0997f59c;hpb=2bf750fa7a6e28d9ebb1fabd6325ecf4cfac7e49 diff --git a/client/client.c b/client/client.c index d8e78b9..64de44b 100644 --- a/client/client.c +++ b/client/client.c @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2012 Index Data + * Copyright (C) 1995-2013 Index Data * See the file LICENSE for details. */ /** \file client.c @@ -125,7 +125,7 @@ static char ccl_fields[512] = "default.bib"; static char cql_fields[512] = "/usr/local/share/yaz/etc/pqf.properties"; static char *esPackageName = 0; static char *yazProxy = 0; -static int kilobytes = 1024; +static int kilobytes = 64 * 1024; static char *negotiationCharset = 0; static int negotiationCharsetRecords = 1; static int negotiationCharsetVersion = 3; @@ -702,10 +702,7 @@ static int session_connect_base(const char *arg, const char **basep) strncpy(type_and_host, arg, sizeof(type_and_host)-1); type_and_host[sizeof(type_and_host)-1] = '\0'; - if (yazProxy) - conn = cs_create_host(yazProxy, 1, &add); - else - conn = cs_create_host(arg, 1, &add); + conn = cs_create_host_proxy(arg, 1, &add, yazProxy); if (!conn) { printf("Could not resolve address %s\n", arg); @@ -926,13 +923,13 @@ static void display_record(Z_External *r) const char *octet_buf = (const char*)r->u.octet_aligned->buf; size_t octet_len = r->u.octet_aligned->len; if (!oid_oidcmp(oid, yaz_oid_recsyn_xml) - || !oid_oidcmp(oid, yaz_oid_recsyn_xml) + || !oid_oidcmp(oid, yaz_oid_recsyn_application_xml) || !oid_oidcmp(oid, yaz_oid_recsyn_html)) { print_xml_record(octet_buf, octet_len); } - else if (yaz_oid_is_iso2709(oid)) + else { const char *result; size_t rlen; @@ -978,17 +975,14 @@ static void display_record(Z_External *r) } else { - printf("bad MARC. Dumping as it is:\n"); + if (yaz_oid_is_iso2709(oid)) + printf("bad MARC. Dumping as it is:\n"); print_record(octet_buf, octet_len); } yaz_marc_destroy(mt); if (cd) yaz_iconv_close(cd); } - else - { - print_record(octet_buf, octet_len); - } marc_file_write(octet_buf, r->u.octet_aligned->len); } else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_sutrs)) @@ -1423,12 +1417,12 @@ static int send_SRW_scanRequest(const char *arg, Odr_int *pos, int num) switch (queryType) { case QueryType_CQL: - sr->u.scan_request->query_type = Z_SRW_query_type_cql; - sr->u.scan_request->scanClause.cql = encode_SRW_term(out, arg); + sr->u.scan_request->queryType = "cql"; + sr->u.scan_request->scanClause = encode_SRW_term(out, arg); break; case QueryType_Prefix: - sr->u.scan_request->query_type = Z_SRW_query_type_pqf; - sr->u.scan_request->scanClause.pqf = encode_SRW_term(out, arg); + sr->u.scan_request->queryType = "pqf"; + sr->u.scan_request->scanClause = encode_SRW_term(out, arg); break; default: printf("Only CQL and PQF supported in SRW\n"); @@ -1462,18 +1456,18 @@ static int send_SRW_searchRequest(const char *arg) switch (queryType) { case QueryType_CQL: - srw_sr->u.request->query_type = Z_SRW_query_type_cql; - srw_sr->u.request->query.cql = encode_SRW_term(srw_sr_odr_out, arg); + srw_sr->u.request->queryType = "cql"; + srw_sr->u.request->query = encode_SRW_term(srw_sr_odr_out, arg); - sr->u.request->query_type = Z_SRW_query_type_cql; - sr->u.request->query.cql = encode_SRW_term(srw_sr_odr_out, arg); + sr->u.request->queryType = "cql"; + sr->u.request->query = encode_SRW_term(srw_sr_odr_out, arg); break; case QueryType_Prefix: - srw_sr->u.request->query_type = Z_SRW_query_type_pqf; - srw_sr->u.request->query.pqf = encode_SRW_term(srw_sr_odr_out, arg); + srw_sr->u.request->queryType = "pqf"; + srw_sr->u.request->query = encode_SRW_term(srw_sr_odr_out, arg); - sr->u.request->query_type = Z_SRW_query_type_pqf; - sr->u.request->query.pqf = encode_SRW_term(srw_sr_odr_out, arg); + sr->u.request->queryType = "pqf"; + sr->u.request->query = encode_SRW_term(srw_sr_odr_out, arg); break; default: printf("Only CQL and PQF supported in SRW\n"); @@ -1529,7 +1523,7 @@ static int send_Z3950_searchRequest(const char *arg) printf("CCL ERROR: %s\n", ccl_err_msg(error)); return 0; } - } + } else if (myQueryType == QueryType_CQL2RPN) { /* ### All this code should be wrapped in a utility function */ @@ -1698,11 +1692,7 @@ static void display_facet(Z_FacetField *facet) { Z_AttributeList *al = facet->attributes; struct yaz_facet_attr attr_values; - attr_values.errcode = 0; - attr_values.limit = -1; - attr_values.useattr = "NONE"; - attr_values.relation = "default"; - + yaz_facet_attr_init(&attr_values); yaz_facet_attr_get_z_attributes(al, &attr_values); if (!attr_values.errcode) { @@ -2130,6 +2120,7 @@ static Z_External *create_external_itemRequest(void) } else { + item_request_buf = odr_getbuf (out, &item_request_size, 0); r = (Z_External *) odr_malloc(out, sizeof(*r)); r->direct_reference = odr_oiddup(out, yaz_oid_general_isoill_1); r->indirect_reference = 0; @@ -3019,7 +3010,7 @@ static int parse_show_args(const char *arg_c, char *setstring, sprintf(setstring, "%d", setnumber); else *setstring = '\0'; - + token_len = check_token(arg_c, "format"); if (token_len) { @@ -3284,10 +3275,10 @@ static int cmd_cancel(const char *arg) apdu->u.triggerResourceControlRequest; bool_t rfalse = 0; char command[16]; - + *command = '\0'; sscanf(arg, "%15s", command); - + if (only_z3950()) return 0; if (session_initResponse && @@ -3300,7 +3291,7 @@ static int cmd_cancel(const char *arg) *req->requestedAction = Z_TriggerResourceControlRequest_cancel; req->resultSetWanted = &rfalse; req->referenceId = set_refid(out); - + send_apdu(apdu); printf("Sent cancel request\n"); if (!strcmp(command, "wait")) @@ -3610,7 +3601,7 @@ static int cmd_scan_common(const char *set, const char *arg) scan_query = last_scan_query; scan_term = last_scan_line; } - else + else { strcpy(last_scan_query, arg); scan_query = arg; @@ -4084,7 +4075,7 @@ static int cmd_set_auto_reconnect(const char* arg) printf("Error use on or off\n"); return 1; } - + if (auto_reconnect) printf("Set auto reconnect enabled.\n"); else @@ -4277,7 +4268,7 @@ static void initialize(const char *rc_file) fprintf(stderr, "failed to allocate ODR streams\n"); exit(1); } - + strcpy(scan_position, "1"); setvbuf(stdout, 0, _IONBF, 0); @@ -4447,9 +4438,11 @@ static void http_response(Z_HTTP_Response *hres) if (ret == 0 && sr->which == Z_SRW_searchRetrieve_response) handle_srw_response(sr->u.response); + else if (ret == 0 && sr->which == Z_SRW_scan_response) + handle_srw_scan_response(sr->u.scan_response); else { - printf("Decoding of SOLR package failed\n"); + printf("Decoding of Solr package failed\n"); ret = -1; } odr_destroy(o); @@ -4458,10 +4451,10 @@ static void http_response(Z_HTTP_Response *hres) { Z_SOAP *soap_package = 0; ODR o = odr_createmem(ODR_DECODE); - Z_SOAP_Handler soap_handlers[4] = { - {YAZ_XMLNS_SRU_v1_1, 0, (Z_SOAP_fun) yaz_srw_codec}, - {YAZ_XMLNS_SRU_v2_response, 0, (Z_SOAP_fun) yaz_srw_codec}, + Z_SOAP_Handler soap_handlers[] = { + {YAZ_XMLNS_SRU_v2_mask, 0, (Z_SOAP_fun) yaz_srw_codec}, {YAZ_XMLNS_UPDATE_v0_9, 0, (Z_SOAP_fun) yaz_ucp_codec}, + {YAZ_XMLNS_SRU_v1_response, 0, (Z_SOAP_fun) yaz_srw_codec}, {0, 0, 0} }; ret = z_soap_codec(o, &soap_package, @@ -4951,7 +4944,7 @@ static int cmd_wait_response(const char *arg) { int i; int wait_for = atoi(arg); - if (wait_for < 1) + if (wait_for < 1) wait_for = 1; for (i = 0 ; i < wait_for; ++i )