/* * melisma - extensible and scriptable audio engine * Copyright (C) 2026 Ludvig Gunne Lindström * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include "melisma.h" #include struct semver { int major; int minor; int patch; }; static void parse(struct semver *out, const char *str) { const char *tok; char buf[32]; strcpy(buf, str); assert((tok = strtok(buf, "."))); out->major = atoi(tok); assert((tok = strtok(NULL, "."))); out->minor = atoi(tok); assert((tok = strtok(NULL, "."))); out->patch = atoi(tok); } void ml__check_version(const char *s) { extern lua_State *state; struct semver melisma, module; parse(&melisma,MELISMA_VERSION); parse(&module,s); if (melisma.major != module.major) { luaL_error(state,"Mismatching versions (melisma: %s, module: %s)", MELISMA_VERSION,s); } }