X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=isams%2Fisams.c;h=89d3505e6618499b44715539eba04c48b4cbfd27;hp=44c4a33b44395eebd2da15bf6cf7e546e0894ec2;hb=c3ff843e467932c6027a8b3b2ebda7b44612447e;hpb=2e4e9c6def27f1e1463dcb6f205fab6a98054f38 diff --git a/isams/isams.c b/isams/isams.c index 44c4a33..89d3505 100644 --- a/isams/isams.c +++ b/isams/isams.c @@ -1,8 +1,5 @@ -/* $Id: isams.c,v 1.6 2004-08-04 08:35:24 adam Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004 - Index Data Aps - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 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 @@ -15,19 +12,23 @@ 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. +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +#if HAVE_CONFIG_H +#include +#endif #include #include #include #include #include -#include +#include +#include typedef struct { int last_offset; @@ -45,7 +46,7 @@ struct ISAMS_s { int block_size; int debug; BFile bf; -}; +}; struct ISAMS_PP_s { ISAMS is; @@ -111,7 +112,7 @@ int isams_close (ISAMS is) return 0; } -ISAMS_P isams_merge (ISAMS is, ISAMS_I data) +ISAM_P isams_merge (ISAMS is, ISAMS_I data) { char i_item[128]; int i_more, i_mode; @@ -126,7 +127,7 @@ ISAMS_P isams_merge (ISAMS is, ISAMS_I data) if (is->head.last_offset > is->block_size) { if (is->debug > 2) - logf (LOG_LOG, "first_block=%d", first_block); + yaz_log (YLOG_LOG, "first_block=%d", first_block); bf_write(is->bf, is->head.last_block, 0, 0, is->merge_buf); (is->head.last_block)++; is->head.last_offset -= is->block_size; @@ -138,13 +139,13 @@ ISAMS_P isams_merge (ISAMS is, ISAMS_I data) char *tmp_ptr = i_item; i_more = (*data->read_item)(data->clientData, &tmp_ptr, &i_mode); assert (i_mode); - + if (!i_more) break; else { char *r_out_ptr = is->merge_buf + is->head.last_offset; - + const char *i_item_ptr = i_item; (*is->method->codec.encode)(r_clientData, &r_out_ptr, &i_item_ptr); is->head.last_offset = r_out_ptr - is->merge_buf; @@ -183,21 +184,21 @@ ISAMS_P isams_merge (ISAMS is, ISAMS_I data) return first_block * is->block_size + first_offset; } -ISAMS_PP isams_pp_open (ISAMS is, ISAMS_P pos) +ISAMS_PP isams_pp_open (ISAMS is, ISAM_P pos) { ISAMS_PP pp = (ISAMS_PP) xmalloc (sizeof(*pp)); if (is->debug > 1) - logf (LOG_LOG, "isams: isams_pp_open pos=%ld", (long) pos); + yaz_log (YLOG_LOG, "isams: isams_pp_open pos=%ld", (long) pos); pp->is = is; pp->decodeClientData = (*is->method->codec.start)(); pp->numKeys = 0; pp->numRead = 0; pp->buf = (char *) xmalloc(is->block_size*2); - pp->block_no = pos/is->block_size; - pp->block_offset = pos - pp->block_no * is->block_size; + pp->block_no = (int) (pos/is->block_size); + pp->block_offset = (int) (pos - pp->block_no * is->block_size); if (is->debug) - logf (LOG_LOG, "isams: isams_pp_open off=%d no=%d", + yaz_log (YLOG_LOG, "isams: isams_pp_open off=%d no=%d", pp->block_offset, pp->block_no); if (pos) { @@ -205,7 +206,7 @@ ISAMS_PP isams_pp_open (ISAMS is, ISAMS_P pos) bf_read (is->bf, pp->block_no+1, 0, 0, pp->buf + is->block_size); memcpy(&pp->numKeys, pp->buf + pp->block_offset, sizeof(int)); if (is->debug) - logf (LOG_LOG, "isams: isams_pp_open numKeys=%d", pp->numKeys); + yaz_log (YLOG_LOG, "isams: isams_pp_open numKeys=%d", pp->numKeys); pp->block_offset += sizeof(int); } return pp; @@ -245,8 +246,17 @@ int isams_read_item (ISAMS_PP pp, char **dst) } src = pp->buf + pp->block_offset; (*pp->is->method->codec.decode)(pp->decodeClientData, dst, &src); - pp->block_offset = src - pp->buf; + pp->block_offset = src - pp->buf; return 1; } +/* + * Local variables: + * c-basic-offset: 4 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +