- Timestamp:
- May 1, 2000, 3:33:25 AM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/shell32/pidl.cpp
r3257 r3469 1 /* $Id: pidl.cpp,v 1. 7 2000-03-28 15:28:43 cbratschiExp $ */1 /* $Id: pidl.cpp,v 1.8 2000-05-01 01:33:25 phaller Exp $ */ 2 2 3 3 /* … … 50 50 ODINDEBUGCHANNEL(SHELL32-PIDL) 51 51 52 53 /***************************************************************************** 54 * Local prototypes (performance optimization) * 55 *****************************************************************************/ 56 57 LPITEMIDLIST _Optlink ODIN_ILGetNext (LPITEMIDLIST pidl); 58 BOOL _Optlink ODIN__ILIsDesktop (LPCITEMIDLIST pidl); 59 BOOL _Optlink ODIN__ILIsValue (LPCITEMIDLIST pidl); 60 LPPIDLDATA _Optlink ODIN__ILGetDataPointer (LPITEMIDLIST pidl); 61 LPITEMIDLIST _Optlink ODIN_ILFindLastID (LPITEMIDLIST pidl); 62 LPSTR _Optlink ODIN__ILGetTextPointer (PIDLTYPE type, LPPIDLDATA pidldata); 63 DWORD _Optlink ODIN__ILSimpleGetText (LPCITEMIDLIST pidl,LPSTR szOut, UINT uOutSize); 64 DWORD _Optlink ODIN_ILGetSize (LPITEMIDLIST pidl); 65 LPITEMIDLIST _Optlink ODIN_ILClone (LPCITEMIDLIST pidl); 66 LPITEMIDLIST _Optlink ODIN_ILCloneFirst (LPCITEMIDLIST pidl); 67 68 69 70 52 71 #ifdef DEBUG 53 72 void pdump (LPCITEMIDLIST pidl) … … 78 97 do 79 98 { 80 type = _ILGetDataPointer(pidltemp)->type;81 szData = _ILGetTextPointer(type,_ILGetDataPointer(pidltemp));82 szShortName = _ILGetSTextPointer(type, _ILGetDataPointer(pidltemp));83 _ILSimpleGetText(pidltemp, szName, MAX_PATH);99 type = ODIN__ILGetDataPointer(pidltemp)->type; 100 szData = ODIN__ILGetTextPointer(type, ODIN__ILGetDataPointer(pidltemp)); 101 szShortName = _ILGetSTextPointer(type, ODIN__ILGetDataPointer(pidltemp)); 102 ODIN__ILSimpleGetText(pidltemp, szName, MAX_PATH); 84 103 85 104 MESSAGE ("-- pidl=%p size=%u type=%lx name=%s (%s,%s)\n", 86 105 pidltemp, pidltemp->mkid.cb,type,szName,debugstr_a(szData), debugstr_a(szShortName)); 87 106 88 pidltemp = ILGetNext(pidltemp);107 pidltemp = ODIN_ILGetNext(pidltemp); 89 108 90 109 } while (pidltemp->mkid.cb); … … 115 134 if (pidltemp && pidltemp->mkid.cb) 116 135 { do 117 { type = _ILGetDataPointer(pidltemp)->type;136 { type = ODIN__ILGetDataPointer(pidltemp)->type; 118 137 switch (type) 119 138 { case PT_DESKTOP: … … 154 173 } 155 174 } 156 pidltemp = ILGetNext(pidltemp);175 pidltemp = ODIN_ILGetNext(pidltemp); 157 176 } while (pidltemp->mkid.cb); 158 177 } … … 186 205 { 187 206 pidlLast = pidl; 188 pidl = ILGetNext(pidl);207 pidl = ODIN_ILGetNext(pidl); 189 208 } 190 209 return pidlLast; … … 201 220 if (!pidl || !pidl->mkid.cb) 202 221 return 0; 203 ILFindLastID(pidl)->mkid.cb = 0;222 ODIN_ILFindLastID(pidl)->mkid.cb = 0; 204 223 return 1; 205 224 } … … 219 238 return NULL; 220 239 221 len = ILGetSize(pidl);240 len = ODIN_ILGetSize(pidl); 222 241 newpidl = (LPITEMIDLIST)SHAlloc(len); 223 242 if (newpidl) … … 253 272 254 273 if (len) 255 ILGetNext(pidlNew)->mkid.cb = 0x00;274 ODIN_ILGetNext(pidlNew)->mkid.cb = 0x00; 256 275 } 257 276 } … … 388 407 return NULL; 389 408 390 len = ILGetSize(pidl);409 len = ODIN_ILGetSize(pidl); 391 410 newpidl = (LPITEMIDLIST)pCOMCTL32_Alloc(len); 392 411 if (newpidl) … … 424 443 while (pidltemp1->mkid.cb && pidltemp2->mkid.cb) 425 444 { 426 _ILSimpleGetText(pidltemp1, szData1, MAX_PATH);427 _ILSimpleGetText(pidltemp2, szData2, MAX_PATH);445 ODIN__ILSimpleGetText(pidltemp1, szData1, MAX_PATH); 446 ODIN__ILSimpleGetText(pidltemp2, szData2, MAX_PATH); 428 447 429 448 if (strcmp ( szData1, szData2 )!=0 ) 430 449 return FALSE; 431 450 432 pidltemp1 = ILGetNext(pidltemp1);433 pidltemp2 = ILGetNext(pidltemp2);451 pidltemp1 = ODIN_ILGetNext(pidltemp1); 452 pidltemp2 = ODIN_ILGetNext(pidltemp2); 434 453 } 435 454 … … 461 480 while (pParent->mkid.cb && pChild->mkid.cb) 462 481 { 463 _ILSimpleGetText(pParent, szData1, MAX_PATH);464 _ILSimpleGetText(pChild, szData2, MAX_PATH);482 ODIN__ILSimpleGetText(pParent, szData1, MAX_PATH); 483 ODIN__ILSimpleGetText(pChild, szData2, MAX_PATH); 465 484 466 485 if (strcmp ( szData1, szData2 )!=0 ) 467 486 return FALSE; 468 487 469 pParent = ILGetNext(pParent);470 pChild = ILGetNext(pChild);488 pParent = ODIN_ILGetNext(pParent); 489 pChild = ODIN_ILGetNext(pChild); 471 490 } 472 491 … … 474 493 return FALSE; 475 494 476 if ( ILGetNext(pChild)->mkid.cb && bImmediate) /* not immediate descent */495 if ( ODIN_ILGetNext(pChild)->mkid.cb && bImmediate) /* not immediate descent */ 477 496 return FALSE; 478 497 … … 511 530 pdump (pidl2); 512 531 513 if ( _ILIsDesktop(pidl1) )532 if ( ODIN__ILIsDesktop(pidl1) ) 514 533 { 515 534 ret = pidl2; … … 519 538 while (pidltemp1->mkid.cb && pidltemp2->mkid.cb) 520 539 { 521 _ILSimpleGetText(pidltemp1, szData1, MAX_PATH);522 _ILSimpleGetText(pidltemp2, szData2, MAX_PATH);540 ODIN__ILSimpleGetText(pidltemp1, szData1, MAX_PATH); 541 ODIN__ILSimpleGetText(pidltemp2, szData2, MAX_PATH); 523 542 524 543 if (strcmp(szData1,szData2)) 525 544 break; 526 545 527 pidltemp1 = ILGetNext(pidltemp1);528 pidltemp2 = ILGetNext(pidltemp2);546 pidltemp1 = ODIN_ILGetNext(pidltemp1); 547 pidltemp2 = ODIN_ILGetNext(pidltemp2); 529 548 ret = pidltemp2; 530 549 } … … 561 580 if(!pidl1) 562 581 { 563 pidlNew = ILClone(pidl2);582 pidlNew = ODIN_ILClone(pidl2); 564 583 return pidlNew; 565 584 } … … 567 586 if(!pidl2) 568 587 { 569 pidlNew = ILClone(pidl1);588 pidlNew = ODIN_ILClone(pidl1); 570 589 return pidlNew; 571 590 } 572 591 573 len1 = ILGetSize(pidl1)-2;574 len2 = ILGetSize(pidl2);592 len1 = ODIN_ILGetSize(pidl1)-2; 593 len2 = ODIN_ILGetSize(pidl2); 575 594 pidlNew = (ITEMIDLIST*)SHAlloc(len1+len2); 576 595 … … 618 637 619 638 /************************************************************************* 620 * ILGetSize [SHELL32.152]639 * ODIN_ILGetSize [SHELL32.152] 621 640 * gets the byte size of an idlist including zero terminator (pidl) 622 641 * … … 648 667 649 668 /************************************************************************* 650 * ILGetNext [SHELL32.153]669 * ODIN_ILGetNext [SHELL32.153] 651 670 * gets the next simple pidl of a complex pidl 652 671 * … … 694 713 pdump (item); 695 714 696 if ( _ILIsDesktop(pidl))697 { 698 idlRet = ILClone(item);715 if (ODIN__ILIsDesktop(pidl)) 716 { 717 idlRet = ODIN_ILClone(item); 699 718 if (pidl) 700 719 SHFree (pidl); … … 926 945 pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0); 927 946 pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0); 928 type = _ILGetDataPointer(pidl)->type;929 lstrcpynA(pfd->cFileName, _ILGetTextPointer(type,_ILGetDataPointer(pidl)), MAX_PATH);930 lstrcpynA(pfd->cAlternateFileName,_ILGetSTextPointer(type, _ILGetDataPointer(pidl)), 14);947 type = ODIN__ILGetDataPointer(pidl)->type; 948 lstrcpynA(pfd->cFileName,ODIN__ILGetTextPointer(type,ODIN__ILGetDataPointer(pidl)), MAX_PATH); 949 lstrcpynA(pfd->cAlternateFileName,_ILGetSTextPointer(type,ODIN__ILGetDataPointer(pidl)), 14); 931 950 } 932 951 return NOERROR; … … 970 989 pfd->dwFileAttributes = _ILGetFileAttributes(pidl, NULL, 0); 971 990 pfd->nFileSizeLow = _ILGetFileSize ( pidl, NULL, 0); 972 type = _ILGetDataPointer(pidl)->type;973 lstrcpynAtoW(pfd->cFileName, _ILGetTextPointer(type,_ILGetDataPointer(pidl)), MAX_PATH);974 lstrcpynAtoW(pfd->cAlternateFileName,_ILGetSTextPointer(type, _ILGetDataPointer(pidl)), 14);991 type = ODIN__ILGetDataPointer(pidl)->type; 992 lstrcpynAtoW(pfd->cFileName,ODIN__ILGetTextPointer(type,ODIN__ILGetDataPointer(pidl)), MAX_PATH); 993 lstrcpynAtoW(pfd->cAlternateFileName,_ILGetSTextPointer(type,ODIN__ILGetDataPointer(pidl)), 14); 975 994 } 976 995 return NOERROR; … … 1015 1034 pdump(pidl); 1016 1035 #ifdef SHELL_NO_DESKTOP 1017 if( _ILIsDesktop(pidl))1036 if(ODIN__ILIsDesktop(pidl)) 1018 1037 { 1019 1038 SHGetSpecialFolderPathA(0, pszPath, CSIDL_DESKTOPDIRECTORY, FALSE); … … 1071 1090 /* we are on desktop level */ 1072 1091 if (ppidlLast) 1073 *ppidlLast = ILClone(pidl);1092 *ppidlLast = ODIN_ILClone(pidl); 1074 1093 hr = SHGetDesktopFolder((IShellFolder**)ppv); 1075 1094 } 1076 1095 else 1077 1096 { 1078 pidlChild = ILClone(ILFindLastID(pidl));1079 pidlParent = ILClone(pidl);1097 pidlChild = ODIN_ILClone(ODIN_ILFindLastID(pidl)); 1098 pidlParent = ODIN_ILClone(pidl); 1080 1099 ILRemoveLastID(pidlParent); 1081 1100 … … 1201 1220 { 1202 1221 LPPIDLDATA pData; 1203 pData = _ILGetDataPointer(pidl);1222 pData = ODIN__ILGetDataPointer(pidl); 1204 1223 FileTimeToDosDateTime(&(stffile->ftLastWriteTime),&pData->u.folder.uFileDate,&pData->u.folder.uFileTime); 1205 1224 pData->u.folder.dwFileSize = stffile->nFileSizeLow; … … 1241 1260 { 1242 1261 LPPIDLDATA pData; 1243 pData = _ILGetDataPointer(pidl);1262 pData = ODIN__ILGetDataPointer(pidl); 1244 1263 FileTimeToDosDateTime(&(stffile->ftLastWriteTime),&pData->u.folder.uFileDate,&pData->u.folder.uFileTime); 1245 1264 pData->u.folder.dwFileSize = stffile->nFileSizeLow; … … 1286 1305 ZeroMemory(pidlOut, uSize + 2); 1287 1306 pidlOut->mkid.cb = uSize; 1288 pData = _ILGetDataPointer(pidlOut);1307 pData =ODIN__ILGetDataPointer(pidlOut); 1289 1308 pData->type = type; 1290 1309 memcpy(&(pData->u.mycomp.guid), pIn, uInSize); … … 1297 1316 ZeroMemory(pidlOut, uSize + 2); 1298 1317 pidlOut->mkid.cb = uSize; 1299 pData = _ILGetDataPointer(pidlOut);1318 pData =ODIN__ILGetDataPointer(pidlOut); 1300 1319 pData->type = type; 1301 pszDest = _ILGetTextPointer(type, pData);1320 pszDest = ODIN__ILGetTextPointer(type, pData); 1302 1321 memcpy(pszDest, pIn, uInSize); 1303 1322 TRACE_(pidl)("- create Drive: %s\n",debugstr_a(pszDest)); … … 1310 1329 ZeroMemory(pidlOut, uSize + 2); 1311 1330 pidlOut->mkid.cb = uSize; 1312 pData = _ILGetDataPointer(pidlOut);1331 pData =ODIN__ILGetDataPointer(pidlOut); 1313 1332 pData->type = type; 1314 pszDest = _ILGetTextPointer(type, pData);1333 pszDest = ODIN__ILGetTextPointer(type, pData); 1315 1334 memcpy(pszDest, pIn, uInSize); 1316 1335 TRACE_(pidl)("- create Value: %s\n",debugstr_a(pszDest)); … … 1318 1337 } 1319 1338 1320 pidlTemp = ILGetNext(pidlOut);1339 pidlTemp = ODIN_ILGetNext(pidlOut); 1321 1340 if (pidlTemp) 1322 1341 pidlTemp->mkid.cb = 0x00; … … 1340 1359 { 1341 1360 if(_ILIsMyComputer(pidl)) 1342 pidl = ILGetNext(pidl);1361 pidl = ODIN_ILGetNext(pidl); 1343 1362 1344 1363 if (pidl && _ILIsDrive(pidl)) 1345 return _ILSimpleGetText(pidl, pOut, uSize);1364 return ODIN__ILSimpleGetText(pidl, pOut, uSize); 1346 1365 1347 1366 return 0; … … 1353 1372 * 1354 1373 ************************************************************************** 1355 * _ILIsDesktop()1374 * ODIN__ILIsDesktop() 1356 1375 * _ILIsMyComputer() 1357 1376 * _ILIsSpecialFolder() 1358 1377 * _ILIsDrive() 1359 1378 * _ILIsFolder() 1360 * _ILIsValue()1379 * ODIN__ILIsValue() 1361 1380 * _ILIsPidlSimple() 1362 1381 */ … … 1380 1399 ODINFUNCTION1(BOOL,_ILIsSpecialFolder,LPCITEMIDLIST, pidl) 1381 1400 { 1382 LPPIDLDATA lpPData = _ILGetDataPointer(pidl);1401 LPPIDLDATA lpPData = ODIN__ILGetDataPointer(pidl); 1383 1402 TRACE_(pidl)("(%p)\n",pidl); 1384 1403 return (pidl && ( (lpPData && (PT_MYCOMP== lpPData->type || PT_SPECIAL== lpPData->type)) || … … 1388 1407 1389 1408 ODINFUNCTION1(BOOL,_ILIsDrive,LPCITEMIDLIST, pidl) 1390 { LPPIDLDATA lpPData = _ILGetDataPointer(pidl);1409 { LPPIDLDATA lpPData = ODIN__ILGetDataPointer(pidl); 1391 1410 TRACE_(pidl)("(%p)\n",pidl); 1392 1411 return (pidl && lpPData && (PT_DRIVE == lpPData->type || … … 1397 1416 1398 1417 ODINFUNCTION1(BOOL,_ILIsFolder,LPCITEMIDLIST, pidl) 1399 { LPPIDLDATA lpPData = _ILGetDataPointer(pidl);1418 { LPPIDLDATA lpPData = ODIN__ILGetDataPointer(pidl); 1400 1419 TRACE_(pidl)("(%p)\n",pidl); 1401 1420 return (pidl && lpPData && (PT_FOLDER == lpPData->type || PT_FOLDER1 == lpPData->type)); … … 1403 1422 1404 1423 ODINFUNCTION1(BOOL,_ILIsValue,LPCITEMIDLIST, pidl) 1405 { LPPIDLDATA lpPData = _ILGetDataPointer(pidl);1424 { LPPIDLDATA lpPData = ODIN__ILGetDataPointer(pidl); 1406 1425 TRACE_(pidl)("(%p)\n",pidl); 1407 1426 return (pidl && lpPData && PT_VALUE == lpPData->type); … … 1415 1434 BOOL ret = TRUE; 1416 1435 1417 if(! _ILIsDesktop(pidl)) /* pidl=NULL or mkid.cb=0 */1436 if(! ODIN__ILIsDesktop(pidl)) /* pidl=NULL or mkid.cb=0 */ 1418 1437 { 1419 1438 WORD len = pidl->mkid.cb; … … 1433 1452 1434 1453 /************************************************************************** 1435 * _ILSimpleGetText1454 * ODIN__ILSimpleGetText 1436 1455 * 1437 1456 * gets the text for the first item in the pidl (eg. simple pidl) … … 1455 1474 *szOut = 0; 1456 1475 1457 pData = _ILGetDataPointer(pidl);1458 1459 if ( _ILIsDesktop(pidl))1476 pData = ODIN__ILGetDataPointer(pidl); 1477 1478 if (ODIN__ILIsDesktop(pidl)) 1460 1479 { 1461 1480 /* desktop */ … … 1468 1487 } 1469 1488 } 1470 else if (( szSrc = _ILGetTextPointer(pData->type, pData) ))1489 else if (( szSrc = ODIN__ILGetTextPointer(pData->type, pData) )) 1471 1490 { 1472 1491 /* filesystem */ … … 1501 1520 * 1502 1521 ************************************************************************** 1503 * _ILGetDataPointer()1522 * ODIN__ILGetDataPointer() 1504 1523 */ 1505 1524 … … 1512 1531 1513 1532 /************************************************************************** 1514 * _ILGetTextPointer()1533 * ODIN__ILGetTextPointer() 1515 1534 * gets a pointer to the long filename string stored in the pidl 1516 1535 */ … … 1584 1603 ODINFUNCTION1(REFIID,_ILGetGUIDPointer,LPCITEMIDLIST, pidl) 1585 1604 { 1586 LPPIDLDATA pdata = _ILGetDataPointer(pidl);1605 LPPIDLDATA pdata =ODIN__ILGetDataPointer(pidl); 1587 1606 1588 1607 if (pdata) … … 1617 1636 FILETIME *, pFt) 1618 1637 { 1619 LPPIDLDATA pdata = _ILGetDataPointer(pidl);1638 LPPIDLDATA pdata =ODIN__ILGetDataPointer(pidl); 1620 1639 1621 1640 switch (pdata->type) … … 1683 1702 UINT, uOutSize) 1684 1703 { 1685 LPPIDLDATA pdata = _ILGetDataPointer(pidl);1704 LPPIDLDATA pdata =ODIN__ILGetDataPointer(pidl); 1686 1705 DWORD dwSize; 1687 1706 … … 1717 1736 DWORD _ILGetFileSizeKB (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) 1718 1737 { 1719 LPPIDLDATA pdata = _ILGetDataPointer(pidl);1738 LPPIDLDATA pdata =ODIN__ILGetDataPointer(pidl); 1720 1739 DWORD dwSize; 1721 1740 char tempSizeStr[24]; … … 1777 1796 if (!pidl) return FALSE; 1778 1797 1779 pidlTemp = ILFindLastID(pidl);1780 1781 if (! _ILIsValue(pidlTemp)) return FALSE;1782 if (! _ILSimpleGetText(pidlTemp, szTemp, MAX_PATH)) return FALSE;1798 pidlTemp = ODIN_ILFindLastID(pidl); 1799 1800 if (!ODIN__ILIsValue(pidlTemp)) return FALSE; 1801 if (!ODIN__ILSimpleGetText(pidlTemp, szTemp, MAX_PATH)) return FALSE; 1783 1802 1784 1803 pPoint = PathFindExtensionA(szTemp); … … 1813 1832 UINT, uOutSize) 1814 1833 { 1815 if( _ILIsValue(pidl))1834 if(ODIN__ILIsValue(pidl)) 1816 1835 { 1817 1836 char sTemp[64]; … … 1856 1875 UINT, uOutSize) 1857 1876 { 1858 LPPIDLDATA pData = _ILGetDataPointer(pidl);1877 LPPIDLDATA pData =ODIN__ILGetDataPointer(pidl); 1859 1878 WORD wAttrib = 0; 1860 1879 int i;
Note:
See TracChangeset
for help on using the changeset viewer.