Comment
[yaz-moved-to-github.git] / client / client.c
index 190616c..a02c99c 100644 (file)
@@ -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 <stdio.h>
@@ -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