2 * Copyright (C) 1994, Index Data I/S
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.2 1995-12-06 17:48:30 adam
8 * Bug fix: delete didn't work.
10 * Revision 1.1 1995/12/06 14:52:21 adam
11 * New function: dict_delete.
22 static int dict_del (Dict dict, const Dict_char *str)
31 dict_bf_readp (dict->dbf, ptr, &p);
34 indxp = (short*) ((char*) p+DICT_pagesize(dict)-sizeof(short));
40 /* string (Dict_char *) DICT_EOS terminated */
41 /* unsigned char length of information */
42 /* char * information */
43 info = (char*)p + indxp[-mid];
44 cmp = dict_strcmp((Dict_char*) info, str);
50 indxp[-mid] = indxp[-mid-1];
54 dict_bf_touch (dict->dbf, ptr);
64 /* Dict_char sub char */
65 /* unsigned char length of information */
66 /* char * information */
67 info = (char*)p - indxp[-mid];
68 memcpy (&dc, info+sizeof(Dict_ptr), sizeof(Dict_char));
72 memcpy (&subptr, info, sizeof(Dict_ptr));
73 if (*++str == DICT_EOS)
75 if (info[sizeof(Dict_ptr)+sizeof(Dict_char)])
77 info[sizeof(Dict_ptr)+sizeof(Dict_char)] = 0;
78 dict_bf_touch (dict->dbf, ptr);
88 dict_bf_readp (dict->dbf, ptr, &p);
91 indxp = (short*) ((char*) p+DICT_pagesize(dict)
105 int dict_delete (Dict dict, const Dict_char *p)
107 if (dict->head.last == 1)
109 return dict_del (dict, p);