X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=data1%2Fd1_absyn.c;h=f2a48ec9ac266101f7dc0c7cd50a1a0abce95216;hb=3e8db66d56c466a5a269362eb70b4931d9579128;hp=dec05b801e8b479743620e3c74f9d036a1197d4d;hpb=5c620c1a13f1558b1a926b401aee6c1872456bdb;p=idzebra-moved-to-github.git diff --git a/data1/d1_absyn.c b/data1/d1_absyn.c index dec05b8..f2a48ec 100644 --- a/data1/d1_absyn.c +++ b/data1/d1_absyn.c @@ -1,5 +1,5 @@ -/* $Id: d1_absyn.c,v 1.9 2003-06-12 18:20:24 adam Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 +/* $Id: d1_absyn.c,v 1.11 2004-08-24 14:29:09 adam Exp $ + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 Index Data Aps This file is part of the Zebra server. @@ -58,7 +58,7 @@ data1_absyn *data1_absyn_search (data1_handle dh, const char *name) while (p) { - if (!strcmp (name, p->name)) + if (!yaz_matchstr (name, p->name)) return p->absyn; p = p->next; } @@ -133,7 +133,7 @@ data1_attset *data1_attset_search_name (data1_handle dh, const char *name) while (p) { - if (!strcmp (name, p->name)) + if (!yaz_matchstr (name, p->name)) return p->attset; p = p->next; } @@ -362,28 +362,57 @@ const char * mk_xpath_regexp (data1_handle dh, char *expr) pop, 2002-12-13 */ static int parse_termlists (data1_handle dh, data1_termlist ***tpp, - char *p, const char *file, int lineno, + char *cp, const char *file, int lineno, const char *element_name, data1_absyn *res, int xpelement) { data1_termlist **tp = *tpp; - do + while(1) { char attname[512], structure[512]; char *source; - int r; - - if (!(r = sscanf(p, "%511[^:,]:%511[^,]", attname, - structure))) + int r, i; + int level = 0; + structure[0] = '\0'; + for (i = 0; cp[i] && inext = 0; if (!xpelement) { @@ -416,7 +445,7 @@ static int parse_termlists (data1_handle dh, data1_termlist ***tpp, nmem_strdup (data1_nmem_get (dh), structure); tp = &(*tp)->next; } - while ((p = strchr(p, ',')) && *(++p)); + *tpp = tp; return 0; }