make api versioning actually work

This commit is contained in:
jacekpoz 2024-02-11 19:37:41 +01:00
parent 147f372a9b
commit 53ff1074ef
No known key found for this signature in database
GPG key ID: 94E812A8B12AAE3C
5 changed files with 8 additions and 25 deletions

4
mod.h
View file

@ -6,7 +6,7 @@
static const semver API_VERSION = { static const semver API_VERSION = {
.major = 0, .major = 0,
.minor = 1, .minor = 2,
.patch = 0, .patch = 0,
}; };
@ -15,7 +15,7 @@ static const uint8_t MFERR_APIVER = 1;
semver version(void); semver version(void);
const char *name(void); const char *name(void);
uint8_t init(char **config); uint8_t init(semver api_ver, char **config);
const char *get(void); const char *get(void);
#endif // _MODFETCH_MOD_H #endif // _MODFETCH_MOD_H

View file

@ -1,3 +1,4 @@
#include "mod.h"
#include "semver.h" #include "semver.h"
#include <ctype.h> #include <ctype.h>
#include <dlfcn.h> #include <dlfcn.h>
@ -267,10 +268,10 @@ int main(int argc, char *argv[]) {
semver (*version)(void) = dlsym(handle, "version"); semver (*version)(void) = dlsym(handle, "version");
const char *(*name)(void) = dlsym(handle, "name"); const char *(*name)(void) = dlsym(handle, "name");
const char *(*get)(void) = dlsym(handle, "get"); const char *(*get)(void) = dlsym(handle, "get");
void (*init)(char**) = dlsym(handle, "init"); void (*init)(semver, char**) = dlsym(handle, "init");
#pragma GCC diagnostic pop #pragma GCC diagnostic pop
init(current_module.config); init(API_VERSION, current_module.config);
(void)name; (void)name;
(void)version; (void)version;

View file

@ -8,12 +8,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
static const semver api_ver = {
.major = 0,
.minor = 1,
.patch = 0,
};
static const semver _version = { static const semver _version = {
.major = 0, .major = 0,
.minor = 1, .minor = 1,
@ -23,7 +17,7 @@ static const semver _version = {
semver version(void) { return _version; } semver version(void) { return _version; }
const char *name(void) { return "desktop"; } const char *name(void) { return "desktop"; }
uint8_t init(char **config) { uint8_t init(semver api_ver, char **config) {
if (!sveq(api_ver, API_VERSION)) { if (!sveq(api_ver, API_VERSION)) {
return MFERR_APIVER; return MFERR_APIVER;
} }

View file

@ -10,12 +10,6 @@
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
static const semver api_ver = {
.major = 0,
.minor = 1,
.patch = 0,
};
static const semver _version = { static const semver _version = {
.major = 0, .major = 0,
.minor = 1, .minor = 1,
@ -25,7 +19,7 @@ static const semver _version = {
semver version(void) { return _version; } semver version(void) { return _version; }
const char *name(void) { return "os"; } const char *name(void) { return "os"; }
uint8_t init(char **config) { uint8_t init(semver api_ver, char **config) {
if (!sveq(api_ver, API_VERSION)) { if (!sveq(api_ver, API_VERSION)) {
return MFERR_APIVER; return MFERR_APIVER;
} }

View file

@ -12,12 +12,6 @@
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
static const semver api_ver = {
.major = 0,
.minor = 1,
.patch = 0,
};
static const semver _version = { static const semver _version = {
.major = 1, .major = 1,
.minor = 0, .minor = 0,
@ -31,7 +25,7 @@ static size_t length = 8;
static char *sep_char = "-"; static char *sep_char = "-";
static size_t sep_char_length = 1; static size_t sep_char_length = 1;
uint8_t init(char **config) { uint8_t init(semver api_ver, char **config) {
if (!sveq(api_ver, API_VERSION)) { if (!sveq(api_ver, API_VERSION)) {
return MFERR_APIVER; return MFERR_APIVER;
} }