Merge pull request #26875 from yuwata/core-transaction
core/transaction: several fixes for merge_unit_ids()
This commit is contained in:
+16
-10
@@ -323,22 +323,28 @@ _pure_ static bool unit_matters_to_anchor(Unit *u, Job *job) {
|
||||
return false;
|
||||
}
|
||||
|
||||
static char* merge_unit_ids(const char* unit_log_field, char **pairs) {
|
||||
char *ans = NULL;
|
||||
size_t size = 0, next;
|
||||
static char* merge_unit_ids(const char* unit_log_field, char * const* pairs) {
|
||||
_cleanup_free_ char *ans = NULL;
|
||||
size_t size = 0;
|
||||
|
||||
STRV_FOREACH_PAIR(unit_id, job_type, pairs) {
|
||||
size_t next;
|
||||
|
||||
if (size > 0)
|
||||
ans[size - 1] = '\n';
|
||||
|
||||
next = strlen(unit_log_field) + strlen(*unit_id);
|
||||
if (!GREEDY_REALLOC(ans, size + next + 1))
|
||||
return mfree(ans);
|
||||
return NULL;
|
||||
|
||||
sprintf(ans + size, "%s%s", unit_log_field, *unit_id);
|
||||
if (*(unit_id+1))
|
||||
ans[size + next] = '\n';
|
||||
size += next + 1;
|
||||
}
|
||||
|
||||
return ans;
|
||||
if (!ans)
|
||||
return strdup("");
|
||||
|
||||
return TAKE_PTR(ans);
|
||||
}
|
||||
|
||||
static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsigned generation, sd_bus_error *e) {
|
||||
@@ -394,7 +400,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
"Found %s on %s/%s",
|
||||
unit_id == array ? "ordering cycle" : "dependency",
|
||||
*unit_id, *job_type),
|
||||
"%s", unit_ids);
|
||||
"%s", strna(unit_ids));
|
||||
|
||||
if (delete) {
|
||||
const char *status;
|
||||
@@ -404,7 +410,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
"Job %s/%s deleted to break ordering cycle starting with %s/%s",
|
||||
delete->unit->id, job_type_to_string(delete->type),
|
||||
j->unit->id, job_type_to_string(j->type)),
|
||||
"%s", unit_ids);
|
||||
"%s", strna(unit_ids));
|
||||
|
||||
if (log_get_show_color())
|
||||
status = ANSI_HIGHLIGHT_RED " SKIP " ANSI_NORMAL;
|
||||
@@ -423,7 +429,7 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi
|
||||
log_struct(LOG_ERR,
|
||||
LOG_UNIT_MESSAGE(j->unit, "Unable to break cycle starting with %s/%s",
|
||||
j->unit->id, job_type_to_string(j->type)),
|
||||
"%s", unit_ids);
|
||||
"%s", strna(unit_ids));
|
||||
|
||||
return sd_bus_error_setf(e, BUS_ERROR_TRANSACTION_ORDER_IS_CYCLIC,
|
||||
"Transaction order is cyclic. See system logs for details.");
|
||||
|
||||
Reference in New Issue
Block a user