diff options
Diffstat (limited to 'src/basic/env-util.c')
-rw-r--r-- | src/basic/env-util.c | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/src/basic/env-util.c b/src/basic/env-util.c index ecb2192c4d..441169db31 100644 --- a/src/basic/env-util.c +++ b/src/basic/env-util.c @@ -22,11 +22,14 @@ #include <limits.h> #include <unistd.h> +#include "alloc-util.h" +#include "def.h" +#include "env-util.h" +#include "parse-util.h" +#include "string-util.h" #include "strv.h" #include "utf8.h" #include "util.h" -#include "env-util.h" -#include "def.h" #define VALID_CHARS_ENV_NAME \ DIGITS LETTERS \ @@ -135,6 +138,21 @@ bool strv_env_is_valid(char **e) { return true; } +bool strv_env_name_is_valid(char **l) { + char **p, **q; + + STRV_FOREACH(p, l) { + if (!env_name_is_valid(*p)) + return false; + + STRV_FOREACH(q, p + 1) + if (streq(*p, *q)) + return false; + } + + return true; +} + bool strv_env_name_or_assignment_is_valid(char **l) { char **p, **q; @@ -592,3 +610,13 @@ char **replace_env_argv(char **argv, char **env) { ret[k] = NULL; return ret; } + +int getenv_bool(const char *p) { + const char *e; + + e = getenv(p); + if (!e) + return -ENXIO; + + return parse_boolean(e); +} |