| 1159 | } |
| 1160 | |
| 1161 | static int cli_activation_transaction_finalize_close( |
| 1162 | cbm_activation_transaction_t **transaction_io) { |
| 1163 | if (!transaction_io || !*transaction_io) { |
| 1164 | return CLI_ERR; |
| 1165 | } |
| 1166 | cbm_activation_transaction_status_t status = |
| 1167 | cbm_activation_transaction_finalize(*transaction_io); |
| 1168 | if (status != CBM_ACTIVATION_TRANSACTION_OK && status != CBM_ACTIVATION_TRANSACTION_DEFERRED) { |
| 1169 | (void)cli_activation_transaction_abort(transaction_io); |
| 1170 | return CLI_ERR; |
| 1171 | } |
| 1172 | if (status == CBM_ACTIVATION_TRANSACTION_DEFERRED) { |
| 1173 | const char *deferred = cbm_activation_transaction_deferred_path(*transaction_io); |
| 1174 | cbm_log_warn("cli.activation_backup_cleanup_deferred", "path", |
| 1175 | deferred ? deferred : "unknown"); |
| 1176 | (void)fprintf(stderr, |
| 1177 | "warning: old executable cleanup was deferred until " |
| 1178 | "reboot: %s\n", |
| 1179 | deferred ? deferred : "unknown path"); |
| 1180 | } |
| 1181 | return cli_activation_transaction_abort(transaction_io); |
| 1182 | } |
| 1183 | |
| 1184 | static void cli_activation_transaction_finalize_committed_or_fail_stop( |
| 1185 | cbm_activation_transaction_t **transaction_io, const char *component) { |
no test coverage detected