core: clean up environment block for --user instances a bit
This commit is contained in:
parent
d44fdf4954
commit
43d03a8376
|
@ -348,11 +348,25 @@ static int manager_default_environment(Manager *m) {
|
|||
|
||||
/* Import locale variables LC_*= from configuration */
|
||||
locale_setup(&m->environment);
|
||||
} else
|
||||
} else {
|
||||
/* The user manager passes its own environment
|
||||
* along to its children. */
|
||||
m->environment = strv_copy(environ);
|
||||
|
||||
/* Let's remove some environment variables that we
|
||||
* need ourselves to communicate with our clients */
|
||||
strv_env_unset_many(
|
||||
m->environment,
|
||||
"NOTIFY_SOCKET",
|
||||
"MAINPID",
|
||||
"MANAGERPID",
|
||||
"LISTEN_PID",
|
||||
"LISTEN_FDS",
|
||||
"WATCHDOG_PID",
|
||||
"WATCHDOG_USEC",
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (!m->environment)
|
||||
return -ENOMEM;
|
||||
|
||||
|
|
|
@ -310,7 +310,7 @@ char **strv_env_unset(char **l, const char *p) {
|
|||
assert(p);
|
||||
|
||||
/* Drops every occurrence of the env var setting p in the
|
||||
* string list. edits in-place. */
|
||||
* string list. Edits in-place. */
|
||||
|
||||
for (f = t = l; *f; f++) {
|
||||
|
||||
|
@ -326,6 +326,43 @@ char **strv_env_unset(char **l, const char *p) {
|
|||
return l;
|
||||
}
|
||||
|
||||
char **strv_env_unset_many(char **l, ...) {
|
||||
|
||||
char **f, **t;
|
||||
|
||||
if (!l)
|
||||
return NULL;
|
||||
|
||||
/* Like strv_env_unset() but applies many at once. Edits in-place. */
|
||||
|
||||
for (f = t = l; *f; f++) {
|
||||
bool found = false;
|
||||
const char *p;
|
||||
va_list ap;
|
||||
|
||||
va_start(ap, l);
|
||||
|
||||
while ((p = va_arg(ap, const char*))) {
|
||||
if (env_match(*f, p)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
va_end(ap);
|
||||
|
||||
if (found) {
|
||||
free(*f);
|
||||
continue;
|
||||
}
|
||||
|
||||
*(t++) = *f;
|
||||
}
|
||||
|
||||
*t = NULL;
|
||||
return l;
|
||||
}
|
||||
|
||||
char **strv_env_set(char **x, const char *p) {
|
||||
|
||||
char **k, **r;
|
||||
|
|
|
@ -39,6 +39,7 @@ char **strv_env_delete(char **x, unsigned n_lists, ...); /* New copy */
|
|||
|
||||
char **strv_env_set(char **x, const char *p); /* New copy ... */
|
||||
char **strv_env_unset(char **l, const char *p); /* In place ... */
|
||||
char **strv_env_unset_many(char **l, ...) _sentinel_;
|
||||
|
||||
char *strv_env_get_n(char **l, const char *name, size_t k) _pure_;
|
||||
char *strv_env_get(char **x, const char *n) _pure_;
|
||||
|
|
Loading…
Reference in New Issue