diff options
-rw-r--r-- | src/util/debug.c | 20 | ||||
-rw-r--r-- | src/util/debug.h | 2 |
2 files changed, 22 insertions, 0 deletions
diff --git a/src/util/debug.c b/src/util/debug.c index 98b1853325d..2773b55cc4d 100644 --- a/src/util/debug.c +++ b/src/util/debug.c @@ -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; +} diff --git a/src/util/debug.h b/src/util/debug.h index 75ebc2ebffb..2e34ebe3421 100644 --- a/src/util/debug.h +++ b/src/util/debug.h @@ -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 */ |