Reformat: delete trailing whitespace
[idzebra-moved-to-github.git] / bfile / cfile.c
index 4774072..2d39e04 100644 (file)
@@ -1,8 +1,5 @@
-/* $Id: cfile.c,v 1.39 2006-11-14 08:12:06 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-2011 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
@@ -20,6 +17,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
 */
 
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
 #include <assert.h>
 #include <stdlib.h>
 #include <string.h>
@@ -29,6 +29,9 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #include "mfile.h"
 #include "cfile.h"
 
+/** \brief set to 1 if extra commit/shadow check is to be performed */
+#define EXTRA_CHECK 0
+
 static int write_head(CFile cf)
 {
     int left = cf->head.hash_size * sizeof(zint);
@@ -86,12 +89,11 @@ CFile cf_open(MFile mf, MFile_area area, const char *fname,
     /* avoid valgrind warnings, but set to something nasty */
     memset(cf, 'Z', sizeof(*cf));
 
-    yaz_log(YLOG_DEBUG, "cf: open %s %s", cf->rmf->name,
-            wflag ? "rdwr" : "rd");
-   
+    yaz_log(YLOG_DEBUG, "cf: open %s %s", fname, wflag ? "rdwr" : "rd");
+
     cf->block_mf = 0;
     cf->hash_mf = 0;
-    cf->rmf = mf; 
+    cf->rmf = mf;
 
     assert(firstp);
 
@@ -132,11 +134,11 @@ CFile cf_open(MFile mf, MFile_area area, const char *fname,
     if (ret == 0 || !cf->head.state)
     {
         *firstp = 1;
-        cf->head.state = 1;
+        cf->head.state = CFILE_STATE_HASH;
         cf->head.block_size = block_size;
         cf->head.hash_size = 199;
         hash_bytes = cf->head.hash_size * sizeof(zint);
-        cf->head.flat_bucket = cf->head.next_bucket = cf->head.first_bucket = 
+        cf->head.flat_bucket = cf->head.next_bucket = cf->head.first_bucket =
             (hash_bytes+sizeof(cf->head))/HASH_BSIZE + 2;
         cf->head.next_block = 1;
         cf->array = (zint *) xmalloc(hash_bytes);
@@ -164,7 +166,7 @@ CFile cf_open(MFile mf, MFile_area area, const char *fname,
         hash_bytes = cf->head.hash_size * sizeof(zint);
         assert(cf->head.next_bucket > 0);
         assert(cf->head.next_block > 0);
-        if (cf->head.state == 1)
+        if (cf->head.state == CFILE_STATE_HASH)
             cf->array = (zint *) xmalloc(hash_bytes);
         else
             cf->array = NULL;
@@ -174,7 +176,7 @@ CFile cf_open(MFile mf, MFile_area area, const char *fname,
             return 0;
         }
     }
-    if (cf->head.state == 1)
+    if (cf->head.state == CFILE_STATE_HASH)
     {
         cf->parray = (struct CFile_hash_bucket **)
            xmalloc(cf->head.hash_size * sizeof(*cf->parray));
@@ -203,7 +205,7 @@ static void release_bucket(CFile cf, struct CFile_hash_bucket *p)
     *p->h_prev = p->h_next;
     if (p->h_next)
         p->h_next->h_prev = p->h_prev;
-    
+
     --(cf->bucket_in_memory);
     xfree(p);
 }
@@ -252,7 +254,7 @@ static struct CFile_hash_bucket *alloc_bucket(CFile cf, zint block_no, int hno)
         cf->bucket_lru_front->lru_next = p;
     else
         cf->bucket_lru_back = p;
-    cf->bucket_lru_front = p; 
+    cf->bucket_lru_front = p;
 
     pp = cf->parray + hno;
     p->h_next = *pp;
@@ -343,20 +345,19 @@ static int cf_lookup_hash(CFile cf, zint no, zint *vno)
         }
         if (hb)
             continue;
-#if 0
-        /* extra check ... */
+#if EXTRA_CHECK
         for (hb = cf->bucket_lru_back; hb; hb = hb->lru_next)
         {
             if (hb->ph.this_bucket == block_no)
             {
                 yaz_log(YLOG_FATAL, "Found hash bucket on other chain(1)");
-                abort();
+                return -1;
             }
             for (i = 0; i<HASH_BUCKET && hb->ph.vno[i]; i++)
                 if (hb->ph.no[i] == no)
                 {
                     yaz_log(YLOG_FATAL, "Found hash bucket on other chain (2)");
-                    abort();
+                    return -1;
                 }
         }
 #endif
@@ -395,9 +396,9 @@ static int cf_moveto_flat(CFile cf)
     yaz_log(YLOG_DEBUG, "cf: Moving to flat shadow: %s", cf->rmf->name);
     yaz_log(YLOG_DEBUG, "cf: hits=%d miss=%d bucket_in_memory=" ZINT_FORMAT " total="
          ZINT_FORMAT,
-       cf->no_hits, cf->no_miss, cf->bucket_in_memory, 
+       cf->no_hits, cf->no_miss, cf->bucket_in_memory,
         cf->head.next_bucket - cf->head.first_bucket);
-    assert(cf->head.state == 1);
+    assert(cf->head.state == CFILE_STATE_HASH);
     if (flush_bucket(cf, -1))
         return -1;
     assert(cf->bucket_in_memory == 0);
@@ -424,7 +425,7 @@ static int cf_moveto_flat(CFile cf)
     cf->array = NULL;
     xfree(cf->parray);
     cf->parray = NULL;
-    cf->head.state = 2;
+    cf->head.state = CFILE_STATE_FLAT;
     cf->dirty = 1;
     return 0;
 }
@@ -448,10 +449,10 @@ static zint cf_new_hash(CFile cf, zint no)
 {
     int hno = cf_hash(cf, no);
     struct CFile_hash_bucket *hbprev = NULL, *hb = cf->parray[hno];
-    zint *bucketpp = &cf->array[hno]; 
+    zint *bucketpp = &cf->array[hno];
     int i;
     zint vno = (cf->head.next_block)++;
-  
+
     for (hb = cf->parray[hno]; hb; hb = hb->h_next)
         if (!hb->ph.vno[HASH_BUCKET-1])
             for (i = 0; i<HASH_BUCKET; i++)
@@ -476,14 +477,13 @@ static zint cf_new_hash(CFile cf, zint no)
         if (hb)
             continue;
 
-#if 0
-        /* extra check ... */
+#if EXTRA_CHECK
         for (hb = cf->bucket_lru_back; hb; hb = hb->lru_next)
         {
             if (hb->ph.this_bucket == *bucketpp)
             {
                 yaz_log(YLOG_FATAL, "Found hash bucket on other chain");
-                abort();
+                return 0;
             }
         }
 #endif
@@ -542,7 +542,7 @@ int cf_read(CFile cf, zint no, int offset, int nbytes, void *buf)
 {
     zint block;
     int ret;
-    
+
     assert(cf);
     zebra_mutex_lock(&cf->mutex);
     ret = cf_lookup(cf, no, &block);
@@ -645,6 +645,7 @@ int cf_close(CFile cf)
 /*
  * Local variables:
  * c-basic-offset: 4
+ * c-file-style: "Stroustrup"
  * indent-tabs-mode: nil
  * End:
  * vim: shiftwidth=4 tabstop=8 expandtab