X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=client%2Fclient.c;h=59c48a06d920bc89cd3e298e37a6ae7b7013530f;hb=0c4bd81e2e56724de1adbbc753f812328fb20e3c;hp=26195448e8690c9924b2f24153ffda45dfeedc7c;hpb=8cd0ea1bdddd37a48526a3e52045cada428379c5;p=yaz-moved-to-github.git diff --git a/client/client.c b/client/client.c index 2619544..59c48a0 100644 --- a/client/client.c +++ b/client/client.c @@ -2,7 +2,7 @@ * Copyright (C) 1995-2007, Index Data ApS * See the file LICENSE for details. * - * $Id: client.c,v 1.344 2007-06-03 14:59:34 adam Exp $ + * $Id: client.c,v 1.351 2007-08-24 13:25:14 adam Exp $ */ /** \file client.c * \brief yaz-client program @@ -90,7 +90,8 @@ static file_history_t file_history = 0; -static char *sru_method = "soap"; +static char sru_method[10] = "soap"; +static char sru_version[10] = "1.2"; static char *codeset = 0; /* character set for output */ static int hex_dump = 0; static char *dump_file_prefix = 0; @@ -171,9 +172,6 @@ static cql_transform_t cqltrans = 0; /* CQL context-set handle */ int rl_attempted_completion_over = 0; #endif -/* set this one to 1, to avoid decode of unknown MARCs */ -#define AVOID_MARC_DECODE 1 - #define maxOtherInfosSupported 10 struct eoi { Odr_oid oid[OID_SIZE]; @@ -1276,15 +1274,15 @@ static int send_srw(Z_SRW_PDU *sr) gdu = z_get_HTTP_Request_host_path(out, host_port, path); - if (!strcmp(sru_method, "get")) + if (!yaz_matchstr(sru_method, "get")) { yaz_sru_get_encode(gdu->u.HTTP_Request, sr, out, charset); } - else if (!strcmp(sru_method, "post")) + else if (!yaz_matchstr(sru_method, "post")) { yaz_sru_post_encode(gdu->u.HTTP_Request, sr, out, charset); } - else if (!strcmp(sru_method, "soap")) + else if (!yaz_matchstr(sru_method, "soap")) { yaz_sru_soap_encode(gdu->u.HTTP_Request, sr, out, charset); } @@ -1347,7 +1345,7 @@ static int send_SRW_scanRequest(const char *arg, int pos, int num) Z_SRW_PDU *sr = 0; /* regular requestse .. */ - sr = yaz_srw_get(out, Z_SRW_scan_request); + sr = yaz_srw_get_pdu(out, Z_SRW_scan_request, sru_version); switch(queryType) { @@ -1382,10 +1380,11 @@ static int send_SRW_searchRequest(const char *arg) setno = 1; /* save this for later .. when fetching individual records */ - srw_sr = yaz_srw_get(srw_sr_odr_out, Z_SRW_searchRetrieve_request); + srw_sr = yaz_srw_get_pdu(srw_sr_odr_out, Z_SRW_searchRetrieve_request, + sru_version); /* regular request .. */ - sr = yaz_srw_get(out, Z_SRW_searchRetrieve_request); + sr = yaz_srw_get_pdu(out, Z_SRW_searchRetrieve_request, sru_version); switch(queryType) { @@ -1918,6 +1917,20 @@ void process_ESResponse(Z_ExtendedServicesResponse *res) } } } + if (ext->which == Z_External_itemOrder) + { + Z_IOTaskPackage *otp = ext->u.itemOrder->u.taskPackage; + if (otp && otp->targetPart && otp->targetPart->itemRequest) + { + Z_External *ext = otp->targetPart->itemRequest; + if (ext->which == Z_External_octet) + { + Odr_oct *doc = ext->u.octet_aligned; + printf("Got itemRequest doc %.*s\n", + doc->len, doc->buf); + } + } + } } if (res->taskPackage && res->taskPackage->which == Z_External_octet) { @@ -2508,19 +2521,26 @@ static int cmd_sru(const char *arg) if (!*arg) { printf("SRU method is: %s\n", sru_method); + printf("SRU version is: %s\n", sru_version); } else { - if (!yaz_matchstr(arg, "post")) - sru_method = "post"; - else if (!yaz_matchstr(arg, "get")) - sru_method = "get"; - else if (!yaz_matchstr(arg, "soap")) - sru_method = "soap"; - else + int r; + r = sscanf(arg, "%9s %9s", sru_method, sru_version); + if (r >= 1) { - printf("Unknown SRU method: %s\n", arg); - printf("Specify one of POST, GET, SOAP\n"); + if (!yaz_matchstr(sru_method, "post")) + ; + else if (!yaz_matchstr(sru_method, "get")) + ; + else if (!yaz_matchstr(sru_method, "soap")) + ; + else + { + strcpy(sru_method, "soap"); + printf("Unknown SRU method: %s\n", arg); + printf("Specify one of POST, GET, SOAP\n"); + } } } return 0; @@ -3021,13 +3041,13 @@ void display_term(Z_TermInfo *t) if (t->displayTerm) printf("%s", t->displayTerm); else if (t->term->which == Z_Term_general) - { printf("%.*s", t->term->u.general->len, t->term->u.general->buf); - sprintf(last_scan_line, "%.*s", t->term->u.general->len, - t->term->u.general->buf); - } else printf("Term (not general)"); + if (t->term->which == Z_Term_general) + sprintf(last_scan_line, "%.*s", t->term->u.general->len, + t->term->u.general->buf); + if (t->globalOccurrences) printf (" (%d)\n", *t->globalOccurrences); else @@ -4519,7 +4539,7 @@ static struct { {"zversion", cmd_zversion, "", NULL, 0, NULL}, {"help", cmd_help, "", NULL,0,NULL}, {"init", cmd_init, "", NULL,0,NULL}, - {"sru", cmd_sru, "", NULL,0,NULL}, + {"sru", cmd_sru, " ", NULL,0,NULL}, {"exit", cmd_quit, "",NULL,0,NULL}, {0,0,0,0,0,0} }; @@ -4886,9 +4906,28 @@ int main(int argc, char **argv) exit(1); } break; + case 'a': + if (!strcmp(arg, "-")) + apdu_file=stderr; + else + apdu_file=fopen(arg, "a"); + break; + case 'b': + if (!strcmp(arg, "-")) + ber_file=stderr; + else + ber_file=fopen(arg, "a"); + break; + case 'c': + strncpy (ccl_fields, arg, sizeof(ccl_fields)-1); + ccl_fields[sizeof(ccl_fields)-1] = '\0'; + break; case 'd': dump_file_prefix = arg; break; + case 'f': + rc_file = arg; + break; case 'k': kilobytes = atoi(arg); break; @@ -4899,34 +4938,15 @@ int main(int argc, char **argv) exit (1); } break; - case 't': - outputCharset = xstrdup(arg); - break; - case 'c': - strncpy (ccl_fields, arg, sizeof(ccl_fields)-1); - ccl_fields[sizeof(ccl_fields)-1] = '\0'; + case 'p': + yazProxy = xstrdup(arg); break; case 'q': strncpy (cql_fields, arg, sizeof(cql_fields)-1); cql_fields[sizeof(cql_fields)-1] = '\0'; break; - case 'b': - if (!strcmp(arg, "-")) - ber_file=stderr; - else - ber_file=fopen(arg, "a"); - break; - case 'a': - if (!strcmp(arg, "-")) - apdu_file=stderr; - else - apdu_file=fopen(arg, "a"); - break; - case 'x': - hex_dump = 1; - break; - case 'p': - yazProxy = xstrdup(arg); + case 't': + outputCharset = xstrdup(arg); break; case 'u': if (!auth_command) @@ -4939,25 +4959,29 @@ int main(int argc, char **argv) case 'v': yaz_log_init(yaz_log_mask_str(arg), "", 0); break; - case 'f': - rc_file = arg; - break; case 'V': show_version(); break; + case 'x': + hex_dump = 1; + break; default: fprintf (stderr, "Usage: %s " - " [-a ]" + " [-a apdulog]" " [-b berdump]" - " [-d dump]\n" - " [-c cclfields]" + " [-c cclfile]" + " [-d dump]" + " [-f cmdfile]" " [-k size]" - " [-m ]\n" - " [-p ]" - " [-q cqlfields]" - " [-u ]" + " [-m marclog]" + " [-p proxy-addr]" + " [-q cqlfile]" + " [-t dispcharset]" + " [-u auth]" + " [-v loglevel]" " [-V]" - " []\n", + " [-x]" + " [server-addr]\n", prog); exit (1); }