X-Git-Url: http://lists.indexdata.dk/cgi-bin?a=blobdiff_plain;f=dict%2Fdelete.c;h=38e4cd336cbdffce55d234be86a2ca87b350473b;hb=a89d8384ad975fdddb2aa56e8c27b689a5e23f96;hp=d943a45427a11ed5d976d5e6725de45f4163e2ca;hpb=6c9fcd3b5d3108702fa1ffc92dab4ab6060f9a19;p=idzebra-moved-to-github.git diff --git a/dict/delete.c b/dict/delete.c index d943a45..38e4cd3 100644 --- a/dict/delete.c +++ b/dict/delete.c @@ -1,8 +1,5 @@ -/* $Id: delete.c,v 1.11 2005-01-15 19:38:21 adam Exp $ - Copyright (C) 1995-2005 - Index Data ApS - -This file is part of the Zebra server. +/* This file is part of the Zebra server. + Copyright (C) 1994-2009 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,9 +12,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 @@ -27,9 +24,9 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include "dict-p.h" -static void dict_del_subtree (Dict dict, Dict_ptr ptr, - void *client, - int (*f)(const char *, void *)) +static void dict_del_subtree(Dict dict, Dict_ptr ptr, + void *client, + int (*f)(const char *, void *)) { void *p = 0; short *indxp; @@ -38,7 +35,7 @@ static void dict_del_subtree (Dict dict, Dict_ptr ptr, if (!ptr) return; - dict_bf_readp (dict->dbf, ptr, &p); + dict_bf_readp(dict->dbf, ptr, &p); indxp = (short*) ((char*) p+DICT_bsize(p)-sizeof(short)); hi = DICT_nodir(p)-1; for (i = 0; i <= hi; i++) @@ -62,7 +59,7 @@ static void dict_del_subtree (Dict dict, Dict_ptr ptr, /* unsigned char length of information */ /* char * information */ char *info = (char*)p - indxp[-i]; - memcpy (&subptr, info, sizeof(Dict_ptr)); + memcpy(&subptr, info, sizeof(Dict_ptr)); if (info[sizeof(Dict_ptr)+sizeof(Dict_char)]) { @@ -71,22 +68,22 @@ static void dict_del_subtree (Dict dict, Dict_ptr ptr, } if (subptr) { - dict_del_subtree (dict, subptr, client, f); + dict_del_subtree(dict, subptr, client, f); /* page may be gone. reread it .. */ - dict_bf_readp (dict->dbf, ptr, &p); + dict_bf_readp(dict->dbf, ptr, &p); indxp = (short*) ((char*) p+DICT_bsize(p)-sizeof(short)); } } } DICT_backptr(p) = dict->head.freelist; dict->head.freelist = ptr; - dict_bf_touch (dict->dbf, ptr); + dict_bf_touch(dict->dbf, ptr); } -static int dict_del_string (Dict dict, const Dict_char *str, Dict_ptr ptr, - int sub_flag, void *client, - int (*f)(const char *, void *)) +static int dict_del_string(Dict dict, const Dict_char *str, Dict_ptr ptr, + int sub_flag, void *client, + int (*f)(const char *, void *)) { int mid, lo, hi; int cmp; @@ -96,7 +93,7 @@ static int dict_del_string (Dict dict, const Dict_char *str, Dict_ptr ptr, if (!ptr) return 0; - 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)); @@ -114,7 +111,7 @@ static int dict_del_string (Dict dict, const Dict_char *str, Dict_ptr ptr, if (sub_flag) { /* determine if prefix match */ - if (!dict_strncmp (str, (Dict_char*) info, dict_strlen(str))) + if (!dict_strncmp(str, (Dict_char*) info, dict_strlen(str))) { if (f) (*f)(info + (dict_strlen((Dict_char*) info)+1) @@ -128,7 +125,7 @@ static int dict_del_string (Dict dict, const Dict_char *str, Dict_ptr ptr, } DICT_type(p) = 1; (DICT_nodir(p))--; - dict_bf_touch (dict->dbf, ptr); + dict_bf_touch(dict->dbf, ptr); --hi; mid = lo = 0; /* start again (may not be the most efficient way to go)*/ @@ -148,7 +145,7 @@ static int dict_del_string (Dict dict, const Dict_char *str, Dict_ptr ptr, } DICT_type(p) = 1; (DICT_nodir(p))--; - dict_bf_touch (dict->dbf, ptr); + dict_bf_touch(dict->dbf, ptr); return 1; } } @@ -163,36 +160,36 @@ static int dict_del_string (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 (sub_flag && subptr) { Dict null_ptr = 0; - memcpy (info, &null_ptr, sizeof(Dict_ptr)); + memcpy(info, &null_ptr, sizeof(Dict_ptr)); } if (info[sizeof(Dict_ptr)+sizeof(Dict_char)]) { info[sizeof(Dict_ptr)+sizeof(Dict_char)] = 0; DICT_type(p) = 1; - dict_bf_touch (dict->dbf, ptr); + dict_bf_touch(dict->dbf, ptr); if (f) (*f)(info+sizeof(Dict_ptr)+sizeof(Dict_char), client); if (sub_flag && subptr) - dict_del_subtree (dict, subptr, client, f); + dict_del_subtree(dict, subptr, client, f); return 1; } if (sub_flag && subptr) { DICT_type(p) = 1; - dict_bf_touch (dict->dbf, ptr); - dict_del_subtree (dict, subptr, client, f); + dict_bf_touch(dict->dbf, ptr); + dict_del_subtree(dict, subptr, client, f); } return 0; } @@ -201,7 +198,7 @@ static int dict_del_string (Dict dict, const Dict_char *str, Dict_ptr ptr, if (subptr == 0) return 0; 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)); @@ -217,15 +214,24 @@ static int dict_del_string (Dict dict, const Dict_char *str, Dict_ptr ptr, return 0; } -int dict_delete (Dict dict, const char *p) +int dict_delete(Dict dict, const char *p) { - return dict_del_string (dict, (const Dict_char*) p, dict->head.root, 0, - 0, 0); + return dict_del_string(dict, (const Dict_char*) p, dict->head.root, 0, + 0, 0); } -int dict_delete_subtree (Dict dict, const char *p, void *client, - int (*f)(const char *info, void *client)) +int dict_delete_subtree(Dict dict, const char *p, void *client, + int (*f)(const char *info, void *client)) { - return dict_del_string (dict, (const Dict_char*) p, dict->head.root, 1, - client, f); + return dict_del_string(dict, (const Dict_char*) p, dict->head.root, 1, + client, f); } +/* + * Local variables: + * c-basic-offset: 4 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +