X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=index%2Fkey_block.c;h=4ec9a0bf3cf1cfe7436d58cc7953f1658d5c13fb;hb=1df86c90a941584991fcb5a4ea3f070a4e1c45d2;hp=085f2b21411e8b435efdaa468a7389332d60335c;hpb=027c4aa269709a33000e42fb478f8b1cb79e0842;p=idzebra-moved-to-github.git diff --git a/index/key_block.c b/index/key_block.c index 085f2b2..4ec9a0b 100644 --- a/index/key_block.c +++ b/index/key_block.c @@ -1,5 +1,5 @@ -/* $Id: key_block.c,v 1.7 2006-12-03 15:55:02 adam Exp $ - Copyright (C) 1995-2006 +/* $Id: key_block.c,v 1.12 2008-01-09 23:00:13 adam Exp $ + Copyright (C) 1995-2007 Index Data ApS This file is part of the Zebra server. @@ -99,15 +99,21 @@ static void encode_key_init(struct encode_info *i) i->decode_handle = iscz1_start(); } -static void encode_key_write (char *k, struct encode_info *i, FILE *outf) +static void encode_key_write(const char *k, struct encode_info *i, FILE *outf) { struct it_key key; char *bp = i->buf, *bp0; const char *src = (char *) &key; + size_t klen = strlen(k); + + if (fwrite (k, klen+1, 1, outf) != 1) + { + yaz_log (YLOG_FATAL|YLOG_ERRNO, "fwrite"); + zebra_exit("encode_key_write"); + } + + k = k + klen+1; - /* copy term to output buf */ - while ((*bp++ = *k++)) - ; /* and copy & align key so we can mangle */ memcpy (&key, k+1, sizeof(struct it_key)); /* *k is insert/delete */ @@ -212,7 +218,7 @@ zebra_key_block_t key_block_create(int mem, const char *key_tmp_dir, p->alt_buf = (char**) xmalloc (mem); #endif } - yaz_log(YLOG_LOG, "key_block_create t=%d", p->use_threads); + yaz_log(YLOG_DEBUG, "key_block_create t=%d", p->use_threads); return p; } @@ -302,15 +308,20 @@ void key_block_write(zebra_key_block_t p, zint sysno, struct it_key *key_in, void key_block_flush_int(zebra_key_block_t p, - char **key_buf, size_t ptr_top, size_t ptr_i) + char **key_buf, size_t ptr_top, size_t ptr_i) { FILE *outf; char out_fname[200]; char *prevcp, *cp; struct encode_info encode_info; + if (ptr_i == 0) + return ; + (p->key_file_no)++; - yaz_log(YLOG_LOG, "sorting section %d", (p->key_file_no)); + yaz_log(YLOG_DEBUG, "sorting section %d", (p->key_file_no)); + + assert(ptr_i > 0); #if USE_SHELLSORT shellsort(key_buf + ptr_top - ptr_i, ptr_i, @@ -326,7 +337,7 @@ void key_block_flush_int(zebra_key_block_t p, yaz_log (YLOG_FATAL|YLOG_ERRNO, "fopen %s", out_fname); zebra_exit("key_block_flush"); } - yaz_log(YLOG_LOG, "writing section %d", p->key_file_no); + yaz_log(YLOG_DEBUG, "writing section %d", p->key_file_no); prevcp = cp = (key_buf)[ptr_top - ptr_i]; encode_key_init (&encode_info); @@ -351,7 +362,7 @@ void key_block_flush_int(zebra_key_block_t p, yaz_log (YLOG_FATAL|YLOG_ERRNO, "fclose %s", out_fname); zebra_exit("key_block_flush"); } - yaz_log(YLOG_LOG, "finished section %d", p->key_file_no); + yaz_log(YLOG_DEBUG, "finished section %d", p->key_file_no); } void key_block_flush(zebra_key_block_t p, int is_final)