Various cleanup. YAZ util used instead.
[idzebra-moved-to-github.git] / index / kdump.c
1 /*
2  * Copyright (C) 1995, Index Data I/S 
3  * All rights reserved.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: kdump.c,v $
7  * Revision 1.2  1995-09-04 12:33:42  adam
8  * Various cleanup. YAZ util used instead.
9  *
10  * Revision 1.1  1995/09/04  09:10:36  adam
11  * More work on index add/del/update.
12  * Merge sort implemented.
13  * Initial work on z39 server.
14  *
15  */
16 #include <stdio.h>
17 #include <assert.h>
18 #include <unistd.h>
19
20 #include <alexutil.h>
21 #include "index.h"
22
23 char *prog;
24
25 static int read_one (FILE *inf, char *name, char *key)
26 {
27     int c;
28     int i = 0;
29     name[0] = 0;
30     do
31     {
32         if ((c=getc(inf)) == EOF)
33             return 0;
34         name[i++] = c;
35     } while (c);
36     for (i = 0; i<sizeof(struct it_key)+1; i++)
37         ((char *)key)[i] = getc (inf);
38     return 1;
39 }
40
41 int main (int argc, char **argv)
42 {
43     int ret;
44     char *arg;
45     char *key_fname = NULL;
46     char key_string[1000];
47     char key_info[256];
48     FILE *inf;
49
50     prog = *argv;
51     while ((ret = options ("v:", argv, argc, &arg)) != -2)
52     {
53         if (ret == 0)
54         {
55             key_fname = arg;
56         }
57         else if (ret == 'v')
58         {
59             log_init (log_mask_str(arg), prog, NULL);
60         }
61         else
62         {
63             logf (LOG_FATAL, "Unknown option '-%s'", arg);
64             exit (1);
65         }
66     }
67     if (!key_fname)
68     {
69         fprintf (stderr, "kdump [-v log] file\n");
70         exit (1);
71     }
72     if (!(inf = fopen (key_fname, "r")))
73     {
74         logf (LOG_FATAL|LOG_ERRNO, "fopen %s", key_fname);
75         exit (1);
76     }
77     while (read_one (inf, key_string, key_info))
78     {
79         struct it_key k;
80
81         memcpy (&k, key_info+1, sizeof(k));
82         printf ("%s sysno=%d op=%d\n", key_string, k.sysno, *key_info);
83     }
84     if (fclose (inf))
85     {
86         logf (LOG_FATAL|LOG_ERRNO, "fclose %s", key_fname);
87         exit (1);
88     }
89     
90     exit (0);
91 }