Added few more stubs so that control reaches to DestroyDevice().
[mesa.git] / src / util / debug.c
index 98b1853325d415e73012d2a19fa8db4b1b0660d9..89ae61310746455ecb037a6a0dda837eb320c223 100644 (file)
  * IN THE SOFTWARE.
  */
 
+#include <errno.h>
 #include <string.h>
-#include "main/macros.h"
 #include "debug.h"
+#include "u_string.h"
 
 uint64_t
 parse_debug_string(const char *debug,
@@ -52,6 +53,20 @@ parse_debug_string(const char *debug,
    return flag;
 }
 
+bool
+comma_separated_list_contains(const char *list, const char *s)
+{
+   assert(list);
+   const size_t len = strlen(s);
+
+   for (unsigned n; n = strcspn(list, ","), *list; list += MAX2(1, n)) {
+      if (n == len && !strncmp(list, s, n))
+         return true;
+   }
+
+   return false;
+}
+
 /**
  * Reads an environment variable and interprets its value as a boolean.
  *
@@ -66,13 +81,34 @@ env_var_as_boolean(const char *var_name, bool default_value)
 
    if (strcmp(str, "1") == 0 ||
        strcasecmp(str, "true") == 0 ||
+       strcasecmp(str, "y") == 0 ||
        strcasecmp(str, "yes") == 0) {
       return true;
    } else if (strcmp(str, "0") == 0 ||
               strcasecmp(str, "false") == 0 ||
+              strcasecmp(str, "n") == 0 ||
               strcasecmp(str, "no") == 0) {
       return false;
    } else {
       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;
+}