]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: fix status output suppression 39029/head
authorLennart Poettering <lennart@poettering.net>
Fri, 19 Sep 2025 08:13:45 +0000 (10:13 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 19 Sep 2025 15:32:48 +0000 (17:32 +0200)
This fixes two things: first of all it ensures we take the override
status output field properly into account, instead of going directly to
the regular one.

Moreover, it ensures that we bypass auto for both notice + emergency,
since both have the same "impact", and, don't limit this for notice
only.

src/core/manager.c
src/core/unit.h

index 2529a7c3f10ac213abb8b611fa3464f74aa0893a..c7cf59082c8c298614c80973ad0e1a8c42edd2c1 100644 (file)
@@ -4525,10 +4525,10 @@ static bool manager_should_show_status(Manager *m, StatusType type) {
                 return false;
 
         /* If we cannot find out the status properly, just proceed. */
-        if (type != STATUS_TYPE_EMERGENCY && manager_check_ask_password(m) > 0)
+        if (type < STATUS_TYPE_EMERGENCY && manager_check_ask_password(m) > 0)
                 return false;
 
-        if (type == STATUS_TYPE_NOTICE && m->show_status != SHOW_STATUS_NO)
+        if (type >= STATUS_TYPE_NOTICE && manager_get_show_status(m) != SHOW_STATUS_NO)
                 return true;
 
         return manager_get_show_status_on(m);
index 62652540bc008c56d5f7cb1501e75760646da40a..9b7d00da10080104056f7a8fe45be74e614e9448 100644 (file)
@@ -52,10 +52,12 @@ typedef enum OOMPolicy {
 } OOMPolicy;
 
 typedef enum StatusType {
-        STATUS_TYPE_EPHEMERAL,
+        STATUS_TYPE_EPHEMERAL,   /* ordered by severity! Do not break order */
         STATUS_TYPE_NORMAL,
         STATUS_TYPE_NOTICE,
         STATUS_TYPE_EMERGENCY,
+        _STATUS_TYPE_MAX,
+        _STATUS_TYPE_INVALID = -EINVAL,
 } StatusType;
 
 static inline bool UNIT_IS_ACTIVE_OR_RELOADING(UnitActiveState t) {