X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=timer.c;h=65e74fe807e543e302569b5fd419fbe3772cd032;hp=b1571ce7ea7af864f11ad6c0273205b0fff77564;hb=890f434c6086cd076b15d7530f9c450b99f346e4;hpb=5cb5a6ffc33667c93e9bc3572534dcaa684046e3 diff --git a/timer.c b/timer.c index b1571ce7e..65e74fe80 100644 --- a/timer.c +++ b/timer.c @@ -1,39 +1,64 @@ /*-*- Mode: C; c-basic-offset: 8 -*-*/ -#include "name.h" -#include "timer.h" +/*** + This file is part of systemd. -static NameActiveState timer_active_state(Name *n) { + Copyright 2010 Lennart Poettering - static const NameActiveState table[_TIMER_STATE_MAX] = { - [TIMER_DEAD] = NAME_INACTIVE, - [TIMER_WAITING] = NAME_ACTIVE, - [TIMER_RUNNING] = NAME_ACTIVE - }; + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. - return table[TIMER(n)->state]; -} + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. -static void timer_free_hook(Name *n) { - Timer *t = TIMER(n); + You should have received a copy of the GNU General Public License + along with systemd; If not, see . +***/ + +#include + +#include "unit.h" +#include "timer.h" + +static void timer_done(Unit *u) { + Timer *t = TIMER(u); assert(t); +} + +static int timer_init(Unit *u) { + int r; - if (t->service) - t->service->timer = NULL; + assert(u); + + /* Make sure this config file actually exists */ + + if ((r = unit_load_fragment_and_dropin(u)) <= 0) + return r < 0 ? r : -ENOENT; + + return 0; } -const NameVTable timer_vtable = { - .suffix = ".timer", +static UnitActiveState timer_active_state(Unit *u) { - .load = name_load_fragment_and_dropin, - .dump = NULL, + static const UnitActiveState table[_TIMER_STATE_MAX] = { + [TIMER_DEAD] = UNIT_INACTIVE, + [TIMER_WAITING] = UNIT_ACTIVE, + [TIMER_RUNNING] = UNIT_ACTIVE + }; + + return table[TIMER(u)->state]; +} - .start = NULL, - .stop = NULL, - .reload = NULL, +const UnitVTable timer_vtable = { + .suffix = ".timer", - .active_state = timer_active_state, + .init = timer_init, + .done = timer_done, - .free_hook = timer_free_hook + .active_state = timer_active_state };