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