X-Git-Url: http://jsfdemo.indexdata.com/?a=blobdiff_plain;f=util%2Fiso2709a.c;h=a802328440fe6de7a993d1c75f6332ecc9819b54;hb=6cbe4e189c7fd43512081a6766ab0cb0bf1ed551;hp=6469df12259a7f4d50aa43fb344390771bf7761a;hpb=0dc1ad90b8ec53ed1b8bb6cd2aa5e31db1556d85;p=egate.git diff --git a/util/iso2709a.c b/util/iso2709a.c index 6469df1..a802328 100644 --- a/util/iso2709a.c +++ b/util/iso2709a.c @@ -1,10 +1,59 @@ /* + * Copyright (c) 1995, the EUROPAGATE consortium (see below). + * + * The EUROPAGATE consortium members are: + * + * University College Dublin + * Danmarks Teknologiske Videnscenter + * An Chomhairle Leabharlanna + * Consejo Superior de Investigaciones Cientificas + * + * Permission to use, copy, modify, distribute, and sell this software and + * its documentation, in whole or in part, for any purpose, is hereby granted, + * provided that: + * + * 1. This copyright and permission notice appear in all copies of the + * software and its documentation. Notices of copyright or attribution + * which appear at the beginning of any file must remain unchanged. + * + * 2. The names of EUROPAGATE or the project partners may not be used to + * endorse or promote products derived from this software without specific + * prior written permission. + * + * 3. Users of this software (implementors and gateway operators) agree to + * inform the EUROPAGATE consortium of their use of the software. This + * information will be used to evaluate the EUROPAGATE project and the + * software, and to plan further developments. The consortium may use + * the information in later publications. + * + * 4. Users of this software agree to make their best efforts, when + * documenting their use of the software, to acknowledge the EUROPAGATE + * consortium, and the role played by the software in their work. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * IN NO EVENT SHALL THE EUROPAGATE CONSORTIUM OR ITS MEMBERS BE LIABLE + * FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF + * ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA + * OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND + * ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE + * USE OR PERFORMANCE OF THIS SOFTWARE. + * + */ +/* * Iso2709 record management - anchor utilities * * Europagate, 1995. * * $Log: iso2709a.c,v $ - * Revision 1.2 1995/03/30 07:33:35 adam + * Revision 1.4 1995/05/16 09:40:54 adam + * LICENSE. + * + * Revision 1.3 1995/03/30 14:22:18 adam + * More work on new MARC anchor functions. + * + * Revision 1.2 1995/03/30 07:33:35 adam * New 2709 function: iso2709_mk. * First implementation of iso2709_a_insert. * @@ -91,9 +140,17 @@ int iso2709_a_info_field (Iso2709Anchor anchor, if (tag) *tag = (*anchor->d0)->tag; if (indicator) + { *indicator = (*anchor->d0)->indicator; + if (*indicator && !**indicator) + *indicator = NULL; + } if (identifier) + { *identifier = (*anchor->f0)->identifier; + if (*identifier && !**identifier) + *identifier = NULL; + } if (data) *data = (*anchor->f0)->data; return 1; @@ -116,7 +173,6 @@ int iso2709_a_delete_field (Iso2709Anchor anchor) return 0; field = *anchor->f0; *anchor->f0 = field->next; - free (field->identifier); free (field->data); free (field); if (!*anchor->f0) @@ -201,21 +257,19 @@ int iso2709_a_insert (Iso2709Anchor a, } else dir->indicator = NULL; - dir->next = *a->d0; - *a->d0 = dir; + if (*a->d0) + a->d0 = &(*a->d0)->next; + dir->next = *a->d0; + *a->d0 = dir; dir->fields = NULL; a->f0 = &dir->fields; } if (!(field = malloc (sizeof(*field)))) return 0; if (identifier) - { - if (!(field->identifier = malloc (strlen (identifier)+1))) - return 0; strcpy (field->identifier, identifier); - } else - field->identifier = NULL; + *field->identifier = '\0'; if (!(field->data = malloc (strlen (data)+1))) return 0; strcpy (field->data, data);