*
*/
-#include <precomp.h>
+#include "precomp.h"
WINE_DEFAULT_DEBUG_CHANNEL(pidl);
WINE_DECLARE_DEBUG_CHANNEL(shell);
BOOL WINAPI ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
{
- CComPtr<IShellFolder> psfParent;
- LPSHELLFOLDER lsf = psf;
+ CComPtr<IShellFolder> psfParent;
+ LPSHELLFOLDER lsf = psf;
HRESULT ret = NO_ERROR;
LPCITEMIDLIST pidllast;
STRRET strret;
{
switch (type)
{
- case ILGDN_FORPARSING:
- flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
- break;
- case ILGDN_NORMAL:
- flag = SHGDN_NORMAL;
- break;
- case ILGDN_INFOLDER:
- flag = SHGDN_INFOLDER;
- break;
- default:
- FIXME("Unknown type parameter = %x\n", type);
- flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
- break;
+ case ILGDN_FORPARSING:
+ flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
+ break;
+ case ILGDN_NORMAL:
+ flag = SHGDN_NORMAL;
+ break;
+ case ILGDN_INFOLDER:
+ flag = SHGDN_INFOLDER;
+ break;
+ default:
+ FIXME("Unknown type parameter = %x\n", type);
+ flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
+ break;
}
if (!*(const WORD*)pidl || type == ILGDN_FORPARSING)
{
}
else
{
- ret = SHBindToParent(pidl, IID_IShellFolder, (LPVOID*)&psfParent, &pidllast);
+ ret = SHBindToParent(pidl, IID_PPV_ARG(IShellFolder, &psfParent), &pidllast);
if (SUCCEEDED(ret))
{
ret = psfParent->GetDisplayNameOf(pidllast, flag, &strret);
{
LPCITEMIDLIST pidlLast = pidl;
- TRACE("(pidl=%p)\n",pidl);
+ TRACE("(pidl=%p)\n", pidl);
if (!pidl)
return NULL;
*/
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
{
- TRACE_(shell)("pidl=%p\n",pidl);
+ TRACE_(shell)("pidl=%p\n", pidl);
if (!pidl || !pidl->mkid.cb)
return 0;
len = ILGetSize(pidl);
newpidl = (LPITEMIDLIST)SHAlloc(len);
if (newpidl)
- memcpy(newpidl,pidl,len);
+ memcpy(newpidl, pidl, len);
- TRACE("pidl=%p newpidl=%p\n",pidl, newpidl);
+ TRACE("pidl=%p newpidl=%p\n", pidl, newpidl);
pdump(pidl);
return newpidl;
if (pidl)
{
len = pidl->mkid.cb;
- pidlNew = (LPITEMIDLIST)SHAlloc(len+2);
+ pidlNew = (LPITEMIDLIST)SHAlloc(len + 2);
if (pidlNew)
{
- memcpy(pidlNew,pidl,len+2); /* 2 -> mind a desktop pidl */
+ memcpy(pidlNew, pidl, len + 2); /* 2 -> mind a desktop pidl */
if (len)
ILGetNext(pidlNew)->mkid.cb = 0x00;
}
}
- TRACE("-- newpidl=%p\n",pidlNew);
+ TRACE("-- newpidl=%p\n", pidlNew);
return pidlNew;
}
HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST * ppidl, DWORD * attributes)
{
- CComPtr<IShellFolder> sf;
+ CComPtr<IShellFolder> sf;
DWORD pchEaten;
HRESULT ret = E_FAIL;
len = ILGetSize(pidl);
newpidl = (LPITEMIDLIST)Alloc(len);
if (newpidl)
- memcpy(newpidl,pidl,len);
+ memcpy(newpidl, pidl, len);
- TRACE("pidl=%p newpidl=%p\n",pidl, newpidl);
+ TRACE("pidl=%p newpidl=%p\n", pidl, newpidl);
pdump(pidl);
return newpidl;
LPCITEMIDLIST pidltemp1 = pidl1;
LPCITEMIDLIST pidltemp2 = pidl2;
- TRACE("pidl1=%p pidl2=%p\n",pidl1, pidl2);
+ TRACE("pidl1=%p pidl2=%p\n", pidl1, pidl2);
/*
* Explorer reads from registry directly (StreamMRU),
LPCITEMIDLIST pidltemp1 = pidl1;
LPCITEMIDLIST pidltemp2 = pidl2;
- LPCITEMIDLIST ret=NULL;
+ LPCITEMIDLIST ret = NULL;
- TRACE("pidl1=%p pidl2=%p\n",pidl1, pidl2);
+ TRACE("pidl1=%p pidl2=%p\n", pidl1, pidl2);
/* explorer reads from registry directly (StreamMRU),
so we can only check here */
_ILSimpleGetText(pidltemp1, szData1, MAX_PATH);
_ILSimpleGetText(pidltemp2, szData2, MAX_PATH);
- if (strcmp(szData1,szData2))
+ if (strcmp(szData1, szData2))
break;
pidltemp1 = ILGetNext(pidltemp1);
*/
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
{
- DWORD len1,len2;
+ DWORD len1, len2;
LPITEMIDLIST pidlNew;
- TRACE("pidl=%p pidl=%p\n",pidl1,pidl2);
+ TRACE("pidl=%p pidl=%p\n", pidl1, pidl2);
if (!pidl1 && !pidl2) return NULL;
return pidlNew;
}
- len1 = ILGetSize(pidl1)-2;
+ len1 = ILGetSize(pidl1) - 2;
len2 = ILGetSize(pidl2);
- pidlNew = (LPITEMIDLIST)SHAlloc(len1+len2);
+ pidlNew = (LPITEMIDLIST)SHAlloc(len1 + len2);
if (pidlNew)
{
- memcpy(pidlNew,pidl1,len1);
- memcpy(((BYTE *)pidlNew)+len1,pidl2,len2);
+ memcpy(pidlNew, pidl1, len1);
+ memcpy(((BYTE *)pidlNew) + len1, pidl2, len2);
}
/* TRACE(pidl,"--new pidl=%p\n",pidlNew);*/
*/
HRESULT WINAPI SHGetRealIDL(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST *pidlReal)
{
- CComPtr<IDataObject> pDataObj;
+ CComPtr<IDataObject> pDataObj;
HRESULT hr;
- hr = lpsf->GetUIObjectOf(0, 1, &pidlSimple,
- IID_IDataObject, 0, (LPVOID*)&pDataObj);
+ hr = lpsf->GetUIObjectOf(0, 1, &pidlSimple, IID_NULL_PPV_ARG(IDataObject, &pDataObj));
if (SUCCEEDED(hr))
{
STGMEDIUM medium;
/*assert(pida->cidl==1);*/
LPIDA pida = (LPIDA)GlobalLock(medium.hGlobal);
- LPCITEMIDLIST pidl_folder = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[0]);
- LPCITEMIDLIST pidl_child = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[1]);
+ LPCITEMIDLIST pidl_folder = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]);
+ LPCITEMIDLIST pidl_child = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]);
*pidlReal = ILCombine(pidl_folder, pidl_child);
*/
EXTERN_C LPITEMIDLIST WINAPI SHLogILFromFSIL(LPITEMIDLIST pidl)
{
- FIXME("(pidl=%p)\n",pidl);
+ FIXME("(pidl=%p)\n", pidl);
pdump(pidl);
*/
UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
{
- LPCSHITEMID si = &(pidl->mkid);
- UINT len=0;
+ LPCSHITEMID si;
+ UINT len = 0;
if (pidl)
{
+ si = &(pidl->mkid);
+
while (si->cb)
{
len += si->cb;
- si = (LPCSHITEMID)(((const BYTE*)si)+si->cb);
+ si = (LPCSHITEMID)(((const BYTE*)si) + si->cb);
}
len += 2;
}
- TRACE("pidl=%p size=%u\n",pidl, len);
+ TRACE("pidl=%p size=%u\n", pidl, len);
return len;
}
len = pidl->mkid.cb;
if (len)
{
- pidl = (LPCITEMIDLIST) (((const BYTE*)pidl)+len);
+ pidl = (LPCITEMIDLIST) (((const BYTE*)pidl) + len);
TRACE("-- %p\n", pidl);
return (LPITEMIDLIST)pidl;
}
{
LPITEMIDLIST idlRet;
- WARN("(pidl=%p,pidl=%p,%08u)semi-stub\n",pidl,item,bEnd);
+ WARN("(pidl=%p,pidl=%p,%08u)semi-stub\n", pidl, item, bEnd);
pdump (pidl);
pdump (item);
*/
void WINAPI ILFree(LPITEMIDLIST pidl)
{
- TRACE("(pidl=%p)\n",pidl);
+ TRACE("(pidl=%p)\n", pidl);
SHFree(pidl);
}
static HRESULT _ILParsePathW(LPCWSTR path, LPWIN32_FIND_DATAW lpFindFile,
BOOL bBindCtx, LPITEMIDLIST *ppidl, LPDWORD prgfInOut)
{
- CComPtr<IShellFolder> pSF;
- CComPtr<IBindCtx> pBC;
+ CComPtr<IShellFolder> pSF;
+ CComPtr<IBindCtx> pBC;
HRESULT ret;
TRACE("%s %p %d (%p)->%p (%p)->0x%x\n", debugstr_w(path), lpFindFile, bBindCtx,
- ppidl, ppidl ? *ppidl : NULL,
- prgfInOut, prgfInOut ? *prgfInOut : 0);
+ ppidl, ppidl ? *ppidl : NULL,
+ prgfInOut, prgfInOut ? *prgfInOut : 0);
ret = SHGetDesktopFolder(&pSF);
if (FAILED(ret))
LPSTR filename, shortname;
WIN32_FIND_DATAA * pfd;
- TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len);
+ TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n", psf, pidl, nFormat, dest, len);
pdump(pidl);
if (!psf || !dest)
switch (nFormat)
{
- case SHGDFIL_FINDDATA:
- pfd = (WIN32_FIND_DATAA *)dest;
+ case SHGDFIL_FINDDATA:
+ pfd = (WIN32_FIND_DATAA *)dest;
- if (_ILIsDrive(pidl) || _ILIsSpecialFolder(pidl))
- return E_INVALIDARG;
+ if (_ILIsDrive(pidl) || _ILIsSpecialFolder(pidl))
+ return E_INVALIDARG;
- if (len < (int)sizeof(WIN32_FIND_DATAA))
- return E_INVALIDARG;
+ if (len < (int)sizeof(WIN32_FIND_DATAA))
+ return E_INVALIDARG;
- ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA));
- _ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime));
- pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
- pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
+ ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA));
+ _ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime));
+ pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
+ pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
- filename = _ILGetTextPointer(pidl);
- shortname = _ILGetSTextPointer(pidl);
+ filename = _ILGetTextPointer(pidl);
+ shortname = _ILGetSTextPointer(pidl);
- if (filename)
- lstrcpynA(pfd->cFileName, filename, sizeof(pfd->cFileName));
- else
- pfd->cFileName[0] = '\0';
+ if (filename)
+ lstrcpynA(pfd->cFileName, filename, sizeof(pfd->cFileName));
+ else
+ pfd->cFileName[0] = '\0';
- if (shortname)
- lstrcpynA(pfd->cAlternateFileName, shortname, sizeof(pfd->cAlternateFileName));
- else
- pfd->cAlternateFileName[0] = '\0';
- return NOERROR;
+ if (shortname)
+ lstrcpynA(pfd->cAlternateFileName, shortname, sizeof(pfd->cAlternateFileName));
+ else
+ pfd->cAlternateFileName[0] = '\0';
+ return S_OK;
- case SHGDFIL_NETRESOURCE:
- case SHGDFIL_DESCRIPTIONID:
- FIXME_(shell)("SHGDFIL %i stub\n", nFormat);
- break;
+ case SHGDFIL_NETRESOURCE:
+ case SHGDFIL_DESCRIPTIONID:
+ FIXME_(shell)("SHGDFIL %i stub\n", nFormat);
+ break;
- default:
- ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat);
+ default:
+ ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat);
}
return E_INVALIDARG;
LPSTR filename, shortname;
WIN32_FIND_DATAW * pfd = (WIN32_FIND_DATAW *)dest;
- TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len);
+ TRACE_(shell)("sf=%p pidl=%p 0x%04x %p 0x%04x stub\n", psf, pidl, nFormat, dest, len);
pdump(pidl);
switch (nFormat)
{
- case SHGDFIL_FINDDATA:
- pfd = (WIN32_FIND_DATAW *)dest;
+ case SHGDFIL_FINDDATA:
+ pfd = (WIN32_FIND_DATAW *)dest;
- if (_ILIsDrive(pidl))
- return E_INVALIDARG;
+ if (_ILIsDrive(pidl))
+ return E_INVALIDARG;
- if (len < (int)sizeof(WIN32_FIND_DATAW))
- return E_INVALIDARG;
+ if (len < (int)sizeof(WIN32_FIND_DATAW))
+ return E_INVALIDARG;
- ZeroMemory(pfd, sizeof (WIN32_FIND_DATAA));
- _ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime));
- pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
- pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
+ ZeroMemory(pfd, sizeof (WIN32_FIND_DATAW));
+ _ILGetFileDateTime( pidl, &(pfd->ftLastWriteTime));
+ pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0);
+ pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0);
- filename = _ILGetTextPointer(pidl);
- shortname = _ILGetSTextPointer(pidl);
+ filename = _ILGetTextPointer(pidl);
+ shortname = _ILGetSTextPointer(pidl);
- if (!filename)
- pfd->cFileName[0] = '\0';
- else if (!MultiByteToWideChar(CP_ACP, 0, filename, -1, pfd->cFileName, MAX_PATH))
- pfd->cFileName[MAX_PATH-1] = 0;
+ if (!filename)
+ pfd->cFileName[0] = '\0';
+ else if (!MultiByteToWideChar(CP_ACP, 0, filename, -1, pfd->cFileName, MAX_PATH))
+ pfd->cFileName[MAX_PATH-1] = 0;
- if (!shortname)
- pfd->cAlternateFileName[0] = '\0';
- else if (!MultiByteToWideChar(CP_ACP, 0, shortname, -1, pfd->cAlternateFileName, 14))
- pfd->cAlternateFileName[13] = 0;
- return NOERROR;
+ if (!shortname)
+ pfd->cAlternateFileName[0] = '\0';
+ else if (!MultiByteToWideChar(CP_ACP, 0, shortname, -1, pfd->cAlternateFileName, 14))
+ pfd->cAlternateFileName[13] = 0;
+ return S_OK;
- case SHGDFIL_NETRESOURCE:
- case SHGDFIL_DESCRIPTIONID:
- FIXME_(shell)("SHGDFIL %i stub\n", nFormat);
- break;
+ case SHGDFIL_NETRESOURCE:
+ case SHGDFIL_DESCRIPTIONID:
+ FIXME_(shell)("SHGDFIL %i stub\n", nFormat);
+ break;
- default:
- ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat);
+ default:
+ ERR_(shell)("Unknown SHGDFIL %i, please report\n", nFormat);
}
return E_INVALIDARG;
{
HRESULT hr;
LPCITEMIDLIST pidlLast;
- CComPtr<IShellFolder> psfFolder;
+ CComPtr<IShellFolder> psfFolder;
DWORD dwAttributes;
STRRET strret;
if (!pidl)
return FALSE;
- hr = SHBindToParent(pidl, IID_IShellFolder, (VOID**)&psfFolder, &pidlLast);
- if (FAILED(hr)) return FALSE;
+ hr = SHBindToParent(pidl, IID_PPV_ARG(IShellFolder, &psfFolder), &pidlLast);
+ if (FAILED(hr))
+ {
+ ERR("SHBindToParent failed: %x\n", hr);
+ return FALSE;
+ }
dwAttributes = SFGAO_FILESYSTEM;
hr = psfFolder->GetAttributesOf(1, &pidlLast, &dwAttributes);
- if (FAILED(hr) || !(dwAttributes & SFGAO_FILESYSTEM)) {
+ if (FAILED(hr) || !(dwAttributes & SFGAO_FILESYSTEM))
+ {
+ WARN("Wrong dwAttributes or GetAttributesOf failed: %x\n", hr);
return FALSE;
}
hr = StrRetToBufW(&strret, pidlLast, pszPath, MAX_PATH);
- TRACE_(shell)("-- %s, 0x%08x\n",debugstr_w(pszPath), hr);
+ TRACE_(shell)("-- %s, 0x%08x\n", debugstr_w(pszPath), hr);
return SUCCEEDED(hr);
}
*/
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
{
- CComPtr<IShellFolder> psfDesktop;
- HRESULT hr=E_FAIL;
+ CComPtr<IShellFolder> psfDesktop;
+ HRESULT hr = E_FAIL;
TRACE_(shell)("pidl=%p\n", pidl);
pdump(pidl);
if (SUCCEEDED(hr) && ppidlLast)
*ppidlLast = ILFindLastID(pidl);
- TRACE_(shell)("-- psf=%p pidl=%p ret=0x%08x\n", *ppv, (ppidlLast)?*ppidlLast:NULL, hr);
+ TRACE_(shell)("-- psf=%p pidl=%p ret=0x%08x\n", *ppv, (ppidlLast) ? *ppidlLast : NULL, hr);
return hr;
}
LPITEMIDLIST _ILCreateFromFindDataW( const WIN32_FIND_DATAW *wfd )
{
- char buff[MAX_PATH + 14 +1]; /* see WIN32_FIND_DATA */
- DWORD len, len1, wlen, alen;
+ char buff[MAX_PATH + 14 +1]; /* see WIN32_FIND_DATA */
+ DWORD len, len1, wlen, alen, cbData;
LPITEMIDLIST pidl;
PIDLTYPE type;
if (!wfd)
return NULL;
- TRACE("(%s, %s)\n",debugstr_w(wfd->cAlternateFileName), debugstr_w(wfd->cFileName));
+ TRACE("(%s, %s)\n", debugstr_w(wfd->cAlternateFileName), debugstr_w(wfd->cFileName));
/* prepare buffer with both names */
- len = WideCharToMultiByte(CP_ACP,0,wfd->cFileName,-1,buff,MAX_PATH,NULL,NULL);
- len1 = WideCharToMultiByte(CP_ACP,0,wfd->cAlternateFileName,-1, buff+len, sizeof(buff)-len, NULL, NULL);
+ len = WideCharToMultiByte(CP_ACP, 0, wfd->cFileName, -1, buff, MAX_PATH, NULL, NULL);
+ len1 = WideCharToMultiByte(CP_ACP, 0, wfd->cAlternateFileName, -1, buff + len, sizeof(buff) - len, NULL, NULL);
alen = len + len1;
type = (wfd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? PT_FOLDER : PT_VALUE;
wlen = wcslen(wfd->cFileName) + 1;
- pidl = _ILAlloc(type, sizeof(FileStruct) + (alen + (alen & 1)) +
- sizeof(FileStructW) + wlen * sizeof(WCHAR) + sizeof(WORD));
+ cbData = sizeof(FileStruct) - 1 + (alen + (alen & 1)); // Note: szNames field is initially 1 byte long
+ cbData += sizeof(FileStructW) - 1 + wlen * sizeof(WCHAR); // Note: wszName field is initially 1 byte long
+ cbData += sizeof(WORD); // offset to FileStructW
+ pidl = _ILAlloc(type, cbData);
if (pidl)
{
LPPIDLDATA pData = _ILGetDataPointer(pidl);
memcpy(fs->szNames, buff, alen);
fsw = (FileStructW*)(pData->u.file.szNames + alen + (alen & 0x1));
- fsw->cbLen = sizeof(FileStructW) + wlen * sizeof(WCHAR) + sizeof(WORD);
+ fsw->cbLen = sizeof(FileStructW) - 1 + wlen * sizeof(WCHAR) + sizeof(WORD);
FileTimeToDosDateTime( &wfd->ftCreationTime, &fsw->uCreationDate, &fsw->uCreationTime);
FileTimeToDosDateTime( &wfd->ftLastAccessTime, &fsw->uLastAccessDate, &fsw->uLastAccessTime);
memcpy(fsw->wszName, wfd->cFileName, wlen * sizeof(WCHAR));
pOffsetW = (WORD*)((LPBYTE)pidl + pidl->mkid.cb - sizeof(WORD));
*pOffsetW = (LPBYTE)fsw - (LPBYTE)pidl;
- TRACE("-- Set Value: %s\n",debugstr_w(fsw->wszName));
+ TRACE("-- Set Value: %s\n", debugstr_w(fsw->wszName));
}
return pidl;
{
LPITEMIDLIST pidlOut;
- TRACE("(%s)\n",debugstr_w(lpszNew));
+ TRACE("(%s)\n", debugstr_w(lpszNew));
pidlOut = _ILAlloc(PT_DRIVE, sizeof(DriveStruct));
if (pidlOut)
if (pszDest)
{
strcpy(pszDest, "x:\\");
- pszDest[0]=towupper(lpszNew[0]);
+ pszDest[0] = towupper(lpszNew[0]);
TRACE("-- create Drive: %s\n", debugstr_a(pszDest));
}
}
* RETURNS
* strlen (lpszText)
*/
-DWORD _ILGetDrive(LPCITEMIDLIST pidl,LPSTR pOut, UINT uSize)
+DWORD _ILGetDrive(LPCITEMIDLIST pidl, LPSTR pOut, UINT uSize)
{
- TRACE("(%p,%p,%u)\n",pidl,pOut,uSize);
+ TRACE("(%p,%p,%u)\n", pidl, pOut, uSize);
if(_ILIsMyComputer(pidl))
pidl = ILGetNext(pidl);
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
return (pidl && lpPData && PT_VALUEW == lpPData->type);
}
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
{
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
- return pidl && pidl->mkid.cb ? 0 : 1;
+ return pidl && pidl->mkid.cb ? 0 : 1;
}
BOOL _ILIsMyDocuments(LPCITEMIDLIST pidl)
{
IID *iid = _ILGetGUIDPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_MyDocuments);
{
IID *iid = _ILGetGUIDPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_ControlPanel);
{
IID *iid = _ILGetGUIDPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_NetworkPlaces);
{
IID *iid = _ILGetGUIDPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_MyComputer);
{
IID *iid = _ILGetGUIDPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_Printers);
{
IID *iid = _ILGetGUIDPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_RecycleBin);
{
IID *iid = _ILGetGUIDPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
if (iid)
return IsEqualIID(*iid, CLSID_AdminFolderShortcut);
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
- return (pidl && ( (lpPData && (PT_GUID== lpPData->type || PT_SHELLEXT== lpPData->type || PT_YAGUID == lpPData->type)) ||
- (pidl && pidl->mkid.cb == 0x00)
- ));
+ return (pidl && ( (lpPData && (PT_GUID == lpPData->type || PT_SHELLEXT == lpPData->type || PT_YAGUID == lpPData->type)) ||
+ (pidl && pidl->mkid.cb == 0x00)
+ ));
}
BOOL _ILIsDrive(LPCITEMIDLIST pidl)
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
return (pidl && lpPData && (PT_DRIVE == lpPData->type ||
- PT_DRIVE1 == lpPData->type ||
- PT_DRIVE2 == lpPData->type ||
- PT_DRIVE3 == lpPData->type));
+ PT_DRIVE1 == lpPData->type ||
+ PT_DRIVE2 == lpPData->type ||
+ PT_DRIVE3 == lpPData->type));
}
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
return (pidl && lpPData && (PT_FOLDER == lpPData->type || PT_FOLDER1 == lpPData->type));
}
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
return (pidl && lpPData && PT_VALUE == lpPData->type);
}
{
LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
- TRACE("(%p)\n",pidl);
+ TRACE("(%p)\n", pidl);
return (pidl && lpPData && (lpPData->type == 0));
}
* ### 3. section getting values from pidls ###
*/
- /**************************************************************************
- * _ILSimpleGetText
- *
- * gets the text for the first item in the pidl (eg. simple pidl)
- *
- * returns the length of the string
- */
+/**************************************************************************
+* _ILSimpleGetText
+*
+* gets the text for the first item in the pidl (eg. simple pidl)
+*
+* returns the length of the string
+*/
DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
{
- DWORD dwReturn=0;
+ DWORD dwReturn = 0;
LPSTR szSrc;
LPWSTR szSrcW;
GUID const * riid;
char szTemp[MAX_PATH];
- TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
+ TRACE("(%p %p %x)\n", pidl, szOut, uOutSize);
if (!pidl)
return 0;
else if (( szSrcW = _ILGetTextPointerW(pidl) ))
{
/* unicode filesystem */
- WideCharToMultiByte(CP_ACP,0,szSrcW, -1, szTemp, MAX_PATH, NULL, NULL);
+ WideCharToMultiByte(CP_ACP, 0, szSrcW, -1, szTemp, MAX_PATH, NULL, NULL);
if (szOut)
lstrcpynA(szOut, szTemp, uOutSize);
ERR("-- no text\n");
}
- TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_a(szOut),dwReturn);
+ TRACE("-- (%p=%s 0x%08x)\n", szOut, debugstr_a(szOut), dwReturn);
return dwReturn;
}
- /**************************************************************************
- * _ILSimpleGetTextW
- *
- * gets the text for the first item in the pidl (eg. simple pidl)
- *
- * returns the length of the string
- */
+/**************************************************************************
+* _ILSimpleGetTextW
+*
+* gets the text for the first item in the pidl (eg. simple pidl)
+*
+* returns the length of the string
+*/
DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
{
DWORD dwReturn;
FileStructW *pFileStructW = _ILGetFileStructW(pidl);
- TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
+ TRACE("(%p %p %x)\n", pidl, szOut, uOutSize);
if (pFileStructW) {
lstrcpynW(szOut, pFileStructW->wszName, uOutSize);
WCHAR szTemp[MAX_PATH];
LPSTR szSrc;
LPWSTR szSrcW;
- dwReturn=0;
+ dwReturn = 0;
if (!pidl)
return 0;
}
}
- TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_w(szOut),dwReturn);
+ TRACE("-- (%p=%s 0x%08x)\n", szOut, debugstr_w(szOut), dwReturn);
return dwReturn;
}
switch (pdata->type)
{
- case PT_GUID:
- case PT_SHELLEXT:
- case PT_YAGUID:
- return NULL;
-
- case PT_DRIVE:
- case PT_DRIVE1:
- case PT_DRIVE2:
- case PT_DRIVE3:
- /*return (LPSTR)&(pdata->u.drive.szDriveName);*/
- return NULL;
-
- case PT_FOLDER:
- case PT_FOLDER1:
- case PT_VALUE:
- case PT_IESPECIAL1:
- case PT_IESPECIAL2:
- /*return (LPSTR)&(pdata->u.file.szNames);*/
- return NULL;
-
- case PT_WORKGRP:
- case PT_COMP:
- case PT_NETWORK:
- case PT_NETPROVIDER:
- case PT_SHARE:
- /*return (LPSTR)&(pdata->u.network.szNames);*/
- return NULL;
-
- case PT_VALUEW:
- return (LPWSTR)pdata->u.file.szNames;
+ case PT_GUID:
+ case PT_SHELLEXT:
+ case PT_YAGUID:
+ return NULL;
+
+ case PT_DRIVE:
+ case PT_DRIVE1:
+ case PT_DRIVE2:
+ case PT_DRIVE3:
+ /*return (LPSTR)&(pdata->u.drive.szDriveName);*/
+ return NULL;
+
+ case PT_FOLDER:
+ case PT_FOLDER1:
+ case PT_VALUE:
+ case PT_IESPECIAL1:
+ case PT_IESPECIAL2:
+ /*return (LPSTR)&(pdata->u.file.szNames);*/
+ return NULL;
+
+ case PT_WORKGRP:
+ case PT_COMP:
+ case PT_NETWORK:
+ case PT_NETPROVIDER:
+ case PT_SHARE:
+ /*return (LPSTR)&(pdata->u.network.szNames);*/
+ return NULL;
+
+ case PT_VALUEW:
+ return (LPWSTR)pdata->u.file.szNames;
}
return NULL;
}
switch (pdata->type)
{
- case PT_GUID:
- case PT_SHELLEXT:
- case PT_YAGUID:
- return NULL;
-
- case PT_DRIVE:
- case PT_DRIVE1:
- case PT_DRIVE2:
- case PT_DRIVE3:
- return pdata->u.drive.szDriveName;
-
- case PT_FOLDER:
- case PT_FOLDER1:
- case PT_VALUE:
- case PT_IESPECIAL1:
- case PT_IESPECIAL2:
- return pdata->u.file.szNames;
-
- case PT_WORKGRP:
- case PT_COMP:
- case PT_NETWORK:
- case PT_NETPROVIDER:
- case PT_SHARE:
- return pdata->u.network.szNames;
+ case PT_GUID:
+ case PT_SHELLEXT:
+ case PT_YAGUID:
+ return NULL;
+
+ case PT_DRIVE:
+ case PT_DRIVE1:
+ case PT_DRIVE2:
+ case PT_DRIVE3:
+ return pdata->u.drive.szDriveName;
+
+ case PT_FOLDER:
+ case PT_FOLDER1:
+ case PT_VALUE:
+ case PT_IESPECIAL1:
+ case PT_IESPECIAL2:
+ return pdata->u.file.szNames;
+
+ case PT_WORKGRP:
+ case PT_COMP:
+ case PT_NETWORK:
+ case PT_NETPROVIDER:
+ case PT_SHARE:
+ return pdata->u.network.szNames;
+
+ case PT_CPLAPPLET:
+ return pdata->u.cpanel.szName;
}
return NULL;
}
{
/* TRACE(pidl,"(pidl%p)\n", pidl); */
- LPPIDLDATA pdata =_ILGetDataPointer(pidl);
+ LPPIDLDATA pdata = _ILGetDataPointer(pidl);
if (!pdata)
return NULL;
switch (pdata->type)
{
- case PT_FOLDER:
- case PT_VALUE:
- case PT_IESPECIAL1:
- case PT_IESPECIAL2:
- return pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1;
-
- case PT_WORKGRP:
- return pdata->u.network.szNames + strlen (pdata->u.network.szNames) + 1;
+ case PT_FOLDER:
+ case PT_VALUE:
+ case PT_IESPECIAL1:
+ case PT_IESPECIAL2:
+ return pdata->u.file.szNames + strlen (pdata->u.file.szNames) + 1;
+
+ case PT_WORKGRP:
+ return pdata->u.network.szNames + strlen (pdata->u.network.szNames) + 1;
}
return NULL;
}
*/
IID* _ILGetGUIDPointer(LPCITEMIDLIST pidl)
{
- LPPIDLDATA pdata =_ILGetDataPointer(pidl);
+ LPPIDLDATA pdata = _ILGetDataPointer(pidl);
TRACE("%p\n", pidl);
TRACE("pdata->type 0x%04x\n", pdata->type);
switch (pdata->type)
{
- case PT_SHELLEXT:
- case PT_GUID:
- case PT_YAGUID:
- return &(pdata->u.guid.guid);
-
- default:
- TRACE("Unknown pidl type 0x%04x\n", pdata->type);
- break;
+ case PT_SHELLEXT:
+ case PT_GUID:
+ case PT_YAGUID:
+ return &(pdata->u.guid.guid);
+
+ default:
+ TRACE("Unknown pidl type 0x%04x\n", pdata->type);
+ break;
}
return NULL;
}
* style with a FileStructW member. If we switch all our shellfolder-implementations to
* the new format, this won't be a problem. For now, we do as many sanity checks as possible. */
if (cbOffset & 0x1 || /* FileStructW member is word aligned in the pidl */
- /* FileStructW is positioned after FileStruct */
- cbOffset < sizeof(pidl->mkid.cb) + sizeof(PIDLTYPE) + sizeof(FileStruct) ||
- /* There has to be enough space at cbOffset in the pidl to hold FileStructW and cbOffset */
- cbOffset > pidl->mkid.cb - sizeof(cbOffset) - sizeof(FileStructW) ||
- pidl->mkid.cb != cbOffset + pFileStructW->cbLen)
+ /* FileStructW is positioned after FileStruct */
+ cbOffset < sizeof(pidl->mkid.cb) + sizeof(PIDLTYPE) + sizeof(FileStruct) ||
+ /* There has to be enough space at cbOffset in the pidl to hold FileStructW and cbOffset */
+ cbOffset > pidl->mkid.cb - sizeof(cbOffset) - sizeof(FileStructW) ||
+ pidl->mkid.cb != cbOffset + pFileStructW->cbLen)
{
- WARN("Invalid pidl format (cbOffset = %d)!\n", cbOffset);
+ ERR("Invalid pidl format (cbOffset = %d)!\n", cbOffset);
return NULL;
}
switch (pdata->type)
{
- case PT_FOLDER:
- case PT_VALUE:
- DosDateTimeToFileTime(pdata->u.file.uFileDate, pdata->u.file.uFileTime, pFt);
- break;
- default:
- return FALSE;
+ case PT_FOLDER:
+ case PT_VALUE:
+ DosDateTimeToFileTime(pdata->u.file.uFileDate, pdata->u.file.uFileTime, pFt);
+ break;
+ default:
+ return FALSE;
}
return TRUE;
}
BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
{
- FILETIME ft,lft;
+ FILETIME ft, lft;
SYSTEMTIME time;
BOOL ret;
FileTimeToLocalFileTime(&ft, &lft);
FileTimeToSystemTime (&lft, &time);
- ret = GetDateFormatA(LOCALE_USER_DEFAULT,DATE_SHORTDATE,&time, NULL, pOut, uOutSize);
+ ret = GetDateFormatA(LOCALE_USER_DEFAULT, DATE_SHORTDATE, &time, NULL, pOut, uOutSize);
if (ret)
{
/* Append space + time without seconds */
switch (pdata->type)
{
- case PT_VALUE:
- dwSize = pdata->u.file.dwFileSize;
- if (pOut)
- StrFormatKBSizeA(dwSize, pOut, uOutSize);
- return dwSize;
+ case PT_VALUE:
+ dwSize = pdata->u.file.dwFileSize;
+ if (pOut)
+ StrFormatKBSizeA(dwSize, pOut, uOutSize);
+ return dwSize;
}
if (pOut)
*pOut = 0x00;
{
char szTemp[MAX_PATH];
const char * pPoint;
- LPCITEMIDLIST pidlTemp=pidl;
+ LPCITEMIDLIST pidlTemp = pidl;
- TRACE("pidl=%p\n",pidl);
+ TRACE("pidl=%p\n", pidl);
if (!pidl)
return FALSE;
pPoint++;
lstrcpynA(pOut, pPoint, uOutSize);
- TRACE("%s\n",pOut);
+ TRACE("%s\n", pOut);
return TRUE;
}
}
}
}
- else
+ else
{
pOut[0] = '\0';
LoadStringA(shell32_hInstance, IDS_DIRECTORY, pOut, uOutSize);
switch(pData->type)
{
- case PT_FOLDER:
- case PT_VALUE:
- wAttrib = pData->u.file.uFileAttribs;
- break;
+ case PT_FOLDER:
+ case PT_VALUE:
+ wAttrib = pData->u.file.uFileAttribs;
+ break;
}
if(uOutSize >= 6)
{
- i=0;
+ i = 0;
if(wAttrib & FILE_ATTRIBUTE_READONLY)
pOut[i++] = 'R';
if(wAttrib & FILE_ATTRIBUTE_HIDDEN)