/*
- * Copyright (C) 1994-1998, Index Data I/S
+ * Copyright (C) 1994-1998, Index Data
* All rights reserved.
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: recgrs.c,v $
- * Revision 1.18 1998-03-05 08:41:31 adam
+ * Revision 1.23 1998-10-18 07:51:10 adam
+ * Changed one logf call.
+ *
+ * Revision 1.22 1998/10/16 08:14:37 adam
+ * Updated record control system.
+ *
+ * Revision 1.21 1998/07/01 09:16:10 adam
+ * Element localno only added when it's greater than 0.
+ *
+ * Revision 1.20 1998/05/20 10:12:26 adam
+ * Implemented automatic EXPLAIN database maintenance.
+ * Modified Zebra to work with ASN.1 compiled version of YAZ.
+ *
+ * Revision 1.19 1998/03/11 11:19:05 adam
+ * Changed the way sequence numbers are generated.
+ *
+ * Revision 1.18 1998/03/05 08:41:31 adam
* Minor changes.
*
* Revision 1.17 1998/02/10 12:03:06 adam
#define GRS_MAX_WORD 512
-static int seqno = 0;
-
static data1_node *read_grs_type (struct grs_read_info *p, const char *type)
{
static struct {
return NULL;
}
-static void grs_init(void)
+static void grs_init(RecType recType)
+{
+}
+
+static void grs_destroy(RecType recType)
{
}
else
{
wrd.reg_type = *tlist->structure;
- wrd.seqno = seqno;
wrd.string = n->u.data.data;
wrd.length = n->u.data.len;
- wrd.attrSet = tlist->att->parent->ordinal;
+ wrd.attrSet = (int) (tlist->att->parent->reference);
wrd.attrUse = tlist->att->locals->local;
- (*p->add)(&wrd);
- seqno = wrd.seqno;
+ (*p->addWord)(&wrd);
}
}
}
return 0;
}
+int grs_extract_tree(struct recExtractCtrl *p, data1_node *n)
+{
+ oident oe;
+ int oidtmp[OID_SIZE];
+
+ oe.proto = PROTO_Z3950;
+ oe.oclass = CLASS_SCHEMA;
+ oe.value = n->u.root.absyn->reference;
+
+ if ((oid_ent_to_oid (&oe, oidtmp)))
+ (*p->addSchema)(p, oidtmp);
+
+ return dumpkeys(n, p, 0);
+}
+
static int grs_extract(struct recExtractCtrl *p)
{
data1_node *n;
NMEM mem;
struct grs_read_info gri;
- seqno = 0;
+ oident oe;
+ int oidtmp[OID_SIZE];
mem = nmem_create ();
gri.readf = p->readf;
n = read_grs_type (&gri, p->subType);
if (!n)
return -1;
+
+ oe.proto = PROTO_Z3950;
+ oe.oclass = CLASS_SCHEMA;
+ oe.value = n->u.root.absyn->reference;
+ if ((oid_ent_to_oid (&oe, oidtmp)))
+ (*p->addSchema)(p, oidtmp);
+
if (dumpkeys(n, p, 0) < 0)
{
data1_free_tree(p->dh, n);
}
if (espec)
{
- logf (LOG_LOG, "Element: Espec-1 match");
+ logf (LOG_DEBUG, "Element: Espec-1 match");
return data1_doespec1(dh, n, espec);
}
else
}
logf (LOG_DEBUG, "grs_retrieve: localControlNumber");
- if ((dnew = data1_insert_taggeddata(p->dh, node, node,
+ if (p->localno > 0 && (dnew = data1_insert_taggeddata(p->dh, node, node,
"localControlNumber", mem)))
{
dnew->u.data.what = DATA1I_text;
{
"grs",
grs_init,
+ grs_destroy,
grs_extract,
grs_retrieve
};