aboutsummaryrefslogtreecommitdiff
path: root/src/block.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/block.c')
-rw-r--r--src/block.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/block.c b/src/block.c
index 6a7311e..c844e9b 100644
--- a/src/block.c
+++ b/src/block.c
@@ -5,6 +5,21 @@
#include "util.h"
#include "any_log.h"
+extern const block_scheme_t block_text_scheme;
+extern const block_scheme_t block_group_scheme;
+extern const block_scheme_t block_ram_scheme;
+extern const block_scheme_t block_fs_scheme;
+extern const block_scheme_t block_date_scheme;
+
+const block_scheme_t *block_schemes[] = {
+ &block_text_scheme,
+ &block_group_scheme,
+ &block_ram_scheme,
+ &block_fs_scheme,
+ &block_date_scheme,
+ NULL,
+};
+
void block_update(block_t *block)
{
if (block->update_fn != NULL) {
@@ -34,7 +49,8 @@ void block_update(block_t *block)
void block_free(block_t *block)
{
free(block->label);
- assert(block->clean_fn != NULL);
- block->clean_fn(block);
+ assert(block->scheme != NULL);
+ assert(block->scheme->clean_fn != NULL);
+ block->scheme->clean_fn(block);
free(block);
}