X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fattribute.c;h=51a5be086c23689cc53da675782b7b0f84a3c36e;hb=ddcf0c647f3685b150885b547cd7d7cb71d5f722;hp=11914bd79e48454a9d51be6356d105e9916bce8e;hpb=896c0427df9d8eff5de6a1735dcd992e067df844;p=idzebra-moved-to-github.git diff --git a/index/attribute.c b/index/attribute.c index 11914bd..51a5be0 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.20 2005-03-30 09:25:23 adam Exp $ + Copyright (C) 1995-2005 + Index Data ApS This file is part of the Zebra server. @@ -20,32 +20,33 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - #include #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 +58,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;