Should solve the problems of bug #858864 - LSB "+" dependencies aren't handled properly bug #857204 - inssrv fails to enable rpcbind The side effect is that RequiresOverridable= is used for the services add behind Required-Start bug #863217 - systemd overrides explicit admin request to disable a service That is that in this version the Wants= for all services behind Should-Start, X-Start-Before, and X-Stop-After is not used anymore --- service.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) --- systemd-208/src/core/service.c +++ systemd-208/src/core/service.c 2014-02-21 14:44:59.066735478 +0000 @@ -380,6 +380,8 @@ static int sysv_translate_facility(const "remote_fs", SPECIAL_REMOTE_FS_TARGET, "syslog", NULL, "time", SPECIAL_TIME_SYNC_TARGET, + "all", SPECIAL_DEFAULT_TARGET, + "null", NULL, }; unsigned i; @@ -389,7 +391,7 @@ static int sysv_translate_facility(const assert(name); assert(_r); - n = *name == '$' ? name + 1 : name; + n = (*name == '$' || *name == '+') ? name + 1 : name; for (i = 0; i < ELEMENTSOF(table); i += 2) { @@ -816,10 +818,13 @@ static int service_load_sysv_path(Servic startswith_no_case(t, "Should-Start:") || startswith_no_case(t, "X-Start-Before:") || startswith_no_case(t, "X-Start-After:")) { + UnitDependency d, e; char *i, *w; size_t z; state = LSB; + d = startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER; + e = startswith_no_case(t, "Required-Start:") ? UNIT_REQUIRES_OVERRIDABLE : _UNIT_DEPENDENCY_INVALID; FOREACH_WORD_QUOTED(w, z, strchr(t, ':')+1, i) { char *n, *m; @@ -838,12 +843,18 @@ static int service_load_sysv_path(Servic continue; } + if (*n == '+') + e = UNIT_WANTS; + free(n); if (r == 0) continue; - r = unit_add_dependency_by_name(u, startswith_no_case(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true); + if (e != _UNIT_DEPENDENCY_INVALID) + r = unit_add_two_dependencies_by_name(u, d, e, m, NULL, true); + else + r = unit_add_dependency_by_name(u, d, m, NULL, true); if (r < 0) log_error_unit(u->id, "[%s:%u] Failed to add dependency on %s, ignoring: %s",