Code updates which makes things compile as C++. Mostly type casts were
[yaz-moved-to-github.git] / client / client.c
index b091b31..20697e3 100644 (file)
@@ -2,7 +2,7 @@
  * Copyright (C) 1995-2007, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: client.c,v 1.333 2007-04-12 20:47:27 adam Exp $
+ * $Id: client.c,v 1.337 2007-05-06 20:12:19 adam Exp $
  */
 /** \file client.c
  *  \brief yaz-client program
@@ -173,7 +173,7 @@ int rl_attempted_completion_over = 0;
 #define AVOID_MARC_DECODE 1
 
 #define maxOtherInfosSupported 10
-struct {
+struct eoi {
     int oid[OID_SIZE];
     char* value;
 } extraOtherInfos[maxOtherInfosSupported];
@@ -339,9 +339,7 @@ static void send_initRequest(const char* type_and_host)
 
     if (yazProxy && type_and_host)
     {
-        const int *oid_proxy = yaz_string_to_oid(yaz_oid_std(),
-                                                 CLASS_USERINFO, OID_STR_PROXY);
-        yaz_oi_set_string_oid(&req->otherInfo, out, oid_proxy,
+        yaz_oi_set_string_oid(&req->otherInfo, out, yaz_oid_userinfo_proxy,
                               1, type_and_host);
     }
     
@@ -351,7 +349,8 @@ static void send_initRequest(const char* type_and_host)
         
         yaz_oi_APDU(apdu, &p);
         
-        if ((p0=yaz_oi_update(p, out, NULL, 0, 0))) {
+        if ((p0=yaz_oi_update(p, out, NULL, 0, 0)))
+        {
             ODR_MASK_SET(req->options, Z_Options_negotiationModel);
             
             p0->which = Z_OtherInfo_externallyDefinedInfo;
@@ -362,7 +361,6 @@ static void send_initRequest(const char* type_and_host)
                                               negotiationCharsetRecords);
         }
     }
-    
     if (send_apdu(apdu))
         printf("Sent initrequest.\n");
 }
@@ -455,7 +453,7 @@ static int process_initResponse(Z_InitResponse *res)
     
         Z_CharSetandLanguageNegotiation *p =
                 yaz_get_charneg_record(res->otherInfo);
-        
+
         if (p) {
             
             char *charset=NULL, *lang=NULL;
@@ -464,18 +462,20 @@ static int process_initResponse(Z_InitResponse *res)
             yaz_get_response_charneg(session_mem, p, &charset, &lang,
                                      &selected);
 
+            printf("Accepted character set : %s\n", charset);
+            printf("Accepted code language : %s\n", lang ? lang : "none");
+            printf("Accepted records in ...: %d\n", selected );
+
             if (outputCharset && negotiationCharset) {
-                    odr_set_charset (out, charset, outputCharset);
-                    odr_set_charset (in, outputCharset, charset);
+                printf("Converting between %s and %s\n",
+                       outputCharset, negotiationCharset);
+                odr_set_charset (out, charset, outputCharset);
+                odr_set_charset (in, outputCharset, charset);
             }
             else {
-                    odr_set_charset (out, 0, 0);
-                    odr_set_charset (in, 0, 0);
+                odr_set_charset (out, 0, 0);
+                odr_set_charset (in, 0, 0);
             }
-            
-            printf("Accepted character set : %s\n", charset);
-            printf("Accepted code language : %s\n", lang ? lang : "none");
-            printf("Accepted records in ...: %d\n", selected );
         }
     }
     fflush (stdout);
@@ -624,7 +624,7 @@ static int parse_cmd_doc(const char **arg, ODR out, char **buf,
             return 0;
         }
         *len = fsize;
-        *buf = odr_malloc(out, fsize);
+        *buf = (char *) odr_malloc(out, fsize);
         if (fread(*buf, 1, fsize, inf) != fsize)
         {
             printf("Unable to read %s\n", fname);
@@ -859,10 +859,7 @@ static void print_record(const unsigned char *buf, size_t len)
 
 static void display_record(Z_External *r)
 {
-    char oid_name_buf[OID_STR_MAX];
-    int oclass;
     const int *oid = r->direct_reference;
-    const char *oid_name = 0;
     
     record_last = r;
     /*
@@ -870,7 +867,10 @@ static void display_record(Z_External *r)
      */
     if (oid)
     {
-        oid_name = yaz_oid_to_string_buf(oid, &oclass, oid_name_buf);
+        int oclass;
+        char oid_name_buf[OID_STR_MAX];
+        const char *oid_name
+            =  yaz_oid_to_string_buf(oid, &oclass, oid_name_buf);
         printf("Record type: ");
         if (oid_name)
             printf("%s\n", oid_name);
@@ -908,7 +908,7 @@ static void display_record(Z_External *r)
             }
         }
     }
-    if (oid_name && !yaz_matchstr(oid_name, OID_STR_SOIF))
+    if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_soif))
     {
         print_record((const unsigned char *) r->u.octet_aligned->buf,
                      r->u.octet_aligned->len);
@@ -918,14 +918,14 @@ static void display_record(Z_External *r)
     else if (oid && r->which == Z_External_octet)
     {
         const char *octet_buf = (char*)r->u.octet_aligned->buf;
-        if (oid_name && (!yaz_matchstr(oid_name, OID_STR_XML)
-                         || !yaz_matchstr(oid_name, OID_STR_APPLICATION_XML)
-                         || !yaz_matchstr(oid_name, OID_STR_HTML)))
+        if (oid && (!oid_oidcmp(oid, yaz_oid_recsyn_xml)
+                    || !oid_oidcmp(oid, yaz_oid_recsyn_xml)
+                    || !oid_oidcmp(oid, yaz_oid_recsyn_html)))
         {
             print_record((const unsigned char *) octet_buf,
                          r->u.octet_aligned->len);
         }
-        else if (oid_name && !yaz_matchstr(oid_name, OID_STR_POSTSCRIPT))
+        else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_postscript))
         {
             int size = r->u.octet_aligned->len;
             if (size > 100)
@@ -953,7 +953,7 @@ static void display_record(Z_External *r)
 
                 if (marcCharset && !strcmp(marcCharset, "auto"))
                 {
-                    if (!yaz_matchstr(oid_name, OID_STR_USMARC))
+                    if (!oid_oidcmp(oid, yaz_oid_recsyn_usmarc))
                     {
                         if (octet_buf[9] == 'a')
                             from = "UTF-8";
@@ -1003,7 +1003,7 @@ static void display_record(Z_External *r)
         if (marc_file)
             fwrite (octet_buf, 1, r->u.octet_aligned->len, marc_file);
     }
-    else if (oid_name && !yaz_matchstr(oid_name, OID_STR_SUTRS))
+    else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_sutrs))
     {
         if (r->which != Z_External_sutrs)
         {
@@ -1014,7 +1014,7 @@ static void display_record(Z_External *r)
         if (marc_file)
             fwrite (r->u.sutrs->buf, 1, r->u.sutrs->len, marc_file);
     }
-    else if (oid_name && !yaz_matchstr(oid_name, OID_STR_GRS1))
+    else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_grs_1))
     {
         WRBUF w;
         if (r->which != Z_External_grs1)
@@ -1027,7 +1027,7 @@ static void display_record(Z_External *r)
         puts (wrbuf_cstr(w));
         wrbuf_destroy(w);
     }
-    else if (oid_name && !yaz_matchstr(oid_name, OID_STR_OPAC))
+    else if (oid && !oid_oidcmp(oid, yaz_oid_recsyn_opac))
     {
         int i;
         if (r->u.opac->bibliographicRecord)
@@ -1166,7 +1166,7 @@ static void display_diagrecs(Z_DiagRec **pp, int num)
             const char *diag_name = 0;
             diag_name = yaz_oid_to_string_buf
                 (r->diagnosticSetId, &oclass, diag_name_buf);
-            if (yaz_matchstr(diag_name, OID_STR_BIB1))
+            if (oid_oidcmp(r->diagnosticSetId, yaz_oid_diagset_bib_1))
                 printf("Unknown diagset: %s\n", diag_name);
         }
         printf("    [%d] %s", *r->condition, diagbib1_str(*r->condition));
@@ -1260,7 +1260,7 @@ static int send_srw(Z_SRW_PDU *sr)
     Z_GDU *gdu;
     char *path = 0;
 
-    path = odr_malloc(out, 2+strlen(databaseNames[0]));
+    path = (char *) odr_malloc(out, 2+strlen(databaseNames[0]));
     *path = '/';
     strcpy(path+1, databaseNames[0]);
 
@@ -2248,11 +2248,10 @@ static int cmd_update_Z3950(int version, int action_no, const char *recid,
         record_this = record_last;
     }
 
-    req->packageType =
-        yaz_string_to_oid_odr(yaz_oid_std(),
-                              CLASS_EXTSERV, 
-                              version == 0 ? "DB. Update (first version)" :
-                              "DB. Update", out);
+    req->packageType = odr_oiddup(out, (version == 0 ? 
+       yaz_oid_extserv_database_update_first_version :
+       yaz_oid_extserv_database_update));
+
     req->packageName = esPackageName;
     
     req->referenceId = set_refid (out);
@@ -3729,7 +3728,8 @@ static void initialize(void)
     /* If this fails, no problem: we detect cqltrans == 0 later */
 
 #if HAVE_READLINE_READLINE_H
-    rl_attempted_completion_function = (CPPFunction*)readline_completer;
+    rl_attempted_completion_function = 
+        (char **(*)(const char *, int, int)) readline_completer;
 #endif
     for(i = 0; i < maxOtherInfosSupported; ++i) {
         extraOtherInfos[i].oid[0] = -1;
@@ -3864,7 +3864,7 @@ static void http_response(Z_HTTP_Response *hres)
                            soap_handlers);
         if (!ret && soap_package->which == Z_SOAP_generic)
         {
-            Z_SRW_PDU *sr = soap_package->u.generic->p;
+            Z_SRW_PDU *sr = (Z_SRW_PDU *) soap_package->u.generic->p;
             if (sr->which == Z_SRW_searchRetrieve_response)
                 handle_srw_response(sr->u.response);
             else if (sr->which == Z_SRW_explain_response)
@@ -4767,6 +4767,7 @@ int main(int argc, char **argv)
     ODR_MASK_SET(&z3950_options, Z_Options_sort);
     ODR_MASK_SET(&z3950_options, Z_Options_extendedServices);
     ODR_MASK_SET(&z3950_options, Z_Options_delSet);
+    ODR_MASK_SET(&z3950_options, Z_Options_negotiationModel);
 
     while ((ret = options("k:c:q:a:b:m:v:p:u:t:Vxd:", argv, argc, &arg)) != -2)
     {