--- systemd-208/src/core/service.c +++ systemd-208/src/core/service.c 2014-01-17 12:15:52.527311588 +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_WANTS; FOREACH_WORD_QUOTED(w, z, strchr(t, ':')+1, i) { char *n, *m; @@ -838,12 +843,15 @@ 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); + r = unit_add_two_dependencies_by_name(u, d, e, m, NULL, true); if (r < 0) log_error_unit(u->id, "[%s:%u] Failed to add dependency on %s, ignoring: %s",