diff options
Diffstat (limited to 'src/blocks')
| -rw-r--r-- | src/blocks/date.c | 31 | ||||
| -rw-r--r-- | src/blocks/fs.c | 31 | ||||
| -rw-r--r-- | src/blocks/group.c | 20 | ||||
| -rw-r--r-- | src/blocks/ram.c | 31 | ||||
| -rw-r--r-- | src/blocks/scheme.c | 16 | ||||
| -rw-r--r-- | src/blocks/scheme.h | 20 | ||||
| -rw-r--r-- | src/blocks/text.c | 19 |
7 files changed, 81 insertions, 87 deletions
diff --git a/src/blocks/date.c b/src/blocks/date.c index 93747c3..adb248e 100644 --- a/src/blocks/date.c +++ b/src/blocks/date.c @@ -2,7 +2,7 @@ #include <assert.h> #include <time.h> -#include "scheme.h" +#include "../block.h" #include "../any_log.h" @@ -11,6 +11,11 @@ typedef struct { char *format; } block_date_t; +static const struct timespec block_date_interval = { + .tv_sec = 1, + .tv_nsec = 0, +}; + static void block_date_update(block_t *block) { block_date_t *date = (block_date_t *)block; @@ -26,6 +31,15 @@ static void block_date_update(block_t *block) assert(date->block.text != NULL); } +static block_t *block_date_alloc(const block_scheme_t *scheme) +{ + block_t *block = calloc(1, sizeof(block_date_t)); + block->type = BLOCK_TEXT; + block->update_interval = block_date_interval; + block->update_fn = block_date_update; + return block; +} + static void block_date_clean(block_t *block) { block_date_t *date = (block_date_t *)block; @@ -48,16 +62,9 @@ static bool block_date_validate(block_t *block, const block_scheme_t *scheme) const block_scheme_t block_date_scheme = { .name = "date", - .block = { - .type = BLOCK_TEXT, - .update_interval = { - .tv_sec = 1, - .tv_nsec = 0, - }, - .update_fn = block_date_update, - .clean_fn = block_date_clean, - }, - .size = sizeof(block_date_t), .entries = NULL, - .validate = block_date_validate, + .alloc_fn = block_date_alloc, + .clean_fn = block_date_clean, + .validate_fn = block_date_validate, + .resolve_fn = NULL, }; 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, }; diff --git a/src/blocks/group.c b/src/blocks/group.c index ae8f981..bf377f5 100644 --- a/src/blocks/group.c +++ b/src/blocks/group.c @@ -1,4 +1,11 @@ -#include "scheme.h" +#include "../block.h" + +static block_t *block_group_alloc(const block_scheme_t *scheme) +{ + block_t *block = calloc(1, sizeof(block_group_t)); + block->type = BLOCK_GROUP; + return block; +} static void block_group_clean(block_t *block) { @@ -8,12 +15,9 @@ static void block_group_clean(block_t *block) const block_scheme_t block_group_scheme = { .name = "group", - .block = { - .type = BLOCK_GROUP, - .clean_fn = block_group_clean, - }, - .size = sizeof(block_group_t), .entries = NULL, - .validate = NULL, + .alloc_fn = block_group_alloc, + .clean_fn = block_group_clean, + .validate_fn = NULL, + .resolve_fn = NULL, }; - diff --git a/src/blocks/ram.c b/src/blocks/ram.c index 8c21b21..158583c 100644 --- a/src/blocks/ram.c +++ b/src/blocks/ram.c @@ -3,7 +3,7 @@ #include <assert.h> #include <stdlib.h> -#include "scheme.h" +#include "../block.h" #include "../any_log.h" @@ -12,6 +12,11 @@ typedef struct { char *format; } block_ram_t; +static const struct timespec block_ram_interval = { + .tv_sec = 1, + .tv_nsec = 0, +}; + static void block_ram_update(block_t *block) { FILE *meminfo = fopen("/proc/meminfo", "rb"); @@ -59,6 +64,15 @@ static void block_ram_update(block_t *block) assert(ram->block.text != NULL); } +static block_t *block_ram_alloc(const block_scheme_t *scheme) +{ + block_t *block = calloc(1, sizeof(block_ram_t)); + block->type = BLOCK_TEXT; + block->update_interval = block_ram_interval; + block->update_fn = block_ram_update; + return block; +} + static void block_ram_clean(block_t *block) { block_ram_t *ram = (block_ram_t *)block; @@ -89,16 +103,9 @@ static bool block_ram_validate(block_t *block, const block_scheme_t *scheme) const block_scheme_t block_ram_scheme = { .name = "ram", - .block = { - .type = BLOCK_TEXT, - .update_interval = { - .tv_sec = 1, - .tv_nsec = 0, - }, - .update_fn = block_ram_update, - .clean_fn = block_ram_clean, - }, - .size = sizeof(block_ram_t), .entries = NULL, - .validate = block_ram_validate, + .alloc_fn = block_ram_alloc, + .clean_fn = block_ram_clean, + .validate_fn = block_ram_validate, + .resolve_fn = NULL, }; diff --git a/src/blocks/scheme.c b/src/blocks/scheme.c deleted file mode 100644 index 75519fc..0000000 --- a/src/blocks/scheme.c +++ /dev/null @@ -1,16 +0,0 @@ -#include "scheme.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, -}; diff --git a/src/blocks/scheme.h b/src/blocks/scheme.h deleted file mode 100644 index a3dc9c2..0000000 --- a/src/blocks/scheme.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef COMET_SCHEME_H -#define COMET_SCHEME_H - -#include "../config.h" - -typedef struct block_scheme block_scheme_t; - -typedef bool (*block_validate_t)(block_t *block, const block_scheme_t *scheme); - -struct block_scheme { - const char *name; - block_t block; - size_t size; - const config_entry_t *entries; - block_validate_t validate; -}; - -extern const block_scheme_t *block_schemes[]; - -#endif diff --git a/src/blocks/text.c b/src/blocks/text.c index 270b197..115beb0 100644 --- a/src/blocks/text.c +++ b/src/blocks/text.c @@ -1,7 +1,14 @@ -#include "scheme.h" +#include "../block.h" #include "../any_log.h" +static block_t *block_text_alloc(const block_scheme_t *scheme) +{ + block_t *block = calloc(1, sizeof(block_text_t)); + block->type = BLOCK_TEXT; + return block; +} + static void block_text_clean(block_t *block) { block_text_t *text = (block_text_t *)block; @@ -22,11 +29,9 @@ static bool block_text_validate(block_t *block, const block_scheme_t *scheme) const block_scheme_t block_text_scheme = { .name = "text", - .block = { - .type = BLOCK_TEXT, - .clean_fn = block_text_clean, - }, - .size = sizeof(block_text_t), .entries = NULL, - .validate = block_text_validate, + .alloc_fn = block_text_alloc, + .clean_fn = block_text_clean, + .validate_fn = block_text_validate, + .resolve_fn = NULL, }; |
