| 748 | /* ── Stale-root pruning (#286) ──────────────────────────────────── */ |
| 749 | |
| 750 | bool cbm_watcher_root_missing_errno(int err) { |
| 751 | /* Only ENOENT/ENOTDIR mean the root itself is gone. Anything else |
| 752 | * (EACCES, EIO, ELOOP, a transient network mount, macOS TCC permission |
| 753 | * revocation) is uncertainty: the directory may still exist even though |
| 754 | * we cannot see it right now — never treat it as a deletion signal. |
| 755 | * Windows (mingw/UCRT) maps ERROR_FILE_NOT_FOUND / ERROR_PATH_NOT_FOUND |
| 756 | * to ENOENT, so the same check holds there (same convention as |
| 757 | * find_deleted_files in pipeline_incremental.c). */ |
| 758 | return err == ENOENT || err == ENOTDIR; |
| 759 | } |
| 760 | |
| 761 | typedef enum { |
| 762 | ROOT_PRESENT = 0, /* stat succeeded and the root is a directory */ |
no outgoing calls
no test coverage detected