static BOOLEAN KeepReading(IN OUT CHAR16 *p, IN OUT BOOLEAN *IsQuoted) {
BOOLEAN MoreToRead = FALSE;
CHAR16 *Temp = NULL;
-// while (*p && *p != '"' && ((*p != ' ' && *p != '\t' && *p != '=' && *p != '#' && *p != ',') || IsQuoted)) {
if ((p == NULL) || (IsQuoted == NULL))
return FALSE;
if (StriCmp(FileName, CONFIG_FILE_NAME) == 0) {
MyFreePool(GlobalConfig.AlsoScan);
GlobalConfig.AlsoScan = StrDuplicate(ALSO_SCAN_DIRS);
-// MyFreePool(GlobalConfig.DontScanVolumes);
-// GlobalConfig.DontScanVolumes = StrDuplicate(L" ");
MyFreePool(GlobalConfig.DontScanDirs);
- if (SelfVolume->VolName) {
- SelfPath = StrDuplicate(SelfVolume->VolName);
- } else {
- SelfPath = AllocateZeroPool(256 * sizeof(CHAR16));
- SPrint(SelfPath, 255, L"fs%d", SelfVolume->VolNumber);
- } // if/else
+ if (SelfVolume) {
+ if (SelfVolume->VolName) {
+ SelfPath = SelfVolume->VolName ? StrDuplicate(SelfVolume->VolName) : NULL;
+ } else {
+ SelfPath = AllocateZeroPool(256 * sizeof(CHAR16));
+ if (SelfPath != NULL)
+ SPrint(SelfPath, 255, L"fs%d", SelfVolume->VolNumber);
+ } // if/else
+ }
MergeStrings(&SelfPath, SelfDirPath, L':');
GlobalConfig.DontScanDirs = SelfPath;
MyFreePool(GlobalConfig.DontScanFiles);
GlobalConfig.DontScanFiles = StrDuplicate(DONT_SCAN_FILES);
- }
+ } // if
if (!FileExists(SelfDir, FileName)) {
Print(L"Configuration file '%s' missing!\n", FileName);
GlobalConfig.HideUIFlags |= HIDEUI_FLAG_HINTS;
} else if (StriCmp(FlagName, L"editor") == 0) {
GlobalConfig.HideUIFlags |= HIDEUI_FLAG_EDITOR;
+ } else if (StriCmp(FlagName, L"safemode") == 0) {
+ GlobalConfig.HideUIFlags |= HIDEUI_FLAG_SAFEMODE;
} else if (StriCmp(FlagName, L"all") == 0) {
GlobalConfig.HideUIFlags = HIDEUI_FLAG_ALL;
} else {
}
} // for (graphics_on tokens)
+ } else if ((StriCmp(TokenList[0], L"font") == 0) && (TokenCount == 2)) {
+ 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;
} // if
if (!DefaultsSet)
- SetLoaderDefaults(Entry, L"\\EFI\\BOOT\\nemo.efi", CurrentVolume); // user included no entry; use bogus one
+ SetLoaderDefaults(Entry, L"\\EFI\\BOOT\\nemo.efi", CurrentVolume); // user included no "loader" line; use bogus one
return(Entry);
} // static VOID AddStanzaEntries()
// Read the user-configured menu entries from refind.conf and add or delete
// entries based on the contents of that file....
-VOID ScanUserConfigured(VOID)
+VOID ScanUserConfigured(CHAR16 *FileName)
{
EFI_STATUS Status;
REFIT_FILE File;
UINTN TokenCount, size;
LOADER_ENTRY *Entry;
- if (FileExists(SelfDir, CONFIG_FILE_NAME)) {
- Status = ReadFile(SelfDir, CONFIG_FILE_NAME, &File, &size);
+ if (FileExists(SelfDir, FileName)) {
+ Status = ReadFile(SelfDir, FileName, &File, &size);
if (EFI_ERROR(Status))
return;
MyFreePool(Entry);
} // if/else
MyFreePool(Title);
- } // if
+
+ } else if ((StriCmp(TokenList[0], L"include") == 0) && (TokenCount == 2) && (StriCmp(FileName, CONFIG_FILE_NAME) == 0)) {
+ if (StriCmp(TokenList[1], FileName) != 0) {
+ ScanUserConfigured(TokenList[1]);
+ }
+
+ } // if/else if...
FreeTokenLine(&TokenList, &TokenCount);
} // while()
} // if()