shell32: UNIX paths should be parsed by unixfs
Andrew Eikum
aeikum at codeweavers.com
Mon Jun 14 11:04:36 CDT 2010
---
dlls/shell32/shfldr_desktop.c | 37 ++++++++++++++++++++++++++-----------
1 files changed, 26 insertions(+), 11 deletions(-)
diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c
index 54d13dc..231c8b1 100644
--- a/dlls/shell32/shfldr_desktop.c
+++ b/dlls/shell32/shfldr_desktop.c
@@ -215,21 +215,36 @@ static HRESULT WINAPI ISF_Desktop_fnParseDisplayName (IShellFolder2 * iface,
if (*lpszDisplayName)
{
- WCHAR szPath[MAX_PATH];
- LPWSTR pathPtr;
-
- /* build a complete path to create a simple pidl */
- lstrcpynW(szPath, This->sPathTarget, MAX_PATH);
- pathPtr = PathAddBackslashW(szPath);
- if (pathPtr)
+ if (*lpszDisplayName == '/')
{
- lstrcpynW(pathPtr, lpszDisplayName, MAX_PATH - (pathPtr - szPath));
- hr = _ILCreateFromPathW(szPath, &pidlTemp);
+ /* UNIX paths should be parsed by unixfs */
+ IShellFolder *unixFS;
+ hr = UnixFolder_Constructor(NULL, &IID_IShellFolder, (LPVOID*)&unixFS);
+ if(SUCCEEDED(hr)){
+ hr = IShellFolder_ParseDisplayName(unixFS, NULL, NULL,
+ lpszDisplayName, NULL, &pidlTemp, NULL);
+ IShellFolder_Release(unixFS);
+ }
}
else
{
- /* should never reach here, but for completeness */
- hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
+ /* build a complete path to create a simple pidl */
+ WCHAR szPath[MAX_PATH];
+ LPWSTR pathPtr;
+
+ lstrcpynW(szPath, This->sPathTarget, MAX_PATH);
+ pathPtr = PathAddBackslashW(szPath);
+ if (pathPtr)
+ {
+ lstrcpynW(pathPtr, lpszDisplayName, MAX_PATH - (pathPtr - szPath));
+ TRACE("qwert: %s\n", wine_dbgstr_w(szPath));
+ hr = _ILCreateFromPathW(szPath, &pidlTemp);
+ }
+ else
+ {
+ /* should never reach here, but for completeness */
+ hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
+ }
}
}
else
--
1.7.1
--------------070901090706050309080404
Content-Type: text/x-diff;
name="0003-shell32-Convert-all-ID-Lists-to-a-standard-format-in.patch"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename*0="0003-shell32-Convert-all-ID-Lists-to-a-standard-format-in.pa";
filename*1="tch"
More information about the wine-devel
mailing list