chiark / gitweb /
plymouth: call plymouth quit before running the getty, not after
[elogind.git] / src / service.c
index d6086ca410488a85661e67b1450f3ad1deae01c5..a3a23e327119f6a7b010b51874f334a51f67f052 100644 (file)
@@ -797,7 +797,7 @@ static int service_load_sysv(Service *s) {
                         if (t == s->meta.id)
                                 continue;
 
-                        if ((r == service_load_sysv_name(s, t)) < 0)
+                        if ((r = service_load_sysv_name(s, t)) < 0)
                                 return r;
 
                         if (s->meta.load_state != UNIT_STUB)
@@ -1500,7 +1500,7 @@ static void service_enter_dead(Service *s, bool success, bool allow_restart) {
                 s->failure = true;
 
         if (allow_restart &&
-            s->allow_restart &&
+            !s->forbid_restart &&
             (s->restart == SERVICE_RESTART_ALWAYS ||
              (s->restart == SERVICE_RESTART_ON_SUCCESS && !s->failure))) {
 
@@ -1511,6 +1511,8 @@ static void service_enter_dead(Service *s, bool success, bool allow_restart) {
         } else
                 service_set_state(s, s->failure ? SERVICE_MAINTENANCE : SERVICE_DEAD);
 
+        s->forbid_restart = false;
+
         return;
 
 fail:
@@ -1932,7 +1934,7 @@ static int service_start(Unit *u) {
 
         s->failure = false;
         s->main_pid_known = false;
-        s->allow_restart = true;
+        s->forbid_restart = false;
 
         service_enter_start_pre(s);
         return 0;
@@ -1945,7 +1947,7 @@ static int service_stop(Unit *u) {
 
         /* This is a user request, so don't do restarts on this
          * shutdown. */
-        s->allow_restart = false;
+        s->forbid_restart = true;
 
         /* Already on it */
         if (s->state == SERVICE_STOP ||
@@ -2061,7 +2063,6 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) {
 
 static int service_deserialize_item(Unit *u, const char *key, const char *value, FDSet *fds) {
         Service *s = SERVICE(u);
-        int r;
 
         assert(u);
         assert(key);
@@ -2085,14 +2086,14 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
         } else if (streq(key, "control-pid")) {
                 pid_t pid;
 
-                if ((r = parse_pid(value, &pid)) < 0)
+                if (parse_pid(value, &pid) < 0)
                         log_debug("Failed to parse control-pid value %s", value);
                 else
                         s->control_pid = pid;
         } else if (streq(key, "main-pid")) {
                 pid_t pid;
 
-                if ((r = parse_pid(value, &pid)) < 0)
+                if (parse_pid(value, &pid) < 0)
                         log_debug("Failed to parse main-pid value %s", value);
                 else
                         service_set_main_pid(s, (pid_t) pid);
@@ -2134,49 +2135,49 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value,
         } else if (streq(key, "main-exec-status-pid")) {
                 pid_t pid;
 
-                if ((r = parse_pid(value, &pid)) < 0)
+                if (parse_pid(value, &pid) < 0)
                         log_debug("Failed to parse main-exec-status-pid value %s", value);
                 else
                         s->main_exec_status.pid = pid;
         } else if (streq(key, "main-exec-status-code")) {
                 int i;
 
-                if ((r = safe_atoi(value, &i)) < 0)
+                if (safe_atoi(value, &i) < 0)
                         log_debug("Failed to parse main-exec-status-code value %s", value);
                 else
                         s->main_exec_status.code = i;
         } else if (streq(key, "main-exec-status-status")) {
                 int i;
 
-                if ((r = safe_atoi(value, &i)) < 0)
+                if (safe_atoi(value, &i) < 0)
                         log_debug("Failed to parse main-exec-status-status value %s", value);
                 else
                         s->main_exec_status.status = i;
         } else if (streq(key, "main-exec-status-start-realtime")) {
                 uint64_t k;
 
-                if ((r = safe_atou64(value, &k)) < 0)
+                if (safe_atou64(value, &k) < 0)
                         log_debug("Failed to parse main-exec-status-start-realtime value %s", value);
                 else
                         s->main_exec_status.start_timestamp.realtime = (usec_t) k;
         } else if (streq(key, "main-exec-status-start-monotonic")) {
                 uint64_t k;
 
-                if ((r = safe_atou64(value, &k)) < 0)
+                if (safe_atou64(value, &k) < 0)
                         log_debug("Failed to parse main-exec-status-start-monotonic value %s", value);
                 else
                         s->main_exec_status.start_timestamp.monotonic = (usec_t) k;
         } else if (streq(key, "main-exec-status-exit-realtime")) {
                 uint64_t k;
 
-                if ((r = safe_atou64(value, &k)) < 0)
+                if (safe_atou64(value, &k) < 0)
                         log_debug("Failed to parse main-exec-status-exit-realtime value %s", value);
                 else
                         s->main_exec_status.exit_timestamp.realtime = (usec_t) k;
         } else if (streq(key, "main-exec-status-exit-monotonic")) {
                 uint64_t k;
 
-                if ((r = safe_atou64(value, &k)) < 0)
+                if (safe_atou64(value, &k) < 0)
                         log_debug("Failed to parse main-exec-status-exit-monotonic value %s", value);
                 else
                         s->main_exec_status.exit_timestamp.monotonic = (usec_t) k;