X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fkdump.c;h=70662b93ee19a963b689515e126208ca26242922;hb=9bbaa63b531cc24a1bc79e0447a9d6fbde113a3f;hp=655bf8b84aad078bee5b0a53313cd6eb7b5ad34e;hpb=c325477904a47c61586ad9b756b9280c22351c6b;p=idzebra-moved-to-github.git diff --git a/index/kdump.c b/index/kdump.c index 655bf8b..70662b9 100644 --- a/index/kdump.c +++ b/index/kdump.c @@ -1,48 +1,34 @@ -/* - * Copyright (C) 1994-1996, Index Data I/S - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: kdump.c,v $ - * 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 +#include #include +#ifdef WIN32 +#include +#else #include +#endif #include #include @@ -115,15 +101,16 @@ int main (int argc, char **argv) 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) { @@ -131,14 +118,14 @@ int main (int argc, char **argv) } 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(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 @@ -149,39 +136,46 @@ int main (int argc, char **argv) } 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);