Added two members to data1_marctab to ease reading of weird MARC records.
[yaz-moved-to-github.git] / retrieval / d1_handle.c
1 /*
2  * Copyright (c) 1995-1997, Index Data.
3  * See the file LICENSE for details.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: d1_handle.c,v $
7  * Revision 1.1  1997-09-17 12:28:24  adam
8  * Introduced new 'global' data1 handle.
9  *
10  */
11
12 #include <stdio.h>
13 #include <stdlib.h>
14
15 #include <log.h>
16 #include <data1.h>
17
18 struct data1_handle_info {
19     WRBUF wrbuf;
20     char *tab_path;
21     char *read_buf;
22     int read_len;
23     data1_absyn_cache absyn_cache;
24     NMEM mem;
25 };
26
27 data1_handle data1_create (void)
28 {
29     data1_handle p = xmalloc (sizeof(*p));
30     if (!p)
31         return NULL;
32     p->tab_path = NULL;
33     p->wrbuf = wrbuf_alloc();
34     p->read_buf = NULL;
35     p->read_len = 0;
36     p->absyn_cache = NULL;
37     p->mem = nmem_create ();
38     return p;
39 }
40
41 NMEM data1_nmem_get (data1_handle dh)
42 {
43     return dh->mem;
44 }
45
46 data1_absyn_cache *data1_absyn_cache_get (data1_handle dh)
47 {
48     return &dh->absyn_cache;
49 }
50
51 void data1_destroy (data1_handle dh)
52 {
53     if (!dh)
54         return;
55     wrbuf_free (dh->wrbuf, 1);
56     if (dh->tab_path)
57         xfree (dh->tab_path);
58     if (dh->read_buf)
59         xfree (dh->read_buf);
60     nmem_destroy (dh->mem);
61     
62     xfree (dh);
63 }
64
65 WRBUF data1_get_wrbuf (data1_handle dp)
66 {
67     return dp->wrbuf;
68 }
69
70 char **data1_get_read_buf (data1_handle dp, int **lenp)
71 {
72     *lenp = &dp->read_len;
73     return &dp->read_buf;
74 }
75
76
77 void data1_set_tabpath (data1_handle dp, const char *p)
78 {
79     if (dp->tab_path)
80     {
81         xfree (dp->tab_path);
82         dp->tab_path = NULL;
83     }
84     if (p)
85     {
86         dp->tab_path = xmalloc (strlen(p)+1);
87         strcpy (dp->tab_path, p);
88     }
89 }
90
91 const char *data1_get_tabpath (data1_handle dp)
92 {
93     return dp->tab_path;
94 }
95