aboutsummaryrefslogtreecommitdiff
path: root/src/blocks/fs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blocks/fs.c')
-rw-r--r--src/blocks/fs.c31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/blocks/fs.c b/src/blocks/fs.c
index 9bb4452..45ea0a3 100644
--- a/src/blocks/fs.c
+++ b/src/blocks/fs.c
@@ -6,7 +6,7 @@
#include <sys/statvfs.h>
#include <sys/stat.h>
-#include "scheme.h"
+#include "../block.h"
#include "../any_log.h"
@@ -16,6 +16,11 @@ typedef struct {
char *path;
} block_fs_t;
+static const struct timespec block_fs_interval = {
+ .tv_sec = 20,
+ .tv_nsec = 0,
+};
+
static void block_fs_update(block_t *block)
{
block_fs_t *fs = (block_fs_t *)block;
@@ -48,6 +53,15 @@ static void block_fs_update(block_t *block)
assert(fs->block.text != NULL);
}
+static block_t *block_fs_alloc(const block_scheme_t *scheme)
+{
+ block_t *block = calloc(1, sizeof(block_fs_t));
+ block->type = BLOCK_TEXT;
+ block->update_interval = block_fs_interval;
+ block->update_fn = block_fs_update;
+ return block;
+}
+
static void block_fs_clean(block_t *block)
{
block_fs_t *fs = (block_fs_t *)block;
@@ -90,16 +104,9 @@ static const config_entry_t block_fs_entries[] = {
const block_scheme_t block_fs_scheme = {
.name = "fs",
- .block = {
- .type = BLOCK_TEXT,
- .update_interval = {
- .tv_sec = 20,
- .tv_nsec = 0,
- },
- .update_fn = block_fs_update,
- .clean_fn = block_fs_clean,
- },
- .size = sizeof(block_fs_t),
.entries = block_fs_entries,
- .validate = block_fs_validate,
+ .alloc_fn = block_fs_alloc,
+ .clean_fn = block_fs_clean,
+ .validate_fn = block_fs_validate,
+ .resolve_fn = NULL,
};