/*
* IR toolkit for tcl/tk
- * (c) Index Data 1995-1996
+ * (c) Index Data 1995-1997
* See the file LICENSE for details.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: grs.c,v $
- * Revision 1.9 1996-08-16 15:07:44 adam
+ * Revision 1.11 1997-11-19 11:22:09 adam
+ * Object identifiers can be accessed in GRS-1 records.
+ *
+ * Revision 1.10 1997/09/09 10:19:52 adam
+ * New MSV5.0 port with fewer warnings.
+ *
+ * Revision 1.9 1996/08/16 15:07:44 adam
* First work on Explain.
*
* Revision 1.8 1996/07/03 13:31:10 adam
break;
case Z_ElementData_trueOrFalse:
case Z_ElementData_oid:
+ xfree (e->tagData.oid);
+ break;
case Z_ElementData_intUnit:
case Z_ElementData_elementNotThere:
case Z_ElementData_elementEmpty:
for (i = 0; i < r->num_elements; i++, e++)
{
Z_TaggedElement *t;
+ int len;
t = r->elements[i];
if (t->tagType)
e->tagData.bool = *t->content->u.trueOrFalse;
break;
case Z_ElementData_oid:
+ len = 1+oid_oidlen (t->content->u.oid);
+ e->tagData.oid = ir_tcl_malloc (len * sizeof(*e->tagData.oid));
+ memcpy (e->tagData.oid, t->content->u.oid,
+ len * sizeof(*e->tagData.oid));
break;
case Z_ElementData_intUnit:
break;
}
else
{
- int len = strlen(cp1+1);
+ size_t len = strlen(cp1+1);
if (cp1[len] == ')')
len--;
if (len && strlen(e->tagVal.str) == len &&
e->tagData.bool ? "1" : "0", " ", NULL);
break;
case Z_ElementData_oid:
- Tcl_AppendResult (interp, " oid {} ", NULL);
+ Tcl_AppendResult (interp, " oid", NULL);
+ if (!e->tagData.oid)
+ Tcl_AppendResult (interp, "{}", NULL);
+ else
+ {
+ int i;
+ int sep = ' ';
+ for (i = 0; e->tagData.oid[i] >= 0; i++)
+ {
+ sprintf (tmpbuf, "%c%d", sep, e->tagData.oid[i]);
+ Tcl_AppendResult (interp, tmpbuf, NULL);
+ sep = '.';
+ }
+ }
break;
case Z_ElementData_intUnit:
Tcl_AppendResult (interp, " intUnit {} ", NULL);