X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fservice.c;h=df0d4002409f8d5cf3cb5ac49087d9bf8c9790f0;hp=2d7ab70c1945a462643cb5a40825f870165ba1aa;hb=b036fc0050b21fb0d284a11019ea0a77be264296;hpb=4f7dcad328249b80580aed5de73bd754db19351c diff --git a/src/service.c b/src/service.c index 2d7ab70c1..df0d40024 100644 --- a/src/service.c +++ b/src/service.c @@ -277,9 +277,11 @@ static int sysv_translate_facility(const char *name, char **_r) { } if (*name == '$') - return 0; + r = unit_name_build(name+1, NULL, ".target"); + else + r = sysv_translate_name(name); - if (!(r = sysv_translate_name(name))) + if (!r) return -ENOMEM; finish: @@ -317,8 +319,8 @@ static int sysv_fix_order(Service *s) { /* If both units have modern headers we don't care * about the priorities */ - if ((!s->sysv_path || s->sysv_has_lsb) && - (!t->sysv_path || t->sysv_has_lsb)) + if ((s->meta.fragment_path || s->sysv_has_lsb) && + (t->meta.fragment_path || t->sysv_has_lsb)) continue; special_s = s->sysv_runlevels && !chars_intersect(RUNLEVELS_UP, s->sysv_runlevels); @@ -2278,7 +2280,7 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { assert(s); assert(pid >= 0); - if (s->sysv_path) + if (!s->meta.fragment_path) success = is_clean_exit_lsb(code, status); else success = is_clean_exit(code, status);