dlls/kernel32/volume

Stephen Mark Smith stephenmsmith at blueyonder.co.uk
Tue Jul 20 10:30:18 CDT 2010


On 20/07/10 14:54, Stephen Mark Smith wrote:
> On 20/07/10 14:00, Alexandre Julliard wrote:
>> stephenmsmith at blueyonder.co.uk writes:
>>
>>> diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c
>>> index 7596864..4908739 100644
>>> --- a/dlls/kernel32/volume.c
>>> +++ b/dlls/kernel32/volume.c
>>> @@ -526,10 +526,17 @@ BOOL WINAPI GetVolumeInformationW( LPCWSTR 
>>> root, LPWSTR label, DWORD label_len,
>>>       }
>>>       else
>>>       {
>>> -        if (!root[0] || root[1] != ':' || root[lstrlenW(root)-1] != 
>>> '\\' )
>>> +        if (!isalphaW(root[0]) || root[1] != ':' || 
>>> root[lstrlenW(root)-1] != '\\')
>>>           {
>>> -            SetLastError( ERROR_INVALID_NAME );
>>> -            return FALSE;
>>> +            WCHAR curpath[MAX_PATH],winpath[MAX_PATH];
>>> +            GetCurrentDirectoryW(MAX_PATH,curpath);
>>> +            GetWindowsDirectoryW(winpath,MAX_PATH);
>>> +
>>> +            if(lstrlenW(curpath)>  3&&  root[0] == winpath[0])
>>> +            {
>>> +                SetLastError( ERROR_INVALID_NAME );
>>> +                return FALSE;
>>> +            }
>> This clearly makes no sense, path syntax doesn't depend on the windows
>> directory.
>>
> I agree it makes no sense however it seems to match windows behavior, 
> results from my own vista box:
>
> Current directory is C:\Users\Administrator\Documents\Visual Studio 
> 2010\Projects\volumeandfiletests\Debug
> GetVolumeInformation succeds with no trailing backslash for E:
> Current directory is C:\
> GetVolumeInformation succeds with no trailing backslash for C:
> GetVolumeInformation succeds with no trailing backslash for E:
> Current directory is E:\
> GetVolumeInformation succeds with no trailing backslash for E:
> Current directory is E:\data

moved executable off C: to see if it was using executables path not 
windows path produces more confusing results:
Current directory is F:\
GetVolumeInformation succeds with no trailing backslash for E:
GetVolumeInformation succeds with no trailing backslash for F:
Current directory is C:\
GetVolumeInformation succeds with no trailing backslash for C:
GetVolumeInformation succeds with no trailing backslash for E:
GetVolumeInformation succeds with no trailing backslash for F:
Current directory is E:\
GetVolumeInformation succeds with no trailing backslash for E:
GetVolumeInformation succeds with no trailing backslash for F:
Current directory is E:\data
GetVolumeInformation succeds with no trailing backslash for F:

Attached simpler patch that does not error when CWD is a root dir passes 
one additional test case this does not help bug 20887 and does not match 
behavior above.  My original patch does not cover second set of results 
either.
Help greatly welcomed.

Stephen M Smith
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0001-GetVolumeInformationW-no-error-on-no-trailing-when-cur.txt
URL: <http://www.winehq.org/pipermail/wine-devel/attachments/20100720/ceb3e5c2/attachment.txt>


More information about the wine-devel mailing list