Changeset 1284
- Timestamp:
- Nov 19, 2008, 6:46:28 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/dll/filldir.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/dll/filldir.c
r1250 r1284 51 51 08 Sep 08 SHL Remove extra pszLongName logic in FreeCnrItemData 52 52 18 Oct 08 GKY Scan drives in 4 passes (local, virtual, remote, flagged slow) to speed tree scans 53 19 Nov 08 SHL Correct and sanitize 4 pass scan logic 53 54 54 55 ***********************************************************************/ … … 1135 1136 BOOL drivesbuilt = FALSE; 1136 1137 ULONG startdrive = 3; 1137 LONG TestFlags[3]; 1138 1138 static LONG whenToCheck[] = { 1139 0, 1140 DRIVE_VIRTUAL, 1141 DRIVE_REMOTE, 1142 DRIVE_SLOW}; 1143 USHORT checked[26] = { 0 }; 1139 1144 static BOOL didonce = FALSE; 1140 1145 … … 1315 1320 pci->pszDispAttr = FileAttrToString(pci->attrFile); 1316 1321 } 1317 SelectDriveIcon(pci);1322 SelectDriveIcon(pci); 1318 1323 # ifdef FORTIFY 1319 1324 // Will be freed by TreeCnrWndProc WM_DESTROY … … 1321 1326 # endif 1322 1327 } 1323 else {1328 else { 1324 1329 pci->rc.hptrIcon = hptrDunno; 1325 1330 pci->pszFileName = xstrdup(szDrive, pszSrcFile, __LINE__); … … 1480 1485 } 1481 1486 } // if show env 1482 TestFlags[0] = DRIVE_SLOW | DRIVE_VIRTUAL | DRIVE_REMOTE; 1483 TestFlags[1] = DRIVE_VIRTUAL; 1484 TestFlags[2] = DRIVE_REMOTE; 1485 TestFlags[3] = DRIVE_SLOW; 1486 x = 0; 1487 // Scan drives in 4 passes based on TestFlags 1487 // Scan drives in 4 passes checking fastest to slowest 1488 1488 for (x = 0; x < 4; x++) { 1489 1489 pci = (PCNRITEM) WinSendMsg(hwndCnr, 1490 CM_QUERYRECORD,1491 MPVOID,1492 MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER));1490 CM_QUERYRECORD, 1491 MPVOID, 1492 MPFROM2SHORT(CMA_FIRST, CMA_ITEMORDER)); 1493 1493 while (pci && (INT)pci != -1) { 1494 1494 pciNext = (PCNRITEM) WinSendMsg(hwndCnr, 1495 CM_QUERYRECORD, 1496 MPFROMP(pci), 1497 MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER)); 1498 if (!(pci->flags & RECFLAGS_ENV)) { 1499 if ((ULONG) (toupper(*pci->pszFileName) - '@') == ulCurDriveNum || 1500 toupper(*pci->pszFileName) > 'B') { 1501 if (!(driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_INVALID) && 1502 !(driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_NOPRESCAN) && 1503 (!fNoRemovableScan || 1504 !(driveflags[toupper(*pci->pszFileName) - 'A'] & DRIVE_REMOVABLE)) && 1505 (x == 0 ? (!(TestFlags[x] & (driveflags[toupper(*pci->pszFileName) - 'A']))) : 1506 x == 3 ? (TestFlags[x] & (driveflags[toupper(*pci->pszFileName) - 'A'])) : 1507 ((TestFlags[x] & (driveflags[toupper(*pci->pszFileName) - 'A'])) && 1508 !((driveflags[toupper(*pci->pszFileName) - 'A']) & DRIVE_SLOW)))) { 1509 if (!Stubby(hwndCnr, pci) && !DRIVE_RAMDISK) { 1510 WinSendMsg(hwndCnr, 1511 CM_INVALIDATERECORD, 1512 MPFROMP(&pci), 1513 MPFROM2SHORT(1, CMA_ERASE | CMA_REPOSITION)); 1514 goto SkipBadRec; 1515 } 1516 } 1517 } 1518 else { 1519 WinSendMsg(hwndCnr, 1520 CM_INVALIDATERECORD, 1521 MPFROMP(&pci), 1522 MPFROM2SHORT(1, CMA_ERASE | CMA_REPOSITION)); 1523 } 1524 WinSendMsg(WinWindowFromID(WinQueryWindow(hwndParent, QW_PARENT), 1525 MAIN_DRIVELIST), 1526 LM_INSERTITEM, 1527 MPFROM2SHORT(LIT_SORTASCENDING, 0), 1528 MPFROMP(pci->pszFileName)); 1495 CM_QUERYRECORD, 1496 MPFROMP(pci), 1497 MPFROM2SHORT(CMA_NEXT, CMA_ITEMORDER)); 1498 if (~pci->flags & RECFLAGS_ENV) { 1499 ULONG drvNum = toupper(*pci->pszFileName) - 'A'; // 0..25 1500 if (drvNum == ulCurDriveNum || drvNum >= 2) { 1501 ULONG flags = driveflags[drvNum]; // Speed up 1502 if (~flags & DRIVE_INVALID && 1503 ~flags & DRIVE_NOPRESCAN && 1504 !checked[drvNum] && 1505 (!fNoRemovableScan || (~flags & DRIVE_REMOVABLE)) && 1506 (flags & (DRIVE_SLOW | DRIVE_VIRTUAL | DRIVE_REMOTE)) == 1507 whenToCheck[x]) 1508 { 1509 if (!Stubby(hwndCnr, pci) && !DRIVE_RAMDISK) { 1510 WinSendMsg(hwndCnr, 1511 CM_INVALIDATERECORD, 1512 MPFROMP(&pci), 1513 MPFROM2SHORT(1, CMA_ERASE | CMA_REPOSITION)); 1514 goto SkipBadRec; 1515 } 1516 checked[drvNum] = TRUE; 1517 } // if this pass 1518 } 1519 else { 1520 WinSendMsg(hwndCnr, 1521 CM_INVALIDATERECORD, 1522 MPFROMP(&pci), 1523 MPFROM2SHORT(1, CMA_ERASE | CMA_REPOSITION)); 1524 } 1525 if (x == 0) { 1526 // Add to drives drop down 1527 WinSendMsg(WinWindowFromID(WinQueryWindow(hwndParent, QW_PARENT), 1528 MAIN_DRIVELIST), 1529 LM_INSERTITEM, 1530 MPFROM2SHORT(LIT_SORTASCENDING, 0), 1531 MPFROMP(pci->pszFileName)); 1532 } 1529 1533 } 1530 1534 SkipBadRec:
Note:
See TracChangeset
for help on using the changeset viewer.
