summaryrefslogtreecommitdiff
path: root/src/core/unit.c
diff options
context:
space:
mode:
authorWaLyong Cho <walyong.cho@samsung.com>2014-12-09 21:46:30 +0900
committerLennart Poettering <lennart@poettering.net>2014-12-09 18:24:26 +0100
commitadb76a701d870b980f7949bcfece2c1547b4976d (patch)
tree2739b6286843fe7215324f72169def2a7a8232b8 /src/core/unit.c
parentdd5ae4c36c89da5dbe8d1628939b26c00db98753 (diff)
unit: update unit dropin paths and time when dropin file is written.
If a unit is set property by "systemctl set-property", a new dropin file is generated. But the unit's dropin_paths and dropin_mtime are not updated. So the unit is shown as need daemon reload. Update unit dropin_paths and dropin_mtime also when dropin file is written.
Diffstat (limited to 'src/core/unit.c')
-rw-r--r--src/core/unit.c21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/core/unit.c b/src/core/unit.c
index 43280ecd2f..b3b0892f5e 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -3272,7 +3272,7 @@ static int unit_drop_in_file(Unit *u,
int unit_write_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name, const char *data) {
- _cleanup_free_ char *dir = NULL;
+ _cleanup_free_ char *dir = NULL, *p = NULL, *q = NULL;
int r;
assert(u);
@@ -3284,7 +3284,24 @@ int unit_write_drop_in(Unit *u, UnitSetPropertiesMode mode, const char *name, co
if (r < 0)
return r;
- return write_drop_in(dir, u->id, 50, name, data);
+ r = write_drop_in(dir, u->id, 50, name, data);
+ if (r < 0)
+ return r;
+
+ r = drop_in_file(dir, u->id, 50, name, &p, &q);
+ if (r < 0)
+ return r;
+
+ r = strv_extend(&u->dropin_paths, q);
+ if (r < 0)
+ return r;
+
+ strv_sort(u->dropin_paths);
+ strv_uniq(u->dropin_paths);
+
+ u->dropin_mtime = now(CLOCK_REALTIME);
+
+ return 0;
}
int unit_write_drop_in_format(Unit *u, UnitSetPropertiesMode mode, const char *name, const char *format, ...) {