chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fstab-generator: support fstab=/rd.fstab= kernel cmdline
[elogind.git]
/
src
/
core
/
unit.c
diff --git
a/src/core/unit.c
b/src/core/unit.c
index 1f1a5314f7e4e5820ae5a3517d687b7fc5a85a9d..4cffc57793723c612cf1303bd5e0c702e28625e3 100644
(file)
--- a/
src/core/unit.c
+++ b/
src/core/unit.c
@@
-399,6
+399,7
@@
void unit_free(Unit *u) {
free(u->description);
strv_free(u->documentation);
free(u->fragment_path);
free(u->description);
strv_free(u->documentation);
free(u->fragment_path);
+ free(u->source_path);
free(u->instance);
set_free_free(u->names);
free(u->instance);
set_free_free(u->names);
@@
-682,6
+683,9
@@
void unit_dump(Unit *u, FILE *f, const char *prefix) {
if (u->fragment_path)
fprintf(f, "%s\tFragment Path: %s\n", prefix, u->fragment_path);
if (u->fragment_path)
fprintf(f, "%s\tFragment Path: %s\n", prefix, u->fragment_path);
+ if (u->source_path)
+ fprintf(f, "%s\tSource Path: %s\n", prefix, u->source_path);
+
if (u->job_timeout > 0)
fprintf(f, "%s\tJob Timeout: %s\n", prefix, format_timespan(timespan, sizeof(timespan), u->job_timeout));
if (u->job_timeout > 0)
fprintf(f, "%s\tJob Timeout: %s\n", prefix, format_timespan(timespan, sizeof(timespan), u->job_timeout));
@@
-1831,20
+1835,12
@@
int set_unit_path(const char *p) {
}
char *unit_dbus_path(Unit *u) {
}
char *unit_dbus_path(Unit *u) {
- char *p, *e;
-
assert(u);
if (!u->id)
return NULL;
assert(u);
if (!u->id)
return NULL;
- if (!(e = bus_path_escape(u->id)))
- return NULL;
-
- p = strappend("/org/freedesktop/systemd1/unit/", e);
- free(e);
-
- return p;
+ return unit_dbus_path_from_name(u->id);
}
int unit_add_cgroup(Unit *u, CGroupBonding *b) {
}
int unit_add_cgroup(Unit *u, CGroupBonding *b) {
@@
-2575,11
+2571,11
@@
void unit_status_printf(Unit *u, const char *status, const char *format, ...) {
}
bool unit_need_daemon_reload(Unit *u) {
}
bool unit_need_daemon_reload(Unit *u) {
+ struct stat st;
+
assert(u);
if (u->fragment_path) {
assert(u);
if (u->fragment_path) {
- struct stat st;
-
zero(st);
if (stat(u->fragment_path, &st) < 0)
/* What, cannot access this anymore? */
zero(st);
if (stat(u->fragment_path, &st) < 0)
/* What, cannot access this anymore? */
@@
-2590,8
+2586,15
@@
bool unit_need_daemon_reload(Unit *u) {
return true;
}
return true;
}
- if (UNIT_VTABLE(u)->need_daemon_reload)
- return UNIT_VTABLE(u)->need_daemon_reload(u);
+ if (u->source_path) {
+ zero(st);
+ if (stat(u->source_path, &st) < 0)
+ return true;
+
+ if (u->source_mtime > 0 &&
+ timespec_load(&st.st_mtim) != u->source_mtime)
+ return true;
+ }
return false;
}
return false;
}