X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=data1%2Fd1_attset.c;h=fe948b0b24f6421d71a29fe0e1295aecb25b9f78;hb=eb44a82db835f33bbd984072ee18dd2ec34ae9cb;hp=40e1b0493152d911cddecd6ee747ea7d5e142f9e;hpb=6ba9698e88c0283e40fa5980a1a6b551fff2d597;p=idzebra-moved-to-github.git diff --git a/data1/d1_attset.c b/data1/d1_attset.c index 40e1b04..fe948b0 100644 --- a/data1/d1_attset.c +++ b/data1/d1_attset.c @@ -1,4 +1,4 @@ -/* $Id: d1_attset.c,v 1.9 2006-05-19 13:49:33 adam Exp $ +/* $Id: d1_attset.c,v 1.12 2006-08-23 13:56:07 adam Exp $ Copyright (C) 1995-2006 Index Data ApS @@ -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 @@ -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(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; }