X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Falvis.c;h=e168da31d2d3e4fcab305b0f33c8a9b12a5e81d3;hb=4e67b823f05b521f193af096a40c0f64758c5fc1;hp=2f917634ef11145d629161311353d5d3211b0667;hpb=be6820b238db37a855dd7b940377a427b7046d73;p=idzebra-moved-to-github.git diff --git a/index/alvis.c b/index/alvis.c index 2f91763..e168da3 100644 --- a/index/alvis.c +++ b/index/alvis.c @@ -1,5 +1,5 @@ -/* $Id: alvis.c,v 1.8 2006-12-13 13:05:45 adam Exp $ - Copyright (C) 1995-2006 +/* $Id: alvis.c,v 1.15 2007-03-19 21:50:39 adam Exp $ + Copyright (C) 1995-2007 Index Data ApS This file is part of the Zebra server. @@ -345,6 +345,7 @@ static void filter_destroy(void *clientData) { struct filter_info *tinfo = clientData; destroy_schemas(tinfo); + xfree(tinfo->full_name); if (tinfo->reader) xmlFreeTextReader(tinfo->reader); odr_destroy(tinfo->odr); @@ -434,8 +435,7 @@ static void index_record(struct filter_info *tinfo,struct recExtractCtrl *ctrl, sscanf(id_str, "%255s", ctrl->match_criteria); if (rank_str) - ctrl->staticrank = atoi(rank_str); - + ctrl->staticrank = atozint(rank_str); ptr = ptr->children; } @@ -508,7 +508,9 @@ static int extract_split(struct filter_info *tinfo, struct recExtractCtrl *p) p /* I/O handler */, 0 /* URL */, 0 /* encoding */, - XML_PARSE_XINCLUDE); + XML_PARSE_XINCLUDE + | XML_PARSE_NOENT + | XML_PARSE_NONET); } if (!tinfo->reader) return RECCTRL_EXTRACT_ERROR_GENERIC; @@ -551,11 +553,17 @@ static int extract_full(struct filter_info *tinfo, struct recExtractCtrl *p) xmlDocPtr doc = xmlReadIO(ioread_ex, ioclose_ex, p /* I/O handler */, 0 /* URL */, 0 /* encoding */, - XML_PARSE_XINCLUDE); + XML_PARSE_XINCLUDE + | XML_PARSE_NOENT + | XML_PARSE_NONET); if (!doc) - { return RECCTRL_EXTRACT_ERROR_GENERIC; - } + /* else { + xmlNodePtr root = xmlDocGetRootElement(doc); + if (!root) + return RECCTRL_EXTRACT_ERROR_GENERIC; + } */ + return extract_doc(tinfo, p, doc); } else @@ -624,10 +632,10 @@ static const char *snippet_doc(struct recRetrieveCtrl *p, int text_mode, else wrbuf_printf(wrbuf, "\n"); - xml_doc_str = odr_strdup(p->odr, wrbuf_buf(wrbuf)); + xml_doc_str = odr_strdup(p->odr, wrbuf_cstr(wrbuf)); zebra_snippets_destroy(res); - wrbuf_free(wrbuf, 1); + wrbuf_destroy(wrbuf); return xml_doc_str; } @@ -695,7 +703,7 @@ static int filter_retrieve (void *clientData, struct recRetrieveCtrl *p) doc = xmlReadIO(ioread_ret, ioclose_ret, p /* I/O handler */, 0 /* URL */, 0 /* encoding */, - XML_PARSE_XINCLUDE); + XML_PARSE_XINCLUDE | XML_PARSE_NOENT | XML_PARSE_NONET); if (!doc) { p->diagnostic = YAZ_BIB1_SYSTEM_ERROR_IN_PRESENTING_RECORDS;