c3e4f6555402e4f216d72a01f86fa62f33b8ff25
[egate.git] / kernel / main.c
1 /* Gateway kernel
2  * Europagate, 1995
3  *
4  * $Log: main.c,v $
5  * Revision 1.1  1995/02/15 17:45:29  adam
6  * First version of email gateway kernel. Email requests are read
7  * from stdin. The output is transferred to an MTA if 'From' is
8  * found in the header - or stdout if absent. No Z39.50 client is used.
9  *
10  */
11
12 #include <stdio.h>
13 #include <stdlib.h>
14
15 #include "kernel.h"
16
17 GwRes kernel_res;
18 CCL_bibset bibset;
19 FILE *reply_fd = stdout;
20
21 int main (int argc, char **argv)
22 {
23     char *bib_fname;
24     FILE *bib_inf;
25
26     gw_log_init (*argv);
27     kernel_res = gw_res_init ();
28     bibset = ccl_qual_mk ();    
29     while (--argc > 0)
30     {
31         if (**++argv == '-')
32         {
33             switch (argv[0][1])
34             {
35             case 'b':
36                 if (argv[0][2])
37                     bib_fname = argv[0]+2;
38                 else if (argc > 0)
39                 {
40                     --argc;
41                     bib_fname = *++argv;
42                 }
43                 else
44                 {
45                     gw_log (GW_LOG_FATAL, "main", "missing bib filename");
46                     exit (1);
47                 }
48                 bib_inf = fopen (bib_fname, "r");
49                 if (!bib_inf)
50                 {
51                     gw_log (GW_LOG_FATAL, "main", "cannot open %s", bib_fname);
52                     exit (1);
53                 }
54                 ccl_qual_file (bibset, bib_inf);
55                 fclose (bib_inf);
56                 break;
57             default:
58                 gw_log (GW_LOG_FATAL, "main", "unknown option %s", *argv);
59                 exit (1);
60             }
61         }
62         else
63         {
64             int r;
65             r = gw_res_merge (kernel_res, *argv);
66             if (r)
67             {
68                 gw_log (GW_LOG_FATAL, "main", "failed to read resource "
69                         "file %s", *argv);
70                 exit (1);
71             }
72         }
73     }
74     urp (stdin);
75     return 0;
76 }