util: env_var_as_unsigned() helper
authorRob Clark <robdclark@gmail.com>
Fri, 9 Nov 2018 18:28:36 +0000 (13:28 -0500)
committerRob Clark <robdclark@gmail.com>
Tue, 27 Nov 2018 20:44:02 +0000 (15:44 -0500)
So I can drop env2u() helper from freedreno_util.h and get rid of one
small ir3 dependency on gallium/freedreno

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/util/debug.c
src/util/debug.h

index 98b1853..2773b55 100644 (file)
@@ -21,6 +21,7 @@
  * IN THE SOFTWARE.
  */
 
+#include <errno.h>
 #include <string.h>
 #include "main/macros.h"
 #include "debug.h"
@@ -76,3 +77,22 @@ env_var_as_boolean(const char *var_name, bool default_value)
       return default_value;
    }
 }
+
+/**
+ * Reads an environment variable and interprets its value as a unsigned.
+ */
+unsigned
+env_var_as_unsigned(const char *var_name, unsigned default_value)
+{
+   char *str = getenv(var_name);
+   if (str) {
+      char *end;
+      unsigned long result;
+
+      errno = 0;
+      result = strtoul(str, &end, 0);
+      if (errno == 0 && end != str && *end == '\0')
+        return result;
+   }
+   return default_value;
+}
index 75ebc2e..2e34ebe 100644 (file)
@@ -41,6 +41,8 @@ parse_debug_string(const char *debug,
                    const struct debug_control *control);
 bool
 env_var_as_boolean(const char *var_name, bool default_value);
+unsigned
+env_var_as_unsigned(const char *var_name, unsigned default_value);
 
 #ifdef __cplusplus
 } /* extern C */