diff options
| author | Sebastien Bacher <seb128@ubuntu.com> | 2021-02-25 11:36:45 +0100 |
|---|---|---|
| committer | Sebastien Bacher <seb128@ubuntu.com> | 2021-02-25 11:36:45 +0100 |
| commit | d92aa7f298fe84d4cf686c5ad64b73438e00d377 (patch) | |
| tree | 2f1f4c7b48cff9e63b0d0e3669bada3d9aeda72e /shared/systemd/src/basic/env-util.c | |
| parent | a82e048a943092315a32d745c99e0f5635e29134 (diff) | |
| parent | 3a56bce6c0ea7ba0fe269520547740783b342e0d (diff) | |
Merge branch 'upstream/latest' of https://salsa.debian.org/utopia-team/network-manager into upstream/latest
Diffstat (limited to 'shared/systemd/src/basic/env-util.c')
| -rw-r--r-- | shared/systemd/src/basic/env-util.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/shared/systemd/src/basic/env-util.c b/shared/systemd/src/basic/env-util.c index 11f4b29b..a311ee00 100644 --- a/shared/systemd/src/basic/env-util.c +++ b/shared/systemd/src/basic/env-util.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1+ */ +/* SPDX-License-Identifier: LGPL-2.1-or-later */ #include "nm-sd-adapt-shared.h" @@ -19,7 +19,8 @@ #include "utf8.h" #if 0 /* NM_IGNORED */ -#define VALID_CHARS_ENV_NAME \ +/* We follow bash for the character set. Different shells have different rules. */ +#define VALID_BASH_ENV_NAME_CHARS \ DIGITS LETTERS \ "_" @@ -44,17 +45,14 @@ static bool env_name_is_valid_n(const char *e, size_t n) { return false; for (p = e; p < e + n; p++) - if (!strchr(VALID_CHARS_ENV_NAME, *p)) + if (!strchr(VALID_BASH_ENV_NAME_CHARS, *p)) return false; return true; } bool env_name_is_valid(const char *e) { - if (!e) - return false; - - return env_name_is_valid_n(e, strlen(e)); + return env_name_is_valid_n(e, strlen_ptr(e)); } bool env_value_is_valid(const char *e) { @@ -549,7 +547,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { word = e+1; state = WORD; - } else if (flags & REPLACE_ENV_ALLOW_BRACELESS && strchr(VALID_CHARS_ENV_NAME, *e)) { + } else if (flags & REPLACE_ENV_ALLOW_BRACELESS && strchr(VALID_BASH_ENV_NAME_CHARS, *e)) { k = strnappend(r, word, e-word-1); if (!k) return NULL; @@ -639,7 +637,7 @@ char *replace_env_n(const char *format, size_t n, char **env, unsigned flags) { case VARIABLE_RAW: assert(flags & REPLACE_ENV_ALLOW_BRACELESS); - if (!strchr(VALID_CHARS_ENV_NAME, *e)) { + if (!strchr(VALID_BASH_ENV_NAME_CHARS, *e)) { const char *t; t = strv_env_get_n(env, word+1, e-word-1, flags); @@ -753,3 +751,17 @@ int getenv_bool_secure(const char *p) { return parse_boolean(e); } + +#if 0 /* NM_IGNORED */ +int set_unset_env(const char *name, const char *value, bool overwrite) { + int r; + + if (value) + r = setenv(name, value, overwrite); + else + r = unsetenv(name); + if (r < 0) + return -errno; + return 0; +} +#endif /* NM_IGNORED */ |