X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=bfile%2Fbfile.c;h=a4b5353b798b8178ccdfaf767e7fd160cec7c5e6;hp=c5de537a20d384baf542f74f3fd16dacbf1ee140;hb=ecb3935e78cd9bcfdebafdee0834cfb1060d7b5e;hpb=f6dbdf7151bbdfaf47ec281a71ed6ef49b596f29 diff --git a/bfile/bfile.c b/bfile/bfile.c index c5de537..a4b5353 100644 --- a/bfile/bfile.c +++ b/bfile/bfile.c @@ -1,4 +1,4 @@ -/* $Id: bfile.c,v 1.42 2005-04-18 08:05:28 adam Exp $ +/* $Id: bfile.c,v 1.47 2006-05-10 08:13:17 adam Exp $ Copyright (C) 1995-2005 Index Data ApS @@ -26,7 +26,9 @@ Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA #include #ifdef WIN32 #include -#else +#endif + +#if HAVE_UNISTD_H #include #endif @@ -99,11 +101,11 @@ static void unlink_cache (BFiles bfs) 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) @@ -114,9 +116,15 @@ void bf_cache (BFiles bfs, const char *spec) 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) @@ -147,7 +155,7 @@ BFile bf_xopen(BFiles bfs, const char *name, int block_size, int wrflag, 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; @@ -203,6 +211,8 @@ BFile bf_xopen(BFiles bfs, const char *name, int block_size, int wrflag, bf_close(bf); return 0; } + if (hbuf[l] == ' ') + l++; if (more_info) *more_info = hbuf + l; return bf; @@ -427,3 +437,28 @@ int bf_free(BFile bf, int no, const zint *blocks) } 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 + */ +