X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=client%2Fclient.c;h=53c241b30e1cb4f6443ac46e53ed65a73490276d;hb=743e944e38c1f13a7304d924cd9d111c64f8c7f8;hp=f258f7611eaf78c067b37bbb46df3b2597922d24;hpb=b0af12e407d33fc35d41152e67c568f762e3b41f;p=yaz-moved-to-github.git diff --git a/client/client.c b/client/client.c index f258f76..53c241b 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.347 2007-07-04 09:21:00 adam Exp $ + * $Id: client.c,v 1.352 2007-10-29 09:16:32 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]; @@ -846,8 +844,8 @@ int cmd_authentication(const char *arg) au.which = Z_IdAuthentication_idPass; au.u.idPass = &idPass; idPass.groupId = NULL; - idPass.userId = user; - idPass.password = group; + idPass.userId = !strcmp(user, "-") ? 0 : user; + idPass.password = !strcmp(group, "-") ? 0 : group; printf("Authentication set to User (%s), Pass (%s)\n", user, group); } if (r == 3) @@ -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} };