chiark / gitweb /
service: show restart value in dump
[elogind.git] / src / service.c
index 7fb3db3410013ea529d0e6897c1ddaf51d037489..fce1b27aca64f2018a9a6eeeea0225d806cb0254 100644 (file)
@@ -56,11 +56,15 @@ static const struct {
         { "rc4.d",  SPECIAL_RUNLEVEL4_TARGET, RUNLEVEL_UP },
         { "rc5.d",  SPECIAL_RUNLEVEL5_TARGET, RUNLEVEL_UP },
 
+#ifdef TARGET_SUSE
         /* SUSE style boot.d */
         { "boot.d", SPECIAL_SYSINIT_TARGET,   RUNLEVEL_SYSINIT },
+#endif
 
+#ifdef TARGET_DEBIAN
         /* Debian style rcS.d */
         { "rcS.d",  SPECIAL_SYSINIT_TARGET,   RUNLEVEL_SYSINIT },
+#endif
 
         /* Standard SysV runlevels for shutdown */
         { "rc0.d",  SPECIAL_POWEROFF_TARGET,  RUNLEVEL_DOWN },
@@ -292,6 +296,7 @@ static int sysv_fix_order(Service *s) {
         LIST_FOREACH(units_per_type, other, s->meta.manager->units_per_type[UNIT_SERVICE]) {
                 Service *t;
                 UnitDependency d;
+                bool special_s, special_t;
 
                 t = (Service*) other;
 
@@ -307,7 +312,14 @@ static int sysv_fix_order(Service *s) {
                     (!t->sysv_path || t->sysv_has_lsb))
                         continue;
 
-                if (t->sysv_start_priority < s->sysv_start_priority)
+                special_s = s->sysv_runlevels && !chars_intersect(RUNLEVELS_UP, s->sysv_runlevels);
+                special_t = t->sysv_runlevels && !chars_intersect(RUNLEVELS_UP, t->sysv_runlevels);
+
+                if (special_t && !special_s)
+                        d = UNIT_AFTER;
+                else if (special_s && !special_t)
+                        d = UNIT_BEFORE;
+                else if (t->sysv_start_priority < s->sysv_start_priority)
                         d = UNIT_AFTER;
                 else if (t->sysv_start_priority > s->sysv_start_priority)
                         d = UNIT_BEFORE;
@@ -940,12 +952,14 @@ static void service_dump(Unit *u, FILE *f, const char *prefix) {
                 "%sRootDirectoryStartOnly: %s\n"
                 "%sValidNoProcess: %s\n"
                 "%sType: %s\n"
+                "%sRestart: %s\n"
                 "%sNotifyAccess: %s\n",
                 prefix, service_state_to_string(s->state),
                 prefix, yes_no(s->permissions_start_only),
                 prefix, yes_no(s->root_directory_start_only),
                 prefix, yes_no(s->valid_no_process),
                 prefix, service_type_to_string(s->type),
+                prefix, service_restart_to_string(s->restart),
                 prefix, notify_access_to_string(s->notify_access));
 
         if (s->control_pid > 0)