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