aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/env.c38
-rw-r--r--util/meson.build1
2 files changed, 39 insertions, 0 deletions
diff --git a/util/env.c b/util/env.c
new file mode 100644
index 00000000..b0a9efda
--- /dev/null
+++ b/util/env.c
@@ -0,0 +1,38 @@
+#include <stdlib.h>
+#include <string.h>
+#include <wlr/util/log.h>
+#include "util/env.h"
+
+bool env_parse_bool(const char *option) {
+ const char *env = getenv(option);
+ if (env) {
+ wlr_log(WLR_INFO, "Loading %s option: %s", option, env);
+ }
+
+ if (!env || strcmp(env, "0") == 0) {
+ return false;
+ } else if (strcmp(env, "1") == 0) {
+ return true;
+ }
+
+ wlr_log(WLR_ERROR, "Unknown %s option: %s", option, env);
+ return false;
+}
+
+ssize_t env_parse_switch(const char *option, const char **switches) {
+ const char *env = getenv(option);
+ if (env) {
+ wlr_log(WLR_INFO, "Loading %s option: %s", option, env);
+ } else {
+ return 0;
+ }
+
+ for (ssize_t i = 0; switches[i]; i++) {
+ if (strcmp(env, switches[i]) == 0) {
+ return i;
+ }
+ }
+
+ wlr_log(WLR_ERROR, "Unknown %s option: %s", option, env);
+ return 0;
+}
diff --git a/util/meson.build b/util/meson.build
index 8933f2e7..34fc2e23 100644
--- a/util/meson.build
+++ b/util/meson.build
@@ -2,6 +2,7 @@ wlr_files += files(
'addon.c',
'array.c',
'box.c',
+ 'env.c',
'global.c',
'log.c',
'region.c',