#include "config.h"
#include "screen.h"
#include "../include/refit_call_wrapper.h"
+#include "../mok/mok.h"
// constants
// handle a parameter with a single string argument
static VOID HandleString(IN CHAR16 **TokenList, IN UINTN TokenCount, OUT CHAR16 **Target) {
- if (TokenCount == 2) {
- MyFreePool(*Target);
- *Target = StrDuplicate(TokenList[1]);
+ if ((TokenCount == 2) && Target) {
+ if ((StrLen(TokenList[1]) > 1) && (TokenList[1][0] == L'+') &&
+ ((TokenList[1][1] == L',') || (TokenList[1][1] == L' '))) {
+ if (*Target) {
+ MergeStrings(Target, TokenList[1] + 2, L',');
+ } else {
+ *Target = StrDuplicate(TokenList[1] + 2);
+ } // if/else
+ } else {
+ MyFreePool(*Target);
+ *Target = StrDuplicate(TokenList[1]);
+ } // if/else
} // if
+ PauseForKey();
} // static VOID HandleString()
// Handle a parameter with a series of string arguments, to replace or be added to a
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;
+ }
+ Status = EfivarGetRaw(&RefindGuid, L"PreviousBoot", (CHAR8**) &(GlobalConfig.DefaultSelection), &i);
+ if (Status != EFI_SUCCESS)
+ GlobalConfig.DefaultSelection = NULL;
} // if
if (!FileExists(SelfDir, FileName)) {
GlobalConfig.ScanFor[i] = ' ';
}
- } else if (StriCmp(TokenList[0], L"deep_uefi_legacy_scan") == 0) {
+ } 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)) {
} else if (StriCmp(TokenList[0], L"textonly") == 0) {
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));