dnl Zebra, Index Data ApS, 1995-2007
-dnl $Id: configure.ac,v 1.55 2007-05-03 07:20:19 adam Exp $
+dnl $Id: configure.ac,v 1.56 2007-05-08 12:50:03 adam Exp $
dnl
AC_PREREQ(2.59)
AC_INIT([idzebra],[2.0.13],[zebra-help@indexdata.dk])
fi
dnl
dnl ------ YAZ
-YAZ_INIT([server],3.0.0)
+YAZ_INIT([server],[3.0.2])
if test "$YAZVERSION" = "NONE"; then
AC_MSG_ERROR([YAZ development libraries required])
fi
-/* $Id: d1_absyn.c,v 1.35 2007-04-16 08:44:31 adam Exp $
+/* $Id: d1_absyn.c,v 1.36 2007-05-08 12:50:03 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
return 0;
}
-data1_attset *data1_attset_search_id(data1_handle dh, const int *oid)
+data1_attset *data1_attset_search_id(data1_handle dh, const Odr_oid *oid)
{
data1_attset_cache p = *data1_attset_cache_get (dh);
-/* $Id: d1_doespec.c,v 1.14 2007-04-16 21:54:37 adam Exp $
+/* $Id: d1_doespec.c,v 1.15 2007-05-08 12:50:03 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
* set is the set to look for, universal set is the set that applies to a
* triple with an unknown set.
*/
-static Z_Triple *find_triple(Z_Variant *var, const int *universal_oid,
- const int *var_oid, int zclass, int type)
+static Z_Triple *find_triple(Z_Variant *var, const Odr_oid *universal_oid,
+ const Odr_oid *var_oid, int zclass, int type)
{
int i;
for (i = 0; i < var->num_triples; i++)
{
- const int *cur_oid = var->triples[i]->variantSetId;
+ const Odr_oid *cur_oid = var->triples[i]->variantSetId;
if (!cur_oid)
cur_oid = var->globalVariantSetId;
if (cur_oid && var_oid
static void match_triple(data1_handle dh, Z_Variant *vreq,
- const int *def_oid,
- const int *var_oid, data1_node *n)
+ const Odr_oid *def_oid,
+ const Odr_oid *var_oid, data1_node *n)
{
data1_node **c;
Z_Variant *vreq =
e->elements[i]->u.simpleElement->variantRequest;
- const int *var_oid = yaz_oid_varset_variant_1;
+ const Odr_oid *var_oid = yaz_oid_varset_variant_1;
if (!vreq)
vreq = e->defaultVariantRequest;
-/* $Id: d1_expout.c,v 1.10 2007-04-16 08:44:31 adam Exp $
+/* $Id: d1_expout.c,v 1.11 2007-05-08 12:50:03 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
++(*num);
if (!*num)
return NULL;
- res = (int **)odr_malloc (eh->o, sizeof(*res) * (*num));
+ res = (Odr_oid **)odr_malloc (eh->o, sizeof(*res) * (*num));
for (c = n->child, i = 0 ; c; c = c->next)
if (is_numeric_tag (eh, c) == 1000)
res[i++] = f_oid (eh, c, oclass);
Maintainer: Adam Dickmeiss <adam@indexdata.dk>
Build-Depends: debhelper (>= 4.0.0)
Standards-Version: 3.6.0
-Build-Depends: libyaz3-dev (>= 3.0.0), libexpat1-dev, tcl8.4-dev, libbz2-dev, libxslt1-dev
+Build-Depends: libyaz3-dev (>= 3.0.2), libexpat1-dev, tcl8.4-dev, libbz2-dev, libxslt1-dev
Package: idzebra-2.0
Section: text
-/* $Id: attrfind.h,v 1.4 2007-04-16 08:44:31 adam Exp $
+/* $Id: attrfind.h,v 1.5 2007-05-08 12:50:03 adam Exp $
Copyright (C) 2005-2007
Index Data ApS
void attr_init_AttrList(AttrType *src, Z_AttributeList *list, int type);
-int attr_find_ex(AttrType *src, const int **attribute_set_oid,
+int attr_find_ex(AttrType *src, const Odr_oid **attribute_set_oid,
const char **string_value);
-int attr_find(AttrType *src, const int **attribute_set_oid);
+int attr_find(AttrType *src, const Odr_oid **attribute_set_oid);
YAZ_END_CDECL
-/* $Id: d1_absyn.h,v 1.12 2007-04-16 08:44:31 adam Exp $
+/* $Id: d1_absyn.h,v 1.13 2007-05-08 12:50:03 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
struct data1_absyn
{
char *name;
- int *oid;
+ Odr_oid *oid;
data1_tagset *tagset;
data1_varset *varset;
data1_esetname *esetnames;
-/* $Id: api.h,v 1.48 2007-04-16 08:44:31 adam Exp $
+/* $Id: api.h,v 1.49 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
int position; /* position of record in result set (1,2,..) */
char *buf; /* record buffer (void pointer really) */
int len; /* length */
- const int *format; /* record syntax */
+ const Odr_oid *format; /* record syntax */
char *base;
zint sysno;
int score;
ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream,
const char *setname,
Z_RecordComposition *comp,
- const int *input_format,
+ const Odr_oid *input_format,
int num_recs,
ZebraRetrievalRecord *recs);
/** \brief Deletes one or more resultsets
*/
YAZ_EXPORT ZEBRA_RES zebra_scan(ZebraHandle zh, ODR stream,
Z_AttributesPlusTerm *zapt,
- const int *attributeset,
+ const Odr_oid *attributeset,
int *position, int *num_entries,
ZebraScanEntry **entries,
int *is_partial,
-/* $Id: data1.h,v 1.22 2007-04-16 08:44:31 adam Exp $
+/* $Id: data1.h,v 1.23 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
struct data1_attset
{
char *name; /* symbolic name */
- int *oid; /* attribute set OID */
+ Odr_oid *oid; /* attribute set OID */
data1_att *atts; /* attributes */
data1_attset_child *children; /* included attset */
data1_attset *next; /* next in cache */
typedef struct data1_maptab
{
char *name;
- int *oid; /* target abstract syntax */
+ Odr_oid *oid; /* target abstract syntax */
char *target_absyn_name;
data1_mapunit *map;
struct data1_maptab *next;
typedef struct data1_marctab
{
char *name;
- int *oid; /* MARC OID */
+ Odr_oid *oid; /* MARC OID */
char record_status[2];
char implementation_codes[5];
typedef struct data1_varset
{
char *name;
- int *oid; /* variant OID */
+ Odr_oid *oid; /* variant OID */
data1_varclass *classes;
} data1_varset;
{
int type; /* type of tagset in current context */
char *name; /* symbolic name */
- int *oid; /* variant OID */
+ Odr_oid *oid; /* variant OID */
data1_tag *tags; /* tags defined by this set */
data1_tagset *children; /* children */
data1_tagset *next; /* sibling */
void *h, data1_absyn *a));
YAZ_EXPORT data1_attset *data1_attset_search_id (data1_handle dh,
- const int *oid);
+ const Odr_oid *oid);
YAZ_EXPORT char *data1_getNodeValue(data1_node* node, char* pTagPath);
YAZ_EXPORT data1_node *data1_LookupNode(data1_node* node, char* pTagPath);
-/* $Id: recctrl.h,v 1.34 2007-04-16 08:44:31 adam Exp $
+/* $Id: recctrl.h,v 1.35 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
/* Input parameters ... */
Res res; /* Resource pool */
ODR odr; /* ODR used to create response */
- const int*input_format; /* Preferred record syntax OID */
+ const Odr_oid * input_format; /* Preferred record syntax OID */
Z_RecordComposition *comp; /* formatting instructions */
char *encoding; /* preferred character encoding */
zint localno; /* local id of record */
zebra_snippets *doc_snippet;
/* response */
- const int *output_format; /* output format OID */
+ const Odr_oid * output_format; /* output format OID */
void * rec_buf;
int rec_len;
int diagnostic;
-/* $Id: attribute.c,v 1.30 2007-04-16 21:54:37 adam Exp $
+/* $Id: attribute.c,v 1.31 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
return 0;
}
-static int att_getentbyatt(ZebraHandle zi, const int *set, int att,
+static int att_getentbyatt(ZebraHandle zi, const Odr_oid *set, int att,
const char **name)
{
data1_att *r;
Z_AttributeList *attr_list,
zinfo_index_category_t cat,
int index_type,
- const int *curAttributeSet,
+ const Odr_oid *curAttributeSet,
int *ord)
{
int use_value = -1;
Z_AttributesPlusTerm *zapt,
int index_type,
const char *xpath_use,
- const int *curAttributeSet,
+ const Odr_oid *curAttributeSet,
int *ord)
{
ZEBRA_RES res = ZEBRA_OK;
-/* $Id: extract.c,v 1.256 2007-04-25 08:22:01 adam Exp $
+/* $Id: extract.c,v 1.257 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
}
+static WRBUF wrbuf_hex_str(const char *cstr)
+{
+ size_t i;
+ WRBUF w = wrbuf_alloc();
+ for (i = 0; cstr[i]; i++)
+ {
+ if (cstr[i] < ' ' || cstr[i] > 126)
+ wrbuf_printf(w, "\\%02X", cstr[i] & 0xff);
+ else
+ wrbuf_putc(w, cstr[i]);
+ }
+ return w;
+}
+
ZEBRA_RES zebra_extract_record_stream(ZebraHandle zh,
struct ZebraRecStream *stream,
enum zebra_recctrl_action_t action,
int db_ord = zebraExplain_get_database_ord(zh->reg->zei);
char *rinfo = dict_lookup_ord(zh->reg->matchDict, db_ord,
matchStr);
+
+
+ if (1)
+ {
+ WRBUF w = wrbuf_hex_str(matchStr);
+ yaz_log(YLOG_LOG, "matchStr: %s", wrbuf_cstr(w));
+ wrbuf_destroy(w);
+ }
if (rinfo)
{
assert(*rinfo == sizeof(*sysno));
memcpy (sysno, rinfo+1, sizeof(*sysno));
}
- }
+ }
}
if (zebra_rec_keys_empty(zh->reg->keys))
{
-/* $Id: index.h,v 1.197 2007-04-16 08:44:31 adam Exp $
+/* $Id: index.h,v 1.198 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
struct rset_key_control *zebra_key_control_create(ZebraHandle zh);
ZEBRA_RES rpn_search_top(ZebraHandle zh, Z_RPNStructure *zs,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream, NMEM rset_nmem,
Z_SortKeySpecList *sort_sequence,
int num_bases, char **basenames,
zint *approx_limit);
ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
- const int *attributeset,
+ const Odr_oid *attributeset,
int num_bases, char **basenames,
int *position, int *num_entries, ZebraScanEntry **list,
int *is_partial, RSET limit_set);
int zebra_record_fetch(ZebraHandle zh, zint sysno, int score,
zebra_snippets *hit_snippet, ODR stream,
- const int *input_format, Z_RecordComposition *comp,
- const int **output_format, char **rec_bufp,
+ const Odr_oid *input_format, Z_RecordComposition *comp,
+ const Odr_oid **output_format, char **rec_bufp,
int *rec_lenp, char **basenamep,
char **addinfo);
Z_AttributesPlusTerm *zapt,
int index_type,
const char *xpath_use,
- const int *curAttributeSet,
+ const Odr_oid *curAttributeSet,
int *ord);
ZEBRA_RES zebra_attr_list_get_ord(ZebraHandle zh,
Z_AttributeList *attr_list,
zinfo_index_category_t cat,
int index_type,
- const int *curAttributeSet,
+ const Odr_oid *curAttributeSet,
int *ord);
ZEBRA_RES zebra_sort_get_ord(ZebraHandle zh,
-/* $Id: recgrs.c,v 1.18 2007-04-16 21:54:37 adam Exp $
+/* $Id: recgrs.c,v 1.19 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
struct grs_read_info gri;
const char *tagname;
- const int *requested_schema = 0;
+ const Odr_oid *requested_schema = 0;
data1_marctab *marctab;
int dummy;
-/* $Id: retrieve.c,v 1.69 2007-04-16 21:54:37 adam Exp $
+/* $Id: retrieve.c,v 1.70 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
int zebra_special_sort_fetch(ZebraHandle zh, zint sysno, ODR odr,
const char *elemsetname,
- const int *input_format,
- const int **output_format,
+ const Odr_oid *input_format,
+ const Odr_oid **output_format,
char **rec_bufp, int *rec_lenp)
{
const char *retrieval_index;
int zebra_special_index_fetch(ZebraHandle zh, zint sysno, ODR odr,
Record rec,
const char *elemsetname,
- const int *input_format,
- const int **output_format,
+ const Odr_oid *input_format,
+ const Odr_oid **output_format,
char **rec_bufp, int *rec_lenp)
{
const char *retrieval_index;
int zebra_special_fetch(ZebraHandle zh, zint sysno, int score, ODR odr,
const char *elemsetname,
- const int *input_format,
- const int **output_format,
+ const Odr_oid *input_format,
+ const Odr_oid **output_format,
char **rec_bufp, int *rec_lenp)
{
Record rec;
int zebra_record_fetch(ZebraHandle zh, zint sysno, int score,
zebra_snippets *hit_snippet, ODR odr,
- const int *input_format, Z_RecordComposition *comp,
- const int **output_format,
+ const Odr_oid *input_format, Z_RecordComposition *comp,
+ const Odr_oid **output_format,
char **rec_bufp, int *rec_lenp, char **basenamep,
char **addinfo)
{
-/* $Id: rpnscan.c,v 1.8 2007-04-16 21:54:37 adam Exp $
+/* $Id: rpnscan.c,v 1.9 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
};
ZEBRA_RES rpn_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
- const int *attributeset,
+ const Odr_oid *attributeset,
int num_bases, char **basenames,
int *position, int *num_entries, ZebraScanEntry **list,
int *is_partial, RSET limit_set)
-/* $Id: rpnsearch.c,v 1.11 2007-04-16 08:44:32 adam Exp $
+/* $Id: rpnsearch.c,v 1.12 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
*/
static int string_relation(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
const char **term_sub, char *term_dict,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
int reg_type, int space_split, char *term_dst,
int *error_code)
{
static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
const char **term_sub,
- const int *attributeSet, NMEM stream,
+ const Odr_oid *attributeSet, NMEM stream,
struct grep_info *grep_info,
int reg_type, int complete_flag,
int num_bases, char **basenames,
static ZEBRA_RES term_trunc(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
const char **term_sub,
- const int *attributeSet, NMEM stream,
+ const Odr_oid *attributeSet, NMEM stream,
struct grep_info *grep_info,
int reg_type, int complete_flag,
int num_bases, char **basenames,
static ZEBRA_RES string_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
const char **term_sub,
- const int *attributeSet, NMEM stream,
+ const Odr_oid *attributeSet, NMEM stream,
struct grep_info *grep_info,
int reg_type, int complete_flag,
int num_bases, char **basenames,
static ZEBRA_RES term_list_trunc(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
const char *termz,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream,
int reg_type, int complete_flag,
const char *rank_type,
static ZEBRA_RES rpn_search_APT_position(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
int reg_type,
int num_bases, char **basenames,
NMEM rset_nmem,
static ZEBRA_RES rpn_search_APT_phrase(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
const char *termz_org,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream,
int reg_type, int complete_flag,
const char *rank_type,
static ZEBRA_RES rpn_search_APT_or_list(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
const char *termz_org,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream,
int reg_type, int complete_flag,
const char *rank_type,
static ZEBRA_RES rpn_search_APT_and_list(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
const char *termz_org,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream,
int reg_type, int complete_flag,
const char *rank_type,
static int numeric_relation(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
const char **term_sub,
char *term_dict,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
struct grep_info *grep_info,
int *max_pos,
int reg_type,
static ZEBRA_RES numeric_term(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
const char **term_sub,
- const int *attributeSet, NMEM stream,
+ const Odr_oid *attributeSet, NMEM stream,
struct grep_info *grep_info,
int reg_type, int complete_flag,
int num_bases, char **basenames,
static ZEBRA_RES rpn_search_APT_numeric(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
const char *termz,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream,
int reg_type, int complete_flag,
const char *rank_type,
static ZEBRA_RES rpn_search_APT_local(ZebraHandle zh,
Z_AttributesPlusTerm *zapt,
const char *termz,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream,
const char *rank_type, NMEM rset_nmem,
RSET *rset,
}
static ZEBRA_RES rpn_sort_spec(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
- const int *attributeSet, NMEM stream,
+ const Odr_oid *attributeSet, NMEM stream,
Z_SortKeySpecList *sort_sequence,
const char *rank_type,
NMEM rset_nmem,
static int rpn_check_xpath(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
struct xpath_location_step *xpath, int max,
NMEM mem)
{
- const int *curAttributeSet = attributeSet;
+ const Odr_oid *curAttributeSet = attributeSet;
AttrType use;
const char *use_string = 0;
#define MAX_XPATH_STEPS 10
static ZEBRA_RES rpn_search_APT(ZebraHandle zh, Z_AttributesPlusTerm *zapt,
- const int *attributeSet, NMEM stream,
+ const Odr_oid *attributeSet, NMEM stream,
Z_SortKeySpecList *sort_sequence,
int num_bases, char **basenames,
NMEM rset_nmem,
}
static ZEBRA_RES rpn_search_structure(ZebraHandle zh, Z_RPNStructure *zs,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream, NMEM rset_nmem,
Z_SortKeySpecList *sort_sequence,
int num_bases, char **basenames,
}
ZEBRA_RES rpn_search_top(ZebraHandle zh, Z_RPNStructure *zs,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream, NMEM rset_nmem,
Z_SortKeySpecList *sort_sequence,
int num_bases, char **basenames,
}
ZEBRA_RES rpn_search_structure(ZebraHandle zh, Z_RPNStructure *zs,
- const int *attributeSet,
+ const Odr_oid *attributeSet,
NMEM stream, NMEM rset_nmem,
Z_SortKeySpecList *sort_sequence,
int num_bases, char **basenames,
-/* $Id: zebraapi.c,v 1.254 2007-04-16 21:54:37 adam Exp $
+/* $Id: zebraapi.c,v 1.255 2007-05-08 12:50:04 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
ZEBRA_RES zebra_records_retrieve(ZebraHandle zh, ODR stream,
const char *setname,
Z_RecordComposition *comp,
- const int *input_format, int num_recs,
+ const Odr_oid *input_format, int num_recs,
ZebraRetrievalRecord *recs)
{
ZebraMetaRecord *poset;
{
YAZ_PQF_Parser pqf_parser = yaz_pqf_create ();
Z_AttributesPlusTerm *zapt;
- int *attributeSet;
+ Odr_oid *attributeSet;
ZEBRA_RES res;
if (!(zapt = yaz_pqf_scan(pqf_parser, stream, &attributeSet, query)))
}
ZEBRA_RES zebra_scan(ZebraHandle zh, ODR stream, Z_AttributesPlusTerm *zapt,
- const int *attributeset,
+ const Odr_oid *attributeset,
int *position,
int *num_entries, ZebraScanEntry **entries,
int *is_partial,
-/* $Id: t16.c,v 1.11 2007-04-16 21:54:37 adam Exp $
+/* $Id: t16.c,v 1.12 2007-05-08 12:50:05 adam Exp $
Copyright (C) 1995-2007
Index Data ApS
#define NUMBER_TO_FETCH_MAX 1000
static ZEBRA_RES fetch_first(ZebraHandle zh, const char *element_set,
- const int * format, ODR odr,
+ const Odr_oid * format, ODR odr,
const char **rec_buf, size_t *rec_len)
{
ZebraRetrievalRecord retrievalRecord[1];
}
static ZEBRA_RES fetch_first_compare(ZebraHandle zh, const char *element_set,
- const int *format, const char *cmp_rec)
+ const Odr_oid *format, const char *cmp_rec)
{
const char *rec_buf = 0;
size_t rec_len = 0;
<record xmlns="http://www.loc.gov/MARC21/slim">
<leader>00366nam 22001698a 4500</leader>
- <controlfield tag="001"> 11224466 </controlfield>
+ <controlfield tag="001">11224466</controlfield>
<controlfield tag="003">DLC </controlfield>
<controlfield tag="005">00000000000000.0 </controlfield>
<controlfield tag="008">910710c19910701nju 00010 eng </controlfield>
-# $Id: record.abs,v 1.9 2006-09-28 08:47:10 adam Exp $
+# $Id: record.abs,v 1.10 2007-05-08 12:50:06 adam Exp $
name marcxml
attset bib1.att
xpath disable
xelm /record/leader leader:w:range(data,0,5),leader2:w:range(data,5,3)
-melm 001 Identifier-Standard:w
+melm 001 Identifier-Standard:0
melm 008 Code-Language:w
melm 017 Number-legal-deposit,Identifier-standard
melm 018 Identifier-standard
-/* $Id: attrfind.c,v 1.3 2007-04-16 08:44:33 adam Exp $
+/* $Id: attrfind.c,v 1.4 2007-05-08 12:50:06 adam Exp $
Copyright (C) 2005-2007
Index Data ApS
src->minor = 0;
}
-int attr_find_ex(AttrType *src, const int **attribute_set_oid,
+int attr_find_ex(AttrType *src, const Odr_oid **attribute_set_oid,
const char **string_value)
{
int num_attributes;
return -1;
}
-int attr_find(AttrType *src, const int **attribute_set_id)
+int attr_find(AttrType *src, const Odr_oid **attribute_set_id)
{
return attr_find_ex(src, attribute_set_id, 0);
}