X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=recctrl%2Fmarcread.c;h=7e072aa85cc5c23af053ae984e5f229acf4257c3;hb=5e7516d00451ada59a311fad05e8e3959242cdc7;hp=49d724d28d4506079a953a50b00b528b5523df6f;hpb=3c5f6226f97612c0d6ac40591f600587c5ffa858;p=idzebra-moved-to-github.git diff --git a/recctrl/marcread.c b/recctrl/marcread.c index 49d724d..7e072aa 100644 --- a/recctrl/marcread.c +++ b/recctrl/marcread.c @@ -4,7 +4,25 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: marcread.c,v $ - * Revision 1.6 1999-02-02 14:51:27 adam + * Revision 1.12 2002-04-09 14:36:53 adam + * Fix XML attributes for MARC reader + * + * Revision 1.11 2000/05/15 15:32:51 adam + * Added support for 64 bit input file support. + * + * Revision 1.10 1999/11/30 13:48:04 adam + * Improved installation. Updated for inclusion of YAZ header files. + * + * Revision 1.9 1999/06/25 13:47:25 adam + * Minor change that prevents MSVC warning. + * + * Revision 1.8 1999/05/26 07:49:14 adam + * C++ compilation. + * + * Revision 1.7 1999/05/20 12:57:18 adam + * Implemented TCL filter. Updated recctrl system. + * + * Revision 1.6 1999/02/02 14:51:27 adam * Updated WIN32 code specific sections. Changed header. * * Revision 1.5 1997/11/18 10:03:24 adam @@ -29,9 +47,9 @@ #include #include -#include -#include -#include +#include +#include +#include #include "grsread.h" data1_node *data1_mk_node_wp (data1_handle dh, NMEM mem, data1_node *parent) @@ -68,7 +86,7 @@ data1_node *data1_mk_node_text (data1_handle dh, NMEM mem, data1_node *parent, res->u.data.what = DATA1I_text; res->u.data.len = len; if (res->u.data.len > DATA1_LOCALDATA) { - res->u.data.data = xmalloc (res->u.data.len); + res->u.data.data = (char *) xmalloc (res->u.data.len); res->destroy = destroy_data; } else @@ -91,6 +109,9 @@ data1_node *data1_mk_node_tag (data1_handle dh, NMEM mem, data1_node *parent, res->which = DATA1N_tag; res->u.tag.tag = res->lbuf; res->u.tag.get_bytes = -1; +#if DATA1_USING_XATTR + res->u.tag.attributes = 0; +#endif if (len >= DATA1_LOCALDATA) len = DATA1_LOCALDATA-1; @@ -154,7 +175,8 @@ data1_node *grs_read_marc (struct grs_read_info *p) if (read_bytes == record_length - 4) { off_t cur_offset = (*p->tellf)(p->fh); - assert (cur_offset > 26); + if (cur_offset <= 27) + return NULL; if (p->endf) (*p->endf)(p->fh, cur_offset - 1); } @@ -167,7 +189,7 @@ data1_node *grs_read_marc (struct grs_read_info *p) } res_root = data1_mk_node_wp (p->dh, p->mem, NULL); res_root->which = DATA1N_root; - res_root->u.root.type = nmem_malloc (p->mem, strlen(absynName)+1); + res_root->u.root.type = (char *) nmem_malloc (p->mem, strlen(absynName)+1); strcpy (res_root->u.root.type, absynName); res_root->u.root.absyn = absyn; @@ -285,3 +307,21 @@ data1_node *grs_read_marc (struct grs_read_info *p) } return res_root; } + +static void *grs_init_marc(void) +{ + return 0; +} + +static void grs_destroy_marc(void *clientData) +{ +} + +static struct recTypeGrs marc_type = { + "marc", + grs_init_marc, + grs_destroy_marc, + grs_read_marc +}; + +RecTypeGrs recTypeGrs_marc = &marc_type;