Robert Shearman : shell32:
Convert ISF_MyComputer_fnGetDisplayNameOf to Unicode.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 19 16:18:15 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: db8169b8284bc7ffb27e159ba67f837117a8c745
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=db8169b8284bc7ffb27e159ba67f837117a8c745
Author: Robert Shearman <rob at codeweavers.com>
Date: Mon Jun 19 20:27:05 2006 +0100
shell32: Convert ISF_MyComputer_fnGetDisplayNameOf to Unicode.
---
dlls/shell32/shfldr_mycomp.c | 68 ++++++++++++++++++++----------------------
1 files changed, 32 insertions(+), 36 deletions(-)
diff --git a/dlls/shell32/shfldr_mycomp.c b/dlls/shell32/shfldr_mycomp.c
index fcdec00..c9a5c07 100644
--- a/dlls/shell32/shfldr_mycomp.c
+++ b/dlls/shell32/shfldr_mycomp.c
@@ -555,7 +555,7 @@ static HRESULT WINAPI ISF_MyComputer_fnG
{
IGenericSFImpl *This = (IGenericSFImpl *)iface;
- char szPath[MAX_PATH];
+ WCHAR wszPath[MAX_PATH];
HRESULT hr = S_OK;
TRACE ("(%p)->(pidl=%p,0x%08lx,%p)\n", This, pidl, dwFlags, strRet);
@@ -564,13 +564,14 @@ static HRESULT WINAPI ISF_MyComputer_fnG
if (!strRet)
return E_INVALIDARG;
- szPath[0] = 0x00;
+ wszPath[0] = 0;
if (!pidl->mkid.cb)
{
/* parsing name like ::{...} */
- lstrcpyA (szPath, "::");
- SHELL32_GUIDToStringA(&CLSID_MyComputer, &szPath[2]);
+ wszPath[0] = ':';
+ wszPath[1] = ':';
+ SHELL32_GUIDToStringW(&CLSID_MyComputer, &wszPath[2]);
}
else if (_ILIsPidlSimple(pidl))
{
@@ -617,62 +618,63 @@ static HRESULT WINAPI ISF_MyComputer_fnG
if ((GET_SHGDN_RELATION (dwFlags) == SHGDN_NORMAL) &&
bWantsForParsing)
{
- WCHAR wszPath[MAX_PATH];
/*
* We need the filesystem path to the destination folder
* Only the folder itself can know it
*/
hr = SHELL32_GetDisplayNameOfChild (iface, pidl,
dwFlags, wszPath, MAX_PATH);
- if (SUCCEEDED(hr))
- {
- if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, szPath, MAX_PATH,
- NULL, NULL))
- wszPath[0] = '\0';
- }
}
else
{
- LPSTR p;
+ LPWSTR p = wszPath;
/* parsing name like ::{...} */
- p = lstrcpyA(szPath, "::") + 2;
- p += SHELL32_GUIDToStringA(&CLSID_MyComputer, p);
-
- lstrcatA(p, "\\::");
+ p[0] = ':';
+ p[1] = ':';
+ p += 2;
+ p += SHELL32_GUIDToStringW(&CLSID_MyComputer, p);
+
+ /* \:: */
+ p[0] = '\\';
+ p[1] = ':';
+ p[2] = ':';
p += 3;
- SHELL32_GUIDToStringA(clsid, p);
+ SHELL32_GUIDToStringW(clsid, p);
}
}
else
{
/* user friendly name */
- HCR_GetClassNameA (clsid, szPath, MAX_PATH);
+ HCR_GetClassNameW (clsid, wszPath, MAX_PATH);
}
}
else
{
/* append my own path */
- _ILSimpleGetText (pidl, szPath, MAX_PATH);
+ _ILSimpleGetTextW (pidl, wszPath, MAX_PATH);
}
}
else if (_ILIsDrive(pidl))
{
- _ILSimpleGetText (pidl, szPath, MAX_PATH); /* append my own path */
+ _ILSimpleGetTextW (pidl, wszPath, MAX_PATH); /* append my own path */
/* long view "lw_name (C:)" */
if (!(dwFlags & SHGDN_FORPARSING))
{
DWORD dwVolumeSerialNumber, dwMaximumComponetLength, dwFileSystemFlags;
- char szDrive[18] = "";
+ WCHAR wszDrive[18] = {0};
+ static const WCHAR wszOpenBracket[] = {' ','(',0};
+ static const WCHAR wszCloseBracket[] = {')',0};
- GetVolumeInformationA (szPath, szDrive, sizeof (szDrive) - 6,
+ GetVolumeInformationW (wszPath, wszDrive,
+ sizeof(wszDrive)/sizeof(wszDrive[0]) - 6,
&dwVolumeSerialNumber,
&dwMaximumComponetLength, &dwFileSystemFlags, NULL, 0);
- strcat (szDrive, " (");
- strncat (szDrive, szPath, 2);
- strcat (szDrive, ")");
- strcpy (szPath, szDrive);
+ strcatW (wszDrive, wszOpenBracket);
+ lstrcpynW (wszDrive + strlenW(wszDrive), wszPath, 3);
+ strcatW (wszDrive, wszCloseBracket);
+ strcpyW (wszPath, wszDrive);
}
}
else
@@ -684,25 +686,19 @@ static HRESULT WINAPI ISF_MyComputer_fnG
}
else
{
- WCHAR wszPath[MAX_PATH];
/* Complex pidl. Let the child folder do the work */
- strRet->uType = STRRET_CSTR;
hr = SHELL32_GetDisplayNameOfChild(iface, pidl, dwFlags, wszPath, MAX_PATH);
- if (SUCCEEDED(hr))
- {
- if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, szPath, MAX_PATH,
- NULL, NULL))
- wszPath[0] = '\0';
- }
}
if (SUCCEEDED (hr))
{
strRet->uType = STRRET_CSTR;
- lstrcpynA (strRet->u.cStr, szPath, MAX_PATH);
+ if (!WideCharToMultiByte(CP_ACP, 0, wszPath, -1, strRet->u.cStr, MAX_PATH,
+ NULL, NULL))
+ strRet->u.cStr[0] = '\0';
}
- TRACE ("-- (%p)->(%s)\n", This, szPath);
+ TRACE ("-- (%p)->(%s)\n", This, debugstr_w(wszPath));
return hr;
}
More information about the wine-cvs
mailing list