X-Git-Url: https://code.delx.au/refind/blobdiff_plain/dfaff0c32138446ef78a69cb221341598262859c..69d48aa1764ec9c931a2463cb3a5bc9de94f7499:/refind/main.c diff --git a/refind/main.c b/refind/main.c index 0b899f8..be3dca4 100644 --- a/refind/main.c +++ b/refind/main.c @@ -59,6 +59,7 @@ #define EFI_SECURITY_VIOLATION EFIERR (26) #else #include "../EfiLib/BdsHelper.h" +#include "../EfiLib/legacy.h" #endif // __MAKEWITH_GNUEFI #ifndef EFI_OS_INDICATIONS_BOOT_TO_FW_UI @@ -152,7 +153,7 @@ static VOID AboutrEFInd(VOID) { if (AboutMenu.EntryCount == 0) { AboutMenu.TitleImage = BuiltinIcon(BUILTIN_ICON_FUNC_ABOUT); - AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.7.4"); + AddMenuInfoLine(&AboutMenu, L"rEFInd Version 0.7.6.1"); AddMenuInfoLine(&AboutMenu, L""); AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2006-2010 Christoph Pfisterer"); AddMenuInfoLine(&AboutMenu, L"Copyright (c) 2012-2013 Roderick W. Smith"); @@ -283,7 +284,7 @@ static EFI_STATUS StartEFIImageList(IN EFI_DEVICE_PATH **DevicePaths, // protect for this condition; but sometimes Volume comes back NULL, so provide // an exception. (TODO: Handle this special condition better.) if ((LoaderType == TYPE_LEGACY) || (Volume == NULL) || IsValidLoader(Volume->RootDir, Filename)) { - if (Filename) { + if (Filename && (LoaderType != TYPE_LEGACY)) { Temp = PoolPrint(L"\\%s %s", Filename, FullLoadOptions ? FullLoadOptions : L""); if (Temp != NULL) { MyFreePool(FullLoadOptions); @@ -1314,7 +1315,7 @@ static VOID ScanEfiFiles(REFIT_VOLUME *Volume) { if (GlobalConfig.ScanAllLinux) MergeStrings(&MatchPatterns, LINUX_MATCH_PATTERNS, L','); - if ((Volume->RootDir != NULL) && (Volume->VolName != NULL)) { + if ((Volume->RootDir != NULL) && (Volume->VolName != NULL) && (Volume->IsReadable)) { // check for Mac OS X boot loader if (ShouldScan(Volume, L"System\\Library\\CoreServices")) { StrCpy(FileName, MACOSX_LOADER_PATH); @@ -1624,10 +1625,18 @@ static VOID StartLegacy(IN LEGACY_ENTRY *Entry) // Start a device on a non-Mac using the EFI_LEGACY_BIOS_PROTOCOL #ifdef __MAKEWITH_TIANO -static VOID StartLegacyUEFI(IN LEGACY_ENTRY *Entry) +static VOID StartLegacyUEFI(LEGACY_ENTRY *Entry) { +// UINTN ExitDataSize = 0; +// CHAR16 *ExitData = NULL; +// EFI_STATUS Status; + BeginExternalScreen(TRUE, L"Booting Legacy OS (UEFI mode)"); +// Print(L"Launching from '%s'\n", DevicePathToStr(Entry->BdsOption->DevicePath)); +// PauseForKey(); +// Status = BdsLibBootViaBootOption(Entry->BdsOption, Entry->BdsOption->DevicePath, &ExitDataSize, &ExitData); +// Print(L"BdsLibBootViaBootOption() returned %d\n", Status); BdsLibConnectDevicePath (Entry->BdsOption->DevicePath); BdsLibDoLegacyBoot(Entry->BdsOption); @@ -2149,6 +2158,17 @@ static VOID WarnIfLegacyProblems() { static VOID ScanForBootloaders(VOID) { UINTN i; +// if (GlobalConfig.LegacyType == LEGACY_TYPE_UEFI) { +// Print(L"About to call BdsDeleteAllInvalidLegacyBootOptions()\n"); +// BdsDeleteAllInvalidLegacyBootOptions(); +// Print(L"About to call BdsAddNonExistingLegacyBootOptions()\n"); +// BdsAddNonExistingLegacyBootOptions(); +// Print(L"About to call BdsUpdateLegacyDevOrder()\n"); +// // BdsUpdateLegacyDevOrder(); // EXTREME CAUTION: HOSED ONE FIRMWARE! +// Print(L"Done with legacy boot updates!\n"); +// PauseForKey(); +// } + ScanVolumes(); // scan for loaders and tools, add them to the menu