-/* $Id: bfile.c,v 1.42 2005-04-18 08:05:28 adam Exp $
- Copyright (C) 1995-2005
+/* $Id: bfile.c,v 1.50 2006-10-10 10:19:28 adam Exp $
+ Copyright (C) 1995-2006
Index Data ApS
This file is part of the Zebra server.
for more details.
You should have received a copy of the GNU General Public License
-along with Zebra; see the file LICENSE.zebra. If not, write to the
-Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-02111-1307, USA.
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
*/
#include <stdio.h>
#include <assert.h>
#ifdef WIN32
#include <io.h>
-#else
+#endif
+
+#if HAVE_UNISTD_H
#include <unistd.h>
#endif
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 (!bfs)
return;
- mf_reset (bfs->commit_area);
- mf_reset (bfs->register_area);
+ mf_reset(bfs->commit_area, 1);
+ mf_reset(bfs->register_area, 1);
}
void bf_commitExec (BFiles bfs)
void bf_commitClean (BFiles bfs, const char *spec)
{
- FILE *inf;
- int block_size;
- char path[256];
- MFile mf;
- CFile cf;
int mustDisable = 0;
- int firstTime;
if (!bfs->commit_area)
{
mustDisable = 1;
}
- if (!(inf = open_cache (bfs, "rb")))
- return ;
- while (fscanf (inf, "%s %d", path, &block_size) == 2)
- {
- mf = mf_open (bfs->register_area, path, block_size, 0);
- cf = cf_open (mf, bfs->commit_area, path, block_size, 1, &firstTime);
- cf_unlink (cf);
- cf_close (cf);
- mf_close (mf);
- }
- fclose (inf);
+ mf_reset(bfs->commit_area, 1);
+
unlink_cache (bfs);
if (mustDisable)
bf_cache (bfs, 0);
}
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);
+}
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+