core: fix status output suppression

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.
This commit is contained in:
Lennart Poettering
2025-09-19 10:13:45 +02:00
parent 8e9b722b4a
commit 9ecc969855
2 changed files with 5 additions and 3 deletions

View 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);

View 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) {