aboutsummaryrefslogtreecommitdiff
path: root/util
diff options
context:
space:
mode:
authorAlexander Orzechowski <orzechowski.alexander@gmail.com>2022-08-19 09:59:30 -0400
committerAlexander Orzechowski <orzechowski.alexander@gmail.com>2022-08-22 10:18:00 -0400
commit31a9fc1fb60f8001f43186d36e3fbb5fce584d91 (patch)
treecebed6db21a55f5d1c0f6598e32ea52724235a5e /util
parente7477c71147617572c98a7daaf5934d4ad848d2a (diff)
util: Introduce env helpers
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',