summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2021-07-01 10:19:06 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2021-07-01 15:30:35 +0200
commite6a16a821c41ee9be5059b08765563eec91547ca (patch)
tree80951c8636f051ecfb23803fb3f9ff1d7f49ccac /src
parenta7b73cc86777779a51ade1202f12ced0b937bff0 (diff)
downloadsystemd-e6a16a821c41ee9be5059b08765563eec91547ca.tar.gz
core: always set output arg in unit_status_string()
As requested in https://github.com/systemd/systemd/pull/20058#pullrequestreview-696942153.
Diffstat (limited to 'src')
-rw-r--r--src/core/unit.c28
1 files changed, 18 insertions, 10 deletions
diff --git a/src/core/unit.c b/src/core/unit.c
index 57e4acff3a..30afd5a776 100644
--- a/src/core/unit.c
+++ b/src/core/unit.c
@@ -1340,27 +1340,35 @@ const char* unit_description(Unit *u) {
return strna(u->id);
}
-const char* unit_status_string(Unit *u, char **combined) {
+const char* unit_status_string(Unit *u, char **ret_combined_buffer) {
assert(u);
assert(u->id);
/* Return u->id, u->description, or "{u->id} - {u->description}".
* Versions with u->description are only used if it is set.
- * The last option is used if configured and the caller provided 'combined' pointer. */
+ * The last option is used if configured and the caller provided the 'ret_combined_buffer'
+ * pointer.
+ *
+ * Note that *ret_combined_buffer may be set to NULL. */
if (!u->description ||
- streq(u->description, u->id) ||
u->manager->status_unit_format == STATUS_UNIT_FORMAT_NAME ||
- (u->manager->status_unit_format == STATUS_UNIT_FORMAT_COMBINED && !combined))
+ (u->manager->status_unit_format == STATUS_UNIT_FORMAT_COMBINED && !ret_combined_buffer) ||
+ streq(u->description, u->id)) {
+
+ if (ret_combined_buffer)
+ *ret_combined_buffer = NULL;
return u->id;
+ }
- if (u->description && u->manager->status_unit_format == STATUS_UNIT_FORMAT_COMBINED && combined) {
- char *t = strjoin(u->id, " - ", u->description);
- if (t) {
- *combined = t;
- return t;
+ if (ret_combined_buffer) {
+ if (u->manager->status_unit_format == STATUS_UNIT_FORMAT_COMBINED) {
+ *ret_combined_buffer = strjoin(u->id, " - ", u->description);
+ if (*ret_combined_buffer)
+ return *ret_combined_buffer;
+ log_oom(); /* Fall back to ->description */
} else
- log_oom();
+ *ret_combined_buffer = NULL;
}
return u->description;