X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=client%2Fclient.c;h=4e77d74068300adbc9030b83803aa14529210cf3;hb=27743f316331a9ea508df5f204416a6864fc320f;hp=78e7f8a1ba964dfef253f4bf942715cab140f714;hpb=b28230ab11ea960e0bf0ea04ceeaf88131ab2f02;p=yaz-moved-to-github.git diff --git a/client/client.c b/client/client.c index 78e7f8a..4e77d74 100644 --- a/client/client.c +++ b/client/client.c @@ -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 #include #include +#include + +#ifdef WIN32 +#include +#define S_ISREG(x) (x & _S_IFREG) +#define S_ISDIR(x) (x & _S_IFDIR) +#endif #include @@ -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