X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=isams%2Fisams.c;h=7994294ed36beb85d339ec37a5e74d6022d89a5d;hb=cd3f39bbae63668b8806ed205132da166e73102f;hp=81d47e4468199ec473fb0c3075b91ab457b303fa;hpb=45dcbe04562559c1af90b5049fa1871311907072;p=idzebra-moved-to-github.git diff --git a/isams/isams.c b/isams/isams.c index 81d47e4..7994294 100644 --- a/isams/isams.c +++ b/isams/isams.c @@ -1,29 +1,26 @@ -/* - * Copyright (c) 1995-1999, Index Data. - * See the file LICENSE for details. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: isams.c,v $ - * Revision 1.1 1999-11-30 14:02:45 adam - * Moved isams. - * - * Revision 1.5 1999/07/14 10:59:27 adam - * Changed functions isc_getmethod, isams_getmethod. - * Improved fatal error handling (such as missing EXPLAIN schema). - * - * Revision 1.4 1999/05/26 07:49:14 adam - * C++ compilation. - * - * Revision 1.3 1999/05/20 12:57:18 adam - * Implemented TCL filter. Updated recctrl system. - * - * Revision 1.2 1999/05/15 14:35:48 adam - * Minor changes. - * - * Revision 1.1 1999/05/12 13:08:06 adam - * First version of ISAMS. - * - */ +/* $Id: isams.c,v 1.5 2004-06-01 12:56:39 adam Exp $ + Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003 + 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 @@ -40,7 +37,7 @@ typedef struct { typedef unsigned ISAMS_BLOCK_SIZE; struct ISAMS_s { - ISAMS_M method; + ISAMS_M *method; ISAMS_head head; ISAMS_head head_old; char *merge_buf; @@ -60,24 +57,25 @@ struct ISAMS_PP_s { int numRead; }; -void isams_getmethod (ISAMS_M m) +void isams_getmethod (ISAMS_M *m) { m->code_start = NULL; m->code_item = NULL; m->code_stop = NULL; m->compare_item = NULL; + m->log_item = NULL; m->debug = 1; m->block_size = 128; } ISAMS isams_open (BFiles bfs, const char *name, int writeflag, - ISAMS_M method) + ISAMS_M *method) { ISAMS is = (ISAMS) xmalloc (sizeof(*is)); - is->method = (ISAMS_M) xmalloc (sizeof(*is->method)); + is->method = (ISAMS_M *) xmalloc (sizeof(*is->method)); memcpy (is->method, method, sizeof(*method)); is->block_size = is->method->block_size; is->debug = is->method->debug; @@ -197,14 +195,16 @@ ISAMS_PP isams_pp_open (ISAMS is, ISAMS_P pos) 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; - logf (LOG_LOG, "isams: isams_pp_open off=%d no=%d", - pp->block_offset, pp->block_no); + if (is->debug) + logf (LOG_LOG, "isams: isams_pp_open off=%d no=%d", + pp->block_offset, pp->block_no); if (pos) { bf_read (is->bf, pp->block_no, 0, 0, pp->buf); 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)); - logf (LOG_LOG, "isams: isams_pp_open numKeys=%d", pp->numKeys); + if (is->debug) + logf (LOG_LOG, "isams: isams_pp_open numKeys=%d", pp->numKeys); pp->block_offset += sizeof(int); } return pp;