Alexandre Julliard pushed to branch master at wine / wine
Commits: 6a533f21 by Elizabeth Figura at 2025-11-17T11:00:26-06:00 server: Retain the ? suffix when renaming or linking reparse points.
- - - - - 6d41a058 by Erich Hoover at 2025-11-17T11:00:26-06:00 kernelbase: Open the reparse point in MoveFileWithProgress().
- - - - - 303b3b73 by Elizabeth Figura at 2025-11-17T11:00:26-06:00 kernelbase: Open the reparse point in CreateHardLink().
The broken deletion logic mentioned here is not specific to reparse points. Essentially, we delay deletion until all inodes are closed, but this is wrong; it should be tracked per path instead.
- - - - - 47cd0f7f by Elizabeth Figura at 2025-11-17T11:00:26-06:00 kernelbase: Open the reparse point in SetFileAttributes().
- - - - - 6b10e8e9 by Elizabeth Figura at 2025-11-17T11:00:26-06:00 ntdll: Handle . and .. segments in relative symlinks.
Note that we don't want to use collapse_path() as-is, because everything else it does (i.e. forward slashes, duplicate slashes, trailing dots) should explicitly not apply to symlinks. We also should fail when rewinding past the drive root, rather than simply ignoring those .. segments.
The FIXME introduced here related to unwinding past the RootDirectory handle is not particularly problematic to address (we just need to query the server for its whole path). I've left it as a FIXME simply because it takes extra work to implement and is unlikely to come up; RootDirectory not used anywhere in kernel32 or kernelbase file code.
- - - - -
4 changed files:
- dlls/kernelbase/file.c - dlls/ntdll/tests/file.c - dlls/ntdll/unix/file.c - server/fd.c
View it on GitLab: https://gitlab.winehq.org/wine/wine/-/compare/56ea1edffa3aed93cdfcdac24d5e0d...