Changed functions isc_getmethod, isams_getmethod.
[idzebra-moved-to-github.git] / index / kcompare.c
index 05d17ba..ec85430 100644 (file)
@@ -4,7 +4,17 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: kcompare.c,v $
- * Revision 1.30  1999-06-30 15:07:23  heikki
+ * Revision 1.33  1999-07-14 10:59:26  adam
+ * Changed functions isc_getmethod, isams_getmethod.
+ * Improved fatal error handling (such as missing EXPLAIN schema).
+ *
+ * Revision 1.32  1999/07/13 13:21:15  heikki
+ * Managing negative deltas
+ *
+ * Revision 1.31  1999/07/06 09:37:04  heikki
+ * Working on isamh - not ready yet.
+ *
+ * Revision 1.30  1999/06/30 15:07:23  heikki
  * Adding isamh stuff
  *
  * Revision 1.29  1999/06/30 09:08:23  adam
@@ -219,18 +229,18 @@ void iscz1_encode_int (unsigned d, char **dst)
         *bp++ = d;
     else if (d <= 16383)
     {
-        *bp++ = 64 + (d>>8);
+        *bp++ = 64 | (d>>8);
        *bp++ = d & 255;
     }
     else if (d <= 4194303)
     {
-        *bp++ = 128 + (d>>16);
+        *bp++ = 128 | (d>>16);
         *bp++ = (d>>8) & 255;
         *bp++ = d & 255;
     }
     else
     {
-        *bp++ = 192 + (d>>24);
+        *bp++ = 192 | (d>>24);
         *bp++ = (d>>16) & 255;
         *bp++ = (d>>8) & 255;
         *bp++ = d & 255;
@@ -252,9 +262,13 @@ int iscz1_decode_int (unsigned char **src)
         c = (c << 8) + *(*src)++;
         return c;
     }
-    c = ((c & 63) << 8) + *(*src)++;
+    if (c&32) /* expand sign bit to high bits */
+       c = ((c | 63) << 8) + *(*src)++;
+    else
+       c = ((c & 63) << 8) + *(*src)++;
     c = (c << 8) + *(*src)++;
     c = (c << 8) + *(*src)++;
+    
     return c;
 }
 
@@ -297,14 +311,9 @@ static void iscz1_code_item (int mode, void *vp, char **dst, char **src)
     }
 }
 
-ISAMC_M key_isamc_m (Res res)
+ISAMC_M key_isamc_m (Res res, ISAMC_M me)
 {
-    static ISAMC_M me = NULL;
-
-    if (me)
-        return me;
-
-    me = isc_getmethod ();
+    isc_getmethod (me);
 
     me->compare_item = key_compare;
 
@@ -318,14 +327,9 @@ ISAMC_M key_isamc_m (Res res)
     return me;
 }
 
-ISAMS_M key_isams_m (Res res)
+ISAMS_M key_isams_m (Res res, ISAMS_M me)
 {
-    static ISAMS_M me = NULL;
-
-    if (me)
-        return me;
-
-    me = isams_getmethod ();
+    isams_getmethod (me);
 
     me->compare_item = key_compare;
 
@@ -352,8 +356,9 @@ ISAMH_M key_isamh_m (Res res)
     me->code_start = iscz1_code_start;
     me->code_item = iscz1_code_item;
     me->code_stop = iscz1_code_stop;
+    me->code_reset = iscz1_code_reset;
 
-    me->debug = atoi(res_get_def (res, "isamhDebug", "2"));
+    me->debug = atoi(res_get_def (res, "isamhDebug", "9"));
 
     return me;
 }