Module: wine Branch: master Commit: 9b9d8dc3e89f17b88bcc62e51b111475361e5940 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9b9d8dc3e89f17b88bcc62e51b...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Apr 22 12:47:06 2009 +0200
kernel32: Improve GetVolumePathName stub.
---
dlls/kernel32/volume.c | 26 +++++++++++++++++++++++--- 1 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/dlls/kernel32/volume.c b/dlls/kernel32/volume.c index 9addeab..31490b9 100644 --- a/dlls/kernel32/volume.c +++ b/dlls/kernel32/volume.c @@ -1406,9 +1406,19 @@ BOOL WINAPI GetDiskFreeSpaceA( LPCSTR root, LPDWORD cluster_sectors, */ BOOL WINAPI GetVolumePathNameA(LPCSTR filename, LPSTR volumepathname, DWORD buflen) { + BOOL ret; + WCHAR *filenameW = NULL, *volumeW; + FIXME("(%s, %p, %d), stub!\n", debugstr_a(filename), volumepathname, buflen); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; + + if (filename && !(filenameW = FILE_name_AtoW( filename, FALSE ))) return FALSE; + if (!(volumeW = HeapAlloc( GetProcessHeap(), 0, buflen * sizeof(WCHAR) ))) return FALSE; + + if ((ret = GetVolumePathNameW( filenameW, volumeW, buflen ))) + FILE_name_WtoA( volumeW, -1, volumepathname, buflen ); + + HeapFree( GetProcessHeap(), 0, volumeW ); + return ret; }
/*********************************************************************** @@ -1416,8 +1426,18 @@ BOOL WINAPI GetVolumePathNameA(LPCSTR filename, LPSTR volumepathname, DWORD bufl */ BOOL WINAPI GetVolumePathNameW(LPCWSTR filename, LPWSTR volumepathname, DWORD buflen) { + const WCHAR *p = filename; + FIXME("(%s, %p, %d), stub!\n", debugstr_w(filename), volumepathname, buflen); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); + + if (p && tolowerW(p[0]) >= 'a' && tolowerW(p[0]) <= 'z' && p[1] ==':' && p[2] == '\' && buflen >= 4) + { + volumepathname[0] = p[0]; + volumepathname[1] = ':'; + volumepathname[2] = '\'; + volumepathname[3] = 0; + return TRUE; + } return FALSE; }