| 282 | /* ── Stale-root pruning (#286) ──────────────────────────────────── */ |
| 283 | |
| 284 | bool cbm_watcher_root_missing_errno(int err) { |
| 285 | /* Only ENOENT/ENOTDIR mean the root itself is gone. Anything else |
| 286 | * (EACCES, EIO, ELOOP, a transient network mount, macOS TCC permission |
| 287 | * revocation) is uncertainty: the directory may still exist even though |
| 288 | * we cannot see it right now — never treat it as a deletion signal. |
| 289 | * Windows (mingw/UCRT) maps ERROR_FILE_NOT_FOUND / ERROR_PATH_NOT_FOUND |
| 290 | * to ENOENT, so the same check holds there (same convention as |
| 291 | * find_deleted_files in pipeline_incremental.c). */ |
| 292 | return err == ENOENT || err == ENOTDIR; |
| 293 | } |
| 294 | |
| 295 | typedef enum { |
| 296 | ROOT_PRESENT = 0, /* stat succeeded and the root is a directory */ |
no outgoing calls
no test coverage detected