X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fkinput.c;h=851c13eeda42173edd4160ff32b448c3654407ca;hb=90d4902e0921f68842031a4aa1e743d5df06047f;hp=57dab07305aeaf33280cd1be21e9c97f445f854f;hpb=d82c0efad7971d102220a8824e1ea674db5b7fe2;p=idzebra-moved-to-github.git diff --git a/index/kinput.c b/index/kinput.c index 57dab07..851c13e 100644 --- a/index/kinput.c +++ b/index/kinput.c @@ -1,8 +1,5 @@ -/* $Id: kinput.c,v 1.84 2007-10-29 09:25:40 adam Exp $ - Copyright (C) 1995-2007 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1994-2011 Index Data 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 @@ -20,6 +17,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#if HAVE_CONFIG_H +#include +#endif #include #ifdef WIN32 #include @@ -36,8 +36,6 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA #define KEY_SIZE (1+sizeof(struct it_key)) #define INP_NAME_MAX 768 -#define INP_BUF_START 60000 -#define INP_BUF_ADD 400000 struct key_file { int no; /* file no */ @@ -55,7 +53,12 @@ struct key_file { Res res; }; -#if 0 + +#define PR_KEY_LOW 0 +#define PR_KEY_TOP 0 + +#if PR_KEY_LOW || PR_KEY_TOP + static void pkey(const char *b, int mode) { key_logdump_txt(YLOG_LOG, b, mode ? "i" : "d"); @@ -188,8 +191,12 @@ int key_file_read(struct key_file *f, char *key) { i = 0; key[i++] = c; - while ((key[i++] = key_file_getc(f))) - ; + while ((c = key_file_getc(f))) + { + if (i < INP_NAME_MAX-2) + key[i++] = c; + } + key[i++] = '\0'; strcpy(f->prev_name, key); iscz1_reset(f->decode_handle); } @@ -224,7 +231,6 @@ struct heap_info { int (*cmp)(const void *p1, const void *p2); struct zebra_register *reg; ZebraHandle zh; - int raw_reading; /* 1=raw /mem read. 0=file reading */ zint no_diffs; zint no_updates; zint no_deletions; @@ -240,7 +246,6 @@ static struct heap_info *key_heap_malloc(void) hi->info.buf = 0; hi->heapnum = 0; hi->ptr = 0; - hi->raw_reading = 0; hi->no_diffs = 0; hi->no_diffs = 0; hi->no_updates = 0; @@ -272,23 +277,11 @@ struct heap_info *key_heap_init_file(ZebraHandle zh, return hi; } -struct heap_info *key_heap_init_raw(ZebraHandle zh, - int (*cmp)(const void *p1, const void *p2)) -{ - struct heap_info *hi=key_heap_malloc(); - hi->cmp = cmp; - hi->zh = zh; - hi->raw_reading = 1; - return hi; -} - void key_heap_destroy(struct heap_info *hi, int nkeys) { int i; - if (!hi->raw_reading) - for (i = 0; i<=nkeys; i++) - xfree(hi->info.buf[i]); - + for (i = 0; i<=nkeys; i++) + xfree(hi->info.buf[i]); xfree(hi->info.buf); xfree(hi->ptr); xfree(hi->info.file); @@ -335,6 +328,8 @@ static void key_heap_insert(struct heap_info *hi, const char *buf, int nbytes, { int cur, parent; + assert(nbytes < INP_NAME_MAX); + cur = ++(hi->heapnum); memcpy(hi->info.buf[hi->ptr[cur]], buf, nbytes); hi->info.file[hi->ptr[cur]] = kf; @@ -369,16 +364,14 @@ static int heap_read_one(struct heap_info *hi, char *name, char *key) return 1; } -#define PR_KEY_LOW 0 -#define PR_KEY_TOP 0 /* for debugging only */ void zebra_log_dict_entry(ZebraHandle zh, const char *s) { - char dst[IT_MAX_WORD+1]; + char dst[INP_NAME_MAX+1]; int ord; int len = key_SU_decode(&ord, (const unsigned char *) s); - int index_type; + const char *index_type; if (!zh) yaz_log(YLOG_LOG, "ord=%d", ord); @@ -391,7 +384,7 @@ void zebra_log_dict_entry(ZebraHandle zh, const char *s) zebra_term_untrans(zh, index_type, dst, s + len); - yaz_log(YLOG_LOG, "ord=%d index_type=%c index=%s term=%s", + yaz_log(YLOG_LOG, "ord=%d index_type=%s index=%s term=%s", ord, index_type, string_index, dst); } } @@ -430,7 +423,7 @@ int heap_cread_item2(void *vp, char **dst, int *insertMode) p->look_level++; } memcpy(*dst, p->key_1, p->sz_1); -#if 0 +#if PR_KEY_TOP yaz_log(YLOG_LOG, "DUP level=%d", p->look_level); pkey(*dst, *insertMode); #endif @@ -505,7 +498,8 @@ int heap_cread_item2(void *vp, char **dst, int *insertMode) } p->look_level = level; memcpy(*dst, p->key_1, p->sz_1); -#if 0 +#if PR_KEY_TOP + yaz_log(YLOG_LOG, "TOP"); pkey(*dst, *insertMode); #endif (*dst) += p->sz_1; @@ -596,26 +590,6 @@ int heap_inpc(struct heap_cread_info *hci, struct heap_info *hi) return 0; } -int heap_inp0(struct heap_cread_info *hci, struct heap_info *hi) -{ - while (hci->more) - { - char this_name[INP_NAME_MAX]; - char mybuf[1024]; - char *dst = mybuf; - int mode; - - strcpy(this_name, hci->cur_name); - assert(hci->cur_name[0]); - hi->no_diffs++; - - while (heap_cread_item2(hci, &dst, &mode)) - ; - } - return 0; -} - - int heap_inpb(struct heap_cread_info *hci, struct heap_info *hi) { ISAMC_I *isamc_i = (ISAMC_I *) xmalloc(sizeof(*isamc_i)); @@ -831,6 +805,7 @@ void zebra_index_merge(ZebraHandle zh) /* * Local variables: * c-basic-offset: 4 + * c-file-style: "Stroustrup" * indent-tabs-mode: nil * End: * vim: shiftwidth=4 tabstop=8 expandtab