dirfd file operations (2/4)#150679
Conversation
|
This is going to need a try run for windows at least. @tgross35 I'll let you decide which jobs make the most sense here. |
|
@bors2 try jobs=x86_64-msvc-* Cc @the8472 for dirfd, and @ChrisDenton for Windows |
This comment has been minimized.
This comment has been minimized.
dirfd file operations (2/4) try-job: x86_64-msvc-*
This comment has been minimized.
This comment has been minimized.
|
I haven't had a chance to look here yet, sorry @rustbot reroll |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@rustbot reroll |
| opts.access_mode(c::DELETE); | ||
| opts.custom_flags(c::FILE_FLAG_OPEN_REPARSE_POINT | c::FILE_FLAG_BACKUP_SEMANTICS); | ||
| let handle = self.open_file_native(from, &opts, dir)?; | ||
| // Calculate the layout of the `FILE_RENAME_INFORMATION` we pass to `NtSetInformationFile` |
There was a problem hiding this comment.
A bunch of the content here looks similar to
rust/library/std/src/sys/fs/windows.rs
Line 1313 in 2972b5e
MoveFileExW for this path at all?
There was a problem hiding this comment.
MoveFileExW operates exclusively on filenames. Dir::rename is intended to be TOCTOU-safe, so it needs to use directory Handles. I've factored out the NtSetInformationFile section of both functions into nt_rename. The implementations are a little different from one another, so I'm not 100% sure I got the function signature right. I'll wait for the CI to run and reevaluate.
This comment has been minimized.
This comment has been minimized.
|
This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
|
Oh, we probably also want a |
Previous PR: #146341
Reference: #139514
Tracking issue: #120426