+/*
+ * Copyright (C) 1994, Index Data I/S
+ * All rights reserved.
+ * Sebastian Hammer, Adam Dickmeiss
+ *
+ * $Log: drdwr.c,v $
+ * Revision 1.8 1995-01-24 11:25:11 adam
+ * Removed stupid assertion.
+ *
+ * Revision 1.7 1994/10/05 10:47:15 adam
+ * Function pr_lru is non-static now. No warning no more.
+ *
+ * Revision 1.6 1994/09/06 13:05:14 adam
+ * Further development of insertion. Some special cases are
+ * not properly handled yet! assert(0) are put here. The
+ * binary search in each page definitely reduce usr CPU.
+ *
+ * Revision 1.5 1994/09/01 17:49:38 adam
+ * Removed stupid line. Work on insertion in dictionary. Not finished yet.
+ *
+ */
+
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <dict.h>
-static void pr_lru (Dict_BFile bf)
+void dict_pr_lru (Dict_BFile bf)
{
struct Dict_file_block *p;
for (p=bf->lru_back; p; p = p->lru_next)
if (p->lru_next)
p->lru_next->lru_prev = p->lru_prev;
else
- bf->lru_back = p->lru_prev;
+ bf->lru_front = p->lru_prev;
/* remove from hash chain */
*p->h_prev = p->h_next;
{
p = bf->lru_back;
if (p->dirty)
+ {
bf_write (bf->bf, p->no, 0, 0, p->data);
+ }
release_block (bf, p);
}
}
bf->lru_front = p;
}
-int bf_readp (Dict_BFile bf, int no, void **bufp)
+int dict_bf_readp (Dict_BFile bf, int no, void **bufp)
{
struct Dict_file_block *p;
int i;
return i;
}
-int bf_newp (Dict_BFile bf, int no, void **bufp)
+int dict_bf_newp (Dict_BFile dbf, int no, void **bufp)
{
struct Dict_file_block *p;
- if (!(p = find_block (bf, no)))
- p = alloc_block (bf, no);
+ if (!(p = find_block (dbf, no)))
+ p = alloc_block (dbf, no);
else
- move_to_front (bf, p);
+ move_to_front (dbf, p);
*bufp = p->data;
- memset (p->data, 0, bf->bf->block_size);
+ memset (p->data, 0, dbf->block_size);
p->dirty = 1;
#if 0
printf ("bf_newp of %d:", no);
- pr_lru (bf);
+ dict_pr_lru (dbf);
#endif
return 1;
}
-int bf_touch (Dict_BFile bf, int no)
+int dict_bf_touch (Dict_BFile dbf, int no)
{
struct Dict_file_block *p;
- if ((p = find_block (bf, no)))
+ if ((p = find_block (dbf, no)))
{
p->dirty = 1;
return 0;