[SHELL32]

* Partial sync of pidl.c and pidl.h with Wine 1.7.27.
CORE-8540

svn path=/branches/shell-experiments/; revision=65234
This commit is contained in:
Amine Khaldi 2014-11-03 19:58:55 +00:00
parent 6069abeef0
commit 8c29f2837c
2 changed files with 306 additions and 305 deletions

View file

@ -53,7 +53,7 @@ static LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl);
static LPWSTR _ILGetTextPointerW(LPCITEMIDLIST pidl); static LPWSTR _ILGetTextPointerW(LPCITEMIDLIST pidl);
/************************************************************************* /*************************************************************************
* ILGetDisplayNameExA [SHELL32.186] * ILGetDisplayNameExA
* *
* Retrieves the display name of an ItemIDList * Retrieves the display name of an ItemIDList
* *
@ -187,7 +187,7 @@ LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
{ {
LPCITEMIDLIST pidlLast = pidl; LPCITEMIDLIST pidlLast = pidl;
TRACE("(pidl=%p)\n", pidl); TRACE("(pidl=%p)\n",pidl);
if (!pidl) if (!pidl)
return NULL; return NULL;
@ -208,7 +208,7 @@ LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
*/ */
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl) BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
{ {
TRACE_(shell)("pidl=%p\n", pidl); TRACE_(shell)("pidl=%p\n",pidl);
if (!pidl || !pidl->mkid.cb) if (!pidl || !pidl->mkid.cb)
return 0; return 0;
@ -233,9 +233,9 @@ LPITEMIDLIST WINAPI ILClone (LPCITEMIDLIST pidl)
len = ILGetSize(pidl); len = ILGetSize(pidl);
newpidl = (LPITEMIDLIST)SHAlloc(len); newpidl = (LPITEMIDLIST)SHAlloc(len);
if (newpidl) 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); pdump(pidl);
return newpidl; return newpidl;
@ -261,13 +261,13 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
pidlNew = (LPITEMIDLIST)SHAlloc(len + 2); pidlNew = (LPITEMIDLIST)SHAlloc(len + 2);
if (pidlNew) if (pidlNew)
{ {
memcpy(pidlNew, pidl, len + 2); /* 2 -> mind a desktop pidl */ memcpy(pidlNew,pidl,len+2); /* 2 -> mind a desktop pidl */
if (len) if (len)
ILGetNext(pidlNew)->mkid.cb = 0x00; ILGetNext(pidlNew)->mkid.cb = 0x00;
} }
} }
TRACE("-- newpidl=%p\n", pidlNew); TRACE("-- newpidl=%p\n",pidlNew);
return pidlNew; return pidlNew;
} }
@ -462,9 +462,9 @@ LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl)
len = ILGetSize(pidl); len = ILGetSize(pidl);
newpidl = (LPITEMIDLIST)Alloc(len); newpidl = (LPITEMIDLIST)Alloc(len);
if (newpidl) 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); pdump(pidl);
return newpidl; return newpidl;
@ -482,7 +482,7 @@ BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPCITEMIDLIST pidltemp1 = pidl1; LPCITEMIDLIST pidltemp1 = pidl1;
LPCITEMIDLIST pidltemp2 = pidl2; 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), * Explorer reads from registry directly (StreamMRU),
@ -534,6 +534,8 @@ BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
* parent = a/b, child = a/b/c -> true, c is in folder a/b * parent = a/b, child = a/b/c -> true, c is in folder a/b
* child = a/b/c/d -> false if bImmediate is true, d is not in folder a/b * child = a/b/c/d -> false if bImmediate is true, d is not in folder a/b
* child = a/b/c/d -> true if bImmediate is false, d is in a subfolder of a/b * child = a/b/c/d -> true if bImmediate is false, d is in a subfolder of a/b
* child = a/b -> false if bImmediate is true
* child = a/b -> true if bImmediate is false
*/ */
BOOL WINAPI ILIsParent(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidlChild, BOOL bImmediate) BOOL WINAPI ILIsParent(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidlChild, BOOL bImmediate)
{ {
@ -559,7 +561,7 @@ BOOL WINAPI ILIsParent(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidlChild, BOOL b
pChild = ILGetNext(pChild); pChild = ILGetNext(pChild);
} }
/* child shorter or has equal length to parent */ /* child has shorter name than parent */
if (pParent->mkid.cb || !pChild->mkid.cb) if (pParent->mkid.cb || !pChild->mkid.cb)
return FALSE; return FALSE;
@ -596,9 +598,9 @@ LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPCITEMIDLIST pidltemp1 = pidl1; LPCITEMIDLIST pidltemp1 = pidl1;
LPCITEMIDLIST pidltemp2 = pidl2; 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), /* explorer reads from registry directly (StreamMRU),
so we can only check here */ so we can only check here */
@ -655,10 +657,10 @@ LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
*/ */
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
{ {
DWORD len1, len2; DWORD len1,len2;
LPITEMIDLIST pidlNew; LPITEMIDLIST pidlNew;
TRACE("pidl=%p pidl=%p\n", pidl1, pidl2); TRACE("pidl=%p pidl=%p\n",pidl1,pidl2);
if (!pidl1 && !pidl2) return NULL; if (!pidl1 && !pidl2) return NULL;
@ -677,14 +679,14 @@ LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
return pidlNew; return pidlNew;
} }
len1 = ILGetSize(pidl1) - 2; len1 = ILGetSize(pidl1)-2;
len2 = ILGetSize(pidl2); len2 = ILGetSize(pidl2);
pidlNew = (LPITEMIDLIST)SHAlloc(len1 + len2); pidlNew = (LPITEMIDLIST)SHAlloc(len1 + len2);
if (pidlNew) if (pidlNew)
{ {
memcpy(pidlNew, pidl1, len1); memcpy(pidlNew,pidl1,len1);
memcpy(((BYTE *)pidlNew) + len1, pidl2, len2); memcpy(((BYTE *)pidlNew)+len1,pidl2,len2);
} }
/* TRACE(pidl,"--new pidl=%p\n",pidlNew);*/ /* TRACE(pidl,"--new pidl=%p\n",pidlNew);*/
@ -721,8 +723,8 @@ HRESULT WINAPI SHGetRealIDL(IShellFolder * lpsf, LPCITEMIDLIST pidlSimple, LPITE
/*assert(pida->cidl==1);*/ /*assert(pida->cidl==1);*/
LPIDA pida = (LPIDA)GlobalLock(medium.u.hGlobal); LPIDA pida = (LPIDA)GlobalLock(medium.u.hGlobal);
LPCITEMIDLIST pidl_folder = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[0]); LPCITEMIDLIST pidl_folder = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[0]);
LPCITEMIDLIST pidl_child = (LPCITEMIDLIST) ((LPBYTE)pida + pida->aoffset[1]); LPCITEMIDLIST pidl_child = (LPCITEMIDLIST) ((LPBYTE)pida+pida->aoffset[1]);
*pidlReal = ILCombine(pidl_folder, pidl_child); *pidlReal = ILCombine(pidl_folder, pidl_child);
@ -746,7 +748,7 @@ HRESULT WINAPI SHGetRealIDL(IShellFolder * lpsf, LPCITEMIDLIST pidlSimple, LPITE
*/ */
EXTERN_C LPITEMIDLIST WINAPI SHLogILFromFSIL(LPITEMIDLIST pidl) EXTERN_C LPITEMIDLIST WINAPI SHLogILFromFSIL(LPITEMIDLIST pidl)
{ {
FIXME("(pidl=%p)\n", pidl); FIXME("(pidl=%p)\n",pidl);
pdump(pidl); pdump(pidl);
@ -770,7 +772,7 @@ EXTERN_C LPITEMIDLIST WINAPI SHLogILFromFSIL(LPITEMIDLIST pidl)
UINT WINAPI ILGetSize(LPCITEMIDLIST pidl) UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
{ {
LPCSHITEMID si; LPCSHITEMID si;
UINT len = 0; UINT len=0;
if (pidl) if (pidl)
{ {
@ -779,11 +781,11 @@ UINT WINAPI ILGetSize(LPCITEMIDLIST pidl)
while (si->cb) while (si->cb)
{ {
len += si->cb; len += si->cb;
si = (LPCSHITEMID)(((const BYTE*)si) + si->cb); si = (LPCSHITEMID)(((const BYTE*)si)+si->cb);
} }
len += 2; len += 2;
} }
TRACE("pidl=%p size=%u\n", pidl, len); TRACE("pidl=%p size=%u\n",pidl, len);
return len; return len;
} }
@ -814,7 +816,7 @@ LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
len = pidl->mkid.cb; len = pidl->mkid.cb;
if (len) if (len)
{ {
pidl = (LPCITEMIDLIST) (((const BYTE*)pidl) + len); pidl = (LPCITEMIDLIST) (((const BYTE*)pidl)+len);
TRACE("-- %p\n", pidl); TRACE("-- %p\n", pidl);
return (LPITEMIDLIST)pidl; return (LPITEMIDLIST)pidl;
} }
@ -878,7 +880,7 @@ EXTERN_C LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl, LPCITEMIDLIST item, BOO
*/ */
void WINAPI ILFree(LPITEMIDLIST pidl) void WINAPI ILFree(LPITEMIDLIST pidl)
{ {
TRACE("(pidl=%p)\n", pidl); TRACE("(pidl=%p)\n",pidl);
SHFree(pidl); SHFree(pidl);
} }
@ -1085,7 +1087,7 @@ HRESULT WINAPI SHGetDataFromIDListA(IShellFolder * psf, LPCITEMIDLIST pidl,
LPSTR filename, shortname; LPSTR filename, shortname;
WIN32_FIND_DATAA * pfd; 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); pdump(pidl);
if (!psf || !dest) if (!psf || !dest)
@ -1143,7 +1145,7 @@ HRESULT WINAPI SHGetDataFromIDListW(IShellFolder * psf, LPCITEMIDLIST pidl,
LPSTR filename, shortname; LPSTR filename, shortname;
WIN32_FIND_DATAW * pfd = (WIN32_FIND_DATAW *)dest; 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); pdump(pidl);
@ -1258,7 +1260,7 @@ BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
hr = StrRetToBufW(&strret, pidlLast, pszPath, MAX_PATH); 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); return SUCCEEDED(hr);
} }
@ -1300,7 +1302,7 @@ HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCI
if (SUCCEEDED(hr) && ppidlLast) if (SUCCEEDED(hr) && ppidlLast)
*ppidlLast = ILFindLastID(pidl); *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; return hr;
} }
@ -1488,11 +1490,11 @@ LPITEMIDLIST _ILCreateFromFindDataW( const WIN32_FIND_DATAW *wfd )
if (!wfd) if (!wfd)
return NULL; 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 */ /* prepare buffer with both names */
len = WideCharToMultiByte(CP_ACP, 0, wfd->cFileName, -1, buff, MAX_PATH, 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); len1 = WideCharToMultiByte(CP_ACP,0,wfd->cAlternateFileName,-1, buff+len, sizeof(buff)-len, NULL, NULL);
alen = len + len1; alen = len + len1;
type = (wfd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? PT_FOLDER : PT_VALUE; type = (wfd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? PT_FOLDER : PT_VALUE;
@ -1522,7 +1524,7 @@ LPITEMIDLIST _ILCreateFromFindDataW( const WIN32_FIND_DATAW *wfd )
pOffsetW = (WORD*)((LPBYTE)pidl + pidl->mkid.cb - sizeof(WORD)); pOffsetW = (WORD*)((LPBYTE)pidl + pidl->mkid.cb - sizeof(WORD));
*pOffsetW = (LPBYTE)fsw - (LPBYTE)pidl; *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; return pidl;
@ -1551,7 +1553,7 @@ LPITEMIDLIST _ILCreateDrive(LPCWSTR lpszNew)
{ {
LPITEMIDLIST pidlOut; LPITEMIDLIST pidlOut;
TRACE("(%s)\n", debugstr_w(lpszNew)); TRACE("(%s)\n",debugstr_w(lpszNew));
pidlOut = _ILAlloc(PT_DRIVE, sizeof(DriveStruct)); pidlOut = _ILAlloc(PT_DRIVE, sizeof(DriveStruct));
if (pidlOut) if (pidlOut)
@ -1577,9 +1579,9 @@ LPITEMIDLIST _ILCreateDrive(LPCWSTR lpszNew)
* RETURNS * RETURNS
* strlen (lpszText) * 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)) if(_ILIsMyComputer(pidl))
pidl = ILGetNext(pidl); pidl = ILGetNext(pidl);
@ -1608,14 +1610,14 @@ BOOL _ILIsUnicode(LPCITEMIDLIST pidl)
{ {
LPPIDLDATA lpPData = _ILGetDataPointer(pidl); LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n", pidl); TRACE("(%p)\n",pidl);
return (pidl && lpPData && PT_VALUEW == lpPData->type); return (pidl && lpPData && PT_VALUEW == lpPData->type);
} }
BOOL _ILIsDesktop(LPCITEMIDLIST pidl) 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;
} }
@ -1668,7 +1670,7 @@ BOOL _ILIsMyComputer(LPCITEMIDLIST pidl)
{ {
IID *iid = _ILGetGUIDPointer(pidl); IID *iid = _ILGetGUIDPointer(pidl);
TRACE("(%p)\n", pidl); TRACE("(%p)\n",pidl);
if (iid) if (iid)
return IsEqualIID(iid, &CLSID_MyComputer); return IsEqualIID(iid, &CLSID_MyComputer);
@ -1713,9 +1715,9 @@ BOOL _ILIsSpecialFolder (LPCITEMIDLIST pidl)
{ {
LPPIDLDATA lpPData = _ILGetDataPointer(pidl); 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)) || return (pidl && ( (lpPData && (PT_GUID== lpPData->type || PT_SHELLEXT== lpPData->type || PT_YAGUID == lpPData->type)) ||
(pidl && pidl->mkid.cb == 0x00) (pidl && pidl->mkid.cb == 0x00)
)); ));
} }
@ -1724,7 +1726,7 @@ BOOL _ILIsDrive(LPCITEMIDLIST pidl)
{ {
LPPIDLDATA lpPData = _ILGetDataPointer(pidl); LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n", pidl); TRACE("(%p)\n",pidl);
return (pidl && lpPData && (PT_DRIVE == lpPData->type || return (pidl && lpPData && (PT_DRIVE == lpPData->type ||
PT_DRIVE1 == lpPData->type || PT_DRIVE1 == lpPData->type ||
@ -1736,7 +1738,7 @@ BOOL _ILIsFolder(LPCITEMIDLIST pidl)
{ {
LPPIDLDATA lpPData = _ILGetDataPointer(pidl); LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n", pidl); TRACE("(%p)\n",pidl);
return (pidl && lpPData && (PT_FOLDER == lpPData->type || PT_FOLDER1 == lpPData->type)); return (pidl && lpPData && (PT_FOLDER == lpPData->type || PT_FOLDER1 == lpPData->type));
} }
@ -1745,7 +1747,7 @@ BOOL _ILIsValue(LPCITEMIDLIST pidl)
{ {
LPPIDLDATA lpPData = _ILGetDataPointer(pidl); LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n", pidl); TRACE("(%p)\n",pidl);
return (pidl && lpPData && PT_VALUE == lpPData->type); return (pidl && lpPData && PT_VALUE == lpPData->type);
} }
@ -1754,7 +1756,7 @@ BOOL _ILIsCPanelStruct(LPCITEMIDLIST pidl)
{ {
LPPIDLDATA lpPData = _ILGetDataPointer(pidl); LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
TRACE("(%p)\n", pidl); TRACE("(%p)\n",pidl);
return (pidl && lpPData && (lpPData->type == 0)); return (pidl && lpPData && (lpPData->type == 0));
} }
@ -1784,22 +1786,22 @@ BOOL _ILIsPidlSimple(LPCITEMIDLIST pidl)
* ### 3. section getting values from pidls ### * ### 3. section getting values from pidls ###
*/ */
/************************************************************************** /**************************************************************************
* _ILSimpleGetText * _ILSimpleGetText
* *
* gets the text for the first item in the pidl (eg. simple pidl) * gets the text for the first item in the pidl (eg. simple pidl)
* *
* returns the length of the string * returns the length of the string
*/ */
DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize) DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
{ {
DWORD dwReturn = 0; DWORD dwReturn=0;
LPSTR szSrc; LPSTR szSrc;
LPWSTR szSrcW; LPWSTR szSrcW;
GUID const * riid; GUID const * riid;
char szTemp[MAX_PATH]; char szTemp[MAX_PATH];
TRACE("(%p %p %x)\n", pidl, szOut, uOutSize); TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
if (!pidl) if (!pidl)
return 0; return 0;
@ -1829,7 +1831,7 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
else if (( szSrcW = _ILGetTextPointerW(pidl) )) else if (( szSrcW = _ILGetTextPointerW(pidl) ))
{ {
/* unicode filesystem */ /* 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) if (szOut)
lstrcpynA(szOut, szTemp, uOutSize); lstrcpynA(szOut, szTemp, uOutSize);
@ -1839,7 +1841,7 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
else if (( riid = _ILGetGUIDPointer(pidl) )) else if (( riid = _ILGetGUIDPointer(pidl) ))
{ {
/* special folder */ /* special folder */
if (HCR_GetClassNameA(riid, szTemp, MAX_PATH) ) if ( HCR_GetClassNameA(riid, szTemp, MAX_PATH) )
{ {
if (szOut) if (szOut)
lstrcpynA(szOut, szTemp, uOutSize); lstrcpynA(szOut, szTemp, uOutSize);
@ -1852,23 +1854,23 @@ DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
ERR("-- no text\n"); 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; return dwReturn;
} }
/************************************************************************** /**************************************************************************
* _ILSimpleGetTextW * _ILSimpleGetTextW
* *
* gets the text for the first item in the pidl (eg. simple pidl) * gets the text for the first item in the pidl (eg. simple pidl)
* *
* returns the length of the string * returns the length of the string
*/ */
DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize) DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
{ {
DWORD dwReturn; DWORD dwReturn;
FileStructW *pFileStructW = _ILGetFileStructW(pidl); FileStructW *pFileStructW = _ILGetFileStructW(pidl);
TRACE("(%p %p %x)\n", pidl, szOut, uOutSize); TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
if (pFileStructW) { if (pFileStructW) {
lstrcpynW(szOut, pFileStructW->wszName, uOutSize); lstrcpynW(szOut, pFileStructW->wszName, uOutSize);
@ -1878,7 +1880,7 @@ DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
WCHAR szTemp[MAX_PATH]; WCHAR szTemp[MAX_PATH];
LPSTR szSrc; LPSTR szSrc;
LPWSTR szSrcW; LPWSTR szSrcW;
dwReturn = 0; dwReturn=0;
if (!pidl) if (!pidl)
return 0; return 0;
@ -1932,7 +1934,7 @@ DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
} }
} }
TRACE("-- (%p=%s 0x%08x)\n", szOut, debugstr_w(szOut), dwReturn); TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_w(szOut),dwReturn);
return dwReturn; return dwReturn;
} }
@ -2054,7 +2056,7 @@ static LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl)
{ {
/* TRACE(pidl,"(pidl%p)\n", pidl); */ /* TRACE(pidl,"(pidl%p)\n", pidl); */
LPPIDLDATA pdata = _ILGetDataPointer(pidl); LPPIDLDATA pdata =_ILGetDataPointer(pidl);
if (!pdata) if (!pdata)
return NULL; return NULL;
@ -2080,7 +2082,7 @@ static LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl)
*/ */
IID* _ILGetGUIDPointer(LPCITEMIDLIST pidl) IID* _ILGetGUIDPointer(LPCITEMIDLIST pidl)
{ {
LPPIDLDATA pdata = _ILGetDataPointer(pidl); LPPIDLDATA pdata =_ILGetDataPointer(pidl);
TRACE("%p\n", pidl); TRACE("%p\n", pidl);
@ -2177,7 +2179,7 @@ BOOL _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *pFt)
BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
{ {
FILETIME ft, lft; FILETIME ft,lft;
SYSTEMTIME time; SYSTEMTIME time;
BOOL ret; BOOL ret;
@ -2186,7 +2188,7 @@ BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
FileTimeToLocalFileTime(&ft, &lft); FileTimeToLocalFileTime(&ft, &lft);
FileTimeToSystemTime (&lft, &time); 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) if (ret)
{ {
/* Append space + time without seconds */ /* Append space + time without seconds */
@ -2244,9 +2246,9 @@ BOOL _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
{ {
char szTemp[MAX_PATH]; char szTemp[MAX_PATH];
const char * pPoint; const char * pPoint;
LPCITEMIDLIST pidlTemp = pidl; LPCITEMIDLIST pidlTemp=pidl;
TRACE("pidl=%p\n", pidl); TRACE("pidl=%p\n",pidl);
if (!pidl) if (!pidl)
return FALSE; return FALSE;
@ -2265,7 +2267,7 @@ BOOL _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
pPoint++; pPoint++;
lstrcpynA(pOut, pPoint, uOutSize); lstrcpynA(pOut, pPoint, uOutSize);
TRACE("%s\n", pOut); TRACE("%s\n",pOut);
return TRUE; return TRUE;
} }
@ -2362,7 +2364,7 @@ DWORD _ILGetFileAttributes(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
if(uOutSize >= 6) if(uOutSize >= 6)
{ {
i = 0; i=0;
if(wAttrib & FILE_ATTRIBUTE_READONLY) if(wAttrib & FILE_ATTRIBUTE_READONLY)
pOut[i++] = 'R'; pOut[i++] = 'R';
if(wAttrib & FILE_ATTRIBUTE_HIDDEN) if(wAttrib & FILE_ATTRIBUTE_HIDDEN)
@ -2381,7 +2383,7 @@ DWORD _ILGetFileAttributes(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
/************************************************************************* /*************************************************************************
* ILFreeaPidl * ILFreeaPidl
* *
* free a aPidl struct * frees an aPidl struct
*/ */
void _ILFreeaPidl(LPITEMIDLIST * apidl, UINT cidl) void _ILFreeaPidl(LPITEMIDLIST * apidl, UINT cidl)
{ {

View file

@ -20,10 +20,9 @@
* *
* NOTES: * NOTES:
* *
* DO NOT use this definitions outside the shell32.dll ! * DO NOT use these definitions outside the shell32.dll!
* *
* The contents of a pidl should never used from a application * The contents of a pidl should never be used directly from an application.
* directly.
* *
* Undocumented: * Undocumented:
* MS says: the abID of SHITEMID should be treated as binary data and not * MS says: the abID of SHITEMID should be treated as binary data and not
@ -206,7 +205,7 @@ typedef struct tagPIDLDATA
struct tagPIDLFontStruct cfont; struct tagPIDLFontStruct cfont;
struct tagPIDLPrinterStruct cprinter; struct tagPIDLPrinterStruct cprinter;
struct tagPIDLRecycleStruct crecycle; struct tagPIDLRecycleStruct crecycle;
} u; }u;
} PIDLDATA, *LPPIDLDATA; } PIDLDATA, *LPPIDLDATA;
#include "poppack.h" #include "poppack.h"