projects
/
idzebra-moved-to-github.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Changed Makefiles to NOT include ../../yaz/z39.50.
[idzebra-moved-to-github.git]
/
recctrl
/
recgrs.c
diff --git
a/recctrl/recgrs.c
b/recctrl/recgrs.c
index
a8ed698
..
680dde2
100644
(file)
--- a/
recctrl/recgrs.c
+++ b/
recctrl/recgrs.c
@@
-4,7
+4,13
@@
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: recgrs.c,v $
* Sebastian Hammer, Adam Dickmeiss
*
* $Log: recgrs.c,v $
- * Revision 1.27 1999-05-20 12:57:18 adam
+ * Revision 1.29 1999-05-26 07:49:14 adam
+ * C++ compilation.
+ *
+ * Revision 1.28 1999/05/21 12:00:17 adam
+ * Better diagnostics for extraction process.
+ *
+ * Revision 1.27 1999/05/20 12:57:18 adam
* Implemented TCL filter. Updated recctrl system.
*
* Revision 1.26 1999/03/02 16:15:44 quinn
* Implemented TCL filter. Updated recctrl system.
*
* Revision 1.26 1999/03/02 16:15:44 quinn
@@
-201,8
+207,9
@@
struct grs_handlers {
struct grs_handler *handlers;
};
struct grs_handler *handlers;
};
-static data1_node *read_grs_type (struct grs_handlers *h,
- struct grs_read_info *p, const char *type)
+static int read_grs_type (struct grs_handlers *h,
+ struct grs_read_info *p, const char *type,
+ data1_node **root)
{
struct grs_handler *gh = h->handlers;
const char *cp = strchr (type, '.');
{
struct grs_handler *gh = h->handlers;
const char *cp = strchr (type, '.');
@@
-218,24
+225,23
@@
static data1_node *read_grs_type (struct grs_handlers *h,
{
if (!memcmp (type, gh->type->type, cp-type))
{
{
if (!memcmp (type, gh->type->type, cp-type))
{
- data1_node *node;
if (!gh->initFlag)
{
gh->initFlag = 1;
gh->clientData = (*gh->type->init)();
}
p->clientData = gh->clientData;
if (!gh->initFlag)
{
gh->initFlag = 1;
gh->clientData = (*gh->type->init)();
}
p->clientData = gh->clientData;
- node = (gh->type->read)(p);
+ *root = (gh->type->read)(p);
gh->clientData = p->clientData;
gh->clientData = p->clientData;
- return node;
+ return 0;
}
}
}
}
- return NULL;
+ return 1;
}
static void grs_add_handler (struct grs_handlers *h, RecTypeGrs t)
{
}
static void grs_add_handler (struct grs_handlers *h, RecTypeGrs t)
{
- struct grs_handler *gh = malloc (sizeof(*gh));
+ struct grs_handler *gh = (struct grs_handler *) malloc (sizeof(*gh));
gh->next = h->handlers;
h->handlers = gh;
gh->initFlag = 0;
gh->next = h->handlers;
h->handlers = gh;
gh->initFlag = 0;
@@
-245,7
+251,7
@@
static void grs_add_handler (struct grs_handlers *h, RecTypeGrs t)
static void *grs_init(RecType recType)
{
static void *grs_init(RecType recType)
{
- struct grs_handlers *h = malloc (sizeof(*h));
+ struct grs_handlers *h = (struct grs_handlers *) malloc (sizeof(*h));
h->handlers = 0;
grs_add_handler (h, recTypeGrs_sgml);
h->handlers = 0;
grs_add_handler (h, recTypeGrs_sgml);
@@
-259,7
+265,7
@@
static void *grs_init(RecType recType)
static void grs_destroy(void *clientData)
{
static void grs_destroy(void *clientData)
{
- struct grs_handlers *h = clientData;
+ struct grs_handlers *h = (struct grs_handlers *) clientData;
struct grs_handler *gh = h->handlers, *gh_next;
while (gh)
{
struct grs_handler *gh = h->handlers, *gh_next;
while (gh)
{
@@
-404,7
+410,7
@@
static int grs_extract(void *clientData, struct recExtractCtrl *p)
struct grs_read_info gri;
oident oe;
int oidtmp[OID_SIZE];
struct grs_read_info gri;
oident oe;
int oidtmp[OID_SIZE];
- struct grs_handlers *h = clientData;
+ struct grs_handlers *h = (struct grs_handlers *) clientData;
mem = nmem_create ();
gri.readf = p->readf;
mem = nmem_create ();
gri.readf = p->readf;
@@
-416,9
+422,10
@@
static int grs_extract(void *clientData, struct recExtractCtrl *p)
gri.mem = mem;
gri.dh = p->dh;
gri.mem = mem;
gri.dh = p->dh;
- n = read_grs_type (h, &gri, p->subType);
+ if (read_grs_type (h, &gri, p->subType, &n))
+ return RECCTRL_EXTRACT_ERROR;
if (!n)
if (!n)
- return -1;
+ return RECCTRL_EXTRACT_EOF;
oe.proto = PROTO_Z3950;
oe.oclass = CLASS_SCHEMA;
oe.proto = PROTO_Z3950;
oe.oclass = CLASS_SCHEMA;
@@
-429,11
+436,11
@@
static int grs_extract(void *clientData, struct recExtractCtrl *p)
if (dumpkeys(n, p, 0) < 0)
{
data1_free_tree(p->dh, n);
if (dumpkeys(n, p, 0) < 0)
{
data1_free_tree(p->dh, n);
- return -2;
+ return RECCTRL_EXTRACT_ERROR;
}
data1_free_tree(p->dh, n);
nmem_destroy(mem);
}
data1_free_tree(p->dh, n);
nmem_destroy(mem);
- return 0;
+ return RECCTRL_EXTRACT_OK;
}
/*
}
/*
@@
-519,7
+526,7
@@
static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
NMEM mem;
struct grs_read_info gri;
char *tagname;
NMEM mem;
struct grs_read_info gri;
char *tagname;
- struct grs_handlers *h = clientData;
+ struct grs_handlers *h = (struct grs_handlers *) clientData;
mem = nmem_create();
gri.readf = p->readf;
mem = nmem_create();
gri.readf = p->readf;
@@
-532,7
+539,12
@@
static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
gri.dh = p->dh;
logf (LOG_DEBUG, "grs_retrieve");
gri.dh = p->dh;
logf (LOG_DEBUG, "grs_retrieve");
- node = read_grs_type (h, &gri, p->subType);
+ if (read_grs_type (h, &gri, p->subType, &node))
+ {
+ p->diagnostic = 14;
+ nmem_destroy (mem);
+ return 0;
+ }
if (!node)
{
p->diagnostic = 14;
if (!node)
{
p->diagnostic = 14;
@@
-605,7
+617,7
@@
static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
"schemaIdentifier", mem)))
{
dnew->u.data.what = DATA1I_oid;
"schemaIdentifier", mem)))
{
dnew->u.data.what = DATA1I_oid;
- dnew->u.data.data = nmem_malloc(mem, p - tmp);
+ dnew->u.data.data = (char *) nmem_malloc(mem, p - tmp);
memcpy(dnew->u.data.data, tmp, p - tmp);
dnew->u.data.len = p - tmp;
}
memcpy(dnew->u.data.data, tmp, p - tmp);
dnew->u.data.len = p - tmp;
}
@@
-659,21
+671,21
@@
static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p)
p->odr, &dummy)))
p->diagnostic = 238; /* not available in requested syntax */
else
p->odr, &dummy)))
p->diagnostic = 238; /* not available in requested syntax */
else
- p->rec_len = -1;
+ p->rec_len = (size_t) (-1);
break;
case VAL_EXPLAIN:
if (!(p->rec_buf = data1_nodetoexplain(p->dh, node, selected,
p->odr)))
p->diagnostic = 238;
else
break;
case VAL_EXPLAIN:
if (!(p->rec_buf = data1_nodetoexplain(p->dh, node, selected,
p->odr)))
p->diagnostic = 238;
else
- p->rec_len = -1;
+ p->rec_len = (size_t) (-1);
break;
case VAL_SUMMARY:
if (!(p->rec_buf = data1_nodetosummary(p->dh, node, selected,
p->odr)))
p->diagnostic = 238;
else
break;
case VAL_SUMMARY:
if (!(p->rec_buf = data1_nodetosummary(p->dh, node, selected,
p->odr)))
p->diagnostic = 238;
else
- p->rec_len = -1;
+ p->rec_len = (size_t) (-1);
break;
case VAL_SUTRS:
if (!(p->rec_buf = data1_nodetobuf(p->dh, node, selected,
break;
case VAL_SUTRS:
if (!(p->rec_buf = data1_nodetobuf(p->dh, node, selected,