shell32: Pass the file extension to ParseDisplayName in unixfs's SetNameOf.
This commit is contained in:
parent
4d9a311771
commit
2b3fea0249
|
@ -1183,9 +1183,9 @@ static HRESULT WINAPI UnixFolder_IShellFolder2_SetNameOf(IShellFolder2* iface, H
|
||||||
|
|
||||||
static const WCHAR awcInvalidChars[] = { '\\', '/', ':', '*', '?', '"', '<', '>', '|' };
|
static const WCHAR awcInvalidChars[] = { '\\', '/', ':', '*', '?', '"', '<', '>', '|' };
|
||||||
char szSrc[FILENAME_MAX], szDest[FILENAME_MAX];
|
char szSrc[FILENAME_MAX], szDest[FILENAME_MAX];
|
||||||
WCHAR wszSrcRelative[MAX_PATH];
|
WCHAR wszSrcRelative[MAX_PATH], *pwszExt = NULL;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int cBasePathLen = lstrlenA(This->m_pszPath);
|
int cBasePathLen = lstrlenA(This->m_pszPath), cNameLen;
|
||||||
struct stat statDest;
|
struct stat statDest;
|
||||||
LPITEMIDLIST pidlSrc, pidlDest, pidlRelativeDest;
|
LPITEMIDLIST pidlSrc, pidlDest, pidlRelativeDest;
|
||||||
LPOLESTR lpwszName;
|
LPOLESTR lpwszName;
|
||||||
|
@ -1221,8 +1221,8 @@ static HRESULT WINAPI UnixFolder_IShellFolder2_SetNameOf(IShellFolder2* iface, H
|
||||||
_ILSimpleGetTextW(pidl, wszSrcRelative, MAX_PATH) &&
|
_ILSimpleGetTextW(pidl, wszSrcRelative, MAX_PATH) &&
|
||||||
SHELL_FS_HideExtension(wszSrcRelative))
|
SHELL_FS_HideExtension(wszSrcRelative))
|
||||||
{
|
{
|
||||||
WCHAR *pwszExt = PathFindExtensionW(wszSrcRelative);
|
|
||||||
int cLenDest = strlen(szDest);
|
int cLenDest = strlen(szDest);
|
||||||
|
pwszExt = PathFindExtensionW(wszSrcRelative);
|
||||||
WideCharToMultiByte(CP_UNIXCP, 0, pwszExt, -1, szDest + cLenDest,
|
WideCharToMultiByte(CP_UNIXCP, 0, pwszExt, -1, szDest + cLenDest,
|
||||||
FILENAME_MAX - cLenDest, NULL, NULL);
|
FILENAME_MAX - cLenDest, NULL, NULL);
|
||||||
}
|
}
|
||||||
|
@ -1238,8 +1238,14 @@ static HRESULT WINAPI UnixFolder_IShellFolder2_SetNameOf(IShellFolder2* iface, H
|
||||||
return E_FAIL;
|
return E_FAIL;
|
||||||
|
|
||||||
/* Build a pidl for the path of the renamed file */
|
/* Build a pidl for the path of the renamed file */
|
||||||
lpwszName = SHAlloc((lstrlenW(lpcwszName)+1)*sizeof(WCHAR)); /* due to const correctness. */
|
cNameLen = lstrlenW(lpcwszName) + 1;
|
||||||
|
if(pwszExt)
|
||||||
|
cNameLen += lstrlenW(pwszExt);
|
||||||
|
lpwszName = SHAlloc(cNameLen*sizeof(WCHAR)); /* due to const correctness. */
|
||||||
lstrcpyW(lpwszName, lpcwszName);
|
lstrcpyW(lpwszName, lpcwszName);
|
||||||
|
if(pwszExt)
|
||||||
|
lstrcatW(lpwszName, pwszExt);
|
||||||
|
|
||||||
hr = IShellFolder2_ParseDisplayName(iface, NULL, NULL, lpwszName, NULL, &pidlRelativeDest, NULL);
|
hr = IShellFolder2_ParseDisplayName(iface, NULL, NULL, lpwszName, NULL, &pidlRelativeDest, NULL);
|
||||||
SHFree(lpwszName);
|
SHFree(lpwszName);
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
|
|
Loading…
Reference in New Issue