diff options
| author | bors <bors@rust-lang.org> | 2023-10-15 05:50:30 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-10-15 05:50:30 +0000 |
| commit | ff5664d600b7d31b43f1109587dabe008bb73af1 (patch) | |
| tree | 379ec4a90d7b4d4fed2d5d295f23aa32c15d530f /compiler/rustc_lint/src | |
| parent | dda7d4c9cf1112e98886df056b57e9f6ac3b6822 (diff) | |
| parent | 2f5dea09784c5c0dc80b31aea08822a1dc4ecd77 (diff) | |
| download | rust-ff5664d600b7d31b43f1109587dabe008bb73af1.tar.gz rust-ff5664d600b7d31b43f1109587dabe008bb73af1.zip | |
Auto merge of #116683 - ChrisDenton:exists, r=Mark-Simulacrum
Make `try_exists` return `Ok(true)` for Windows Unix Sockets This is a follow up to #109106 but for[ `fs::try_exists`](https://doc.rust-lang.org/std/fs/fn.try_exists.html), which doesn't need to get the metadata of a file (which can fail even if a file exists). `fs::try_exists` currently fails on Windows if encountering a Unix Domain Socket (UDS). This PR fixes it by checking for an error code that's returned when there's a failure to use a reparse point. ## Reparse points A reparse point is a way to invoke a filesystem filter on a file instead of the file being opened normally. This is used to implement symbolic links (by redirecting to a different path) but also to implement other types of special files such as Unix domain sockets. If the reparse point is not a link type then opening it with `CreateFileW` may fail with `ERROR_CANT_ACCESS_FILE` because the filesystem filter does not implement that operation. This differs from resolving links which may fail with errors such as `ERROR_FILE_NOT_FOUND` or `ERROR_CANT_RESOLVE_FILENAME`. So `ERROR_CANT_ACCESS_FILE` means that the file exists but that we can't open it normally. Still, the file does exist on the filesystem so `try_exists` should report that as `Ok(true)`. r? libs
Diffstat (limited to 'compiler/rustc_lint/src')
0 files changed, 0 insertions, 0 deletions
