summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
authorRob Clark <robclark@freedesktop.org>2015-11-18 16:43:31 -0500
committerRob Clark <robclark@freedesktop.org>2015-11-24 10:02:55 -0500
commitd278e31459374feb18edd97d5adaacccc08f978a (patch)
tree39a401065cc3701c7abcd8ae0eeedf7cdd6d8ebd /src/util
parentd3e2c48dfa669899484159cf723d8da574996f65 (diff)
downloadexternal_mesa3d-d278e31459374feb18edd97d5adaacccc08f978a.zip
external_mesa3d-d278e31459374feb18edd97d5adaacccc08f978a.tar.gz
external_mesa3d-d278e31459374feb18edd97d5adaacccc08f978a.tar.bz2
util: move brw_env_var_as_boolean() to util
Kind of a handy function. And I'll want it available outside of i965 for common nir-pass helpers. Signed-off-by: Rob Clark <robclark@freedesktop.org> Reviewed-by: Nicolai Hähnle <nhaehnle@gmail.com>
Diffstat (limited to 'src/util')
-rw-r--r--src/util/debug.c25
-rw-r--r--src/util/debug.h2
2 files changed, 27 insertions, 0 deletions
diff --git a/src/util/debug.c b/src/util/debug.c
index 3729ce8..98b1853 100644
--- a/src/util/debug.c
+++ b/src/util/debug.c
@@ -51,3 +51,28 @@ parse_debug_string(const char *debug,
return flag;
}
+
+/**
+ * Reads an environment variable and interprets its value as a boolean.
+ *
+ * Recognizes 0/false/no and 1/true/yes. Other values result in the default value.
+ */
+bool
+env_var_as_boolean(const char *var_name, bool default_value)
+{
+ const char *str = getenv(var_name);
+ if (str == NULL)
+ return default_value;
+
+ if (strcmp(str, "1") == 0 ||
+ strcasecmp(str, "true") == 0 ||
+ strcasecmp(str, "yes") == 0) {
+ return true;
+ } else if (strcmp(str, "0") == 0 ||
+ strcasecmp(str, "false") == 0 ||
+ strcasecmp(str, "no") == 0) {
+ return false;
+ } else {
+ return default_value;
+ }
+}
diff --git a/src/util/debug.h b/src/util/debug.h
index 801736a..3555417 100644
--- a/src/util/debug.h
+++ b/src/util/debug.h
@@ -38,6 +38,8 @@ struct debug_control {
uint64_t
parse_debug_string(const char *debug,
const struct debug_control *control);
+bool
+env_var_as_boolean(const char *var_name, bool default_value);
#ifdef __cplusplus
} /* extern C */