chiark / gitweb /
service: interpret suse/debian style X-Start-Before/X-Start-After
[elogind.git] / src / service.c
index 07b6e4e05a5dda9d3131b43e83050a1f029414e7..d557394c70eddc04cb58e0083d4fadaddf92d745 100644 (file)
@@ -516,7 +516,9 @@ static int service_load_sysv_path(Service *s, const char *path) {
                                 }
 
                         } else if (startswith(t, "Required-Start:") ||
-                                   startswith(t, "Should-Start:")) {
+                                   startswith(t, "Should-Start:") ||
+                                   startswith(t, "X-Start-Before:") ||
+                                   startswith(t, "X-Start-After:")) {
                                 char *i, *w;
                                 size_t z;
 
@@ -539,7 +541,7 @@ static int service_load_sysv_path(Service *s, const char *path) {
                                         if (r == 0)
                                                 continue;
 
-                                        r = unit_add_dependency_by_name(u, UNIT_AFTER, m, NULL, true);
+                                        r = unit_add_dependency_by_name(u, startswith(t, "X-Start-Before:") ? UNIT_BEFORE : UNIT_AFTER, m, NULL, true);
                                         free(m);
 
                                         if (r < 0)
@@ -1708,7 +1710,6 @@ static int service_start(Unit *u) {
         /* Make sure we don't enter a busy loop of some kind. */
         if (!ratelimit_test(&s->ratelimit)) {
                 log_warning("%s start request repeated too quickly, refusing to start.", u->meta.id);
-                service_enter_dead(s, false, true);
                 return -ECANCELED;
         }