43 lines
1.0 KiB
C++
43 lines
1.0 KiB
C++
#include <cstdlib>
|
|
#include <cstring>
|
|
|
|
#include <libreborn/log.h>
|
|
#include <libreborn/config.h>
|
|
#include <libreborn/env/env.h>
|
|
#include <libreborn/env/flags.h>
|
|
|
|
#include <mods/feature/feature.h>
|
|
|
|
// Check For Feature
|
|
bool _feature_has(const char *name, const int server_default) {
|
|
// Server Handling
|
|
if (reborn_is_server() && server_default != -1) {
|
|
return server_default > 0;
|
|
}
|
|
// Get Value
|
|
static Flags flags = Flags::get();
|
|
static bool loaded = false;
|
|
if (!loaded) {
|
|
const char *env = getenv(MCPI_FEATURE_FLAGS_ENV);
|
|
if (env) {
|
|
env_value_to_obj(flags, env);
|
|
}
|
|
loaded = true;
|
|
}
|
|
int ret = -1;
|
|
flags.root.for_each_const([&ret, &name](const FlagNode &flag) {
|
|
if (flag.name == std::string(name)) {
|
|
ret = flag.value;
|
|
}
|
|
});
|
|
if (ret == -1) {
|
|
ERR("Invalid Feature Flag: %s", name);
|
|
}
|
|
|
|
// Log
|
|
DEBUG("Feature: %s: %s", name, ret ? "Enabled" : "Disabled");
|
|
|
|
// Return
|
|
return ret;
|
|
}
|