Happy new year
[idzebra-moved-to-github.git] / dict / open.c
index a8f241f..86b59fc 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: open.c,v 1.26 2006-08-14 10:40:09 adam Exp $
-   Copyright (C) 1995-2006
-   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
@@ -28,6 +25,25 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 #include "dict-p.h"
 
+void dict_clean(Dict dict)
+{
+    int page_size = dict->head.page_size;
+    void *head_buf;
+    int compact_flag = dict->head.compact_flag;
+
+    memset (dict->head.magic_str, 0, sizeof(dict->head.magic_str));
+    strcpy (dict->head.magic_str, DICT_MAGIC);
+    dict->head.last = 1;
+    dict->head.root = 0;
+    dict->head.freelist = 0;
+    dict->head.page_size = page_size;
+    dict->head.compact_flag = compact_flag;
+    
+    /* create header with information (page 0) */
+    if (dict->rw) 
+        dict_bf_newp (dict->dbf, 0, &head_buf, page_size);
+}
+
 Dict dict_open (BFiles bfs, const char *name, int cache, int rw,
                int compact_flag, int page_size)
 {
@@ -49,6 +65,9 @@ Dict dict_open (BFiles bfs, const char *name, int cache, int rw,
     }
     dict->dbf = dict_bf_open (bfs, name, page_size, cache, rw);
     dict->rw = rw;
+    dict->no_split = 0;
+    dict->no_insert = 0;
+    dict->no_lookup = 0;
 
     if(!dict->dbf)
     {
@@ -58,17 +77,9 @@ Dict dict_open (BFiles bfs, const char *name, int cache, int rw,
     }
     if (dict_bf_readp (dict->dbf, 0, &head_buf) <= 0)
     {
-       memset (dict->head.magic_str, 0, sizeof(dict->head.magic_str));
-       strcpy (dict->head.magic_str, DICT_MAGIC);
-       dict->head.last = 1;
-       dict->head.root = 0;
-       dict->head.freelist = 0;
        dict->head.page_size = page_size;
-       dict->head.compact_flag = compact_flag;
-       
-       /* create header with information (page 0) */
-        if (rw) 
-            dict_bf_newp (dict->dbf, 0, &head_buf, page_size);
+        dict->head.compact_flag = compact_flag;
+        dict_clean(dict);
     }
     else /* header was there, check magic and page size */
     {
@@ -105,6 +116,22 @@ int dict_strlen (const Dict_char *s)
 {
     return strlen((const char *) s);
 }
+
+zint dict_get_no_lookup(Dict dict)
+{
+    return dict->no_lookup;
+}
+
+zint dict_get_no_insert(Dict dict)
+{
+    return dict->no_insert;
+}
+
+zint dict_get_no_split(Dict dict)
+{
+    return dict->no_split;
+}
+
 /*
  * Local variables:
  * c-basic-offset: 4