]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
env-util: drop _pure_ for strv_env_get_n 31120/head
authorMike Yuan <me@yhndnzj.com>
Mon, 29 Jan 2024 17:50:47 +0000 (01:50 +0800)
committerMike Yuan <me@yhndnzj.com>
Mon, 29 Jan 2024 19:30:02 +0000 (03:30 +0800)
This function calls getenv() internally, making it
non-pure, as envvars can change between two calls
even if passed arguments are the same.

src/basic/env-util.c
src/basic/env-util.h

index ad3130f445b4ad35b147c8abbb2b1e43c6bfb8b3..6061edb90484e13dfafeabeb8b86496d4a266f43 100644 (file)
@@ -529,7 +529,7 @@ int _strv_env_assign_many(char ***l, ...) {
         return 0;
 }
 
-char* strv_env_get_n(char **l, const char *name, size_t k, ReplaceEnvFlags flags) {
+char* strv_env_get_n(char * const *l, const char *name, size_t k, ReplaceEnvFlags flags) {
         assert(name);
 
         if (k == SIZE_MAX)
@@ -539,7 +539,7 @@ char* strv_env_get_n(char **l, const char *name, size_t k, ReplaceEnvFlags flags
 
         STRV_FOREACH_BACKWARDS(i, l)
                 if (strneq(*i, name, k) && (*i)[k] == '=')
-                        return *i + k + 1;
+                        return (char*) *i + k + 1;
 
         if (flags & REPLACE_ENV_USE_ENVIRONMENT) {
                 const char *t;
index f722a124d94feb523cad5501aaa2f2ae373328de..ad127de39f8e9614103850adcc074c92511eb7b8 100644 (file)
@@ -53,8 +53,8 @@ int strv_env_assignf(char ***l, const char *key, const char *valuef, ...) _print
 int _strv_env_assign_many(char ***l, ...) _sentinel_;
 #define strv_env_assign_many(l, ...) _strv_env_assign_many(l, __VA_ARGS__, NULL)
 
-char* strv_env_get_n(char **l, const char *name, size_t k, ReplaceEnvFlags flags) _pure_;
-static inline char* strv_env_get(char **x, const char *n) {
+char* strv_env_get_n(char * const *l, const char *name, size_t k, ReplaceEnvFlags flags);
+static inline char* strv_env_get(char * const *x, const char *n) {
         return strv_env_get_n(x, n, SIZE_MAX, 0);
 }