X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fcore%2Ftimer.c;h=940550194b15e238b2045d3519e2d65ecd2a873a;hb=cbecf9bf929318533fea798c57c10efcf6b2b447;hp=819a2608bd6ca3dc9c99b34460c311ca8f9cea19;hpb=0a1beeb64207eaa88ab9236787b1cbc2f704ae14;p=elogind.git diff --git a/src/core/timer.c b/src/core/timer.c index 819a2608b..940550194 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -28,7 +28,6 @@ #include "special.h" #include "bus-util.h" #include "bus-error.h" -#include "mkdir.h" static const UnitActiveState state_translation_table[_TIMER_STATE_MAX] = { [TIMER_DEAD] = UNIT_INACTIVE, @@ -147,10 +146,8 @@ static int timer_setup_persistent(Timer *t) { _cleanup_free_ char *h = NULL; r = get_home_dir(&h); - if (r < 0) { - log_error_errno(-r, "Failed to determine home directory: %m"); - return r; - } + if (r < 0) + return log_error_errno(r, "Failed to determine home directory: %m"); t->stamp_path = strjoin(h, "/.local/share/systemd/timers/stamp-", UNIT(t)->id, NULL); } @@ -485,7 +482,7 @@ static void timer_enter_waiting(Timer *t, bool initial) { return; fail: - log_unit_warning(UNIT(t)->id, "%s failed to enter waiting state: %s", UNIT(t)->id, strerror(-r)); + log_unit_warning_errno(UNIT(t)->id, r, "%s failed to enter waiting state: %m", UNIT(t)->id); timer_enter_dead(t, TIMER_FAILURE_RESOURCES); } @@ -507,7 +504,7 @@ static void timer_enter_running(Timer *t) { dual_timestamp_get(&t->last_trigger); if (t->stamp_path) - touch_file(t->stamp_path, true, t->last_trigger.realtime, (uid_t) -1, (gid_t) -1, 0); + touch_file(t->stamp_path, true, t->last_trigger.realtime, UID_INVALID, GID_INVALID, 0); timer_set_state(t, TIMER_RUNNING); return; @@ -545,12 +542,12 @@ static int timer_start(Unit *u) { /* The timer has never run before, * make sure a stamp file exists. */ - touch_file(t->stamp_path, true, (usec_t) -1, (uid_t) -1, (gid_t) -1, 0); + touch_file(t->stamp_path, true, USEC_INFINITY, UID_INVALID, GID_INVALID, 0); } t->result = TIMER_SUCCESS; timer_enter_waiting(t, true); - return 0; + return 1; } static int timer_stop(Unit *u) { @@ -560,7 +557,7 @@ static int timer_stop(Unit *u) { assert(t->state == TIMER_WAITING || t->state == TIMER_RUNNING || t->state == TIMER_ELAPSED); timer_enter_dead(t, TIMER_SUCCESS); - return 0; + return 1; } static int timer_serialize(Unit *u, FILE *f, FDSet *fds) { @@ -750,6 +747,7 @@ const UnitVTable timer_vtable = { "Unit\0" "Timer\0" "Install\0", + .private_section = "Timer", .init = timer_init, .done = timer_done, @@ -775,4 +773,7 @@ const UnitVTable timer_vtable = { .bus_interface = "org.freedesktop.systemd1.Timer", .bus_vtable = bus_timer_vtable, + .bus_set_property = bus_timer_set_property, + + .can_transient = true, };