| 1114 | } |
| 1115 | |
| 1116 | static int cli_activation_transaction_finalize_close( |
| 1117 | cbm_activation_transaction_t **transaction_io) { |
| 1118 | if (!transaction_io || !*transaction_io) { |
| 1119 | return CLI_ERR; |
| 1120 | } |
| 1121 | cbm_activation_transaction_status_t status = |
| 1122 | cbm_activation_transaction_finalize(*transaction_io); |
| 1123 | if (status != CBM_ACTIVATION_TRANSACTION_OK && status != CBM_ACTIVATION_TRANSACTION_DEFERRED) { |
| 1124 | (void)cli_activation_transaction_abort(transaction_io); |
| 1125 | return CLI_ERR; |
| 1126 | } |
| 1127 | if (status == CBM_ACTIVATION_TRANSACTION_DEFERRED) { |
| 1128 | const char *deferred = cbm_activation_transaction_deferred_path(*transaction_io); |
| 1129 | cbm_log_warn("cli.activation_backup_cleanup_deferred", "path", |
| 1130 | deferred ? deferred : "unknown"); |
| 1131 | (void)fprintf(stderr, |
| 1132 | "warning: old executable cleanup was deferred until " |
| 1133 | "reboot: %s\n", |
| 1134 | deferred ? deferred : "unknown path"); |
| 1135 | } |
| 1136 | return cli_activation_transaction_abort(transaction_io); |
| 1137 | } |
| 1138 | |
| 1139 | static void cli_activation_transaction_finalize_committed_or_fail_stop( |
| 1140 | cbm_activation_transaction_t **transaction_io, const char *component) { |
no test coverage detected