Timeout (idletime) adjustable. Minor changes in kernel.
[egate.git] / kernel / kernel.h
1 /* Gateway kernel
2  * Europagate, 1995
3  *
4  * $Log: kernel.h,v $
5  * Revision 1.12  1995/04/17 09:34:29  adam
6  * Timeout (idletime) adjustable. Minor changes in kernel.
7  *
8  * Revision 1.11  1995/03/28  11:42:34  adam
9  * First use of string-queue utility.
10  *
11  * Revision 1.10  1995/03/27  08:24:01  adam
12  * First use of gip interface and gw-db.
13  * First work on eti program.
14  *
15  * Revision 1.9  1995/03/03  17:19:13  adam
16  * Smarter presentation. Bug fix in email header interpretation.
17  *
18  * Revision 1.8  1995/03/01  14:32:24  adam
19  * Better diagnostics. Default is, that only one database selected when
20  * several are known.
21  *
22  * Revision 1.7  1995/02/23  08:32:16  adam
23  * Changed header.
24  *
25  * Revision 1.5  1995/02/22  15:22:32  adam
26  * Much more checking of run-time state. Show command never retrieves
27  * more records than indicated by the previous search request. Help
28  * command available. The maximum number of records retrieved can be
29  * controlled now.
30  *
31  * Revision 1.4  1995/02/20  21:16:18  adam
32  * FML support. Bug fixes. Profile for drewdb.
33  *
34  * Revision 1.3  1995/02/16  18:35:08  adam
35  * First use of Zdist library. Search requests are supported.
36  * Present requests are not supported yet.
37  *
38  * Revision 1.2  1995/02/16  13:20:59  adam
39  * Organization of resource files for targets and conversion
40  * language implemented.
41  *
42  * Revision 1.1  1995/02/15  17:45:29  adam
43  * First version of email gateway kernel. Email requests are read
44  * from stdin. The output is transferred to an MTA if 'From' is
45  * found in the header - or stdout if absent. No Z39.50 client is used.
46  *
47  */
48
49 #include <gw-res.h>
50 #include <gw-log.h>
51 #include <ccl.h>
52 #include <zaccess.h>
53
54 #include <iso2709.h>
55 #if USE_FML
56 #include <fmlmarc.h>
57 #endif
58 #include <strqueue.h>
59
60 #define LINE_MAX 1024
61
62 struct gw_user_set {
63     char *name;        /* name of result set */
64     int hits;          /* -1 on error */
65     struct gw_user_set *prev;
66 };
67
68 struct gw_kernel_info {
69     CCL_bibset bibset;
70     GwRes kernel_res;
71     const char *default_res; 
72     const char *override_res;
73     char target[128];
74     char hostname[128];
75     int  port;
76     const char *lang;
77     const char *override_portno;
78     const char *override_hostname;
79     char *databases;
80     char *database;
81     ZASS  zass;
82     int command_no;
83     char  from_str[LINE_MAX+1];
84     const char *reply_fname;
85 #if USE_FML
86     Fml   fml;
87 #endif
88     struct gw_user_set *sets;
89 };
90
91 extern struct gw_kernel_info info;
92
93 extern FILE *reply_fd;
94
95 int  urp_start   (int continuation, struct str_queue *queue);
96 int  urp_command (struct str_queue *queue);
97 void urp_end     (void);
98
99 void read_kernel_res (void);
100
101 struct gw_user_set *user_set_add (const char *name, int hits);
102 struct gw_user_set *user_set_search (const char *name);
103 void user_set_init (void);
104
105 int lgets (char *buf, int max, int fd);
106
107 #define KERNEL_LOG "kernel"