Bug fix: insert didn't work on 8-bit characters due to unsigned char
[idzebra-moved-to-github.git] / dict / lookup.c
index 9f2a21e..46a13c4 100644 (file)
@@ -4,7 +4,16 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: lookup.c,v $
- * Revision 1.3  1994-09-26 10:17:25  adam
+ * Revision 1.6  1995-12-11 09:04:50  adam
+ * Bug fix: the lookup/scan/lookgrep didn't handle empty dictionary.
+ *
+ * Revision 1.5  1995/09/04  09:09:15  adam
+ * String arg in lookup is const.
+ *
+ * Revision 1.4  1994/10/05  12:16:51  adam
+ * Pagesize is a resource now.
+ *
+ * Revision 1.3  1994/09/26  10:17:25  adam
  * Minor changes.
  *
  * Revision 1.2  1994/09/16  15:39:14  adam
@@ -22,7 +31,7 @@
 
 #include <dict.h>
 
-static char *dict_look (Dict dict, Dict_char *str)
+static char *dict_look (Dict dict, const Dict_char *str)
 {
     Dict_ptr ptr = 1;
     int mid, lo, hi;
@@ -34,7 +43,7 @@ static char *dict_look (Dict dict, Dict_char *str)
     dict_bf_readp (dict->dbf, ptr, &p);
     mid = lo = 0;
     hi = DICT_nodir(p)-1;
-    indxp = (short*) ((char*) p+DICT_PAGESIZE-sizeof(short));    
+    indxp = (short*) ((char*) p+DICT_pagesize(dict)-sizeof(short));    
     while (lo <= hi)
     {
         mid = (lo+hi)/2;
@@ -77,7 +86,8 @@ static char *dict_look (Dict dict, Dict_char *str)
                     dict_bf_readp (dict->dbf, ptr, &p);
                     mid = lo = 0;
                     hi = DICT_nodir(p)-1;
-                    indxp = (short*) ((char*) p+DICT_PAGESIZE-sizeof(short));
+                    indxp = (short*) ((char*) p+DICT_pagesize(dict)
+                                      -sizeof(short));
                     continue;
                 }
             }
@@ -90,9 +100,9 @@ static char *dict_look (Dict dict, Dict_char *str)
     return NULL;
 }
 
-char *dict_lookup (Dict dict, Dict_char *p)
+char *dict_lookup (Dict dict, const Dict_char *p)
 {
-    if (dict->head.last == 1)
+    if (dict->head.last <= 1)
         return NULL;
     return dict_look (dict, p);
 }