X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fattribute.c;h=4ea12f7e72859c905df3cafae8872f80fd29d871;hb=6c9fcd3b5d3108702fa1ffc92dab4ab6060f9a19;hp=11914bd79e48454a9d51be6356d105e9916bce8e;hpb=896c0427df9d8eff5de6a1735dcd992e067df844;p=idzebra-moved-to-github.git diff --git a/index/attribute.c b/index/attribute.c index 11914bd..4ea12f7 100644 --- a/index/attribute.c +++ b/index/attribute.c @@ -1,6 +1,6 @@ -/* $Id: attribute.c,v 1.14 2002-08-02 19:26:55 adam Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 - Index Data Aps +/* $Id: attribute.c,v 1.19 2005-01-15 19:38:24 adam Exp $ + Copyright (C) 1995-2005 + Index Data ApS This file is part of the Zebra server. @@ -25,27 +25,30 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include -#include +#include #include #include "index.h" -static data1_att *getatt(data1_attset *p, int att) +static data1_att *getatt(data1_attset *p, int att, const char *sattr) { data1_att *a; data1_attset_child *c; /* scan local set */ for (a = p->atts; a; a = a->next) - if (a->value == att) + if (sattr && !yaz_matchstr(sattr, a->name)) + return a; + else if (a->value == att) return a; /* scan included sets */ for (c = p->children; c; c = c->next) - if ((a = getatt(c->child, att))) + if ((a = getatt(c->child, att, sattr))) return a; return 0; } -int att_getentbyatt(ZebraHandle zi, attent *res, oid_value set, int att) +int att_getentbyatt(ZebraHandle zi, attent *res, oid_value set, int att, + const char *sattr) { data1_att *r; data1_attset *p; @@ -57,7 +60,7 @@ int att_getentbyatt(ZebraHandle zi, attent *res, oid_value set, int att) } if (!p) return -2; - if (!(r = getatt(p, att))) + if (!(r = getatt(p, att, sattr))) return -1; res->attset_ordinal = r->parent->reference; res->local_attributes = r->locals;