Fix SEGV for quit command in cmdfile
[yaz-moved-to-github.git] / client / client.c
index d6ec0c3..2692a9c 100644 (file)
@@ -104,7 +104,7 @@ static int smallSetUpperBound = 0;
 static int largeSetLowerBound = 1;
 static int mediumSetPresentNumber = 0;
 static Z_ElementSetNames *elementSetNames = 0;
 static int largeSetLowerBound = 1;
 static int mediumSetPresentNumber = 0;
 static Z_ElementSetNames *elementSetNames = 0;
-static odr_int_t setno = 1;                   /* current set offset */
+static Odr_int setno = 1;                   /* current set offset */
 static enum oid_proto protocol = PROTO_Z3950;      /* current app protocol */
 #define RECORDSYNTAX_MAX 20
 static char *recordsyntax_list[RECORDSYNTAX_MAX];
 static enum oid_proto protocol = PROTO_Z3950;      /* current app protocol */
 #define RECORDSYNTAX_MAX 20
 static char *recordsyntax_list[RECORDSYNTAX_MAX];
@@ -435,8 +435,8 @@ static int process_initResponse(Z_InitResponse *res)
                 else
                 {
                     /* Peek at any private Init-diagnostic APDUs */
                 else
                 {
                     /* Peek at any private Init-diagnostic APDUs */
-                    printf("### NAUGHTY: External is '%.*s'\n",
-                           sat->len, sat->buf);
+                    printf("yaz-client ignoring unrecognised userInformationField: %d-octet External '%.*s'\n",
+                           (int) sat->len, sat->len, sat->buf);
                 }
             }
             odr_reset(print);
                 }
             }
             odr_reset(print);
@@ -760,7 +760,7 @@ int cmd_authentication(const char *arg)
     }
     else if (r == 1)
     {
     }
     else if (r == 1)
     {
-        auth = nmem_malloc(nmem_auth, sizeof(*auth));
+        auth = (Z_IdAuthentication *) nmem_malloc(nmem_auth, sizeof(*auth));
         if (!strcmp(args[0], "-"))
         {
             auth->which = Z_IdAuthentication_anonymous;
         if (!strcmp(args[0], "-"))
         {
             auth->which = Z_IdAuthentication_anonymous;
@@ -776,9 +776,10 @@ int cmd_authentication(const char *arg)
     }
     else if (r == 2)
     {
     }
     else if (r == 2)
     {
-        auth = nmem_malloc(nmem_auth, sizeof(*auth));
+        auth = (Z_IdAuthentication *) nmem_malloc(nmem_auth, sizeof(*auth));
         auth->which = Z_IdAuthentication_idPass;
         auth->which = Z_IdAuthentication_idPass;
-        auth->u.idPass = nmem_malloc(nmem_auth, sizeof(*auth->u.idPass));
+        auth->u.idPass = (Z_IdPass *)
+            nmem_malloc(nmem_auth, sizeof(*auth->u.idPass));
         auth->u.idPass->groupId = NULL;
         auth->u.idPass->userId = !strcmp(args[0], "-") ? 0 : args[0];
         auth->u.idPass->password = !strcmp(args[1], "-") ? 0 : args[1];
         auth->u.idPass->groupId = NULL;
         auth->u.idPass->userId = !strcmp(args[0], "-") ? 0 : args[0];
         auth->u.idPass->password = !strcmp(args[1], "-") ? 0 : args[1];
@@ -787,9 +788,10 @@ int cmd_authentication(const char *arg)
     }
     else if (r == 3)
     {
     }
     else if (r == 3)
     {
-        auth = nmem_malloc(nmem_auth, sizeof(*auth));
+        auth = (Z_IdAuthentication*) nmem_malloc(nmem_auth, sizeof(*auth));
         auth->which = Z_IdAuthentication_idPass;
         auth->which = Z_IdAuthentication_idPass;
-        auth->u.idPass = nmem_malloc(nmem_auth, sizeof(*auth->u.idPass));
+        auth->u.idPass = (Z_IdPass *)
+            nmem_malloc(nmem_auth, sizeof(*auth->u.idPass));
         auth->u.idPass->groupId = args[1];
         auth->u.idPass->userId = args[0];
         auth->u.idPass->password = args[2];
         auth->u.idPass->groupId = args[1];
         auth->u.idPass->userId = args[0];
         auth->u.idPass->password = args[2];
@@ -1640,7 +1642,7 @@ static void print_level(int iLevel)
         printf(" ");
 }
 
         printf(" ");
 }
 
-static void print_int(int iLevel, const char *pTag, odr_int_t *pInt)
+static void print_int(int iLevel, const char *pTag, Odr_int *pInt)
 {
     if (pInt != NULL)
     {
 {
     if (pInt != NULL)
     {
@@ -1649,6 +1651,15 @@ static void print_int(int iLevel, const char *pTag, odr_int_t *pInt)
     }
 }
 
     }
 }
 
+static void print_bool(int iLevel, const char *pTag, Odr_bool *pInt)
+{
+    if (pInt != NULL)
+    {
+        print_level(iLevel);
+        printf("%s: %d\n", pTag, *pInt);
+    }
+}
+
 static void print_string(int iLevel, const char *pTag, const char *pString)
 {
     if (pString != NULL)
 static void print_string(int iLevel, const char *pTag, const char *pString)
 {
     if (pString != NULL)
@@ -1793,10 +1804,10 @@ static int process_resourceControlRequest(Z_ResourceControlRequest *req)
 {
     printf("Received ResourceControlRequest.\n");
     print_referenceId(1, req->referenceId);
 {
     printf("Received ResourceControlRequest.\n");
     print_referenceId(1, req->referenceId);
-    print_int(1, "Suspended Flag", req->suspendedFlag);
+    print_bool(1, "Suspended Flag", req->suspendedFlag);
     print_int(1, "Partial Results Available", req->partialResultsAvailable);
     print_int(1, "Partial Results Available", req->partialResultsAvailable);
-    print_int(1, "Response Required", req->responseRequired);
-    print_int(1, "Triggered Request Flag", req->triggeredRequestFlag);
+    print_bool(1, "Response Required", req->responseRequired);
+    print_bool(1, "Triggered Request Flag", req->triggeredRequestFlag);
     print_external(1, req->resourceReport);
     return 0;
 }
     print_external(1, req->resourceReport);
     return 0;
 }
@@ -2650,7 +2661,7 @@ static int cmd_setnames(const char *arg)
 /* PRESENT SERVICE ----------------------------- */
 
 static void parse_show_args(const char *arg_c, char *setstring,
 /* PRESENT SERVICE ----------------------------- */
 
 static void parse_show_args(const char *arg_c, char *setstring,
-                            odr_int_t *start, odr_int_t *number)
+                            Odr_int *start, Odr_int *number)
 {
     char arg[40];
     char *p;
 {
     char arg[40];
     char *p;
@@ -2686,7 +2697,7 @@ static int send_presentRequest(const char *arg)
     Z_APDU *apdu = zget_APDU(out, Z_APDU_presentRequest);
     Z_PresentRequest *req = apdu->u.presentRequest;
     Z_RecordComposition compo;
     Z_APDU *apdu = zget_APDU(out, Z_APDU_presentRequest);
     Z_PresentRequest *req = apdu->u.presentRequest;
     Z_RecordComposition compo;
-    odr_int_t nos = 1;
+    Odr_int nos = 1;
     char setstring[100];
 
     req->referenceId = set_refid(out);
     char setstring[100];
 
     req->referenceId = set_refid(out);
@@ -2777,7 +2788,7 @@ static int send_presentRequest(const char *arg)
 static int send_SRW_presentRequest(const char *arg)
 {
     char setstring[100];
 static int send_SRW_presentRequest(const char *arg)
 {
     char setstring[100];
-    odr_int_t nos = 1;
+    Odr_int nos = 1;
     Z_SRW_PDU *sr = srw_sr;
 
     if (!sr)
     Z_SRW_PDU *sr = srw_sr;
 
     if (!sr)
@@ -2923,7 +2934,7 @@ int cmd_cancel_find(const char *arg) {
 }
 
 int send_scanrequest(const char *set,  const char *query,
 }
 
 int send_scanrequest(const char *set,  const char *query,
-                     odr_int_t pp, odr_int_t num, const char *term)
+                     Odr_int pp, Odr_int num, const char *term)
 {
     Z_APDU *apdu = zget_APDU(out, Z_APDU_scanRequest);
     Z_ScanRequest *req = apdu->u.scanRequest;
 {
     Z_APDU *apdu = zget_APDU(out, Z_APDU_scanRequest);
     Z_ScanRequest *req = apdu->u.scanRequest;
@@ -3888,9 +3899,10 @@ static void initialize(const char *rc_file)
 
     cmd_format("usmarc");
 
 
     cmd_format("usmarc");
 
+    file_history = file_history_new();
+
     source_rc_file(rc_file);
 
     source_rc_file(rc_file);
 
-    file_history = file_history_new();
     file_history_load(file_history);
     file_history_trav(file_history, 0, add_to_readline_history);
 }
     file_history_load(file_history);
     file_history_trav(file_history, 0, add_to_readline_history);
 }