On Mon, Sep 23, 2019 at 1:01 AM Zhiyi Zhang zzhang@codeweavers.com wrote:
Hi Jeff,
It would be better if you could add some tests for this. For example, add a test that shows the failures on wine and then next patch fix it and remove todo_wines.
I normally do add tests, but in this case I wasn't certain how to set up a test that relies on a particular system and wine configuration.
Specifically, this needs to be run on a path, on a mounted drive without a mapped drive letter, on a mounted drive with a mapped drive letter. For instance: Z: is mapped to / and /home is a mount (but is not mapped to a drive letter) and the test would operate on /home/jeff.
And is this for winehq bug 47787?
Yes, though I wouldn't say it really addresses the issue, just makes it a bit clearer why it fails when it does. I explained a bit further in bz (where I link to the patch).
Thanks, Zhiyi
On 9/23/19 1:10 PM, Jeff Smith wrote:
GetFinalPathNameByHandle attempts to translate a volume mount point to an NT volume name using QueryDosDevice, but this can only succeed if the mount point is a drive letter. When GetVolumeNameForVolumeMountPoint encounters a similiar situation, it emits a fixme message.
When attempting to translate a volume mount point to an NT volume name with GetFinalPathNameByHandle, for a mount point that is not a drive letter, emit a fixme message.
Signed-off-by: Jeff Smith whydoubt@gmail.com
dlls/kernel32/file.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/dlls/kernel32/file.c b/dlls/kernel32/file.c index 2b6a13fc0d..2d52b0a165 100644 --- a/dlls/kernel32/file.c +++ b/dlls/kernel32/file.c @@ -1442,6 +1442,14 @@ DWORD WINAPI GetFinalPathNameByHandleW(HANDLE file, LPWSTR path, DWORD charcount { WCHAR nt_prefix[MAX_PATH];
/* if length of drive_part is > 3 then it must be a mounted folder */
if (drive_part_len > 3)
{
FIXME("Mounted Folders are not yet supported\n");
SetLastError( ERROR_NOT_A_REPARSE_POINT );
return 0;
}
/* QueryDosDeviceW sets error code on failure */ drive_part[drive_part_len - 1] = 0; if (!QueryDosDeviceW( drive_part, nt_prefix, MAX_PATH ))