]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: serialize and deserialize current ShowStatus
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 23 Jul 2018 12:55:42 +0000 (21:55 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 23 Jul 2018 14:42:48 +0000 (23:42 +0900)
Fixes #9663.

src/core/manager.c
src/core/show-status.c
src/core/show-status.h

index c819dd10690038383c58c10d63b44b973c0bc826..1d177008e5e7e6d0855d090a2e292216f527e7f8 100644 (file)
@@ -3016,6 +3016,10 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool switching_root) {
         fprintf(f, "taint-logged=%s\n", yes_no(m->taint_logged));
         fprintf(f, "service-watchdogs=%s\n", yes_no(m->service_watchdogs));
 
+        t = show_status_to_string(m->show_status);
+        if (t)
+                fprintf(f, "show-status=%s\n", t);
+
         if (m->log_level_overridden)
                 fprintf(f, "log-level-override=%i\n", log_get_max_level());
         if (m->log_target_overridden)
@@ -3205,6 +3209,15 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) {
                         else
                                 m->service_watchdogs = b;
 
+                } else if ((val = startswith(l, "show-status="))) {
+                        ShowStatus s;
+
+                        s = show_status_from_string(val);
+                        if (s < 0)
+                                log_notice("Failed to parse show-status flag %s", val);
+                        else
+                                manager_set_show_status(m, s);
+
                 } else if ((val = startswith(l, "log-level-override="))) {
                         int level;
 
index 9e5e7a50b941bc751c3c4fd5e6b1d501bf754931..d8d2317d38ef1f1763c78da2457f8b9e94357224 100644 (file)
@@ -10,7 +10,7 @@
 #include "terminal-util.h"
 #include "util.h"
 
-static const char* const show_status_table[] = {
+static const char* const show_status_table[_SHOW_STATUS_MAX] = {
         [SHOW_STATUS_NO] = "no",
         [SHOW_STATUS_AUTO] = "auto",
         [SHOW_STATUS_TEMPORARY] = "temporary",
index 3fce567a0298e046a45ec3ebc670e87aadac31b5..ac590303c112993de6970647442f808b0cafe6fa 100644 (file)
@@ -12,6 +12,7 @@ typedef enum ShowStatus {
         SHOW_STATUS_AUTO,
         SHOW_STATUS_TEMPORARY,
         SHOW_STATUS_YES,
+        _SHOW_STATUS_MAX,
         _SHOW_STATUS_INVALID = -1,
 } ShowStatus;