]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: fix message about show status state
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Fri, 28 Feb 2020 21:49:19 +0000 (22:49 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 1 Mar 2020 10:42:12 +0000 (11:42 +0100)
We would say "Enabling" also for SHOW_STATUS_AUTO, which is actually
"soft off". So just print the exact state to make things easier to understand.
Also add a helper function to avoid repeating the enum value list.

For #14814.

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

index 23a8ada1ec799b8d024154fdc8103bb48a77be38..09846eaadbb0687a6e41168d2fb7b59427d1344f 100644 (file)
@@ -1254,7 +1254,7 @@ static int status_welcome(void) {
         _cleanup_free_ char *pretty_name = NULL, *ansi_color = NULL;
         int r;
 
-        if (IN_SET(arg_show_status, SHOW_STATUS_NO, SHOW_STATUS_AUTO))
+        if (!show_status_on(arg_show_status))
                 return 0;
 
         r = parse_os_release(NULL,
index a5290eba0c682789821f2ca784bf8bf88dbb56fa..7ccfde1567064b8768bdf3196b3b479172e509ae 100644 (file)
@@ -4083,12 +4083,14 @@ void manager_set_show_status(Manager *m, ShowStatus mode) {
         if (!MANAGER_IS_SYSTEM(m))
                 return;
 
-        if (m->show_status != mode)
-                log_debug("%s showing of status.",
-                          mode == SHOW_STATUS_NO ? "Disabling" : "Enabling");
+        bool enabled = show_status_on(mode);
+        if (mode != m->show_status)
+                log_debug("%s showing of status (%s).",
+                          enabled ? "Enabling" : "Disabling",
+                          strna(show_status_to_string(mode)));
         m->show_status = mode;
 
-        if (IN_SET(mode, SHOW_STATUS_TEMPORARY, SHOW_STATUS_YES))
+        if (enabled)
                 (void) touch("/run/systemd/show-status");
         else
                 (void) unlink("/run/systemd/show-status");
@@ -4110,7 +4112,7 @@ static bool manager_get_show_status(Manager *m, StatusType type) {
         if (type != STATUS_TYPE_EMERGENCY && manager_check_ask_password(m) > 0)
                 return false;
 
-        return IN_SET(m->show_status, SHOW_STATUS_TEMPORARY, SHOW_STATUS_YES);
+        return show_status_on(m->show_status);
 }
 
 const char *manager_get_confirm_spawn(Manager *m) {
index 247caec77c4290fd7a3493b0341a33929234210f..0686b60d74a9e2c0f3d73b909fb7b5f7f80fdc27 100644 (file)
@@ -8,10 +8,10 @@
 /* Manager status */
 
 typedef enum ShowStatus {
-        SHOW_STATUS_NO,
-        SHOW_STATUS_AUTO,
-        SHOW_STATUS_TEMPORARY,
-        SHOW_STATUS_YES,
+        SHOW_STATUS_NO,         /* printing of status is disabled */
+        SHOW_STATUS_AUTO,       /* disabled but may flip to _TEMPORARY */
+        SHOW_STATUS_TEMPORARY,  /* enabled temporarily, may flip back to _AUTO */
+        SHOW_STATUS_YES,        /* printing of status is enabled */
         _SHOW_STATUS_MAX,
         _SHOW_STATUS_INVALID = -1,
 } ShowStatus;
@@ -28,6 +28,9 @@ typedef enum StatusUnitFormat {
         _STATUS_UNIT_FORMAT_INVALID = -1,
 } StatusUnitFormat;
 
+static inline bool show_status_on(ShowStatus s) {
+        return IN_SET(s, SHOW_STATUS_TEMPORARY, SHOW_STATUS_YES);
+}
 ShowStatus show_status_from_string(const char *v) _const_;
 const char* show_status_to_string(ShowStatus s) _pure_;
 int parse_show_status(const char *v, ShowStatus *ret);