-/* $Id: bfile.c,v 1.40 2005-03-30 09:25:23 adam Exp $
+/* $Id: bfile.c,v 1.46 2006-05-05 09:14:02 adam Exp $
Copyright (C) 1995-2005
Index Data ApS
#include <assert.h>
#ifdef WIN32
#include <io.h>
-#else
+#endif
+
+#if HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <yaz/xmalloc.h>
#include <idzebra/util.h>
#include <idzebra/bfile.h>
#include "mfile.h"
unlink (bfs->cache_fname);
}
-void bf_cache (BFiles bfs, const char *spec)
+ZEBRA_RES bf_cache (BFiles bfs, const char *spec)
{
if (spec)
{
- yaz_log (YLOG_LOG, "enabling cache spec=%s", spec);
+ yaz_log (YLOG_LOG, "enabling shadow spec=%s", spec);
if (!bfs->commit_area)
bfs->commit_area = mf_init ("shadow", spec, bfs->base);
if (bfs->commit_area)
strcat (bfs->cache_fname, "/cache");
yaz_log (YLOG_LOG, "cache_fname = %s", bfs->cache_fname);
}
+ else
+ {
+ yaz_log(YLOG_WARN, "shadow could not be enabled");
+ return ZEBRA_FAIL;
+ }
}
else
bfs->commit_area = NULL;
+ return ZEBRA_OK;
}
int bf_close (BFile bf)
if (!bf)
return 0;
/* HEADER_SIZE is considered enough for our header */
- if (bf->alloc_buf_size < HEADER_SIZE)
+ if (bf->block_size < HEADER_SIZE)
bf->alloc_buf_size = HEADER_SIZE;
else
bf->alloc_buf_size = bf->block_size;
bf_close(bf);
return 0;
}
+ if (hbuf[l] == ' ')
+ l++;
if (more_info)
*more_info = hbuf + l;
return bf;
{
if (bf->header_dirty)
{
- assert(bf->alloc_buf);
zint pos = 0;
+ assert(bf->alloc_buf);
assert(bf->magic);
sprintf(bf->alloc_buf, "%s %d " ZINT_FORMAT " " ZINT_FORMAT " ",
bf->magic, version, bf->last_block, bf->free_list);
}
return 0;
}
+
+int bfs_register_directory_stat(BFiles bfs, int no, const char **directory,
+ double *used_bytes, double *max_bytes)
+{
+ return mf_area_directory_stat(bfs->register_area, no, directory,
+ used_bytes, max_bytes);
+}
+
+
+int bfs_shadow_directory_stat(BFiles bfs, int no, const char **directory,
+ double *used_bytes, double *max_bytes)
+{
+ if (!bfs->commit_area)
+ return 0;
+ return mf_area_directory_stat(bfs->commit_area, no, directory,
+ used_bytes, max_bytes);
+}