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