2 * Copyright (C) 1994, Index Data I/S
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.1 1995-12-06 14:52:21 adam
8 * New function: dict_delete.
19 static int dict_del (Dict dict, const Dict_char *str)
28 dict_bf_readp (dict->dbf, ptr, &p);
31 indxp = (short*) ((char*) p+DICT_pagesize(dict)-sizeof(short));
37 /* string (Dict_char *) DICT_EOS terminated */
38 /* unsigned char length of information */
39 /* char * information */
40 info = (char*)p + indxp[-mid];
41 cmp = dict_strcmp((Dict_char*) info, str);
46 indxp[-mid] = indxp[-mid-1];
50 dict_bf_touch (dict->dbf, ptr);
60 /* Dict_char sub char */
61 /* unsigned char length of information */
62 /* char * information */
63 info = (char*)p - indxp[-mid];
64 memcpy (&dc, info+sizeof(Dict_ptr), sizeof(Dict_char));
68 memcpy (&subptr, info, sizeof(Dict_ptr));
69 if (*++str == DICT_EOS)
71 if (info[sizeof(Dict_ptr)+sizeof(Dict_char)])
73 info[sizeof(Dict_ptr)+sizeof(Dict_char)] = 0;
74 dict_bf_touch (dict->dbf, ptr);
84 dict_bf_readp (dict->dbf, ptr, &p);
87 indxp = (short*) ((char*) p+DICT_pagesize(dict)
101 int dict_delete (Dict dict, const Dict_char *p)
103 if (dict->head.last == 1)
105 return dict_del (dict, p);