2 * Copyright (C) 1994-1996, Index Data I/S
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.14 1997-10-27 14:33:04 adam
8 * Moved towards generic character mapping depending on "structure"
9 * field in abstract syntax file. Fixed a few memory leaks. Fixed
10 * bug with negative integers when doing searches with relational
13 * Revision 1.13 1997/09/09 13:38:07 adam
14 * Partial port to WIN95/NT.
16 * Revision 1.12 1997/09/05 09:52:32 adam
17 * Extra argument added to function chr_read_maptab (tab path).
19 * Revision 1.11 1996/10/29 14:06:49 adam
20 * Include zebrautl.h instead of alexutil.h.
22 * Revision 1.10 1996/06/04 14:56:12 quinn
25 * Revision 1.9 1996/06/04 14:18:53 quinn
28 * Revision 1.8 1996/06/04 10:18:59 adam
29 * Minor changes - removed include of ctype.h.
31 * Revision 1.7 1995/10/10 12:24:38 adam
32 * Temporary sort files are compressed.
34 * Revision 1.6 1995/09/29 14:01:42 adam
37 * Revision 1.5 1995/09/11 13:09:35 adam
38 * More work on relevance feedback.
40 * Revision 1.4 1995/09/08 14:52:27 adam
41 * Minor changes. Dictionary is lower case now.
43 * Revision 1.3 1995/09/06 16:11:17 adam
44 * Option: only one word key per file.
46 * Revision 1.2 1995/09/04 12:33:42 adam
47 * Various cleanup. YAZ util used instead.
49 * Revision 1.1 1995/09/04 09:10:36 adam
50 * More work on index add/del/update.
51 * Merge sort implemented.
52 * Initial work on z39 server.
71 int key_file_decode (FILE *f)
82 d = ((c&63) << 8) + (getc (f) & 0xff);
85 d = ((c&63) << 8) + (getc (f) & 0xff);
86 d = (d << 8) + (getc (f) & 0xff);
89 d = ((c&63) << 8) + (getc (f) & 0xff);
90 d = (d << 8) + (getc (f) & 0xff);
91 d = (d << 8) + (getc (f) & 0xff);
98 static int read_one (FILE *inf, char *name, char *key, struct it_key *prevk)
105 if ((c=getc(inf)) == EOF)
111 c = key_file_decode (inf);
114 itkey.sysno = c + prevk->sysno;
117 prevk->sysno = itkey.sysno;
120 c = key_file_decode (inf);
121 itkey.seqno = c + prevk->seqno;
122 prevk->seqno = itkey.seqno;
124 memcpy (key+1, &itkey, sizeof(itkey));
128 int main (int argc, char **argv)
132 char *key_fname = NULL;
133 char key_string[IT_MAX_WORD];
143 while ((ret = options ("m:v:", argv, argc, &arg)) != -2)
151 log_init (log_mask_str(arg), prog, NULL);
155 if (!(map = chrmaptab_create (NULL, arg, 0)))
157 logf(LOG_FATAL, "Failed to open maptab");
163 logf (LOG_FATAL, "Unknown option '-%s'", arg);
169 fprintf (stderr, "kdump [-m maptab -v log] file\n");
172 if (!(inf = fopen (key_fname, "r")))
174 logf (LOG_FATAL|LOG_ERRNO, "fopen %s", key_fname);
177 while (read_one (inf, key_string, key_info, &prevk))
181 char keybuf[IT_MAX_WORD+1];
184 memcpy (&k, 1+key_info, sizeof(k));
187 char *to = keybuf, *from = key_string;
191 char *res = chr_map_output(map, from, 1);
198 strcpy(keybuf, key_string);
199 printf ("%7d op=%d s=%-5d %s\n", k.sysno, op, k.seqno,
204 logf (LOG_FATAL|LOG_ERRNO, "fclose %s", key_fname);