summaryrefslogtreecommitdiff
path: root/src/core/entertain_config.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/entertain_config.c')
-rw-r--r--src/core/entertain_config.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/core/entertain_config.c b/src/core/entertain_config.c
new file mode 100644
index 0000000..7f1e35e
--- /dev/null
+++ b/src/core/entertain_config.c
@@ -0,0 +1,65 @@
+#include "hybbx/entertain_config.h"
+#include "hybbx/instance.h"
+#include "hybbx/log.h"
+#include "hybbx/util.h"
+
+#include <string.h>
+
+static hybbx_entertain_config_t g_entertain;
+static int g_entertain_ready;
+
+void hybbx_entertain_config_defaults(hybbx_entertain_config_t *cfg)
+{
+ if (cfg == NULL) {
+ return;
+ }
+
+ memset(cfg, 0, sizeof(*cfg));
+ cfg->enabled = 0;
+}
+
+void hybbx_entertain_config_apply(const hybbx_config_t *config)
+{
+ hybbx_instance_role_t role;
+ const char *legacy;
+
+ hybbx_entertain_config_defaults(&g_entertain);
+ g_entertain_ready = 1;
+
+ if (config != NULL) {
+ g_entertain.enabled = hybbx_config_get_bool(config, "entertain",
+ "enabled", 0);
+ /* Legacy: [networks] entertain= — prefer [entertain] enabled= */
+ legacy = hybbx_config_get(config, "networks", "entertain", NULL);
+ if (legacy != NULL && legacy[0] != '\0' &&
+ !hybbx_config_get(config, "entertain", "enabled", NULL)) {
+ g_entertain.enabled = hybbx_bool_is_true(legacy);
+ hybbx_log_warn("[entertain] legacy [networks] entertain= — "
+ "use [entertain] enabled=yes");
+ }
+ }
+
+ role = hybbx_instance_role();
+ if (g_entertain.enabled && role != HYBBX_INSTANCE_MAIN) {
+ hybbx_log_warn("[entertain] Main / standalone Main only — forcing off "
+ "(role=%s)",
+ hybbx_instance_role_name());
+ g_entertain.enabled = 0;
+ }
+
+ hybbx_log_info("[entertain] enabled=%s (chess built-in; Main/standalone only)",
+ hybbx_bool_to_string(g_entertain.enabled));
+}
+
+const hybbx_entertain_config_t *hybbx_entertain_config_get(void)
+{
+ if (!g_entertain_ready) {
+ hybbx_entertain_config_defaults(&g_entertain);
+ }
+ return &g_entertain;
+}
+
+int hybbx_entertain_enabled(void)
+{
+ return hybbx_entertain_config_get()->enabled;
+}
git clone -b <branch> https://cgit.mode42.com/<repo>.git
git clone -b <branch> git://cgit.mode42.com/<repo>.git

info@mode42.com