2 * Copyright (C) 1994-1999, Index Data
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.9 1999-07-14 10:56:16 adam
8 * Filter handles multiple records in one file.
10 * Revision 1.8 1999/06/25 13:47:25 adam
11 * Minor change that prevents MSVC warning.
13 * Revision 1.7 1999/05/21 12:00:17 adam
14 * Better diagnostics for extraction process.
16 * Revision 1.6 1999/05/20 12:57:18 adam
17 * Implemented TCL filter. Updated recctrl system.
19 * Revision 1.5 1999/02/02 14:51:31 adam
20 * Updated WIN32 code specific sections. Changed header.
22 * Revision 1.4 1997/09/17 12:19:22 adam
23 * Zebra version corresponds to YAZ version 1.4.
24 * Changed Zebra server so that it doesn't depend on global common_resource.
26 * Revision 1.3 1997/09/04 13:54:41 adam
27 * Added MARC filter - type grs.marc.<syntax> where syntax refers
28 * to abstract syntax. New method tellf in retrieve/extract method.
30 * Revision 1.2 1997/04/30 08:56:08 quinn
33 * Revision 1.1 1996/10/11 10:57:32 adam
34 * New module recctrl. Used to manage records (extract/retrieval).
42 struct sgml_getc_info {
49 int (*readf)(void *, char *, size_t);
53 int sgml_getc (void *clientData)
55 struct sgml_getc_info *p = (struct sgml_getc_info *) clientData;
59 return p->buf[(p->off)++];
60 if (p->size < p->buf_size)
65 res = (*p->readf)(p->fh, p->buf, p->buf_size);
69 return p->buf[(p->off)++];
74 static data1_node *grs_read_sgml (struct grs_read_info *p)
76 struct sgml_getc_info *sgi = (struct sgml_getc_info *) p->clientData;
80 sgi->moffset = p->offset;
82 sgi->readf = p->readf;
85 res = (*sgi->readf)(sgi->fh, sgi->buf, sgi->buf_size);
90 node = data1_read_nodex (p->dh, p->mem, sgml_getc, sgi, sgi->wrbuf);
92 (*p->endf)(sgi->fh, sgi->moffset + sgi->off);
96 static void *grs_init_sgml(void)
98 struct sgml_getc_info *p = (struct sgml_getc_info *) xmalloc (sizeof(*p));
100 p->buf = xmalloc (p->buf_size);
101 p->wrbuf = wrbuf_alloc();
105 static void grs_destroy_sgml(void *clientData)
107 struct sgml_getc_info *p = (struct sgml_getc_info *) clientData;
109 wrbuf_free(p->wrbuf, 1);
114 static struct recTypeGrs sgml_type = {
121 RecTypeGrs recTypeGrs_sgml = &sgml_type;