diff options
author | Lennart Poettering <lennart@poettering.net> | 2010-04-23 05:22:20 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2010-04-23 05:22:20 +0200 |
commit | 6542952f8bece780ddf560499e1be9b35c690d26 (patch) | |
tree | 2c967e78a34421ceb402662cb668de2941fbcbc9 /service.c | |
parent | 92da345c02a99090879a247c360f9940e5c27ee3 (diff) |
initctl: minor updates
Diffstat (limited to 'service.c')
-rw-r--r-- | service.c | 29 |
1 files changed, 20 insertions, 9 deletions
@@ -2197,7 +2197,7 @@ static int service_enumerate(Manager *m) { } while ((de = readdir(d))) { - Unit *runlevel, *service; + Unit *service; if (ignore_file(de->d_name)) continue; @@ -2233,31 +2233,42 @@ static int service_enumerate(Manager *m) { if ((r = manager_load_unit(m, name, NULL, &service)) < 0) goto finish; - if ((r = manager_load_unit(m, rcnd_table[i+1], NULL, &runlevel)) < 0) - goto finish; - if (de->d_name[0] == 'S') { - if ((r = unit_add_dependency(runlevel, UNIT_WANTS, service, true)) < 0) + Unit *runlevel_target; + + if ((r = manager_load_unit(m, rcnd_table[i+1], NULL, &runlevel_target)) < 0) + goto finish; + + if ((r = unit_add_dependency(runlevel_target, UNIT_WANTS, service, true)) < 0) goto finish; - if ((r = unit_add_dependency(runlevel, UNIT_AFTER, service, true)) < 0) + if ((r = unit_add_dependency(runlevel_target, UNIT_AFTER, service, true)) < 0) goto finish; } else if (de->d_name[0] == 'K' && (streq(rcnd_table[i+1], SPECIAL_RUNLEVEL0_TARGET) || streq(rcnd_table[i+1], SPECIAL_RUNLEVEL6_TARGET))) { + Unit *shutdown_target; + /* We honour K links only for * halt/reboot. For the normal * runlevels we assume the * stop jobs will be * implicitly added by the - * core logic. */ + * core logic. Also, we don't + * really distuingish here + * between the runlevels 0 and + * 6 and just add them to the + * special shutdown target. */ + + if ((r = manager_load_unit(m, SPECIAL_SHUTDOWN_TARGET, NULL, &shutdown_target)) < 0) + goto finish; - if ((r = unit_add_dependency(runlevel, UNIT_CONFLICTS, service, true)) < 0) + if ((r = unit_add_dependency(shutdown_target, UNIT_CONFLICTS, service, true)) < 0) goto finish; - if ((r = unit_add_dependency(runlevel, UNIT_BEFORE, service, true)) < 0) + if ((r = unit_add_dependency(shutdown_target, UNIT_BEFORE, service, true)) < 0) goto finish; } } |