#include "config.h"
#include "screen.h"
#include "../include/refit_call_wrapper.h"
+#include "../mok/mok.h"
// constants
return (Hour * 60 + Minute);
} // BOOLEAN HandleTime()
+static BOOLEAN HandleBoolean(IN CHAR16 **TokenList, IN UINTN TokenCount) {
+ BOOLEAN TruthValue = TRUE;
+
+ if ((TokenCount >= 2) && ((StriCmp(TokenList[1], L"0") == 0) ||
+ (StriCmp(TokenList[1], L"false") == 0) ||
+ (StriCmp(TokenList[1], L"off") == 0))) {
+ TruthValue = FALSE;
+ } // if
+
+ return TruthValue;
+} // BOOLEAN HandleBoolean
+
// Sets the default boot loader IF the current time is within the bounds
// defined by the third and fourth tokens in the TokenList.
static VOID SetDefaultByTime(IN CHAR16 **TokenList, OUT CHAR16 **Default) {
CHAR16 *FlagName;
CHAR16 *TempStr = NULL;
UINTN TokenCount, i;
+ EFI_GUID RefindGuid = REFIND_GUID_VALUE;
// Set a few defaults only if we're loading the default file.
if (StriCmp(FileName, GlobalConfig.ConfigFilename) == 0) {
MyFreePool(GlobalConfig.DontScanVolumes);
GlobalConfig.DontScanVolumes = StrDuplicate(DONT_SCAN_VOLUMES);
GlobalConfig.WindowsRecoveryFiles = StrDuplicate(WINDOWS_RECOVERY_FILES);
+ if (GlobalConfig.DefaultSelection != NULL) {
+ MyFreePool(GlobalConfig.DefaultSelection);
+ GlobalConfig.DefaultSelection = NULL;
+ }
+// GlobalConfig.DefaultSelection = AllocatePool(255 * sizeof(CHAR16));
+// Print(L"About to call EfivarGetRaw()\n");
+ Status = EfivarGetRaw(&RefindGuid, L"PreviousBoot", (CHAR8**) &(GlobalConfig.DefaultSelection), &i);
+// i = 255 * sizeof(CHAR16);
+// Print(L"About to call RT->GetVariable()\n");
+// Status = refit_call5_wrapper(RT->GetVariable, L"PreviousBoot", &RefindGuid, &Attributes, &i, GlobalConfig.DefaultSelection);
+ if (Status != EFI_SUCCESS)
+ GlobalConfig.DefaultSelection = NULL;
} // if
if (!FileExists(SelfDir, FileName)) {
GlobalConfig.ScanFor[i] = ' ';
}
+ } else if (StriCmp(TokenList[0], L"uefi_deep_legacy_scan") == 0) {
+ GlobalConfig.DeepLegacyScan = HandleBoolean(TokenList, TokenCount);
+
} else if ((StriCmp(TokenList[0], L"scan_delay") == 0) && (TokenCount == 2)) {
HandleInt(TokenList, TokenCount, &(GlobalConfig.ScanDelay));
}
} else if (StriCmp(TokenList[0], L"textonly") == 0) {
- if ((TokenCount >= 2) && (StriCmp(TokenList[1], L"0") == 0)) {
- GlobalConfig.TextOnly = FALSE;
- } else {
- GlobalConfig.TextOnly = TRUE;
- }
+ GlobalConfig.TextOnly = HandleBoolean(TokenList, TokenCount);
+// if ((TokenCount >= 2) && (StriCmp(TokenList[1], L"0") == 0)) {
+// GlobalConfig.TextOnly = FALSE;
+// } else {
+// GlobalConfig.TextOnly = TRUE;
+// }
} else if (StriCmp(TokenList[0], L"textmode") == 0) {
HandleInt(TokenList, TokenCount, &(GlobalConfig.RequestedTextMode));
egLoadFont(TokenList[1]);
} else if (StriCmp(TokenList[0], L"scan_all_linux_kernels") == 0) {
- if ((TokenCount >= 2) && (StriCmp(TokenList[1], L"0") == 0)) {
- GlobalConfig.ScanAllLinux = FALSE;
- } else {
- GlobalConfig.ScanAllLinux = TRUE;
- }
+ GlobalConfig.ScanAllLinux = HandleBoolean(TokenList, TokenCount);
+// if ((TokenCount >= 2) && (StriCmp(TokenList[1], L"0") == 0)) {
+// GlobalConfig.ScanAllLinux = FALSE;
+// } else {
+// GlobalConfig.ScanAllLinux = TRUE;
+// }
} else if (StriCmp(TokenList[0], L"max_tags") == 0) {
HandleInt(TokenList, TokenCount, &(GlobalConfig.MaxTags));