Put local variables footer in all c, h files.
[idzebra-moved-to-github.git] / dict / lookupec.c
index 686aa04..5791ffa 100644 (file)
@@ -1,39 +1,32 @@
-/*
- * Copyright (C) 1994, Index Data I/S 
- * All rights reserved.
- * Sebastian Hammer, Adam Dickmeiss
- *
- * $Log: lookupec.c,v $
- * Revision 1.6  1996-02-02 13:43:51  adam
- * The public functions simply use char instead of Dict_char to represent
- * search strings. Dict_char is used internally only.
- *
- * Revision 1.5  1995/01/24  16:01:03  adam
- * Added -ansi to CFLAGS.
- * Use new API of dfa module.
- *
- * Revision 1.4  1994/10/05  12:16:51  adam
- * Pagesize is a resource now.
- *
- * Revision 1.3  1994/09/26  16:31:06  adam
- * Minor changes.
- *
- * Revision 1.2  1994/09/22  14:43:57  adam
- * First functional version of lookup with error correction. A 'range'
- * specified the maximum number of insertions+deletions+substitutions.
- *
- * Revision 1.1  1994/09/22  10:43:44  adam
- * Two versions of depend. Type 1 is the tail-type compatible with
- * all make programs. Type 2 is the GNU make with include facility.
- * Type 2 is default. depend rule chooses current rule.
- *
- */
+/* $Id: lookupec.c,v 1.13 2006-05-10 08:13:18 adam Exp $
+   Copyright (C) 1995-2005
+   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 <stdlib.h>
 #include <string.h>
 #include <stdio.h>
 #include <assert.h>
 
-#include <dict.h>
+#include "dict-p.h"
 
 typedef unsigned MatchWord;
 
@@ -57,7 +50,7 @@ int dict_look_ec (Dict dict, Dict_ptr ptr, MatchInfo *mi, MatchWord *ri_base,
     dict_bf_readp (dict->dbf, ptr, &p);
     lo = 0;
     hi = DICT_nodir(p)-1;
-    indxp = (short*) ((char*) p+DICT_pagesize(dict)-sizeof(short));    
+    indxp = (short*) ((char*) p+DICT_bsize(p)-sizeof(short));    
     while (lo <= hi)
     {
         if (indxp[-lo] > 0)
@@ -128,7 +121,7 @@ int dict_look_ec (Dict dict, Dict_ptr ptr, MatchInfo *mi, MatchWord *ri_base,
                                   userfunc, range, prefix);
                     dict_bf_readp (dict->dbf, ptr, &p);
                     indxp = (short*) ((char*) p + 
-                                      DICT_pagesize(dict)-sizeof(short));
+                                      DICT_bsize(p)-sizeof(short));
                 }
             }
         }
@@ -143,9 +136,9 @@ static MatchInfo *prepare_match (Dict_char *pattern)
     MatchWord *s;
     MatchInfo *mi;
 
-    mi = xmalloc (sizeof(*mi));
+    mi = (MatchInfo *) xmalloc (sizeof(*mi));
     mi->m = dict_strlen (pattern);
-    mi->s = s = xmalloc (sizeof(*s)*256);  /* 256 !!! */
+    mi->s = s = (MatchWord *) xmalloc (sizeof(*s)*256);  /* 256 !!! */
     for (i=0; i<256; i++)
         s[i] = 0;
     for (i=0; pattern[i]; i++)
@@ -161,18 +154,27 @@ int dict_lookup_ec (Dict dict, char *pattern, int range,
     int i;
     Dict_char prefix[2048];
 
-    if (dict->head.last == 1)
+    if (!dict->head.root)
         return 0;
     
     mi = prepare_match ((Dict_char*) pattern);
 
-    ri = xmalloc ((dict_strlen((Dict_char*) pattern)+range+2)
-                  * (range+1)*sizeof(*ri));
+    ri = (MatchWord *) xmalloc ((dict_strlen((Dict_char*) pattern)+range+2)
+                               * (range+1)*sizeof(*ri));
     for (i=0; i<=range; i++)
         ri[i] = (2<<i)-1;
     
-    i = dict_look_ec (dict, 1, mi, ri, 0, userfunc, range, prefix);
+    i = dict_look_ec (dict, dict->head.root, mi, ri, 0, userfunc,
+                     range, prefix);
     xfree (ri);
     return i;
 }
 
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+