Updated code to use new YAZ log functions/defines.
[idzebra-moved-to-github.git] / isams / isams.c
index f3583cc..afb2ebf 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: isams.c,v 1.3 2002-08-02 19:26:56 adam Exp $
-   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002
+/* $Id: isams.c,v 1.5.2.3 2006-12-05 21:14:43 adam Exp $
+   Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003
    Index Data Aps
 
 This file is part of the Zebra server.
@@ -15,9 +15,9 @@ 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
+
 */
 
 
@@ -26,6 +26,7 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 #include <string.h>
 #include <stdio.h>
 
+#include <yaz/xmalloc.h>
 #include <yaz/log.h>
 #include <isams.h>
 
@@ -37,7 +38,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;
@@ -57,24 +58,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;
@@ -123,7 +125,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;
@@ -186,7 +188,7 @@ ISAMS_PP isams_pp_open (ISAMS is, ISAMS_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->code_start)(ISAMC_DECODE);
     pp->numKeys = 0;
@@ -195,7 +197,7 @@ ISAMS_PP isams_pp_open (ISAMS is, ISAMS_P pos)
     pp->block_no = pos/is->block_size;
     pp->block_offset = 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)
     {
@@ -203,7 +205,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;
@@ -223,7 +225,8 @@ int isams_pp_num (ISAMS_PP pp)
 
 int isams_pp_read (ISAMS_PP pp, void *buf)
 {
-    return isams_read_item (pp, (char **) &buf);
+    char *buf_cp = buf;
+    return isams_read_item (pp, &buf_cp);
 }
 
 int isams_read_item (ISAMS_PP pp, char **dst)