2 * Copyright (C) 1994-1995, Index Data I/S
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.7 1995-10-10 12:24:38 adam
8 * Temporary sort files are compressed.
10 * Revision 1.6 1995/09/29 14:01:42 adam
13 * Revision 1.5 1995/09/11 13:09:35 adam
14 * More work on relevance feedback.
16 * Revision 1.4 1995/09/08 14:52:27 adam
17 * Minor changes. Dictionary is lower case now.
19 * Revision 1.3 1995/09/06 16:11:17 adam
20 * Option: only one word key per file.
22 * Revision 1.2 1995/09/04 12:33:42 adam
23 * Various cleanup. YAZ util used instead.
25 * Revision 1.1 1995/09/04 09:10:36 adam
26 * More work on index add/del/update.
27 * Merge sort implemented.
28 * Initial work on z39 server.
42 int key_file_decode (FILE *f)
53 d = ((c&63) << 8) + (getc (f) & 0xff);
56 d = ((c&63) << 8) + (getc (f) & 0xff);
57 d = (d << 8) + (getc (f) & 0xff);
60 d = ((c&63) << 8) + (getc (f) & 0xff);
61 d = (d << 8) + (getc (f) & 0xff);
62 d = (d << 8) + (getc (f) & 0xff);
69 static int read_one (FILE *inf, char *name, char *key, struct it_key *prevk)
76 if ((c=getc(inf)) == EOF)
82 c = key_file_decode (inf);
85 itkey.sysno = c + prevk->sysno;
88 prevk->sysno = itkey.sysno;
91 c = key_file_decode (inf);
92 itkey.seqno = c + prevk->seqno;
93 prevk->seqno = itkey.seqno;
95 memcpy (key+1, &itkey, sizeof(itkey));
99 int main (int argc, char **argv)
103 char *key_fname = NULL;
104 char key_string[IT_MAX_WORD];
113 while ((ret = options ("v:", argv, argc, &arg)) != -2)
121 log_init (log_mask_str(arg), prog, NULL);
125 logf (LOG_FATAL, "Unknown option '-%s'", arg);
131 fprintf (stderr, "kdump [-v log] file\n");
134 if (!(inf = fopen (key_fname, "r")))
136 logf (LOG_FATAL|LOG_ERRNO, "fopen %s", key_fname);
139 while (read_one (inf, key_string, key_info, &prevk))
145 memcpy (&k, 1+key_info, sizeof(k));
146 printf ("%7d op=%d s=%-5d %s\n", k.sysno, op, k.seqno,
151 logf (LOG_FATAL|LOG_ERRNO, "fclose %s", key_fname);