X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=client%2Fclient.c;h=a02c99c0c54ec2eddb2ab61db876f5edb779fad3;hp=190616c9726d1b6c6a357799a36b4c77abb9fe46;hb=9b9e5015dba09e7480f09351cfccdfafd99b2d30;hpb=c80275992d29b4815dd25d9203e094ae2880f1ae diff --git a/client/client.c b/client/client.c index 190616c..a02c99c 100644 --- a/client/client.c +++ b/client/client.c @@ -2,7 +2,7 @@ * Copyright (c) 1995-2003, Index Data * See the file LICENSE for details. * - * $Id: client.c,v 1.210 2003-10-21 12:35:50 mike Exp $ + * $Id: client.c,v 1.215 2003-12-18 17:02:24 mike Exp $ */ #include @@ -104,6 +104,8 @@ static char *refid = NULL; static char *last_open_command = NULL; static int auto_reconnect = 0; +static char cur_host[200]; + typedef enum { QueryType_Prefix, QueryType_CCL, @@ -115,7 +117,7 @@ typedef enum { static QueryType queryType = QueryType_Prefix; static CCL_bibset bibset; /* CCL bibset handle */ -static cql_transform_t cqltrans; /* CQL qualifier-set handle */ +static cql_transform_t cqltrans; /* CQL context-set handle */ #if HAVE_READLINE_COMPLETION_OVER @@ -478,10 +480,11 @@ static void render_diag(Z_DiagnosticFormat *diag) { case Z_DiagnosticFormat_s_defaultDiagRec: { Z_DefaultDiagFormat *dd = ds->u.defaultDiagRec; /* ### should check `dd->diagnosticSetId' */ - printf("code=%d", *dd->condition); + printf("code=%d (%s)", *dd->condition, + diagbib1_str(*dd->condition)); /* Both types of addinfo are the same, so use type-pun */ if (dd->u.v2Addinfo != 0) - printf(", addinfo='%s'", dd->u.v2Addinfo); + printf(",\n\taddinfo='%s'", dd->u.v2Addinfo); break; } case Z_DiagnosticFormat_s_explicitDiagnostic: @@ -628,7 +631,6 @@ int session_connect(const char *arg) int cmd_open(const char *arg) { - static char cur_host[200]; if (arg) { strncpy (cur_host, arg, sizeof(cur_host)-1); @@ -1125,7 +1127,7 @@ static int send_deleteResultSetRequest(const char *arg) static int send_srw(Z_SRW_PDU *sr) { const char *charset = negotiationCharset; - const char *host_port = 0; + const char *host_port = cur_host; char *path = 0; char ctype[50]; Z_SOAP_Handler h[2] = { @@ -1163,7 +1165,7 @@ static int send_srw(Z_SRW_PDU *sr) memcpy (h, cp0, cp1 - cp0); h[cp1-cp0] = '\0'; z_HTTP_header_add(out, &gdu->u.HTTP_Request->headers, - "host", h); + "Host", h); } } @@ -1195,6 +1197,8 @@ static int send_srw(Z_SRW_PDU *sr) char *buf_out; int len_out; int r; + if (apdu_file && !z_GDU(print, &gdu, 0, 0)) + printf ("Failed to print outgoing APDU\n"); buf_out = odr_getbuf(out, &len_out, 0); /* we don't odr_reset(out), since we may need the buffer again */ @@ -2570,7 +2574,9 @@ int send_sortrequest(const char *arg, int newset) void display_term(Z_TermInfo *t) { - if (t->term->which == Z_Term_general) + 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, @@ -3332,17 +3338,20 @@ static void http_response(Z_HTTP_Response *hres) } close_session(); } - if (!strcmp(hres->version, "1.0")) - { - /* HTTP 1.0: only if Keep-Alive we stay alive.. */ - if (!connection_head || strcmp(connection_head, "Keep-Alive")) - close_session(); - } - else + else { - /* HTTP 1.1: only if no close we stay alive .. */ - if (connection_head && !strcmp(connection_head, "close")) - close_session(); + if (!strcmp(hres->version, "1.0")) + { + /* HTTP 1.0: only if Keep-Alive we stay alive.. */ + if (!connection_head || strcmp(connection_head, "Keep-Alive")) + close_session(); + } + else + { + /* HTTP 1.1: only if no close we stay alive .. */ + if (connection_head && !strcmp(connection_head, "close")) + close_session(); + } } } #endif