void sqfs_destroy(sqfs *fs) { sqfs_table_destroy(&fs->id_table); sqfs_table_destroy(&fs->frag_table); if (sqfs_export_ok(fs)) sqfs_table_destroy(&fs->export_table); sqfs_cache_destroy(&fs->md_cache); sqfs_cache_destroy(&fs->data_cache); sqfs_cache_destroy(&fs->frag_cache); sqfs_cache_destroy(&fs->blockidx); }
sqfs_err sqfs_cache_init(sqfs_cache *cache, size_t size, size_t count, sqfs_cache_dispose dispose) { cache->size = size; cache->count = count; cache->dispose = dispose; cache->next = 0; cache->idxs = calloc(count, sizeof(sqfs_cache_idx)); cache->buf = calloc(count, size); if (cache->idxs && cache->buf) return SQFS_OK; sqfs_cache_destroy(cache); return SQFS_ERR; }