| 532 | } |
| 533 | |
| 534 | static cbm_tail_result_t cbm_subprocess_poll_log(cbm_subprocess_t *process, bool final) { |
| 535 | cbm_tail_result_t result = cbm_tail_log(process->log_file, &process->tail_pos, |
| 536 | process->on_log_line, process->log_ud, final); |
| 537 | if (result.progressed) { |
| 538 | process->last_activity_ms = cbm_now_ms(); |
| 539 | } |
| 540 | return result; |
| 541 | } |
| 542 | |
| 543 | static bool cbm_subprocess_cancellation_requested(const cbm_subprocess_t *process) { |
| 544 | return atomic_load_explicit(&process->lifecycle, memory_order_acquire) == |
no test coverage detected