X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=data1%2Fd1_attset.c;h=4e2bd9ef4c8b16791c4e90e44dac589aaacb8cbf;hp=904d25a9b905e4bfadc3e99619e9e1c00c5ee32c;hb=89d3a004b7c651fd5673abfc192e1472dc4d4197;hpb=975930cb88b6d7b8a280f7d995d10bd988b6f04e diff --git a/data1/d1_attset.c b/data1/d1_attset.c index 904d25a..4e2bd9e 100644 --- a/data1/d1_attset.c +++ b/data1/d1_attset.c @@ -1,6 +1,6 @@ -/* $Id: d1_attset.c,v 1.4 2004-09-28 10:43:37 adam Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 - Index Data Aps +/* $Id: d1_attset.c,v 1.13 2007-01-15 15:10:14 adam Exp $ + Copyright (C) 1995-2007 + Index Data ApS This file is part of the Zebra server. @@ -15,9 +15,9 @@ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License -along with Zebra; see the file LICENSE.zebra. If not, write to the -Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA -02111-1307, USA. +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ #include @@ -27,21 +27,21 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #include -data1_att *data1_getattbyname(data1_handle dh, data1_attset *s, char *name) +data1_att *data1_getattbyname(data1_handle dh, data1_attset *s, const char *name) { data1_att *r; data1_attset_child *c; /* scan local set */ for (r = s->atts; r; r = r->next) - if (!data1_matchstr(r->name, name)) - return r; + if (!data1_matchstr(r->name, name)) + return r; for (c = s->children; c; c = c->next) { - assert (c->child); - /* scan included sets */ - if ((r = data1_getattbyname (dh, c->child, name))) - return r; + assert (c->child); + /* scan included sets */ + if ((r = data1_getattbyname (dh, c->child, name))) + return r; } return 0; } @@ -84,43 +84,32 @@ data1_attset *data1_read_attset(data1_handle dh, const char *file) { int num; char *name; + char *endptr; data1_att *t; - data1_local_attribute *locals; if (argc < 3) { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to att", file, lineno); + yaz_log(YLOG_WARN, "%s:%d: Bad # of args to att", file, lineno); continue; } - num = atoi (argv[1]); + if (argc > 3) + { + yaz_log(YLOG_WARN, "%s:%d: Local attributes not supported", + file, lineno); + } + num = strtol(argv[1], &endptr, 10); + if (*endptr != '\0') + { + yaz_log(YLOG_WARN, "%s:%d: Bad attribute integer %s", + file, lineno, argv[1]); + continue; + } name = argv[2]; - if (argc == 3) /* no local attributes given */ - { - locals = (data1_local_attribute *) - nmem_malloc(mem, sizeof(*locals)); - locals->local = num; - locals->next = 0; - } - else /* parse the string "local{,local}" */ - { - char *p = argv[3]; - data1_local_attribute **ap = &locals; - do - { - *ap = (data1_local_attribute *) - nmem_malloc(mem, sizeof(**ap)); - (*ap)->local = atoi(p); - (*ap)->next = 0; - ap = &(*ap)->next; - } - while ((p = strchr(p, ',')) && *(++p)); - } t = *attp = (data1_att *)nmem_malloc(mem, sizeof(*t)); t->parent = res; t->name = nmem_strdup(mem, name); t->value = num; - t->locals = locals; t->next = 0; attp = &t->next; } @@ -128,7 +117,7 @@ data1_attset *data1_read_attset(data1_handle dh, const char *file) { if (argc != 2) { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to name", file, lineno); + yaz_log(YLOG_WARN, "%s:%d: Bad # of args to name", file, lineno); continue; } } @@ -138,14 +127,14 @@ data1_attset *data1_read_attset(data1_handle dh, const char *file) if (argc != 2) { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to reference", + yaz_log(YLOG_WARN, "%s:%d: Bad # of args to reference", file, lineno); continue; } name = argv[1]; if ((res->reference = oid_getvalbyname(name)) == VAL_NONE) { - yaz_log(LOG_WARN, "%s:%d: Unknown reference oid '%s'", + yaz_log(YLOG_WARN, "%s:%d: Unknown reference oid '%s'", file, lineno, name); fclose(f); return 0; @@ -153,7 +142,7 @@ data1_attset *data1_read_attset(data1_handle dh, const char *file) } else if (!strcmp(cmd, "ordinal")) { - yaz_log (LOG_WARN, "%s:%d: Directive ordinal ignored", + yaz_log (YLOG_WARN, "%s:%d: Directive ordinal ignored", file, lineno); } else if (!strcmp(cmd, "include")) @@ -163,7 +152,7 @@ data1_attset *data1_read_attset(data1_handle dh, const char *file) if (argc != 2) { - yaz_log(LOG_WARN, "%s:%d: Bad # of args to include", + yaz_log(YLOG_WARN, "%s:%d: Bad # of args to include", file, lineno); continue; } @@ -171,7 +160,7 @@ data1_attset *data1_read_attset(data1_handle dh, const char *file) if (!(attset = data1_get_attset (dh, name))) { - yaz_log(LOG_WARN, "%s:%d: Include of attset %s failed", + yaz_log(YLOG_WARN, "%s:%d: Include of attset %s failed", file, lineno, name); continue; @@ -184,10 +173,18 @@ data1_attset *data1_read_attset(data1_handle dh, const char *file) } else { - yaz_log(LOG_WARN, "%s:%d: Unknown directive '%s'", + yaz_log(YLOG_WARN, "%s:%d: Unknown directive '%s'", file, lineno, cmd); } } fclose(f); return res; } +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +