| 1136 | #endif |
| 1137 | |
| 1138 | static int cli_activation_transaction_commit_validated(cbm_activation_transaction_t *transaction, |
| 1139 | const cli_binary_validator_t *validator, |
| 1140 | int mode) { |
| 1141 | if (!transaction) { |
| 1142 | return CLI_ERR; |
| 1143 | } |
| 1144 | cbm_activation_transaction_status_t status = cbm_activation_transaction_commit( |
| 1145 | transaction, validator ? cli_binary_fingerprint_validator : NULL, (void *)validator); |
| 1146 | if (status != CBM_ACTIVATION_TRANSACTION_OK) { |
| 1147 | return CLI_ERR; |
| 1148 | } |
| 1149 | #ifndef _WIN32 |
| 1150 | const char *target_path = cbm_activation_transaction_target_path(transaction); |
| 1151 | if (!target_path || chmod(target_path, (mode_t)mode) != 0) { |
| 1152 | (void)cbm_activation_transaction_rollback(transaction); |
| 1153 | return CLI_ERR; |
| 1154 | } |
| 1155 | #else |
| 1156 | (void)mode; |
| 1157 | #endif |
| 1158 | return CLI_OK; |
| 1159 | } |
| 1160 | |
| 1161 | static int cli_activation_transaction_finalize_close( |
| 1162 | cbm_activation_transaction_t **transaction_io) { |
no test coverage detected