X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=recctrl%2Frecgrs.c;h=a0cdef7c9a54e146f2b1f9f2cfff24a7301dd4ae;hb=9823f7a1e997efcb035afcaa26718b8b7f87fc0a;hp=ae5a782b93e8b1200006ee25376e037bb64fad3e;hpb=26a5a4b96b90361859cf856d6c41852b03ca2f84;p=idzebra-moved-to-github.git diff --git a/recctrl/recgrs.c b/recctrl/recgrs.c index ae5a782..a0cdef7 100644 --- a/recctrl/recgrs.c +++ b/recctrl/recgrs.c @@ -1,5 +1,5 @@ -/* $Id: recgrs.c,v 1.72 2003-02-04 12:06:47 pop Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 +/* $Id: recgrs.c,v 1.75 2003-03-08 14:27:58 pop Exp $ + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 Index Data Aps This file is part of the Zebra server. @@ -214,7 +214,7 @@ data1_termlist *xpath_termlist_by_tagpath(char *tagpath, data1_node *n) struct xpath_location_step *xp; #endif - char *pexpr = malloc(strlen(tagpath)+2); + char *pexpr = xmalloc(strlen(tagpath)+2); int ok = 0; sprintf (pexpr, "%s\n", tagpath); @@ -279,6 +279,8 @@ data1_termlist *xpath_termlist_by_tagpath(char *tagpath, data1_node *n) } xpe = xpe->next; } + + xfree(pexpr); if (ok) { logf(LOG_DEBUG,"Got it"); @@ -968,14 +970,25 @@ static int grs_retrieve(void *clientData, struct recRetrieveCtrl *p) #if 0 data1_pr_tree (p->dh, node, stdout); #endif +#if YAZ_VERSIONL >= 0x010903L if (p->comp && p->comp->which == Z_RecordComp_complex && p->comp->u.complex->generic && - p->comp->u.complex->generic->schema) + p->comp->u.complex->generic->which == Z_Schema_oid && + p->comp->u.complex->generic->schema.oid) + { + oident *oe = oid_getentbyoid (p->comp->u.complex->generic->schema.oid); + if (oe) + requested_schema = oe->value; + } +#else + if (p->comp && p->comp->which == Z_RecordComp_complex && + p->comp->u.complex->generic && p->comp->u.complex->generic->schema) { oident *oe = oid_getentbyoid (p->comp->u.complex->generic->schema); if (oe) requested_schema = oe->value; } +#endif /* If schema has been specified, map if possible, then check that * we got the right one