// 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
} // static VOID HandleString()
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)) {
- Print(L"Configuration file '%s' missing!\n", FileName);
- return;
+ Print(L"Configuration file '%s' missing!\n", FileName);
+ if (!FileExists(SelfDir, L"icons")) {
+ Print(L"Icons directory doesn't exist; setting textonly = TRUE!\n");
+ GlobalConfig.TextOnly = TRUE;
+ }
+ return;
}
Status = ReadFile(SelfDir, FileName, &File, &i);
GlobalConfig.ShowTools[i - 1] = TAG_FIRMWARE;
} else if ((StriCmp(FlagName, L"memtest86") == 0) || (StriCmp(FlagName, L"memtest") == 0)) {
GlobalConfig.ShowTools[i - 1] = TAG_MEMTEST;
+ } else if (StriCmp(FlagName, L"netboot") == 0) {
+ GlobalConfig.ShowTools[i - 1] = TAG_NETBOOT;
} else {
Print(L" unknown showtools flag: '%s'\n", FlagName);
}
} 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));
} else if (StriCmp(TokenList[0], L"scan_all_linux_kernels") == 0) {
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));
+ } else if (StriCmp(TokenList[0], L"enable_and_lock_vmx") == 0) {
+ GlobalConfig.EnableAndLockVMX = HandleBoolean(TokenList, TokenCount);
+
} else if ((StriCmp(TokenList[0], L"include") == 0) && (TokenCount == 2) &&
(StriCmp(FileName, GlobalConfig.ConfigFilename) == 0)) {
if (StriCmp(TokenList[1], FileName) != 0) {
if ((GlobalConfig.DontScanFiles) && (GlobalConfig.WindowsRecoveryFiles))
MergeStrings(&(GlobalConfig.DontScanFiles), GlobalConfig.WindowsRecoveryFiles, L',');
MyFreePool(File.Buffer);
+
+ if (!FileExists(SelfDir, L"icons") && !FileExists(SelfDir, GlobalConfig.IconsDir)) {
+ Print(L"Icons directory doesn't exist; setting textonly = TRUE!\n");
+ GlobalConfig.TextOnly = TRUE;
+ }
} /* VOID ReadConfig() */
// Finds a volume with the specified Identifier (a filesystem label, a