chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
manager: recheck unit paths on daemon reload
[elogind.git]
/
src
/
manager.c
diff --git
a/src/manager.c
b/src/manager.c
index 38964939c3336d1fdc9511ffb23e1b10cc3b7b93..b4b963a66265e5c006aabb1c4e1b0a6530befbf6 100644
(file)
--- a/
src/manager.c
+++ b/
src/manager.c
@@
-241,6
+241,12
@@
static int manager_find_paths(Manager *m) {
assert(m);
assert(m);
+ /* Unset previous data, in case we are called on reload */
+ strv_free(m->unit_path);
+ strv_free(m->sysvinit_path);
+ strv_free(m->sysvrcnd_path);
+ m->unit_path = m->sysvinit_path = m->sysvrcnd_path = NULL;
+
/* First priority is whatever has been passed to us via env
* vars */
if ((e = getenv("SYSTEMD_UNIT_PATH")))
/* First priority is whatever has been passed to us via env
* vars */
if ((e = getenv("SYSTEMD_UNIT_PATH")))
@@
-2346,6
+2352,10
@@
int manager_reload(Manager *m) {
/* From here on there is no way back. */
manager_clear_jobs_and_units(m);
/* From here on there is no way back. */
manager_clear_jobs_and_units(m);
+ /* Find new unit paths */
+ if ((q = manager_find_paths(m)) < 0)
+ r = q;
+
/* First, enumerate what we can from all config files */
if ((q = manager_enumerate(m)) < 0)
r = q;
/* First, enumerate what we can from all config files */
if ((q = manager_enumerate(m)) < 0)
r = q;