MCPcopy Create free account
hub / github.com/CloverHackyColor/CloverBootloader / ScanLoader

Function ScanLoader

rEFIt_UEFI/entry_scan/loader.cpp:1331–1561  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1329#undef Scissor
1330
1331VOID ScanLoader(VOID)
1332{
1333 //DBG("Scanning loaders...\n");
1334 DbgHeader("ScanLoader");
1335
1336 for (UINTN VolumeIndex = 0; VolumeIndex < Volumes.size(); VolumeIndex++) {
1337 REFIT_VOLUME* Volume = &Volumes[VolumeIndex];
1338 if (Volume->RootDir == NULL) { // || Volume->VolName == NULL)
1339 //DBG(", no file system\n", VolumeIndex);
1340 continue;
1341 }
1342 DBG("- [%02llu]: '%ls'", VolumeIndex, Volume->VolName.wc_str());
1343 if (Volume->VolName.isEmpty()) {
1344 Volume->VolName = L"Unknown"_XSW;
1345 }
1346
1347 // skip volume if its kind is configured as disabled
1348 if (((1ull<<Volume->DiskKind) & GlobalConfig.DisableFlags) != 0)
1349 {
1350 DBG(", flagged disable\n");
1351 continue;
1352 }
1353
1354// if (Volume->Hidden) {
1355// DBG(", hidden\n");
1356// continue;
1357// }
1358 DBG("\n");
1359
1360 // check for Mac OS X Install Data
1361 // 1st stage - createinstallmedia
1362 if (FileExists(Volume->RootDir, L"\\.IABootFiles\\boot.efi")) {
1363 if (FileExists(Volume->RootDir, L"\\Install OS X Mavericks.app") ||
1364 FileExists(Volume->RootDir, L"\\Install OS X Yosemite.app") ||
1365 FileExists(Volume->RootDir, L"\\Install OS X El Capitan.app")) {
1366 AddLoaderEntry(L"\\.IABootFiles\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"OS X Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.9 - 10.11
1367 } else {
1368 AddLoaderEntry(L"\\.IABootFiles\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.12 - 10.13.3
1369 }
1370 } else if (FileExists(Volume->RootDir, L"\\.IAPhysicalMedia") && FileExists(Volume->RootDir, MACOSX_LOADER_PATH)) {
1371 AddLoaderEntry(MACOSX_LOADER_PATH, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.13.4+
1372 }
1373 // 2nd stage - InstallESD/AppStore/startosinstall/Fusion Drive
1374 AddLoaderEntry(L"\\Mac OS X Install Data\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"Mac OS X Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.7
1375 AddLoaderEntry(L"\\OS X Install Data\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"OS X Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.8 - 10.11
1376 AddLoaderEntry(L"\\macOS Install Data\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.12 - 10.12.3
1377 AddLoaderEntry(L"\\macOS Install Data\\Locked Files\\Boot Files\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.12.4+
1378 AddLoaderEntry(L"\\macOS Install Data\\Locked Files\\boot.efi"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.16+
1379 AddPRSEntry(Volume); // 10.12+
1380
1381 // Netinstall
1382 AddLoaderEntry(L"\\NetInstall macOS High Sierra.nbi\\i386\\booter"_XSW, NullXString8Array, L""_XSW, L"macOS Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0);
1383 // Use standard location for boot.efi, according to the install files is present
1384 // That file indentifies a DVD/ESD/BaseSystem/Fusion Drive Install Media, so when present, check standard path to avoid entry duplication
1385 if (FileExists(Volume->RootDir, MACOSX_LOADER_PATH)) {
1386 if (FileExists(Volume->RootDir, L"\\System\\Installation\\CDIS\\Mac OS X Installer.app")) {
1387 // InstallDVD/BaseSystem
1388 AddLoaderEntry(MACOSX_LOADER_PATH, NullXString8Array, L""_XSW, L"Mac OS X Install"_XSW, Volume, L""_XSW, NULL, OSTYPE_OSX_INSTALLER, 0); // 10.6/10.7

Callers 1

RefitMainFunction · 0.85

Calls 15

DbgHeaderFunction · 0.85
FileExistsFunction · 0.85
AddLoaderEntryFunction · 0.85
AddPRSEntryFunction · 0.85
StriStrFunction · 0.85
GetRootUUIDFunction · 0.85
isFirstRootUUIDFunction · 0.85
LinuxScanFunction · 0.85
SWPrintfFunction · 0.85
subStringMethod · 0.80
sizeIncludingHiddenMethod · 0.80
XStringWClass · 0.50

Tested by

no test coverage detected