-/*
- * Copyright (C) 1994-1996, Index Data I/S
- * All rights reserved.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: kdump.c,v $
- * Revision 1.13 1997-09-09 13:38:07 adam
- * Partial port to WIN95/NT.
- *
- * Revision 1.12 1997/09/05 09:52:32 adam
- * Extra argument added to function chr_read_maptab (tab path).
- *
- * Revision 1.11 1996/10/29 14:06:49 adam
- * Include zebrautl.h instead of alexutil.h.
- *
- * Revision 1.10 1996/06/04 14:56:12 quinn
- * Fix
- *
- * Revision 1.9 1996/06/04 14:18:53 quinn
- * Charmap work
- *
- * Revision 1.8 1996/06/04 10:18:59 adam
- * Minor changes - removed include of ctype.h.
- *
- * Revision 1.7 1995/10/10 12:24:38 adam
- * Temporary sort files are compressed.
- *
- * Revision 1.6 1995/09/29 14:01:42 adam
- * Bug fixes.
- *
- * Revision 1.5 1995/09/11 13:09:35 adam
- * More work on relevance feedback.
- *
- * Revision 1.4 1995/09/08 14:52:27 adam
- * Minor changes. Dictionary is lower case now.
- *
- * Revision 1.3 1995/09/06 16:11:17 adam
- * Option: only one word key per file.
- *
- * Revision 1.2 1995/09/04 12:33:42 adam
- * Various cleanup. YAZ util used instead.
- *
- * Revision 1.1 1995/09/04 09:10:36 adam
- * More work on index add/del/update.
- * Merge sort implemented.
- * Initial work on z39 server.
- *
- */
+/* $Id: kdump.c,v 1.22 2002-08-02 19:26:55 adam Exp $
+ Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+ Index Data Aps
+
+This file is part of the Zebra server.
+
+Zebra is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with Zebra; see the file LICENSE.zebra. If not, write to the
+Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+*/
+
+
#include <stdio.h>
#include <string.h>
#include <assert.h>
-#ifdef WINDOWS
+#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
char *key_fname = NULL;
char key_string[IT_MAX_WORD];
char key_info[256];
+ ZebraMaps zm;
FILE *inf;
+ Res res = NULL;
struct it_key prevk;
- chrmaptab *map = 0;
prevk.sysno = 0;
prevk.seqno = 0;
prog = *argv;
- while ((ret = options ("m:v:", argv, argc, &arg)) != -2)
+ while ((ret = options ("c:v:", argv, argc, &arg)) != -2)
{
if (ret == 0)
{
}
else if (ret == 'v')
{
- log_init (log_mask_str(arg), prog, NULL);
+ yaz_log_init (yaz_log_mask_str(arg), prog, NULL);
}
- else if (ret == 'm')
+ else if (ret == 'c')
{
- if (!(map = chr_read_maptab (NULL, arg)))
- {
- logf(LOG_FATAL, "Failed to open maptab");
- exit(1);
+ if (!(res = res_open (arg, 0)))
+ {
+ logf(LOG_FATAL, "Failed to open resource file %s", arg);
+ exit (1);
}
}
else
}
if (!key_fname)
{
- fprintf (stderr, "kdump [-m maptab -v log] file\n");
+ fprintf (stderr, "kdump [-c config] [-v log] file\n");
exit (1);
}
+ if (!res)
+ res = res_open ("zebra.cfg", 0);
+ zm = zebra_maps_open (res, 0);
if (!(inf = fopen (key_fname, "r")))
{
logf (LOG_FATAL|LOG_ERRNO, "fopen %s", key_fname);
exit (1);
}
+ printf ("t rg op sysno seqno txt\n");
while (read_one (inf, key_string, key_info, &prevk))
{
struct it_key k;
int op;
char keybuf[IT_MAX_WORD+1];
+ char *to = keybuf;
+ const char *from = key_string;
+ int usedb_type = from[0];
+ int reg_type = from[1];
op = key_info[0];
memcpy (&k, 1+key_info, sizeof(k));
- if (map)
- {
- char *to = keybuf, *from = key_string;
- while (*from)
- {
- char *res = (char*)map->output[(unsigned char) *(from++)];
+ from += 2;
+ while (*from)
+ {
+ const char *res = zebra_maps_output (zm, reg_type, &from);
+ if (!res)
+ *to++ = *from++;
+ else
while (*res)
- *(to++) = *(res++);
- }
- *to = '\0';
+ *to++ = *res++;
}
- else
- strcpy(keybuf, key_string);
- printf ("%7d op=%d s=%-5d %s\n", k.sysno, op, k.seqno,
- keybuf);
+ *to = '\0';
+ printf ("%c %3d %c %7d %5d %s\n", reg_type, usedb_type, op ? 'i':'d',
+ k.sysno, k.seqno, keybuf);
}
+ zebra_maps_close (zm);
if (fclose (inf))
{
logf (LOG_FATAL|LOG_ERRNO, "fclose %s", key_fname);