diff options
-rw-r--r-- | src/core/load-fragment.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 8eaf8b33e9..a7951a5757 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -4594,6 +4594,7 @@ static int merge_by_names(Unit **u, Set *names, const char *id) { int unit_load_fragment(Unit *u) { const char *fragment; _cleanup_set_free_free_ Set *names = NULL; + struct stat st; int r; assert(u); @@ -4625,7 +4626,6 @@ int unit_load_fragment(Unit *u) { if (fragment) { /* Open the file, check if this is a mask, otherwise read. */ _cleanup_fclose_ FILE *f = NULL; - struct stat st; /* Try to open the file name. A symlink is OK, for example for linked files or masks. We * expect that all symlinks within the lookup paths have been already resolved, but we don't @@ -4660,6 +4660,13 @@ int unit_load_fragment(Unit *u) { } } + if (u->source_path) { + if (stat(u->source_path, &st) >= 0) + u->source_mtime = timespec_load(&st.st_mtim); + else + u->source_mtime = 0; + } + /* We do the merge dance here because for some unit types, the unit might have aliases which are not * declared in the file system. In particular, this is true (and frequent) for device and swap units. */ |