--tabs option no longer available
[yaz-moved-to-github.git] / client / client.c
index 78e7f8a..4e77d74 100644 (file)
@@ -2,12 +2,19 @@
  * Copyright (c) 1995-2002, Index Data
  * See the file LICENSE for details.
  *
- * $Id: client.c,v 1.170 2002-09-17 21:19:38 adam Exp $
+ * $Id: client.c,v 1.175 2002-12-05 12:19:23 adam Exp $
  */
 
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
+#include <ctype.h>
+
+#ifdef WIN32
+#include <io.h>
+#define S_ISREG(x) (x & _S_IFREG)
+#define S_ISDIR(x) (x & _S_IFDIR)
+#endif
 
 #include <yaz/yaz-util.h>
 
@@ -106,7 +113,7 @@ int rl_attempted_completion_over = 0;
 #define maxOtherInfosSupported 10
 struct {
     int oidval;
-       char* value;
+    char* value;
 } extraOtherInfos[maxOtherInfosSupported];
        
 
@@ -465,7 +472,11 @@ int cmd_open(char *arg)
     {
         printf ("error = %s\n", cs_strerror(conn));
         if (conn->cerrno == CSYSERR)
-            perror("system");
+       {
+           char msg[256];
+           yaz_strerror(msg, sizeof(msg));
+           printf ("%s\n", msg);
+       }
         cs_close(conn);
         conn = 0;
         return 0;
@@ -546,105 +557,6 @@ int cmd_authentication(char *arg)
 /* SEARCH SERVICE ------------------------------ */
 static void display_record(Z_External *r);
 
-static void display_variant(Z_Variant *v, int level)
-{
-    int i;
-
-    for (i = 0; i < v->num_triples; i++)
-    {
-        printf("%*sclass=%d,type=%d", level * 4, "", *v->triples[i]->zclass,
-            *v->triples[i]->type);
-        if (v->triples[i]->which == Z_Triple_internationalString)
-            printf(",value=%s\n", v->triples[i]->value.internationalString);
-        else
-            printf("\n");
-    }
-}
-
-static void display_grs1(Z_GenericRecord *r, int level)
-{
-    int i;
-
-    if (!r)
-    {
-        return;
-    }
-    for (i = 0; i < r->num_elements; i++)
-    {
-        Z_TaggedElement *t;
-
-        printf("%*s", level * 4, "");
-        t = r->elements[i];
-        printf("(");
-        if (t->tagType)
-            printf("%d,", *t->tagType);
-        else
-            printf("?,");
-        if (t->tagValue->which == Z_StringOrNumeric_numeric)
-            printf("%d) ", *t->tagValue->u.numeric);
-        else
-            printf("%s) ", t->tagValue->u.string);
-        if (t->content->which == Z_ElementData_subtree)
-        {
-            if (!t->content->u.subtree)
-                printf (" (no subtree)\n");
-            else
-            {
-                printf("\n");
-                display_grs1(t->content->u.subtree, level+1);
-            }
-        }
-        else if (t->content->which == Z_ElementData_string)
-            printf("%s\n", t->content->u.string);
-        else if (t->content->which == Z_ElementData_numeric)
-            printf("%d\n", *t->content->u.numeric);
-        else if (t->content->which == Z_ElementData_oid)
-        {
-            int *ip = t->content->u.oid;
-            oident *oent;
-            
-            if ((oent = oid_getentbyoid(t->content->u.oid)))
-                printf("OID: %s\n", oent->desc);
-            else
-            {
-                printf("{");
-                while (ip && *ip >= 0)
-                    printf(" %d", *(ip++));
-                printf(" }\n");
-            }
-        }
-        else if (t->content->which == Z_ElementData_noDataRequested)
-            printf("[No data requested]\n");
-        else if (t->content->which == Z_ElementData_elementEmpty)
-            printf("[Element empty]\n");
-        else if (t->content->which == Z_ElementData_elementNotThere)
-            printf("[Element not there]\n");
-        else if (t->content->which == Z_ElementData_date)
-            printf("Date: %s\n", t->content->u.date);
-        else if (t->content->which == Z_ElementData_ext)
-        {
-            printf ("External\n");
-            display_record (t->content->u.ext);
-        } 
-        else
-            printf("? type = %d\n",t->content->which);
-        if (t->appliedVariant)
-            display_variant(t->appliedVariant, level+1);
-        if (t->metaData && t->metaData->supportedVariants)
-        {
-            int c;
-
-            printf("%*s---- variant list\n", (level+1)*4, "");
-            for (c = 0; c < t->metaData->num_supportedVariants; c++)
-            {
-                printf("%*svariant #%d\n", (level+1)*4, "", c);
-                display_variant(t->metaData->supportedVariants[c], level + 2);
-            }
-        }
-    }
-}
-
-
 static void print_record(const unsigned char *buf, size_t len)
 {
     size_t i = len;
@@ -711,7 +623,7 @@ static void display_record(Z_External *r)
     if (ent && ent->value == VAL_SOIF)
         print_record((const unsigned char *) r->u.octet_aligned->buf,
                      r->u.octet_aligned->len);
-    else if (r->which == Z_External_octet && r->u.octet_aligned->len)
+    else if (r->which == Z_External_octet)
     {
         const char *octet_buf = (char*)r->u.octet_aligned->buf;
         if (ent->value == VAL_TEXT_XML || ent->value == VAL_APPLICATION_XML ||
@@ -767,12 +679,16 @@ static void display_record(Z_External *r)
     }
     else if (ent && ent->value == VAL_GRS1)
     {
+        WRBUF w;
         if (r->which != Z_External_grs1)
         {
             printf("Expecting single GRS type for GRS.\n");
             return;
         }
-        display_grs1(r->u.grs1, 0);
+        w = wrbuf_alloc();
+        yaz_display_grs1(w, r->u.grs1, 0);
+        puts (wrbuf_buf(w));
+        wrbuf_free(w, 1);
     }
     else 
     {
@@ -1568,7 +1484,7 @@ static int cmd_update(char *arg)
         if (S_ISREG(status.st_mode) && (inf = fopen(fname, "r")))
         {
             size_t len = status.st_size;
-            char *buf = xmalloc (len);
+            char *buf = (char *) xmalloc (len);
 
             fread (buf, 1, len, inf);
 
@@ -1632,8 +1548,9 @@ static int cmd_update(char *arg)
     notToKeep->elements[0]->which = Z_IUSuppliedRecords_elem_opaque;
     if (*recid)
     {
-        notToKeep->elements[0]->u.opaque = odr_malloc (out, sizeof(Odr_oct));
-        notToKeep->elements[0]->u.opaque->buf = recid;
+        notToKeep->elements[0]->u.opaque = (Odr_oct *)
+            odr_malloc (out, sizeof(Odr_oct));
+        notToKeep->elements[0]->u.opaque->buf = (unsigned char *) recid;
         notToKeep->elements[0]->u.opaque->size = strlen(recid);
         notToKeep->elements[0]->u.opaque->len = strlen(recid);
     }
@@ -2538,7 +2455,7 @@ int cmd_register_oid(char* args) {
         {"schema",CLASS_SCHEMA},
         {"tagset",CLASS_TAGSET},
         {"general",CLASS_GENERAL},
-        {0,0}
+        {0,(enum oid_class) 0}
     };
     char oname_str[101], oclass_str[101], oid_str[101];  
     char* name;
@@ -2860,12 +2777,22 @@ int cmd_list_otherinfo(char* args)
         }
 
         if(extraOtherInfos[i].oidval != -1) 
-            printf("  otherinfo %d %s %s\n",i,yaz_z3950_oid_value_to_str(extraOtherInfos[i].oidval,CLASS_RECSYN), extraOtherInfos[i].value);
+            printf("  otherinfo %d %s %s\n",
+                   i,
+                   yaz_z3950_oid_value_to_str(
+                       (enum oid_value) extraOtherInfos[i].oidval,
+                       CLASS_RECSYN),
+                   extraOtherInfos[i].value);
         
     } else {           
         for(i=0; i<maxOtherInfosSupported; ++i) {
             if(extraOtherInfos[i].oidval != -1) 
-                printf("  otherinfo %d %s %s\n",i,yaz_z3950_oid_value_to_str(extraOtherInfos[i].oidval,CLASS_RECSYN), extraOtherInfos[i].value);
+                printf("  otherinfo %d %s %s\n",
+                       i,
+                       yaz_z3950_oid_value_to_str(
+                           (enum oid_value) extraOtherInfos[i].oidval,
+                           CLASS_RECSYN),
+                       extraOtherInfos[i].value);
         }
         
     }
@@ -3101,9 +3028,8 @@ int cmd_register_tab(char* arg) {
     }
     
         
-    if(!cmd[i].local_tabcompletes) {
-        cmd[i].local_tabcompletes = calloc(1,sizeof(char**));
-    }
+    if(!cmd[i].local_tabcompletes)
+        cmd[i].local_tabcompletes = (char **) calloc(1,sizeof(char**));
     
     num_of_tabs=0;             
     
@@ -3112,7 +3038,7 @@ int cmd_register_tab(char* arg) {
         num_of_tabs++;
     }
     
-    cmd[i].local_tabcompletes = 
+    cmd[i].local_tabcompletes =  (char **)
         realloc(cmd[i].local_tabcompletes,(num_of_tabs+2)*sizeof(char**));
     tabslist=cmd[i].local_tabcompletes;
     tabslist[num_of_tabs]=strdup(tabargument);