| 1114 | #endif |
| 1115 | |
| 1116 | static int cli_activation_transaction_commit_validated(cbm_activation_transaction_t *transaction, |
| 1117 | const cli_binary_validator_t *validator, |
| 1118 | int mode) { |
| 1119 | if (!transaction) { |
| 1120 | return CLI_ERR; |
| 1121 | } |
| 1122 | cbm_activation_transaction_status_t status = cbm_activation_transaction_commit( |
| 1123 | transaction, validator ? cli_binary_fingerprint_validator : NULL, (void *)validator); |
| 1124 | if (status != CBM_ACTIVATION_TRANSACTION_OK) { |
| 1125 | return CLI_ERR; |
| 1126 | } |
| 1127 | #ifndef _WIN32 |
| 1128 | const char *target_path = cbm_activation_transaction_target_path(transaction); |
| 1129 | if (!target_path || chmod(target_path, (mode_t)mode) != 0) { |
| 1130 | (void)cbm_activation_transaction_rollback(transaction); |
| 1131 | return CLI_ERR; |
| 1132 | } |
| 1133 | #else |
| 1134 | (void)mode; |
| 1135 | #endif |
| 1136 | return CLI_OK; |
| 1137 | } |
| 1138 | |
| 1139 | static int cli_activation_transaction_finalize_close( |
| 1140 | cbm_activation_transaction_t **transaction_io) { |
no test coverage detected