From 1640be4666726a26d51f64725523d68ec5edd3c6 Mon Sep 17 00:00:00 2001 From: jacekpoz Date: Sun, 11 Feb 2024 17:50:10 +0100 Subject: [PATCH] api versioning for modules --- mod.h | 10 +++++++++- modules/desktop.c | 14 +++++++++++++- modules/os.c | 14 +++++++++++++- modules/sep.c | 14 +++++++++++++- 4 files changed, 48 insertions(+), 4 deletions(-) diff --git a/mod.h b/mod.h index 3580234..8a64d65 100644 --- a/mod.h +++ b/mod.h @@ -4,10 +4,18 @@ #include "semver.h" #include +static const semver API_VERSION = { + .major = 0, + .minor = 1, + .patch = 0, +}; + +static const uint8_t MFERR_APIVER = 1; + semver version(void); const char *name(void); -void init(char **config); +uint8_t init(char **config); const char *get(void); #endif // _MODFETCH_MOD_H diff --git a/modules/desktop.c b/modules/desktop.c index 27e5b17..0098925 100644 --- a/modules/desktop.c +++ b/modules/desktop.c @@ -8,6 +8,12 @@ #include #include +static const semver api_ver = { + .major = 0, + .minor = 1, + .patch = 0, +}; + static const semver _version = { .major = 0, .minor = 1, @@ -17,8 +23,14 @@ static const semver _version = { semver version(void) { return _version; } const char *name(void) { return "desktop"; } -void init(char **config) { +uint8_t init(char **config) { + if (!sveq(api_ver, API_VERSION)) { + return MFERR_APIVER; + } + (void)config; + + return 0; } const char *get(void) { diff --git a/modules/os.c b/modules/os.c index eb8fc05..f786c14 100644 --- a/modules/os.c +++ b/modules/os.c @@ -10,6 +10,12 @@ #include #include +static const semver api_ver = { + .major = 0, + .minor = 1, + .patch = 0, +}; + static const semver _version = { .major = 0, .minor = 1, @@ -19,8 +25,14 @@ static const semver _version = { semver version(void) { return _version; } const char *name(void) { return "os"; } -void init(char **config) { +uint8_t init(char **config) { + if (!sveq(api_ver, API_VERSION)) { + return MFERR_APIVER; + } + (void)config; + + return 0; } const char *get(void) { diff --git a/modules/sep.c b/modules/sep.c index 0320598..f199398 100644 --- a/modules/sep.c +++ b/modules/sep.c @@ -12,6 +12,12 @@ #include #include +static const semver api_ver = { + .major = 0, + .minor = 1, + .patch = 0, +}; + static const semver _version = { .major = 1, .minor = 0, @@ -25,7 +31,11 @@ static size_t length = 8; static char *sep_char = "-"; static size_t sep_char_length = 1; -void init(char **config) { +uint8_t init(char **config) { + if (!sveq(api_ver, API_VERSION)) { + return MFERR_APIVER; + } + for (char *opt = *config; opt != NULL; opt = *++config) { if (strncmp(opt, "sep", 3) == 0) { char *valstr = opt + 4; // skip 'sep=' @@ -47,6 +57,8 @@ void init(char **config) { } } } + + return 0; } const char *get(void) {