X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=dict%2Flookup.c;h=d47267f23631cd25c4ec90aade2da7ab98c3375d;hp=465479d38b556951cc718019a683fb084dc3a4af;hb=27bdd6aa26843aeac89f635ed495996088d8e8aa;hpb=896c0427df9d8eff5de6a1735dcd992e067df844 diff --git a/dict/lookup.c b/dict/lookup.c index 465479d..d47267f 100644 --- a/dict/lookup.c +++ b/dict/lookup.c @@ -1,8 +1,5 @@ -/* $Id: lookup.c,v 1.11 2002-08-02 19:26:55 adam Exp $ - Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002 - Index Data Aps - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 2004-2013 Index Data 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 @@ -15,21 +12,24 @@ 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 + */ +#if HAVE_CONFIG_H +#include +#endif #include #include #include #include -#include +#include "dict-p.h" -static char *dict_look (Dict dict, const Dict_char *str, Dict_ptr ptr) +static char *dict_look(Dict dict, const Dict_char *str, Dict_ptr ptr) { int mid, lo, hi; int cmp; @@ -37,10 +37,10 @@ static char *dict_look (Dict dict, const Dict_char *str, Dict_ptr ptr) short *indxp; char *info; - dict_bf_readp (dict->dbf, ptr, &p); + dict_bf_readp(dict->dbf, ptr, &p); mid = lo = 0; hi = DICT_nodir(p)-1; - indxp = (short*) ((char*) p+DICT_bsize(p)-sizeof(short)); + indxp = (short*) ((char*) p+DICT_bsize(p)-sizeof(short)); while (lo <= hi) { mid = (lo+hi)/2; @@ -65,11 +65,11 @@ static char *dict_look (Dict dict, const Dict_char *str, Dict_ptr ptr) /* unsigned char length of information */ /* char * information */ info = (char*)p - indxp[-mid]; - memcpy (&dc, info+sizeof(Dict_ptr), sizeof(Dict_char)); + memcpy(&dc, info+sizeof(Dict_ptr), sizeof(Dict_char)); cmp = dc- *str; if (!cmp) { - memcpy (&subptr, info, sizeof(Dict_ptr)); + memcpy(&subptr, info, sizeof(Dict_ptr)); if (*++str == DICT_EOS) { if (info[sizeof(Dict_ptr)+sizeof(Dict_char)]) @@ -81,7 +81,7 @@ static char *dict_look (Dict dict, const Dict_char *str, Dict_ptr ptr) if (subptr == 0) return NULL; ptr = subptr; - dict_bf_readp (dict->dbf, ptr, &p); + dict_bf_readp(dict->dbf, ptr, &p); mid = lo = 0; hi = DICT_nodir(p)-1; indxp = (short*) ((char*) p+DICT_bsize(p)-sizeof(short)); @@ -97,9 +97,19 @@ static char *dict_look (Dict dict, const Dict_char *str, Dict_ptr ptr) return NULL; } -char *dict_lookup (Dict dict, const char *p) +char *dict_lookup(Dict dict, const char *p) { + dict->no_lookup++; if (!dict->head.root) return NULL; - return dict_look (dict, (const Dict_char *) p, dict->head.root); + return dict_look(dict, (const Dict_char *) p, dict->head.root); } +/* + * Local variables: + * c-basic-offset: 4 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +