Fixes this bug: alxchk > systemctl --user set-environment A=B alxchk > systemctl --user show-environment | grep ^A= A=B alxchk > systemctl --user daemon-reexec alxchk > systemctl --user show-environment | grep ^A= alxchk > --- src/core/manager.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
diff --git a/src/core/manager.c b/src/core/manager.c index b538a9a..edcf517 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1852,6 +1852,7 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool serialize_jobs) { Iterator i; Unit *u; const char *t; + char **e; int r; assert(m); @@ -1875,6 +1876,10 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool serialize_jobs) { dual_timestamp_serialize(f, "finish-timestamp", &m->finish_timestamp); } + STRV_FOREACH(e, m->environment) { + fprintf(f, "env=%s\n", *e); + } + fputc('\n', f); HASHMAP_FOREACH_KEY(u, t, m->units, i) { @@ -1975,6 +1980,19 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { dual_timestamp_deserialize(l+20, &m->userspace_timestamp); else if (startswith(l, "finish-timestamp=")) dual_timestamp_deserialize(l+17, &m->finish_timestamp); + else if (startswith(l, "env=")) + { + char ** e; + + e = strv_env_set(m->environment, l+4); + if (! e) { + r = -ENOMEM; + goto finish; + } + + strv_free(m->environment); + m->environment = e; + } else log_debug("Unknown serialization item '%s'", l); } -- 1.8.1.2 _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel