Fixed several prototypes.. Most changes are f() to f(void).
[idzebra-moved-to-github.git] / index / kinput.c
index 748ced9..5469b50 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: kinput.c,v 1.67 2005-09-16 09:58:39 adam Exp $
-   Copyright (C) 1995-2005
+/* $Id: kinput.c,v 1.77 2006-10-29 17:20:01 adam Exp $
+   Copyright (C) 1995-2006
    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
+
 */
  
 #include <fcntl.h>
@@ -55,6 +55,14 @@ struct key_file {
     Res res;
 };
 
+#if 0
+static void pkey(const char *b, int mode)
+{
+    key_logdump_txt(YLOG_LOG, b, mode ? "i" : "d");
+}
+#endif
+
+
 void getFnameTmp (Res res, char *fname, int no)
 {
     const char *pre;
@@ -218,6 +226,17 @@ int key_file_read (struct key_file *f, char *key)
        srcbuf[j] = key_file_getc(f);
     dst = key + i;
     iscz1_decode(f->decode_handle, &dst, &src);
+
+#if 0
+    /* debugging */
+    if (1)
+    {
+       struct it_key k;
+       memcpy(&k, key+i, sizeof(k));
+       if (!k.mem[1])
+           yaz_log(YLOG_LOG, "00 KEY");
+    }
+#endif
     return i + sizeof(struct it_key);
 }
 
@@ -230,7 +249,8 @@ struct heap_info {
     int    *ptr;
     int    (*cmp)(const void *p1, const void *p2);
     struct zebra_register *reg;
-    ZebraHandle zh; /* only used for raw reading that bypasses the heaps */
+    ZebraHandle zh;
+    int raw_reading; /* 1=raw /mem read. 0=file reading */
     int no_diffs;
     int no_updates;
     int no_deletions;
@@ -238,7 +258,7 @@ struct heap_info {
     int no_iterations;
 };
 
-static struct heap_info *key_heap_malloc()
+static struct heap_info *key_heap_malloc(void)
 {  /* malloc and clear it */
     struct heap_info *hi;
     hi = (struct heap_info *) xmalloc (sizeof(*hi));
@@ -246,7 +266,7 @@ static struct heap_info *key_heap_malloc()
     hi->info.buf = 0;
     hi->heapnum = 0;
     hi->ptr = 0;
-    hi->zh=0;
+    hi->raw_reading = 0;
     hi->no_diffs = 0;
     hi->no_diffs = 0;
     hi->no_updates = 0;
@@ -256,13 +276,15 @@ static struct heap_info *key_heap_malloc()
     return hi;
 }
 
-struct heap_info *key_heap_init (int nkeys,
-                                 int (*cmp)(const void *p1, const void *p2))
+struct heap_info *key_heap_init_file(ZebraHandle zh,
+                                    int nkeys,
+                                    int (*cmp)(const void *p1, const void *p2))
 {
     struct heap_info *hi;
     int i;
 
     hi = key_heap_malloc();
+    hi->zh = zh;
     hi->info.file = (struct key_file **)
         xmalloc (sizeof(*hi->info.file) * (1+nkeys));
     hi->info.buf = (char **) xmalloc (sizeof(*hi->info.buf) * (1+nkeys));
@@ -276,21 +298,20 @@ struct heap_info *key_heap_init (int nkeys,
     return hi;
 }
 
-struct heap_info *key_heap_init_buff ( ZebraHandle zh,
-                                 int (*cmp)(const void *p1, const void *p2))
+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->cmp = cmp;
+    hi->zh = zh;
+    hi->raw_reading = 1;
     return hi;
 }
 
 void key_heap_destroy (struct heap_info *hi, int nkeys)
 {
     int i;
-    yaz_log (YLOG_DEBUG, "key_heap_destroy");
-    yaz_log (YLOG_DEBUG, "key_heap_destroy nk=%d",nkeys);
-    if (!hi->zh)
+    if (!hi->raw_reading)
         for (i = 0; i<=nkeys; i++)
             xfree (hi->info.buf[i]);
     
@@ -354,17 +375,15 @@ static void key_heap_insert (struct heap_info *hi, const char *buf, int nbytes,
     }
 }
 
-static int heap_read_one_raw (struct heap_info *hi, char *name, char *key)
+static int heap_read_one_raw(struct heap_info *hi, char *name, char *key)
 {
-    ZebraHandle zh=hi->zh;
+    ZebraHandle zh = hi->zh;
     size_t ptr_i = zh->reg->ptr_i;
     char *cp;
     if (!ptr_i)
         return 0;
     --(zh->reg->ptr_i);
     cp=(zh->reg->key_buf)[zh->reg->ptr_top - ptr_i];
-    yaz_log (YLOG_DEBUG, " raw: i=%ld top=%ld cp=%p", (long) ptr_i,
-         (long) zh->reg->ptr_top, cp);
     strcpy(name, cp);
     memcpy(key, cp+strlen(name)+1, KEY_SIZE);
     hi->no_iterations++;
@@ -377,7 +396,7 @@ static int heap_read_one (struct heap_info *hi, char *name, char *key)
     char rbuf[INP_NAME_MAX];
     struct key_file *kf;
 
-    if (hi->zh) /* bypass the heap stuff, we have a readymade buffer */
+    if (hi->raw_reading)
         return heap_read_one_raw(hi, name, key);
 
     if (!hi->heapnum)
@@ -397,26 +416,27 @@ static int heap_read_one (struct heap_info *hi, char *name, char *key)
 #define PR_KEY_LOW 0
 #define PR_KEY_TOP 0
 
-static void pkey(const char *b, int mode)
-{
-    key_logdump_txt(YLOG_LOG, b, mode ? "i" : "d");
-}
-
-#if 1
+#if 0
 /* for debugging only */
-static void print_dict_item (ZebraHandle zh, const char *s)
+static void print_dict_item(ZebraHandle zh, const char *s)
 {
     char dst[IT_MAX_WORD+1];
     int ord;
-    int len = key_SU_decode (&ord, (const unsigned char *) s);
+    int len = key_SU_decode(&ord, (const unsigned char *) s);
     int index_type;
     const char *db = 0;
 
-    zebraExplain_lookup_ord (zh->reg->zei,
-                            ord, &index_type, &db, 0, 0);
+    if (!zh)
+        yaz_log(YLOG_LOG, "ord=%d", ord);
+    else
+    {
+        zebraExplain_lookup_ord (zh->reg->zei,
+                            ord, &index_type, &db, 0, 0, 0);
 
-    zebra_term_untrans(zh, index_type, dst, s + len);
-    yaz_log (YLOG_LOG, "%s", dst);
+        zebra_term_untrans(zh, index_type, dst, s + len);
+
+        yaz_log(YLOG_LOG, "ord=%d term=%s", ord, dst);
+    }
 }
 #endif
 
@@ -454,8 +474,8 @@ int heap_cread_item2(void *vp, char **dst, int *insertMode)
            p->look_level++;
        }
        memcpy (*dst, p->key_1, p->sz_1);
-#if PR_KEY_TOP
-       yaz_log(YLOG_LOG, "DUP!");
+#if 0
+       yaz_log(YLOG_LOG, "DUP level=%d", p->look_level);
        pkey(*dst, *insertMode);
 #endif
        (*dst) += p->sz_1;
@@ -529,7 +549,7 @@ int heap_cread_item2(void *vp, char **dst, int *insertMode)
     }
     p->look_level = level;
     memcpy (*dst, p->key_1, p->sz_1);
-#if PR_KEY_TOP
+#if 0
     pkey(*dst, *insertMode);
 #endif
     (*dst) += p->sz_1;
@@ -583,7 +603,7 @@ int heap_inpc (struct heap_cread_info *hci, struct heap_info *hi)
         char *dict_info;
 
         strcpy (this_name, hci->cur_name);
-       assert (hci->cur_name[1]);
+       assert (hci->cur_name[0]);
         hi->no_diffs++;
         if ((dict_info = dict_lookup (hi->reg->dict, hci->cur_name)))
         {
@@ -628,7 +648,7 @@ int heap_inp0(struct heap_cread_info *hci, struct heap_info *hi)
        int mode;
 
         strcpy (this_name, hci->cur_name);
-       assert (hci->cur_name[1]);
+       assert (hci->cur_name[0]);
         hi->no_diffs++;
 
        while (heap_cread_item2(hci, &dst, &mode))
@@ -652,11 +672,12 @@ int heap_inpb(struct heap_cread_info *hci, struct heap_info *hi)
         char *dict_info;
 
         strcpy (this_name, hci->cur_name);
-       assert (hci->cur_name[1]);
+       assert (hci->cur_name[0]);
         hi->no_diffs++;
 
 #if 0
-        print_dict_item (hi->zh, hci->cur_name);
+       assert(hi->zh);
+        print_dict_item(hi->zh, hci->cur_name);
 #endif
         if ((dict_info = dict_lookup (hi->reg->dict, hci->cur_name)))
         {
@@ -705,7 +726,7 @@ int heap_inps (struct heap_cread_info *hci, struct heap_info *hi)
         char *dict_info;
 
         strcpy (this_name, hci->cur_name);
-       assert (hci->cur_name[1]);
+       assert (hci->cur_name[0]);
         hi->no_diffs++;
         if (!(dict_info = dict_lookup (hi->reg->dict, hci->cur_name)))
         {
@@ -803,7 +824,7 @@ void zebra_index_merge (ZebraHandle zh)
             progressInfo.totalBytes += kf[i]->length;
             progressInfo.totalOffset += kf[i]->buf_size;
         }
-        hi = key_heap_init (nkeys, key_qsort_compare);
+        hi = key_heap_init_file(zh, nkeys, key_qsort_compare);
         hi->reg = zh->reg;
         
         for (i = 1; i<=nkeys; i++)
@@ -812,7 +833,7 @@ void zebra_index_merge (ZebraHandle zh)
     }  /* use file */
     else 
     { /* do not use file, read straight from buffer */
-        hi = key_heap_init_buff (zh, key_qsort_compare);
+        hi = key_heap_init_raw(zh, key_qsort_compare);
         hi->reg = zh->reg;
     }
 
@@ -864,3 +885,11 @@ void zebra_index_merge (ZebraHandle zh)
 
     key_heap_destroy (hi, nkeys);
 }
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+